From 88535b8e7c727bbe42f5822aa0bdffd3d67e5380 Mon Sep 17 00:00:00 2001 From: whm <2022265251@qq.com> Date: Wed, 12 Nov 2025 16:59:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nsHistory迁移记录表,在初始化脚本执行完成后执行.sql | 16 ++++ 迁移记录-DB变更记录/0000清库脚本.sql | 7 ++ .../202509021111add_table_doc_order_process.sql | 72 ++++++++++++++++++ .../202509031200add_table_doc_statistics.sql | 62 +++++++++++++++ ...2509031300alter_table_doc_statistics_definiton.sql | 8 ++ .../202509040915alter_table_xx_request.sql | 58 ++++++++++++++ .../202509041015add_column_wor_service_request.sql | 7 ++ .../202509041017 insert_sys_menu.sql | 46 +++++++++++ ...202509081020add_table_tmp_orders_group_package.sql | 55 +++++++++++++ ...81022add_table_tmp_orders_group_package_detail.sql | 58 ++++++++++++++ .../202509101025add_column_adm_practitioner.sql | 7 ++ .../202509101030add_column_wor_service_request.sql | 8 ++ ...202509161311 add_column_cli_reservation_record.sql | 8 ++ .../202509180852 add_column_wor_device_dispense.sql | 5 ++ .../202509191411 add_column_tmp_activity_device.sql | 7 ++ ...31011 add_table_nd_review_prescription_records.sql | 65 ++++++++++++++++ ...09261212 add_column _doc_statistics_definition.sql | 13 ++++ ...02510131311 add_column_elep_medication_request.sql | 12 +++ .../202510131411 add_column_adm_charge_item.sql | 7 ++ .../202510151011 alter_table_request.sql | 22 ++++++ ...0151413 add_talble_cli_condition_no_definition.sql | 33 ++++++++ ...012 add_column_tmp_orders_group_package_detail.sql | 20 +++++ ...02510211414 add_column_med_medication_dispense.sql | 7 ++ ...2510211414 alter_table_med_medication_dispense.sql | 7 ++ .../202510211511 alter_column_wor_supply_delivery.sql | 6 ++ ...011 add_column_tmp_orders_group_package_detail.sql | 7 ++ ...d_medication_definition&med_medication_request.sql | 11 +++ .../202510271311 add_column_requests.sql | 12 +++ .../202510281101 add_column_adm_practitioner.sql | 7 ++ ...202510301113 add_column adm_healthcare_service.sql | 7 ++ ...415 add_column tmp_orders_group_package_detail.sql | 5 ++ .../202511031515 add_column adm_charge_item.sql | 8 ++ ...2511041214 add_table doc_inventory_item_static.sql | 50 ++++++++++++ ...202511051215 add_table adm_change_price_record.sql | 38 +++++++++ .../202511061215 ALTER TABLE sys_oper_log.sql | 6 ++ .../openHis数据库变更操作.docx | Bin 0 -> 58892 bytes 36 files changed, 767 insertions(+) create mode 100644 迁移记录-DB变更记录/0000add_table__MigrationsHistory迁移记录表,在初始化脚本执行完成后执行.sql create mode 100644 迁移记录-DB变更记录/0000清库脚本.sql create mode 100644 迁移记录-DB变更记录/202509021111add_table_doc_order_process.sql create mode 100644 迁移记录-DB变更记录/202509031200add_table_doc_statistics.sql create mode 100644 迁移记录-DB变更记录/202509031300alter_table_doc_statistics_definiton.sql create mode 100644 迁移记录-DB变更记录/202509040915alter_table_xx_request.sql create mode 100644 迁移记录-DB变更记录/202509041015add_column_wor_service_request.sql create mode 100644 迁移记录-DB变更记录/202509041017 insert_sys_menu.sql create mode 100644 迁移记录-DB变更记录/202509081020add_table_tmp_orders_group_package.sql create mode 100644 迁移记录-DB变更记录/202509081022add_table_tmp_orders_group_package_detail.sql create mode 100644 迁移记录-DB变更记录/202509101025add_column_adm_practitioner.sql create mode 100644 迁移记录-DB变更记录/202509101030add_column_wor_service_request.sql create mode 100644 迁移记录-DB变更记录/202509161311 add_column_cli_reservation_record.sql create mode 100644 迁移记录-DB变更记录/202509180852 add_column_wor_device_dispense.sql create mode 100644 迁移记录-DB变更记录/202509191411 add_column_tmp_activity_device.sql create mode 100644 迁移记录-DB变更记录/202509231011 add_table_nd_review_prescription_records.sql create mode 100644 迁移记录-DB变更记录/202509261212 add_column _doc_statistics_definition.sql create mode 100644 迁移记录-DB变更记录/202510131311 add_column_elep_medication_request.sql create mode 100644 迁移记录-DB变更记录/202510131411 add_column_adm_charge_item.sql create mode 100644 迁移记录-DB变更记录/202510151011 alter_table_request.sql create mode 100644 迁移记录-DB变更记录/202510151413 add_talble_cli_condition_no_definition.sql create mode 100644 迁移记录-DB变更记录/202510211012 add_column_tmp_orders_group_package_detail.sql create mode 100644 迁移记录-DB变更记录/202510211414 add_column_med_medication_dispense.sql create mode 100644 迁移记录-DB变更记录/202510211414 alter_table_med_medication_dispense.sql create mode 100644 迁移记录-DB变更记录/202510211511 alter_column_wor_supply_delivery.sql create mode 100644 迁移记录-DB变更记录/202510221011 add_column_tmp_orders_group_package_detail.sql create mode 100644 迁移记录-DB变更记录/202510271011 add_column_ med_medication_definition&med_medication_request.sql create mode 100644 迁移记录-DB变更记录/202510271311 add_column_requests.sql create mode 100644 迁移记录-DB变更记录/202510281101 add_column_adm_practitioner.sql create mode 100644 迁移记录-DB变更记录/202510301113 add_column adm_healthcare_service.sql create mode 100644 迁移记录-DB变更记录/202511031415 add_column tmp_orders_group_package_detail.sql create mode 100644 迁移记录-DB变更记录/202511031515 add_column adm_charge_item.sql create mode 100644 迁移记录-DB变更记录/202511041214 add_table doc_inventory_item_static.sql create mode 100644 迁移记录-DB变更记录/202511051215 add_table adm_change_price_record.sql create mode 100644 迁移记录-DB变更记录/202511061215 ALTER TABLE sys_oper_log.sql create mode 100644 迁移记录-DB变更记录/openHis数据库变更操作.docx diff --git a/迁移记录-DB变更记录/0000add_table__MigrationsHistory迁移记录表,在初始化脚本执行完成后执行.sql b/迁移记录-DB变更记录/0000add_table__MigrationsHistory迁移记录表,在初始化脚本执行完成后执行.sql new file mode 100644 index 00000000..28323574 --- /dev/null +++ b/迁移记录-DB变更记录/0000add_table__MigrationsHistory迁移记录表,在初始化脚本执行完成后执行.sql @@ -0,0 +1,16 @@ +-- 创建 __MigrationsHistory 表(迁移历史表) +CREATE TABLE __MigrationsHistory ( + -- 迁移ID:唯一标识一条迁移记录,非空 + MigrationId VARCHAR(150) NOT NULL, + -- 产品版本:记录迁移对应的框架/产品版本,非空 + ProductVersion VARCHAR(32) NOT NULL, + -- 主键约束:确保 MigrationId 唯一(迁移记录不可重复) + CONSTRAINT pk___migrationshistory PRIMARY KEY (MigrationId) +); + +-- 为表添加备注 +COMMENT ON TABLE __MigrationsHistory IS '用于记录数据库迁移历史的表,跟踪每次迁移的执行情况'; + +-- 为字段添加备注 +COMMENT ON COLUMN __MigrationsHistory.MigrationId IS '迁移操作的唯一标识符,用于区分不同的迁移脚本'; +COMMENT ON COLUMN __MigrationsHistory.ProductVersion IS '执行迁移时使用的产品/框架版本,用于版本兼容性检查'; \ No newline at end of file diff --git a/迁移记录-DB变更记录/0000清库脚本.sql b/迁移记录-DB变更记录/0000清库脚本.sql new file mode 100644 index 00000000..92d11501 --- /dev/null +++ b/迁移记录-DB变更记录/0000清库脚本.sql @@ -0,0 +1,7 @@ +TRUNCATE TABLE adm_encounter ;-- 清空就诊记录表 +TRUNCATE TABLE adm_encounter_location;-- 清空就诊地点表 +TRUNCATE TABLE adm_encounter_reason;-- 清空就诊原因表 +TRUNCATE TABLE adm_encounter_diagnosis;-- 清空就诊诊断表 +TRUNCATE TABLE adm_encounter_participant;-- 清空就诊参与者表 +TRUNCATE TABLE adm_charge_item;-- 清空费用项目表 +TRUNCATE TABLE elep_medication_request;-- 清空用药申请表 \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509021111add_table_doc_order_process.sql b/迁移记录-DB变更记录/202509021111add_table_doc_order_process.sql new file mode 100644 index 00000000..7a886cc5 --- /dev/null +++ b/迁移记录-DB变更记录/202509021111add_table_doc_order_process.sql @@ -0,0 +1,72 @@ + -- 创建序列 + CREATE SEQUENCE doc_order_process_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +CREATE TABLE "public"."doc_order_process" ( + "id" int8 NOT NULL DEFAULT nextval('doc_order_process_id_seq'::regclass), + "name" varchar(100) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "encounter_id" int8 NOT NULL, + "request_id" int8 NOT NULL, + "request_table_name" varchar(100) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "original_organization_id" int8 DEFAULT NULL, + "target_organization_id" int8 DEFAULT NULL, + "original_location_id" int8 DEFAULT NULL, + "target_location_id" int8 DEFAULT NULL, + "out_way_code" varchar(100) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "tenant_id" int8 NOT NULL, + "delete_flag" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 0, + "create_by" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "create_time" timestamptz(6) NOT NULL, + "update_by" varchar(32) COLLATE "pg_catalog"."default", + "update_time" timestamptz(6), + CONSTRAINT "doc_order_process_pkey" PRIMARY KEY ("id") +) +; + +ALTER TABLE "public"."doc_order_process" + OWNER TO "postgres"; + +COMMENT ON COLUMN "public"."doc_order_process"."id" IS 'ID'; + +COMMENT ON COLUMN "public"."doc_order_process"."name" IS '名称'; + +COMMENT ON COLUMN "public"."doc_order_process"."encounter_id" IS '就诊id'; + +COMMENT ON COLUMN "public"."doc_order_process"."request_id" IS '请求id'; + +COMMENT ON COLUMN "public"."doc_order_process"."request_table_name" IS '请求表名'; + +COMMENT ON COLUMN "public"."doc_order_process"."original_organization_id" IS '原科室'; + +COMMENT ON COLUMN "public"."doc_order_process"."target_organization_id" IS '目标科室'; + +COMMENT ON COLUMN "public"."doc_order_process"."original_location_id" IS '原病区'; + +COMMENT ON COLUMN "public"."doc_order_process"."target_location_id" IS '目标病区'; + +COMMENT ON COLUMN "public"."doc_order_process"."out_way_code" IS '出院方式'; + +COMMENT ON COLUMN "public"."doc_order_process"."tenant_id" IS '租户ID'; + +COMMENT ON COLUMN "public"."doc_order_process"."delete_flag" IS '删除状态'; + +COMMENT ON COLUMN "public"."doc_order_process"."create_by" IS '创建人'; + +COMMENT ON COLUMN "public"."doc_order_process"."create_time" IS '创建时间'; + +COMMENT ON COLUMN "public"."doc_order_process"."update_by" IS '更新人'; + +COMMENT ON COLUMN "public"."doc_order_process"."update_time" IS '更新时间'; + +COMMENT ON TABLE "public"."doc_order_process" IS '医嘱过程表'; + + + +-- 向迁移历史表插入记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509021111add_table_doc_order_process', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509031200add_table_doc_statistics.sql b/迁移记录-DB变更记录/202509031200add_table_doc_statistics.sql new file mode 100644 index 00000000..54f98085 --- /dev/null +++ b/迁移记录-DB变更记录/202509031200add_table_doc_statistics.sql @@ -0,0 +1,62 @@ +-- 1. 创建 doc_statistics 表的主键序列(自增ID用,与 doc_order_process 序列逻辑一致) +CREATE SEQUENCE doc_statistics_id_seq + START WITH 1 -- 序列起始值 + INCREMENT BY 1 -- 每次递增1 + NO MINVALUE -- 无最小值限制 + NO MAXVALUE -- 无最大值限制 + CACHE 1; -- 缓存1个值提升性能 + + +-- 2. 创建 doc_statistics 表(字段类型、约束与实体类属性一一对应) +CREATE TABLE "public"."doc_statistics" ( + "id" int8 NOT NULL DEFAULT nextval('doc_statistics_id_seq'::regclass), -- 主键,关联序列自增 + "record_id" int8 DEFAULT NULL, -- 记录ID(对应实体类 recordId) + "statistic_definition_id" int8 DEFAULT NULL, -- 统计项定义ID(对应 statisticDefinitionId) + "encounter_id" int8 DEFAULT NULL, -- 就诊ID(对应 encounterId) + "patient_id" int8 DEFAULT NULL, -- 患者ID(对应 patientId) + "statistic_definition_code" varchar(100) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, -- 统计项编码(对应 statisticDefinitionCode,长度适配业务需求) + "organization_id" int8 DEFAULT NULL, -- 记录科室ID(对应 organizationId) + "value" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, -- 统计值(对应 value,用varchar兼容多种数据类型) + "record_time" timestamp(6) DEFAULT NULL, -- 记录时间(对应 recordTime,实体类为Date,PostgreSQL用timestamp存储) + "source" varchar(100) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, -- 记录来源(对应 source) + "tenant_id" int8 NOT NULL DEFAULT 1, -- 租户ID(通用字段,与 doc_order_process 保持一致,默认值可根据业务调整) + "delete_flag" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '0', -- 删除状态(0=未删除,1=已删除,与 doc_order_process 逻辑一致) + "create_by" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, -- 创建人(继承 HisBaseEntity 通用字段) + "create_time" timestamptz(6) NOT NULL, -- 创建时间(继承 HisBaseEntity,带时区,与 doc_order_process 一致) + "update_by" varchar(32) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, -- 更新人(继承 HisBaseEntity) + "update_time" timestamptz(6) DEFAULT NULL, -- 更新时间(继承 HisBaseEntity,带时区) + CONSTRAINT "doc_statistics_pkey" PRIMARY KEY ("id") -- 主键约束 +) +; + + +-- 3. 设置表所有者(与 doc_order_process 保持一致,默认为 postgres) +ALTER TABLE "public"."doc_statistics" + OWNER TO "postgres"; + + +-- 4. 字段注释(与实体类注释完全对应,便于维护) +COMMENT ON COLUMN "public"."doc_statistics"."id" IS '主键ID'; +COMMENT ON COLUMN "public"."doc_statistics"."record_id" IS '记录ID'; +COMMENT ON COLUMN "public"."doc_statistics"."statistic_definition_id" IS '统计项定义ID'; +COMMENT ON COLUMN "public"."doc_statistics"."encounter_id" IS '就诊ID'; +COMMENT ON COLUMN "public"."doc_statistics"."patient_id" IS '患者ID'; +COMMENT ON COLUMN "public"."doc_statistics"."statistic_definition_code" IS '统计项编码'; +COMMENT ON COLUMN "public"."doc_statistics"."organization_id" IS '记录科室ID'; +COMMENT ON COLUMN "public"."doc_statistics"."value" IS '统计值'; +COMMENT ON COLUMN "public"."doc_statistics"."record_time" IS '记录时间(格式:yyyy-MM-dd HH:mm:ss)'; +COMMENT ON COLUMN "public"."doc_statistics"."source" IS '记录来源'; +COMMENT ON COLUMN "public"."doc_statistics"."tenant_id" IS '租户ID'; +COMMENT ON COLUMN "public"."doc_statistics"."delete_flag" IS '删除状态(0=未删除,1=已删除)'; +COMMENT ON COLUMN "public"."doc_statistics"."create_by" IS '创建人'; +COMMENT ON COLUMN "public"."doc_statistics"."create_time" IS '创建时间'; +COMMENT ON COLUMN "public"."doc_statistics"."update_by" IS '更新人'; +COMMENT ON COLUMN "public"."doc_statistics"."update_time" IS '更新时间'; + +-- 5. 表注释 +COMMENT ON TABLE "public"."doc_statistics" IS '文档统计表(存储各类统计项数据,如医嘱统计、患者数据统计等)'; + + +-- 插入新的迁移历史记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509031200add_table_doc_statistics', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509031300alter_table_doc_statistics_definiton.sql b/迁移记录-DB变更记录/202509031300alter_table_doc_statistics_definiton.sql new file mode 100644 index 00000000..1fa3920a --- /dev/null +++ b/迁移记录-DB变更记录/202509031300alter_table_doc_statistics_definiton.sql @@ -0,0 +1,8 @@ + ALTER TABLE "public"."doc_statistics_definition" + ADD COLUMN "unit" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying; + COMMENT ON COLUMN "public"."doc_statistics_definition"."unit" IS '统计值单位(如“次”“mg”“分钟”等)'; + + -- 插入文档统计表格结构修改的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509031300alter_table_doc_statistics_definiton', '1.0.0'); + diff --git a/迁移记录-DB变更记录/202509040915alter_table_xx_request.sql b/迁移记录-DB变更记录/202509040915alter_table_xx_request.sql new file mode 100644 index 00000000..494951a1 --- /dev/null +++ b/迁移记录-DB变更记录/202509040915alter_table_xx_request.sql @@ -0,0 +1,58 @@ +ALTER TABLE "public"."med_medication_request" +ALTER COLUMN "quantity" TYPE numeric(20,6), +ALTER COLUMN "quantity" SET DEFAULT 0, +ALTER COLUMN "quantity" SET NOT NULL; + +ALTER TABLE "public"."med_medication_request" +ALTER COLUMN "chinese_herbs_dose_quantity" TYPE numeric(20,6), +ALTER COLUMN "chinese_herbs_dose_quantity" SET DEFAULT 0; + + +ALTER TABLE "public"."wor_service_request" +ALTER COLUMN "quantity" TYPE numeric(20,6), +ALTER COLUMN "quantity" SET DEFAULT 0, +ALTER COLUMN "quantity" SET NOT NULL; + + +ALTER TABLE "public"."wor_device_request" +ALTER COLUMN "quantity" TYPE numeric(20,6), +ALTER COLUMN "quantity" SET DEFAULT 0, +ALTER COLUMN "quantity" SET NOT NULL; + + +ALTER TABLE "public"."adm_charge_item" +ALTER COLUMN "quantity_value" TYPE numeric(20,6), +ALTER COLUMN "quantity_value" SET DEFAULT 0, +ALTER COLUMN "quantity_value" SET NOT NULL; + +ALTER TABLE "public"."med_medication_dispense" +ALTER COLUMN "quantity" TYPE numeric(20,6), +ALTER COLUMN "quantity" SET DEFAULT 0, +ALTER COLUMN "quantity" SET NOT NULL; + +ALTER TABLE "public"."wor_device_dispense" +ALTER COLUMN "quantity" TYPE numeric(20,6), +ALTER COLUMN "quantity" SET DEFAULT 0, +ALTER COLUMN "quantity" SET NOT NULL; + + +ALTER TABLE "public"."med_medication_dispense" +ALTER COLUMN "dispense_quantity" TYPE numeric(20,6), +ALTER COLUMN "dispense_quantity" SET DEFAULT 0, +ALTER COLUMN "dispense_quantity" SET NOT NULL; + +ALTER TABLE "public"."wor_device_dispense" +ALTER COLUMN "dispense_quantity" TYPE numeric(20,6), +ALTER COLUMN "dispense_quantity" SET DEFAULT 0, +ALTER COLUMN "dispense_quantity" SET NOT NULL; + + + +ALTER TABLE "public"."tmp_activity_device" +ALTER COLUMN "quantity" TYPE numeric(20,6), +ALTER COLUMN "quantity" SET DEFAULT 0, +ALTER COLUMN "quantity" SET NOT NULL; + +-- 插入修改xx_request表的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509040915alter_table_xx_request', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509041015add_column_wor_service_request.sql b/迁移记录-DB变更记录/202509041015add_column_wor_service_request.sql new file mode 100644 index 00000000..89d7fb3c --- /dev/null +++ b/迁移记录-DB变更记录/202509041015add_column_wor_service_request.sql @@ -0,0 +1,7 @@ + ALTER TABLE "public"."wor_service_request" + ADD COLUMN "rate_code" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying; + COMMENT ON COLUMN "public"."wor_service_request"."rate_code" IS '用药频次'; + + -- 插入添加wor_service_request列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509041015add_column_wor_service_request', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509041017 insert_sys_menu.sql b/迁移记录-DB变更记录/202509041017 insert_sys_menu.sql new file mode 100644 index 00000000..e3ef3072 --- /dev/null +++ b/迁移记录-DB变更记录/202509041017 insert_sys_menu.sql @@ -0,0 +1,46 @@ +INSERT INTO "public"."sys_menu" ( + "menu_name", + "parent_id", + "order_num", + "path", + "component", + "query", + "route_name", + "is_frame", + "is_cache", + "menu_type", + "visible", + "status", + "perms", + "icon", + "create_by", + "create_time", + "update_by", + "update_time", + "remark" +) +VALUES +( + '药房月结', + 376, + 9, + 'pharmacyMonthlybalance', + 'medicationmanagement/statisticalManagement/pharmacyMonthlybalance', + NULL, + NULL, + '1', + '0', + 'C', + '0', + '0', + NULL, + NULL, + 'admin', + '2025-09-01 16:38:52.620255', + NULL, + NULL, + NULL +); +-- 插入系统菜单数据插入的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509041017insert_sys_menu', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509081020add_table_tmp_orders_group_package.sql b/迁移记录-DB变更记录/202509081020add_table_tmp_orders_group_package.sql new file mode 100644 index 00000000..0a25302b --- /dev/null +++ b/迁移记录-DB变更记录/202509081020add_table_tmp_orders_group_package.sql @@ -0,0 +1,55 @@ + -- 创建序列 + CREATE SEQUENCE tmp_orders_group_package_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +CREATE TABLE "public"."tmp_orders_group_package" ( + "id" int8 NOT NULL DEFAULT nextval('tmp_orders_group_package_id_seq'::regclass), + "name" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "package_type_enum" int4 NOT NULL, + "organization_id" int8 DEFAULT NULL, + "practitioner_id" int8 DEFAULT NULL, + "tenant_id" int8 NOT NULL, + "delete_flag" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 0, + "create_by" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "create_time" timestamptz(6) NOT NULL, + "update_by" varchar(32) COLLATE "pg_catalog"."default", + "update_time" timestamptz(6), + CONSTRAINT "tmp_orders_group_package_pkey" PRIMARY KEY ("id") +) +; + +ALTER TABLE "public"."tmp_orders_group_package" + OWNER TO "postgres"; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."id" IS 'ID'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."name" IS '名称'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."package_type_enum" IS '组套包类型'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."organization_id" IS '科室id'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."practitioner_id" IS '参与者id'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."tenant_id" IS '租户ID'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."delete_flag" IS '删除状态'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."create_by" IS '创建人'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."create_time" IS '创建时间'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."update_by" IS '更新人'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package"."update_time" IS '更新时间'; + +COMMENT ON TABLE "public"."tmp_orders_group_package" IS '医嘱组合套餐'; + +-- 插入添加临时订单分组包表的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509081020add_table_tmp_orders_group_package', '1.0.0'); diff --git a/迁移记录-DB变更记录/202509081022add_table_tmp_orders_group_package_detail.sql b/迁移记录-DB变更记录/202509081022add_table_tmp_orders_group_package_detail.sql new file mode 100644 index 00000000..e46e460f --- /dev/null +++ b/迁移记录-DB变更记录/202509081022add_table_tmp_orders_group_package_detail.sql @@ -0,0 +1,58 @@ + -- 创建序列 + CREATE SEQUENCE tmp_orders_group_package_detail_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +CREATE TABLE "public"."tmp_orders_group_package_detail" ( + "id" int8 NOT NULL DEFAULT nextval('tmp_orders_group_package_detail_id_seq'::regclass), + "group_package_id" int8 NOT NULL, + "order_definition_id" int8 NOT NULL, + "order_definition_table" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "quantity" numeric(20, 6) DEFAULT 1, + "unit_code" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "tenant_id" int8 NOT NULL, + "delete_flag" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 0, + "create_by" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "create_time" timestamptz(6) NOT NULL, + "update_by" varchar(32) COLLATE "pg_catalog"."default", + "update_time" timestamptz(6), + CONSTRAINT "tmp_orders_group_package_detail_pkey" PRIMARY KEY ("id") +) +; + +ALTER TABLE "public"."tmp_orders_group_package_detail" + OWNER TO "postgres"; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."id" IS 'ID'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."group_package_id" IS '组合套餐id'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."order_definition_id" IS '医嘱定义id'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."order_definition_table" IS '医嘱定义表名'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."quantity" IS '数量'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."unit_code" IS '单位编码'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."tenant_id" IS '租户ID'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."delete_flag" IS '删除状态'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."create_by" IS '创建人'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."create_time" IS '创建时间'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."update_by" IS '更新人'; + +COMMENT ON COLUMN "public"."tmp_orders_group_package_detail"."update_time" IS '更新时间'; + +COMMENT ON TABLE "public"."tmp_orders_group_package_detail" IS '医嘱组合套餐明细'; + +-- 插入添加临时订单分组包详情表的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509081022add_table_tmp_orders_group_package_detail', '1.0.0'); diff --git a/迁移记录-DB变更记录/202509101025add_column_adm_practitioner.sql b/迁移记录-DB变更记录/202509101025add_column_adm_practitioner.sql new file mode 100644 index 00000000..c4275494 --- /dev/null +++ b/迁移记录-DB变更记录/202509101025add_column_adm_practitioner.sql @@ -0,0 +1,7 @@ + ALTER TABLE "public"."adm_practitioner" + ADD COLUMN "signature" text COLLATE "pg_catalog"."default" DEFAULT ''::character varying; + COMMENT ON COLUMN "public"."adm_practitioner"."signature" IS '签名图片'; + + -- 插入为adm_practitioner表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509101025add_column_adm_practitioner', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509101030add_column_wor_service_request.sql b/迁移记录-DB变更记录/202509101030add_column_wor_service_request.sql new file mode 100644 index 00000000..f66513b3 --- /dev/null +++ b/迁移记录-DB变更记录/202509101030add_column_wor_service_request.sql @@ -0,0 +1,8 @@ + + ALTER TABLE "public"."wor_service_request" + ADD COLUMN "parent_id" int8 DEFAULT NULL; + COMMENT ON COLUMN "public"."wor_service_request"."parent_id" IS '父id(适用诊疗套餐)'; + + -- 插入为wor_service_request表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509101030add_column_wor_service_request', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509161311 add_column_cli_reservation_record.sql b/迁移记录-DB变更记录/202509161311 add_column_cli_reservation_record.sql new file mode 100644 index 00000000..280f35e9 --- /dev/null +++ b/迁移记录-DB变更记录/202509161311 add_column_cli_reservation_record.sql @@ -0,0 +1,8 @@ + + ALTER TABLE "public"."cli_reservation_record" + ADD COLUMN "tooth_position" varchar(500) COLLATE "pg_catalog"."default" DEFAULT ''::character varying; + COMMENT ON COLUMN "public"."cli_reservation_record"."tooth_position" IS '牙位'; + + -- 插入为cli_reservation_record表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509161311 add_column_cil_reservation_record', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509180852 add_column_wor_device_dispense.sql b/迁移记录-DB变更记录/202509180852 add_column_wor_device_dispense.sql new file mode 100644 index 00000000..e4354d5a --- /dev/null +++ b/迁移记录-DB变更记录/202509180852 add_column_wor_device_dispense.sql @@ -0,0 +1,5 @@ +ALTER TABLE public.wor_device_dispense ADD preparer_id int8 NULL; +COMMENT ON COLUMN public.wor_device_dispense.preparer_id IS '配药人'; + -- 插入为wor_device_dispense表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509180852 add_column_wor_device_dispense', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509191411 add_column_tmp_activity_device.sql b/迁移记录-DB变更记录/202509191411 add_column_tmp_activity_device.sql new file mode 100644 index 00000000..053b1600 --- /dev/null +++ b/迁移记录-DB变更记录/202509191411 add_column_tmp_activity_device.sql @@ -0,0 +1,7 @@ + ALTER TABLE "public"."tmp_activity_device" + ADD COLUMN "unit_code" varchar(3) COLLATE "pg_catalog"."default" DEFAULT ''::character varying; + COMMENT ON COLUMN "public"."tmp_activity_device"."unit_code" IS '单位'; + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509191411 add_column_tmp_activity_device', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509231011 add_table_nd_review_prescription_records.sql b/迁移记录-DB变更记录/202509231011 add_table_nd_review_prescription_records.sql new file mode 100644 index 00000000..49f5c2bc --- /dev/null +++ b/迁移记录-DB变更记录/202509231011 add_table_nd_review_prescription_records.sql @@ -0,0 +1,65 @@ + + + -- 创建序列 + CREATE SEQUENCE nd_review_prescription_records_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +CREATE TABLE "public"."nd_review_prescription_records" ( + "id" int8 NOT NULL DEFAULT nextval('nd_review_prescription_records_id_seq'::regclass), + "prescription_no" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "encounter_id" int8 DEFAULT NULL, + "med_request_ids" text DEFAULT NULL, + "pass_flag" int4 NOT NULL DEFAULT 1, + "reason_text" varchar(500) COLLATE "pg_catalog"."default" DEFAULT ''::character varying, + "practitioner_id" int8 DEFAULT NULL, + "tenant_id" int8 NOT NULL, + "delete_flag" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 0, + "create_by" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "create_time" timestamptz(6) NOT NULL, + "update_by" varchar(32) COLLATE "pg_catalog"."default", + "update_time" timestamptz(6), + CONSTRAINT "nd_review_prescription_records_pkey" PRIMARY KEY ("id") +) +; + +ALTER TABLE "public"."nd_review_prescription_records" + OWNER TO "postgres"; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."id" IS 'ID'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."prescription_no" IS '处方号'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."encounter_id" IS '就诊id'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."med_request_ids" IS '药品请求ids'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."pass_flag" IS '通过标识'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."reason_text" IS '原因'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."practitioner_id" IS '审方人id'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."tenant_id" IS '租户ID'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."delete_flag" IS '删除状态'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."create_by" IS '创建人'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."create_time" IS '创建时间'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."update_by" IS '更新人'; + +COMMENT ON COLUMN "public"."nd_review_prescription_records"."update_time" IS '更新时间'; + +COMMENT ON TABLE "public"."nd_review_prescription_records" IS '农大审方记录'; + + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509231011 add_table_nd_review_prescription_records', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202509261212 add_column _doc_statistics_definition.sql b/迁移记录-DB变更记录/202509261212 add_column _doc_statistics_definition.sql new file mode 100644 index 00000000..1cab1228 --- /dev/null +++ b/迁移记录-DB变更记录/202509261212 add_column _doc_statistics_definition.sql @@ -0,0 +1,13 @@ +ALTER TABLE "public"."doc_statistics_definition" + ADD COLUMN "dict_name" varchar(50), + ADD COLUMN "dict_type" varchar(50); + +COMMENT ON COLUMN "public"."doc_statistics_definition"."dict_name" IS '字典名称'; + +COMMENT ON COLUMN "public"."doc_statistics_definition"."dict_type" IS '字典类型'; + + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202509261212 add_column _doc_statistics_definition', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510131311 add_column_elep_medication_request.sql b/迁移记录-DB变更记录/202510131311 add_column_elep_medication_request.sql new file mode 100644 index 00000000..dc8b641d --- /dev/null +++ b/迁移记录-DB变更记录/202510131311 add_column_elep_medication_request.sql @@ -0,0 +1,12 @@ +ALTER TABLE "public"."elep_medication_request" + ADD COLUMN "condition_def_id" int8, + ADD COLUMN "opsp_dise_code" varchar(255); + +COMMENT ON COLUMN "public"."elep_medication_request"."condition_def_id" IS '诊断定义id'; + +COMMENT ON COLUMN "public"."elep_medication_request"."opsp_dise_code" IS '慢病编码'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510131311 add_column_elep_medication_request', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510131411 add_column_adm_charge_item.sql b/迁移记录-DB变更记录/202510131411 add_column_adm_charge_item.sql new file mode 100644 index 00000000..0549c9e8 --- /dev/null +++ b/迁移记录-DB变更记录/202510131411 add_column_adm_charge_item.sql @@ -0,0 +1,7 @@ +ALTER TABLE public.adm_charge_item ADD procedure_id int8 NULL; +COMMENT ON COLUMN public.adm_charge_item.procedure_id IS '执行id'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510131411 add_column_adm_charge_item', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510151011 alter_table_request.sql b/迁移记录-DB变更记录/202510151011 alter_table_request.sql new file mode 100644 index 00000000..ee7452b0 --- /dev/null +++ b/迁移记录-DB变更记录/202510151011 alter_table_request.sql @@ -0,0 +1,22 @@ +ALTER TABLE public.wor_device_request ADD based_on_table varchar(255) NULL; +COMMENT ON COLUMN public.wor_device_request.based_on_table IS '请求基于什么'; + +ALTER TABLE public.wor_device_request ADD based_on_id int8 NULL; +COMMENT ON COLUMN public.wor_device_request.based_on_id IS '请求基于什么的ID'; + +ALTER TABLE public.wor_device_dispense ADD procedure_id int8 NULL; +COMMENT ON COLUMN public.wor_device_dispense.procedure_id IS '执行id'; + +ALTER TABLE public.med_medication_request ADD based_on_table varchar(255) NULL; +COMMENT ON COLUMN public.med_medication_request.based_on_table IS '请求基于什么'; + +ALTER TABLE public.med_medication_request ADD based_on_id int8 NULL; +COMMENT ON COLUMN public.med_medication_request.based_on_id IS '请求基于什么的ID'; + +ALTER TABLE public.med_medication_dispense ADD procedure_id int8 NULL; +COMMENT ON COLUMN public.med_medication_dispense.procedure_id IS '执行id'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510151011 alter_table_request', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510151413 add_talble_cli_condition_no_definition.sql b/迁移记录-DB变更记录/202510151413 add_talble_cli_condition_no_definition.sql new file mode 100644 index 00000000..7bcfdc30 --- /dev/null +++ b/迁移记录-DB变更记录/202510151413 add_talble_cli_condition_no_definition.sql @@ -0,0 +1,33 @@ + + +CREATE TABLE PUBLIC.cli_condition_no_definition ( + gl_no VARCHAR (255) NULL, + id bigserial NOT NULL, + tenant_id INT8 NULL, + delete_flag BPCHAR DEFAULT '0' NULL, + create_by VARCHAR (32) NULL, + create_time TIMESTAMPTZ (6) NULL, + update_by VARCHAR (32) NULL, + update_time TIMESTAMPTZ (6) NULL, + gl_name VARCHAR (255) NULL, + icd10_no VARCHAR (255) NULL, + icd10_name VARCHAR (255) NULL +); +COMMENT ON TABLE PUBLIC.cli_condition_no_definition IS '诊断各种编码定义表'; +-- Column comments +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.gl_no IS '国临疾病编码'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.id IS 'ID'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.tenant_id IS '租户id'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.delete_flag IS '删除状态'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.create_by IS '创建人'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.create_time IS '创建时间'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.update_by IS '更新人'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.update_time IS '更新时间'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.gl_name IS '国临疾病名称'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.icd10_no IS 'icd10编码'; +COMMENT ON COLUMN PUBLIC.cli_condition_no_definition.icd10_name IS 'icd10名称'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510151413 add_talble_cli_condition_no_definition', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510211012 add_column_tmp_orders_group_package_detail.sql b/迁移记录-DB变更记录/202510211012 add_column_tmp_orders_group_package_detail.sql new file mode 100644 index 00000000..ed6fe6f6 --- /dev/null +++ b/迁移记录-DB变更记录/202510211012 add_column_tmp_orders_group_package_detail.sql @@ -0,0 +1,20 @@ + +ALTER TABLE public.tmp_orders_group_package_detail ADD dose numeric(20,6) NULL; +COMMENT ON COLUMN public.tmp_orders_group_package_detail.dose IS '单次剂量'; + + +ALTER TABLE public.tmp_orders_group_package_detail ADD rate_code varchar(255) NULL; +COMMENT ON COLUMN public.tmp_orders_group_package_detail.rate_code IS '用药频次'; + + +ALTER TABLE public.tmp_orders_group_package_detail ADD dispense_per_duration int4 NULL; +COMMENT ON COLUMN public.tmp_orders_group_package_detail.dispense_per_duration IS '用药天数'; + + +ALTER TABLE public.tmp_orders_group_package_detail ADD method_code varchar(255) NULL; +COMMENT ON COLUMN public.tmp_orders_group_package_detail.method_code IS '给药途径'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510211012 add_column_tmp_orders_group_package_detail', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510211414 add_column_med_medication_dispense.sql b/迁移记录-DB变更记录/202510211414 add_column_med_medication_dispense.sql new file mode 100644 index 00000000..bfe7406d --- /dev/null +++ b/迁移记录-DB变更记录/202510211414 add_column_med_medication_dispense.sql @@ -0,0 +1,7 @@ +ALTER TABLE public.med_medication_dispense ADD summary_no varchar(255) DEFAULT ''::character varying NULL; +COMMENT ON COLUMN public.med_medication_dispense.summary_no IS '汇总编号'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510211414 add_column_med_medication_dispense', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510211414 alter_table_med_medication_dispense.sql b/迁移记录-DB变更记录/202510211414 alter_table_med_medication_dispense.sql new file mode 100644 index 00000000..bfe7406d --- /dev/null +++ b/迁移记录-DB变更记录/202510211414 alter_table_med_medication_dispense.sql @@ -0,0 +1,7 @@ +ALTER TABLE public.med_medication_dispense ADD summary_no varchar(255) DEFAULT ''::character varying NULL; +COMMENT ON COLUMN public.med_medication_dispense.summary_no IS '汇总编号'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510211414 add_column_med_medication_dispense', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510211511 alter_column_wor_supply_delivery.sql b/迁移记录-DB变更记录/202510211511 alter_column_wor_supply_delivery.sql new file mode 100644 index 00000000..d6e106d8 --- /dev/null +++ b/迁移记录-DB变更记录/202510211511 alter_column_wor_supply_delivery.sql @@ -0,0 +1,6 @@ +ALTER TABLE public.wor_supply_delivery ALTER COLUMN supplier_id DROP NOT NULL; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510211511 alter_column_wor_supply_delivery', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510221011 add_column_tmp_orders_group_package_detail.sql b/迁移记录-DB变更记录/202510221011 add_column_tmp_orders_group_package_detail.sql new file mode 100644 index 00000000..bc2f59ed --- /dev/null +++ b/迁移记录-DB变更记录/202510221011 add_column_tmp_orders_group_package_detail.sql @@ -0,0 +1,7 @@ +ALTER TABLE public.tmp_orders_group_package_detail ADD dose_quantity numeric(20,6) NULL; +COMMENT ON COLUMN public.tmp_orders_group_package_detail.dose_quantity IS '小单位单次剂量'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510221011 add_column_tmp_orders_group_package_detail', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510271011 add_column_ med_medication_definition&med_medication_request.sql b/迁移记录-DB变更记录/202510271011 add_column_ med_medication_definition&med_medication_request.sql new file mode 100644 index 00000000..b33db798 --- /dev/null +++ b/迁移记录-DB变更记录/202510271011 add_column_ med_medication_definition&med_medication_request.sql @@ -0,0 +1,11 @@ + ALTER TABLE public.med_medication_definition ADD dosage_instruction varchar(255) NULL; + COMMENT ON COLUMN public.med_medication_definition.dosage_instruction IS '用药说明'; + + + ALTER TABLE public.med_medication_request ADD dosage_instruction varchar(255) NULL; + COMMENT ON COLUMN public.med_medication_request.dosage_instruction IS '用药说明'; + + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510271011 add_column_ med_medication_definition&med_medication_request', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510271311 add_column_requests.sql b/迁移记录-DB变更记录/202510271311 add_column_requests.sql new file mode 100644 index 00000000..27e5b9af --- /dev/null +++ b/迁移记录-DB变更记录/202510271311 add_column_requests.sql @@ -0,0 +1,12 @@ + ALTER TABLE public.med_medication_request ADD generate_source_enum int4 NOT NULL DEFAULT 1; + COMMENT ON COLUMN public.med_medication_request.generate_source_enum IS '生成来源'; + + ALTER TABLE public.wor_device_request ADD generate_source_enum int4 NOT NULL DEFAULT 1; + COMMENT ON COLUMN public.wor_device_request.generate_source_enum IS '生成来源'; + + ALTER TABLE public.wor_service_request ADD generate_source_enum int4 NOT NULL DEFAULT 1; + COMMENT ON COLUMN public.wor_service_request.generate_source_enum IS '生成来源'; + + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510271311 add_column_requests', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510281101 add_column_adm_practitioner.sql b/迁移记录-DB变更记录/202510281101 add_column_adm_practitioner.sql new file mode 100644 index 00000000..995646a6 --- /dev/null +++ b/迁移记录-DB变更记录/202510281101 add_column_adm_practitioner.sql @@ -0,0 +1,7 @@ +ALTER TABLE "public"."adm_practitioner" + ADD COLUMN "pos_no" varchar(255) DEFAULT ''; + +COMMENT ON COLUMN "public"."adm_practitioner"."pos_no" IS 'pos机编号'; + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510281101 add_column_adm_practitioner', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202510301113 add_column adm_healthcare_service.sql b/迁移记录-DB变更记录/202510301113 add_column adm_healthcare_service.sql new file mode 100644 index 00000000..da0a66cd --- /dev/null +++ b/迁移记录-DB变更记录/202510301113 add_column adm_healthcare_service.sql @@ -0,0 +1,7 @@ +ALTER TABLE "public"."adm_healthcare_service" + ADD COLUMN "bus_no" varchar(255); + +COMMENT ON COLUMN "public"."adm_healthcare_service"."bus_no" IS '编码'; + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202510301113 add_column adm_healthcare_service', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202511031415 add_column tmp_orders_group_package_detail.sql b/迁移记录-DB变更记录/202511031415 add_column tmp_orders_group_package_detail.sql new file mode 100644 index 00000000..9df9308f --- /dev/null +++ b/迁移记录-DB变更记录/202511031415 add_column tmp_orders_group_package_detail.sql @@ -0,0 +1,5 @@ +ALTER TABLE public.tmp_orders_group_package_detail ADD group_id int8 NULL; +COMMENT ON COLUMN public.tmp_orders_group_package_detail.group_id IS '组号'; + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202511031415 add_column tmp_orders_group_package_detail', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202511031515 add_column adm_charge_item.sql b/迁移记录-DB变更记录/202511031515 add_column adm_charge_item.sql new file mode 100644 index 00000000..22d35e09 --- /dev/null +++ b/迁移记录-DB变更记录/202511031515 add_column adm_charge_item.sql @@ -0,0 +1,8 @@ +ALTER TABLE public.adm_charge_item ADD dispense_table varchar(255) DEFAULT ''::character varying NULL; +COMMENT ON COLUMN public.adm_charge_item.dispense_table IS '发放所在表'; + +ALTER TABLE public.adm_charge_item ADD dispense_id int8 NULL; +COMMENT ON COLUMN public.adm_charge_item.dispense_id IS '发放ID'; + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202511031515 add_column adm_charge_item', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202511041214 add_table doc_inventory_item_static.sql b/迁移记录-DB变更记录/202511041214 add_table doc_inventory_item_static.sql new file mode 100644 index 00000000..5f003a8b --- /dev/null +++ b/迁移记录-DB变更记录/202511041214 add_table doc_inventory_item_static.sql @@ -0,0 +1,50 @@ +-- public.doc_inventory_item_static definition + +-- Drop table + +-- DROP TABLE public.doc_inventory_item_static; + +CREATE TABLE public.doc_inventory_item_static ( id bigserial NOT NULL, category_code varchar(255) DEFAULT '0'::character varying NOT NULL, "name" varchar(255) DEFAULT ''::character varying NOT NULL, inventory_status_enum int4 DEFAULT 0 NOT NULL, supplier_id int8 NOT NULL, description_text varchar(2000) NULL, unit_code varchar(255) DEFAULT ''::character varying NOT NULL, quantity numeric(20, 6) DEFAULT 0 NOT NULL, lot_number varchar(255) DEFAULT ''::character varying NOT NULL, production_date timestamptz(6) NULL, expiration_date timestamptz(6) NULL, location_store_id int8 NULL, location_id int8 NOT NULL, trace_no varchar(50000) DEFAULT ''::character varying NOT NULL, packaging_levels int4 DEFAULT 1 NOT NULL, tenant_id int8 NOT NULL, delete_flag int4 DEFAULT 0 NOT NULL, create_by varchar(32) DEFAULT ''::character varying NOT NULL, create_time timestamptz(6) NOT NULL, update_by varchar(32) NULL, update_time timestamptz(6) NULL, item_table varchar(255) DEFAULT ''::character varying NOT NULL, item_id int8 NOT NULL, price numeric(20, 6) NULL, sale_price numeric(20, 6) NULL, bus_no varchar(255) DEFAULT ''::character varying NOT NULL, min_unit_code varchar(255) DEFAULT ''::character varying NOT NULL, part_percent numeric(20, 6) DEFAULT 0 NOT NULL, supplier_name varchar(255) DEFAULT ''::character varying NOT NULL, location_name varchar(255) DEFAULT ''::character varying NOT NULL, location_store_name varchar(255) DEFAULT ''::character varying NOT NULL, manufacturer_text varchar(2000) NULL, chrgitm_lv int4 DEFAULT 3 NOT NULL, total_volume varchar(255) DEFAULT ''::character varying NOT NULL, py_str varchar(255) DEFAULT ''::character varying NOT NULL, wb_str varchar(255) DEFAULT ''::character varying NOT NULL, CONSTRAINT doc_inventory_item_static_pkey PRIMARY KEY (id)); +COMMENT ON TABLE public.doc_inventory_item_static IS '库存项目管理'; + +-- Column comments + +COMMENT ON COLUMN public.doc_inventory_item_static.id IS 'ID'; +COMMENT ON COLUMN public.doc_inventory_item_static.category_code IS '物品类别'; +COMMENT ON COLUMN public.doc_inventory_item_static."name" IS '名称'; +COMMENT ON COLUMN public.doc_inventory_item_static.inventory_status_enum IS '库存状态'; +COMMENT ON COLUMN public.doc_inventory_item_static.supplier_id IS '供应商id'; +COMMENT ON COLUMN public.doc_inventory_item_static.description_text IS '说明书'; +COMMENT ON COLUMN public.doc_inventory_item_static.unit_code IS '最小单位'; +COMMENT ON COLUMN public.doc_inventory_item_static.quantity IS '当前库存数量(最小单位数量)'; +COMMENT ON COLUMN public.doc_inventory_item_static.lot_number IS '产品批号'; +COMMENT ON COLUMN public.doc_inventory_item_static.production_date IS '生产日期'; +COMMENT ON COLUMN public.doc_inventory_item_static.expiration_date IS '失效日期'; +COMMENT ON COLUMN public.doc_inventory_item_static.location_store_id IS '库位'; +COMMENT ON COLUMN public.doc_inventory_item_static.location_id IS '仓库'; +COMMENT ON COLUMN public.doc_inventory_item_static.trace_no IS '追溯码'; +COMMENT ON COLUMN public.doc_inventory_item_static.packaging_levels IS '追溯码包装层级'; +COMMENT ON COLUMN public.doc_inventory_item_static.tenant_id IS '租户ID'; +COMMENT ON COLUMN public.doc_inventory_item_static.delete_flag IS '删除状态'; +COMMENT ON COLUMN public.doc_inventory_item_static.create_by IS '创建人'; +COMMENT ON COLUMN public.doc_inventory_item_static.create_time IS '创建时间'; +COMMENT ON COLUMN public.doc_inventory_item_static.update_by IS '更新人'; +COMMENT ON COLUMN public.doc_inventory_item_static.update_time IS '更新时间'; +COMMENT ON COLUMN public.doc_inventory_item_static.item_table IS '项目'; +COMMENT ON COLUMN public.doc_inventory_item_static.item_id IS '物品编码'; +COMMENT ON COLUMN public.doc_inventory_item_static.price IS '采购单价(包装单位)'; +COMMENT ON COLUMN public.doc_inventory_item_static.sale_price IS '销售单价(包装单位)'; +COMMENT ON COLUMN public.doc_inventory_item_static.bus_no IS '项目编号'; +COMMENT ON COLUMN public.doc_inventory_item_static.min_unit_code IS '最小单位'; +COMMENT ON COLUMN public.doc_inventory_item_static.part_percent IS '拆零比'; +COMMENT ON COLUMN public.doc_inventory_item_static.supplier_name IS '供应商名称'; +COMMENT ON COLUMN public.doc_inventory_item_static.location_name IS '库房名称'; +COMMENT ON COLUMN public.doc_inventory_item_static.location_store_name IS '货位名称'; +COMMENT ON COLUMN public.doc_inventory_item_static.manufacturer_text IS '生产厂商文本'; +COMMENT ON COLUMN public.doc_inventory_item_static.chrgitm_lv IS '医保等级'; +COMMENT ON COLUMN public.doc_inventory_item_static.total_volume IS '规格'; +COMMENT ON COLUMN public.doc_inventory_item_static.py_str IS '药品名称拼音码'; +COMMENT ON COLUMN public.doc_inventory_item_static.wb_str IS '药品五笔码'; + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202511041214 add_table doc_inventory_item_static', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202511051215 add_table adm_change_price_record.sql b/迁移记录-DB变更记录/202511051215 add_table adm_change_price_record.sql new file mode 100644 index 00000000..91b216b1 --- /dev/null +++ b/迁移记录-DB变更记录/202511051215 add_table adm_change_price_record.sql @@ -0,0 +1,38 @@ +-- public.adm_change_price_record definition + +-- Drop table + +-- DROP TABLE public.adm_change_price_record; + +CREATE TABLE public.adm_change_price_record ( id bigserial NOT NULL, location_id int8 NULL, applicant_id int8 NULL, item_category_enum int4 NULL, item_id int8 NULL, origin_buying_price numeric(20, 6) NULL, origin_retail_price numeric(20, 6) NULL, approver_id int8 NULL, approval_time timestamptz(6) NULL, tenant_id int8 NULL, delete_flag bpchar(1) DEFAULT '0' NULL, create_by varchar(32) DEFAULT ''::character varying NOT NULL, create_time timestamptz(6) NOT NULL, update_by varchar NULL, update_time timestamptz(6) NULL, item_quantity numeric(20, 6) NULL, difference_retail_price numeric(20, 6) NULL, bus_no varchar(255) DEFAULT ''::character varying NULL, description varchar(255) NULL, applicant_time timestamptz NULL, item_table varchar(50) DEFAULT ''::character varying NULL, new_buying_price numeric(20, 6) NULL, new_retail_price numeric(20, 6) NULL, unit_code varchar(255) DEFAULT ''::character varying NULL, status_enum int4 DEFAULT 0 NULL, lot_number varchar(255) DEFAULT ''::character varying NULL, reason varchar(2000) NULL, difference_buying_price numeric(20, 6) NULL, CONSTRAINT adm_change_price_record_pkey PRIMARY KEY (id)); +COMMENT ON TABLE public.adm_change_price_record IS '修改价格记录表'; + +-- Column comments + +COMMENT ON COLUMN public.adm_change_price_record.id IS '本表id'; +COMMENT ON COLUMN public.adm_change_price_record.location_id IS '批次号'; +COMMENT ON COLUMN public.adm_change_price_record.applicant_id IS '改价申请人id'; +COMMENT ON COLUMN public.adm_change_price_record.item_category_enum IS '目标枚举 药品、耗材、诊疗、挂号'; +COMMENT ON COLUMN public.adm_change_price_record.item_id IS '药品ID、耗材ID、诊疗ID、挂号ID'; +COMMENT ON COLUMN public.adm_change_price_record.origin_buying_price IS '原进货价'; +COMMENT ON COLUMN public.adm_change_price_record.origin_retail_price IS '原新价格'; +COMMENT ON COLUMN public.adm_change_price_record.approver_id IS '审批人ID'; +COMMENT ON COLUMN public.adm_change_price_record.approval_time IS '审批时间'; +COMMENT ON COLUMN public.adm_change_price_record.tenant_id IS '租户ID'; +COMMENT ON COLUMN public.adm_change_price_record.delete_flag IS '删除标识 默认 0 未删除'; +COMMENT ON COLUMN public.adm_change_price_record.item_quantity IS '当前品库存量'; +COMMENT ON COLUMN public.adm_change_price_record.difference_retail_price IS '零售价盈负差'; +COMMENT ON COLUMN public.adm_change_price_record.bus_no IS '当前业务批次号'; +COMMENT ON COLUMN public.adm_change_price_record.description IS '改价原因'; +COMMENT ON COLUMN public.adm_change_price_record.applicant_time IS '改价申请时间'; +COMMENT ON COLUMN public.adm_change_price_record.item_table IS '业务表名药品、耗材、诊疗、挂号'; +COMMENT ON COLUMN public.adm_change_price_record.new_buying_price IS '新进货价'; +COMMENT ON COLUMN public.adm_change_price_record.new_retail_price IS '新零售价'; +COMMENT ON COLUMN public.adm_change_price_record.unit_code IS '物品计量单位'; +COMMENT ON COLUMN public.adm_change_price_record.status_enum IS '审批状态'; +COMMENT ON COLUMN public.adm_change_price_record.lot_number IS '批次号'; +COMMENT ON COLUMN public.adm_change_price_record.reason IS '条件理由'; +COMMENT ON COLUMN public.adm_change_price_record.difference_buying_price IS '进货价盈负差'; + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202511051215 add_table adm_change_price_record', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/202511061215 ALTER TABLE sys_oper_log.sql b/迁移记录-DB变更记录/202511061215 ALTER TABLE sys_oper_log.sql new file mode 100644 index 00000000..3b641513 --- /dev/null +++ b/迁移记录-DB变更记录/202511061215 ALTER TABLE sys_oper_log.sql @@ -0,0 +1,6 @@ +ALTER TABLE sys_oper_log ALTER COLUMN oper_param TYPE text; +ALTER TABLE sys_oper_log ALTER COLUMN json_result TYPE text; +ALTER TABLE sys_oper_log ALTER COLUMN error_msg TYPE text; + -- 插入为tmp_activity_device表添加列的迁移记录 +INSERT INTO __MigrationsHistory (MigrationId, ProductVersion) +VALUES ('202511061215 ALTER TABLE sys_oper_log', '1.0.0'); \ No newline at end of file diff --git a/迁移记录-DB变更记录/openHis数据库变更操作.docx b/迁移记录-DB变更记录/openHis数据库变更操作.docx new file mode 100644 index 0000000000000000000000000000000000000000..d06ad4c4460d46e55a9c8fecaaa3d3fc52904fc7 GIT binary patch literal 58892 zcmeEtbx>SguqW;WcY+5C?(Q1gLU4C?ceen6;2MIvJA-SG;O=gN&!Dq>-`iKUTW_~& z|9^X{?%e9>bNik-(|u0=etoX00xTRZ6ao|y6ciLCRA}adK`b;BlpO*T6b=*;jGm;E zqq~KpyOE}kvxS=hi?@S4#V6Xc7LO7c-Gic1QEgS1O*2%m$d)=s}h9;HzJMjtd(mcwROyv<~s$>QOI z`6H_WoAk>70m`S$WHy$bU_=SMS8*-GHwoz;58}@k#FbXnS#6s&&J?d(!^;;Mk>d`D z`KV{Wx*a)*DpHK)lVNa3EE zzj;Z(b^R#_e3(95Ud@ReoQmOG+&egaV}E$tj6TIhY}pRw3pmY^Y7+4iiPly}wou^N zcw>wdefK^H1Qts5e+yxOd77^dgVXc~+1T(p)z8G)Pynd}RTwsLxYh!w)pJ&_+fricPjEJf?n zIhm6Z`!^d51~pGp+Bgzy8Sa^g?b%pA%JYu9ukT204a5vjCPzzaty?8-xsp~8XugG&85Q_P*6yIP*7O!gW~1nYR+ozWai=U zzRvx#z?~bMxvdR1LjtWXA-y}VGubvwyXZfvHE*GZvyvSWF75*7#h~b^V4xA8?nmk9 zn$0R(s+w%bmOLGQ@i+=)NZD>S5_jWT?`E-P>8LW@YINLOcUxUl`~Kz!FL1=ghf zdHHFOG!(NbsnAcp9ySGAeN+pB@=`TCxRUJ4%MSg$O^!3)7e&@j*UqWShF?ww)J{V* znhCbQDsfWQ+plP?L@4-CYW=(z^1Z;ttQo5jsU_*?MB!qfq@g}L+@<6TRcA)g`uZ^= zG^0Yd!m`d*ZYWD}(SegBRdj(dvC8W8rcb3Z+;XrIzhdHd6W)^ZdR^5=SW9 z#Gy%41ck@2f9g`xge9|9jV1Q<;Iu1~MXH$5O3R#hc#A4zW!5Qu}8wy=9iLBQNisLP*phaRAOH{nT-dL=fZia@o zv==$2bzbYGS{x?5daOkVU10Fw7QQ8QibkFZt&nB-Mk0>^IUcTF$C+;dHAO!5%aL~^ zww{`FHPaG0frfV$j;nhH2T2SS-qh;;(XUQhsH2rnL=+5GKN#Y<&$L8!c+=w9l5LBX zDosekT*~F31;GqDC1+wav5qjDS?6v1vgu*#G#V8{1Htg=jhFMAVZf~X&3^hNm8+Bc zFF&wQa|ZX_a(|fLnCfCH6n~KS96#Hlk>8NgA<`v6s+XYXr^Z&_J89ey-2h@@`%7mt zS@4M%*>n3WUfQl2-%n0@EWnSO{rp5y>8@>8z@n_g86U^u9T7qyGoq+vR3`}-abfo3 z#&`NremT9;t5|R{Ccv!&eZ#Hi#^ookp#1592MD>__q{EOn!K;>wgO%T-g`Tp6@u=l zu>p%4Mp4J0kszB*pNC%$q23jLYY4l@fQv_yopyfOLF;S2GcRCWw_8@1Q~NmYD`GG5 zpq|#|l^1X_$ecRz#?7B4<%#wW|s?x}a&$Xv=06NxNv)3WLDS`s)7As8}7 z&DflZ+8i#O6x@oq&h0&CbuJVuMP-T_P;*}&SBO`oNB#&?iek?)eTU<1g@Wacc`p$n zTg^N|THWj*vTPmLxbjH|*l0HmG`#$5>GbN9a50f^QA>x=k`=~z)a8I?4MC_eBR4~g zEW8FI22ZP~IQj+!)Yb$pvxjQ z=P*IR;ljuqp@pW@Qr~4tgs(}vWPr*#(E(lF6i#lGM2~evhLtApRHv9V67TI&_?_kV z`BZ__>$($z2|Cj58~Eo(X~Yp?J~t*+THypDHNo+r)SyR! zywOtqaN|t>jcOq9FiRp-A+lk#k(do9vvQE``bcE6egKPMR9hEaVtel+sZG0X>oC=z zHR*YX?<{Zr;dcu?tF>Fj;rLU5*>%jwe5J4}Zk!o42M-mNR9RZlWVb=OlC~E{rz3l$ zGJU~i#P@XOLbX-wM#BYr1Ag%b^Hady9pw6NqL5LN>&f5f&_ZSP5kTNNvEX$!Zb5FTo}@!hl*$B5tjwzZ|iAn#xze zotp0Qd06+}#Nmdy##f;oo-4Xm{}KeHWF&O$I9q=P3{5Q@!txmc@X06KlR0{yk#pzO z40zpUD>+?sA1w*whZ2Gw#$2Nr3{7LXBBm7+KJL~_`gcLUCbE9denM$ij69N^U41jV zE!P-vbSEoBE6E}Wx~ti=v-c7?yLHRhk5^~p>rBSeHVPd>{bQZxE*57(EymB&oE4&B|(mSwF3${&I|oM5N*7O8r^C}P5T>{Q0!-Z+eF(erx^e>1m^ zJfcs=D5*3X#2Qqpe3nzE!dQBC6%sS1BMh%iOusEk%4%kAu4x0@dyNq4)ukC5#_f!A za7q6yMiVH4?PxHo^*C?-K4tgn;CQHHkf`vJhv>{w|1z#as=5Y51)Z$W#`c) zLa{t`+RIT#Z9G~X!3+81`b9uvIB$#IkLT{?!DZh~f>vYSWhqV03k5fQ`pW$o9xSqP zV%IAcKq@8u)V2tce$2~D?AC%#Heysaj?Xk zy}k}VD4RWl5-vy*E?Dy+mm-5Ncl)%1U=um?7Ikk(MeBVu&4%?S?xmj9wXT(;H&v+` zsR|!TmF|9Z`1di|KOTJ=+f8rl#A|xWPv1hV8l@8z zg6wx5R*U)yl61D#g8g_yC|5StZ(1Dv$n~MK_em-?^f0?l&PK zk@bbB`f7jJ>`UuSe)}WaV~P;5@$k^CZ4v7?z6i(rdu%?RbtYWsZ7z@#Pm9=XhF=|Y z+qn#jsij(fXYian4VS1_l_S`V59vYVj65Jrqhty|J$W8_yEF@y2d=5~-Ais=Y|a@I zc097T{c&06O2$|CHQ&62KbelwMc>S8c^)=QpgZ;b+$=heG_mM?V z?asCuoRDvKiaAm@&7Gi#7Le>89!lv4=x2HjG9lhE=)N=n>Wn&zh(~#IQD>yAUKkL_QFAzH;sJ(=;0vn7rw~hiId=W*vX(=`Vp z-L2e{f{a=vS{JUv6kPIk(H_DT@oDsg7KeMKT9LN0w0*7%+K4MaU@z$Uvo1%7SquXA z&ucisHQl>`a2(f6?}=F@#1Wx_!p^J&CByOEhf5DAdStq$*2%HohRWOCVOIDVFe7Ws?ouZ;7p<(K%{{Gbg&LkhZe=k5v|R+tfG`MGrF zl=YKDL`J=1WN@)aL_~lsK1NOEj3T0s0Lg0UOQ7Ok%~XjBjjQFxnWF*)&yVDW4fyh+ zq1Wmj=-aWX{d@$;h2Kh$kMGda&?#xGEnK4B2C-+MG%E$nfA(cDu&@Vzo3CwwpTL(X z0?*sTLW3WhAfHiIq4+20^Q!0-e?MkDSEAV1rybG3wMiW^{gF~F)johnPo$Px-e(Y* z!Gy8b_L9#-5*&SdBs%G;^+=aHQ1>v@NQu!|)6HN}rnP!qTONa3As{ys;Fqa8l=GuY znWHE)?=O{cowbQPpijohG|wiw>HWeue;?*RM$a=ntG{F)i|6`_0(p?--0JoNk5la* zgvY)LC-Y+AVYz->I0o(CFr2GD7$>f!I}|Dq6=nU3iM^f=m(|e=UH8>LDdGt4lnGtpWco@4`eUxl|3vhM#BtHl8Zv;X^^m`V?T#yWNeZY26mWhQ3Tq6Jwx6N z$vbcJOT1?IYCj1?v+dwc%cyT8599uG1$;oDCCr58 za4X?1wYAuw(WXY6DpQ5UiQZAeVOkG*F2+b3PR!pKet_dhkmbGd+`0G+`<+Q>!s@1K znY#f=x~3Pupzv=?;=XaPnP`JMb811((jv)Px>u)T-2?RA6`~IqaftLloQ!X2!@JJw z!mc+JqxHL=*uG(6VjJQ1E}vRBd(qi<47xAUk!b=zFdA}AU*Al=S^XgXAk{_yV{#I~ zvT6D4&RYm+_2!CCkVkZ03S|kbFd_a)33nXZ$+1m_aytQ+#)7?4Zp4Yi=HkAzx}LKD zIh+r7mTG%y~eZPp#=N^5^9;3h_qnPQPLwKV>93^$TG7R9$R zBdRjfgo3xCKhrNyP%d&G`V>{oEm0B8Inhx~9;&IN?Hq$vCQh$sR}WuUSe~iS*b(Y5 zjEXtb(;c~sa%+s7YKRfyBU$^?eW2IVjL@={cq(oT?yD3wN6n>mjd~vi3$#J-rkHLr zoJ6YYDu3%DAeB2Krp*DPa$!~IvJC!AF$a)*OTjW9C_O3M3X2uGbtXl#U{4HC%Fgob zSK`=LQet*taS02)=*>=5bai|1cGkI2k`X7~Dm_iI8VMTI^q7jsrKua$8q=!|P9|g0DL%5Au(IawkZi%qMbC+Ai06vl5H4=97IP&z{g8U5 zxhnU)hKu{c`+CZ*KpvO5jL0wPZj|#|dVGe*$)QyMV$k)X)+ZG2nIW0bejIA+VmwPB zr@l;A4OkA>B#9%LW1DD&d`x^ygDy|w<MSU6aoXZR@MYLkuxar#k3d*jzO1lw`d-_t(aRY;+m>Nn-Z zgi=Vij~6#tFNO^ieW^6nNVH{e^(pW+YF5**W2Pv0?X-zsr8d!lXxu(M*K?ZaTW+lp zK2Edxdv0}s4nePzeomGRDloyCS8@_Rl1|3iZHnQIGm(3F%#^wA3Gea6f~wNF1LTy? zdB>t(*+(5}TTm;N*osS`CF)6k&!cOO$Fq<20|zLflDEf9h)u($%ouUD&E3mJ`E_a) zujSm8aFPbxF=vU)!f%x1z&5I@ow4PR4JyANLXDKgGvB>5k;H72XW{YekE%=}XZO}% zC_+DBlGQ*6_P55l-qjD?8+}FHVR;UEgx;#8I}6+ve1AIg!ZzW1HCI1GbPpCa^lki* zJ-3##{)X`s$)GW5`J!a`a*2 z>D@4DenHyJI5%;$84jkIca0Uj~!6&56H zWC?tS>9@iBwBOp^pvxX??{*3<01oBF9TtMV&TV0!hevy3t45)!gnG@nr|T1=FcH!+ zBj@1xR+bTPfd?WR8ShnqFH7g==dXn1%aRFdn{UFZ7tP7>h(7t_(!ko80Yr4Yogus~ zf~f;=2@m?JRYG%#`?YAK2x*UjMf-9GPJq8^p6!!`ez?VOy}Pw&q6pREkgi>5mAcUl zhE&YUXO2IuKp;$s>{rEJ&wJhT!jiJsh2bay*N_;nWAO>bsmj~sUUGcY?Ht)NF#T74 zq~NC?&tX_;I-9rhOVahMyQ>5)RFbZOn`b{yMA+l63))Bs9{8@d?Tn=?N)EJjaW*$s zNgwD;KiK^p!C0q@a=AVjz&TKDqTjyxq@P07F<_(>LVdMt;jet_yoA0-<+)=Qpug=> z17Q$+ceZc!IAOCj{?LjTAe&B=tciZI*rMmsb~W)6?Q7n2-b>$37L^M7X*wC*(pc)} z+T;4Z&!=t{Agz~;;v3xVCZX~VK|RzxMiG3gl{WjBXU|qQ<{)l=?R7?uhEl6YudClB zegVy=qb3tGok|w45C;~Ln`r^rQ5K^B?q__CZmDub608q28aJtuT~qD5D-;Yr%=xK4 z+)$FZQXtQE`F1CZe)$9YIbf~O?R>#i1&Z$C!t=tM!7ADnhnQ_0e%9tV50IOfonE9z4+V8no1Nss8rux~~4|nib*pR|U zCIAv@_Nj1aYVkktff72SCt6Yyvdjqm%&Wh@P`!AdobiJ=SMP{7X1@mf|s|#=L zitJs5J-+u;niw9W%^(9V?+3M$Og>Z~ZO2o)9HSw3%qnVM&$_C z*Ctx&c0}seRJRi$M#y{h;J>CARXlEq7VlF$6gCtT*?&&)77nHs=H@nzR&K0L_7*Cp zwiagY>@21>j_2Bb_8MA*5L!m{kD(ZvxZO_})HiIvPp0d)kWK5uX`iK*Whre{Th~wzs7*f{sy&V5Mmoa2r~h0PTCXd z(8zt(54rwFc}t+TsgorIqbZ2v)nGr+hFD0Y@%VI~w4>F$`d2W@AL@=uHh=&>KYz0j zKP-d+3_H3za^*M(B%_FXJeSb7+J>Nu#1<7tQzH&tDa}OwAPF-2795|sJG2>wc;(2} zR^SNu_B}GU%{gD7hJx&7tt_`|Ua>Y+FwnposaCaIn72f=PYXQ7IO@^=)I77F53{db z$D6d`-guLlU$VJ?GU`;!b|NoJhK&_M-yQil+25~Mmw)m^(z$)N^lWhX)`&R?Z5s^2 ziDOp#9YC)1{3dYB#q!cq(tH=T~M;$%>Lj(#m!w}&@0M;!MMbFWI{O291i zpelV5cDCL?NU$KWd~~_BP?~)-t;Y3WWZZyJz>jvY+Tmd0f>Ds)>C!aEUJ(v?K6pDD z#A@)g8>Nw75@cDFwg2>WHyt@)%$bV8J-S{lj?f`)m@2fndxND!st*q%wmMXhSaC4r zx|yMnff#j2@JHwzj`Fo>-6y82>u-#t3JY9AIFvgNHba-^a8JKHmA+2LBAi*iaxJ{< zw0N2nZP;@Xx_^yZbYx#`lF2qGZO&5i&=quAy7lnr>N}os!sgLs{w|O``L&XJQ5Q|u ztb6Qt^S9HFx~NVZ*@{9=JS1q@jzw7V=ILK2D z>SALG{HX{!2!U<)nq#y{F6A7oZg~PDRMviRnq}S*G88?sac{4PqiQ&zw3%L9uVL|l zut%${;LVc>(-l9vzOEhgDL?jR7B7)?%WRKJ3EkPUH4|Tl&;RhR2mQPGG=_drqpkhlpbGVsda`n_yPGMp6X(QTx#901->;7WUrR@(n`=?wU>u~K zT5!ACXOG^Wo)EmMFd&81LXv|G(@=L*?cw}5tn_1 zmymzD;kEKD@#ZK2zj~yC$kP2}e&6NI_6~%7Iq$r+!Z;lHK3>#)Q!jCs;pT;YfY^E9 zAozP~E=~dW$L1PcV$Pdhu6J$a-wTFPO{H?W%+LyY9~Bi(Q&G4yOZCfTtm9%`3Xjs_ z8s)Dv)zRr_;E`#2hEE9qAU;BIh1)a+DQi2?TkzgTS@|&wZP0bxi~yjqWTgoU%|!ZW%iVq(^LbpGFhXj;jpP_T@96N zT*vq@*fXBu1x6v;dP`NA`)!l{(a^7nZuWy_5!XB>gJ$Mm-A&frBWTr;ms6(^Mt?QZX4m-Nf(<+H!tL7#35|=GNk7z6t2D?5l{-tE5i0)Yb+~ z+-4m;t&}0)p7k}81$H-LxBg5pM+A>hl)`V(|H9R>TuP*yV?ui3;~P{1m88ZSr&9hA z#O+bumn9SwvJTxQ8z!z?SOJ9B%`OE;u3&ZS_2h@F!3Vu>efZA_8s&e2I7%p5O{s6< z$xu-Lod2gBoP)*L(JDq&Sr#3I_@BGb<>jQ*p`f6LprBwVk^b55RF}uI`hJ0SQ=f@=9cxmy%S|6aX^=)Hw*~&G>F@+rs?Vxds;Bv($X0t{Q_Dknfj?mCL~9PGvvSeUuNty> zU)#LIV!J@f?;8GB90?O99EviDFvRQAq8JJiv_vo_1so>yu0|H(`}bl{8&2%_f`yHNU7K6<6i#e4g_^X@ca%V@9#}w5o;!4BQ-Xvtnu%`(n|6GvkTTuC=NVl zs5qF+T?lo4Lsk~C`2r4|q4!1NitP8Qr@x=MoRC6nCAM>cfqS_Ftm8V<%3Zfpf|!zG zq%JSTM@C&|b_@F_S5NA{z<1k{tw52Zv@>EZtDSiVR{h3dHx_9of1rXv$8|A5up+-r zzhdaN#^CRlX|E)`WZfZF!eWtyr)2kdpTo=4-sb*K54-YIv_sptuo`6fv7A9K8iyftdlVZ% zTeAs(CL}`vqmA)b(8k;DZ@n6kZ1|yRyAC`S?b_tz(OK!JtZ8Q;15W4^mIt0_fr?_WYiRSv8* zhs;4JoWk&v&ynattA>U_0Q}w%9XFn-rD+T#Jv=-n5}qzGYdv_J%))nX?$J);x0Li8m}cRHA>(yMyy%P^GHt~B%-j4U~UaNk;G&fI4Pxheno4T;LlJQdXC4<}k?$NTkHokPu(tYivinr&>fF1p*>Rr`i zzwODTn4MHa+6;ftWhWh~2o!eGJd{x_ zVSfGIDpk)K-<_vNNJp7AP(^(m%_9c{BbTXs68fm{B1-&)%RxkH{cIkwr%gcn@ z^bKcduB?H}s35SvIpdo5W1FsLANs_h)A@&B%ac*@O^k*)N}wQ=oXF)Fr{b*|P?wxw zn($=rQW?JdFGm)1*-iFtXP%GS`KpyH1n?{qba4U-@Gzc-+|HL(ALZQju8_a>5eX*d zVO3N@MAjEFrg@&IN!qe=k*rVDqeC>2eow{vy;9KPlL5R=E}y$0 zY@aeTf4l$9N&rX=U2b9K3DZ>dycRar>bY&KbfB)Uhp~Edv_2Nv{|HoZ#p^&Yo~KLO z^x7&02!ZyN>Kkj{W8Z z4y9dDx~G0GmsV>ATn`BA!3arD=5e-zVdZQYuXo(baomhI>PXpuT^)4bD@FHYZjdD- zIkLACa%+{8b@nk{Fq0kpO7P=bwl1w`2Pu#EZ=$8GfXNz?<&CAi2H$iqBPjyC0FY9O zqcfWCFsrD1YlxoZ39+})V?%askM9vDZ$UtgK)c3e$WaNErrt`0Uz_6v=JxxwGvD|~B~RJd~g|L^vbTtIxhJMr%sDZcnDvKTV%+Pq$V3< zB0@oQDhih9-i55*7SRZgFS(nfqQ6|viFwfz(#N}13=wOY2i^WrD}f9mV8XE)d0><_ z$!i=90C`<3+X`y((D%Jx7%+@6Jg`_K;Yz&NA%RgotZkI2=Ofhf{3HW^wo#;~y%jrb z77mnEk1|{)nZy;XG2q&I+UO__@2t{5VAGSV_8usTM8}O73g^>1piAczGPZ@iHDEnW z9T5Il=Jnej(Z_gfLdyEPcsDU@QE5cSw4%XU)E8JOa%v~o{L;rifP!=2ce0~emAEAx zaOc8HFbF2d>zt;2ILhM9ZF+k;yY^sZtuM;6$9ZhTIe(Ktjm-Zz#*Hq3GzM#zwkH{g z)C;5v#uG30TYpoy3=lzRQ1D$Nj#IDSUXOo6_+ zqhZ$PqU4P~!3kJ!26jWZcjrp|GXsQW%48`L>5H1$_7dVOCfFI`h=C?cXZ*pK-H+oW zoe1Bp#LA}EyH}-3F~h%f;7o^DU0#x5eu(<(6rI?`+(jOoH(oRYn!oW7y+rycbJ?qu z30s}n2OtN9`IvP=EcHR5*TSf*`oeZESrC_<3pduAW#=cIb5!0VD=o<7rdut$r7T8+ zo9N*TPJ`nd4c;M-qOECn=gz}$0e0eJdTdp>oL|EmoxPJOKeIi94)1dXa491|eP``O z;r5ol#(mY__o~p(Z#vg$9Do$Zw#EEo=1LR#3tpgs0QsBWiGP71gps<2{D3v8Z}mpd zLLHN6*q%emlJV5v^62XkGgTOyws-ev9~I(8d(LFX@I%@Xr`J}3fsyk73&n{n2t#@Y zkA=MR47Db6sAbcKj_Fu>`I7&Nio&%I9n|}VGxKtPUgBqYy=6ScvU@-CJ;$0f1t;+a zyada^^oF{zfYOmT&ClDx>z;5pJ`(1%&D3wmCX@#3A&Fc#VFxSBA4}^SEshON^S*@z z+;`f)l-|rlW#8HdIujwEEIdDv)Ogw~PIp)t1xywL)?+9uR$K60K9%s)`s}nMuyPp; zTpAER{z~hc_rA7)NG^L(h)fRL^Zh!xVW4Rw2f!_zx1Am>KVn>0r0QS5VqTdN3Y8mr zU!R{j3VT^?BA@V)r6v6N&2*_3SA2YLzv$m+LO44He|G^-*?#6i#1GeIABJ_c<)m--nI6&XcomIJ-7m8N3=wX8SKrNut4_1k)M z-I0I4-|#ALd@$>tF-lE0+2a?EH_$`B>kfJ%pMFz|hRN^1EzP(y%9b6uou~c;qk)m` zYgD?_>I()Wx^BrX7%}{OmPNdPEHXZzmZ{a=P6W~5uGhPg3}1exHMP01`NN_>eYiI_ zVkmq8&RD$zfC8i%8d@`PPs0u2cSA?~<{A<5YJ{esj0zq5d-O%Zvi@)j^I zl?KJ!=cy;yfSOvq+k_^3c<3!($dasz&|RfykLOEx9y2_L@YyS{<8h8I;Izx#ODT3& zErRhQgTHR!fTSf3j0T>nKVShV#2u4DLtT|Gs39GzT&)1*WZ7^rOz6>kY^H=_8;nZE!e&q);<{kI&!Q>+R){8ZpY~^;8>jO%Az!I;%xZ zhn&RMKKVmR(*d+oIj-Xj`H+_*$S&&}m4~x&zux0r2qGD{QS`Y{#eWwE7zpaT|K7NA z{wZCbgNw_3l6xsw?372VreE&KdpCwI&;MrZ>FEh0;8@aZI35e*x7o<|kHWrp?MHbe zgoJJ2-8j*=>qKo97?BBT=$N}ZI@TVmw*eqzUnj`-)uH9!)(N{90m}`{h5hFg{~I8% zd+LYCw>#1NfQOYRGGFVR{)lo|>@?AcQ7*ZX&<)BAm^nW`zo5G!a`>X9`RXd-h=70q zjZ$TJ&1pfP5R$@9r8UQ^?Ifb1QjxxjN_N^Py^!$##M-$8fP z-bo4?dI3UktBl09RHl!Xq8o)>IK^l^=U2qu>T+<}ez+=+oas0TcUE$8Wc#VyQi& zns?}mDCa#MXJ5hL<7SD%54k{px^>#J7Mw1#dhAG`btehx^n_&7cJZ-8R0x9Vrf%?{ zEa`yDnmBz&!1IIA%PzsRC`5?q0osIbn*fZX-2Vx)F4QLY4{U<_`gCF-_|^8%-haM4 ziSe$zH}t$NxjI@g-S8!9EuYlG4^oy-?hE>PG)C-37ENnWFHu44q4um&TZ_#Twch@# z$TFvHrqpRTqfae1bR%|3=x8VP2q@IoQ}LYooFBkS9|4Kj+9CM1-C91-vn8Sh7lZ9c1AVFs(N5VZ_MVLaDAY&N7b2hDqp^s|ZM z8S`D{PakdtLHx_Ckb}&fFpEQnd_4XD$W_F~ysuH6c5qxe2@awr8(qCX!Su?aUC=9k zGC8*bpD$#|e9R}(m_NP*8*QubA*c6SRtKX|VtPM9uxV}-9eaz+LAiQX8%0ZGUu{EC z=83cxZM{fvKi;QQE4MPNo8jYyD)PR9c++`EJ0HzP7KI*r6101K#)#g8dfL$IxERxB zhX(2EFr&sMFLX!ip?Ea7HD4kEDI4UTcIb(>_#CmB}99<(G0T|GEGrL)mB{dwF5N6K~)7w8|~; zAO4bUTq+KWx)DjXCPCU^7JPr~nhK*2jS9905sIa;NAnvSdzWLeK6`fzotWM2oWwI- zqy>KNMIso5KXJWEoA@FUnL4!d4S-~<$(%10zscgH+`)mGd%#p(B9x2ISEw(@bUW$|^|%L87JSgkEaCtEn}gM%_1qddR6X zNHSyB)JXGeA}Q_ugiW(w<;bRh>Z;|a*X`z!;b_QNy)N^82jJUw5f9y;+^MyW(Y!|u z1kT4T7fco42PKlNzHAMSCDe9!gB}UG;E4ksP-{^*q`9gdHKt08LpiaoprLnoG6FC< zH&fzz*PwG^_-7=a$-Djat3R|*o(*^7A8-HO4SuHmwV2D_h_}b$fj?;~aFPli^i+dz zi1;JCk@Pd){P*uFlpG&}o&-8vgokzC`ScG}Yo z?|Cn`GaU`qx}Je_VLwt&T_y&=I0MBjmNZN}g3K?|Nwm%E4wVhZbhCt~UV*jyF4HP6 zq}qQ}WWZ&2Fb32O3`i2?Kgw}q={Tn9baj$DK}daJ!QMfiS{xZx>S=V;ZoyxK)2q$D zrDr;7Qq8Rw^x8_wZR$)Ixg$=knK`K3Htc{Jc1mZ9D8(StvI~C-pF+%fe!#r>q~U<# zP3?@AFTh^3;4BgW&b_0TifPM$K35(&>EA26+|bFCb5if#qBe_1O zmi2X0es)qj!Ui}{eoS*Sb2tg+)DHbiy9NHsJaz&wBJ(R`70x<)@g^O zeH$ho9{k5@sJ7+S*aI9T9;Blrz zAupe6yIiMo_}T6WSPfsif)(*U=*jb$go&+0_@Ay#&CckGYw8#IbLDpwjz(V zQL6&u!B{JH)~jQveMLgrf(@ozQn7{hSdV<7j$2=>w_ApcpnWn}OoMP)T@Aa(#@-d% zF%3k5#G%sN2oo&PI3tOUS)jHE&84?-21bfpJc=T9IP%cFyRd#{>cSQ3Wpp$%(sW_1 z73JH_c^?{d>pItmp=!vU26l6aFw5}TDe>$bn!)fmOdDLSO zu(KaxVl7&#krZ++V?5{j0ak`k{h49PbOHX``Mt`fPlDtS+lSS+T)~FN0YZLWf;aE? z{U|Xx&ZRsB&*J66k+&p*oPtpEF{YFP`U1MeYw00DOB}%6NT~ zbREh8N4Z|coH$dm{gtTmwt|4m8XaTB5JF+wu-d_1+%S3g@8=R*Lvi?+6Vo6>X8!~M zySD?v{VRFgZ$QCZNu&u4W;O!pqt#cVD=H!Ek7&wP^$Y0+!@S(h#!L;xMilt@v43g^ zrLPro0-=Ju+j>J8;-&-ct6a*|6(r$#el}%)+oIJ<{$cVNx1{kLUOgypWaT%BW~_c< zPVT;DPK2~d5ex|`LCTfG%!hTa0oU7-S6nO)098EdL_8~3ICDeqTLT#m zbT!KW5ro+w%Cf#a{M+cu!l*dcU;LF}1{y0x_j|*XM^h`K5JX3>fCmZLmrQrBDIBja zZ|}P`j*+cIZ^H6^AQ_xXk}QwuyN-1(OS*VNSfEs{L~43uBOc{#%l zpoGu`6^e`cXQ~^~$8MtkL2kk3NAT~LA|*srT)>&0IuqKRBx5hXh`PP3_J%rBum#U~ zX=yihW^b@=vhJ4KPouJ{$voG{-ZGpY0(0Mpx!iU&-t)ysk3rzb!WBJ%-=vT>Mr&&) zQdG)n*ZojwUTdJ~P-zFV>xv1R$`Q6hSu7yS*`dA~6fp>92fiE`?TThR?_x|Ibb%dh zN1J|#HHPE}#~n&0r3>7Wm_Ht;jK4+J(puMD;U5DZ_bl*#Px` zgjN4ZsE%Yy91ErrMjlPq}%&dv`J*%ZO2#E|k`}JCAOmpyG?teej@aDEvXYFA=A1uA1 z%W1j~#z~|TzRZlE@+a$WieMx6#P-Qx-1U_7udo)wpfepT{XyxB91-AaR{dxs>Ok$WF zz^t-+jl0g>&e@~0f32%d@5?K}H*fpf4l$tj-|5_ZJfh&^Pc9lFy4_t5n45#e{(ygb z?(1!Zj^UiU1Z6f=)-{-P{5RzH#WlQoclq0 zT&><8X>#QlA!iC!M}H4P8g3y0UMa4 z&p<2YQL`+0jS!(=q5$#EZ-c12`zab*Q(tiN1;7^@oxDa&*YIkOi6eL6quei^;?XmJ z5ekB*<+gdx+m0daj(?dZN@v zK~LdBn7x7E0rEU9o7wWxJl*D^)I_u7JFH)5o9Vvy-bzP7emLr7k9RtY4avdao_b67 z5^p2z&vxe$31^p=2psTVs`UxfTf5c)OX(d0TD5FHL@LOj^TXgqD+e{%3>s_$Hs=Ji^xrla}@GqAVD;vB!7fUYT z`VX}-4hKz?FM(X-9996el@i3)sTfbo`EMyWI;M9BDELiJ??(^;=IygO`voogzlC5K z4w$A*^06Y79-MdMSxA`qB{8%oRPUWgj)%HFks}MZ$$hsxD-{gpQsR;)c&{YKo5Mw` z$le^M0RJgC)4~iL&J~is+}kYiwN-Ls~a3;n07&|(G4 z{$D8G9|J|nrjA+G1$xW}fNtXeZ}i!X2O+h}ET{D1{v9`gJdc;!wGb!ii>TCp`h0>gOx8k0h38O4#+N-Ggl{T&F* zI=LK54W5_0gr}QLoKZ$z8>Mx5^a0~*2+s}y@zlh#q@fxD{}^P%IyTVU6QymD{OQE! zdVwRHj(?9Z&7cGD#um}yGrD0tdurWYeSUMgFb!(_1zEsz+fJ0_?KR4SmAjZlPvq3E z00EwQH-gMa>Ao55Ez~Lpp4)BMf3Wo{fTW|cn4DkNuKNIIEZ)hX4bdy?L;bM|))NTR zQe}SYD&$_FThHXX&z5dXYBl-hp)iD_hVclC|DV5|1twvo4~I?}&60%Z%x;3hqeE5! zLtnt<7xkP7``qG4#tTV=c$x;IbFHThTQ*F-vZ4E)kNwTTXrcYO=(;Cw*%u3 zR9`^g$thv660tTa;N#XR|AlWNzg~{{frXI+;LT}xBN3X_YG-tyG=JgkfQriuGL`$C zC^PO|P z>pFj~PG;tv>6-hw@vQap$w}V4Al+Ef>b-yU0LAkA0*Ds58lyj z`)MK8D4*DG80q^_2$eu{ND9`0H5|k1B5z;jQFdpw1lp@2ofE4TTxz%%+q(d@5@*F{ zoJ%Ea*8Cz5_4;eN2ajx>pbT15mKA?(9ll-5TSa2?dUk~|=VaTp`j|!O8>O_+nT}Vw zvHBBPESZl*Iolxiv?1?4!px;Y6KJMWL1d0MKLl8ON}c8LxFTRbR)4sJDvPP;3HX{X z-(sUM7>YlH&d;e-{AJ)lcJCdjV>9*mmCz74byJ}G@%`)R1!O1$?FgxyjuK-?_wxp!X@%gOV0oR(Fudpig*bykh&kOVd*+w^53{`+D} z!F+#eUZ{Y(?Lq*rHGvD__Ck8pGhm4K-%&r<1cwe;$p6@-7$g92^!rOzf`CIDg^-u_ z>+0+m;4DQ32#oO}A*A=whZjVZtHT&`;8)6t!?wRr>pYFDSa*3ImlOqQyo~_T<8d%v z$e`2t@5H-rE~HQw$J5)d!3d55($DR+e<>z2Uqgd#Hgv?Sg9)DA*}OQO>vkqKBYo4l z9^#!Bw4B~ea^b4hAAS-1-8Fu^x&G3+*tIikylzi)@2`bfuRS}Km^P$Jz|>) z_jUFic-!>!X!_TgB-+0m)jLzGYWnNm?@Rh|i*ZIC&wK}(_H)L3Pml30ai10Q8iT!S z?v7ediuw-TwU1V87Wn>-GL^5-+-wO2Pqti#|9wovxq|861RKr_{yl6y`MA|}&fC4X zc%)PA?S|DqM25|B9E41X2(j_EXocFEnDCsocf&0|Em0!WU4z#4xl&hG-1v9@X*FN?y- zUWaeMQ@u}AYIk;e?VZX-ikAAjTxvvTdJMdKzpZx>xL}Q3Dskvo{XGS%9N*}@doP*% zyW+{kQ+92l^vk>L;3=N|j`S1a#owhW+4mIni>_L4*}uQ|4#MBEaXB8C8cZfGvW_cS zbd$!A021EB=iVyfV!PW-|M&911RoDH51e4XSN{8*d{0#yQZ4Ot8S-pzI}0jZwp)Kc z2R}SpH(EA7Z@hooJH8p@{yXHz=4CuL&y%U~fR3Nt`MiwN(RSaB^h!(^aQD7DsdeST z7i38!x?{{p&-(_yA>wBEcP1F;n~X<+HBvem=E8!}GeLJjJ^M3(%f29c3z&hA)STT5 zH5(neEiulMYKNFD?5J+&hC?42@JeB+L1l&I_%|q^wq&7dB2^=mcftI;2ezZ z0=6C4LE?V&Zgl)RWWBuzhmE*@Pa?ea>AAPY<_$7(hOYAJY@FeE zKT401JG~|es|XA6aPD#Kt*M3tJc$1F72o^O*vz*}kF)Wejb`r)zbfmtD;yrLU|xoI zdheTCq}Tb$@j~h7#r*62 z{)mO;O#|8WaOSxUS(MFc{;V`pMg^c|1orf0TryebkqCHq0cMNae|0wAuXH@| z`HUOay76HuiTo^fMZR_V8@2#rk-wGeVuXF!kJio&T zi#o6Uoi3^xJf+1YFv-Y;ckvmIrFiPgd51_%pxnkKoCDP-YzWYue&8iA<2g>ZRq$l8 zIWf9F!+77Py5>bpQ;^gBhSSLKaX$dmBH$u|JonOuwMT;^>FM-_~Oyq>uiIKHv5Z6 zi4zlAe-Y7o_LJ|-J;M8^luk-mG8MOd3L~wQHe-$H2N5KTm-Ftx_)w{MBv{jbWYxv6 z)csjJ%3D{!!AYohD@S%c5L{4XG;JSW}P&4IPEXoo}a0E!mdL0!LP-G`&4CjmkoUg>S+n)w%Ti@ZkQr2wUl7~*$PBDXJ878bZ;>CRwo0+s>pz&EXA)klB|84Er&(uQVb$ z`SHk~he6kcK_+SX-I^94o6dP(KOd@{X4F{iMX54kx0e2*t{gHWJz5)?sWntfF1}v* zvs{rdl7;o+?AT(A4$T9Ob7}wlm9x}*%|C!=hRGW>3wPK))`J3y3J-ketSW;sUbVbT z{86zFol@3@T>b8J;d9(38R`#m9n>?{o)d9-EUP-wnvdp11r~0?Cri#ClwaLVo5`$ePQXq;%NhgxRDw zCAuaZdMOE#FDgIqw;iYQvHgOScNgbZuCFOQE$N1z$oUJENeuI# zD~!kEeEzr`wAT?{#g$O!u*{bC8xd`$SSDqqwZiuZnD5na&yvKzFUFW>7sW|2;$Uzq zM5GFH2IKhJSbgkDOOU+^&0OMkmfPoJAa20r71t`QbQG2(sN5bO_jPgisdJ&Mt>s;r zR?V&vvnwFND`1m%tiY>~IxXU`EzU|t{)%k7I1#L-KRvnEZx4sWmYIjXMU`7cOR}vH z;q(^nkF4Juo38jipmfefP`@<)$Ji2<9Wz}^R+@jw#%6NxVJHM=LO8`?8Pn)e%IzkU zIS~nhh!k2RNJsj2QL_l1DiH+LgN?ObzFjO4izGG?GfOa3dBpR51m2;d_(A|4*%$uK z%XA82MR@8N-cR!vR+qV^NsDxa4Uel-heLHg(^!L7%-P0t{Zs7I7r7~ZqHrr9bI%sP zqI|23(RUh}BN2__ept1St2q5Tyl3|wZsvN-QA@ErDZjAc)n^J1`{uFd^kN{-#14isnwC_^;XJFVIa&yDNyF&B;!FfA&Deelo2 zSAL*8DzcRn2D*XbDY)B$JnyUGZhA1lgjQS6-8l?Ur4vcb<^KRG3`2D6Q^Py8`)wcBhB z`3VjDV0>SnW?6;M-#)WT+>33TQ2%X!Q9Bd@t0hV?mJc=P4Mv6)^66XC&;rFb&xYp17u7V4OX;MH+j=}zM%Qk`r0WcHbJyh*ak!^r< zxH?MComWE?%@aud7Ki{{7_%V?-XPGbfZhE;|Ljljs@ssq?*(WXpxEJpFGov65dn1s z*7sW2=l<7-v&9hOKQOj{m3vRv2i*V};)synBMmVsKk%Oe0W`xy{woUq)eMhazbHYB zrA^fmb}Y>0k}EqYgzGK{Z*hkDRm-rBW9=dpzEa`jbYG$lR`jBy-D zuhShZJh)69h{`?$r1(0H6-{L%aK zjVCK+A-g1(ae{=jlm_^M>6bsKuW3}DMk__ql`b|EfKG5)n$=L@sJ(2EB`m~$m^!P{ zkv7bb{LVyDfK!T95y`y2bD6TFgw|q>Tl8OND5r=j{%FMPyx+)VC}V&*Q5m#gmtXXG zl?np`E(fQ;rON7fTYqbLKCz_oR1>acZg{FB`eDI7ievu6iEQ1y-B|5pu2RB{P5!3Y z*ax-45)~9y}ENexn(2;3tq>yg4S`NsBYdVdqa&1(}VJ zGsyn1((XzdVULdSED&6aXd@85%gbft;nOr?p2b)0+uWLY?5`aE5WnVyE$Y!>f+eYQ zXK21laS z5~M=FWDDSTC5oATDcajp6joJ8V;m}Zh->W)`%J?aha3_J=9$fhDMk7n_(O~^u!;w2 zhs_}i;1ZvwfDgj^I}#s|;j>HUl%|0DuXX_3AI}GcK zN_aW1VI7Ij(+Y(rfK|Uvk1#O{2l}x10Gcz$H?T_t3=*ILYB9Yj)$z|t1UUk4`cn8H zE@ukr!$LX03m2tbkImyPE6r_C!FHF>1!L~8JCpkw(RAy}+h0vssER9^r!_FKsoKsu z+lVe5rq4Q@zyLA)h;Ee6eaqFuQI^RpKC(o`-2B}D;2a{3zccoE&H8TEU*;%HkJskD z>;%#8^pMY73+kGj`4u1_;d41zXxVF@i8ae3!`k`jx5UEaRgrJa;DxJ168IcJ5BeiW zo_z2IzZpN&>62}vh>Wwa*;xN5hsYT@`Y?`_uf>{X6yM&+>Z}m ztc~IBem06jN3uDg^Xgk%>5sW4RlAO9OAulng^9u~U26%?U2&eJ8Y-(f79TLPO!kxuZn@vkIZQ*LWQSb8^ zh`?BR2o1PHeo4Pr?DXnQOaHLpC(~FkxQrs@AwCu*tk((oQ}#yJI*$3?>c04oZN3wL zI^SMlKXVAAVt9=PYfJYQVN>zD`r&M)cG{%n@DkQa`Rl61lj2~X8lM=usJz6E|Cm|# z^q;~b`Z#ID8qBr6s}G0}DibqlP*K{SZxvl_v@=Y7_i78+=%U9h+g z$rA>QJ*N@-N^>%9yTjeNYTJctHFAW$NqPg{p#P>i?^<1#0`Ty$BtnSN@_~`ftOTkv zeEyTt_BUgXAKjDJiCEp7R>2iN1UHa4O7_%lG`b}~Lz6~w(&8ahbog7wv>>w8b+gE- z!5~WO!VwAhVs^jndzKc{JM#f^8AAOva4z5A5MmfV48}$g40FL4|=9I_t9@G;WLZ_;EAC2-ECgsv2LGy~z z(LMQm=WBs4i_~5g&5l(73M520G;u>MKVio2-YW7v1=50N+B%rs{JxM`yGK&Tl4Y_{ ztn+@Q_7;xc`zZ)}HH)QJ=9qf&qsy_dyU}>*jXa;9U1{OOupQMoOSNjPKBBdCWew47 za*LdEkMuz9C{yTS$>tRIEyu2`j+e1Jn4Qg@$xP;T3xT1sZf_p2v4={Dwp@7pvHJc= zWVq1~3#SH_CoQ@)(}uJ5XUJ$017l>=2+thrWR@-g4^G4)aaK@qs=z{c06%Q#u$s{Y zJ4*KUC*ut}?~uL9%h(a&pjjGI=FwSPeO_DcjHM=RGOfrsiGu`3q)$;%+}v>@nLY8` zjaq~NQxXwEa-NBF*Ilw_C>tsx(Grf6c`F>!N~I+2C$!XsgI9xJ<&6keEzbHz^2sU$ zy@*xhhTs>a=ImX{w*e(lJK^ty2^#gJg_5?tDNr7q^-hVJd*)tSUa^g=#vTO2l*2(m z=u2m++(P7Bk>f0PgiG{|g*13tCGw$*#$pf{Ru?(>KZ>qMy;%gHY*Vrjzo^2#W*B_n zRk`*Mm|KrsJQ9N3Y`~{AjV#)BIF1#l&qsT0_XviN5%3GV;;t9<8eHCND-|+d$P-4s z??VeZXuc!i)!TBz%@lAa#tCYrL6i6p5o>#E`3*A`Qp}MN>N0jxMTOPsV@s)3V8q?D?hd2^C%qzHi7N~6n%}=Fo#a~ap@z9)Y@Y2p>Z&+Ggm=O6#1c?!Mw;Av@ z*mCwaYo5W->DFaJQ5hj_-LbK-nj!y;+~lm~L5rw0Pc~obSl6@k z|42WCk z1C+lA<^Z+x&TB97i<%TrY4$>a1%a+naB3jFl?ceh@XB@ul5mhrEa8 z%t+V%t3{L$qS5$xOh!_s8AW$qrZ$DzpesHDrgFtQ1341tG-g2ECP5n?gUD7X0Z?_0 z3G}aHfPn;P?O_=E16`@wY&xjWXuf>cmnCD$L6?yy2;lE0iiwcjdQTkueV?(@X0Oa; z8uwk<1~EBAYFuloI4U2b`1fpw(?mJi^2;(~cqRthyuml%MI6FDUO1ekg$AyU&I6cT z?>sf~+=KRdXlgPFD*|fa(U7SOi!}PERSUf^fuc*G%Hk&sEe3Zs0~G z`m*Mk-*Qcj;7<6!xRX!TR~KppGpy8;EKg4blUT&Boe=a3AcO-7_dB#QBbN;QtOY1m zRxQuO?5^9#?duRJu%#J~4IC@nW0sAf3j;PL!cv$FNP#CxL8)FpqO>As2)2ksrvOT# z!nk}6MNcI1Xu}x#?4atJYB5$Mjd`3w3*=ilkcd9cneo+fm>uJEyG=Dl*`3`iV=LE3 zIX*{J&A@jI%RsG-E4#!OR$~s;-`Or0I1#0sB7EKpe|w4EKmD+LhnDq+#%1PSz$A~@E~rBlM2A1qxsqlz;>iTXX`nvE=~JW zJMCu02*pD+?)4Dj`!Bs4c`c--8z1AmEGvgcX06ZhE4jF328Pan@l?QAy)E853!|O*ugHLVXyx;D?b>H?TQ3O2zc;%cqjlk z2}LNs3|2k=L{Oq>fIl85@*q9VAc8WORRftxm3owH&t%c6x()I^FtOIm<;0XRp0&;6to|aA$-8(G7w;p?3Bq6Gx=2rjsL6+)+!B&4YKDXHOhpJx_tW|$xHPkm?X%vCh{aJj@H+0uK9tY5 z7YLI|vhXTlwmpuDrXTbA5#~EtSe=HjS=%N}V{5sq%^%e9mU&EmGr{6UO9=$8YhZAQ z_!Czcspc{+=(|6}+8W}T=e~vjsqJf%GUNx)cm8*eQd!BjBm^nLWZ8V8+m6oO1*lm@ zZ19?`1f3`nb!u^Bh$|ETe)|W*NCA-ZL8iolLOl~r3`a|}41Tbbe$ZNV=%C6;hDggd zXEG&$qJjqiS7p&Bwgn_pu>gfT2}g(epX{0jguiO=kY7NnwUvATP{e>IZUO03Ltg-Y z>B4^!l7LY46LQX5G1ceqcD?|3mc#z>LYMwe_D6*TK9a4xo)X&+TwE>-gtrIHF`zV5 z&J`H^Z$~gKH8-=(vAaSoxUz$Za`Ko1OKz%5zUMs(s6Nj+gmxENT?+%gVVXI5YFJ4c zsiZ1Bw(iIIpau-jJ4yMDLl0w&VKj(DAO09L+_DOc+?IelGgRIRKz#KqR}aKh?^D%2 zEreGFv?%7X>akQwyuK17w$qh;R4I3x`q)Wv_LNWt>~3@r-ZxN1-bUc&)Jc9}#>o2M zjh*H_$C6Ldy!#YWb5!<{>-5~&YFW)RVQe9-1nH+!7WL~Zp+b)Ehdbd&c>x~@_5ugG~?QoGjh|G-LGC9ixjPujpKaFMH=Y<#us$)3haXAWAnc8LL!qxstIXjBe&@Zk;wgN>= zchAcr%`^oqp6ow{Pwa9lYwP`wg~NMi?}1nF6OR5P4)64bWLp_dU+fbmai!m8(E*>p zh%#j=MrZ5B*E-hHzf6}Lh3F@id~$GTF%>W7FOuTL6daFM{%oSnkCu%{<%(x6p_G6O z*bn_h(rvP@8P48An(=DP_u~5s^vfDLitDCHs3Y&It#tG8{efM|cC-3P%hA(jJnm&8 zTusgAVK;4Fan|ck)jL63fg)-xO0ShliB4fj$GU-5EuTyI2g~v!J%t1mJL>Zlq~`@z z0;%QFR)T9M#eN|uUbn_rX4hJxIrEKlq)Y80dns{b>w0(j9Sh^APAj4+`=T0XKUn~; zl@?YGcbyI1;sAlI&BUrW^OWa^exd^7C#zlY#9+;%qGIWM>y)VqfxGNSt0pst&3n6* z&tXpPSwh-mt$6DXoU3MYZa;K5z%V6?cO93mwQJx)P9fWDghZZFS`7P3wwz;Yj z1ME;N3oh<3P&DPG0SpM>k3|+cdYd6uQyDiKEycD!9soF9b%`9g5xNm~Ln$}Z;md0x zn~?znKox$A`pmyv)ewvSv%E$=0HBjRDi-rEzdZs$!82^!8weNZVC6av?Y?}h1sQZy zc)r~Czb0P9EDPKv?}6@`ZZV6vEX$lj<)cD*IXxt&J1L5DEaX-@~+h!?#7!v zM$6E3NcvGo#|fEJl=Og!GKjv}#;9{&mtGdnYc0F=1SwY90ZF*I zd!IyWZ*9L+XLZ%r-H$iJ?O;|vLt4_X>`|-MpDHgxuh4%NScH%L``gjnaJ?^qOs=xU6`taZ5JJAwso8FOj>6E&GXT=A0JfVa zILQetaPiN$7C&7e+tmmZ-e%!>Oez|DfD)>Rq(3{{7tyX^fdx+wx382V*8@bqV0}GM zU@3zCl$l~6&X;RHM<|2(cKgMnGJDbA#BAe`U&tiL}S1*aBT5Q8=4Yn8z zqK0Uj)fo3Tcbf`WqchQf%%Gqa$1+YV8kMVN(VUCSNk&j>SZg+0T;58MtOmyOhm5Mt)+Ke}eZb$+gG@6oz9IlwKi zHALbV9Woz^Y*dt~QtTV6$22!_7*#1xLjQ^dhq=kjA(e$yM1;xORwdq8dgDRuuFlI?2g^9m+wR8^hWHFB+j0ghlaGS~Q-OH6dC zLf@3j%6J~(&8&IVX7b6veBFfFGd|wHg=f=zxGwIF9EAneWNrvaF)}I*E`#pz*@>_O z+n%69Fe>FqBet9;=?Z{87 zVk=C~m~SLbvRk-sArZWa?&fmZdBzBN%hJ5^*DygOv9#uD4IGj z#-h`E!>QjC>1-AK><(xzwfFmd7-}ufgFExVdNG|wl5#&4R?bd+*KyC=hoQntW;`ey ziAiqGB6dIe+6fb8;GU|WU7A+Dot$Vij(EBT!kuH8n%fVcMTv+f;mD`XX|b_dH|w3F z>x%2!BiP5_BDWjGIH1Aut7>2|dbkocJ7F&8ab8C;{q~7mU=o{sAi-=FjLj)Fcu-3wg@@T-v^ z%OL(#Idb^*L%@Kt{^VC_m4|P+Y(a$)BOL@@=3?SD(^n=FhDdd^q*)NC<`d8 z$GdbuF;V1%NZ_luMIn6w$#_k`7N$*(CFBB~J`EE1|J#vev0J**)I}@Gua^HSm?kbl zET=}omM;2*fmrr^iygjf>B!j%Xa3fmII>>^6i(CrPdGh6a$xhZXLc1M@>opac<-~~ z$zD^lQ!m?PVz!7M&Hd+CFA&Lwh7gdkar@Y{_dhW;#pBe>pCpvq4<7TY*?UE6@gm}^ z?0*(0Nw*GT?()X}m$WB7taI3vXmnuZA_unwbiJq8_KIl&&A?$2xy)B-`u^@<2UG}C zBEnue0>JR?`;XxZ()4AoLv}M`nDgE~$+rJbNpH7ZckDVVfE$o{b zNMcM)p^okJD6uR<2u#LvI18F``KBxZzd&c{|Nn&+t6>d#tKg(eSeLOSx8pO zT7fKTNO!aIoSjUMzb`N@|8&lffh$;5*i-cRuT$ggW*8m^r-}xHDLA~siEyq z23)JRerN4gS_&}Te}>d^I7Hq=-Y7SgR#|2?s$@oFJ{f_W0Kci$t2;lWqQ=D4So})} zOn%J=-K4MWzueGUrvy@W1(eFwRtVyue<=_>ri?qS>@OdbBt*yKTq9OidZ4Y8^NpdK zj6kQC3@o93YF_CjHOeH70-u18%}ZJ0#zNJ7l?hAJZH?Y^e{5Fy){?k>`ww=3fZTV4 z!guKZZ52RXg|*>DCEhJz?uyrut~*K<7_8k|{>giEQYSr8=Tc9FJD!RWkGbf?-{+HEod^D7*R*aE6dHiSD%`&W3fv&F~Tf6vSiRfj@ zeV2yXvL^F^$m~9o8r93B%k3TPO|W~%PB#3!Vwiv$SCX0olQvI z=80BBc%wQy%JKN&lQzW89_VBbDJBZ&%^+XNG25e#7(lbt*sT$WI% zveuU98TQ=OJkHMQ+jt%8pWfnb@~Vu4N3&un>U(Q6nFi?dUi!b9Gtc2oefCMm4+yel zK-9D0e9E%fmI<@K`M4>TJ1WL^bD%Iodr?~vi=2;f+rg{87C;C#Dl>LioM5@9OXg$} zx6h^5N}xbvc{_c@U|BXIOW;{m^*RthL*)$RGn>)W;)d0;f@fdkwqZ%<45PQmhUyUk zE(F+K%h6Q&T_YRJZ-LTp7^@Dn^dj{Ae^RR!1aOYk+2*Pe{(5}TS(m_0SEt1md63-K z@9Yz}Mg`f*ilFq}OaxFObKI@FIG{>G4T|*VW68Qe#bXv^P+;30M+4HM6a%~zORIuJ z5)|O`m!JR+hdhbQ8))$L-yl!g^FPr(B2bL}dwU45tFPn#*~@MkP$A5CxZkdkPes41C^k@Z&Sw}!wPO)C8+Ou+ zkw4a-3bK?1N9izB>6cH9rUnAgL5mE&B6s7gT-(}J$Ru-+qh^O)Hp%oBk>qRFw=6oM z1hp~SN|?HRh2YMwb%6aYjavSuT#q!7&?}AN^rPc&dLg_KtBtO|S%Cmlrg?$TcDcX4 z{x0vX#vx3sZ@5^#TajK}mvmHGp~K`y4i=L8dvWt!o<8QufSxr0cn z@&b?fYfgsjI)S?&ewqtM#Ka&7a+`X>I#FgzY;bV>%2Ao%`J=-`ZKgr&E)Su<@`m;x z{lbA#)w^XDVWJM!zJ5uOp3?zQ7}CTVf4y!1T)p{iX~JNEy3c8dto?!|8Ew@lXAyu`h}6p!3{ zG*{3|FKy}F%EMf&)y~qLzP~C-UzRfi@Sx zVX935rt1hAkY8NmV*Lw00NV|iyRP~on4r1hO8j3zyiOMHKktnnb`ja-q@qbA8ea?B z!=yt8JEH^(ATh;WfIKeqju;jKF&YG5&KC5fx`CL%u_&OZp9fR8K|79213fD0%o)x! z_>OzaxjAktPu%d}7~#&lL^`-r=(yr5)j%!}Ex?u~)n+^`3JV5G-p?sr568AL=48@H zZL_$7N0AEmD~qG^eMJl@I(LRG4ATD{Loa< zaA4cYoO*b%^8I$p{QRBRDVaYxhSc?%h3WL4fpGl1G5*U{)&mEs6r0H>e+~s& z#+`duAs21?V5!2*uLVM6BF)|Erm+lz;bzx1-)cp((|eT{SU%)9X{TTqLOTEQI@0Ei z%?X79XNHmegcISi4E7OGw7Yk!2)dTg5~_EY=++F|BW&vGIS^_4zi5+^PiWbrFUuR# zt7-$$dkHur1rP&&-VQI|v6p7AXF#~f)i`TB@zzew$p5w2{J6K^&$ zXCcLvNF?H-l_^_L##0o>j)$}%G&mnoS*`o);*bg#eoROeM9C7DeBhukgy=Vy)<)bG zqAL~sn^TcZG=?hD8cpho|JJm;se64HM|RR(^U;E+`@B3!m&btp>(FeFF)}i;)3q98 zUDJ>UrpXkI)Qb$cr=br&J4b+y^hnWTd*ueBJOBT*4LS{92fEv0SX&|1v}}H0SB})F zv*~?|Xo-$l_e21m1Igb}G6fbq6GVwZ&_m!uL4;^swurJ(z)bi^N@2e(*nq7sU{F|;?#c7vcW5GQ z6B3ej-@GGwT*$V% z&3;ZFJg2P8^uTN7|6cqVKk>AhS5m%FcM*5?l`;?^*QK?sz~lHRx;0^o+|dwde284E zBHx_JZ7AEN(&>YE2(NG8*m)5HR0nfDV;L9bq$=M}Cnn^onwCO*(wDjUgr87(X>HP| z%fmX-$UjgEiwrYZEOX{_t_-JM1C7;BnO^xxBi` zP9C;`;$EPe)ETTVF(H7+#6A*KAX#bw61+?BAHMwCHj3W@%A|t;hYA%yP;fy)bkIh( zgh2WIx6$ofxXl0BUWy<8`;X0%eYf|Z%_hp{yI##np6)NuP>*~VwpVYp8y;0j0Tex(5 zDQRtaykUYrFTN_+<7TDA$=GLBTX0f4Ee_iN<>8x+AEd-1t#t>`KJAWGQBJ_!6P*>* z7(qy=+qwTv!*>RYKpI~D zljb`DvVG$idM>%XqkgXTEx7fkso4JswBxyIIZDrPs^`O_j@KACN=d%e*`6!H`&+~T z?cCv9tL-Av_C<&>|Dc=4$KMo1`scUKDS!M2=d7Hw#9{P$=_9#N6uLijv|%Ga)^n7T z{=}kAMzfhLB_Zwe;cYIFMm>K|!f<;Q?I5tn@K%z>yj=u4Ub)qO1dnO?n;$fSwy^*q zu)NZ^t-n0)gI+$n_kTnAm9?=XQsv^m1}M};Ol2#o@>A>mo3T}Hg^k69M)lLK+sYtU zQ!Zk+g)}v?IZv=rubR?&v3*d}cdr{83s{phlR^&%_w(#eE&@`8L@Evf zTRb!MG%Jfs80I=UUj<1Lq_gJy?Cp+MMf!Z^dQ8_b{v54JQ)9=>>JneYWVY=rA2mpD zD@$YlH0u6*tdUS%cw{~r^5IjE^@RL@62v{6;GV-VjR({e&Sov;?b6Qi;GBGSP|6P3 z(QH0=?mef*6ckf$1X5A#Wm)JWdNKnf_3KnfTdye9ff|@c2o7oFj)B?4COCZ*k3I}% zpv34;3;Zq;vZdLnod6N_2|?H2eT%Ndg8d#6!-yw!q=s-Ya^MpAGbN6xZjCK%P3}x+ zUt%^<2B{bVfS{cgZ*w>Rrzw>*7b27K;fLV^i~7$TOK@oqPIzpoi9&9{{K^ziWg436 zefTx@#p$fvRdP@q0SU3xl2j9WRNT}IzcqPhoHCdtIw@e@j2;0aFeU$J+kq-Am!K7* zpvP%FnQWoot+si%5S(OIGJe)8VNzlN{s40!)5&W=_W9vqb;~!hOQfYGM9^l)lP_H< zSA!0S+{Xgg^;)|&Gx+IppkAy@Z8@E*(zonbg%Sk`hIrpZaA$q~ z!qHO7F(p!2ST1N~z$fp3BVV9u+k1zLqz8pLIyc_Hn$A z3b1Ma@BLTe1N{}~+h-F_yhy+Jg-uV|TQJfk*B$YzDW}59=rem0D8b0h;t&DKKdb6C z_$E5jCr_{bS9Ik)Z8B+OnwM9w3c}DUf@0~DPskgd-S~6O# zUEh=uP1CDahGj{EU|BAJ$IXHJONZQ3nZMtt!cO~xss{NEXWkg4a>pU5$MWo!2RiBr z`V}#l+Y)nAZH#yvQg)X^XibauB#eXL8AACVaw;Cjv0EvBpn1y68i72WlsP#u3U`H; zGZHVdcvy4-6+$V9|4`bJoPokWUnvMa!9fz}cKvNAPmetcKWeaOYDgnvNnS_&g_l@XHAs1qE@z}(IZb0iq+;-!hu~-^ z7PmmjPhKF^GzrB7%l$-jb3GI!F+^ACJN@U0zj9RB`Rq_vZC{mLc-BCs!ovaCL&J7I zhH(L9t}d|8wp5C%zk_7d)4k!#XvAP|YJj{b(8g~b!-3hnG@XiHAos zii=bjk~Y>8HZm|h-d^?RdW!rq5;G{VC8{`!_O`!-5wB~tNi@A?%!NBcoXQcH8})w7 z3Of8pMzW@d5YR=(=Au|Wp;h8zVIxxo>5zNB(0mDs#v1ycOcWv!&~8&a(8Yv2pgvV# zWfFRSa_7rDS5Qt1dl9xQbAQt5C|mhH{cJg1v|TnY>mQvi%AJan(C8dau0-NA_m@{yszQaGxG| zCCAW7BR@Vqq8BpmCS+K&jWsPaSdH9= z*TtZt(u1XtsXcHneP)-Ri)Ln7aKg>|B;EVA1o-y?9jT4bOC29=4vV}B4tX`dxz)3G zwvVQ{LLyM{4-~89GDVL&mhu8?Y(6&V%k`+vuwecOsL!#J9-KD~9untbX386njx+hB ziaJNkUz`?{R+;+R5Y{?hqeb`nny?;=3g;9UJvK2BgyEq#Jd6iM5P*&1F}dRV18jdQ zX=;{Gj=?>GgY3FG`g=T)t^v_x=6(^oV{GR_GQ6u9D23mP1UmYw+6RNnffa?|g53f9 zes{d!Y1j}LTJz0$k!*-R?_3j>rO1T0{;gwy1({y|zt^z5gXYp}IAuDO~FSfD78~_RtLiGYEOu>HqPtQ?^4Cc`^k%~as0kr>_R&D9~@D9bgPqrljkbzQuZ8{&> z_g#VM0Cn;o9(4kp{9fn1vbyT&3r%y@3V5DsP;P%vzFA;t6w5}hlT{jw1|8*+e<6(| zPmL@R=db{1EU$ydq~2(7FI-cpm>C>fh&m<`IEg#^+81$}`8fc#>hHIdpCpbGQsGqp z5>{cob(7HktqzdA|2k^bmS@ie9SXGUYkLm3YkW?>I9#?7ZnXSl4F;?^#B0~S-46Es z$yNBoV4X@%)+g;}1TOwd+-WDAZ8<*`c=chSK9M}%<%~%g3}p_1Ta`Y+B@AN6;MhaD zV@+hxRLvUF=|O^)1SH{jgjuH0DPK`ReqO?5xjU=dpGaG_y7=3w`tC0dr=p9lKW`ex zoMynf&NYuB9+VbeROUvpIH4x-IPtO{O);hkj<#?XvxF+;Q@k2j zXusXsz-Xl{}H3ex|WU^8D z2}Yg7QpyEeBVhyT{lUHtMw|97BcAbokpBz(gPbXmv|G_J>_9WHAJnbO!$K~m;?+yHdjKDBV zVahywHm2WhC1kaRSFW(nlR*l3DaeGz5w=6o*ed>U<%ux0w0`&s4e4ilG=d@V2Q(TB z{DjQ8MIXn7iuMmMdyYqjad6Y$Z}ZUKo*B%1l21}^J*r~ z+h1h$wr>t2Q@&Srx-8|70H2*tr`%@H?l>l^t7aEV8dBarLQ;>{={&}g7(ip$}7yyz0Y(x(ON6dRd4%YZU$_s8qC@& zida^OF2Av(kZn{qD(>`#<9uN#?ATJq4}w$!hYg}o(0t|P{6A`>@=ga2pa|J;8h_9x zvRSk3ZgRr%VJ>EhDv8yXgb?N@4EUYX^p7Je`(g2QY$I&!cPqfmh6^<3VSSOW%SVAz zuxBk0veMw;cG_^uQvHS})RF%1f06c+Is6Dif0E#mI; z0t{Y^GsV|=@?jzDRIESO6xoUqT{6ZyUfh-LE0&K%hrQg!p2Oh2IGj?aYiOGNLZ(4M z@is!^#7efR0kY|b2)vPOjN+3KUm2)1}5M=V`^ z$EvQiC0A~qBThL0wkD`ufqcZok|S4$V!+j)Biz;q)}a4vBXE%kMqIz?9*+h9B3V5B zq!-3UoOmuB7L+-fdLK5DS55<2YS*1+mUXV4D<%+eo@Xa$E5RiPz+rNF*@*-n_Zin3 z_&Y<4#j8lLlg(^kbAOibxKf0XE_EX($<>*&d97hNG<@pkew5vsUiEH`lwK+PF`LcG zTgLHe%?&!CNt|r^TYw!I+vB1utrXSHTwqrlBYGtVjf`RIL*~l6dhXoGmdJHH*4Ph; zXFUh+-^P9DpNqyD(lf?13ze@=aFDOl23?FSz&6*>ZP@%r8&RpVEo72puy^$lc)M|2 zrF3!}l&`GkbZDfUX9c;}s&VZ3E^f*|n8Q_34I;|iBJnU{sQ6m%qP6DIsN4}dRVhhhjh2T)N+m;U_3({9^BW)gQ zKV+D6=KU8Rvl$jBRs$nyV{>CBgn0)^keNC`#zWx-XAtiS0Y@fZA@ zTU9@v8=@$6{uoDMnUCP0WPVAWpj(U6qz%Bx@seft|AJI=)tr}-qdn!rGE_xY5`jR- zd8e{FDvN8}kO2I8q6HGoZAvhlz$jf7mgX~2;G#WLwZ9+xmt-!lRz@PC1IDpUe#XlCa~=deztnb@os!y$f;z zXb?e)%DQ<3PskB52(l1pu75`kVkIocZ5@`59t=tob2s)3wBB4zCgwf0X&ePDm{V_%1n42b=gB$x`f`|MYPJLK3~2lPjZpa z6K->DyQGy)rV8*l^r57ts4|$EX5v~{$Z38uN z<*a0Dn`c{B2~zmyY87~W6uT^Su#pO57}|EO#a7^-Bs1MJYk)p*2$laRUFuTB)i`MM z$Vr)DJl~cK8=R!|umA`rP#pHC(*F$nBa)-DY{|$Jvtw=p1A!1*zqvO*_AF~vBJVC_(!JKM`R${ zxe`z`2Z|Jlk{aG-HLO}gG5IL>pnWLw)8DTOeJK$z$x=izAv1-XN{iOwGY*Kht%_Il z7o(8mDsAv8>69i%SckFNUyC;jFbdPk6S=ej4Dmw=JIW3x1;#z=W`j5&?#DsPaLOX$z z3?Zj`na8631BY?N6yc!IFTDk!R8pX@gmqU5_mDiLMuVE*zeBjVxNp);K&8!G%3g`e z=)pai9htN^uLqG7mf~Vd4?uu22{9fxyS$G~y2CRRqlRjzDp=6+1@AWfCnI%yBYHeG zmtv%(4WU@t(cdLd!Hf9Y=!p_xaPr$_MX7`lEa3;G^VLaMgRe}>8jsu$2ZfU|G`S~)FvU9D6d zrhZ?C62fLA&hJZKYZB-L1dKUm{)k`w5F;&925xI>s?mXN&5RBxtyG|I%#1fk|H zWpl>jK$Pf*6?O;B`y@a>wM1AN|KB7IsXGu&a`}sjK=L(7S|ET>xNVQx1CudnBA^zW z{hu>UBwV5}IqTGrlCa>Q@1Zl+K}FpP(SYkx4X&&`L?GxOf^290-H=8I!0Krr(eQyJ zp! zjXrQ{alr^VPhz(lxQSl~>wK`j;3-t_pnrxiOhx7<>Hbid0~Ab1p&&&aYzX+m4L}Ip z(dA-P%Plhlj&(?sokm`ed-YhUfg9WjaVcPHUs*PdKQ?1ATxm;0K!eW64k8!~Syr`z z@Tt3Ba^lr`SM>-M_0R!^5XT!o$p_#tK_dKfR>%qwfrX0Z{62E)-Y=xFB2|6!^-{tW zznyac_@QI?+hLgY_wI96YJ~|nG$Km5dMjNlb0XAg<|g^rhmNt%p@y%+VjAp*rjzF@ z6{=D?AiM+AR zFH`v608(R#A5&f{+d7RU$=S3%O9ww8{#(BkT#AY@xC zZ^6O3w^DlzN_SwpA!Ya81Rg;c;4F6O8MLZ(kmwe5Ff>-}rMzU8AJiyRj&^Z3Fsr@~ zP(|HT*Apg7iH4|r;Lp}cEw{|<^v$PqlU}5T_Mxuyy1G(89Q%N+Mt||g+bA1Dpb<)T`xdcU& zWseIKU8_y+vs7rZ)UkKmFED=}bF3UylAgIQo5eO5xChHpQ6DBbM6nNfY=+gW2r7KP zs{~s<({!u!g!~LCB|E~48;E@6`-UCr7N(=CQ)J;!oi-tMCCOJkaIwkuTb_fZyYItR z6YDK|+Qbj-6W9|IA#L&A%Hh{B=uYa3w~7f{lx4}~GmIX1$7ws=II=pYxOsnk5$Z%- zdJ!<%NsHox5)Zn5Nt1W{2=Sue!h`iUgx6nxK~UnzGaEuv>GPpnL1iLzY=`-JYWplD zKj95rbmmi}ZUwd0rzpAK1n_5dt~b}QWiEt|d29;o&+<2kxo#~?g?$^u10U9&KF@c) zkbc-t`85=4o_~RzQbc?>DJDXk!H%55d_H-xeP-nP{;NjKXJos#QPiPQ>g5H}UN7&A z<2iMb!fjK=EG4E({QbK6VKBz8WZa}`?}G7+O#sDOp*{Tc>HG)4j%7755EBP2aHm36 zNbeOJ?MH>C!q!RU6B#uOsAdX}CVhQTSb-XA>>~5ovd-(aAnA8vk-dv@SnK`Xos>

JvnvW3C4*R*+X4p1@evc? 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