From 7ef5eb84d5efb4af509fe6dfc88da3c56e1fc82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AD=90=E7=90=A6?= <1702282943@qq.com> Date: Wed, 25 Feb 2026 22:06:50 +0800 Subject: [PATCH] test --- .claude/settings.json | 5 + .gitignore | 271 ++++++++---- .../controller/AppointmentController.java | 4 +- .../controller/DrugController.java | 8 +- .../controller/MedicalRecordController.java | 6 +- .../controller/MessageController.java | 4 +- .../controller/NoticeController.java | 8 +- .../controller/OrderController.java | 4 +- .../pethospital/controller/PetController.java | 2 +- .../controller/PrescriptionController.java | 4 +- .../PrescriptionItemController.java | 6 +- .../controller/ReportController.java | 6 +- .../controller/StatsController.java | 396 ++++++++++++++++- .../controller/StockInController.java | 4 +- .../controller/StockOutController.java | 4 +- .../controller/UserController.java | 8 +- .../controller/VisitController.java | 4 +- .../com/gpf/pethospital/entity/Report.java | 11 + backend/target/classes/application-dev.yml | 59 --- backend/target/classes/application.yml | 39 -- .../pethospital/PetHospitalApplication.class | Bin 854 -> 0 bytes .../gpf/pethospital/common/ApiResponse.class | Bin 1956 -> 0 bytes .../config/MybatisPlusConfig$1.class | Bin 1488 -> 0 bytes .../config/MybatisPlusConfig.class | Bin 1359 -> 0 bytes .../pethospital/config/SecurityConfig.class | Bin 5693 -> 0 bytes .../gpf/pethospital/config/WebConfig.class | Bin 1447 -> 0 bytes .../controller/AppointmentController.class | Bin 6612 -> 0 bytes .../controller/AuthController.class | Bin 7341 -> 0 bytes .../controller/DrugController.class | Bin 5935 -> 0 bytes .../controller/MedicalRecordController.class | Bin 5311 -> 0 bytes .../controller/MessageController.class | Bin 6165 -> 0 bytes .../controller/NoticeController.class | Bin 6976 -> 0 bytes .../controller/OrderController.class | Bin 12775 -> 0 bytes .../controller/PetController.class | Bin 6754 -> 0 bytes .../controller/PrescriptionController.class | Bin 5782 -> 0 bytes .../PrescriptionItemController.class | Bin 5204 -> 0 bytes .../controller/ReportController.class | Bin 6021 -> 0 bytes .../controller/StatsController.class | Bin 14052 -> 0 bytes .../controller/StockInController.class | Bin 5254 -> 0 bytes .../controller/StockOutController.class | Bin 5317 -> 0 bytes .../controller/UserController.class | Bin 9222 -> 0 bytes .../controller/VaccineRecordController.class | Bin 6257 -> 0 bytes .../controller/VisitController.class | Bin 5705 -> 0 bytes .../gpf/pethospital/dto/LoginRequest.class | Bin 959 -> 0 bytes .../gpf/pethospital/dto/RegisterRequest.class | Bin 1430 -> 0 bytes .../gpf/pethospital/dto/ReplyRequest.class | Bin 722 -> 0 bytes .../gpf/pethospital/entity/Appointment.class | Bin 8925 -> 0 bytes .../com/gpf/pethospital/entity/Drug.class | Bin 10008 -> 0 bytes .../pethospital/entity/MedicalRecord.class | Bin 9022 -> 0 bytes .../com/gpf/pethospital/entity/Message.class | Bin 8674 -> 0 bytes .../com/gpf/pethospital/entity/Notice.class | Bin 6616 -> 0 bytes .../com/gpf/pethospital/entity/Order.class | Bin 8887 -> 0 bytes .../com/gpf/pethospital/entity/Pet.class | Bin 8750 -> 0 bytes .../gpf/pethospital/entity/Prescription.class | Bin 6172 -> 0 bytes .../pethospital/entity/PrescriptionItem.class | Bin 9020 -> 0 bytes .../com/gpf/pethospital/entity/Report.class | Bin 7616 -> 0 bytes .../com/gpf/pethospital/entity/StockIn.class | Bin 6675 -> 0 bytes .../com/gpf/pethospital/entity/StockOut.class | Bin 7238 -> 0 bytes .../com/gpf/pethospital/entity/User.class | Bin 7565 -> 0 bytes .../pethospital/entity/VaccineRecord.class | Bin 7358 -> 0 bytes .../com/gpf/pethospital/entity/Visit.class | Bin 10024 -> 0 bytes .../mapper/AppointmentMapper.class | Bin 410 -> 0 bytes .../gpf/pethospital/mapper/DrugMapper.class | Bin 389 -> 0 bytes .../mapper/MedicalRecordMapper.class | Bin 416 -> 0 bytes .../pethospital/mapper/MessageMapper.class | Bin 398 -> 0 bytes .../gpf/pethospital/mapper/NoticeMapper.class | Bin 395 -> 0 bytes .../gpf/pethospital/mapper/OrderMapper.class | Bin 392 -> 0 bytes .../gpf/pethospital/mapper/PetMapper.class | Bin 386 -> 0 bytes .../mapper/PrescriptionItemMapper.class | Bin 425 -> 0 bytes .../mapper/PrescriptionMapper.class | Bin 413 -> 0 bytes .../gpf/pethospital/mapper/ReportMapper.class | Bin 395 -> 0 bytes .../pethospital/mapper/StockInMapper.class | Bin 398 -> 0 bytes .../pethospital/mapper/StockOutMapper.class | Bin 401 -> 0 bytes .../gpf/pethospital/mapper/UserMapper.class | Bin 389 -> 0 bytes .../mapper/VaccineRecordMapper.class | Bin 416 -> 0 bytes .../gpf/pethospital/mapper/VisitMapper.class | Bin 392 -> 0 bytes .../gpf/pethospital/security/AuthUser.class | Bin 840 -> 0 bytes .../security/JwtAuthenticationFilter.class | Bin 4015 -> 0 bytes .../service/AppointmentService.class | Bin 340 -> 0 bytes .../gpf/pethospital/service/DrugService.class | Bin 319 -> 0 bytes .../service/MedicalRecordService.class | Bin 346 -> 0 bytes .../pethospital/service/MessageService.class | Bin 328 -> 0 bytes .../pethospital/service/NoticeService.class | Bin 325 -> 0 bytes .../pethospital/service/OrderService.class | Bin 322 -> 0 bytes .../gpf/pethospital/service/PetService.class | Bin 316 -> 0 bytes .../service/PrescriptionItemService.class | Bin 355 -> 0 bytes .../service/PrescriptionService.class | Bin 343 -> 0 bytes .../pethospital/service/ReportService.class | Bin 325 -> 0 bytes .../pethospital/service/StockInService.class | Bin 328 -> 0 bytes .../pethospital/service/StockOutService.class | Bin 331 -> 0 bytes .../gpf/pethospital/service/UserService.class | Bin 319 -> 0 bytes .../service/VaccineRecordService.class | Bin 346 -> 0 bytes .../pethospital/service/VisitService.class | Bin 322 -> 0 bytes .../service/impl/AppointmentServiceImpl.class | Bin 757 -> 0 bytes .../service/impl/DrugServiceImpl.class | Bin 708 -> 0 bytes .../impl/MedicalRecordServiceImpl.class | Bin 771 -> 0 bytes .../service/impl/MessageServiceImpl.class | Bin 729 -> 0 bytes .../service/impl/NoticeServiceImpl.class | Bin 722 -> 0 bytes .../service/impl/OrderServiceImpl.class | Bin 715 -> 0 bytes .../service/impl/PetServiceImpl.class | Bin 701 -> 0 bytes .../impl/PrescriptionItemServiceImpl.class | Bin 792 -> 0 bytes .../impl/PrescriptionServiceImpl.class | Bin 764 -> 0 bytes .../service/impl/ReportServiceImpl.class | Bin 722 -> 0 bytes .../service/impl/StockInServiceImpl.class | Bin 729 -> 0 bytes .../service/impl/StockOutServiceImpl.class | Bin 736 -> 0 bytes .../service/impl/UserServiceImpl.class | Bin 708 -> 0 bytes .../impl/VaccineRecordServiceImpl.class | Bin 771 -> 0 bytes .../service/impl/VisitServiceImpl.class | Bin 715 -> 0 bytes .../com/gpf/pethospital/util/JwtUtil.class | Bin 2317 -> 0 bytes .../gpf/pethospital/util/SecurityUtils.class | Bin 1026 -> 0 bytes backend/target/classes/data.sql | 17 - backend/target/classes/schema.sql | 291 ------------ frontend/package-lock.json | 29 +- frontend/package.json | 1 + frontend/src/api/index.ts | 5 + frontend/src/pages/StatsPage.vue | 418 ++++++++++++++++-- frontend/src/styles/global.css | 2 +- 爱维宠物医院管理系统-用例图.drawio | 146 ++++++ 爱维宠物医院管理系统毕业论文-2026版-排版.docx | Bin 40619 -> 65911 bytes 爱维宠物医院管理系统毕业论文-2026版.md | 191 +++++++- 120 files changed, 1385 insertions(+), 568 deletions(-) create mode 100644 .claude/settings.json delete mode 100644 backend/target/classes/application-dev.yml delete mode 100644 backend/target/classes/application.yml delete mode 100644 backend/target/classes/com/gpf/pethospital/PetHospitalApplication.class delete mode 100644 backend/target/classes/com/gpf/pethospital/common/ApiResponse.class delete mode 100644 backend/target/classes/com/gpf/pethospital/config/MybatisPlusConfig$1.class delete mode 100644 backend/target/classes/com/gpf/pethospital/config/MybatisPlusConfig.class delete mode 100644 backend/target/classes/com/gpf/pethospital/config/SecurityConfig.class delete mode 100644 backend/target/classes/com/gpf/pethospital/config/WebConfig.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/AppointmentController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/AuthController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/DrugController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/MedicalRecordController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/MessageController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/NoticeController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/OrderController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/PetController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/PrescriptionController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/PrescriptionItemController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/ReportController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/StatsController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/StockInController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/StockOutController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/UserController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/VaccineRecordController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/controller/VisitController.class delete mode 100644 backend/target/classes/com/gpf/pethospital/dto/LoginRequest.class delete mode 100644 backend/target/classes/com/gpf/pethospital/dto/RegisterRequest.class delete mode 100644 backend/target/classes/com/gpf/pethospital/dto/ReplyRequest.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Appointment.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Drug.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/MedicalRecord.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Message.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Notice.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Order.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Pet.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Prescription.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/PrescriptionItem.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Report.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/StockIn.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/StockOut.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/User.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/VaccineRecord.class delete mode 100644 backend/target/classes/com/gpf/pethospital/entity/Visit.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/AppointmentMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/DrugMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/MedicalRecordMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/MessageMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/NoticeMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/OrderMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/PetMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/PrescriptionItemMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/PrescriptionMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/ReportMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/StockInMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/StockOutMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/UserMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/VaccineRecordMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/mapper/VisitMapper.class delete mode 100644 backend/target/classes/com/gpf/pethospital/security/AuthUser.class delete mode 100644 backend/target/classes/com/gpf/pethospital/security/JwtAuthenticationFilter.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/AppointmentService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/DrugService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/MedicalRecordService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/MessageService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/NoticeService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/OrderService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/PetService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/PrescriptionItemService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/PrescriptionService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/ReportService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/StockInService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/StockOutService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/UserService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/VaccineRecordService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/VisitService.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/AppointmentServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/DrugServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/MedicalRecordServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/MessageServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/NoticeServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/OrderServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/PetServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/PrescriptionItemServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/PrescriptionServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/ReportServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/StockInServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/StockOutServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/UserServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/VaccineRecordServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/service/impl/VisitServiceImpl.class delete mode 100644 backend/target/classes/com/gpf/pethospital/util/JwtUtil.class delete mode 100644 backend/target/classes/com/gpf/pethospital/util/SecurityUtils.class delete mode 100644 backend/target/classes/data.sql delete mode 100644 backend/target/classes/schema.sql create mode 100644 爱维宠物医院管理系统-用例图.drawio diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..d6226af --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,5 @@ +{ + "enabledPlugins": { + "everything-claude-code@everything-claude-code": true + } +} diff --git a/.gitignore b/.gitignore index dd9452e..1cfb970 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,83 @@ -# Dependencies +# ============================================ +# 爱维宠物医院管理系统 - Gitignore +# Java Spring Boot + Vue.js 全栈项目 +# ============================================ + +# ============================================ +# 依赖目录 +# ============================================ node_modules/ +jspm_packages/ +bower_components/ +.mvn/wrapper/maven-wrapper.jar + +# ============================================ +# 构建输出 +# ============================================ +# Frontend +dist/ +frontend/dist/ + +# Backend +target/ +backend/target/ +build/ +build/Release + +# ============================================ +# 日志文件 +# ============================================ +logs/ +*.log npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* +.lerna-debug.log* -# Production builds -dist/ -build/ -target/ +# 项目特定的日志文件 +backend/*.log +frontend/*.log +backend_*.log +frontend_*.log -# IDE files -.vscode/ +# ============================================ +# IDE 和编辑器 +# ============================================ +# IntelliJ IDEA .idea/ +*.iws +*.iml +*.ipr + +# VS Code +.vscode/ +*.code-workspace + +# Eclipse +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +# NetBeans +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +# Vim/Emacs *.swp *.swo *~ -# OS generated files +# ============================================ +# 操作系统文件 +# ============================================ .DS_Store .DS_Store? ._* @@ -26,107 +86,148 @@ target/ ehthumbs.db Thumbs.db desktop.ini +Icon? +Network Trash Folder +Temporary Items +.apdisk -# Environment variables +# ============================================ +# 环境变量和敏感配置 +# ============================================ .env .env.local .env.*.local +.env.development +.env.test +.env.production -# Java/Maven +# 应用配置(可能包含敏感信息) +application-local.yml +application-dev-local.yml +application-prod.yml + +# ============================================ +# Java / Maven / Spring Boot +# ============================================ *.class *.jar *.war *.ear *.tar.gz -target/ -!.mvn/wrapper/maven-wrapper.jar +*.zip + +# Maven +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.properties -# Logs -logs/ -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.lerna-debug.log* +# Gradle +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ +gradle-app.setting +.gradletasknamecache -# Coverage directory used by tools like istanbul +# Spring Boot +spring-boot-devtools.properties + +# ============================================ +# Node.js / 前端 +# ============================================ +# Package locks (根据需要选择保留或忽略) +# package-lock.json +# yarn.lock +# pnpm-lock.yaml + +# TypeScript +*.tsbuildinfo +typings/ + +# Vue.js +.vue-temp/ + +# Vite +.vite/ + +# Sass/SCSS +.sass-cache + +# Coverage coverage/ lib-cov/ +.nyc_output -# Database +# ============================================ +# 数据库 +# ============================================ *.sqlite *.sqlite-journal +*.db +*.db-journal -# Runtime data -pids +# ============================================ +# 运行时数据 +# ============================================ +pids/ *.pid *.seed *.pid.lock -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov +# ============================================ +# 测试和临时文件 +# ============================================ +tmp/ +temp/ +*.tmp +*.temp +.cache/ -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#files-in-tmp-and-tmp-grunt-tasks) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# TypeScript cache -*.tsbuildinfo - -# TypeDoc docs -docs/ - -# Sass -.sass-cache - -# Output of 'bundle gem {NAME}' -*.gem -*.rbc - -# Configuration files -config/ -*.ini -*.toml - -# Maven wrapper -!.mvn/wrapper/maven-wrapper.jar - -# Backend build artifacts -backend/target/ -backend/*.log - -# Frontend build artifacts -frontend/dist/ -frontend/node_modules/ -frontend/*.log - -# FRP binaries (large files) +# ============================================ +# FRP 内网穿透工具 +# ============================================ frp/frpc frp/frps +frp/*.ini +frp/*.toml -# System files -Thumbs.db -.DS_Store -.DS_Store? -._* -ehthumbs.db -Icon? -Network Trash Folder -Temporary Items -.apdisk \ No newline at end of file +# ============================================ +# 文档生成(保留源文件,忽略生成的) +# ============================================ +# PlantUML 生成的图片 +*.png +*.svg + +# 但保留 docs/drawio 和 docs/plantuml 源文件 +!docs/**/*.drawio +!docs/**/*.puml + +# ============================================ +# 其他 +# ============================================ +# 备份文件 +*.bak +*.backup +*.orig + +# 压缩文件 +*.7z +*.rar + +# 证书和密钥 +*.pem +*.key +*.crt +*.p12 +*.pfx + +# 上传文件目录(开发环境) +uploads/ +files/ diff --git a/backend/src/main/java/com/gpf/pethospital/controller/AppointmentController.java b/backend/src/main/java/com/gpf/pethospital/controller/AppointmentController.java index d3d693d..300435b 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/AppointmentController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/AppointmentController.java @@ -47,7 +47,7 @@ public class AppointmentController { return ApiResponse.success(appointmentService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @GetMapping("/admin") public ApiResponse adminList(@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @@ -59,7 +59,7 @@ public class AppointmentController { return ApiResponse.success(appointmentService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PutMapping("/{id}/status") public ApiResponse updateStatus(@PathVariable Long id, @RequestParam String status) { Appointment update = new Appointment(); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/DrugController.java b/backend/src/main/java/com/gpf/pethospital/controller/DrugController.java index de92a86..4400b36 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/DrugController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/DrugController.java @@ -17,7 +17,7 @@ public class DrugController { this.drugService = drugService; } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @GetMapping public ApiResponse list(@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @@ -31,7 +31,7 @@ public class DrugController { return ApiResponse.success(drugService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PostMapping public ApiResponse create(@RequestBody Drug drug) { if (drug.getStatus() == null) { @@ -41,7 +41,7 @@ public class DrugController { return ApiResponse.success("created", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody Drug drug) { drug.setId(id); @@ -49,7 +49,7 @@ public class DrugController { return ApiResponse.success("updated", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @DeleteMapping("/{id}") public ApiResponse delete(@PathVariable Long id) { drugService.removeById(id); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/MedicalRecordController.java b/backend/src/main/java/com/gpf/pethospital/controller/MedicalRecordController.java index 066855f..a372390 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/MedicalRecordController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/MedicalRecordController.java @@ -16,7 +16,7 @@ public class MedicalRecordController { this.medicalRecordService = medicalRecordService; } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PostMapping public ApiResponse create(@RequestBody MedicalRecord record) { if (record.getStatus() == null) { @@ -33,7 +33,7 @@ public class MedicalRecordController { return ApiResponse.success(medicalRecordService.list(wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody MedicalRecord record) { record.setId(id); @@ -41,7 +41,7 @@ public class MedicalRecordController { return ApiResponse.success("updated", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @DeleteMapping("/{id}") public ApiResponse delete(@PathVariable Long id) { medicalRecordService.removeById(id); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/MessageController.java b/backend/src/main/java/com/gpf/pethospital/controller/MessageController.java index 571cf48..9175b2c 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/MessageController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/MessageController.java @@ -35,7 +35,7 @@ public class MessageController { return ApiResponse.success("created", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping("/admin") public ApiResponse list(@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @@ -47,7 +47,7 @@ public class MessageController { return ApiResponse.success(messageService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PutMapping("/admin/{id}/reply") public ApiResponse reply(@PathVariable Long id, @Valid @RequestBody ReplyRequest request) { AuthUser user = SecurityUtils.currentUser(); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/NoticeController.java b/backend/src/main/java/com/gpf/pethospital/controller/NoticeController.java index 8b41824..b06bf45 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/NoticeController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/NoticeController.java @@ -34,14 +34,14 @@ public class NoticeController { return ApiResponse.success(noticeService.getById(id)); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping("/notices") public ApiResponse list(@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size) { return ApiResponse.success(noticeService.page(new Page<>(page, size))); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PostMapping("/notices") public ApiResponse create(@RequestBody Notice notice) { if (notice.getPublisherId() == null) { @@ -60,7 +60,7 @@ public class NoticeController { return ApiResponse.success("created", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PutMapping("/notices/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody Notice notice) { notice.setId(id); @@ -68,7 +68,7 @@ public class NoticeController { return ApiResponse.success("updated", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @DeleteMapping("/notices/{id}") public ApiResponse delete(@PathVariable Long id) { noticeService.removeById(id); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/OrderController.java b/backend/src/main/java/com/gpf/pethospital/controller/OrderController.java index 8653695..03e790a 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/OrderController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/OrderController.java @@ -44,7 +44,7 @@ public class OrderController { /** * 根据处方生成订单 */ - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PostMapping("/from-prescription/{prescriptionId}") public ApiResponse createFromPrescription(@PathVariable Long prescriptionId) { // 1. 查询处方 @@ -164,7 +164,7 @@ public class OrderController { return ApiResponse.success(orderService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody Order order) { order.setId(id); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/PetController.java b/backend/src/main/java/com/gpf/pethospital/controller/PetController.java index 20b68a3..b3b5481 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/PetController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/PetController.java @@ -72,7 +72,7 @@ public class PetController { return ApiResponse.success("deleted", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping("/admin/all") public ApiResponse adminList(@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size) { diff --git a/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionController.java b/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionController.java index 897ccbb..b7314ca 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionController.java @@ -19,7 +19,7 @@ public class PrescriptionController { this.prescriptionService = prescriptionService; } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PostMapping public ApiResponse create(@RequestBody Prescription prescription) { if (prescription.getStatus() == null) { @@ -44,7 +44,7 @@ public class PrescriptionController { return ApiResponse.success(prescriptionService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody Prescription prescription) { prescription.setId(id); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionItemController.java b/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionItemController.java index 8d46443..c5828a3 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionItemController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/PrescriptionItemController.java @@ -23,14 +23,14 @@ public class PrescriptionItemController { return ApiResponse.success(prescriptionItemService.list(wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PostMapping public ApiResponse create(@RequestBody PrescriptionItem item) { prescriptionItemService.save(item); return ApiResponse.success("created", null); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody PrescriptionItem item) { item.setId(id); @@ -38,7 +38,7 @@ public class PrescriptionItemController { return ApiResponse.success("updated", null); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @DeleteMapping("/{id}") public ApiResponse delete(@PathVariable Long id) { prescriptionItemService.removeById(id); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/ReportController.java b/backend/src/main/java/com/gpf/pethospital/controller/ReportController.java index aba0105..2538886 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/ReportController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/ReportController.java @@ -19,7 +19,7 @@ public class ReportController { this.reportService = reportService; } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PostMapping public ApiResponse create(@RequestBody Report report) { AuthUser user = SecurityUtils.currentUser(); @@ -45,7 +45,7 @@ public class ReportController { return ApiResponse.success(reportService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody Report report) { report.setId(id); @@ -53,7 +53,7 @@ public class ReportController { return ApiResponse.success("updated", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @DeleteMapping("/{id}") public ApiResponse delete(@PathVariable Long id) { reportService.removeById(id); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/StatsController.java b/backend/src/main/java/com/gpf/pethospital/controller/StatsController.java index 14a00f5..902159c 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/StatsController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/StatsController.java @@ -6,12 +6,14 @@ import com.gpf.pethospital.common.ApiResponse; import com.gpf.pethospital.entity.Appointment; import com.gpf.pethospital.entity.Order; import com.gpf.pethospital.entity.Pet; +import com.gpf.pethospital.entity.PrescriptionItem; import com.gpf.pethospital.entity.User; import com.gpf.pethospital.entity.Visit; import com.gpf.pethospital.service.AppointmentService; import com.gpf.pethospital.service.DrugService; import com.gpf.pethospital.service.OrderService; import com.gpf.pethospital.service.PetService; +import com.gpf.pethospital.service.PrescriptionItemService; import com.gpf.pethospital.service.UserService; import com.gpf.pethospital.service.VisitService; // import org.springframework.security.access.prepost.PreAuthorize; @@ -26,8 +28,11 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; +import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.Map; import java.util.stream.Collectors; @@ -40,22 +45,25 @@ public class StatsController { private final PetService petService; private final UserService userService; private final DrugService drugService; + private final PrescriptionItemService prescriptionItemService; public StatsController(OrderService orderService, AppointmentService appointmentService, VisitService visitService, PetService petService, UserService userService, - DrugService drugService) { + DrugService drugService, + PrescriptionItemService prescriptionItemService) { this.orderService = orderService; this.appointmentService = appointmentService; this.visitService = visitService; this.petService = petService; this.userService = userService; this.drugService = drugService; + this.prescriptionItemService = prescriptionItemService; } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping public ApiResponse summary() { Map data = new HashMap<>(); @@ -124,7 +132,7 @@ public class StatsController { return ApiResponse.success(data); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping("/trends") public ApiResponse trends(@RequestParam(defaultValue = "week") String period) { Map data = new HashMap<>(); @@ -208,8 +216,253 @@ public class StatsController { return ApiResponse.success(data); } + + @GetMapping("/report/revenue") + public ApiResponse revenueReport(@RequestParam(defaultValue = "month") String period, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + DateRange range = resolveDateRange(period, startDate, endDate); + List paidOrders = orderService.list( + new LambdaQueryWrapper() + .eq(Order::getStatus, "PAID") + .ge(Order::getCreateTime, range.start()) + .lt(Order::getCreateTime, range.end()) + ); + + Map amountByDay = new HashMap<>(); + BigDecimal totalAmount = BigDecimal.ZERO; + for (Order order : paidOrders) { + BigDecimal amount = order.getAmount() == null ? BigDecimal.ZERO : order.getAmount(); + totalAmount = totalAmount.add(amount); + if (order.getCreateTime() != null) { + amountByDay.merge(order.getCreateTime().toLocalDate(), amount, BigDecimal::add); + } + } + + List> trend = amountByDay.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .map(entry -> { + Map point = new HashMap<>(); + point.put("date", entry.getKey().toString()); + point.put("amount", entry.getValue()); + return point; + }) + .collect(Collectors.toList()); + + DateRange previous = range.shiftBack(); + BigDecimal previousTotalAmount = sumPaidOrderAmount(previous.start(), previous.end()); + double growthRate = BigDecimal.ZERO.compareTo(previousTotalAmount) == 0 + ? 0D + : totalAmount.subtract(previousTotalAmount) + .multiply(BigDecimal.valueOf(100)) + .divide(previousTotalAmount, 2, java.math.RoundingMode.HALF_UP) + .doubleValue(); + + Map data = new HashMap<>(); + data.put("period", period); + data.put("startDate", range.start().toLocalDate().toString()); + data.put("endDate", range.end().minusDays(1).toLocalDate().toString()); + data.put("totalAmount", totalAmount); + data.put("orderCount", paidOrders.size()); + data.put("averageAmount", paidOrders.isEmpty() + ? BigDecimal.ZERO + : totalAmount.divide(BigDecimal.valueOf(paidOrders.size()), 2, java.math.RoundingMode.HALF_UP)); + data.put("growthRate", growthRate); + data.put("trend", trend); + return ApiResponse.success(data); + } + + @GetMapping("/report/revenue-sources") + public ApiResponse revenueSources(@RequestParam(defaultValue = "month") String period, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + DateRange range = resolveDateRange(period, startDate, endDate); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("payment_method AS paymentMethod", "COUNT(*) AS orderCount", "COALESCE(SUM(amount), 0) AS totalAmount"); + wrapper.eq("status", "PAID"); + wrapper.ge("create_time", range.start()); + wrapper.lt("create_time", range.end()); + wrapper.groupBy("payment_method"); + wrapper.orderByDesc("totalAmount"); + + List> rows = orderService.listMaps(wrapper); + BigDecimal totalAmount = rows.stream() + .map(row -> toBigDecimal(getMapValue(row, "totalAmount", "totalamount", "TOTALAMOUNT"))) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + List> sources = new ArrayList<>(); + for (Map row : rows) { + BigDecimal amount = toBigDecimal(getMapValue(row, "totalAmount", "totalamount", "TOTALAMOUNT")); + Map item = new HashMap<>(); + item.put("paymentMethod", normalizePaymentMethod(String.valueOf(getMapValue(row, "paymentMethod", "payment_method", "PAYMENTMETHOD")))); + item.put("orderCount", toLong(getMapValue(row, "orderCount", "ordercount", "ORDERCOUNT"))); + item.put("totalAmount", amount); + item.put("ratio", BigDecimal.ZERO.compareTo(totalAmount) == 0 + ? BigDecimal.ZERO + : amount.multiply(BigDecimal.valueOf(100)).divide(totalAmount, 2, java.math.RoundingMode.HALF_UP)); + sources.add(item); + } + + Map data = new HashMap<>(); + data.put("period", period); + data.put("startDate", range.start().toLocalDate().toString()); + data.put("endDate", range.end().minusDays(1).toLocalDate().toString()); + data.put("totalAmount", totalAmount); + data.put("sources", sources); + return ApiResponse.success(data); + } + + @GetMapping("/report/drug-sales") + public ApiResponse drugSales(@RequestParam(defaultValue = "month") String period, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, + @RequestParam(defaultValue = "10") int limit) { + DateRange range = resolveDateRange(period, startDate, endDate); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("drug_id AS drugId", "drug_name AS drugName", "COALESCE(SUM(quantity), 0) AS totalQuantity", "COALESCE(SUM(subtotal), 0) AS totalAmount"); + wrapper.ge("create_time", range.start()); + wrapper.lt("create_time", range.end()); + wrapper.groupBy("drug_id", "drug_name"); + wrapper.orderByDesc("totalQuantity"); + wrapper.orderByDesc("totalAmount"); + wrapper.last("LIMIT " + safeLimit(limit, 100)); + + List> rows = prescriptionItemService.listMaps(wrapper); + List> ranking = new ArrayList<>(); + int rank = 1; + for (Map row : rows) { + Map item = new HashMap<>(); + item.put("rank", rank++); + item.put("drugId", toLong(getMapValue(row, "drugId", "drug_id", "DRUGID"))); + item.put("drugName", normalizeDrugName(getMapValue(row, "drugName", "drug_name", "DRUGNAME"))); + item.put("totalQuantity", toLong(getMapValue(row, "totalQuantity", "totalquantity", "TOTALQUANTITY"))); + item.put("totalAmount", toBigDecimal(getMapValue(row, "totalAmount", "totalamount", "TOTALAMOUNT"))); + ranking.add(item); + } + + Map data = new HashMap<>(); + data.put("period", period); + data.put("startDate", range.start().toLocalDate().toString()); + data.put("endDate", range.end().minusDays(1).toLocalDate().toString()); + data.put("ranking", ranking); + return ApiResponse.success(data); + } + + @GetMapping("/report/doctor-performance") + public ApiResponse doctorPerformance(@RequestParam(defaultValue = "month") String period, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, + @RequestParam(defaultValue = "10") int limit) { + DateRange range = resolveDateRange(period, startDate, endDate); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("doctor_id AS doctorId", "COUNT(*) AS visitCount", "COALESCE(SUM(total_amount), 0) AS totalAmount", "COALESCE(AVG(total_amount), 0) AS averageAmount"); + wrapper.ge("create_time", range.start()); + wrapper.lt("create_time", range.end()); + wrapper.isNotNull("doctor_id"); + wrapper.groupBy("doctor_id"); + wrapper.orderByDesc("totalAmount"); + wrapper.last("LIMIT " + safeLimit(limit, 100)); + + List> rows = visitService.listMaps(wrapper); + Set doctorIds = rows.stream() + .map(row -> toLong(getMapValue(row, "doctorId", "doctor_id", "DOCTORID"))) + .filter(id -> id > 0) + .collect(Collectors.toSet()); + Map doctorNameMap = userService.listByIds(doctorIds).stream() + .collect(Collectors.toMap(User::getId, User::getUsername, (left, right) -> left)); + + List> ranking = new ArrayList<>(); + int rank = 1; + for (Map row : rows) { + Long doctorId = toLong(getMapValue(row, "doctorId", "doctor_id", "DOCTORID")); + Map item = new HashMap<>(); + item.put("rank", rank++); + item.put("doctorId", doctorId); + item.put("doctorName", doctorNameMap.getOrDefault(doctorId, "医生#" + doctorId)); + item.put("visitCount", toLong(getMapValue(row, "visitCount", "visitcount", "VISITCOUNT"))); + item.put("totalAmount", toBigDecimal(getMapValue(row, "totalAmount", "totalamount", "TOTALAMOUNT"))); + item.put("averageAmount", toBigDecimal(getMapValue(row, "averageAmount", "averageamount", "AVERAGEAMOUNT"))); + ranking.add(item); + } + + Map data = new HashMap<>(); + data.put("period", period); + data.put("startDate", range.start().toLocalDate().toString()); + data.put("endDate", range.end().minusDays(1).toLocalDate().toString()); + data.put("ranking", ranking); + return ApiResponse.success(data); + } + + @GetMapping("/report/department-performance") + public ApiResponse departmentPerformance(@RequestParam(defaultValue = "month") String period, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + DateRange range = resolveDateRange(period, startDate, endDate); + + QueryWrapper appointmentWrapper = new QueryWrapper<>(); + appointmentWrapper.select("department", "COUNT(*) AS appointmentCount"); + appointmentWrapper.ge("create_time", range.start()); + appointmentWrapper.lt("create_time", range.end()); + appointmentWrapper.groupBy("department"); + List> appointmentRows = appointmentService.listMaps(appointmentWrapper); + + Map appointmentCountMap = new HashMap<>(); + for (Map row : appointmentRows) { + String department = normalizeDepartment(getMapValue(row, "department", "DEPARTMENT")); + appointmentCountMap.put(department, toLong(getMapValue(row, "appointmentCount", "appointmentcount", "APPOINTMENTCOUNT"))); + } + + List visits = visitService.list( + new LambdaQueryWrapper() + .ge(Visit::getCreateTime, range.start()) + .lt(Visit::getCreateTime, range.end()) + .isNotNull(Visit::getAppointmentId) + ); + + Set appointmentIds = visits.stream() + .map(Visit::getAppointmentId) + .filter(id -> id != null && id > 0) + .collect(Collectors.toSet()); + + Map appointmentMap = appointmentIds.isEmpty() + ? new HashMap<>() + : appointmentService.listByIds(appointmentIds).stream() + .collect(Collectors.toMap(Appointment::getId, appointment -> appointment, (left, right) -> left)); + + Map visitCountMap = new HashMap<>(); + Map revenueMap = new HashMap<>(); + for (Visit visit : visits) { + Appointment appointment = appointmentMap.get(visit.getAppointmentId()); + String department = normalizeDepartment(appointment == null ? null : appointment.getDepartment()); + visitCountMap.merge(department, 1L, Long::sum); + revenueMap.merge(department, visit.getTotalAmount() == null ? BigDecimal.ZERO : visit.getTotalAmount(), BigDecimal::add); + } + + Set departments = new HashSet<>(); + departments.addAll(appointmentCountMap.keySet()); + departments.addAll(visitCountMap.keySet()); + + List> departmentsData = departments.stream() + .map(department -> { + Map row = new HashMap<>(); + row.put("department", department); + row.put("appointmentCount", appointmentCountMap.getOrDefault(department, 0L)); + row.put("visitCount", visitCountMap.getOrDefault(department, 0L)); + row.put("totalAmount", revenueMap.getOrDefault(department, BigDecimal.ZERO)); + return row; + }) + .sorted((left, right) -> toBigDecimal(right.get("totalAmount")).compareTo(toBigDecimal(left.get("totalAmount")))) + .collect(Collectors.toList()); + + Map data = new HashMap<>(); + data.put("period", period); + data.put("startDate", range.start().toLocalDate().toString()); + data.put("endDate", range.end().minusDays(1).toLocalDate().toString()); + data.put("departments", departmentsData); + return ApiResponse.success(data); + } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping("/today-todos") public ApiResponse todayTodos() { LocalDate today = LocalDate.now(); @@ -243,4 +496,139 @@ public class StatsController { return ApiResponse.success(todoList); } + + private DateRange resolveDateRange(String period, String startDate, String endDate) { + if (hasText(startDate) && hasText(endDate)) { + LocalDate start = LocalDate.parse(startDate); + LocalDate end = LocalDate.parse(endDate); + if (end.isBefore(start)) { + LocalDate temp = start; + start = end; + end = temp; + } + return new DateRange(start.atStartOfDay(), end.plusDays(1).atStartOfDay()); + } + + LocalDate today = LocalDate.now(); + LocalDate start; + LocalDate end = today.plusDays(1); + switch (period) { + case "day": + start = today; + break; + case "week": + start = today.minusDays(6); + break; + case "year": + start = today.minusMonths(11).withDayOfMonth(1); + end = today.plusMonths(1).withDayOfMonth(1); + break; + case "month": + default: + start = today.minusDays(29); + break; + } + return new DateRange(start.atStartOfDay(), end.atStartOfDay()); + } + + private BigDecimal sumPaidOrderAmount(LocalDateTime start, LocalDateTime end) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("COALESCE(SUM(amount), 0) AS totalAmount"); + wrapper.eq("status", "PAID"); + wrapper.ge("create_time", start); + wrapper.lt("create_time", end); + List> rows = orderService.listMaps(wrapper); + if (rows.isEmpty()) { + return BigDecimal.ZERO; + } + return toBigDecimal(getMapValue(rows.get(0), "totalAmount", "totalamount", "TOTALAMOUNT")); + } + + private boolean hasText(String value) { + return value != null && !value.isBlank(); + } + + private int safeLimit(int value, int maxLimit) { + if (value <= 0) { + return 10; + } + return Math.min(value, maxLimit); + } + + private BigDecimal toBigDecimal(Object value) { + if (value == null) { + return BigDecimal.ZERO; + } + if (value instanceof BigDecimal) { + return (BigDecimal) value; + } + try { + return new BigDecimal(value.toString()); + } catch (NumberFormatException ex) { + return BigDecimal.ZERO; + } + } + + private long toLong(Object value) { + if (value == null) { + return 0L; + } + if (value instanceof Number) { + return ((Number) value).longValue(); + } + try { + return Long.parseLong(value.toString()); + } catch (NumberFormatException ex) { + return 0L; + } + } + + private Object getMapValue(Map row, String... keys) { + for (String key : keys) { + if (row.containsKey(key)) { + return row.get(key); + } + } + for (String key : keys) { + for (Map.Entry entry : row.entrySet()) { + if (entry.getKey().equalsIgnoreCase(key)) { + return entry.getValue(); + } + } + } + return null; + } + + private String normalizeDepartment(Object value) { + String department = value == null ? "" : value.toString().trim(); + return department.isEmpty() ? "未分配科室" : department; + } + + private String normalizePaymentMethod(String value) { + if (value == null || value.isBlank()) { + return "未知支付方式"; + } + switch (value) { + case "ALIPAY": + return "支付宝"; + case "WECHAT": + return "微信支付"; + case "OFFLINE": + return "线下支付"; + default: + return value; + } + } + + private String normalizeDrugName(Object value) { + String name = value == null ? "" : value.toString().trim(); + return name.isEmpty() ? "未知药品" : name; + } + + private record DateRange(LocalDateTime start, LocalDateTime end) { + private DateRange shiftBack() { + long days = Math.max(1, ChronoUnit.DAYS.between(start.toLocalDate(), end.toLocalDate())); + return new DateRange(start.minusDays(days), start); + } + } } diff --git a/backend/src/main/java/com/gpf/pethospital/controller/StockInController.java b/backend/src/main/java/com/gpf/pethospital/controller/StockInController.java index a3eac4a..788caf6 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/StockInController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/StockInController.java @@ -22,7 +22,7 @@ public class StockInController { this.drugService = drugService; } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping public ApiResponse list(@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @@ -34,7 +34,7 @@ public class StockInController { return ApiResponse.success(stockInService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PostMapping @Transactional public ApiResponse create(@RequestBody StockIn stockIn) { diff --git a/backend/src/main/java/com/gpf/pethospital/controller/StockOutController.java b/backend/src/main/java/com/gpf/pethospital/controller/StockOutController.java index 048210f..ef14b9e 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/StockOutController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/StockOutController.java @@ -22,7 +22,7 @@ public class StockOutController { this.drugService = drugService; } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping public ApiResponse list(@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @@ -34,7 +34,7 @@ public class StockOutController { return ApiResponse.success(stockOutService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PostMapping @Transactional public ApiResponse create(@RequestBody StockOut stockOut) { diff --git a/backend/src/main/java/com/gpf/pethospital/controller/UserController.java b/backend/src/main/java/com/gpf/pethospital/controller/UserController.java index 62ca9cb..2591606 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/UserController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/UserController.java @@ -67,7 +67,7 @@ public class UserController { return ApiResponse.success(result); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PostMapping public ApiResponse create(@RequestBody User user) { if (user.getPassword() == null || user.getPassword().isBlank()) { @@ -81,7 +81,7 @@ public class UserController { return ApiResponse.success("created", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PutMapping("/{id}/status") public ApiResponse updateStatus(@PathVariable Long id, @RequestParam Integer status) { User update = new User(); @@ -91,7 +91,7 @@ public class UserController { return ApiResponse.success("updated", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @PutMapping("/{id}/reset-password") public ApiResponse resetPassword(@PathVariable Long id, @RequestParam String newPassword) { User update = new User(); @@ -101,7 +101,7 @@ public class UserController { return ApiResponse.success("updated", null); } - @// @PreAuthorize("hasRole('ADMIN')") + // @PreAuthorize("hasRole('ADMIN')") @GetMapping("/stats") public ApiResponse stats() { Map data = new HashMap<>(); diff --git a/backend/src/main/java/com/gpf/pethospital/controller/VisitController.java b/backend/src/main/java/com/gpf/pethospital/controller/VisitController.java index de0f890..3227ebb 100644 --- a/backend/src/main/java/com/gpf/pethospital/controller/VisitController.java +++ b/backend/src/main/java/com/gpf/pethospital/controller/VisitController.java @@ -19,7 +19,7 @@ public class VisitController { this.visitService = visitService; } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PostMapping public ApiResponse create(@RequestBody Visit visit) { if (visit.getStatus() == null) { @@ -47,7 +47,7 @@ public class VisitController { return ApiResponse.success(visitService.page(new Page<>(page, size), wrapper)); } - @// @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") + // @PreAuthorize("hasAnyRole('ADMIN','DOCTOR')") @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody Visit visit) { visit.setId(id); diff --git a/backend/src/main/java/com/gpf/pethospital/entity/Report.java b/backend/src/main/java/com/gpf/pethospital/entity/Report.java index 86bcb7f..b15b024 100644 --- a/backend/src/main/java/com/gpf/pethospital/entity/Report.java +++ b/backend/src/main/java/com/gpf/pethospital/entity/Report.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.experimental.Accessors; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -52,6 +53,16 @@ public class Report { */ private Long doctorId; + private String reportType; + + private String reportData; + + private LocalDate periodStart; + + private LocalDate periodEnd; + + private Long generatedBy; + /** * 创建时间 */ diff --git a/backend/target/classes/application-dev.yml b/backend/target/classes/application-dev.yml deleted file mode 100644 index 593dd40..0000000 --- a/backend/target/classes/application-dev.yml +++ /dev/null @@ -1,59 +0,0 @@ -server: - port: 8081 - address: 0.0.0.0 - servlet: - context-path: /api - -spring: - application: - name: pet-hospital - - datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/pet_hospital_dev?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8 - username: root - password: qq5211314 - hikari: - maximum-pool-size: 20 - minimum-idle: 10 - connection-timeout: 30000 - idle-timeout: 600000 - max-lifetime: 1800000 - - jackson: - time-zone: GMT+8 - date-format: yyyy-MM-dd HH:mm:ss - - jpa: - hibernate: - ddl-auto: update - show-sql: true - - sql: - init: - mode: never - schema-locations: classpath*:schema.sql - data-locations: classpath*:data.sql - -mybatis-plus: - configuration: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - global-config: - db-config: - id-type: auto - logic-delete-field: deleted - logic-delete-value: 1 - logic-not-delete-value: 0 - mapper-locations: classpath*:mapper/**/*.xml - ddl-auto: create-drop - -# JWT配置 -jwt: - secret: petHospitalSecretKey2024GuanPengFeiGraduateDesign - expiration: 86400000 # 24小时 - -# 文件上传配置 -file: - upload-path: /tmp/pet-hospital/uploads/ - max-size: 10MB \ No newline at end of file diff --git a/backend/target/classes/application.yml b/backend/target/classes/application.yml deleted file mode 100644 index 76a99cf..0000000 --- a/backend/target/classes/application.yml +++ /dev/null @@ -1,39 +0,0 @@ -server: - port: 8080 - servlet: - context-path: /api - -spring: - profiles: - active: dev - application: - name: pet-hospital - jackson: - time-zone: GMT+8 - date-format: yyyy-MM-dd HH:mm:ss - -mybatis-plus: - configuration: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - global-config: - db-config: - id-type: auto - logic-delete-field: deleted - logic-delete-value: 1 - logic-not-delete-value: 0 - mapper-locations: classpath*:mapper/**/*.xml - -# 数据库配置 -database: - type: mysql - -# JWT配置 -jwt: - secret: pet-hospital-secret-key-2024-guanpengfei-graduate-design - expiration: 86400000 # 24小时 - -# 文件上传配置 -file: - upload-path: /tmp/pet-hospital/uploads/ - max-size: 10MB diff --git a/backend/target/classes/com/gpf/pethospital/PetHospitalApplication.class b/backend/target/classes/com/gpf/pethospital/PetHospitalApplication.class deleted file mode 100644 index 9e827cb6d9f90f7516e804ae75270ae8756aae54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 854 zcma)5O>fgc5Ph2_aT)>*DHPfQgH?wcnzyJLF1>hx~cG18_gk}#dv>E!B;!5yL=#;;YFJ)CDER+)&Kb7w7>ibnuWGWF(8Qnz}w<7d7{N!YZ9Et;prIv7dQtjN|j*tW{D!TWN-PIJ=o?nu)TUoYg#Y=fNh2vvtUc(N2DG zd}{PkrIi(NCTlIo?ZXp>=G2@^hOL>>@?Dk3(th;041<|TM79uCd3)t-x(ih@9L@fp z2j3$Xiq5k$TsQuL;=-ncy1gb$dpYq`pPvfPnv<3iyK__7M7~je&i(cDk3Dq^yB{j; zR4x~)RGtE@jSK4`nB%p~g`J4X8KN*yCs!MKP0OlLNaq>_fc$Grh~;XzT>NXnPef5j zJ5PkBLtBB$| zcY_QG7+{;MP29tM0`bMq0~pX5M57;}1q TebNK6ACZ1c?Vp^1l{okd2`c7u diff --git a/backend/target/classes/com/gpf/pethospital/common/ApiResponse.class b/backend/target/classes/com/gpf/pethospital/common/ApiResponse.class deleted file mode 100644 index 219a61c3130ca5e9070930b656374e7d3f4ebf88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1956 zcmbVMYflqF6g|@iOG|-LY7wd;qPSfi^=%>rLo^1Gf)5&^ep|{~7Ta#K-J19h{4sve zL}H?eKfoVlJhQunZ7IoWHrbiEbMHB4?wvco|NQs`U=0tGh#;yUmO>mu0_h|DgI=ub z&06vK{*h621cpjx({$DaqH19;fng*RBvTkcN?@UCHHx*?yJE|54y|^}bo6?WwuaR# zZnVr-M!RJ-+lD}_Y8`M8TM}R_g>j?>l!no6>owXlXVG>zJALx$W z>*c9i9Y#(dV!cn&`=UIUk(W>h8J>53t+Be3WL$giBa=1JYKUeO7`Pk}0Er-M?QRX^<(%UlS2QPG6 zZy1hYQ^xe5gVSA}RB3mrRi;~@qz=eMNOJOSmMV|V0<5c&CnQSu2s=R~e%a4Lhef5f zx94aJfciB5p*C*Vwq*;f4a)LAhyBzLWjT{WJWvT@RZhhRmvIp)}`5k5arWaKl# zSw=nx?#OfZ7&#`%a)nmSi^nXkaz!MUU$`@=K&r~hH-}hroacPYEUt0o?d7>Q&-rMS!Ju$3 z0KVkwq`ZLzU+^ZSNbuB848MtHE>QQ>7p^^_L+;+VD=g*txzuo}Pc3;yNW!=X5Z!c% zRG;W2iKO-smq=S2z%%Lccn2Es)6D>vQ3M#JB~LYyF%juIUV*F{7Jb&oLDrc?;j>2E zGI*z(>S6VYEm>uoroSaHRw|!p$YLgiTn4kq3(SY=zS&WF-7%!~R{H9gCo0>{ zCxJq#T)#x6mc~s1&2Uw0qp<>W8O-B0!|;69H2gi=Q?9>bT9&}qQr&S|y6j4$t#mUi zf$pj^i$R)>t?w&eMj_WC$S{c``mtNXl5Igx_QU=RInS2N@gG^GmEATqt=sH*e8>P_*E}sY_x1Aw$I_Py8$~~41i;{fE+KF_{;2aB+K`RMVN5Uy?)JPjiXgkeA>B^4sSuB>t9O7{8 z>Kq1PYjhHGDp0;M{Q?V@HeH{msHwCgr{@}q2Nq-Qzrk7$dY5&3XB(E|v5}(uQsBU? zjWT8#Ji~K=*+D{a?+9#iM6TNnEP47sdH$~BaZodRwyoT-zmYc)DOK0JmP*_VEjvt z%8yZ^THsdkIshvC#Poh;HGd^i+5IsmL8^JM#3lvTVfWa#R#yQP22gzmoK-m~*$bAw|Xp+D> WbgoHM@f0sYNfj@-Y78K7%HKa9!+!|? diff --git a/backend/target/classes/com/gpf/pethospital/config/MybatisPlusConfig.class b/backend/target/classes/com/gpf/pethospital/config/MybatisPlusConfig.class deleted file mode 100644 index 7246fa013182431c34697ea008ba522a33c3ae62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1359 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 atV5h}27kn#De5`4e<2Tl#ozG;4*n0L+#VkQ diff --git a/backend/target/classes/com/gpf/pethospital/config/WebConfig.class b/backend/target/classes/com/gpf/pethospital/config/WebConfig.class deleted file mode 100644 index df949d983042d8197ff8c10e206581a36171e918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1447 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 diff --git a/backend/target/classes/com/gpf/pethospital/controller/MedicalRecordController.class b/backend/target/classes/com/gpf/pethospital/controller/MedicalRecordController.class deleted file mode 100644 index 55506c5ba0cbdafde79ee9a1b394e26875e1c7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5311 zcmcgw`+F2u8Gg@_WH;L(3EM!SjcrJ2bESi|1%5@@&GgfxkX6h$Yyhh)g?&N4F_ z8fqH1!LTM}!FGxxwRwTgQuNJ~ zbe7D56nHQnC(sREH%bflWYcIvdlDTQwjd+W7bifLJ=0rm+%M2NFTE+x@TxBH^!4ZK zN1yT>vpkLo!yVYpeQtf<;l7)<^~W9}4ny`f+=;uA=+f{W+%2#t z4*Ytj7ie;gB^qvP6i48>Z2wa!bPFU4jx;=3Orr<)Cb3JyeYjuX{y1HnE7@gzxMEI9 zw_=xFicY%KLP5GT(s)!!XrsvSSJlQI|7OYAB>Dt~6^uEj9RO4C4s8pnrMlUvH$mT%}L)cA^aoSoI$kM0lOZRNs zS~NY~tyU_wx^*I zu*~zuoF#oSKg#_@X-S{VIXs@k6B_a=>UY-7ZkCtqMOoV{iveQ zD9JR&aXg6$4NqdSA@>F37Dz1^?!t&&WEe2})VEW>qE_^80XcS&BA(r1*W zISmD+sXJa%-4H1Zsr9Ed%&YbHt+#&4oG&wHIx+>5StOQub#H`0prkKqu#|L-(v=^= zgLbHQwuXv&w=H}ZK#Qny1TqaN+9zcajHaHtwj7JjykQMH^VJfmdGzUmtf+8KVM*Zb zTzQFfDt23b3h6FNX4ZgUYE2q0o>ot*Py+Se3Ns6B6% z<#@F;C!J|UYMv=?vpmii#KGrqvdLR8nQiy4kw@RDxMs=Zz#$;f|68G zOtTM{%Qo8pRb&JXX-6PR{9b%n`a#!=q17 z39VC6-3Xc9h`Z+Ah68L|_#`uybiE^XahbvoL?d~flppK;^rbLop9>1L zz{tky-dfe3NVhcx&2nWmaP0qH{K1X0S25|(yEapMD_i}1RX0$F9^N8%2gQf!yW@y$d#=ZX z6O=%=y#>EZA}qHE7&?a@EVeXSFt03 z*~~rS4eY$kwVQmU8LCrilKc&z4LkV%&WPgfn&NIek55zAXZ)R_Z56@ue13tS1U`$; z@w=U)&vV_2F1~;-a^g$;Bn4-_%z@y2@hc(L^F*Ky+;bhhC$6CX8U}dRUBLryqjyXp z9=eJL6Lu3WL-Gj~OMkkG}Ow=7nsUhvbMSPW-I(eS2;p@cn4X)B^GvDOQ1`kFM;G zAl+U=x*gy1ky4&--2hi>g45u{Dz@+Y*zSlL_6J1u;zKlH(FPH^HSA8cUemuqHz zock2xG9d|$D6q#G!K#}Tpp#B}BF@j$fM!CV7r2UMQ}Ci@i$MDketZKo-}i*Z`_NDD zQ@&I@{YU8givufoET1?;YmU9b`7VCMiI*0YW3~)trdII5ON`({UFs$Oo#IFMBcPLe zKa_eINBMm+b7}=2yM#wLHZnzjyqja0S@6d@IX;sq`Qxn|mosPmajQ?d%h%za$W*W3 z+*_0##D$`Q3OB_t#T}3=Kf}-Yts`A^>Sn(zzGCh$w&RT++c#phph kU*M%z@EbmN@cFl7(rb8~w7!Px_!DQ-oc%N2!e6lCKU{_k?f?J) diff --git a/backend/target/classes/com/gpf/pethospital/controller/MessageController.class b/backend/target/classes/com/gpf/pethospital/controller/MessageController.class deleted file mode 100644 index fcadbbd10b703500b9281c8f23856d6116e73835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6165 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 Qf8lI`vwy|k@eefr2O(N64FCWD diff --git a/backend/target/classes/com/gpf/pethospital/controller/NoticeController.class b/backend/target/classes/com/gpf/pethospital/controller/NoticeController.class deleted file mode 100644 index 88b1dcac9fe00ea6a3cd252a363c57f62fbf96ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6976 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 diff --git a/backend/target/classes/com/gpf/pethospital/controller/OrderController.class b/backend/target/classes/com/gpf/pethospital/controller/OrderController.class deleted file mode 100644 index 44f087822e3a9cacfd15c18f9502252bf565b9c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12775 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 diff --git a/backend/target/classes/com/gpf/pethospital/controller/PetController.class b/backend/target/classes/com/gpf/pethospital/controller/PetController.class deleted file mode 100644 index 251f9636aab1a0944f040adb7ae1066753667f50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6754 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 diff --git a/backend/target/classes/com/gpf/pethospital/controller/PrescriptionController.class b/backend/target/classes/com/gpf/pethospital/controller/PrescriptionController.class deleted file mode 100644 index 099af9cba8bdefed580a28b81343cd639694b2f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5782 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 diff --git a/backend/target/classes/com/gpf/pethospital/controller/ReportController.class b/backend/target/classes/com/gpf/pethospital/controller/ReportController.class deleted file mode 100644 index 73c2cf100cfa3949328eeed33bd68a1675af14fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6021 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 VF#BaV`wjQRdFHqHJ^qM>e*?VD;m800 diff --git a/backend/target/classes/com/gpf/pethospital/controller/StatsController.class b/backend/target/classes/com/gpf/pethospital/controller/StatsController.class deleted file mode 100644 index 6909df5215cdd5f48fefb2343d8c1c555fd0c61c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14052 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 K@hbj?w*LVgY8RRS diff --git a/backend/target/classes/com/gpf/pethospital/controller/StockOutController.class b/backend/target/classes/com/gpf/pethospital/controller/StockOutController.class deleted file mode 100644 index 31ce38dd78d49bd7367605754e03c9fc07dc3a85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5317 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 P?nb%$2mA?tLDRng(#uL4 diff --git a/backend/target/classes/com/gpf/pethospital/controller/VisitController.class b/backend/target/classes/com/gpf/pethospital/controller/VisitController.class deleted file mode 100644 index 58799dbb7c8a6a30315225d0c9e85d12d47f3c93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5705 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 Y8~nC7`(1JNN1ln1=1=$w{)XoN0Jzqau>b%7 diff --git a/backend/target/classes/com/gpf/pethospital/dto/LoginRequest.class b/backend/target/classes/com/gpf/pethospital/dto/LoginRequest.class deleted file mode 100644 index 6e46c2e7733810f2ee7e73ca6c68cfe4c3c9842f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 959 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 E0XQGv%>V!Z diff --git a/backend/target/classes/com/gpf/pethospital/entity/Drug.class b/backend/target/classes/com/gpf/pethospital/entity/Drug.class deleted file mode 100644 index cff9e537fc1e85df654ff46a3e97fa4c83356e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10008 zcmd5?d3YPe6@Me^_S%+jZ=Bcx6iDI(5pLE=n~=od)J{z7Bqfl-#@g75Wyz6NDd}B$ zACyukS6h0MQqpo1!cof67HH{x(n6uo();dz{R*YOH#?G6@)9Y0{iEOK^}d<+d%u~T zdHd$QwIBP>z4sH*8v19HeAEykzeWKH3X1JD_nV2dnVCv#*}d1Av;_rMr!pz~6@nU; zF54cVFhxQX)u@p)LH(22*~HY`p2VDGPiOOUDcejZtc;zq4d2cSg2TvsPjxJ87o5 zdjc&v_(>YA;ztSQZPPB~d4N+iI#sev<}3x}?$b3oLv|PDlCJKvG%}bVl(f>8Z6%|C zuGZif*zfS9nc29nV5S9iE_JP?;~0a>b~1RaM(gNoEc%pX4`Zv_mM(Ka z>==wyx=>GXkZLDlyWJX1vYo~Q75#`6mPUJckQOLLU9QBsX^m2>lWS7pO{|^KC{43) zWms->IaF_P9v&{mc3F+)igxQuF2tIgM){&Bh1y;V^6tT|(?&t?!3 zcBE{Ko55RvIrvxuX#Z$M>w?aHnX#-WVVo)J+K>^{9L+_PnacKV#0*oaB>h)+&(ae zZC_EB*>G|KXtr9nZDNa{lj^dPgAJvuv>b0wDviLDsLN6s4Z#3I28TC~Z`?Y87sC-Q z+BUXf-NeSDn#4$UDmBT|cYM8NB$ct8I4dyJg&5e`id z_o|&4&g}Qto3@d3c6N7mCUK6Hv2uv!ydZ(R6M#>d=ljd*7%(=<2Y7PK%poG$Ru1zF zfzXMMr@1MW_tZrShKjK1kaDm@tYD=R_D^^7mp!&dZh>cR1xMv+fGC5$s?d9u;;)Xp z^*n>d(=0}0#9=huaahfvBKmT&QWdX=+7YRCGQ+5&Q)!|@>OPE-=_&5YUWbFTLoADfa2jorqbkKy996x| z&TuXVP(zh_S|!At=V8$uRApzo1XkvK<;AOVp%w{tXM!<@)7|BO%84Gl-vPP198fv! zD}mfyP4KVDnNf32#j3#A*5OeEMS=V&hy=Ni#v(RI_Xx(7Gql93cRU1@v%TSXX)6P9 zXXl#Z6)8NNFz#$ebG&NNqw!KM4bO;It|CUQTB^pldrcbS?uT!TyPq;_XPxi`hZxTy zKeKQs;M9t6t#TsQDD|Ewa+x?fa^#gs3{HcjtaxH)XR~(R&Y5#gOwG3h={HgOE&VP; zzvtBD4}#+5dMK6IpPjK1&b*v#W(f5{Hg`bKweG;EfDY-oW+s`o^6`;ucBU{lc*KOG z!cZQ(^Whh`x{CR|t4mR=H`D3ylx+=$=}&?l=2csoO0E$r7V{SKy<&^GgSS{JIMlOH z=`-9@vHKERe7U&c-hF9bvHRRp-hF8-J&>icA8@Pe2i#KLxkfBQWE#%k7+s$>^LZ;D zqQ44SGH-jlRy{<27u0uTDBd1ti|80+&^~0ZE%=SvnFL*mRuk@T!}WHH-a+q#3MDbR zeO&a)J4#%6M`bJTs9fb8WvaZR_LO&2oAQq0Qr=NX$~($Kc}Gp?8uDF`-)+%*=)D*U zb)lE)eNdq`RH`8E?+4RyxZ_I!beEx(Kuh2rSbi6Y+vGqWz;6cgvt5qg{GY_L@W}=sbv;s)>4P5~1AlAZo29T2zw=rJ)B=M>Wy0 zHHlCodk}S36P-|#2=%iEQExTTikd{Ia6O3ns)<(BBtpsSL3C_2(djjbP$GK}EvY6N ztVxveBwAWcw6-P@N^g%D4OA0ttVx9L8XiQ6YNAawiBQyg5S?62G**)c-vB&_POB!` zUXutPXFQ0`tR}j!Cec;&VQP@^Xb^-PWJAjb?!>QZDkma!IS>_*09Nt%Y8VCt8nLP{ zbq!tX#otsnKL>R|ik};mVemR{{?@wr`LHPQbEA^~dT;)Yy7~DKD)DoplK&(0QLpvs zuA83^w-UcTkN;!d{JnMa^PySdUo?;Z2KuiSvS9vCMteo z9zVYPJNxUOM(9Pp>Kh(dej^3^hXx*^@bwgEI5hAeg-2H`KTLzN3E`ESSKyc7U->9C z>i$Ql^&n|0b^l>nUqlQU0YHX~pdMgM@DXY|NKJY`54u2`j1WMZjIbVJP*{ONde{XT zH6j3w8c{vMpr`^x^r#CoW;6mcW@vgNgER$#&3Y4qniZ%?Z+3xp7%c$p zFk*TOgJKHQqQ_jIoklA_JB>EIl|gL^)T+0+K)Z}~fOZ)jdOL$U6sTSAaDhyt6Cl&* z(mNT{r9ho}mkX3Mx&cZWJ$g5TdK9Qz?{R^q3>}~;V}Y(SXn_Lh`T`eduh9$8USpx& z%b|Qq8I5tNbO>b{zYGb)FHC; z1l$C#-$Eya!p~E4h{7*WSBQN0 z35yq~#}Om{Z(=dox~VD{`T0+q>aaNr9>K|CfTIvQlDp<~r;5emmCM+hu_UFV;N~iJ z!G8t=4NBwS6S%jb$h|H$xZ1x)2DF8-!D)oEaBScpg;pLW`(o}NGW@L2{Yn$&Am^wy z83Cz6e3M3DJy2AQ8bPTFmQ;v(j@6hEk}3o|Wfdx_#*MI4g-a@gLC0!`5s@lHKxGvv zs&*Ptsfw0Vh>MQZE~8PZ5E7MDV^L)qnp9~el~zF1D|5!6Nz0626^(aH2A zq?ovry6G2?TKOgQPf_2C=Tnv)uM^M<)e}fFj0U*`;7X7p#n|?p5GW zCAf_DP$-k|Jd?7Ow@w-2A5feJ1m684pV!a-pW>}n=FykXmq$MmLXkASG)bAK21rq9 zN2DsV)y65prdot$&bpwAmV>|aE0`bQN9{trXhq&qA9;D^M`56bh}Atrd6c8GQ3JIe z%|PX`j@nEO*LIY{l}CIzmKe0Ee0!?&(d_m3e9d2b&*S3`*Ep^nxOUX>=Ra6~52bW_e`E@;bKJmDEdu0xfMBXLn+7uoDwIrh$|&mL~QjT8uPKNmp9B z(o&$%LeqUCUDC1?QlONj3sAbZ(2a9?=sEq>KmFZ9Y5Ki4PovRj8Y#cpb3B^+?)~of zX5PE+zWc^6{QL1IiD(nO9Hka&4O2j&AcYtu4(mttbWSfUrS~izHZm5Y&_=UhTALZQ z4v#FfQH0vU6ji956h_0DVm`gJawxrGSj)xoifQS&v{A53>sWfm$eI~Fx7WxNOIb!O zCVmprRsQK>VQHN6btn|)WZ|P`*|eszT-T{klDZgmWR^|i&_pr6lGDuso+jyHn6pZz z0E2MH$*UIv-GJm3-H|cq^pj&3K!0m$y4RL$YsOt9` z<<*=e+|O0$JZ^5wn)*_qST=?B0);N*+L%=`bSsY@XEA7;E~U^KZVBnxqh`k7s@Ewr zEL3Gnw^oJ!s6u13j!`tj{f&7uZ!l8rceBt)PZ#l|JETbr)5Qv=&tdSQNa7SN}=hB(`-#3aO-Y`_Hb)2C}-$`2bZ4L;Ww4V8Vgv*Rxq3EnsS@U&I8T8w(XnW!)QZO zUZS%})5wYb4w*TmjdW99Nag%W7|B^!C5@SbaBbd@W;19 zI6iF_jNPmGMWZC1k?##WX)fp`lMj$o2CQWhBReV{xtXmBJq*eznkw)u$va8O>0B|t zSUi%x!YCLeq+&iY!LpqvH`c}W$l3IqnBf~~c2+Oxd1Uhvo;(U>nMaWh(eS3j&F(H` zn4MLpoU}GwB1v*xeUe0KgrPn)A|XQWBt&ErG;7izk{?ud^0Q?-iXN!B#s_V7cdImGjkTc!Yh}=FA3Po$#C?R|D$V>6ECn7XLRD_a; zmDpBew#8}NW@jsxW~bdHyuCG1w@u-+))%}9mr$j=+vgv(oeZsB2a$?kP zd-<6cXvGJhpa*UN`TzI-Gu!QaH zR@tCx&4tjmL2gwHv79+Fqp!%M6P(>UHG}NNu;+(Rh@hCno@>WK%9-p)%9+@B$~$}U zly{1{Q@&HsmGT?oXv#I39VyS4g;SLQ3a2Wg(VlX@c6-YGei5r^Cl;)tx#DUmV<4|% z<4M*O`4{uzzS-SDjMQ#qIi5U4oq=jUZ=V?smgJ!!vAtNd%2r8VvGZa%9-?1H=~wjY zF#U$t8NX$esvarK!qMUpBW*vbU3yIF8LL=2#^_%6f|o#>^h&*u%^Bs?bg_73b!GgF zl}3%D*iP%=*SS=cn%bq36cc(bH)mSLc!XYL^nA@g4x8CcY~A@XP`Fqd9b8iz9YRx| zuDQBCI=I$}4&JDV4z94HgG+XFaH$#{yj6`3-jZ>=iH%^9O%<>$PUQ4**(itU4~*8- z&5+-~hv`p@&OI{}tI3`vx&Re#3#!c+esL5fMwVzXT7`VnptsRYFyUYcbqhaCiaQR8 z;*JxcxZ~s}?l|I!I}UZ?jw7770hIIOw4I0pIc2EBvc32Ge5{7mnH2?sN23gP~4 zFr9}x4%)E22dy+(4ENyZ_lP|xI=UIZ987rd_ljQup!d-&XuV%rKY%;q2edk(hbjC3 zj4gDtgc9Dp5fRR7K14AuQC~wM9NBz`5?-RAhD12V`4Dw`i7seJgcF|+QJu?Kr>nlpc$=0jd4(i1jW=27idYPSotU+V#Azt*eva8R!V^{Blr&;hLvpaWXJ z+Q&it64a;myFdpu6`+IKfU0uPfCQ=PfD4q-1_8=wL+T(04N1_TI#dA#PGYBOb(N!H zUt=jdG%EWVJ5Be}r?KvO*x%_mYTXt}v6tyH(6!Pidx<^^DL_}SN9l8rf;7V(qR&GL zQI6e3Uw{;*61$DQ2q{8$vI2bxQXAdFmg&ooqI8N)(N`d~(-Ulhz6wd9m+>55gA}8` zvUBM^NF6A*PtyrVaTcO~($^s+*c$pXeFIV_8>1KLn~;)h7d=AXg4D%k>3%v1shbt) z4*E8v9=1xi(sv;Bvb*t_{eDP&>^MHqKLDwpJw}uCAS9JNMO*11NCWIIIMaL=(jfaA z4bsDqhR_4yJ{pevi#oy-d5wC*)PlbVdyV>SvF(2+R*HmsJxL(I|IZ|o%;lIgS>0KAE^noM0ssFuBL^(oPCK?qO&ApBbRR0V;SB_XJW*CNaJ-ut_A6p~Uzy(nusR zc7np|Ptl;BupX4gluDb?b5=+ghV5~ z!WGku77?b1V?z3|y=JvGVM6ASUTqcAoE8RhT`{x<1| z|IOPk2)z4Gyl;U2>)zii-J}1-UhVx%2uafZ-$|-G4M37gIU`k-tuam##u^b;Ih%q? zTArLmT*3Vee{vR@MN9H{bL7=0KMM!hMWX30s=b_@4?6N3RG)P|797U@%fE7MiUP3Dh>G$+U6awmh09N@7D*ylh diff --git a/backend/target/classes/com/gpf/pethospital/entity/Message.class b/backend/target/classes/com/gpf/pethospital/entity/Message.class deleted file mode 100644 index 26377800fe32b23d97518d80aecc20208fcc532f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8674 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 diff --git a/backend/target/classes/com/gpf/pethospital/entity/Notice.class b/backend/target/classes/com/gpf/pethospital/entity/Notice.class deleted file mode 100644 index 153c7c0a549a1374460ffae2b2d411932607cc5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6616 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 diff --git a/backend/target/classes/com/gpf/pethospital/entity/Order.class b/backend/target/classes/com/gpf/pethospital/entity/Order.class deleted file mode 100644 index 2949ea12f236fb14242d1eef641cb283bf5589c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8887 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 b`Z@gqh8P;Z#OJs4d$i(^{y;C&pUC_VKmF2B diff --git a/backend/target/classes/com/gpf/pethospital/entity/Pet.class b/backend/target/classes/com/gpf/pethospital/entity/Pet.class deleted file mode 100644 index efd68d3e0df0533f452ad96be648d7b4aaa28009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8750 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⪚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 PpYRre^aA~vULyU!*SZCP diff --git a/backend/target/classes/com/gpf/pethospital/entity/Report.class b/backend/target/classes/com/gpf/pethospital/entity/Report.class deleted file mode 100644 index 4bfea4a815c138dbab6d7ceaf30bd66c907b8a02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7616 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 diff --git a/backend/target/classes/com/gpf/pethospital/entity/User.class b/backend/target/classes/com/gpf/pethospital/entity/User.class deleted file mode 100644 index e297ac29f66c33701865c7f21d33e20bbe0c7330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7565 zcmcgx`+po&6+buG-I?8;&8vBIXn9nYnkEg4AV?<-wj^yxP1@L`Ef1AWveRVgW+&{< z7VBH_35cQyh>G~4KB|J!@(>YJ;Pdfkf5Kn%FYsqSg7`gm?(EKPhVJ_Dqn}S^=iGa~ z=R5b_bI-YFCV%?Z^Dh$71ihA`4(ik>W>B0Gf_m<-PuaPmU0TTw%7fJ>1 z20@*}JB}tvr=&(HgVJOOx^&rH%dM=R$gMlxs#{qvcy=-8l)Qp>I(MYvlm&GZ@?f2< z)6Tl3m2sx&GN_w+1nE@(OZJ*0s4s+D@X7^+>@#Q+Bjf9@#RT!*#&t*@N79lR+~<=RS5KcfQY{*?@Rn`H}k%8gz*JH8328 zE4lCe1|8-;p2=S6B<@`_=m;GZltJ%g$WL2>!9{qA?QS;cmcZ^v%~`yNw;A*S`XENX zYFAb#-8`I*K$uCtQnK>WxhQgPvep{MXb0QFzCy1wc3*t|ED?IY$eX z!cx)MTPnHOqy@}g(AX>|nP8q3=7bITsv(q&jcI=Ke9@sO-M@oL)F5_tMoHE9l z24OwlTpOlUJE$FE9V{{pA*Lb9q>~VY+(4LaIhvrD{RKZ9G%eAp+O9-YTEY8gGCsAJMw(kz!hQBHzdp z((o0vrc|nf3$yXH^|n;kPxLNdU++jsfIP^t=)P99e3d-WYbw>s_*Uvj5Ts~>vmPrf z0esA334B(+;ZMdt#RaL!1kG+~6+X{SCvT8vRSvCD+wm#E%)}NS`4Q7$fhKHNZ zhR3CQZg3u@7Tjui*+J6bZOw6XC0AwbW-K|egNQ|rYoVL_wT zNuyT;U2eHyZix zrq4$C_u{ts`5>wBU%G++bJ649);2#MP&IyTG>-rC^o6MLXWQoY4?eX&w{PJ8Vl@A7 z+x-6NsrW}W@P8?K{YTs8_m5!3KemA%pPBsi>AV@CZ{k!vH#+hJ#bakjUnc!gig%tJ zeTnqBog?SzO4)>P^}(I^v0`JdQQC~XO1)>u7&Bw%>AC>1%ZdZC%SxDW#w1>)zB80D z<7OfRny@s0CM@057^EwZX6hl(9xDmZ9xG)g8I)3>q?rnVrmQqTQzwo5Vah^cbXm z;o_s@cOeakD(#`iAq|QLQU87q(vWx*CFb`bZKfY!P41?wroTa58tHG+phg||)5V*# z*%y=l4>360?r93X7=Jfb$!Qn7!iRI5qmG>!u3y7Pb3AY++;bnMSxbHQHL(l+_z4=6 z*|CRk??Pyg^^EV1O~?S=+B3e2@YQ=p&yY5Do^CzP{kyCfE6kYE=p59(YQl<372;VM z>1I4o?XeP4m8hu@<-XOFrAZY6Tv=&>YTDAJO0TI9_P*5tD=Afocx9CgRC88Js!}x- z@_=tOZ>6OQDL`4J1J#0MNR?4j8G-7Um60ms1Z9b-%xm$_t%hgnmdrf*0aq zn4W;tK`C)Loq=aM>2i^xA47`K4fJ>V38XmPf)MyAqy&QXIr)S6NrRc9ThY;bA`X^mYPeL-pAPvz|kTSfZY&Ns&Y-HKK# z^VHku>rcNBLXo83o}|vx0;H&n3sTkDTH_R9rWIkGvn{Bi<>V>%70fU2r@YWE8str- z+OKM_b4%Fl{MLUxrz%`~a82Qw#&rPK9Ijos=5Z}NOCQ4Rn17pip7MksiAtdSO$3}O tbi-w0jD9UGo|fNC_}S-hov+X{^ehxQ8qeYS9leZJ3exZCkMt^;{{{pirtAO! diff --git a/backend/target/classes/com/gpf/pethospital/entity/VaccineRecord.class b/backend/target/classes/com/gpf/pethospital/entity/VaccineRecord.class deleted file mode 100644 index b52eeed18f7f94ef0e06f1c012122f264b887a83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7358 zcmcgxTX-8s6+UC@vXWM|EMJl(X=qxdb?l^SxrMG1m&9>e6*~^GlR^u$YiVOEmb9+4 z3JK-j8+XFBr9iniP{O6qrlmlEhnDZ-nJ0LGH{N*WgA)ETJCat?Hc}qo`z-C5Isf@* zcFvqLXXHQr=f#(Z=m7mTP6IR;rI1cxiU>-bw$51Dl2uvDF0G!n^RA%C{$i!*&I%fw z+MUMx>hM`SKOj|E_>3-=Zh8lxSe;Z1wjKv ze5Dpz{0mNHZHD=VbQ)%|Fi3I*?itZ3O{0QB?zv4{P}*m;>{g4)Zd|7cMrlRYE+4hZ zHk)qM$)MK>O4w)ZeBHGVTP_&JJqEW}wzCUP-YRjo9DKV@*DyX+vCq24?Q*eFu&b

BD-Sn%R9fgKyF44fIB= z<{Gai7H@L54=NX(eg0;h-ol&_n+a=d`Bt57WlIf~$Jm%VXLQ<62k^e=JlvS*cpImG zs<-L%Hadux0(?a}Z>$Zg+{eswIvr+cf+wmx$o)rjx}EM2G=%(o zG~(CNX_fMVwv??6d(NrkE%&aXi*YM8*Q&TRK`;Bsr1O1Doo&VJL;OE`8r#UfUDf!A zu;X=Pm9l-ZSSzlU?1Pnx<63SJFDhv70%xIB%PAKNPCZ*bw+c;dvsABTttKwJV!f^P21N{(`*XqR}P(5Yexv6}76QW_nB0SqI#qs#NhSFkZX z;ocL+4j){Zzp6P3Zj>TX8pscJ#|$BC3wCnM@pqtMC)=xeS*F zn(UEcTz1Ne07rz^uUfiPHBZf?r);)kQted^aZl$plHNEiH>%N^9VrQDD;!2VOk3Z$ zgmu;nf+jp{w;~}8yc$A~?!g+(VX5?26Dbei@A5#c`T<9X2l96%mt8Brv1o0oSPmaM zo?ArH5II@F)aoTvbAxhqBN?@pTBf;f;f%LTu}q_$!dx?LZ$6Ugez|C-@g|9kf69rB ze{P!VcyWjAwd~ZZc^jz?hhw^}O1z1y!+sN{d`m9-IG@PV6OnnwD?0D3s;V<}$Z_17 zTeUX5R8bp_(9h%a3wkz6&++MbNl>O$lNKvyoDDncP1QS4k63xvsh$(`xIYpU&?CLW zsuW6gEwkV_8}-eZE1sWihMb)O;P?0#8nvCTOHs^OrP4B7HKWlBf*xvH$jM^ifY@`b zbTSL3bOoM$*R@tT9kezXjj+j z1}$2Yej{kdm7&`h41S`Y!&D1@rIfo8LQ>6#tD~{14JYLGz#No8LRx6#rBgKYl;* z_y@-jnp<#Kou8h1io&6b)4wO}2?`HhocN^a_n! zAbqb9x5iDM%42i41)jQk1G<2Ym*TMxUq4^jSzTdW`-_pMw;qOY~*?Tl*wrlBZluhK-62JokeS81y!#{Oqw zBXC0eW3CF!Te0kX@P#>I*jxUR&VTGRYD2CPAH};h)7GOM?1F!P1Pv<=A~!M8m%vyRZyQqvbGy7v;DypQ|$nITpfA*IncAU&07hNTLzD2+5D+)&M$ z5vhtaRftf}>W~?gDg>vpiZ)d9rY2QdQ-zTAta4^dst~QpD%Mafm~p9!H&uvX&uYm` zNEO0YStS~(WmA_by{XcrYI|^CJmjsG3XDN9Oy8g4x}*F{g?DzND-9oPtx}wMG*iG()S^0^fay0Q;=fxGA+^tNOAfr%KINc zO3=R$ls|-|^QIlRo5n7qBNQb~2y9dm;xYzpwFkIkoWc!20~2cRQm}{*)RkDrwEh12wR+eK|$M5BtPA}s1&dt`5J0+qTr-}&n!NN@R@&s?#3hMJr*D?dE&D7 zFkhtmh=S{O?{aGfTy8`3Bbo9p%IkXqqyHG6pVV+3FqMYJGx$7@u;RPEpcip|yhO%- E0k5jP3IG5A diff --git a/backend/target/classes/com/gpf/pethospital/entity/Visit.class b/backend/target/classes/com/gpf/pethospital/entity/Visit.class deleted file mode 100644 index 25fb99e1fe889a281ae53db69da625ad4afc60f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10024 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 diff --git a/backend/target/classes/com/gpf/pethospital/mapper/AppointmentMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/AppointmentMapper.class deleted file mode 100644 index 9d9471b305a876997056e5c19d4f4600e506fb2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmb7=&q@O^5Ql%M+O<`|li&+@66XO{g?jL`BDCOrc8%MV%^#Ai&{y-|1Nczlbc-nU zx0o>rEz)0b;@s`@~LP6)HPr+pF$Z`le(kujTT(;WfhvBBczQXB> zUzs{~Ej`vN-Q)se1=?_G_SQW6p6t5jY*Og@B#EfMiFcgz7Nsy*nAUObqgJrhF0`!v z3A`Q(c1@&plh?mZ%G*+5y6}B$^u6ii^RqvmSDS7W&gZ?9Tm58`sXIM$&S%l`E-748 sKDNYxo24c**b@Idpsi&olTp}{bs#f`oC?`TIK*U#QyfVgOa2)60;Z#ZY5)KL diff --git a/backend/target/classes/com/gpf/pethospital/mapper/DrugMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/DrugMapper.class deleted file mode 100644 index 95de6cd3b520a1e015d2dd7a9a8adf6ef96108f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmb7=&q@P942OSHwQH-QS06x+<^fg(MLew(EO^hZ>2}KQ%rJk1zM2Ogz=sm2TcpsN zhe-mNeBsOY&*v9_JDe35DO@$Sr`9dVNnG0CbmWeDc1}D!`P9A)Wr0J5ixqz`b!=Li z)hlUYfw2N@05#iQzuQFpy5^{Z>r%)KFMp^<4zfilOy;^Z9FrG?MYRtttA7G-hk<7SJt=0j+>>B l9{h-RA86}U=36Kn3+2qY{m-4<;FkSjSYJM_S%3uBAI@@-n;Cj&uqT?5nOl|qWIiE$%yQJWz t^07qqI6Gaw=pW!6{6JIE6EbW67Tbd;^K6g6#kR diff --git a/backend/target/classes/com/gpf/pethospital/mapper/MessageMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/MessageMapper.class deleted file mode 100644 index 47b6f6f15d4c05215750c12b05e37c0378650e51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmb7=!A`?442J&pu!^q&W@-5Zjg@UA|kHIExsO1o(qnX6WwakWFhJAz66~8hy z>}q-}S5l=6V*}bSO7^XN_C2-hl9P?0>7zC}+0yPg{-6vd3tKx*eJ2LC*oEfBKY`c7 z!mbK&$)@#IMShzbOc%cIDtWMtK795^-__<92Iuo$*IIe9(Uy(eIp>qg@h%!%6uzs8 p16NBSJE$c79iVTca&^RDPvby+hE|!LBOGEf_rqxD7ew`ak=f3YMxwDPFd-7M^#rh8hr;oiZwen=6EgQLU&LW9IO#-5rCtuj4F*vDkZQygd>YyS}V0!%=9)Bpeg diff --git a/backend/target/classes/com/gpf/pethospital/mapper/OrderMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/OrderMapper.class deleted file mode 100644 index 47f377538255d87a87c961002805cc3c11781f68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmb7=&q@P948}86yS6Iy>I--@53nle!P82?g7@q;PN&R2W@d%Hng<`ihZ56WMCr}L zB!Nu61Tj6-*W2UZJJn%sTYwb}bc?qwTXa68~sDQ07re!E9x;r_v`@pqoR{y7{Nz%`kAt zz`mHW8yV`mTETo3`qc5Gv9fmYhwXZQfr88DUPc_hm~2|h_uhvhD8XlOsR>CVMd~(; lW*|iR{eUA`Ep8|{l6N8wgH)Bo37o=g$a6T8JeB@Az&DS6d7l6P diff --git a/backend/target/classes/com/gpf/pethospital/mapper/PetMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/PetMapper.class deleted file mode 100644 index cd12a1625abf90148d03a569dac33b6adde9e29e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmb7=O-{o=429nmXlVHnTlR=0K0p8o7Oa9mRATQ0lTMY)j4~6XUX29@;7|xB6(DuT z!uFGFKkM`7*ZT*6D;#B*7@SqUr8>M)khJtM*u)LB9D;Q8DCvGw8Fmd$R{X})u&e2z zTuGHOObuw*FWI;D#rM>%OHMY1rjOd_%}N6?5P&CDyS6HL74IG$Jg*9R5QG)Qg7?{V+)mm2kYt6vng<`ihZ3h-M5tao zWG2icAM+(2pKtE~Z~+Gej0~JL-eMbGFmRsx6eLrJmO|i&50O(7C1mmLHnY7O$^~p2 zI9$*xVMngT`+C7mE?{f`SFoDAm1p0hUDlK(g|1K9i2RMcro?NMfyqo-N4bw|AXb~u zvic|Re7LZw!!Ao+{?aKgO9RuH?_u%&B9zW{VsXdJ;VOolv#JhD;pqjL%aYt@BAI!jQO1Y|D0#dNmdtfI}hNvI&$Hire!YJHxWQS5k-}wVJF49)If;!8PDgI3W9P)vLY(#SaX4f+R5)Mp8&k`s zrl)cxRm?C}pbesA+vykEQ@1WT>fqWwq=J_p*gXf?q7)`eT^o+Q7lo$ShvvmUf!9OB zzJ!>l<9a8N-{uO_rR{ws54uh7Ui`JY+WbLbw&+t+C(k6Rk) z<{_C0llhWwzP>*`0bJoI!^q&g@-5Zjm4c+XkHIExsO1o(qayk0?cO~MrwqFW#|wUE zYS`8EST3YW8O8>*VwCJ#`{H|QmnA0~L(@ksbh4q{a+Ed7U{cuHaq2rUu(NGwKKm!| za%kAL5SMIPZY=Wa++bSxzN_TUHu~_%AHR#$FAPqfdTndv*+yG7a^sv&s^eWWIGg#d qCJtQ9h3sHS{Ck1ccDYW(U`N-U&Ka6zx{t7r$q=VF&^XrmA@Bq2pL^l} diff --git a/backend/target/classes/com/gpf/pethospital/mapper/StockOutMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/StockOutMapper.class deleted file mode 100644 index 755994b2b678dff112d304ed48ae2897a6a81d91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmb7=!Ait15QhJ(x^-6t!ILi_cyS(}D(JyeWx;~?X^q{~HVI84?5lb30emQNwu_2; z^N`Gh$$ZH-AD?gU0IqP9VWMzeyPg{VOkT&O3*JQTsAuo>KxK6G%Ob`5@t9#(;ke~j zrjBhxi>lRi%rI4;HKbzKnaBnd}qnV>ZS)4kS*ceh7R4@`Qb8 diff --git a/backend/target/classes/com/gpf/pethospital/mapper/UserMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/UserMapper.class deleted file mode 100644 index de4e5e818956b61ee1b6cb70aeb33ba87a46c755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmb7=&q@P942OSHwQH-QS06x+<^fg(J$PCXTJ)Y>)9sYqnPL72eKik0fDa{3w@9Hk z50eBk`NEg)pU*DBt@R?3{Rd4dS1NvcRFj#fm?eIyNo6 z)GKLXfw2N@05#iQzuQFpy5^{Z>r%)KFMp^<4zfilOy;^Z9FrG?MYRtttA7G-hk<xi0$Wxr;JkI@7;1}$%c!dA} diff --git a/backend/target/classes/com/gpf/pethospital/mapper/VaccineRecordMapper.class b/backend/target/classes/com/gpf/pethospital/mapper/VaccineRecordMapper.class deleted file mode 100644 index f62be0692809fef5f29ed632eb7f4fcfcbddb352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmb7=!Ab)$5QhI$?b@o~QD4Ag=K)p)J$R}JE%ZK{j@y*oBqUj(ujauA@S((Xixi6& z56Of~^38nn`Stz*;0_lB1_~4HTB`jkc}Xi5y-D0q%ic?%1#4}r%tX7eeD3cG94lO| z`HiVzThmLm7M%(V6=+MU*tKTqI%+o+Clh_s#heK8!+hi@JCwp`ZfeV^3!>nrhtP8R zPvC9;;m}2FGHLVMrMxc{#&g#NEl;M&<*)v5ooqW&xSn+x(aOR^Q#JBntxH+W*{EPC9 zJ(gRkQiiz!4Gtyy*1q_j+Fi-X#?bUpg-(9F?l{V1Ww2P=+HvYTF{q1u)4cen;ng^> z&mb<@w3`_6o7`Zz_I+2$y=`>u>JQuH@B@SMr(Q=|8I-b-TjzXI6z`&@RQRqY4qR=7 k>_|xb`+z30T+=W(&~u~-L%U4x8IG|S>k=ng=c=Cq-@Vv**Z=?k diff --git a/backend/target/classes/com/gpf/pethospital/security/AuthUser.class b/backend/target/classes/com/gpf/pethospital/security/AuthUser.class deleted file mode 100644 index 9b34430086b247a648163b268afc04ee9a2b33fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)3U2oGs5S&Y#xJjL+bwbN`DH0+vP(SieKtf1JNajNn^6ofCa+PC8&bdH@oG;d$uCVKVmL4$owy z1?o>!qVzL?YOg1nx!Y)F012`7@~}>3pVi82fV><(bkK{_|WOf=>};O#)B|Z=3W*pJyCOk`@w&WdcrYZn_Z0Fg&C*O zG9$S*miiSp;P(0}mI~7X+x%&^v>d+s7o?m+z$WN@F?aJc&9g|pRK{`Z_ll3rYH`Gc zR`{+}xaNJBxn{dX3bIR|xOH0=D;XftL4ZfxR!RSFq1>pA1mh zLW5ruJJjw_{eV?($;VY(;ty98+wZl7!N=bZoD^(kio#~hUp-$81tk$yZ$iQSYv)Xgcd*0jg-uB=B z`}iLKj^nRMw4q%hW+09ZfupWBYx-5suFTGOR#`2%-h#QLrp+1K36y7!SBmPa^3JK3 zYRV5zhnoT&PudkbI3dv9mznBB0-X{`11T5+j~3msIa{4Et16gt{i+>Uj_Ipn&9j5c z=IB!JbS;=umB21qf$dgSS<3mP;Cx^^0=3>ZNs(I(bYYu-;VIvB7S*J? zpeh3SzQVk+>Q#ODm$j~xR0 zTKOi_qfW0?@df0Z~%ad&nNK!(h|E2Jcx$`dhTYOK(cCi{;EL(t(X>U z*PQp=3Xux5-R6*E*=0YUz;1y=jkZ?^rbLgxHtmjPl~U-%UWt7M_TzxSj@GP*?X03r z$6APQ@*L&*{yJZdPtU7jKu!7tVxH@$1p3LWW|t%e)~WMstvs!~B(gYcz{D2>Ivuw% zJ7qaF6^7Pm5=U@U;!y*S;cGC#1{nyTY=aJ$D->g z(_%onVRTN|<*K93cvdA)B^{^Xb~iI8XCRL!1$LIL1vTVW7`)Hf!5rWGfYc0w11%iY ztWqP!j^Tt(zNa>cmnn&-1@^a!l7`w^wetiyiIW)8%%0f*RA_$_Op)+U?_?Vr@?SmYRKNs1g=e+B;{wN9&^Or^aj5TXketsIq zN{TLnVmUA;qEbfa^?KNKO3Gu-GFzf8ty`w>nK|ZDcn)8YxM1LUyddzzXXYeupRYF5 zTY<;=?m;&lVQZMuVGfoT*4(wbzg`qs<)(41ux;zY?^ zE%ztu=&ccMsLmm7El&L^14mJx1Xv@sL^*mTY$YkoVot&~Ft1Z}|9VX}=>rTxA~&oo zqL={Nj~rB%r@Wpd_Ml?G)tw;8B=-VeXT08i$$*D2d~4Hw*gAABkF>~kYSDN1c9xl9 zsT^`kw5Y3KS5&<)PFm9rce)F1(Q>9N&(`Z`GZxI*RN(QJyc=a=lV+P|6&};gxpdaj zJ)eD^ytb`^Gs3uLe$y4@jUa8}!~6!cK1~+Ewt=oGIEX06ielKs1RmI|ziD@@#b8v` z)^FCGM;kkI8yqRovZgCxVI=0dq=m&@;F)_!hX%RXx;GJ>NQLBq6 zZ^blcfg|^zgTB?2l8jWZK9y;C_Y~`tm*BJ%rjWqh!HrN8NX>+UUzElVZjjatqd+_y zNSK=wfmK`>v#MdpO8kf|@@`tLs+Me27hmG10=w5=jA})LNaFp~+QeaIWV~^}Aeaub znJGNs*1V#kuFR>2Hpz^`S`Gtd&~*bQwpFdCiQmheJ(TAFJ%j zB4@B@h-44oY;f8t2CjEm;DhEa6%p2%4qKIyqx^jZ*IlSp>nYScrZw-ZyEu8ds+td@ zEO?j zgwE!q6jQem4|8m9<1od9)!zzyYv+3$0e5R$o#wwjPxjw{=+FKg@*}R=u*m0D(gHgX z<22ogG?uv9QK!Z-E_20uAy8#J?cLb)?dX6&$*W zM{=FFaqL1`evBu88#taz-p0ub>CSXVTHe55E_EBHE~HZ;oxF)NH!zknZsKg(xP_@U zTt_??Ka?G~g|D{bBYLI_@8joqk?Ly?oZuSR4apAFMPKgX9N&+<$YCEwIm=(f0hDo& z=Jw$&WOz5r+x_?@4&jeD9D3|EI$#&R!QVIOjDFJZ#w+L`kBhwZ3VDxWjQg(=sf*nG z7QRhym$~yDyhi`N%x{?Q;&rd`POg z!@H>}@CY4ngaLOHJ^TvMVb@dV)G)d?GFpe_2Q;uPG%x}2U-W3OqHxrzwc{$EZN%jl W{3i*~5%@jv(a|gDwd?o`(*FnJxQpHZ diff --git a/backend/target/classes/com/gpf/pethospital/service/AppointmentService.class b/backend/target/classes/com/gpf/pethospital/service/AppointmentService.class deleted file mode 100644 index fe1e8711d46dcb28d9598ece36021a3c5993b576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmbV|!D_-l5QhI%+o-+t*0*pE9;1R6K@fV#6Kv8kjwHKlb|U&}9{K=%sM0kprP!N? znSp`%_`mu1yu1UL<0(N;VN$qSmwu}~$<77OVk#Y|IdVaI>AhnsHCf5NR|y6R&wFz; zx-z!Zulb$|N${vJy^?a{YJPLAuFts<4!&xGrjw8j?CdXi{ex2&Wn5Y#Z9@u&%`G_H z+yR|+N4HMVf#v*HDP5!rkaT^BQ8&k5>-}v{ diff --git a/backend/target/classes/com/gpf/pethospital/service/DrugService.class b/backend/target/classes/com/gpf/pethospital/service/DrugService.class deleted file mode 100644 index 4d9b08a053dc452f6d5e9c652993727924188d59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmbV|I}U@t!4a3hE@5|#T+PA*cqk*HF~-tj9?g6+ z-`wt(D}W`&9y$!uL>D|Q54nLESjY)KiZ)rYu!;~4x%rb<{>5knUKf`jl6=%O9^l_6!N qty`C16)=n)Zh7MW`lSpSg&i6bgd(bAAR;1ieag-794H+Y13ZAWl4#OxBN5NB}V!jO% zimZbk!|Xu`h0f$omprRNVWr8_(r`LiQbua^fv#UT1~-tg61FUeA@hI1p8p4Q-VFWv tkh0QNZyj&xF$@A-77?vvS}z}ei%uV>)K(1bI=c0@fEJu4_u)2ma0kSUXXO9@ diff --git a/backend/target/classes/com/gpf/pethospital/service/NoticeService.class b/backend/target/classes/com/gpf/pethospital/service/NoticeService.class deleted file mode 100644 index 444dfc853046095b2b3493ec5876bc7c5f25a542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmbV|v2MaZ42J)sloYyDyhRso=osi&2`QpOp5PKpdeP-B$~g#LjiC>~Lsh+`5mGZU z*p>%>_UG%*lo9cr*^>!gjfW1yI1#1bsZcTBg$YH@ zLyuwpWQ0Oza<2=XRiSXw=4oL$ogFDFwfZ18ZyduQkg*c3FvM`${(}AOAJ9cJ^lL-P rNmspO{FToz40K^4TFbOvJ^7ZLJpuZ4cunqO(A41r^J!&- diff --git a/backend/target/classes/com/gpf/pethospital/service/PetService.class b/backend/target/classes/com/gpf/pethospital/service/PetService.class deleted file mode 100644 index c99cc2215de681f55a962fab1a58742d3fddc73c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmbV|J#NB45JtZx5Mxr1Q>0`IN+&6ikSr0&Cs>=ojAidy-Z8>gOOXTQP$;&8h(wuU zewukRZ@w>|UjW|l6kww8lDSIf^+DGpN9Su6Q)*Ami8In4B*||ZV5;z3n3K_^vAN!* z1!WT8QDHq0QsXM#yH;0SYJ`1VwqDa&$a;462Hak83Sq*zHPSYu!0|meivIz99f$5+ s$O=n0s6_9P!Xj~PlhKCDe(~~8a5bFJ+bBHrG3!4BOc0EDj&Q7tA0gRe1poj5 diff --git a/backend/target/classes/com/gpf/pethospital/service/PrescriptionItemService.class b/backend/target/classes/com/gpf/pethospital/service/PrescriptionItemService.class deleted file mode 100644 index 464a50af0b585267892bc14d5fad544492cb9bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmb7=O-{ow5Jo?jpR{Ge0eS|!V42corAn1R$_X4ZgsBqSvL_L}8Ve48D7^Mh?Q>ZG^h&xG!+2 zaJw^u(XDZfeyn$7rNH$GR~z5)v+s4cuZ?gDZJ#u~3AvO(KlIHBr!cFyaYp(`3d8ms zTy75;{|Q}=N9SVXgk}HBt6Y@|^UC+p(wf_xV)2Li-634|RJh1>l^+RAP>g+w**NFl Dm*I0{ diff --git a/backend/target/classes/com/gpf/pethospital/service/PrescriptionService.class b/backend/target/classes/com/gpf/pethospital/service/PrescriptionService.class deleted file mode 100644 index 85563d1dd5beba3ce7efd8c64fcb6d0cf5cb7540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmbV|O-chn5Jta_Ka<3bOHW}fTuyW;2mysTK~Gzb6=u4d?wVk(=E4JbD6un&U~uK4 zs-U1A->dhJ*EayyIIA!-AQuMe;uA&I=a8eQ?J0BGieq|6oL!Qr5`6Qut8i>^zOh?N zz4aa4w;Og^;nd)2k7{ig{_dmV?So%7iFIdDRa8&A~JP(+mn))1zX)ZqjfzWQN diff --git a/backend/target/classes/com/gpf/pethospital/service/ReportService.class b/backend/target/classes/com/gpf/pethospital/service/ReportService.class deleted file mode 100644 index d1ee4bee8c9a0c38ef3df73a6180a92262e5dc7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmbV|v5vwp42J)396ew;@fIv(xUs;9goK22eS)-@UaB;S8W+KBXfg4e8!3{>rOM)H@ut2p`ZB6J153$;_yD4WZ5 zT2RIjdICQ;NUB_^H?EfDAyuq{H+7J-XR<*%`(Q5bIDvkmbE~+nNWiRK!SU)1=(HVr u)gjB84|kh*9t#W-S63M=v}tyao-`-7LmDT6k0w5wR{>Pt%ECsduIm# diff --git a/backend/target/classes/com/gpf/pethospital/service/StockInService.class b/backend/target/classes/com/gpf/pethospital/service/StockInService.class deleted file mode 100644 index fe2cff3a49a9453333b287f4ab7d4af0fb343fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmbV|F^A>YPBH?NKjJP zmJ2`o`SN=@1Ng=$Ku2JrT`tpNBMaiK^MzrRNl#^MG|8Bq-Y;$Z-v;OjeC|}OWTtE? zf07+(4$v2vT`7rjxmmkP=Ep>_@kLg7Ne3qDjk6Ev@`e)_#wN9jtC9rr)hjq!y#f7d whhBZivf<-hCz?kBVeG0>)52uU^6|6i^m_?a^qG89V)*2F|X1ga?7AQXQ47 zlr3bMm!vtuqrhvA$(5_k-UV5oa>d3sRq&F2n5;L>j?~=^C$P#)VHJm#1Z*+|$H^Vg xw_#{1M3xPoMxXd27FcI4w3D|Q54~LGNi1u pP3sb@0)|nf>nfqO%-!b6m*VVsg!5tOy6C$n0Uda49>Q6aobUy>B+tbV9NlvKwh$%|jo+hZ18HLGjeX z%)r2W{NL>M+dlxWmv?gtvEIBO$JPIrd zwNbKECYPUSLD~nH2&|5*RN0C%+sdj-m1kF%t&{ZY$vC#=g8n$;1j2-KqkP+tfQxUz zQTz|+%W!mSMaHx5uBD>4NMM%Ow$b#?Wgp?`p7in7xl49EY+M+527zD1|r&@sS>goMNpsrw~0!8Eyxa!yoUje!T?p(^rGRTX0g z+w$O_{qyzvd;ze;V}OyuOX>=pm3v*19Gov%Os+ju4X32v*|Wq$6JVn7bTp08xv`nv zB}Ymnz=OhD$4HDT_`}t@I3-5dmwD|qeF<65&i*1dKRAVX%$YS(SETT{y$46ze?S-g v(7g>=VL1&l(JE31V^>!xtvPR3KmV0{?apY86vk~#+dly#1bv=i-q-L35Upjs diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/AppointmentServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/AppointmentServiceImpl.class deleted file mode 100644 index dd4145a8851ad49e195ee9b03fcdf7a0bfd20b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757 zcmbVKO-~y!5Pi-Ep=nx5C`gD?Z@>W`5n4cskSbM5dmt!xCzvp>{*dj3=4WxL)C0F( z`lArD3rInUI3P=7zwz_T&fE9@;qN_wBW$!$L%oGY2Td#qWMgOKNI662u8?LrQi-C^ zizxN)q-`W;Wz^w@##)l`xg0!!AAA;AIwVW!SfIYWGi+g5V85(4@fXtTbm^j}r1IAV zdfq#-$!MEqYPHZ7*n8{o{5yfhi96Q9#SOMwP&qMY#3)**6qFv6B&IV zJGltT=vx=AWlTC~m!@97I48q5wAh3!COcB_Vk2_=$VgTgXzu=jxZ^|(9ggKS(8ec@ bo$B1gXRI));|s?cR?)5YHGJj0Yx15Pi-kO;h?oLE^}%fdfWdH?4#~NJt9@f^v6KXESuywrp?O{3|$B;?N(^ zABC7*8flTD9FV2)yz%&r=Xvgb|GEQkj%Ne3(C(u%L>E1QWNr&NQ?{T>TgqZRQ;~wp z%OLel)FzNMGHAb|xt3J8Tu%OiPwWfy#$+g72((8pr+qvUcvJCZZXunHOB)q8X*{)lS3j&?@_EHNRreyS&vY2WAP0ezSoTPTH@~QGv;fG)+E-47SO?UCv zZ8eHittA3`6UvN=rDyUVHNk(%G~QahP|j&DtGb_SH`$t|O{BQ4(~^trDVy(Uw7}0F zOl;}r`Xg21oHov?_FjKiD<$y!YsvJ5o>Cwd?VT|;^8Z`InvGKHGZ~yGlP$a|^tJU@ zGDPjQjccbjgOK0_`aDxC7!R1>#dF1WpOLIF(0z3a@sk5B4B1x4zyJqqhqd3uV;nMS Uz^-lCULZe<6B391 zfbySEXSX0V(uxDJH1>?gZ)Tp~pZnY20QT^qj~3cJbOz{RO<|O|LeGpVcV;2@W z`oMN^5==ptE}ZL_D3D7_Pmekp;WK(7Ng-AAsbq;P#l8|x*FMnwdINPWfffd0t81W- e*J20txr;X#ir2=v*cRSmqu$@)z3f%~Ch!;ZNA2bS diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/MessageServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/MessageServiceImpl.class deleted file mode 100644 index 4471d603e38cedb86fb7db9dd21b485cfbd4a924..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmbVKO-~y!5Pi-EY16b6Xh9r%qa5l3;n>-YTwfMaYA(Lr~B-UxlHDP(h3>X~sRU%E<{iY692zG1*Jk92E}7 zPqk>owfoc>Gll09&aFvR5dNPH$A9{DwDJL^@t%TyY<=FKY-J_c#A>%uZHUE&oF+Q+rj4`0oVQP}-bNuQFY99cX(wbmsW3TMT_y|D|qjy|x>uYxJ* z)`f36CJN-z!qaj(GQ7h;22IS9sZ;XFut|I&NH-Yh@Be_hlSBt2iS;os#7l{zX5Ysv XtPASmwZslKu-U9zcq40F{}%WIH%;BW diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/NoticeServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/NoticeServiceImpl.class deleted file mode 100644 index 018721c8cafef87b549580ed80727fc3ae59e50f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmbVKO-md>5PiKLu5LCleniMIw>5_}gxp325d>lM;D){TjJ<0mGu=&hk8yuiE(v(> z2l%7Jno+@l#e+0d_p7dck9u8q_cyly_OUZW2i*aBBlNK%kmRoK%hI`oer=n@V(}nyP0%4UfSR&s-jJB zW+Rimpc!B&u>0D())Rr=k-g9Y>nRz1R+X9dKUG$6W;3<9DyGU)jh~Xecu7IvNBWvV z(^^ZWZZHv8o6y{-Sb3)Z*HFCCti7fBrE*St`KWx_fMjW*Hj(1usW3TMUiAD?twy+s z;lx%x*T+5PiKLu5Q-&5e?*++a?E_;Bi!tKp?P5ARG4HyIZc6%yc*1J?j1}@gR8c z2joWuYsLr@SUiM*>U!1H@9}Et_n*6a0LOUUM+@y9Is46{ibI4&q*DvlrN0;6m%{8rOvaJePk1-^Y1#)TW>1iJ_yhTq|ONJ(UrsR|LlK4W9t})Pke+zXjg%$=9t81W-O^Jg#@8Tu4 V1hug(v4tJ%*5@ni$yxR90}rUr*f0P9 diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/PetServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/PetServiceImpl.class deleted file mode 100644 index 75bb8fd25a88106047c9a60942f76e9f4f406eb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmbVKO-~y!5Pi-Efe;8EZKWQ$RFnf2=LIB$RH;&0p{B~+2}786*S2ggkRQc?6A}l0 z06(f?c3YHIia1o3#`DJGH=gHt`t|S#;0W)!XrS3atA{q06tamc^w_w9&t0jD+1MnG zJ};xDn?yFUvpQ0^;t6Rke6EMT!DsOmmJZo+I#y`zejIhMte`8tslU*k(xr=@lga-j zIHU9zM+aSn53gOC=PR^M-8m`r2W;tUS&S)sH{)C)TLU*S`N#yW@Sk8SU2;@77`#Sb zH#M(O^_3~C40&ozDuZy}*7yHYqr-*83*$WnEoHydUbZlcY~nPlva;jF881IGf4{uF zJ9K53&?l~h*`6O&t?mCXS4QFew^FzZ8gXRN>%>}@OhASmbYz%BESW4NO9o2psvuospuKkwbti!adSa_%po=xJz1nYM9eqJf TY=~`O6I=DZjW@Da`EP+|2@cX- diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/PrescriptionItemServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/PrescriptionItemServiceImpl.class deleted file mode 100644 index f6a859a28f7be74595f0c5dbdaaf64dcf10fdcc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmbVKO>YxH41JT2211~v1te~8D;$^u#|@ECC8SCLA%b$BY~9qb^P!p9LVi|HNF4Y9 zocnta-fb&ENqRsldFFZTXZwwR{`&p{z$-i&qJ!=Ly%GA@QYcDq^}=||N50l}wJ@1e zsOqHYYbKZ2JDn(=a!HzPsPyat9Lil`Ys`-GM4`L?Y(Bs(g>l2T497Z9KJh7VHr3w* z?<1u$a>zn`n92S@IKWWhw>Z^`~s%JJGxtO%*^}_IioSN0AYSGhfG&-f$!4lMQi=94|hZQ={>nsZ_i{IzpF%T9SGdhbtt zTS9N12luhto_ly8XA}Pr_zhQ$_>ceq diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/PrescriptionServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/PrescriptionServiceImpl.class deleted file mode 100644 index c7d1fa71592c01a9286851621a9b874173b6e81b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmbVKO=}cE5PiKLS>0^18jT?2l3S8P`Wl=V5J3>u5M0@N@1(M+WTw06?uqWt@+5fh zEdD65W=voMLk?k}x~t~(tFG7Y&)=WF0KCPkAv)*|&>NwTHH9p9rJfsC^0}*YxtyEC z(HB+J^evH%?5vIyZa62+r7!gKfAUfG3Tww~Ih`nU_x5K4JW)8R`4;{{drFrsdQPUe zPjD6}=7D_@>J_p9h6?(j(=7)TdhgviDU2s<>9i{66uy{wA(gF(%S|yef$RLX*h`lj z72Zr9>eGzb(ySgiQ+PV%g*B-P(&TqT^ho)RTW?Vs?P2OX3@6McciJ3kw~6 zV7s^orlhYfT+4A8}zLN<4Wo*7s0sVjA{oSDSY z=VjD%lgLJPR!0g~JSWYC&-LUH{E)N4+CE!OBZc<%&a{VD3STR}g+J4t(z%PClgXO| zC*)m7|IqZ%SJ-*!UE_&D=g^&!!p4{_9hb$7!cQ~HB{Lkmxyh#{aD|_eopjDoVQ>7B zLfu+JrfM)#cs=2THK`0j|GTF6PqX${>KDd)3i?s`s0P`}Lb8d|@~JQztuA{0s752w zM1SJSFsJWanY7iot=jx@VXlnAr;}1d3Yv0cvG1F;F3B`FEADNNU0CSo1KY(}Fa=$^ zaH(UWKrSskJ(&*;g7iE%P+N|sES#C1Ws#z1%X57aM7v@noZT?2i*kvOQ&UA)DH Vpf=t~Y+)0_dVh}(vRCyVfd}+n+qVD! diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/StockInServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/StockInServiceImpl.class deleted file mode 100644 index 929a44f9107b26100254d3ff82825bbf7907167f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmbVKO-~y!5Pi-Eq1#Z}^aF9^1{~@G;>w1)=e?p;h6*tIR&OPin76DkLO zKz~%l>_Vibia4N^#(v}R8_(PK=kM(ufD?R3&_cV1P9I%t2&B0!Wu|ONXSR~%B2$rq zE2<#%&!|lxYh=*=nsP0vbcLKgfHCg{Hil#Gk5;a2+8Go}JBrZhJyR-XBPHyqE@Yq<6SrE*St`8eX&2Bm8&wTToL%gS`LzH0fm zRyE@}lBunHuD?(%)XwU0J?h6xb*%(;zgOI+)H4di8h$dyMmB{tEaCpd`ne3wlbN4; zRq7wsU&#=)*ETMkUb-X29(rsv7LQ#g_+ztie91^Q80a3}K>XrF3w@6DF_2)3W53yV Z@e13F+IY>eg*O;9>s!3zwXS~;+ym8j-FE;0 diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/StockOutServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/StockOutServiceImpl.class deleted file mode 100644 index 31971ad0edf30f6ab682f382bb1e2dc94d4ec9b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmbVKO=}x55PkAT+_-L&CTU5Jy}1okm(t6+hEfOwoCfOPyS$d|Np>Y6X_NYA^;9UO zKcGLVbaoSmI2a$o!bop4dZYJt{{H**2f!!1YNLjF3ylt%*b+!mo6E7XIZbRK^Tk+2 z3N9;x)Ze2vfvk~1`zuPdq}*k4cmqy&FR;}kL$NPV@4g+i@I>H4$v1OT>2#di;3%r> z0YS9sf$bs9jEaTl2EQwkM_Sff`+{6Kr@dT?Jgs1|wp5!)adB6g^w*ay zf7z1q)@+v29@@gE`j|?y4j-JCa^GL5D<$yyTfwbzJ)%Htee4dbpUL1n znc38Ug!sXU8af=yW1x*^ d96Qy%iRaj1RL3sI8eU+pTK93lYgzvi_zzWU;ROHy diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/UserServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/UserServiceImpl.class deleted file mode 100644 index dba3363be4e1cb6da0ecd283776ef6d171bd4ca5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmbVKO>Yx15Pi-^Q$nDS1|*K0NIBrD*G(fKq)L@S4-Mq*B+h1F*S2hLO8!+jA#vab z@T02EE+B2CCYovTQ} zWkrzsThu0yH8N-lUWCc0;eTk>Q>U}xVFJjRM|s< z&rDY%>7Xm{X5X#a1%cKFyVL?l6Ega$$miOBQuB->{fS+uY^FSw_;0Wk*AxWKCj0oS zwrWMn))Ik7Q%a4Bg=g~Hir_zG8ttr}E9bPAW!;aJo9s-}CQ{s1X~}qZ3NuvSQ)_{r z-<{gRFZ2bK;tXnMWqa?wsErbMbzLxhu4fd8MSE|Ijr{-Cux7)F^{EWblSx-z<@(0@ zuQEjKwT)Y+{|!Qd*XZy}v0yx4f)~#f+sBM#g@N|l9}wR;&_IuEc?@*%gl(_#+jxp2 VMom0p+rV@5tNj=Q-pl+Kz&*$5)t&$V diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/VaccineRecordServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/VaccineRecordServiceImpl.class deleted file mode 100644 index 5fbce5400d7b6fd357245e0a73d78ff82aba50e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmbVKO-~y!5Pi-EY16cnk0Np4&>QWc?zIXap-Po1g&qjX-PsIbVAr;6FOZ+r6A}l0 z0Q{$_vkOR#wBk@%8vBjMZ)Tq7{?F|lfPHNB(L%e2&H!DkC=4@K=&5l9&s?dC#ndE@ zJ};xD>qIuPvpQ0^7?9VoPSKTUdgrSPrdoBLDkDV@3KIhlN! zU}Cb2Ege(l!t5Wm9{LJjUwYp3QlazR%}8N&B&5H}VoKq}Omp$9k6dQ*i3wccCub*} zag?@4FD0rQZOT@4Jydu-=D9Vg43g!cX8KPB_ZrJ6jQ14uQUOP`ueofpiPK^^et6Iv z`}~(np34O2D0_ph|)-=jPHVY#*1Bxu6M07KIP3bxFp@SrK@5 zAK1=MgDL3Bg$o@M1#)TO>3NQZ_=uj2q=+i>sbtAmihUzU*BI!2zJdBJjur-Dt81W- ew_*qNxr=vL71YLiu`R4&z1}ylDSH+F0r(4Ev+gVa diff --git a/backend/target/classes/com/gpf/pethospital/service/impl/VisitServiceImpl.class b/backend/target/classes/com/gpf/pethospital/service/impl/VisitServiceImpl.class deleted file mode 100644 index bb66179fde3d27b62c39e132d1c43e2edeb99c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmbVK%W4}j6g~1Yahn=ed!*~(fxP-=P!V-IP9T;W*4nK+UN)*bDPVVvN>JbLgwq4iWFQ{ z1gU>TZ30;%gZ3+$Ye~7w%B13U3&>Vi6cCjV!rJT2LH`3|2w82qS+5ZEk z6e!lFbkP$SzVxjALZEeGueHD+C8IBje5U=Cnq{2XP3>G|Q{}0QpOUS(q#$sdz64Ma ztD}_c5`parEsTnV=jnIVgjXsx+6bR3=d_m<@OkAY8~e106xWY^$#`?m^B>h&FoWL2 z7JjZzsTAm-UMwjdeOD_b@Zqvxgj|cIHu4%+!@>lZROPiArBRjz+p|3ikT zy|!`f^z%L>_=qmA7K_GvCiw7rv306YLEo?fnf1V?w#}4=bnAfIXD0O`{!Q(?%+ijKKL~RbOg~R(0yP$H&R8T zTu43GJCHd?pl#kPo6drOe=M;bLOVhl!a6#j3k>J1QmRmSnyN@=->Ozj$0(+1j#*4) z4xPtb>0XsNTM{RlJ;B~|Y_nWQE3{4>UFa6j<%^1G8;)s}H>v_6qaiBLEMO1AjX%^E@>(-+_al$fzFdycMV5|F$}-@8P#zeHw3hTbhgZrbcxF-&6pxNLBz34Vmpj+ zOlX+YF@=;suW6+Ys#f_>?m5;oSylv+25qlq7W2{;7#vGv&#_tZ^yvFk#Tf~%XiW@ZIOTNrA!cA2`X z;~rLcqgA5q5JX^W>_eQJYNS!a7xJ~LV+|QzC3~e}sE+F8Rkrkks)wwO4cuqXR1BM? zCNOaRr9X7l%;X`y(eOyeCbk6PXQ^Tdd6pi>iVJq#x_l{+YHo@D%cLpPwvHWq%ffe0 z=M_-qkTsO}K(H!L{2jj6@Pm#Y@sq%%))T9mXX7kcd7kn#QH{>k@UuYdtmnIWj-7KB zb{m^+*~+sQyRv3k-mjJRq`hVA6)A~kt(;NZHf&RUH-rIa-{et7vKI}wG-u|98h&{) z#nIqMn|_gkEK3eExutqpV72*FS&O5uwE$Wr=Tr%6Lk*#|Ji|6QxRBK48eQGx>5iM4 zGpKAG9{ad*w@Ins+$EoO&AUSS z2Hgorj7_U%=j4j1u1RmaC{wC)aE&jAk1v=HQS}mW7gf&)S3d{4otA;;gSr{-@rLVQ{}DaljLVXoXD@sz9DsW8IbsX#syxDWX#R!UH{ z57Ub(`p^cAvdUZZ>>lCLTp%8Z_Kw#P^J9nGs}slD!AWoX7Q?h0nG32-Jop+PC;vdi zIKs`jwl_$|19g1jLp)f=ESI)A=6v`acW9*5vFt}3Ukm)on0_~{Swy(M%#>p2h`H zk-lmEnSQ_arKQQ1C;=eeOaX{s+&9{V2;~td&ybSjfDz(?LP4k!LLxw=(B3!h*4fsvt@WD6PvKvb z6O;pj3kQA^LX49%C{-n*dgWQq?9AtH9{cOh*KYte(6o_5-a^5_9Oenj`{J!|0}=Y} z>)yWf3}OC}3YB?G$TylhHWpB{U^^(mAv}q+?~Nzq*7j2WTHxt$g|8K~nVIC4>(XwUr_CTF^~j8g6z z;T^mb@i+s!8>QNl&(tu-WmksfRn}bIiTAnIXV9nN@ims& zF<{|3OK0SO8w>&zaSJuJWWkE}%&-0h))C5t7pxjJd1=otmn}93oJk(vj6}9 diff --git a/backend/target/classes/data.sql b/backend/target/classes/data.sql deleted file mode 100644 index 1f3337f..0000000 --- a/backend/target/classes/data.sql +++ /dev/null @@ -1,17 +0,0 @@ --- 插入初始管理员用户 -INSERT INTO `user` (username, password, phone, email, role, status) VALUES ('admin', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '13800138000', 'admin@example.com', 'ADMIN', 1); - --- 插入初始医生用户 -INSERT INTO `user` (username, password, phone, email, role, status) VALUES ('doctor', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '13700137000', 'doctor@example.com', 'DOCTOR', 1); - --- 插入初始顾客用户 -INSERT INTO `user` (username, password, phone, email, role, status) VALUES ('customer', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '13900139000', 'customer@example.com', 'CUSTOMER', 1); - --- 插入示例宠物 -INSERT INTO pet (name, species, breed, gender, birthday, owner_id) VALUES ('小白', '狗', '金毛', 'MALE', '2023-01-01', 3); - --- 插入示例医生 -INSERT INTO doctor (name, department, title, phone, email, status) VALUES ('张医生', '内科', '主治医师', '13600136000', 'zhang@hospital.com', 1); - --- 插入示例药品 -INSERT INTO drug (name, category, manufacturer, specification, unit_price, stock_quantity, unit, status) VALUES ('阿莫西林', '抗生素', '制药厂A', '0.25g*24粒', 25.50, 100, '盒', 1); \ No newline at end of file diff --git a/backend/target/classes/schema.sql b/backend/target/classes/schema.sql deleted file mode 100644 index 6b2235a..0000000 --- a/backend/target/classes/schema.sql +++ /dev/null @@ -1,291 +0,0 @@ --- 如果表不存在则创建表,如果存在则添加缺失的列 - --- 检查并创建appointment表或添加缺失列 -CREATE TABLE IF NOT EXISTS appointment ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - customer_id BIGINT NOT NULL, - pet_id BIGINT NOT NULL, - doctor_id BIGINT, - department VARCHAR(50), - appointment_date DATE, - time_slot VARCHAR(20), -- 添加这个缺失的列 - status VARCHAR(20) DEFAULT 'PENDING', - remark TEXT, - cancel_time TIMESTAMP NULL, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建visit表 -CREATE TABLE IF NOT EXISTS visit ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - appointment_id BIGINT, - customer_id BIGINT NOT NULL, - pet_id BIGINT NOT NULL, - doctor_id BIGINT NOT NULL, - symptoms TEXT, - diagnosis TEXT, - treatment_plan TEXT, - status VARCHAR(20) DEFAULT 'PENDING', - total_amount DECIMAL(10,2), - payment_status VARCHAR(20) DEFAULT 'UNPAID', - payment_method VARCHAR(20), - payment_time TIMESTAMP NULL, - start_time TIMESTAMP, - end_time TIMESTAMP, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建prescription表 -CREATE TABLE IF NOT EXISTS prescription ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - visit_id BIGINT, - doctor_id BIGINT, - customer_id BIGINT, - total_amount DECIMAL(10,2), - status VARCHAR(20) DEFAULT 'DRAFT', - remark TEXT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建prescription_item表 -CREATE TABLE IF NOT EXISTS prescription_item ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - prescription_id BIGINT NOT NULL, - drug_id BIGINT NOT NULL, - drug_name VARCHAR(100), - specification VARCHAR(100), - quantity INT NOT NULL, - usage_desc VARCHAR(200), - days INT, - unit_price DECIMAL(10,2), - subtotal DECIMAL(10,2), - dosage VARCHAR(100), - frequency VARCHAR(50), - duration VARCHAR(50), - usage_instructions TEXT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建order_info表 -CREATE TABLE IF NOT EXISTS order_info ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - visit_id BIGINT, - customer_id BIGINT NOT NULL, - amount DECIMAL(10,2), - status VARCHAR(20) DEFAULT 'UNPAID', - payment_method VARCHAR(20), - payment_time TIMESTAMP NULL, - remark TEXT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建drug表 -CREATE TABLE IF NOT EXISTS drug ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(100) NOT NULL, - category VARCHAR(50), - manufacturer VARCHAR(100), - specification VARCHAR(100), - unit_price DECIMAL(10,2), - stock_quantity INT DEFAULT 0, - stock INT DEFAULT 0, - alert_threshold INT, - purchase_price DECIMAL(10,2), - sale_price DECIMAL(10,2), - approval_number VARCHAR(100), - expiry_date TIMESTAMP NULL, - unit VARCHAR(20), - status INT DEFAULT 1, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建pet表 -CREATE TABLE IF NOT EXISTS pet ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - owner_id BIGINT NOT NULL, - name VARCHAR(50) NOT NULL, - species VARCHAR(50), - breed VARCHAR(100), - gender VARCHAR(10), -- 修改为VARCHAR以支持MALE/FEMALE - birthday DATE, -- 添加birthday字段 - age INT, -- 添加age字段 - weight DOUBLE, -- 添加weight字段 - photo VARCHAR(255), -- 添加photo字段 - remark TEXT, -- 添加remark字段 - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 为已存在的pet表添加age列 -ALTER TABLE pet ADD COLUMN IF NOT EXISTS age INT AFTER birthday; - --- 检查并创建doctor表 -CREATE TABLE IF NOT EXISTS doctor ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(50) NOT NULL, - department VARCHAR(50), - title VARCHAR(50), - phone VARCHAR(20), - email VARCHAR(100), - avatar VARCHAR(255), - status INT DEFAULT 1, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建user表 -CREATE TABLE IF NOT EXISTS `user` ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(50) NOT NULL UNIQUE, - phone VARCHAR(20), - email VARCHAR(100), - password VARCHAR(255) NOT NULL, - role VARCHAR(20) DEFAULT 'CUSTOMER', - status INT DEFAULT 1, - avatar VARCHAR(255), - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建medical_record表 -CREATE TABLE IF NOT EXISTS medical_record ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - visit_id BIGINT NOT NULL, - chief_complaint TEXT, - present_illness TEXT, - physical_examination TEXT, - examination_results TEXT, - diagnosis TEXT, - treatment_plan TEXT, - advice TEXT, - status VARCHAR(20), - record_type VARCHAR(50), -- CHECKUP体检, DIAGNOSIS诊断, TREATMENT治疗 - content TEXT, - attachment_urls TEXT, - doctor_id BIGINT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建message表 -CREATE TABLE IF NOT EXISTS message ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - user_id BIGINT, - user_name VARCHAR(100), - contact VARCHAR(100), - title VARCHAR(200), - sender_id BIGINT, - receiver_id BIGINT NOT NULL, - content TEXT NOT NULL, - type VARCHAR(20) DEFAULT 'NOTICE', -- NOTICE通知, CHAT聊天 - status VARCHAR(20) DEFAULT 'UNREAD', -- UNREAD未读, READ已读 - reply TEXT, - reply_time TIMESTAMP NULL, - reply_user_id BIGINT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建notice表 -CREATE TABLE IF NOT EXISTS notice ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - title VARCHAR(200) NOT NULL, - content TEXT NOT NULL, - is_top INT DEFAULT 0, - publisher_id BIGINT NOT NULL, - publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - status INT DEFAULT 1, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建report表 -CREATE TABLE IF NOT EXISTS report ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - visit_id BIGINT, - pet_id BIGINT, - type VARCHAR(50), - title VARCHAR(200), - summary TEXT, - attachment_url VARCHAR(255), - doctor_id BIGINT, - report_type VARCHAR(50) DEFAULT 'DIAGNOSIS', -- REVENUE收入, CUSTOMER客户, PET宠物, DRUG药品, DIAGNOSIS检查报告 - report_data JSON, - period_start DATE, - period_end DATE, - generated_by BIGINT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 为已存在的report表修改report_type默认值 -ALTER TABLE report MODIFY COLUMN report_type VARCHAR(50) DEFAULT 'DIAGNOSIS'; - --- 检查并创建stock_in表 -CREATE TABLE IF NOT EXISTS stock_in ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - drug_id BIGINT NOT NULL, - quantity INT NOT NULL, - unit_price DECIMAL(10,2), - supplier VARCHAR(100), - operator_id BIGINT, - stock_in_time TIMESTAMP NULL, - remark TEXT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建stock_out表 -CREATE TABLE IF NOT EXISTS stock_out ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - drug_id BIGINT NOT NULL, - prescription_id BIGINT, - quantity INT NOT NULL, - unit_price DECIMAL(10,2), - purpose VARCHAR(100), -- 用途:销售、损耗等 - operator_id BIGINT, - stock_out_time TIMESTAMP NULL, - remark TEXT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); - --- 检查并创建vaccine_record表 -CREATE TABLE IF NOT EXISTS vaccine_record ( - id BIGINT AUTO_INCREMENT PRIMARY KEY, - pet_id BIGINT NOT NULL, - type VARCHAR(20), -- VACCINE疫苗, DEWORMING驱虫 - item_name VARCHAR(100), - execute_date DATE, - next_reminder_date DATE, - vaccine_name VARCHAR(100) NOT NULL, - dose_number INT, - injection_date DATE, - next_appointment_date DATE, - doctor_id BIGINT, - remark TEXT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - deleted INT DEFAULT 0 -); diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 28a6e2f..855ae59 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "axios": "^1.6.7", + "echarts": "^6.0.0", "pinia": "^2.1.7", "tdesign-vue-next": "^1.8.8", "vue": "^3.4.15", @@ -291,6 +292,16 @@ "node": ">= 0.4" } }, + "node_modules/echarts": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz", + "integrity": "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "6.0.0" + } + }, "node_modules/entities": { "version": "7.0.1", "license": "BSD-2-Clause", @@ -1425,11 +1436,16 @@ "version": "1.6.0", "license": "MIT" }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, "node_modules/typescript": { "version": "5.9.3", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1449,7 +1465,6 @@ "version": "5.4.21", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -1522,7 +1537,6 @@ "node_modules/vue": { "version": "3.5.27", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.27", "@vue/compiler-sfc": "3.5.27", @@ -1575,6 +1589,15 @@ "peerDependencies": { "vue": "^3.5.0" } + }, + "node_modules/zrender": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz", + "integrity": "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } } } } diff --git a/frontend/package.json b/frontend/package.json index 6895525..36592bc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "axios": "^1.6.7", + "echarts": "^6.0.0", "pinia": "^2.1.7", "tdesign-vue-next": "^1.8.8", "vue": "^3.4.15", diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index eb1be07..c22204c 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -74,4 +74,9 @@ export const api = { stats: () => http.get('/admin/stats'), statsTrends: (period?: string) => http.get('/admin/stats/trends', { params: { period } }), todayTodos: () => http.get('/admin/stats/today-todos'), + statsRevenueReport: (params?: any) => http.get('/admin/stats/report/revenue', { params }), + statsRevenueSources: (params?: any) => http.get('/admin/stats/report/revenue-sources', { params }), + statsDrugSales: (params?: any) => http.get('/admin/stats/report/drug-sales', { params }), + statsDoctorPerformance: (params?: any) => http.get('/admin/stats/report/doctor-performance', { params }), + statsDepartmentPerformance: (params?: any) => http.get('/admin/stats/report/department-performance', { params }), }; diff --git a/frontend/src/pages/StatsPage.vue b/frontend/src/pages/StatsPage.vue index 1460fbf..4d9bc71 100644 --- a/frontend/src/pages/StatsPage.vue +++ b/frontend/src/pages/StatsPage.vue @@ -1,49 +1,407 @@ + + diff --git a/frontend/src/styles/global.css b/frontend/src/styles/global.css index 70b142b..2b27e99 100644 --- a/frontend/src/styles/global.css +++ b/frontend/src/styles/global.css @@ -296,7 +296,7 @@ body { /* 页面标题 */ .page-title { - font-size: 32px; + font-size: 20px; font-weight: 800; margin: 0 0 12px; color: var(--text); diff --git a/爱维宠物医院管理系统-用例图.drawio b/爱维宠物医院管理系统-用例图.drawio new file mode 100644 index 0000000..d4def48 --- /dev/null +++ b/爱维宠物医院管理系统-用例图.drawio @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/爱维宠物医院管理系统毕业论文-2026版-排版.docx b/爱维宠物医院管理系统毕业论文-2026版-排版.docx index 4e305c75838a44c7168ef0469c65572f83aea9ae..2883fe63ad5a4550820f65051b26ab8ec05b48e8 100644 GIT binary patch literal 65911 zcmbTdV|XUrw?3G3l1|cL$F^gT}Dl3j(wx13<=t}H8r2L7+yt$80XNJs9fX+M!TRzdlQYb@6 zobMcvP+yivnKCjh`*Ls9KdA~J&N=R6@JK^pmquKeW0JT^Ig$K`rJfrA&%>NWj~c)K z!_&2MWLoPoln?dG8{zjF?K}&pr*vov^<&@B?9%Ki`f>z((K=$oI(e9@h|hf~h<>6D z{QIv`Oe+S?AM=DauZ-`gYiR8IcQp^aLw~U>&aFv*+?L?Wq_C3Q^9|8d4&rd<$m0$F zY93b}hbjzB zN3kL{tB)*rmvzkb+3gPK@x0cIo-;I<7j z23OMOHykBntTp6j@(J_rvUJC)d+>gjMf1BXzyEhx3~e2Z|EWt<{H9Dl9$N6UbZ1EL z9m;XNx!5|fh08tyqA64M@8@P_6bYaU7gU{~mP2c?j%JoLaGbuk>+9PDYPj-np12gIhXcVb`9=8u%B;hT-km?%GzbVw%n3`)v1QpFM@~W#?lbp;EY{ctk*Zol zWqbMhG>x#$^N0>+>4v1NC*#>hgE-+tE-Jx&)o4nf6;XAiJ7Izf2Tykk-hli&+xrib zvE<*`M*hw=;=i)(?C4}`{ZGD&;-n?}`QU@E{J-$ey&F2_i7t|fiYCEB!NDx65#psW z#askk6sdQ8T_rUK15mr5q3>?5C!|_E&Nz?oL^dhV@edXDA=Jy-lR6-{Z5=!LqFIV6 z$7RHS=M~JDAp^DoV+t?^%rx?_BVsuOJPm`1@!QuTx)-XkB{|I(R#JwV_o7RS%_-x` zElz`&K*?aln9U13xV&~|(ptDudk8F*v(BCBxM5XTVQH@m=I@KE2=B9B#nWFGhGTC) z8OK;sr=PLr!HR1Ah>p(ALD>7rp-1A3ZB=`GJ!)4x$|p=LI@;k2gmEY8F?E{I4Rd+) ze$qJhf_s$VzrY6WpWet8tS%nYko%CiLDuSZKca;M{sf-Bok;$}C^nzzem@uh2pl;v zIPx9J`6sjg@2e2lcV=B}9gO~u6{wGg6vXIzL2~E-0)qP=6-Os`D`Urh62GWD?XceY zyT`ToDtESwo2dC+)PXDKE{b|Rsw8YrM8=_*Z0ry-F)e=grtV^B_h(_Tdj-CN}MR!l!pOZH%i6!xxX5+v=GS z`oML+dpu1i7EiG&Clu{RvqtxA!r7DyA_&M$;ra5N!J?k{0Zxh5W7W-u(KPUr{y$dc4ql~q_1Wd5obQo9Z&zsuN z=cgs>)T#uhW+_D85r*1Pg8V+(PCA+qXjmeFpk1ASU6YO<{Kto?=$=w-KHl-W2gn)2@fQlox$B zC>khG6#N+vR}52qTptJ7PsO){zvH*_RQCh8I<=AuJyU z#cLq|K@IAB0$JQ|Ud{=@;=lad=6vshxxI3p0sgB*;6s5Fv#N=cG~I8#@qy5_ACyO7 zPAbU3WFr(Cazo&0e{paJaO7W^<9G;uosNMG+HO1Gx`8fu1h7Pcj;_yaFy@JaPYrrL1eW;O zX2wcg!ORJ#Ea&Bmpe@x~CK8BZ61a{JdY?Snv$lI9{Me?d($UF40V?)j=2a9NVNy)H z{xp-%l_L$b%~$%|HaT`OBuZUITNxp)6-bBg&WrA(QQ$X%@V$j~N0TOh{}P8VjpUW- z`9cVz74>q7Oo)5Axy8Ym#B?MqL zXZ_vd5D&t#XD5ei8_G$B%`#9HrG2ckE6*D(VFneZxERM7p;xscui*LA3axM~?Nt%A zE0gV;CL~`EYXYk-b<1Qgf2~E8{G@|o@|ff>#WHfw<0kpGU`w#_zB8goqtiPTU)oZH za;}h5tMiWA{d1moZF#a|9q!7rWTqet7qz;yO9XaM)P!^D~3RE+GKFwo1OP?ws1pG~2D-QBi_5 zq!Uo4A0v$Y&ne}7y|HnnL?LkwUE#}4rwR7fh95`UQ_$j#8UtyH#P}d790LDn%_-W0 z!lpAaA$=wWGrFRPoK8(dEM%>slyNdrDY#lHgLjmI=GfP!N#tJY$s!j;OE121ucO3s zD!3kAiEXC!5IUQFMlWQ&{7ca7y9IUVSo(y0Xzv%o2tajXivX%eLZC{%ew2MR^Ys_K zIU@LV*%_R~4+Z3uK;n37qKd%U32f*Gu5Mz_(O+<%)rR1-v7yWr*s3^+?e>)h-eu_q zH9jeEOH$DhPVQwn70Kp(RHe^-(u zgZGJ_8dL$M8fDG|1Gm;d7g@Hm_;(ip)JLi8K-xqMCuq^jiGG< z?n%a2jmD|rEB|Y7EsKIRFndT#zvtl&v%;Xw?Dh#L9HBBODisGbKk@+B2P|Hmf-fYG zKK)ooicDmlfN=y&w97$01Nede)S5jNMS)UW(^;q!UNdFQlG=KbyyeWrSSjQ1ER){8YZmGsN+$8W>xmI# zd<80LQ33W|7aTaO6^{Q{d({=1%- z@(c5q4#D@3La$)280h!#1tu!j75Y@Ih6`Q0gFL#}Puuyr(#mR9pe{T41JBlJ} z-*&_>JEhUh16uG2xxXhf`0=gu?WA5g#P_U9*K%|Sz3Z`YJZ_lP;}-rcz_yAy|Jw*T;eUG^9C`meQyAp8l7haVU)jI>d)>Bfy%0w1lx{19CJOk+ zsB`*1e*L5U9pAtG`j1JYLh!9(ssA|t9jz4dKiT+&^Gk%l4U=IG+_qmkDE&JWVPib> ze~kYB4;2%=_vB%h|9-#Gr4#taBjLd{#*w)1==2=EX5zM*hr=firzuX4TM+4N0)S97 zr{5Kat5t-L>mw_R@6XkkjZDlDV510gZ@boOzw6%1A)6Cxn>XZ1bcgF*TML(16g~U? z$$S?Nm#1oE5y-9`hw}?IdOuJ%J;9NAYtI!fI+h_aCNB8x2SiAtli*+RFBYx8&Zx`1 z?N8+DZgw9(I`DHJN#BG2Bz*dQy|jG2zv1q$KeYUa1^L){V0mUgHAMZI$ur@7p66zH z8TE-A%>sLt{-nBumIJ&dD_6PJMfT;SbYo$mtdGDOob--4&61EPM9 zdh55s*e|QTgROWQd_P2(+VE%8kI^2ETUVbawbJ3X;|iC6<_iUNEp^ZL>y^_nWNr{~ z%U0Y&!X_WjA&DlN?89hJV4uE6?T3}5sP^+Xe^d{a9r|of@4JQxz?O-#Av0}NU9`D# z5*vJP0`VsjCWl8~Y`LR1)!Pq`cNDfA))08cC0#a!SI8&an`IgcTCB3W2o#|HJy}q+ z*9j!jV`VC5wq7fnL%NN+hz_9{bswHDc2HWOS>vzXKWn?ZP2%A81&^dtAEq%~zlmSr zyiHDdL!$olYw2}-UH=fDV6-A=Uk&=&{}gnD3&7?3T_7|Np3L#wd+i~9i5P9JU;`}J zSWNGnCSNd4SCP>M?O1@i&j9n+&u`YsT@jva{o+!B*_MHDdBnspEWYV82F&)#!x2ktC12hhOvlsRMf0W7QEruw;@nq!?I% zm1*s9zf~#Ay=#*N=7a6JDVRkdnzVpfk}bC3k5{nVbcm_+;IJ_!tBgkWEI5}R4jvjx z_PPdH!#U~?k!^$>uwe^}OyEgV^nWVIK+OphaThmS6G?vK&uD0%v_P*t(TLJn(B@|$ zGnpIutTlRIiE=TliN!?kLxx(6Q>+LDG5xqxaAG8trv#B;WU51gn*blcX(d?lb{HFb z@;VSkTvHOw?|IoKUjdNTK+fNB5;rBQ$_;E4^(P+OY0v9$(IoHvA&wLn04 zT#=TRj~NYB<1*wE=Dfj`P0fco6^Ht9Fhy2n+caa1-0tm4?9$x?*tBC9l&B`v3O&|9P++31%zWpg z*FKmqz0`{m;$FT<{BfN4DWj^WNBrI8V-bA~tij@6K)NZf!^oer z2}0HFYYOfU!QSJ@s=!j0xh`=7v*0ddP7&oueXLXz zNMhJGSvg@E7tg3EVb?&o4pRRyif4v#FAJC*RIhbG+;0&&)>FMwh&XJ1tFS z(yDo|5y=Tpo5v$&@=(tb7>`Q(xIm9T*(h7vpL?Xr6w&v0CFUttTJF1PC*@yBQ(~s< z(5z&g>9<-UO~TKZ?5!}5oz9hcwPCqUiuG3Yt)UhNIU-ElH?9D@@51VA$Fp2oFS!8#Xu=xkAhLvGs z*)>g7_|mTwQ*5mraF1U{S;?d-tp*99z+~!ynC_4L$eyJoYAO|9R@qkaNw^$Y1#Py}h?kfFF9CPy&>m z#eFYP#Tx38du59n6kz9+_13yKeA)QgB;q&;meDO#uXjx(_VJ@RX;oTC8E7m~*gV>_ z(=?-`nL+a@+m$qL{Tz6jF;+VIY_UhyEg4Wq71c`Z)yRW3^lk5L%|G)RThSa7`Ye8I z)&^?d$&O+OGC!^IkbY5#>ldLf+b}2l+e?DqK&f5w?+I3q3v0j?6+ug+u|fL8SnK+G zOG}L`b)+fb5ly4BqSp0Qp^$g{XsPE?Y$)&5bxbI^nwW060R4^0P^mwiq@&PTrBPVtIalfvi-c^+Z{SX0*K~d9 zPlKQtD^Xoe+uxy#!4;!?V3D}WnEHU^fX!5GY;_38~dSC$e2B^=hLCBH#w zKN4sSfzdoJ>obdanKXvb`j~X?qF=Ls976{KIi56vvN41}_h&>|FO{fb0lbFBrnmYh z{sWc$b}oNngZ(!2`ckZXcQMW?Lj)8*@v&ueP;)R>qGciEhSkp$?T2dB2=o5xGU^VZ z^g#Q_WWURIS`4g=@;a7oJaoaC54Az-7yZB~K+M$F64eT*x1;-~-cNEq`K=`Lk7l9LP zX!T?ZsM%h#3Mts3k2@-l*2)-qAtieZ&lw$!`&9Bt>#>nA?(Rl(MaGsD|B8d`F)y;} z=feTT5WCZ|9ogXBrQMa8lRhi_HqTV~`8F&5$&+T1_q7QfMilip&5@zQx?8$XihTVg z1<%7rJ+KyAOlCZ9U&Jq+>=oyC{LeZoAa=~0sy?!w)6Aa~7A-lUq7DSz&)MMgZ3mk( zj_DaX)<-pj>}^|xy$sS`tv*}zyqQs=CCwEX^3p1kc?{Xr4jpC;93eyCSB2^n)ZaIM zAZ_?@{w)IoL^i~NmBh~PDnkz&)A)32fa#c2lVsHBU}&bk$=CYi$3y94l*8^Z`7cjG z+ZU+qmX5Neq&&XiT<04ozeg}#z|zVRcW2U_#1RFb0))uEbRQqT{*4BsL2+d|fB*rp zK>Qc>{vXWJ(b&n!+{W}jkYtv!wCy?@d>3u)SMSVbvT=tvuH|wDY>}Y0ECRSioVa|DpZ8_Q9#vCMmCC!FE&%Pjv2)4x} zL(;%So3luxdEh1;>Js+FfQNUKAWFwHOWwFJRYE4J*<;U3tc(>?2LH1N;*Qi^a6hRy z3-lm3vJKde*~}PoYi)q!ixv~7PMqj%8MZEk;N@ZPoq5`ALkH6(@;Twwi_ek?%<{&+ z5Mnqfu!2y!&O^k>>H%6aD`casr0?2*r*del$_?eK&pJf2bEgTPM2qp)wmfoG*Lmgq zZ8)35{@I()Qj3d-GS%*E74kTiw4oeJT;qGa@>;A$F4vnuQdR*AZewynw^grPrwx*e zefq%`Q2kF8>`D;#s-y;xk$csPOPIV4&90C@u(A#Gi$5M|c(`N>3}Cc*&Ma_|&@6?B zm)Q$R^VA#{kdKE>aTCG!Zjd?9ra4VJaH)x*<-|z6`<-0wm+!P_!zYy08_oV$B2yLg zv!Y%zAwt=u0lxVkQLNSw&Ha91Nje6rA`t`ZOy>xITK=#g7OO^=Uz*OQUKz@yJs?vs zdkPTnYf394C0k|(=PP3azi0d24!zU1`C!7M+;iJEFKgji*cyInhL-nj^k;^PEokxWQFSarGcY*^D_ePIIjX-PUPiU zY!z$aM?P8~xptj~Fi-UcObTR+wssL&km6xnnd15S7PK}R93TajS7sac3kE$0uk<8l z3;+Uu#-kR!cbu1|-iJs0)+DiFH(+ZE09Xuc5uHzlW)VU6RC%vr*`fWab|D*Yynhyf z%JbCAL2RAM<`;w-hWmW+{r3aP7WT&#N)eR^zSh{8kwf;0|6;DN3~XQA+rwgu@`wabO)nHGzF-Fx zT6V&iXM+5x8!?h&UHpcBz}zqvQc!)O)(lW{?y`8glkCtB)G7Tw@ZzV5IN*{)COQGb zYJ^IItwB9kCHl9yRIoXiI|oY36SxtXWWt{gb81;I{wN8#EJSBuFfH_bQ(Bp$>!LP) zSS8E=#)T>irNE69h3sq3R4~*k1%)5Ph@Q$ZZ~o%8rY|JpSL^{%#=tSV5ScquNCn3M zN}J1h+{=$?vs?T#pXxwMB?$5LAp!9Kk8S!suQ8&(e`jrceyMR4Plr9p#k>v%l&xl zC*AkKyL0rRLgA*eoG{7OmiH)g>tuzl^6Pj;-VB}ju`dC=*fMA)Y2cFA2~-a8PH$2j ztM82$ljuWrtajd%c0cvuWyWLc=AbgsHyx?hCAO$aQgo#=vYBxpv}=wBPW=q0d?0(8 zFx$`Aw5BZ%a=R9!S*@}~he|m=zS^e`d-j2?qk=bHasS;a)s0Mg=ijZu_1!A}@TmV; z%Z+V}{_jqyN?iZ$6zJe9@N;bF&EfinMzlz_F0>67>@iFSy zpxoy}q;a^u@g&QxzDikGL3IdD;9JdAS|SNBk*HO*Q2(Jh4ZPY^ zecz)pVYCpbU&zCN2Y_K>o82EagL`#18XWZrs6T%+rl0ACq|5ji1`(tmlaz_hr$csrgON zfd>c5)>DWtrRz5i;*xApG2n<0W-c==sJ!jX zH+e~n{>>2oTk${Y^#9P57wXcsn5^(!sK>r)=UuZQRkVZ-dYTR!Ycl>~;&Fsck{1lS zG^j+zqAdjM4+^<_8uv3mT@P|dFf%|f9w#yM+qu%dLLnQA;fbYeEM5@dE2y+jlh^hp z&%s)N&Ih8rEyzRv+QzeG8zpbJ5@0BC4CfE<{*URkZc-u%K_T_%CGs>&SwEs^MqvZu1A6Up1b3fB&E-J~2Yxv}#(P{Glx{6p6#OlV#Gdc8Yur z_NzRvl7@LOwa7uciujm*?+r+fFPuo6n|=Hm4NPv3GtH>)?01|zlj3|Xb!6nziyWRx z@IquZ1ly?5@)v<%EiH=9v~CZN=j-YD39jjMb{6-?BqxD9m7{9%Ca?tI{N=?o;PY*l z@+t@5>+$x^$*Pn3%-ZAgaX8(xb%4W?z<>6ZVyn}|^|h1HmALI(2 z^{dA45u2-a5*btE101iBXIOheQuc2#1dLGA!KPG zaTz^BN=-*VB$kWc@OxF-X;lKia~(*Eg#Aic6)#5)tS2g8u_unv^r@NgZjv2HiMsfP z9KV(c0eJC8yxn$m-8iEzoXxx5KJ0Z{I|FT+u*pOo*f#2^PiSzXAvNRNOww2SE59lx zPYS4f6OF%oX~)kV?;av<1bq3^7wPGE?auaG>mTpANfKfABXXdF;Lo3-EPw@K450({SdLU6hI20kaaIVT3sCNoRX@6Dpm$o zey*2S`b#j6J?MOKyKs7|;29&ONfhbOAbvb@j6-68w42Ydc>FfgYE{h{k*IO6L>8`w z#-wrKTGwh(-D{(cX=XtICfzk(4cIW_8wDjhdo^tB?9UPZ*+jTtk1`9<{Rb@m2=kL- zEZ!d9Q*6NfZ`1LCh*Mo@D*cBmJok&IT4>SZ|T{jDNCcz)L#FF@$ z3jhT}3ZvzBic(85Tv4V7`B`}>`stnaoJ6O4MRbt8GBrlf1qkt32+=r;S`)b{8;$1b z%>K1%&$_tqO#JkSZ1b}4({vl;29wklzallAs!`0!L;T=uYnNxO_7vh4#^v@RM}bvh zylvz6>ZMm0i-=Jwi}0IrXv#?%k&7*Q-EFXitrBsxazJK>cDUv$Vdi}Ab`l5g3biUV zbkxz21h)AH0O}4G+Ug!{pa49_p+qTM3y;a{jrZT*87%EpFoAbg~TxfU0Kip%`{6X-H5 zg=PBWXs<87XMHcARS6EI~X!nmwVaJ=zT*_Vhr|z5!@U6u0}5Lgw>*VTciT?4B@n(;}UH z;V1JL>sH%7Eyjb~_;{(xGAyEw7xqXLPkmL>CbzS(T@zRHz>gDgAa;dK7;9VgiCw%RGk2$Cp*QCMeGCDLcDq_bjC@}O403N7A3d4h z2cV{?KW2_a-)EN3ye{Ydl%BtK-^xBR{M=DGM+nY$=+#cCxS?xb75DBsXOF$9iaed7 z^k~a{`!(hKW)Svy8+CCNqQXrfZ+0(tk;ZRRc$;)u?P>dLMavwwrO$6)GXi4QZhu%{o0kYX2@G=pyPp*pGWc5J2HEY4^C+Wt6KH$A@6$(**g+!qrG`#Le^H z<(nSkG1|}Aqm-|I>^}GoZj~vU5fcDg5SyEcq zxrkWzrz0h+Kiy(|Tu=8TwBC#>fWdD11S~vVF}U+q2`jpUcN@GVWH`~|(WGVF`Q@yz z%YiAy_OI}g59{6cpozB6OKjWXH$xBr=@)a-adAnBz4;2bS82j07gvL#+wZf{0ex0u zd5WHVSy0Y!KHiy#^}#odm%)|*Bdw9mI`D*Cz(#^t5#zp;gZ68X?}dX+DU_x(*I=~C z^*Kma*xiTISKV;2Lmd)kyAl!{N7NlH(JP~=%%I_k6kb;7tfrJJajj3c?ET<8w(c;k zvscD>L~r|cgWspqg=^;BbSA}tEeeZmf~>3l)>S8j=hS%*J_~t!eAj5=ogl@NJAL-4 zYc$2LH}jL8D;@*_UjHfH$1;F6hqN!jXOpS9DT905c@V(ZpbVNP6R#m{L(jJo4z7Xi zu|3t-(kKUM*q4FiuIO!i@La+E(c?zCJJnaq%WiVaMt!xY@3k?`TPaf~0aTnaI;M^@ ze>_(k=cH&pt-;e<;|p;wmR<5w5?8sZ4xZBRCgmzYJAV5v?EGZul}TIJYJa5UqyF&j zt?4x<#Z^oDKEmTemhw{eO_?7Rb2IAnv$OOW$@ilI#GSn%dZQ!sYxIG)s)Lt$Zyu%^ zhU!$SqxN&Glhb0W)07*NB!yH`zlC2_SXqTIT?>%AF1tv7+{&YE8Z8~1RT6A9Y=0$^ zo$g0Me{rvKis7^#oI>3Q?zoA0<)>|Ix;;G;r1tAEw%bMBfvfBG>^9_hlPLthq-9S0 z>#Tm^#|Lgk7v}|o`h`&jKH~I?>l5e#LGPdAC($!mzGyPGd@~Ut{+4=|weQ_xPELBP zWepjkWPHS}7Q;i@?)^GrQ_(u^hQmMA-1~>TI;Q0|HBAm8vB`38e{Nn|Uirr(Aou(8 zDp&`?TKBKlDYA?%wd_^%9FeGPtxjbscwKf)Z=J!%81$>#n{XtAUNZH=ni<)8jV0Mz zhc#uPdLF7iiiJ&`XL%OF#KNtYV~yGp#P;0l6+hdBwkZ$3N50ssWn$4B>Y|UwNI0(d zSWBsRY7Om1%)LWdI`?Jj&^L>GdYZMe@ft|!nr5TvV93^_x$>r81y@a`xS2~=VYGxq zZCLLua2vLpPV01KDO2rr? z54s?BbX!dAwA9{YB0>3ernvORYWEnKHad5lNbd~-{^fZrak7+J_xk(Knpy@u&Sq)1 z>77qA6IT%C-^sm!x!Wd!>Mxtt=iQ&xDjH+RN5^oZRhqWCwK;~LY)W1oR#cTqI974E z!dHMyO~#V?!#>Ts%k(r~qY0S=+~=L3hxcUW&kA~G!wH#mN5jFB*}g+2A8m6UO^xml za5I{2&TKmq92%W> zeP}uUX=I=E7LnStJmVQLTNyFczZ1q_d8UvZ=CJ`Vg zZMOQM$qVv!vxeRDii)TSp(dDhys}KU!D>f_ba4S_jFx;T6XC%0=!h|pw;s}Z=?~`~ z_B%A^>FkfaV?0eNA@W;5%^pD-|+J|#7hjVJ^$P5!Bv8XQ-YnFUslpQ8k zQ#-~tQ=EH?RDwDODbQlOMM>H$#fM`l^}i3yrqI-T;Yd|6-OV>L$)+}2bfDwr$=d^a znQM3uJmtiTzOt!m`ODUVX4-V7vo>7O%~+MIty%+V z`sd>EJO=X}@U6&px<>P{|1drol|YCmoH>2BccyqioP{`TgX6Ak7A;$s^fDbT$}%Cz zNaM2f?A1u8I%JJprN7&Rv2=#j6sGrG_i8kw?xMSr)~ukMSVE-yy02?;UQ}CUx~fcX zu}N-$Db$#JK{oW>T+0snvY|Shc&jiPugh{eY||B_S$g!Xqm(m6Ct1YswuI#-#qGYE zZS{=OZm7+s-FFzkowm-1P;7M{u$ADI-8CEr$9l+`zYlzuYr`{hmF?qXU zY$!Tw8F_T%6}`+%_uP=xx9m+-XO6@7;U2C;i$rq#TQ`cFvqAnDc$NTN_ppP_Bi>_) zfT{m7jB+)V@$45voi zDK_wm)`gp_0F~Pf%q~q~k$v?gj0-uL_d_e+df;U;u=i-F?=fEE-a3ve=wg)SL zGswr#O3^+q4~H}JyZsn)_ye`+%|vqCz4=y34klrkpAWH=LA-w{IoyQ7s~$=xc9u$y zuT`I~>ZY7Xkk7_y#d8QI_WFyJna3FkZr1;N+;Kk_Ind>jr4Ovec%5-XzWgUk<#0!=t zp8svlKaF4bu?uDApi05dyE2<3<_uF`eoo8Lt{8A+Ps+P(IJ#i$v0U2so)0p3fn91L zGrMc8g>-Pa4Q-5|eNw~GE$cGS-ZA>Iedp~x>Z8RQ7C+a`RJ{;)8S(HqcQ* z^Ul2$8}d#H<4o;Wq!R3VJ5 zJa$A8i%*@3UC4)oXC?~aZu}lIQ@+mL(PE{ zd#c4%ABh1K!JI+B{9Onlhi}22jS+&icqr7)=nmDD zj`m$fI%^lw&eUyS0@@9e9PaP3j#g=y-G>Z!jLL*!Yt0=HOsH&uIuC_DCX`af4E;Kxq{SG!!c#7 zC#lb-xS&$BYrpc*gAf3znZgsLyB-1suLOMutC)74{}r#hA-o8>TUNs%P)O7hf;5Mi z2fMOgz14f^20mwws&`UbBBv-mg&z`MHUK#J-E7;d@DvM>@7h$-bRb}u;|^7Ly3=)f zj};?5P9B7I?L>t`Er>l{t8?vjQ0-Ffa^JzuggVpxaF!E3ZVz4m#C{ZB#{3Z9;Km_q zb6#jHsl#2%5OC-0kDkMp)IF9Os!j1){5>)Q9QKqmJcU%kwYK#PXKxj1lzC3Bv;{hc z9q&Hf7b}9j<>k$oG6|GoLM*Ugk$C4y0g8kIHV^AL04x}3FX7A<+K=H zC`rM7WzcCiBz!gy8Gn39q)N9>s1IK60wk~x5)UYY&#}`VJ&YdFa6P^n4J?l?uvO>E zcsRA6jQF}d@-KP4OBz9)rU@)n$&U8Dx=IS_p9k0D}L^s65Dv#TEn z&8&Z-p8 zUAHyf{KT)v(Wpn`5^E}YMiff=yWblB-q4ee`v&QQdtU_MLkeqrt9is$iu4tss}6~& z`>%uS{qXjS(i>?uRVB*J+lRj-N{FVKjXom0sRa&-g=;4%%Sr}5{@jY+f_L;jX&l~R z&oFHV*FkW#nB{w?WQnIC-Bfe9MCaG|*L$>3X(@;R^>!4{^y6W1S z7^iv|O8RJtxzI@1nKC;`Gwuy9mTsKg!+w_qFa%jgx_Ze4Z_jFqv#IVdkkz$ zAtN<~(0itnNa2Z96!6rkIe|*d=`tw$_E8}t5BKju{GXfjm!grGSZje9*!UvKv4s9u zD|aWWSo4mo6~ihZPScv?@FD>6_9a#ce+m-VmtFlGw)1K^32)sAXC)ASWIT$C3^kB zS=5R*Y|y@Y6&^7cSK}uuqi{o6r_XnWcekLi>Ccq@VmCN3iNT0?*p${cd}ET)ETNvr*b$)st_tD*D-k@JZ8yaF)nvm`@UVlUhEA zR3@3YSY7=+@mQX;W-z>!Vn-}@<@EsP znO!>e;!=&6TycB(Fu%znv-It&jRn))^QfD`Bp6wmVO~Zh_v)@j{ByUAD;t0q+$B0DumrwnRmP4x^ZZg>GjkTV? zS0B^+NC0^Y;9Wh!OYZUp;r zqB@XjOS*<}_iofLaKp*?ky*BA@1KR#Py7YC zdgg0J^Lr!(&|XJWM@UO*y+Y**8`+GyyXP_+loj`5@ho?m0|~UX1!S>ch`hOZv}X?7 zNP!?R7Q;9^BwS8IIi8;39c%>12z;I0(QO=T` zIYR5dn zXIfelZO?z$Gt)dl*z?N^YYPue)c|2RJ>|A!%&n3;S2$?JFz+dGcm83>C_kKtZ0cIF zYETXvsV^1PUhJ`E)I=^*{H?SavyWw9?om=az$Cxu#lwD>V5BRR5DOx|Z<1Mcy5p|f zSi&C5r@r33dRU2P7Ax_1h1%8ZAtdnPB;?P0!FlU`HalMY8}gR&k*$vBWD0vL-3;wZ zU)D2*cWAF+%~wcZS#O=7`(x-r12e?QWoTbUJ>msaw^Q?KwjDI5SS)-Wq^6W|YkrX& zG92DkV5AbuK&a2AQn55U41b7N%ri5n>M*k^9*-QDeI^@{yQ)Dlb`hsZG%_rl>{t6j zkXYc#o+_uXaKDg9pX|va^PUxVXKr9z2K~@shD%?0TrGl%_l3ERv#v^ zOhITCclz#~+CiyMxxnz6|VG!3X)%<<#)Co+)@?_TwE#YD_z6rmGGJMyW(z>T+H%7R#Xff+t^se)6q=* zj8f96ugKnyo9Sx$#O3aYAb=q0!J(_XI z7ytDbc%<$ytwnaX@6k6PO0zl=#=}JsuOkXkw(mzsrXSAl+LO~j`C~khbK5IKEze`$ z;lrONaCm1;vN^)VoinD*{%1||%VKSt8Obigo6OodWAO8~K0zOjEoL3L7n=+SCUE(Z(VJANss*jm~xLkx^jTLHn zGWJe5FV%-AltfQ$qINIhsrGJSY5%<1F7piaAjcjS$ z4xMNAMvSHvSM{qVG5LY~wwo=V8j{mEmiJXn%^RI}!JE1blW5XN{^3~GLg0k2yC2#`s{%&CSSz~nT|mAOX^#&+jcnm`u2n27G}y`jQ%PrrKgcA zF3&6S(DS~{oyZV`WaV+J7iT|Vkl@4Cr`#$4sjuRQEmdaSIzS5H3qZ7RN_ z+Yuo#2~&3917{9Q;nUO)otc`W(orD3*9}qCNbY4&AKzOA*{`)HU3_mdUmn1M1ljrk zj71sV^&C=e6SGg}yy=2vi`tUx+9+y!TeFwK(JdVhYr|wRlXNajY3G@()Oj9pqtxT* zw7j20#&KYNySmIS+qP{Z%XSxf>UqD3iTQuy+{`~2dG^|S zxg5nayVTYHCMC?-;=m-#xcR5M?r9T06ATDTQ0ukv92xgx!Yq%CBB!X;@D2pfbH-j9 z$cQGyok((h^+nX8t(M0<(~cU?di%piS5eqIA4xkI?dbM|$fniy3T03AzEAj`f3w)P z)c2So)ZwIf#Q7pb>G)!CS^)^Lo0hmr6Z2_~HSSpB5NSs~ylA^#_C$w9w%v`s!nyta zxZX0qk2YKawi7&IcgF5?h(zV=ecVF8zFRG7Hqc${tGW226&pVoZFd>I__Vz1!)S4v zQjWQ&r*VE2w+A3XAoyZSuPvWZTYqR`h2nDUD)n~YOtuvSv0@sihs2B6Z<Ay#c+t2m|BC`?dgIO+py6b8F;^@7pVOkjWU;!9j~q-6+|%=yHs66mEJ3{iD{hiKfg6 z0X8_B%s60e4E9p+D4UAu!|o^u@)39nc^P!QvHkr`bv^%xG(N$WOcV0)ns)zm!NE?e zVBD4rD3jd_y&lHAlI^K~lYo5>9@AjEADKejl))DBK@fwZJSZNkm&HL5odXkEp({bK zEG~(&ly~Fssfyic*iA&-TD+*lb<#_#OZe03z zunWD-u`M+Wl!b#sc83}kw^08fBPS352yCOPq;#wpcQ|U>-?9b)6!Iq>Lw&uUg|)Fp z4`9NB>YJZr!2RXoXd(OP5cJRRz50OnjghXDGlVis)R_p!v4OjN;0PiCx0{sJ^8uRE zlkF*70T^)X$ovlm0JzSFFs0h>#}2yV>H$Rs=r4lcDlPsdwee>Pt@~|>lcQS z;r%^~7k8Vvf*JO~XIq?8x6ZmYk;ZPji5+7>3L)NwcSAjnmwKMK{SLOe8g%hg*lr-# zENgW`t=K;=umZ2}=f(4{;jc?G%{=Z45`%YIHe!sqO8e7k^E+up1OFn3OEC(jKav|U zM>OxC0>U0q1de!XlU%jDyQsKVGtE*(x2SAM>27PWVe&`kJI;KB{+i_18GfdIo)$eH zfqc0?!DjBiDAU{3wVKnRR`Zt#gCJ9=D`KlYXpHr8`|bb2-k2*?i}=wOFE zMnL#(TdDNDLe|L}p^Kli!>e&uCETwV@CJziq4xt_S1C-SL`Io}`nVkyo-t-v!r@Gq zQGF1NBKPHZ!D`1{tG{tbZ>O-O0Z$Dvs0In0{s7}yET4po)dfcc&x>3u0{=psDo4$L`RUW0jcKXx4lt=w;u5rZCa~(@leu z{>H&MfYn`W{iNh?&fPbb?22|*G!l}dg4MZ+Qz71yJ67|`o2hpV*ZuGNu6_j4V+JI} zwImcWi7ng?S@ht-0>LX7!j6W>WvTLYcj=#WU^dOBIFAMe&s2Abjiy#>`wca0c8s;P zOKaP*DD>aP?&{tYojs;ijw;^zF5^iK8mDtu0xMls3^5oKg%sz|Xon z&&fePK!PY#^Ssn3T9lWP07o#tA+{GTdu&wzg=XYDV*u<>9AtccH6-g1*vo0hI z1+H3JhyuOWj1@PaXC=l#k6~_pkYfBz&p~5RxDHN1mgswFe!o^@{LKT>UriJ?lG!6E zu>Wh(&rR}J^z{#pcaQ21>YR#|6u_$iG2i+#w1L~cIht{|OT!%HxL>uaO+11!Hndvsd2b#+tPbNR>63#D`G)aHxk zg1)SFOCpo$o`^43BsFq(0S(W}D%OW{SKG#y*_+ptN~e!fmuExMCO*L6mbgZCF+Bv4 z6`Z{W`$twpwRuLNrGF*kyyx2Ehw*vRQ3~o0LfumFfu#h&V_COOye&Ymz7>n{|J15T z{#jy%7Pls$9B+g&S%wvJ<||01tX5ETPX698beSXY{D4d2_Q$>2VsQyWFEtKzPt zRU=7ME+ODb&wDrBS?{$zjkOA^Y6A|jAc7G8cWN87C;>XkwXm$3jaWzWV5A^uLG9Yr zdOU%`1}63Go9zjx-b6^BSD5`J?Tt0JI7B&q?Ss!mO($MlJ89TE$R{B`4@ikrpRP_u z0P3)EL6<>7)FcENPeZmc8I&f{h0Tconu(Nbavex&EifHen2j(M(|V1GXaekf_&6@u z4Y0PwFi=HP$OJ(oG2IloV17YOK&urM#p1v_lRnU7zPzvy&p_3yj26}|QV{qY`EO88 zoBTU2@NwKH*2RUA64t*O$M+m}$LBwIDB-yq9o#bZpN+3nHpm8=9LW%34EtnTXf9L* zBmF42L-xHjaxos))eSR^YY6k^&!IOkHzApbZe;H5yIzw ztc2Ee?Y?Tfl*hX^P}gcrU9j2UJe=54^mIi#TdrL#AxbHdFPb#+0MXX8@DShb?IN7v zbg_N29hVuPccTQ$TWF?ttDMREf@M2JlRB|z2> zp4|mA8Q5~Z8u|1a-0*TPe_QgoydbMMs)wUfAIFFU>v&k~(PG0jrQNQ~%?eKviG$Y~ z#bv!JW)YCtZg0?%xFvx_u6`_)rh_#`+5fcLag6pKch+zO(OFZ_Yx?z_+a<4%nG?!y z8k6T25{){Yg}oiyb5WraX$EaFDImO=+_-1z6RlY(YjSL?7T3KlDQ!TJ3b7CW@(5i@ zSkpTR`|_OI(Hkak>o_@jMbN@mLF>BJPVJKP8q$=*^b#(oB+C@&&txA~#pfa<8~_4m=2C z_CFcXnfrv)XbQKbLaf@^f%~4L)|4x1)>nJ`@@LY>qlXMw7MoYT+zbWH6k6}PQm|sK zJKLU_r&Xe!P?*!#E0N>cmjBZaqP@zLY*$$siy6_vlC!dVd_FH<952Z;Ee4!VMdHX5I^PM5` z;L1_35_xP`xnsDL-fL47h=7!C5Q7nE_2^ldR<&offD-&Fb{C3B|3@Tp=nXVHv$>-n z@$x=gPy~hp2K%C&+h497BiC|!s25Tx24E@6d46Gro)LMV#@FPPe9_&c@ZUUR}TT8(Yz zBzd;=53a3@dK5({w!Qf&J}rbhi-yr$4O%SCu-yo*)oR)rl_B)@dyTLjWcuFjaa4+3 za0vjRfPg6wZ-_`{cC4ZA$ttfc^gJPR=Au%#HOBTIupjfR2RED*6vpq1dK&-Y!x2$) zhuuVpSs}&b_?;SV@1^L(wQTM|BAQ52wI3t(+yMRhnn1!f@#R+rr_9Q)yb_6f&X0uF z-WQPU=E(o|LydI+eA}AWs0sip8$JD6b^%D$-$4GaDFMd7s?Xz=8S`!v_UQwHbjC%r z74OkA0H&2>N{wcj%IAQyzZ&aESiF#J_;2gjkm5H@F&@5MvbkW%iVuf(wiOAS)CVj+>#8et1 zZ(PhBMkyn4mo(`v)I9_m`Y}1w9>FIbJcyjOuvZ#wmFpuUu8?dAdM;3kVJ2Sxp?@BM?(o{ImfJYc?cI@$QL;ZMni-`pKEd?9~}(j)o{-&MuF%wEG?Zv=T+p?d{ECfhz}xXs)y*icDM) zvtmA9*mnb^hSweIcnXgCb$&b|EVJ90D(Ci(8y&ZRF>k{UhuK+@T(UaT zA}DXI$Wwc72*8~WuaK~&`#Zb$M$VPe{rBS6+JGxyYxo^D%jL_A+@Uz7`!E?apSefv>;_ zOeyiJW$YIidDz9L5^@hjK*sDQ&T#xQONtmb3}8%m{W3iHFIdMm3P6`U+`zJ;NtGfV0DP6f>1O=JK3si}!wG zqR?ByX|Fr~S@=!qQtoRLyJ@*Fmc}o|x@kT+B!C2_%Uo78ChNNxQ^YDRvjE~9%VmKW zxd(wLee3jvk#B%|ZCh$H#d{I4mhDBV>o3K&yMWN%e+dpcZoLiZI@3N|%p3bD2YM`H z0Lgh?_<(i0Jp8)Q$`Ao9fYAFV)5G!ACYUIrn@H$1V;`I6QvR#I}x3|q|!2IiWHO& za`L&c(D~4L4IvXWjG`rP*3+-F{-=HwSEGLPf<|3k^aUs7es$#YFww#8LL;kMZv{w& zF8RMs(%}BqRBmfJ$Jj1b9bo3FYmcK~xHHgPwvQEaH{0WScB#)U_NYh<>F+?%HTbTV z?e;dCeXkHrm{%xWQ?Nj_ggdl8=~Q*93kN&AB)oO?Z0qlxTf@_$-a6jLA~9FA*Dh#G z`{Oz3Cdr@)w%J8=F*9tU)he zN0oYW`&X2ZJ!QnMxa?=*f2yiGQ!za4!%o#b?N1Cl(1Rl_QIXA4YOa;3#*3993*u__ z0A~w1@8p;KI0}gZMRMNxPgz*lq(+k(b1;PYN^eiAxt=m?H<$*=0(eVv6J5>JVR3$z ze^6ZfhP(UBZB`WpIYy;2*mM3!q%|)51tFhlhjej*!g+1yd>mC|pj}`Za#Vq`ZIv-Z z3icUGjuvDgz@=plS!ejuLe%cf@4%1S8eXgY>VQKE){ers6WiG8GOs4h=?ilrCi2R@22^1Nc?^-dh9)-SlVsr$IC%~qEDRhd zuZ#xOBd0gP$8Msfs>THVwpBHTFJxaX7V!@SM~^!n>&Luqd-VA?lApH$I{HiF?{wuY zs^7iq*xJ1;{vO3tUVwli*v9V}%@w&3)DT-bKIYq+%>tJXBc~gGr?l=}Zl0*6Cpp)g`(rhszHgU1(!Fq7of97F@|Mr( zsDg+YL{kw0MWuz5cORBZ!p-91w#L<+`M&47J|$sF^q@T(g8;jJ&qelB>LNP8{4P?# z&MfPReUm1{6i3Tm?8A4Aj`L#y%X~{PdIv64N?}ti`(KPWYH7>E>&6D=G3_Rlx%-Ql zLqJ_vjh(9X!fYC9y~xNXgn9P;eOybksyl98`xdQ<9fTZOs%HaMuDq^zzGnJDiOiCM zq8y{Vf!g@~N3c;wEA}gP$K1HzDCplV_0}^2&FJc)XAU zhGUKDbHveAzBiK5Ns56CG&~^Mf;`T7h)dP@@2in>Wkc|X#BPUF%8{^Ptc1y;0tnGphPttn8_VQ0-uaa&i;mYI)l4*U{o)L+5n}qRWW9f zrIgMugbv9Zea*?){qGP%_k}Dke);tfhxKjbPaT#SQY2x+kjPDk-Mdw7_@`3>~fp;Lz1qC8sO<>$v(o0EX(Ilbe(uNVz zcD~>#(ssz$eU-(Ej!f3k-3-$974MwgxGm|8YCD?7r9^CEJ=bm9lt_kH=Ci)~d#D2@ ze@Ec2-|B>o&>%YTk_-NKC}~Te4XRgoG9PGq$tCskLOd}U*$*m9Arn6Bm(aMd-iJ+*S5ISq4=ogk5p+IJ zpruf$fE-e)R8BNGj!BWPT<1V6Gk(_)7_8~5N(K)RK7)%Y&$@HFT!czFHe*#+XfmX4 za#3r+``|Nl(*sViRE(5{@CZS0;SUhi4JN%QSq>BmkX+v7onCkbBnbB~A7A4Z@DOlF z9b`NjSDq_Ed4yMh?~Iz;!1awTUgi-hYB9n4;;r_Y{t9%8?=rt85JjoYz=IXEuURT#x-wS)DPKBvg zVMJ|S)Zv6z5*;hAqBY-08AyXAL`Iox@U3UQ$FgYntGUnd0*9?!FDJ#&>lwmpG*?ex z=_1O?y}y)J(d9;v0Pk13jGvBwMHu)O#acvX~`E_7_-qyKaiGD4Rau zda#2{uHp7uwPw9$s3CZkqGxL<(Kf^Al@|{5>Pc9YnG8Dm_=52`y(aU;YHC4EoGz;W*!E5I>yhmG<6J?SeF5f9 z;D_UU)@NEwDT0?MA6#bD`bFA#A8%i|Gg+!T;ZSV3;DQ$LU3Bt9j9u@tq-2b4`5yE=c^}5^Rf-NZGsmmjI_KENzaM|55O9mtp zHDrD81S^r^`*o?PCJvBY}dzd&|-9#{PcKWDY=!3d2p6TPiT&*JL@ZigP$9^}GCpd|3Q?!njW2j^_lO zal5~_xRhw4thNQ$$8>AiytgR+&VkAX3?BWN{wjtuQps2>ec5m6fwc)zTKA3@U$T^Yo3CtCkh{iJTlG)7H{JZ{Exs?W_7s&wp&P{E>W~r`MI8PTyGCCkj;MVV3q7w5?R(sc_Wha4!8IgxS(UN__>oYSHf3 zkF6@Af#9ycCHL~h!IOR+gRo}N;i})WD5uVE!lKdgh1d!V?KZuChN*8;&qse;)1#|z zxLkcC+~8b>E6Mvbyo0_8ID+3@%Rwh-Wm1j-L+3BiAVrMWQr(T*xT0ywb;qN$jdI`T z-9Rh%8)ZQwnrefdmf-;efYqB1P%s1!S^wMuT>A(+xs$BTDWs^piftyHJHrheZJ{YyG4?#%ex> z!Re(iu?N{NXsW`3c`9(zqY_b85Z6{t=#>WMeeSp5@-+u3HQN?CtWAw*OLePP&;b7_ zoPRBN=3odxumGc_B+)7YbkTte`O`pu)VvluWG&+jq_Ge`p(;>{2rUtm(bC)$Q@0Yj z_Rynh+^*-FY_C@Vm#*%Pc4JlL!J^GT%BE9Gl@B=dDcD=AstZ%*zkN7U3FGy4+bym3 z$umJ53FHvJrGNmi9e7RmJ`-rPDr9I#2TlRK{dOO**i#6%Sgd7TCbM+~*o;XpbG@V^ zY#rq%R|2>MAG(xj)5#-OL`z4Ht$<}isg=)%)7bsixwnR-b!PuqU*&aumI#dv$oge0 z@Z!Hj)JOkEU0`~rJ?5n%!0IxT3J6}Lv-e}}*xM4I7}QmWJ#5A@H(I>dHXP!2#81&K zM-n@}OW1sK&WPu>%~oLFG=Dg$^q*qq_m^c3A^?6C1Pm#1P8shXAViWaH)zqXtg?Ag?J)!fU)fBv8Vd&j_?jmfz<(|Oa}c%5I*O@CE&%%`QvUze5NVfMSP(Y zsgzjClR~MnTXx&sZ3arzv@-&LPRC`#k^zNxR2OpN^fjSo$2V1jt(n^n(=fQ$MT150hlo= zAwnz8+{+N@!TUn`m&hjG@IBNrBF2+QCF5g>du4Hk@D0e_79+)JgyQLH&E#f;_`Pm@ z!G$rwm1F&9r84^LjFad9mO^3PIN(gEhLKDeIrtXmoFa>me7fJIy5&=!?#sV`43o`0 z*s4|ZsxIwrQ^bj5S+?i0WbE>jOhChvOa^3B^p(|UXGY<`F<0;KPeD^g0W6*Anp+9c z?;2QFhdW+2k6|re3tN^}M){05sR9-#Eq)R)aljHW;sngvSCRM}vpYs|#I1u@&tfL2 zrb!D}robb^dZNMq2@^Ms1TA#j!6EE0Il!o1-Fl!SJMMuCflHGyZ_`y8+0<9+o zf1lc`#G$~+hXpc7?;(Txw7ET|-(A%ajfpg-D=?DliHUorVJOs% zYgfx2{O{rllWzxf&mNojqesuN`rt*wxO z2oPaakV!%WY3&%MtC;9#BfKSf1jwz0EXgJ6inhe-^}G3GoBHp>MXz)@)Ry zoisyo!NuFk@cY^5JwGqshAPIuwPVZv9*~K=m7vhV$W8>t(TBV6d|ZBn@<#l+P?afG%!UwH##q3kfvDRw zH_uU?fC2sCcH}Elu5di8D4T zY!PH~poapRtPf)$82*sf_k>%&f8ccxRqInSs;9Y_8n)Pn^*z)Y%Qkc96g5GSj}o|@ zH)cpqfc3hf(!7UhX2i+G9xgrk%vqpYyHil7h9KmKX%28WcQv$n0f{ufpgyslZShx* z>EakoRSaN`OhD=|v#E;SH9;;?mU6UuSMvNawiv=YV&P?rZ#gL68-E2YsLrbG2##^t z@QQ?!MatZL4X)~k%c@~GD9u^H>C)a{e3SKl=d^KLJVyCWY-r}7OYF0`YB%p06H4AR z*uK&F8+nDY3KQBn!)r=J^B3qDp$aF{6ega5<1;2+(L|_Y1hxW{zUbVm@s*qMi^)yL zWYxB^sle;o_8-AlTi@HWR%T|Vw1uFl>zn>q0<*VSw=!q$dzHd>gKg)=r?XfUJkXr``UpK*>C&lj?|(c7z-@qv*Fq!ElU? zsA0(U-R9K*iYy7WFPT?Kk z2cfRu@B6QPWJ2aM7?PDm|Fe=18lQ?nM^V+<5dsGLfQu?%>=xI}ZFmHBB8rxj`%vVL zEd5oi;F^Y|Ng4FnA|HC{l>ZX9un)J9N3dhaS2_4Ml=%~=Jdx`AO>y4*N60CfGR}>e z-_1@ioB23(jLEOX*;;pKZfW+?;=Q^<%&D5>Z0jx`=V3`bqR<&%H5q+oQ*tniYsDk` zz+@IB&1*l(V?}kimh6k>f%`MhoX;v|u#WE&nIVp}utM>HOVs^%TI3s`7u!Y+;>d78 zY{#A$`V%J1E!h1@+?XRy{jHa%FO$5b~f4zOX?9rM7y7RJ3 zd%|Ta?u1)7E_sF?i#qIM@e}*tE@9--n4}CNBJmxb_>x!Cm89nvDp85}JWm!f1g-f%KTl2jidO=J4dQeg%L8XAU_A!H0m zP5H3;5}MFw*FS;TF7frf$-UMeWr24oe<(vBL&?R53vOOJG!5{KoI*#CF|H-ASIo+? z7z)I7iiuoWV?&4{#3qIGXGo7#ec$1@z_V0Q@&yfQ7cEqnKEy}L{2L7JG(1)!Cl zJiq@E`(IT1CNC`3S~y}zB*E80%9TL)Mg!Jx(H5PIhm^6X6>KeqY?WxjW2|h_Ej(>< z7!?bTJ1OE&aoy!05CIBnWC3Jn_J}ijLN_4Jn0JN@L^@HiSwKZRCYbB$+3NKok|EEI z44jUw>{?cE_~VpcDeHhC!>f_iY+;5#Pk1{=hMG^veFu8 zi<(VLB=0jWEfQ79u>*0Eu(ouZbbz6E2K|!ps_HNX^YF%C@XR})J)Cj4xUEMfjBo(k z6T;hoKdlxh*O_qa@COJk<<`V#>m8dWShCK%R4Ocgp z!6AlLIy#(MuP_hTNR^TT^}A4Jloq!=T0d)cP zop0v0qYJ58{O~TG^8ZX7f83f5T8IB9@TkCA{t|q_-})fX#cxqx)ViCn)?C6N%j@_v zq?dPO7g}hEu2H`Ikms&NxPyXlZ&&=@~g4XOK1gvwz& zDLH=8Z}yNrhpbFY{z3kG?m%I-*V~3mA^vJptv$tMTw&HewGC2m%zR>1>Set{hZ9Sw zsIa1zlLa}~-3N^TseEU%S*K@mt8iM*#e8&A-^T7@lVR2B`l;!21^VW)?Gk%^T8E>z z7Qd`@kA%i3KvfCX6=i=QyO>Fhk8y{HQE#Wk)oN;-q3QT1HU+0%Si!O8^@NUu1gt*|5$>5WypH1QC;n0oI|>+WkhM^#+(%5>VRP{cMDuhtTc?Od zBsv)qP$CgStCyAFgO7h9U%_=O zAi<#R2*k~w?&C9`&;K{y*Q85X-TIP87jGj@QkqaP2*HE`S`uXf@Zj1jiK_=7wR(YD zLEo2mJq9!lWFAaU{)CAT5S@U4b#sX2y77{)OH1!Z$6#uMMfjI%BNc#}L#L?DVo^6) zmbq?CL?u}w6~fVJ$JcP#iS_bh%B}yJwtFnCuZ|e106TH%D@+nFFRm3w=Rd~8;R?6o zd%d3Czf!$_$Kky80n?Q?+9cOX{TxV?jU1`rT^U{SX(Lq&NM2)ojK+fo_v2|I#E##I zl3ff%l6(zQ%EvJ6YJjhP=P_(QspkI1yI@|Om-;$aVUHWxq61n2B6q!w(vIx zaeF=u*ufV{Qk9<9N<)+sWLJTaZx9pXu8K5@_xHA;M?N!r#5c5<9k&^+rY_@TQzL1l zc?43ZIhWUdjh$(fYfsZ-<&bVtTLpC0|7LBKP`Z$Q+8Vn_&NHI6G0VU4Bb@&VrhpQV z2nBoyHQj&)SA+Wjdv=n^4e$ry|L#A+!!bs8=G=!CdT9G5*`F0c`1E1@n9a;G zL|-pqF*R>tV~d{z`&>=Or)1>Zb@et_X$;W!7y3n0({csV;Dcr-$fmzz61ejAw!7JD zLdQn~aL7r(&=Uu>gc3E185GZ-}gmS5#uu>Jl86qjzm@ z-$YY(8GrIUl~YfnYs>CzTqh_m7NA~jtij2>l+pU{c4g6XjE!Rs428lKhaRQbD>y&s zqZi4Uk433Mn`m;f)hfl^*il~Yb*<@(XJd+_jK1P|uF?;eBZ2z@-**b6rFqAUDIW_~ zRCzbpbITQv$;5<}$UY---T@qs0(!9TIP8~JM{fNwMcSLAvNFS%2r=FJbr_*W1C2df zZsO75Bn8FJUAxQfdMia(LCz+=q2=+0Vvd z+td}}k5@?ew7pg--iw2Pw7t&E&?k#p6CEQm!C;m5-WK#eqEukCy_O&uJa4E+DmuJA znUgD3m+Beu&(ZlA`DNoX-^%}ZU|wy$!SxWX4U@9`i%F? z?aTLejf|^`95b*%q*$P;0mUGR&;1}kB%v3aE^iK2uHlHI%7_rOtR@l@&reC*pRV#L zR5Zc{WLPIofUps^r2Q;rv2Z#YZmsC5n4D=hCo>vTFBm_ofYRWH`x^+UlkoYjEFaJ+L%q8Z6D=53ofEV=sYhvWw|J+epdr{8(Vv|zbx8o* z$Qx9J|9grOp;Uu{CEmdxJl*V{se-SLNiMtKi`7X%nuE>L?wpraV(tJ%wg=b{zcps< zby;PICX?B?Coyqe&scAgM;c42hMgAJ$Or5KRhqP@)^kTXfF1tv5z68$;1P%) z#-1$5eCH(8r{Brn`9L6|u|}%?HTnm@`}1=IWG$s$TChwswKr;n_jAIE2axi^1Ty)! zHIrBBqP#H30cQHH`eL7dem7XY-e{NJzGw-LL5rcHl&3^!yv zMuY_Ge$tQ(fffN!^t3udCK}zbvY&s!83N3|b${lU-@56)GX(I3H{fag8a=iWZWm7a z+x>sUO`;p{+Je}>T*5vfKb6{gl?6q>uuegYv0*Q?{g-LrQt|U4AtC&&-iN9UKO$x60++oh)5a8TJ5LTU*q&PLx z48F_+gl|0GZE#;04~K|R-=5jMIFbK9Vi?W4$?@dFnAe+nrl1c){=r&ldi&qLQC;A_ zedDnT%gWdP>E^zX6rcZpzPXbB>E>Xpd>(g%s%Z)0=Tm6w`pW8fQFo&9%3c4tG3C9d zSNFL*2`f`We1tE3H3Z$J{L7YcU0PadcP;wISL>JwAK`t(kNr}>>Ny^?JN*9L>lwhU zBH@qfv-L9(De^3`+Fl;$6i$EOgw1J_7WUNe_7E5F@%_&Sx2meP>6M+QDW39^Xm{+M)3n2S^{M{;Yp#)Ol6x>^ZeZw#2W^ ziCt!kVLu}-(BzbFGj!VO=BHWTZsQsT)E1h^<}^fwIxJSfbcwPb3DeUM?M^<8tpet1 z#B_#iJJi-*Y!u}xpp4mXC{y#z&SYQ+t7?IYTH{q|K$!qpAY7qiQR`)S%0v^#+t4ln z#i^mRI>`^L*gm#Y6_*3XsQ3Ie=A$%2I{&4#xdAr>S5#aOMB}`5uJaSEzErocX_-Y6^v4clW~plYVdH^u zQJWT|=tABp9bXl96DV*EIcws6n*Up`-D1VhM3D}2SvTEPH*KL2y;S^<-*u#AQuD2* zjFi0b{78bNh$I|DrUZB^j#p_rh$pjX;5Qys<)IMz>V&ODYqagha%M{!Whwp?gR9(c z)sTZ)tHbSZIoNY#@%xTeYRa>ts|@$h61?vXr*1tE;fCLGd~N{M4P4uO9Fi(wP&xi6 zRUT0h^PfwrfVc6x)R_of*nUhXKn|_#vt`PwI&Wec+}$=om>A&XKIUT_(t~Y`h=4)f zsEl6wi&N(Kr{!Vbd+s{ap6JsgNI?15F#t8n0d3VK^73c>NH-6BI^Er6)k97a36@TW zP{<0@G*RkvdyvRX7_WAhA>Y>W+`z>-0q4m-e5gO`EtFiWEcmOVLRw{MeVM13U4hai zCDil0XBqyAz?XmNl2f;2jJ4<7uVb}LL-MRGj`_YV?*4)wypRO(BNAniB)Q1vZ1G}e zr*IrsvEFwy3VtRnz0N2t!@t9#TT8SN>ZLzZi~Rm}LD$K6lT$q! zm)qpJ%;{_GaBk>lZ1l4~4~v7GHZaQ=JTHw3|v$rE7P`?&#pcV^UwV4#I6Nx2?$1l_V^_)J0b2qYuSJCh0C;tj>4uOj~^WS$)^s6HlphzR>JsvYOj}n^-P*f5eIzt(7BX)JyDro176t#!@m2JzH9vS+Fb4}bihyth#hN2%f|<&7(&2KEsYg0F$qzX zB<31PkEV|o%jD?<;tLu0+i&5$qKx$7E9_;43xnt^Ab5Xk*_bUOB6QztFm zA?_uCkfa4l%|sEqIIV0z_YkS<+$Q`jNra3~_K-VL!kM(l)f9utu{sU5>P5mH7?f-W zf0>mqoV(RS!UlTXYH&7R_S*`bjDCbGBsp&N)9a<#51C2eA zl$y%94Ub{8$1+h&dSv>okcC)>)nTy1?m%dkzg98v9c*!xmrxj8xoAs zMBZWtqDGN;x;-`w7l7Y9TlXCVI(v0-UT4JLDHg7Orjd<)tI26ISss$gNSf=q!-vGp zft+4Mqla&q9d9VIsa|fY>j(+MV??1W3{ryKyU+Cpa zvTatQ&pGNpFd{AbVlf04f>GxS=5LgS8fnt#Fzg1ko8=i>!pqVig$4{LFyTF9GJHsE zGgr?NV0`>{$6ycSkVItljo#%2sM;66wkLu9r~&uomA!6kRLTw0h6k!WoXUXVz}f2Q z5HL0sOb-3GG$vj_AzzpIS`VqmI=Xtton|YAfHq_UUx$75f-r1~tGp6u`NGQ^DK?N; zYvo-GRFfkmW&$%pa(a=upBx13vwT7 z^#5G4__<`BSX>Y?39cM!G#oUNA|-#*)NdM0B11hZ8P#Zj=JY-PYaXG}Ci$u0{hP>~ z&bVRR0w%b?YH*vlDW>@R*go-_c_50iY9&;T$dEh+7ADRodK;;L74G1s-rhO7*+uU3 zu})(z_>*V%nXmguId<}^7iDYWq)B=mZMQ-B#jw>>JV-8lp9INqEP>a5`@ZsEagMQabPm_?bcXsQfEunS*SIoJl`M=3z6d~7t3J|$mAsSlC?QY2Yh%6hh zvuVknopRd`E?WF|aP{DNd<;?8D`QEmtNRFq_mk+!<)PihqaH2bGCiWx zk4zb%5+^C50(TT(SCas;cGYEA1^(hPar!2LJ{N)ic=m3IUOlub`g~}#=57qK63tg6 zRT{1(c-8l5!-93$dG_r}J|QX~i{F|ZzZm5?Ua!+)atfqEi7n&j{TDf=*T>i^P@_{2 z3xkAMBQ$D=7NL%-n+L1gI0hLi61*pF0{L-N7Nqj`PS_%9ltMx`o4rEjt$FpS37F9W zRA$FhaR=LIKN3PCP2+>CIfamn7jtPH%3W$6s`)@ey^A7Kd)J&;sx4ubjZ zXh8YyYToK-GtSk(-7YqU_`KVGfM6#UEcvS1>>Z%*C2?8NUxNOL?38 zZEw-U(%_3@pqS}7QLfboO6+2*|M_TTr5aKH4yeh_@k}l z<$YU(um@|*_dk3B-k6yyls(4PgyZx!HjQrmM{DbMg311gXO?TGrETo3;tL>Jf9P2$ z_6}ZgA~iC@;vj>GCC}p81HNlCMIu78-$ZbH zZZo2WWnAn|9$lC^eMuQYOejx$wh({i?Ht5(8i5~TtH;z@<&|Id1LHQzK@Cx}<35;I z{q_V${(P{7AIdR5RhW|aT#`tJF6e8>G$G!a4b`JMoOfgYige1iS?(IE|CIcC`I+16 z2Lb{zD&iOV;5%5!Pc{d2cTKRr8BwEg-Fi#sJW7@)+Bj3AVn~=I@pSF(L5FhPUtn)} z!}IkTr{c!rQqw~o(bF?d+DVs7l2_{YIZW7ow>&BXppND5jzJ)u4Ox8W;P~#|5P~1Q z>O;B*<&5CYdKFVp_S(N|Pl&u5!IL{8{q$2=uDE^q2#aku)pds@SC_JC`{pMKq-j;z z`7C%s@^6@#Sr!xlIZfEh0V=dcLQK_7!s3sa1ONDp`nOqkDNk^~-F#Lz?g(dveDcR5 z20sC)ncxNd5ko2kcmUGyGdHA^K&%*P0773k)7n&HUQJ0yT{l`4)Q#R!5V|U=Zg@vU z-X^MUH~v{I1ltb{glJRHqCrS8;D!SmVT&cw<>bYzz$+kdPZ@hb{^q*{17Y&Es4LVP zghgv=7|jCTbELh((`W#A;7@OgGX$`4>4XBz$%HGK_VwuGRxg&WUe`ekIPrmaX_E{H z8~2$|2pf3xCI|P3$mbIQt4I85g5q1?5;!BiP>=)7eSMe^onQ4vZcSz82||Yizisk} zlNV2`8$)*?cjbKgIwT|dH-r+cUk9eq^{=kd*Et4X059VBnX6bL*Nn?GEI!S+&>sba zwLF((ITJV-R=7X00@QPt$jz+`2gB?CU`JgfAL-`@mh&91o-~_4RZOtD0plqMrid}7 zAeno|B4P5{y+Kaw0TS-5N^Vp6fqRx~wZclhe*~P1r!R;#u4;(ZTU!dMQyHD+J)Z-x zY^)wZP%ky_`L#onrM7_k01|P3$fb+(fFXsJMVQ&~&s%6ABUcgYcOt-`$m!P`YSCHw z&Mu(YXIR5M_$zxS2&eWqQr>B+&)9&CQjlzo(0Af>Ew9FBC&(P|eQClh0cdMW6PvS%8X0mn4fo6~vh!h*WvWxZi=fFBE zwfSFNwy_W@bc^O7aOh){7_=I8d05P@gUTMPP0b|Efu|dJbj~FYeBziLM;rDwYR$qz z0OH`mvNPhGn-8LCg1e91-n%f9LK~XyvKkc=Sp&E;k_@-y8N5%opPqV~y6?KTSf`IB zTe(7MN^=zBrZFfOqu%al)qbc5FE)zzVmHB zIS$i|nC>48ur7D^<>c!!q6KSZFT9w|oKa>aW_o?#cM)+P)@zrdnm2~#kw%!S;5rI} z>6R`9IkE+-Daa~rcG<}lpZDD7`%ZB zA`kdqQEBY{%Fa}{+{wk0w+P}tbVZQ2lv?*@*YS1$8N{M6rQMpw$#SBh+t*5T;n_)2 z?fe^e-Wm($gRfc4(*`j(h(ohH5{B_9BZtme+?L$jARklDS_k=hliRk-I)onWUDNTD zhHy8EV=RSlq&m0~smMPH@p=HqRIMmh>r^wHd{4uOoakH|1*GUNt>X8@xR`uQ5}XODzwnww97L28qCl zDAKmWUia|4uor5t$6Yn|TSR_B66uQ)!049@c3f823kqYyst@{tciVg#BBr$P{!vU` zG)>Z2Hrw%b)~Xxby!J5l&i;ndzV*}ux}&@%Rp~#f&z&HjM?eu(AWzvXm=@i{@asSf zGxe)!R0djrSEZ|h&uo6hJ5HI?ttCVloV&do>|=|(@o4LGldvKBMsaqEzp+ z&3)crIGfSm*rM>R$8>H2im>9wy7yq`PND6gc}8ULNz4;bxEI6_)yO=g$dt;OR7lZu zy3*BnY#X9CwKh%3wF^cC8F=amL0;jy+On4n`IyiUs`Uvc6!eZ9&_RPyxY($iC#qr> zt7t~=o08^CClS5+%M}i@e2tbr-5H#PG~$DH^Iy&B zY^0wG$^mp2?iT-cvS&OttIlG=v+8qo>FGAW*IaMjV#b4{y2Fm>&Z$(p@48*8yCjP6fIqC38C6N2or@pM+=FkfZYJRB z!b2%)S}J@_E_3OhOEAq}HhyVgfOW6D8-5N1bs_?V53ctYH&e&Stpy%ksXj*u^gX<( z{wcZ`?bq48tKgx{VmCTwv*N9zqJ!Ku!w2}LH`&7g>;ZsxiiU~>g`Lgj zL48>*2UM%&&$gD_H9<0x9dmVw)^_zKswx=GDcPnaIbFm%yE7K_Lg*qIo5s}@xbrm(&Jb&6p0?z z>1`*icqv$@#LMe4mWQ=_nA*?m1+8Sv!WO~+!h+$`y0U)lar&TigL_V~>T+NM32 zy#S1Mgc=C`4ghr^dR>vl^J$6YSM*#;qk6bomYEslI!+jzrba~TpQbk4(cezOjgxg37q&nZJ_ zDO_%uZ5S;zU_#KGXDX;mCeq|Si~GZoX}g_)sOwP?e%2-0rr-|n`3z%y6SUrM959iW z8Hehs+KP+vpD+Q&#!hEZf5|qp209#Dil#fdMKs}GK=p&@oV|S(_4Qk3^sT&j_(|s? z)Yh^qFd}}7dgxi7j{AUUq^=Bgpw!=gjynJFGYzK~soT*9_cZ!U31LI*l!@blxo$KN zq^$`1_$sTM&*;p7`nMvt|JwW#x`c5p=RD~7H!;$!SJ)qoySrrU0GEvZHHKdVmv z0mpNC{!SZI5d`oA6Lln=u6SJV@|M5+#fpA*OArn!$7ICIvk+EdB`SOO#_em@Qu5l2 z*Z3tCMNh``sAc|Ghp2}^41JtLNdt)u+%knUsWhwu21CeGPWl=I7Xasb`c&hTOE~f- zUy1GhcrQW?7y&)go$Rlug0UxXD|Z_>71wa}b0z5dQuYB7$yGh%t3ohihftT%d>0}P za<~Qbx$W@-(2jbI2j^zD38b>>{S^~FMLsr?Cp!WMv|8NJ!?13El#jx-Z&S@UaPY7X zKP7T0IT0bkrBfS~@=R94kwh0kez?UvwOWfgk(;cNLTFR|(DT}ag)IS3v=C^UZc?#K z-hQ!6*@g@}xfch4lW^+#82a^bdzU3$s@pQO%caNVgCx?zv|w^yHJA1}4($e*0{kK1)8#)WMAkRq$+<i;pxGb(1 zRZ@X_#b!uqhYkvolxy3QBBwPkTa6fY8u2^@%k1lP4HrJP!~bZpvigHJo~vJtY=1-G z+EOuN9E~clFn>7d{Dizl@%1Z({iR>miXv?&PNl;B5DNHzz%GQ_Quvy=|_xAH@Jxgphq`qQ})C`d)1|# z<>e8>ZoFamR}aY3Zo_(M`m+2tq)6iCiSrX4)q7{kwA7ZO4w=wUTbo`h9xQVUi|E<9W?ur* zN2mmN3>$;rI-xq6EL#U1EQ?0#2%Kh9Z!Ph2^rBbG_wHGjZH0Uxvv!^aj^?vyl$O`5 zV^8tm#n2WvKcnUCTIzFLN}lOM;`Y5guN}@UB2R%CSt3Q(sLi`m8~N+K^RC+y@Vu33 zj{0JMfcQW@M6M)GU!vg^mS@3o-U{di@Mr~6PyI_$9i)oHGgR2|OoN5M6v5gpgnZ;i|rT89`Em0_h2uCHC3Jwy{_>gOGmCQCGw>LUBzfX}g> zNs?y@05S4S817*=&eoHlF$6yMec4IhZ@SchI?#HRTtt*|q|~9r^(^FswcXS;hg50) zl40p&dgzX1xw_Py}5?RJgO|59JT%%ZV8W*@F`1y$M-?yNKyaHBj{(X3=7aKS78~5pjDTls7gf z&jEISCDAM+RFE0^8p|Fr;bni7qVbYO{7TprvMseZ+Wys&&3aXZz7#f-R`YP9cw4ID zW2KAWBApPAy>Ou=U`AMw5iDVTN}y!yh2~$hnDg|ZtSWY_aAK~)!44*Ff5MJ`WRrcaBrMDQ`uy^f*jZuk}SwK z)V`zBa4#9y;2WO*MRii-FVwPEB9WDTAT2zy2ws(F8nDILT?2iOobh5TfM8)kgdYVq zm`JPiV`_nXiYcP08;2B~7K$x3=SmCH_sJQJGL$L(32MP4=07S#gL=UMrsCqGHXZq{ z4tu{jStiI`spYI0Pwr27F2jTOH04;fJB7rQcdTTSRLN-WEvK{ue4@V$3AnA%VT5l)6LhQwN{*j2HF?eCpERSaSm()n-rXb8#{niimKYAWUSPw$ zek-dLu^mPy(!i#jH4(kIKa`L`^FwQT{Ri%yX5u$b{G5Ec92&_vD?D^o!Jm1i+xp^s zFmT_56bEe&G?zyA?lg0odoq8lQWQuCKuXFc6k2n&&d*{1ua|0}wvBsgC_ggHzw8fO z;|@cw`mj zI=Kg{)3s^n5?ce_`&`b56BS)Ja|V_0-M!S|azc82)NGVb7dn{iijbw%I~6yf&yi&f zRi%Dkx792u?M;&2uBKr*y8R56@QnB~j;ySR-w(OLyp=Q~}DlImpbTZZm_ zvErl_b}^ObOsSPDQYi11i&qQ((l8jL)|{jQaYH_6a|vRUZHEfOIN1$&9Bp*9$|O0M zkZeJ%!vx!!;`<&`C+%2Ea$qEoA5)S(E^Ait9Mw!F8YL3wdWki>HW}H>O1X!?E?Kx` z)UtmX;I2-bdqgy@Mzg#m+Ea3FsXRi=ngd54`&Y$#>Rq#`h=B6t(@@~))kH9Jw^R}Oq+3FRf31R7eJLS1w1gtaTRh5?7Z3%=t7eK-%R;L@YoLH2o>b&;o-l7_ zP8icUiPb%_Z${g#K))GRRJ4m+FrM#KHA4MJ7(V)lY=23YzfR5G(jrAfVwHOw&xV8O zj=PcEh)mLWcsB-Rh+Dd^2vLJFuO{OodrLOgfMqA_bGoIZ<2!679n$hF@Fwe&LBq(C zdK!F#(!LkU=g;AAI(rw<=h?h<`A`~eo#MXL;6jlg2TlU8R&hcm*JWx>n8W3PBf0`Z z?83YCAq{H-!i_ex!+qAu|dahrzOiOh_1ck+qA^#>>tMGIZc)`_^ny?N^s|~9HB$Eyl*vHpm zA1@KsRChoETM zD@%>8_LeWPij>M6iLcuAC|hINnP4$e@?A{uw|45%gtD)1fA9L5SSTK1a!j5ukvEiFrubt#Kh3Fk;6C zb1RT@`-@nQ_wowaH)%JT{zFS`B~uC5(*}YK*j(wdajv~U(CVm06#`lCHbTL3 zIYV7kXNq3dkj5GB*R8O)Nd7~e!}I1Q)bKC$VKPNdUPNidKeXatn(87oABzY6>&NPk z0!5S>v%|1$%!ouU(jDv><@~FR}z%KUuO4tCPY?zyZP;@;voXpb705gt9Sj^zT+mz)qOO5K!(XDe|gO3tEd4(F-=7 zExrVp*Zxtr@QGa;R)MDJP{NKuW2M^5M2QLa-d9i(Udxj62)s*m*0P9*4gwV0vCU2v zD(&PKol`sem9>Ppy3MRNidSBsNwPZj-Y2^x^2xQC9II7v!cS3EK?FzQUq>{+8%`?0 z%EENg(HKt zxP2U!F~K!UO^%lZcQ4c8F$RfHdT|@4Zj}WdsI1yScs1ti()p9MOEHogy4Jkr3`k;d ziKlEq)~a(oeu?b_8I+cjCAE;sBb1Qxz;PVLFNetnjdL#ONYW7J1I4U>H}{Eoj<;(% zq0~}OV%>znc+*B4&MI3q4O*%OT!E9E>AS|w(Ha@1LD6olHj=Wn6Q;R4h;EH`WDRwxHH^XGOQ<$_zJswENac@hET4 zR>S6&8YJ&xHqqT-#xRha0}D3y%lS``f29W6~@g5)nH<{k`CG`R<)$rRLNUA=JmmhWpH=eX14 zKoz0XGnYnR!~n@IKieNTn;LTUn6G_}wKV^a8Wo5#>I9GQIITmS5ZNKqr%S|J5aO@QIh@j<)i|%6z>4*1BO` zVF)DP7kZTJy25lo*@>Z9#{22ize=Wz!D&a%^YWy!OS6n~U=a6LSGBvbo*F*PaVe== z*;4h_ql{ClU@pWv>3=lJz&Fx6cbkRPwGo;p5{6vJ@yQ9An_XY;162)UeCwPOiVWu2IGqt!8-DZ@;gu>9qWtWfxib&Pt~V{2yrR>uL{4{}rRLrACRe7bEwy&?!wXRx%K7IN8E^7-PGj$}qphHs` zq8d5_qZUy?jL>nP??nx<84`~OCs|NpK-xkGSn}RASAniiq`?Q+t|2zlV=fK|C?lf8 zd8C>pW@udN8~Tj)e!-F_v>Hk_Qi%6i3fM*RSlkC#j+s)%Y|+s2AIx`>mAWZBhyo^e zneiK|;l+iHzc63=`6K!;=J@YdHzFIcu$6c70l3v&&}A!mCHhf`^!X=TB%+QdYgIF< z_o9ymz!M<=Vb~hJeM05j^r|VJI8xA0nKVBOwaHhiGgw8T@lLPvs9Q-srnQXj46w)*4k;zP+QnEGY!J51-3V$z&Vpc40foY8Q>f&v!L5dqyAyK=N7dpumbc}t|ZKuk;MGF2SR71EDaVx z5gM7;v+U4p&hfJxh z0`@JJ2YWv9dNurhChX2MlZ|6E*Xc)52_8`qH~|_?^DFB;)-mcv`5pE;auL{F$7 z0D-8ev96u9%0W&OOK%&?+xMIskxm+MVt~j4vp?}!=57VDlz!7=d}wFW7afd-ejHVm zNTK^2M1`7ASe~Gs1`V`WUK2@w)8X8!*mK7|$eg~DR=|vIUA-yihDBzvtI$9P_@jrj zggnU3?_SQ`v7RqB&i!UIG7pl!RvVyF8XD>*N^)?Sv32}b3tTBq%3 zuTi!ti62y8K<>lefW`XL-(>R6IBv3wQ**vh(Z?Q03?rB~!W`HPJpp{@(05DPvrS+L zD5B6#DKRW-_8WNdJXI9x%Yd-x)x)?wb#tq>CJ7L-P=;-SkYWav#VSn^p*Tx_E{@Z{ z{Xj9={f%SU#ZtCbNf_n3>fsR%PF+#FJuF~bE_fg|!a=umNt8VDLfKn!>kceJ5cmmz z$D)+vctEABVvSFibI}@9dds|v5-KfrNSHuS?}nhc8iZg>xYh!>(`5X_YK`E+!6Np2c)URe}Sqzn9lHTbdGRl!))~2=qh%8414@*rk;~n!@GJy z=bli6f5iG7gT0_K*7SrPwtF~SOP0C=E8o$Il!U(O^2d2%W;Oy9Wf=12ztv$3Hl3zkL5Qibf&;|Q+!`6BI2{Y~d z;9ocLfSZs3?%`HrT!_9}b4E-qEixi?ieOaCVhOULSX)ye1*mbsfc9OUvdt<%8&N3G z;C$L&Gh5BKr!q9m=|`QO)K_Q7sEaD?oQ@T;7}KVU2LC(TvU9OLVu!KF2>PRg_3QvSWYQ-^q4Ir9ST1TCrj48KGwxd1ZB_#C$i97oVS z556<|okp3_k#a^Akrg6P0R}qg?%8gdUyhD)7KOfYJ)R5e8T%F8r~$U3sgHG34bfI! z!(tp~wzr8Ug0be`H{F_?+ST&Y2coQ?ltz(82^2x#kYjb?BVm+0R9v}WPDu`_^Q_jZ z_kZ~EVS3wdmaNH?8kKV5eT3zhygd(%Kz|uDs8rnw1M;Gj@G>bMB2R1(Uk8}Y`0)((#5 z(F0IHTwMkUD5E7AC-O)Va+D2QsXf~VsAM#DEp)NI;&&V%ynzV9cUtWtqay*Y(?-jI ze!nT=c?J2b+AB;jLsotXMUScbyW%IF^qIjT$FXIh!wog>3Q%b{ zKw%+pLu4SB_p{q7i$jfpF34X&ow~iPS#R7d@4eTFuMj1B6rHTKB7VYb7{p~>t~k}$ zU0SGc@JfeKYAykZhL+Y>LCqp&@SFIV=>=JRP6YW~Q3bhw~ z7FBO|djmfZGsgT&AlM5sqwz10aGob=Oy?9ROr2^p;!An*T%Mh)#-Cs?Rh=T{(X1$q zJ}(LF4XSvAq_Oq%B~z(H^BArVEeh<-s9SYVO!->9H!BE40hqDiVjRe-O;zWRjmao1 zh)d6mr{JH+nf$OM$U63LEn11^)I#F*QQ|aI>*Rd&<})0`RvAlW&}wW>d= zars8EJqdS0oeDiuKOy$YHGYo1XEs}Z6GDhWdJQ*`(*kSHY%PV(iVD$*WtP-Rk|cf$ zG892}4^L+o_##^BkU{1w0$1hjD|I-se%L+_LmaE?VE$hKIa-0s2k<^YIl0tVaT}Yb za6MYyEYgC?@(C-3y%@e8$cV9j8&JFNH?A{!avTLQ>Ve>+EN}^M24%g1q_gAmt)V{^?;RH+vSUA^$VC z;qR8$YS5?k*V^HR29ROgFGb4qzubf`ap+l>Zh3xPv9nTMDGMOEM{}i1wt}@|&P>iH z?LvA~i+VP@OLrIl;&sUL(HQ!e~r= ztsc@FZ}p8rW);_2UMkQ8)EYb4j>kdjdE_FZx6 zGlx#%l~BXpvkc;=(6$f7JKPsw zcc2v(KKq*zFvn5(DE;tNhl0QJ+o?z=-ge4hyzy9{udsp9&+u>c1&27NhV#1fBulMQ zO4YjiZQA18iTUkRl%eZLdY5#f3^V^%3!~tX!&+?}k^UcHOUeQOLD!v0SYVP7GtydkI66 zDM-XBKxLEFyCUP?FykG~dII*x4G zNXuv}iJs|3(lVA!)F$ZA%xaC=Rw92W&t;DpvPh9A4^Gl7MKjj>3sPJ2(#OdC!UO7L zMm)zi+4MI1hYiRBBvwVgyiOv+7RjJ@<75BU>gnP(EjTxGn6Dm&wYMP0<*H}-rMBlTNI!f(Mq z)%Pz-v&u;!7Y(Q&MS159JXeLjS$|wbYzp<;kZFwW{e})V{XM-jjP3ypJ}8ELNnOZ? zQj|{NX?JpbX*1y74Q#+p5Zwnhx38+o>iu0>kP=Ju?;h+wou9PbAFp@Mbsr|(A90Sa z>j9~8)6wV8yjSmXwiSuLTs(iZAqBt|7l&_Sl-VJ>e=RUV@%Tk%i!`ujIMM`*)BDQ5 zDkoT1(D;o7z7|)~M`ra98<^NkYe^^Bq)05r4a#$th*$>gy4tW0XqVjjsEes0q4oR} z)p6A3;TR1{LVJPh>|+L6=GcomE?i$L)XBz=KY>vM;E~s~RIBhWt&$#~uL*1#HISmw&k^GWz zjGlK*?cs5&YK^OIHlW~cSXi9m-*IW+1v5J{HM<#U^%joiF3$)X1aebTVM3tfI zj*@j#ObqqV8`lK%k(|YAE_;hVysjB}Svoj7oR>dy<9kD! zdr7~HJ~LkJ!L-E~{{lJBT5k>=&VR}6f~r7OCE>&RyyGkJY-*DcoqPvZa)%8YTiB}~ z^BAYL z)qfpbofqL!Ttpzy)HlRyWDI-06ly}B22EfWpXNNz#yHYAU)O3J+)AKT*$+&5U94Cy z(*i-H1y5pl3M_(iL4lR$TyBl+S(BUAV|S03NSnWTvubm(<*yArw1m~G-`Ro7a7lzU z5HuU3BfS1w0m+p$^s=`%xXwLpeUv=24qzr=mf?PC&QowVDz$h;fvpX!O9<$!MAk=}wM= zR1nuNW5WxhOrlQ2lsXWr1BU87b0A+92j^ZBcuYl?bH!7kMPHs+$@?LCYP%UR+qx{u^G*mq`3bC8b?4WXlp%8|UM5Gh<9BuKfgt0iKcxUi9W^&8mf zj)oJ;1t)H3kl+1^|2F)9xrcWU_iq{W7Q!hrASyZp3^lsk^X85Px%cLY;u?ylLCFhOi?)0?pD%!3!Yl(dTxEjLJ^Is z3JK$g(>$`oCp6YZVG(^U+fP5!&#EhP7(EQHiX-6DGW|D;t!!%O-4ePXl)Th4km|Te zJ5^1{ppe};J%l*Lb>>(-iLvxF>{-*k{yh!QQ6Z|LzK<5G!D)CH{%8=MGBAB{rps;Z zAI;4+<){+ZOGNSx`6$e=0=c!{1A2TEZ!T<_W9()yUcF3uh7jbxp#96|2NH+zZTM%2 zhgQobc5N=YU;8hUWd*r#)wn+4{nZqy8@o#v7aMjN=*r6>Jgv%FXo6t}&Ax9~S*#et zlEiz!98mBJw36+|L%oL?TDd`DAR!}vVqo9aG<3|ZZkzByss?Vt=hhfPk<@qpW6}}{ zf{^imqijHfp3=CK6QPQA&2JMF1U_`rwtB%fkd?UT46ma;ZEylcGH7j5h*47{C43Vuwcd@Fps;uk$X7_=5l6CM*b-qOH`&B{9nsoYTN=eA|T!ND*NrO#L5ztCFfE&_+3&26O?qw zM^n-SaWuWVjajQqGzX;_O{f#quP4|69jJoL#xZFj8}mX}=;QYLWI@FOwTIK{X?wdM z(Q6XH@u@@68BpZ>#w4CcenFDM`M(o#K*Q+{Y8uU1VN^jj>-bO9X_&Bn`WrsQ9KD5m z_{D5M!L`jCyp?1G9YKgR;S&|g$4=M=+E}3YEI9!&y{ZkR3Q)99L_;To7+KFHQPP^{ zY=BMetzRipCI@wbS4#GaHU|gbI+5rpEJQ032~o5*=GSC(~$DTD?2L1YK$OXD~=$rJgq)$7$D}u1 z02-VUih9Q%c&U%T(-!b8ljlWM(K^0qKLG>ZgR^fWN~<|V*+GVFe-cA_sQ*>ob{ztR zl^eFnNIaU#V3@X3fgQZim#jq@HWaGh3f~Ih1q2TrjTX^X!QT`_?rJ=nPo_HAhq}4- z4S^YfRvSZEY`pIQ*5LmTs z?){h^5l@h$BvXJ6Iejp5hMlBEv0PPs=2iH<@ZVl}py}%Bm;+#lLa8}W%<22VlVa`V0yq$tri zkDu7QW+#1Lgv$eZ3%=?vPcGQ>!~GO?RpC;Ne_GaW1qWyU0w6{MxTTZGU5W|qCr}=0 zzi%hYh2XwlbbC20ff;)RB6 zUg>UTk)apRgD6`;qjJ~3cxLzIO1H&S6x{1jmK8_y%@QDJ`tX??=3E-~pY!YbWc)`H z+8E|{sshRu_|A6`cgVl0x9eD{7Y|#+a7<&QEe?t((3x$=T^;#^czE~N$x>$GBun}p@cBTwIY~f4f+qpOaMQ=~BV7RyqsbQ0K(nDX zgietJF+&!XBUBOOG(95#M#|U%7&S9B?QLk%1eGt1hjS?dD{_OWcoVGI0Qo2{PpcjA zq{t7(5ozH3*u6PU-<59;KV#k@x#PlAQ{55jX|I)&v@Kjbj++= zqWlj5dUwGS7M5QYhNM0+Rsj#(?aTu&C0K@*iALxsx}Z^8wCA5FW881Zhtr#4{0hV- zT(^B19)a-2(HN(Ak0-vNkFI7QrgKhEgFd8bvER))Yc^K!fm~iwFlE!22(WHb~w{HQ~xP>hBS+cZERH zAXtb-nQatpVJ#p>9o@u#Q3TDHz-gDHGZZPQtpWy@vsP@r|*el ze_yt2#RX&9V^qv+vCqxPd95aEb~g8bG(dKY()a;-_2EUGO;&GqZi>sN&0v4h5i0q^ zVU7bJ#2>h>;;oKmO-|;ITl9Qh`urgO;-s4B2pNdk8aDn59^S)UuIDJZ%mQ_@ME(}4 zn~)`~Vs!)e&VHnyX!J08;_EY2dRDvIGNR#X|ygo z!DNfez%gi8D}PLu#R&IbOt_5|nHzskP|gz=i(hF4`(n_b`J+Fm?7c<)e?Z|(_YS8PnK=8Jy zjrcKyvPlpG;|9Cc;>^dzBrqa7WxgY^$33yX)a-ro7(UO$_ls6dra?~j7m{JS@WZ2R z(Y{s*KLoA4&vcm)n1@Tyw0Jh=pF)8~d|Qdg~7-s<`Ajw&q|xQcpA-3eg`5 z8mK6uw&E#={EbG~e+V?Gf9OBCWR2F_Hzv73eOrbgJ7vOe$dzXxScJsOzp?^JPK~YU zvWyxJGX<8ozK55$)!EwUl2w;Eo-eIqTx7=kGqIVDh+cIu>rMVBT-|Pd3G8M0C$xt4 zHzg4P$P^`b*Xs%N^A9@ z9?Bbl60@uh*-$7S^ykkm#GutQ;gmubw;i9R_`b*zDoh^bKO#sPJ|9zy_zYc!iHMXm zK}=jv=DwAeK%gs9Vb&2*LAGXyt8g>Ug`D%v2w@y7KF#dyslEFCL0FGeZ<0gK3h~aj zx{3wyT|@Yo<4}kV^0LUE!J_KhCb91vSNm<(25r-(4!{`lhI%Y46Fg0lp}|U|gOMa9 z$V%-AcxLBh9VT}UAqO-jln%g$0C(%0*J-!<)qZed@&{c#pZZ0^6oj=QO^pK7!T0US zTFmqFi#>BS**)83Q{cfJh;E6RxB64jW5XlBo9JPeB3S1KOWOd0zEt|{_KWdhMq?Am zU`TW)P(>OP{U6Zd8>Rz!$Oh>Y8BvcWg?bkgfiB5dkxKNBdTF4G)_-j7r0nqtEmnJ# zrY}uqA@J51b8}FQyO>A+S_6UG6fQ+cF(t49ArZ~&FZr8iy$tTKXZGAXCypF0=DBKl z@)|xy^-GYdfvDfp+floL(ss4COP~isUanN|<+($myMSK>X^5!m{z+VvmxBX6G{FcmZvKT+hnVM~GH4)PmecqUWRY;eqdS z48_*fquKSewbEr1EniQ~Ah;;x3ypnup*A_Hct1)}qp2~C65i^Ov$L9jFf>1F_{Ayc zvCkhc8!eM^`|zDJXQ}WTQG&4HiPK)ucOrfekY)J8h&a${04x3jB zfQOFz#s5TFUsSV;mc@(%$MqW3i&h~q%}XVBm&E5wg_q@*A{sU9OZW=u=u0BHckN9m z96J_e?rh_8tZ<=8-a z#Sxx#-0Xzk0W(DFQ#vD>`G1Y;76X1vfEv1v)TV-w_`4Jj@ z5Xi4FhvUbD@`ad=aQ?#_USSl00#a>>tsw-4XWjOBn1uM|kHUvT_OX%oUwJUjk8Mkzx zYERMymq}OgYm~qds_o|R*yXie!HW?=-v%|vl(#3;EKbm9QN4;F?D9;ui(L>h;AZ8+ zYcF)J8)pD-V-5T_s12*Y=_8wAVo`{yD%678$_rCv&qR8oECo*^dj!vmQY!57UX-CN z&aXY8FMM=N@2|N>Z5gUq%+WiB-q@KeQ1rQ^8$ z0eilx>|ZWVaf*0jQH5bum^s96Z_FVm38Z@-v5D)Fg5J>a*8Dh(sAmh>Sx9?gsftL3 z4~>#~%>u;$!hwqsVr;Hf5ti4+5Nff1A>_*|_yCA2c|iJ@33)*7u$T#33W`z9vig-$ zdQA6PN2FF1nHA#Iw|`81QviCDcD!(KIIS+J3i4q21rAX2Xb!@FPYlS8?;dYUlXpl* zf_rVvKGQGpCIm(X5YA|c+Je1nZ^_l|4UEAeGDLrYNEzUlH{u!pF~SuAsj-^v;f5N4 zkUgG_Ar@J0m+Kl^w-2c<9({fdX$J9VOK)4(!0{tw*$GIh0g5hMF_U}hCtzmOPLCz6 z&?qhnA3YIt-CVMQbx05lueEK}8h22fp;U3<3|K*|mhPWCrn2Er%)S$U2hJgu+RS61n>^{@)WJ^-%m#(o+ne;IZ2ul(Cy6@@g0I)BOLM z2*H;yZ~vUq2Vz<2Arvlf4jkupyI+o(d}LSOVURZ*GqO|>LQ64IhKWej2OzbA%%_?SaB0~04whDFB~tCe-*a^ z>3Ky7C;(2!`Ks3e;mQCF+4lMnWhr0kqtmlF$j#EGRh&(gdlZ@Cs$BpMn`A~IYf5Z2 zXcZX{StdpTM~Fy&!3EtoNS1dd&G%aQ;FZy8pqs;TUCZ{3jutWUZa}+Q7A4>p_h`xF zd=jTNFA5JPmm&f*pQtMq*KoDdOv@!m3SJl9FvQxxV&NC=?a0l$WQVt1Ebf|cJj!^D z?tdgE{~FNYc+Vm<1iNjvxOTG5+uRicyQ4;v1BZDRlIa?e-@>?U&Toc1i`O#9-2Y!+ z-vD0OvTYrs~!qp-`(fFckemxy?=dQcCvSB>{)BB zT5}aM%Jvpzk zKzf{6Vz?DQoJ)sJ=Shzesl7~E`q4tH3H5cX%SPXk;uFBA?Q+zx){GSlp~8j6V=ycg z>gscTP%@M%{lHH4cai3URMll|Y=$ru(U1CZFj%B|$0}u%?~66HmQ@aT{`%)DJ|p<_ zeh)qG4m4+T#8FSHR>E!TrGY>T(ISsx;t>=`G3%Q4x#`CE;U4=d^lX+fCwO&f+ju`J zbU_cmM2M1@MAGS4m&R3B(La;;6|HS`fO=*HIHL5XI3L;asUsof_1r;9+p3|xrUTZ>4@Sq?1hMOv~e=9(P$_+^fwu+Ay*uIqq z8~$=2ZrFdHoz8>Q88qAmmHBfWu-s{c(G2U|mFz3EvX*o?HEU?S-XvdQebUdr!X-CV z%1&*i)hlC8&lvnTq84~^_V#;aak5DLY>JpbhmP)YAJRbkm5u^|U6nJZ{RcxHrm^nl z!xE^Q?sxFoXNQ{oOhfvK*aLm#2)pan>D_I_D$3qVRNrtX1*eeH+C61!+!WJvJTrAS zx-?0^9OEWBtW^8((IlpLQANYU!+^fO!%L zAb!#+&LYIwJ+?kQ|AYwN*frZ4GUd4(V~Gz%j+kUBh%h&cA2RB;k34{c@O)v5 zk-?7c$5t|;0B2&_B7L*^9OWP8U}YAP+5hX5PZohn5ih^e^pSBO{oI^+BQ0GVm)|(} zW_2qv0EZDL`q3oYyRylwxGu_nN2o4F(f0A28_yrWCz`|sBC$V z4+C38C_V}e2{lKyR6Sq;rB?JIDnJ2nA%eB2dpkSCo)PKvsSk1-LAN9OR7DfO{ARcF z93`-CNHxfH=FzAg7SnKpflElB^5b zv5le4aLp-(RAs*o9V)+6>Kb1ppaLgZ89gfaAGm}6LMM>8ny-=yyc3H4#8%;z!xbQC)J+czPkGxEFvkrP z^X1-FK{?IJlHn*2Z4`gcxV16DW_D>_pxS;;?2NXxniColYgE`QvCt}-YaX}E&qDLs zXjCW@f}x#`#aQ?rQ9JO54JixX>PC3IyG=YOLUF(W1jf1GNHC(HKusB6=jX>*+6fbRlre4wuPHs2n3 zWW_>dp_n6A#o0AA=6Lf{iSQ$5%Hd$+{p;@2a`uG~!BMIzUP&eAW=y)O+Pjg=7n&Fu z&uXu-A=qy*@tC+_!FC&g`BJ_3i;H6IjDOv~Q?SX@lM2M#0CrG@u$&wCYkf*wI(^7D z$5D_LN{KRydj3SQ(rcjte&>V5!_!io@ogHLEi&TyWWK-cN&79tVVG~+T>B9^f2+S% z0g7Kj%VQLjPVzE4UuO3#q>nx3(W(YJuX7$Fd5(foSRj56jGy=dn;{bl`Tg zsw#GICxDIdbf1+`7CT= z8yk4puUD_gRFaErd^r{oi`EsBjHvipe()erLQ#XzT|k9qa}dedGRzX?7K>_?Bkf*a zDb3C`i;j=@MtAemIJjFQ3}>14uqUi~QAed|Hg9Uxtxy1Syer|rJ}-M%kw83PBnBjz z3WcNI(1bq)9d>=*>LS0+MV+V)yV&5S8^HSU{mV$76kx{^!t(K>wtme*ur~p!{D?CD z3ag;idZECBNvY+h&3idjl%4{sYMq@S51${WkK5y22R5bR@E?S82+^l!{WkS*ga0{F zaqsk|oXhS+0RfUHbvGJ`A`m2_hgYg}rA$A0ccx+!&?oT=FY)q9Ozp-zyBwb-PA7S@ z@-i4fN5pvh7r}3=nx3DmzB^evGPnHk`>6rfjqT2B$Yk3)lUI|USvx=5FW-cu)7b@T zD7NLq2;^g@`g^Y{oawBDrt3evxOpJQ$hYl($WwDx)0HD*zcl-hxDciUE)dkwk)_Ig zG)=UPO`9Bmc-LdX3gxjocK6V4>Ep$WyDz%gx9{@S^=-knO$1eWU=#0hxprmxJ~7kL z`0})V02ox$^39{{uZLcZjju!vdF{Kg*;0R}s{JeBg%5tKwi%rUN5?B{7uF$xW-HOv z_@!KTS5g`#P5Nqmn55kxp=j&5{m!SgwoSM5rhuc%ibj9v8&D`B=>XCh$QE$i_6(UO zt%Zp(PD|OWaG!yMa0S?jG?V#Mm82;#)yS9GJLP7qTh)%0NI9!dw#JSO1BRL3B7Kiy z9!%~{@!`$jzk&gc%7v$_HAgx+kR7|HYeZ`F|CTZ@$Wt>wyy=U2TK}~iU3Yp=sCgf* zg$mt<4@M)!yXYKvn&-~@o0NDJbP$Qyi-9Ishs9w;#E@#vA1jRG?eK~Q-mHvc(6PVa z9N6)iS#Hlcp$`{AfAY^ z5;vK+^nfK;hFk(C*~+k1#obk7X>=1}JwjA7s%99ttrDSP7)?-A%Nz>|0JOOhi)+w9>ZfQ}4GT2Sx}&=0QCLVF zJEuOYp$&QLy)fRXkIplpSD4qjr@N0u>>n~pKJ7ClK5BfS$hkD2i^!+B`2i|~?oo48 zE5z(Mx^*Ef=4Mgy&H$zWXUoc3KGE{il=?wykLNY74x`^%lkvO53nRm$kgX3}ouI0> zmU*)t3L~`qukv1y=gc}1OsM*KxWj-vE;P@)>+t02Zi0#^=;9viW;Xr$6JR#JkUP|y zvCz8qfCdcODUHeW2X!Q4%4wr6S;B}AYcFg8MFh))f_A5|3$S=%%^ApAu^CM)RO288 zJl=zwIvPR{vgVct;IZ!S!>824Rgx=8kAC5Cn9Te;P&`72pZm0_yW6$1v;+L$rK5mZ z^s6u`@TD_JJ|BS7gb49*QnV`h;?OwO4))FGq^)=KDm6uEjn=#xTh#rPbZO=SgZ&U4 z&sZO;R9|R2ciacan*)1fEXKz+evnM_aVhuMCyshXxjdYEu4Z{hGjz?;hTk*%7?$QX z`MTvnOzjd@Of;_o64+T}$hUls1D34@a^Kz5SN2>Lf4yl)3c8!^tWRc^P)T4ra>yl9gzFQYk%22sW$0o+1Ta2p0zB z03RVcXA9Tzz}e4;ut}m*kL} zprcAj4l1cWI3`FLD7#utC#D41KL}0@2rA-o%_b6m602BYwwYU?YC?H#={|nNX7BO{#P!oAj1Uj>be&kG6CznJlmyhj6dijO@;6%spEg*TbzFr#2 zBHeu}^-mg=#QcThw2n_iTFTS&r(Q))Cx{EI<8?0t{|T560hGH^L^z-2M>KGymA7%c z=ZF~lx^R+R%(!c4De%4^bK%H*X0nvC83iZW&=wgQ!%nat2F|aXq%9tl`#}`h`Y1w9 zzV859OkzNDoBUpiM==~?HVtDaxS+snj9rI-3}7#j3~x#B3t7-?N^9{?LAje~U#57O z5}!0wxPZ4%l}gC|HWX=A5oG|JP;smuO*CwzuAyrY81^h}Z%iuCDF_EnU!g7&hH&lq3!{V| z^F2NyU0?##7U3P}k(FE}P$JVX{<5o~Z~vN}u_JGS(3+3!MzdyrXeck*9o7LGEJa3257Y{fUxoAl~bJGUEBHZU~5hmh~@!z6-AEQE9cQg^m$z|}k zCrv_O2`7oZifw{Q@nP_uN53e9!y12j_*EjX<~x8y_3$t*n<28iCXm6LKz(o2*;fk+ zBt73lv-}>8tQJ!n7MGV7QGgN8DH#(6Mo0jTs6VIwgQN*GZZR#N7A_yda`9{P+>T{R z9x#y5m5bpi1k7@Ls;X-unTCQp$%)lX(196iR(|N6W+v{&qZeeG{CMv6NjBW_s^Iw^_G+FI82TS?} zjoghBeGv^O>9l8Re$XP`bQ)9ibU`i&sW*RGg-4e|7!zVRt5@g7;D=4({DMmlZT^hp zmj8`rUT)?VHF=ppb;?vWq6=E)tQ`3=&_aY~DCeU)i3Dd?7*_Fy5OFA{5;eJbJU&th zk2}=Axg^lZkF+Xkzr^^-cMJ{9J5pRp!yUu*KAC(MER;(8gqJ$upb=jP(i;j7D7uJ% zoG?t6659NnTYt*B%CpMVwoZnQ+<3zKg6J!7uR$U^+7{Z4v)H{PlBj>;)BM{$$oZ<+ z4)-c4q8rk)pj5nws>LdEABk~I)Kkk+$%^SbN=2Lw3F-t82W1d`C}SCrP) z6Byb9*+HXXTybF(M)(d%i69 zk`>`*AQ^|3awgTnX9f$_Y$Hahc&Lllf5+<#_jLng3C13ep;`RgHCBUFyob<`NMzt9 zzvN;GfUFcr9Wof>DpdWxZ$MK~YSxfeC5J{sYP|@3vV#(iTDvFRMuYw8H>eUpUiaAW zgc$uxRbhDQ$&|?M*HPC~_%C>iakByz7HN#1*ukh)TQhyx3?=rc=6XM=rTFDiFFppX zy2rW{^|X&mz877;JYyFfXi%iRnxrV1)f@nZ;MbD*a?;!wir61JZ=_HVBj zpa>(XA^X53MR-o8jM&67m{BXGMi1F&GHP9oW$(ye<|_k_%Ykm^J#~_4A&Ryuaa;JP zPu4fjCcP)G$T_ZW7M}GzDT-=Fhi^Oy;v>i%?agVs@N={Zi;pc&J^`nc6{ujb>-X|9 zRL3Ui;{M`G{}>QJ?u0t1TLISpj6#|r^vfJ53CEOh{1_A|QOk*d>}D0UXe2)BUaSx0 zRfxd9y7%ratc!UN=kRh*nE{$)>M*?K!2uIYYtfClC!zJ5s+?WZh?GPq0x?VAXXk&P}pPHT-b_}8GZF Ix|ENVw^Z9zAgv5@-VQb^s;+Kl~@zIJIyJ_byMm*X0( zSw!YQA2mhT(>JBs>l^3swm#GsJQWybf46pe$VqHCx_I~8@HVzh^zdK_G5};ee8bli ztIK*LX1RVv5y^?4tF^1d!1psfSSw7WgJhwkXs42On@zI0Td1FTlQgCD64FMIQj=ye zM$FUhC*UQnW<10h#V1tW={=u!fCvNo%Il=R#0rVG8DPLd^c)B``r;j1-8j>loNQ1| znyqPs@RdCjhLU&hC@NMx4Yb9b*Iae!%}T)5|M2ON!!u>`E}jOWKQKACFy7k?c7|iC z-kLD|hwp2<>ZHDT2#*{1)VlcaiLpJ5WNfLSC@kBN)hJ~7y8xqF74AZsN3;stt5t_H zGV+#Qu31O|29fp7r-h$poFBtn8+H#GYOK2G8+Wf^!`zNvst1Ox;UUJqcIIc2!j*1ChO90^5Pjt( z(Qo0D#qcgZO!b<*YB^j+2z+^}JPA+G9m)kf{36cD%B9Z$|CRF%q$sCLWZ7Z>)Mdi$ z`1aIG0|sml0wPCz*~8?Vg4nvTHbBwrtVzhTsK|Y2M<_FRX|0@n{X+5nvog#PVGo8& zlfq71n6-cdTsUBlu!0b{kmYD$!!2iG8YvPMRei69CcZX>LOURjlFQ{7V442THvSGS0U^KoaDWmrBROrcwLv%TorSUfc#Vj#6jy3vHgW z1zSp#Ep$iu^bdNHE@A=*X5fts#_)SKj0JJgl7oU1S`5L?Vj+Sqk`@I)*UuY3DnK2I z?u_B(-vXK%jiRG5 zxId9Rg?s9GG^&Lp&2O~A$%71-%F&~5(-B)~jmly#7<9i{eNPFf6OqEL!yV4h zs=|}hm_D&WkCm2-I;lr=G7WeF^1>Am>n5ch(X_vBK4?raLBiD1B#u@L-IgjRQ@b zlwH6RtZ2{C5!fVP^IQK=$IYmFpqCuQuG|v~=#RYtX7;HuRFaM8k{Qh1)*QpKJ};D4 znp)LeS`SH9sQ5Vl2hqTMu|Y7m4CBHh)=`*pwEk)gZhVB|ow}$#4|yh3_kw*ly+fq} zZcoajvzelVF7B=N6)nnKx#t_G2dJK)(-IdS+@9acT?i^9TyR{ge!`Z|H4{~3*&JmQ z{v0<2PDMFn65n{%(|4+yF$#3@m6^sF6v;9s>$zp(8Gw@w`}h@Q##p)^om)ul$?lR) z#D9>Yl~ZNVQ3RYgL^fPx6FSv5eFa}}^vRR83Fvx#C`&4OJc{@;g>hy9SZxH%jY$Pw zf7a#kJ9omfHfM4Uz_l*bQn1%@|4aDAs&-yCVlZ8|p46tg}_%P!M|*uMd%8?N$oiTqEhKO zLfrRDcu${c;_6#Q-Z}nAb?PTHwDg?oeBJ|--(?F8_WSCt)@xvwvrkyzTFpUqyR+F$ zK-I`5*yg)kEurvyxKL2w2R(F-Z1a5$_S3T4*@ram&-Dh@Zq@cCv#<6oKeg`h?Cb<# zZ0Wk$wtaz^lMv3vK8<1+KUCI@kbCS}8VkH_0!2WAC62*5uo8aW@>PG`=Nk>8`C&yT zhlwmbJi%e$WVlIBOG)EDaY=2b;#Kzd?#(jv0WHOKO>(mVZmu(2)i z!>GqYqNjbJaD5{9*kstkPzWPmIk~k;mHTDo6%PJVB5OG!98aG>L5yz+Kin{(o9b0w z^cAI&*4+fvr<|yn>wOV$=K_rYRPu}*4}?f$*|JQTh~k9DnG)1v>5vX3^1|hBUkt;) z^y>l?upO>eN9L;zadNV0JVG16$AzV|AD()1Dg$Wcwkc>|b-X-s3ojE{YuUIvv)X{5 zAWC63+sYYiSAiH1EU-;+;ks{}wl7WI89)-CXORHl9J10oe%`|>^ zKaK4?dk#i*#!S2k*_c?^im)dy8s9OY-xi`Xuim859Yee942mNU29J_&Swr?6yNHRT z;ElJE5kI616sq`3b2vi5vw(@y&Qw$shKf(qW)UVb`#=I~&f0;Jna(uDPKuKG8~Ylf%92w}PD3n{x|0*QTYKv=!)1 zPxX;L`H+1=+Jek)?&fT5+9#@w(6J^lcB95om77*I@DNC8+?dOJUSx z9na&CrY2L~9y3`z@MF*_Zor%;VOO-+FDN-CLo+vDi^BREW<6f&O?@$-hT1P3weP)J zn?w)7-s6R=6c_m74xsx{DCRZ0(&^>Y-AHzccRzI7)82kuwXn88Bkk3XgP9J6xG%vgU3{3sCxUVxWP zjQ;T$tmEhUb;H?hVw|q78)MIWOVGN;uv2@j)mEl+E9g^Y>EfWclmPOO1@WfC*VuLm zS$+ZXRIefBqd>C#hlp+u=N;mvK!BQ44Q8gZZDj09?1O(Si9X56O%z-P<_(%}r|7m~ z^U;DE-OrWOp_trA=QuPU)2eRPOWBskjI9t1Q?KCB1I7;$=M>s)f9tnpq=HCXiT(!$ zpLY3=?zN`XkBd&NKp%&`EPWX|?XfC*FV0~LlI$@@w z`T0O@riX#)Nfjkk7%C!)@xCm1agJ&>|6+NH9MexhaGwJ{tGBPGPLuh`Z0QxpC$Y8_ zXd!<$Ja$uXK^7YS9*ZOK@is~MOtJu4M<-#s7XRr*@bc#DngKxSW1e>J$@R=l(!Sd> zQnT(Dz{Q{9`!0{iFF#y;opnrof4gZ&s0babDw=vsv1XXR_LeZ3X#UuP{;X#%H>SlY zaD8q-53i!86-d`m?+=g#7MahUf_kC;$^;=myjl$u`rS>!bXR47W{!N^j5T-NB%~e9 zOnK5)6b(fe9jnP+G2PaFpv`vEBjyn$VHdzR^_zBf8$dft3&BE(1;;9N+;n*>R*Slj z*(P~c!p^t@JKa_nvv>32N;?_|j0vwt0cOnyN?#F(;O$wMcOGBmAJmrX)^7Bnu)l6V zpyHQUT}UmgKu$uS~$5P znHRnRsDjA_gq;0B)UFF!Q-()xP8!jnnMBMklc9XK=YFAWp7x?QbkA?VqET!iFkTyp z9H`>lCG=d~qF>&lzJA~w71#7%>9K_FBzB;Zw@{S=^OCTKaIdWH2YG?KQ>|UEd|lv%$ZIQtr(L7-B*3dMF6WQz&Yph>A6HrShDKA6ZNT zf?0ZOz(s7E)dF_b*t0HK3K5Tcv35SP#47$NXmVPzugjM)D*c!c+QrU{Q{v%8ovZWu zI>zsM`}Bg}pAYxxP44~dDtuv2fe~MAcA+n@-0OYZG97tAK4(!ume&!bx<2wrMygR{ zRtuefy#r!iYZ82+Htg-BMrRGC8&oO3HkS+0QRZlvzw7g=-He?G?RuiV<5)@#4Kg90&pn-f>QST z0Lc~4`VBnxvEtDJ(At_*;pN3EU#v^%)@n`zC@*AqL zN$@Ct=kwf38lg7blc2g47Owe7^^wf#!j}i^0t;t5>#lF>cW77DuoYq_0YdtIOvvUn z&yX+OF(tMt0u=>2b=5H2KNr}NT>WrFc}?hRrR7~BjF@yl@9gdm7w*vwGu+5J=yOT= zs{um95(LYuALt6wpkOFKKtNDHVRAbHq2(b$xZprQ?V3P9p8=n`+dG-i+qv2rnL1h8 znbUdL+MMfb+U;h#OHzMp66v}b>cN`Eij$`7j?vG@MfK}QyM-Fup*v0 zb$dc6V8?h9bipRumK9ucDJDNVjFjiamTU6FOAnqokW_uUF*-+U zvQA!;x%_<2gkwy>UEj7^OWMvigtiE!QKffA@R66-UydD{93WN^s{>JQZ6%>-f8G5& z71{e-#j7K7Y^(IKElp zOSWR>%v!MC?;hoPS8ETEwRaKhcrANL-0`FS<6GhxYCO)f<(ta3R=0DtzW4z9u~n&| zcnYHY7Y$`M;AthKpjlp|-uG*bVQz3S@0f3}9~$Dz4s6zA{InsnN5_VrvDYU*NBL zNd9KX?Yz#DzFdOXvp#+8AbTZ=yC3qiwD&*Amw#jiOY=S=i-hn#ma#sPsVXA82N!PR zy-wo!3>@nN-Y~D?y~eOU77MolA=E%Zl4bGbQT^zs-bw?lXWCKx&MAXQPH)vK;X8dH zi;cG&;ktlVL;b@%_M$hY&j&r_dRm8uT4!X z9e=vXsNCjItIZC4q6n3GL9KFXShX$xJ=&@0FpO1j{fEF&1fZ4x}l&N1z#BiAzus-z}j=VhuU!m57QO zS1GX!AGgGu>mb}rq}|cGtZs)~J0F>>c35x%jHhRmZp}Gar8`=6K$-tppxG^;$|EME zP1Wyy_k(ZHQBw-&vM#P_(~w%vgiyOjaG|LtMM>m zmxS0xe$NrhD+s1yi3nI|jhP%?LN`LY19fL63FRI9a%!b)H(Hro7G`}|b^mtghUfjY z%YMsyfn2`lp7(qOj?+|7n4KL?*BLa-)neBANFQ$%+f{cL37TurIADENUZe1Wo`(tWQFbAo=zJ>-OqXBYJIIBX6&riQ4TZ28V4U zG9rGo_@aB;eLt?HK0_|pP9QKehP!O*L7E5LX6+C235o%G@GmVtl|||E$xGygF2u${ z?#fx*Bjmdh2c<%h67PXyvc4EywCXb55ILg2`*FMk^fhVE6YP#>=w zN=9zm0Y^ppOiCBO}>s2XG0#eG7juo@Af&}wV3VAe+I zpv%&EG@(@L^JdhJj=pNdhLSfQpb=g?>uC~#CJlc}&k{7nmDC!yHFTh*Ud*(&&*Z~WW^_pO@=E3)?D$frqoXAk5 z@FIB)5y5@~icLed42Yv?)5}e;PU_T@v(OqWJdZ0!D>binKNDLd6e!Qf?sQ0OPW%7Jci|>j@J_!;jQCc}vWhibf$eW}+CVU_4 zM;9?`s_F!xtLyXg$y+X!(varNYFQ_Ve0$>ecrI#V2iE!Qjs0fAw0mWp_Dl(C+uZ8_ zaXFQ=s$o{Re6Nw9p+&MjdCE#YGgfSIbYQ3msLQAL7R{~?o(wk$&A<5-HqXbV8 zN`1c`PW&F;?N+ac7_GfT?&9fj10N`kO}bqf!XzJ`T8T}n5vf_pYmYr5RTa#S$R*M?)@rUsiu?Bu48QabrLzlKZL-t@%_D@Jk`8px20ydr&FmZS80vv z0hmeFIm_}uVcwiog48{7tp4_0XieVnc~GLtFoB*~-T|?gRgB%B5yFB`KmqEj-=kuP zQn8xPZ8_NQ0)c$=a9#)V;a1{Ri*ge-PFa;Oi49J)+J+%`OhE! zdVv7^)^{?sai;(KLjjnG2>%W6zn>sLKrsJZhVFOCs)S7`P)5X%OYm*NNniGLDx!HC zdy%7T315H0^i8UrtQs(>?%QA7_^!kNhOtU!PJ`;Q~A1ho9y8 zZY~TRVThQ$f`oq+{Sd)qo7x|Gj)2%>O7g~TprGTUK1$!sPSSkXV^AkdpwDI_3DX&0 z91Hh~#T`@C-5$MN0L_RmS-}Fgw5}FBldH3NU*~SDT5`d^?TbH*Ky|95m`>v|0iU9!O)Xt=1G?kvXKYh!sk_m$HnA2 zbdu-uFo(FyU9QM;9A~R%4#E_A0*>$G0o?!X$=_c3GYGVY@FShuN#C{F=+KHgXw%tN3u;-aj26@dy;}%p(~-mdCu-a zr;x8OjMCPKGlYaIS1e~=UZaU3G;ugf_wp8HdRo%C*}@X^4kU;3euX> zq9>{4zI-|3289)qRu+SS(%{I9{4$S>q;X!~Kdp4d=^2GD8eC*kEM-oJN-e;MwY3FH zMvZ{s*fgXv8S$E!RC;KDLN*<=pS%HH7;ZlxS(^=Yppe7|rYlt_taf>Lm^{xNx4WVwvV~G1O+k{rlE8{YR4%i<(*xJW(P+&x2 zt^Fd68R5gqVD@Sf?$bP>B*}lIIWm}kNNw2;dgz_s$1B0Ld{d>s%&kF~*c0j;D z1b|oUm;d!L{`Cd_chvg*1wcTEfFJ$Gf5))D8~tY#`;GX^XwZLS{@io_KV#6pQGbr# z#(p1wTUNoz-r;x5{JXsw5MX0VK}~&T|9|%| zU_9`zajx*!KVP)9(QI*YO)t_VkZ%_;*kJGa&v3{#DuezXShAc>L#Sv$a>j z1rGsQz!&I$c+C#r^gp%!&+qsrytI^a3+r}k#{_AdXY{eRAc{Toks z{xAIB=EeSL9|MLb%L&jt*r5J-`dpa*!aJL~xBzC={@2s*=OYI-0eHiy0|*G=uiF3X zGM4>UlW}(OwE0ip{qODV?~R9$@L#rFEKF@p|Ho~{6Rv1~1!$q9fGVQ?&8pPjfq&qP Ye_c25-(4NRje!gl3#i)s>+g5}51}JbQvd(} literal 40619 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�ObZgb<&IXLqjyElA+Ru*?{Hx_D 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表示。包含关系表示一个用例必须包含另一个用例的行为才能完成。以下列出系统的主要包含关系: + +**(1)顾客用例的include关系** + +- 提交预约 <> 登录 +- 取消预约 <> 登录 +- 查询预约记录 <> 登录 +- 查看订单 <> 登录 +- 查询报告 <> 登录 +- 维护宠物档案 <> 登录 +- 修改个人信息 <> 登录 +- 修改密码 <> 登录 +- 提交预约 <> 维护宠物档案(需要先创建宠物档案才能进行预约) + +**(2)医生用例的include关系** + +- 查看预约 <> 登录 +- 接诊确认 <> 登录 +- 创建就诊记录 <> 登录 +- 编辑病历 <> 登录 +- 开具处方 <> 登录 +- 查看处方 <> 登录 +- 查询历史病历 <> 登录 +- 查询历史处方 <> 登录 +- 修改个人信息 <> 登录 +- 修改密码 <> 登录 +- 创建就诊记录 <> 查看预约(需要先查看预约才能创建就诊记录) +- 编辑病历 <> 创建就诊记录(需要先创建就诊记录才能编辑病历) +- 开具处方 <> 创建就诊记录(需要先创建就诊记录才能开具处方) +- 开具处方 <> 编辑病历(需要先完成病历录入才能开具处方) + +**(3)管理员用例的include关系** + +- 用户管理 <> 登录 +- 医生管理 <> 登录 +- 公告管理 <> 登录 +- 药品管理 <> 登录 +- 药品入库 <> 登录 +- 药品出库 <> 登录 +- 库存查询 <> 登录 +- 统计报表查看 <> 登录 +- 修改个人信息 <> 登录 +- 修改密码 <> 登录 +- 药品入库 <> 药品管理(需要先在药品管理中维护药品信息才能进行入库操作) +- 药品出库 <> 药品管理(需要先在药品管理中维护药品信息才能进行出库操作) + +**(4)跨角色共享用例** + +以下用例被多个角色共享: + +- **登录**:被顾客、医生、管理员三个角色的所有业务用例包含 +- **修改个人信息**:被顾客、医生、管理员三个角色使用 +- **修改密码**:被顾客、医生、管理员三个角色使用 +- **查看公告**:被顾客、医生、管理员三个角色使用 + +这些共享用例体现了系统的基础能力,所有角色的业务操作都依赖于这些基础用例的完成。 + ### 3.4 用例描述 #### 3.4.1 顾客预约门诊用例描述 @@ -292,6 +390,93 @@ Comprehensive functional and process-oriented testing indicates that the system | 后置条件 | 入库记录写入并更新药品库存 | | 基本事件流 | 进入入库管理 → 选择药品并填写数量、单价、供应信息 → 提交入库 | | 异常事件流 | 输入数据非法时,系统提示修正后再提交 | +#### 3.4.4 顾客维护宠物档案用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 顾客维护宠物档案 | +| 执行者 | 顾客 | +| 前置条件 | 顾客已登录 | +| 后置条件 | 宠物信息保存到数据库 | +| 基本事件流 | 进入宠物档案管理 → 点击新增/编辑 → 填写宠物信息(名称、品种、性别、出生日期、体重等)→ 提交保存 | +| 异常事件流 | 必填信息缺失或数据格式错误时,系统提示修正 | + +#### 3.4.5 顾客取消预约用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 顾客取消预约 | +| 执行者 | 顾客 | +| 前置条件 | 顾客已登录且存在待确认或已确认的预约记录 | +| 后置条件 | 预约状态更新为已取消 | +| 基本事件流 | 进入预约管理 → 选择要取消的预约 → 点击取消按钮 → 确认取消 | +| 异常事件流 | 预约已接诊或已过取消时限时,系统阻止取消并提示 | + +#### 3.4.6 医生创建就诊记录用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 医生创建就诊记录 | +| 执行者 | 医生 | +| 前置条件 | 顾客已到诊,存在有效预约 | +| 后置条件 | 生成就诊记录 | +| 基本事件流 | 查看待处理预约 → 确认顾客到诊 → 点击接诊 → 创建就诊记录 → 录入初步信息 | +| 异常事件流 | 预约不存在或状态不允许接诊时,系统提示 | + +#### 3.4.7 医生编辑病历用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 医生编辑病历 | +| 执行者 | 医生 | +| 前置条件 | 已存在就诊记录 | +| 后置条件 | 病历信息更新并保存 | +| 基本事件流 | 进入就诊记录详情 → 点击编辑病历 → 录入主诉、检查结果、诊断结论、处理建议 → 保存 | +| 异常事件流 | 就诊记录不存在或已完成结算时,系统阻止编辑 | + +#### 3.4.8 管理员药品出库用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 管理员药品出库 | +| 执行者 | 管理员 | +| 前置条件 | 管理员已登录且拥有库存管理权限,药品库存充足 | +| 后置条件 | 出库记录写入并扣减药品库存 | +| 基本事件流 | 进入出库管理 → 选择药品并填写数量、出库用途 → 提交出库 | +| 异常事件流 | 出库数量大于库存或输入数据非法时,系统提示 | + +#### 3.4.9 管理员发布公告用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 管理员发布公告 | +| 执行者 | 管理员 | +| 前置条件 | 管理员已登录且拥有公告管理权限 | +| 后置条件 | 公告信息保存并可见 | +| 基本事件流 | 进入公告管理 → 点击新增 → 填写公告标题、内容、发布时间 → 提交发布 | +| 异常事件流 | 必填信息缺失时,系统提示修正 | + +#### 3.4.10 顾客查看订单用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 顾客查看订单 | +| 执行者 | 顾客 | +| 前置条件 | 顾客已登录且有历史就诊记录 | +| 后置条件 | 显示订单列表或订单详情 | +| 基本事件流 | 进入订单查询 → 查看订单列表 → 选择订单查看详情 | +| 异常事件流 | 无订单记录时显示提示信息 | + +#### 3.4.11 登录用例描述 + +| 项目 | 描述 | +|---|---| +| 用例名称 | 登录 | +| 执行者 | 顾客/医生/管理员 | +| 前置条件 | 用户已注册 | +| 后置条件 | 用户身份验证通过,生成访问令牌 | +| 基本事件流 | 进入登录页面 → 输入账号密码 → 点击登录 → 验证身份 → 跳转至角色首页 | +| 异常事件流 | 账号不存在、密码错误或账户被禁用时,系统提示错误信息 | ### 3.5 系统性能分析