From ffc8d1dface1cea4758130db92a080ecfb854d94 Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Fri, 23 Feb 2024 14:39:49 +0600 Subject: [PATCH] UBERF-5603 (#4754) Signed-off-by: Denis Bykhov --- common/config/rush/pnpm-lock.yaml | 251 ++++++++++++- dev/prod/package.json | 5 +- dev/prod/src/platform.ts | 9 +- dev/tool/package.json | 2 + dev/tool/src/__start.ts | 2 + dev/tool/src/index.ts | 4 +- models/all/package.json | 4 +- models/all/src/index.ts | 6 +- models/all/src/migration.ts | 2 + models/contact/package.json | 1 + models/contact/src/index.ts | 3 + models/contact/src/plugin.ts | 3 +- models/guest/.eslintrc.js | 7 + models/guest/.npmignore | 4 + models/guest/config/rig.json | 5 + models/guest/package.json | 42 +++ models/guest/src/index.ts | 35 ++ models/guest/src/migration.ts | 97 +++++ models/guest/src/plugin.ts | 21 ++ models/guest/src/utils.ts | 31 ++ models/guest/tsconfig.json | 9 + models/server-guest/.eslintrc.js | 7 + models/server-guest/.npmignore | 4 + models/server-guest/config/rig.json | 5 + models/server-guest/package.json | 39 ++ models/server-guest/src/index.ts | 34 ++ models/server-guest/tsconfig.json | 9 + models/task/package.json | 1 + models/task/src/index.ts | 3 + models/task/src/plugin.ts | 5 +- models/tracker/src/types.ts | 1 - packages/core/src/__tests__/memdb.test.ts | 4 +- packages/core/src/classes.ts | 17 +- packages/presentation/img/chen.png | Bin 34129 -> 0 bytes .../src/components/AttributeEditor.svelte | 7 +- .../src/components/DraggableList.svelte | 2 +- .../src/components/NavLink.svelte | 1 + .../components/breadcrumbs/Breadcrumbs.svelte | 3 +- packages/query/src/__tests__/minmodel.ts | 6 +- packages/query/src/__tests__/query.test.ts | 3 +- .../CollaborativeAttributeBox.svelte | 3 +- packages/ui/img/chen.png | Bin 34129 -> 0 bytes packages/ui/img/elon.png | Bin 39256 -> 0 bytes packages/ui/img/kathryn.png | Bin 40495 -> 0 bytes packages/ui/img/tim.png | Bin 34918 -> 0 bytes packages/ui/src/components/Button.svelte | 6 +- .../ui/src/components/PanelInstance.svelte | 4 + .../components/ActivityMessageActions.svelte | 13 +- .../ActivityMessageTemplate.svelte | 9 +- .../src/components/reactions/Reactions.svelte | 7 +- .../reactions/ReactionsPresenter.svelte | 8 +- .../src/components/AttachmentActions.svelte | 61 ++-- .../src/components/AttachmentPreview.svelte | 9 +- .../AttachmentStyleBoxCollabEditor.svelte | 18 +- .../src/components/AttachmentsGrid.svelte | 10 +- .../src/components/EditCard.svelte | 19 +- .../src/components/KanbanCard.svelte | 18 +- .../src/components/KanbanView.svelte | 18 +- .../src/components/ListHeader.svelte | 25 +- .../src/components/DayCalendar.svelte | 12 +- .../src/components/EventElement.svelte | 23 +- .../chat-message/ChatMessagesPresenter.svelte | 5 +- .../src/components/AssigneeBox.svelte | 13 +- .../src/components/ChannelsEditor.svelte | 3 +- .../src/components/EditOrganization.svelte | 11 +- .../src/components/EditPerson.svelte | 20 +- .../src/components/Members.svelte | 15 +- plugins/guest-assets/.eslintrc.js | 7 + plugins/guest-assets/assets/icons.svg | 6 + plugins/guest-assets/config/rig.json | 5 + plugins/guest-assets/jest.config.js | 7 + plugins/guest-assets/lang/en.json | 9 + plugins/guest-assets/lang/ru.json | 9 + plugins/guest-assets/package.json | 44 +++ .../guest-assets/src/__tests__/lang.test.ts | 6 + plugins/guest-assets/src/index.ts | 23 ++ plugins/guest-assets/tsconfig.json | 10 + plugins/guest-resources/.eslintrc.js | 4 + plugins/guest-resources/config/rig.json | 5 + plugins/guest-resources/jest.config.js | 5 + plugins/guest-resources/package.json | 54 +++ plugins/guest-resources/postcss.config.js | 5 + .../src/components/CreatePublicLink.svelte | 119 +++++++ .../src/components/Guest.svelte | 337 ++++++++++++++++++ .../src/components/GuestApp.svelte | 59 +++ plugins/guest-resources/src/connect.ts | 188 ++++++++++ plugins/guest-resources/src/index.ts | 10 + plugins/guest-resources/src/plugin.ts | 12 + plugins/guest-resources/src/utils.ts | 11 + plugins/guest-resources/svelte.config.js | 5 + plugins/guest-resources/tsconfig.json | 8 + plugins/guest/.eslintrc.js | 7 + plugins/guest/.npmignore | 4 + plugins/guest/config/rig.json | 4 + plugins/guest/jest.config.js | 7 + plugins/guest/package.json | 44 +++ plugins/guest/src/index.ts | 37 ++ plugins/guest/tsconfig.json | 9 + .../src/components/DepartmentCard.svelte | 12 +- .../src/components/EditRequestType.svelte | 2 +- .../src/components/PersonsPresenter.svelte | 12 +- .../schedule/ScheduleRequest.svelte | 8 +- .../src/components/HierarchyElement.svelte | 21 +- .../src/components/EditLead.svelte | 5 + .../src/components/KanbanCard.svelte | 16 +- plugins/login-resources/src/index.ts | 5 +- plugins/login-resources/src/utils.ts | 36 ++ plugins/login/src/index.ts | 3 +- .../src/components/EditApplication.svelte | 6 +- .../src/components/EditVacancy.svelte | 19 +- .../src/components/VacancyList.svelte | 15 +- .../src/components/review/Reviews.svelte | 19 +- .../src/components/ClassAttributesList.svelte | 1 - .../src/components/ClassHierarchy.svelte | 9 +- .../src/components/EnumSetting.svelte | 23 +- .../src/components/Owners.svelte | 28 +- .../src/components/TaskHeader.svelte | 8 +- .../src/components/kanban/KanbanView.svelte | 20 +- .../projectTypes/ProjectEditor.svelte | 8 +- .../src/components/state/StateEditor.svelte | 2 +- .../components/issues/AssigneeEditor.svelte | 2 + .../components/issues/DueDateEditor.svelte | 3 +- .../components/issues/IssuePresenter.svelte | 10 +- .../src/components/issues/KanbanView.svelte | 9 +- .../components/issues/RelationEditor.svelte | 4 +- .../issues/RelationEditorPart.svelte | 22 +- .../components/issues/TitlePresenter.svelte | 10 - .../issues/edit/ControlPanel.svelte | 35 +- .../components/issues/edit/EditIssue.svelte | 62 ++-- .../issues/edit/QueryIssuesList.svelte | 32 +- .../issues/edit/SubIssueList.svelte | 7 +- .../components/issues/edit/SubIssues.svelte | 42 +-- .../timereport/EstimationSubIssueList.svelte | 14 +- .../timereport/EstimationValueEditor.svelte | 1 + .../timereport/ReportedTimeEditor.svelte | 15 +- .../timereport/TimeSpendReportsList.svelte | 11 +- .../templates/EditIssueTemplate.svelte | 14 +- plugins/view-resources/package.json | 1 + plugins/view-resources/src/actionImpl.ts | 4 +- plugins/view-resources/src/actions.ts | 16 + .../src/components/ActionHandler.svelte | 5 +- .../src/components/ClassAttributeBar.svelte | 38 +- .../src/components/DocAttributeBar.svelte | 3 + .../src/components/DocNavLink.svelte | 11 +- .../src/components/EditDoc.svelte | 49 ++- .../src/components/EnumEditor.svelte | 2 + .../components/HyperlinkEditorPopup.svelte | 8 +- .../src/components/ParentsNavigator.svelte | 4 +- .../src/components/Table.svelte | 45 +-- .../src/components/ViewOptionsButton.svelte | 2 + .../components/ViewletSettingButton.svelte | 5 + .../components/ViewletsSettingButton.svelte | 7 +- .../src/components/list/ListCategory.svelte | 15 +- .../src/components/list/ListItem.svelte | 28 +- plugins/view-resources/src/index.ts | 2 +- plugins/view-resources/src/utils.ts | 8 + plugins/workbench-resources/img/avatar.png | Bin 2799 -> 0 bytes plugins/workbench-resources/img/voltron.png | Bin 957 -> 0 bytes .../src/components/SpaceView.svelte | 4 +- .../src/components/Workbench.svelte | 9 +- plugins/workbench-resources/src/index.ts | 3 + plugins/workbench-resources/src/plugin.ts | 3 +- plugins/workbench/src/index.ts | 3 +- pods/server/package.json | 2 + pods/server/src/server.ts | 2 + rush.json | 35 ++ server-plugins/guest-resources/.eslintrc.js | 7 + server-plugins/guest-resources/.npmignore | 4 + .../guest-resources/config/rig.json | 4 + server-plugins/guest-resources/jest.config.js | 7 + server-plugins/guest-resources/package.json | 43 +++ server-plugins/guest-resources/src/index.ts | 115 ++++++ server-plugins/guest-resources/tsconfig.json | 9 + server-plugins/guest/.eslintrc.js | 7 + server-plugins/guest/.npmignore | 4 + server-plugins/guest/config/rig.json | 4 + server-plugins/guest/jest.config.js | 7 + server-plugins/guest/package.json | 41 +++ server-plugins/guest/src/index.ts | 32 ++ server-plugins/guest/tsconfig.json | 9 + server/account/src/index.ts | 31 +- server/middleware/src/spaceSecurity.ts | 9 +- server/mongo/src/__tests__/minmodel.ts | 7 +- server/ws/src/__tests__/minmodel.ts | 7 +- 184 files changed, 2755 insertions(+), 561 deletions(-) create mode 100644 models/guest/.eslintrc.js create mode 100644 models/guest/.npmignore create mode 100644 models/guest/config/rig.json create mode 100644 models/guest/package.json create mode 100644 models/guest/src/index.ts create mode 100644 models/guest/src/migration.ts create mode 100644 models/guest/src/plugin.ts create mode 100644 models/guest/src/utils.ts create mode 100644 models/guest/tsconfig.json create mode 100644 models/server-guest/.eslintrc.js create mode 100644 models/server-guest/.npmignore create mode 100644 models/server-guest/config/rig.json create mode 100644 models/server-guest/package.json create mode 100644 models/server-guest/src/index.ts create mode 100644 models/server-guest/tsconfig.json delete mode 100755 packages/presentation/img/chen.png delete mode 100755 packages/ui/img/chen.png delete mode 100755 packages/ui/img/elon.png delete mode 100755 packages/ui/img/kathryn.png delete mode 100755 packages/ui/img/tim.png create mode 100644 plugins/guest-assets/.eslintrc.js create mode 100644 plugins/guest-assets/assets/icons.svg create mode 100644 plugins/guest-assets/config/rig.json create mode 100644 plugins/guest-assets/jest.config.js create mode 100644 plugins/guest-assets/lang/en.json create mode 100644 plugins/guest-assets/lang/ru.json create mode 100644 plugins/guest-assets/package.json create mode 100644 plugins/guest-assets/src/__tests__/lang.test.ts create mode 100644 plugins/guest-assets/src/index.ts create mode 100644 plugins/guest-assets/tsconfig.json create mode 100644 plugins/guest-resources/.eslintrc.js create mode 100644 plugins/guest-resources/config/rig.json create mode 100644 plugins/guest-resources/jest.config.js create mode 100644 plugins/guest-resources/package.json create mode 100644 plugins/guest-resources/postcss.config.js create mode 100644 plugins/guest-resources/src/components/CreatePublicLink.svelte create mode 100644 plugins/guest-resources/src/components/Guest.svelte create mode 100644 plugins/guest-resources/src/components/GuestApp.svelte create mode 100644 plugins/guest-resources/src/connect.ts create mode 100644 plugins/guest-resources/src/index.ts create mode 100644 plugins/guest-resources/src/plugin.ts create mode 100644 plugins/guest-resources/src/utils.ts create mode 100644 plugins/guest-resources/svelte.config.js create mode 100644 plugins/guest-resources/tsconfig.json create mode 100644 plugins/guest/.eslintrc.js create mode 100644 plugins/guest/.npmignore create mode 100644 plugins/guest/config/rig.json create mode 100644 plugins/guest/jest.config.js create mode 100644 plugins/guest/package.json create mode 100644 plugins/guest/src/index.ts create mode 100644 plugins/guest/tsconfig.json delete mode 100644 plugins/workbench-resources/img/avatar.png delete mode 100644 plugins/workbench-resources/img/voltron.png create mode 100644 server-plugins/guest-resources/.eslintrc.js create mode 100644 server-plugins/guest-resources/.npmignore create mode 100644 server-plugins/guest-resources/config/rig.json create mode 100644 server-plugins/guest-resources/jest.config.js create mode 100644 server-plugins/guest-resources/package.json create mode 100644 server-plugins/guest-resources/src/index.ts create mode 100644 server-plugins/guest-resources/tsconfig.json create mode 100644 server-plugins/guest/.eslintrc.js create mode 100644 server-plugins/guest/.npmignore create mode 100644 server-plugins/guest/config/rig.json create mode 100644 server-plugins/guest/jest.config.js create mode 100644 server-plugins/guest/package.json create mode 100644 server-plugins/guest/src/index.ts create mode 100644 server-plugins/guest/tsconfig.json diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 177cb10060..c65515cd40 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -152,6 +152,15 @@ dependencies: '@rush-temp/gmail-resources': specifier: file:./projects/gmail-resources.tgz version: file:projects/gmail-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(postcss-load-config@4.0.2)(postcss@8.4.35)(ts-node@10.9.2) + '@rush-temp/guest': + specifier: file:./projects/guest.tgz + version: file:projects/guest.tgz(@types/node@20.11.19)(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2) + '@rush-temp/guest-assets': + specifier: file:./projects/guest-assets.tgz + version: file:projects/guest-assets.tgz(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2) + '@rush-temp/guest-resources': + specifier: file:./projects/guest-resources.tgz + version: file:projects/guest-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(postcss-load-config@4.0.2)(postcss@8.4.35)(ts-node@10.9.2) '@rush-temp/hr': specifier: file:./projects/hr.tgz version: file:projects/hr.tgz(@types/node@20.11.19)(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2) @@ -236,6 +245,9 @@ dependencies: '@rush-temp/model-gmail': specifier: file:./projects/model-gmail.tgz version: file:projects/model-gmail.tgz(svelte@4.2.11) + '@rush-temp/model-guest': + specifier: file:./projects/model-guest.tgz + version: file:projects/model-guest.tgz(svelte@4.2.11) '@rush-temp/model-hr': specifier: file:./projects/model-hr.tgz version: file:projects/model-hr.tgz(svelte@4.2.11) @@ -284,6 +296,9 @@ dependencies: '@rush-temp/model-server-gmail': specifier: file:./projects/model-server-gmail.tgz version: file:projects/model-server-gmail.tgz(svelte@4.2.11) + '@rush-temp/model-server-guest': + specifier: file:./projects/model-server-guest.tgz + version: file:projects/model-server-guest.tgz(svelte@4.2.11) '@rush-temp/model-server-hr': specifier: file:./projects/model-server-hr.tgz version: file:projects/model-server-hr.tgz(svelte@4.2.11) @@ -488,6 +503,12 @@ dependencies: '@rush-temp/server-gmail-resources': specifier: file:./projects/server-gmail-resources.tgz version: file:projects/server-gmail-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2) + '@rush-temp/server-guest': + specifier: file:./projects/server-guest.tgz + version: file:projects/server-guest.tgz(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2) + '@rush-temp/server-guest-resources': + specifier: file:./projects/server-guest-resources.tgz + version: file:projects/server-guest-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2) '@rush-temp/server-hr': specifier: file:./projects/server-hr.tgz version: file:projects/server-hr.tgz(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2) @@ -18111,6 +18132,116 @@ packages: - ts-node dev: false + file:projects/guest-assets.tgz(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2): + resolution: {integrity: sha512-RwM1NfgdyK2g9TTlQfMS4vTkMrwVzDCB7dtCuQDugHQLgLGb/Ea+Z9srtAHwY8ERKFZx6T/pKwNfODyacB1AzQ==, tarball: file:projects/guest-assets.tgz} + id: file:projects/guest-assets.tgz + name: '@rush-temp/guest-assets' + version: 0.0.0 + dependencies: + '@types/jest': 29.5.12 + '@types/node': 20.11.19 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) + prettier: 3.2.5 + prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) + ts-jest: 29.1.2(esbuild@0.20.1)(jest@29.7.0)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - '@babel/core' + - '@jest/types' + - babel-jest + - babel-plugin-macros + - esbuild + - node-notifier + - supports-color + - svelte + - ts-node + dev: false + + file:projects/guest-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(postcss-load-config@4.0.2)(postcss@8.4.35)(ts-node@10.9.2): + resolution: {integrity: sha512-7+lTvSCKLVvKBseFEtIJLuBf98DhhcXdu1bp7YxtmjO1nvZuPgWfw8aVdnuKLiZANpKhWxoYOS+yvpwYumML0Q==, tarball: file:projects/guest-resources.tgz} + id: file:projects/guest-resources.tgz + name: '@rush-temp/guest-resources' + version: 0.0.0 + dependencies: + '@types/jest': 29.5.12 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + eslint-plugin-svelte: 2.35.1(eslint@8.56.0)(svelte@4.2.11)(ts-node@10.9.2) + fast-copy: 3.0.1 + jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) + prettier: 3.2.5 + prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) + sass: 1.71.1 + svelte: 4.2.11 + svelte-check: 3.6.4(postcss-load-config@4.0.2)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.11) + svelte-eslint-parser: 0.33.1(svelte@4.2.11) + svelte-loader: 3.1.9(svelte@4.2.11) + svelte-preprocess: 5.1.3(postcss-load-config@4.0.2)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.11)(typescript@5.3.3) + ts-jest: 29.1.2(esbuild@0.20.1)(jest@29.7.0)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - '@babel/core' + - '@jest/types' + - '@types/node' + - babel-jest + - babel-plugin-macros + - coffeescript + - esbuild + - less + - node-notifier + - postcss + - postcss-load-config + - pug + - stylus + - sugarss + - supports-color + - ts-node + dev: false + + file:projects/guest.tgz(@types/node@20.11.19)(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2): + resolution: {integrity: sha512-4i+LNJNUK+8o49FVZYIQZSG6nxSPni42hV4fLWFhOhz6KHcDsWcKY7n8I3Mc87ZJ8e1YteSZn95ZFLPEkJYaIQ==, tarball: file:projects/guest.tgz} + id: file:projects/guest.tgz + name: '@rush-temp/guest' + version: 0.0.0 + dependencies: + '@types/jest': 29.5.12 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) + prettier: 3.2.5 + prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) + ts-jest: 29.1.2(esbuild@0.20.1)(jest@29.7.0)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - '@babel/core' + - '@jest/types' + - '@types/node' + - babel-jest + - babel-plugin-macros + - esbuild + - node-notifier + - supports-color + - svelte + - ts-node + dev: false + file:projects/hr-assets.tgz(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2): resolution: {integrity: sha512-iySEToC2UKeQtUhHx21qbzPRz1G4UvCNhUuQtHS4uuzLVJ8CJkLv/l4EHkdXZr7y35lNiLqfkeeb+XO+3n0+Xg==, tarball: file:projects/hr-assets.tgz} id: file:projects/hr-assets.tgz @@ -18764,7 +18895,7 @@ packages: dev: false file:projects/model-all.tgz(svelte@4.2.11): - resolution: {integrity: sha512-oRRJx0V+rtUYxrRRDBQwb0ttCzClI/SVBXS57BFT2Qx1xYZ6fPSjZQWlca0KFztUqbg4qLnoib7Tq26otiPYEw==, tarball: file:projects/model-all.tgz} + resolution: {integrity: sha512-dHsSkXsC7WkS9h8RlqjpSVF9TlqTA2UTiK5ehmxM3gJxpPFtrHrH8qD48u08TSh/nZJ2GlzinE5z6AvEuIHVsQ==, tarball: file:projects/model-all.tgz} id: file:projects/model-all.tgz name: '@rush-temp/model-all' version: 0.0.0 @@ -18894,7 +19025,7 @@ packages: dev: false file:projects/model-contact.tgz(svelte@4.2.11): - resolution: {integrity: sha512-1KCFugNTofKCnrBf9i+b5/XOflGD7esyG7mzy8YkX1n4AyI9YlFOLUuURGucEol5uKKU797NGRa2BO6iECAWbw==, tarball: file:projects/model-contact.tgz} + resolution: {integrity: sha512-Rv8gLCvBayo+s//ldMnTatYDhJX6vXj46H9nE3L88EJK1m+9Y7dkYKNE7j6tmRNrfPIy+jHdLgumwXX313Ts/g==, tarball: file:projects/model-contact.tgz} id: file:projects/model-contact.tgz name: '@rush-temp/model-contact' version: 0.0.0 @@ -18958,6 +19089,27 @@ packages: - svelte dev: false + file:projects/model-guest.tgz(svelte@4.2.11): + resolution: {integrity: sha512-AT15/UZNrG5UB+SntcmV9cyza8Fh/u50uw7xijag/O0J4cwzvdBO1fWAOhstQ0FmIVY+FUnttelz2cZNf1wYjg==, tarball: file:projects/model-guest.tgz} + id: file:projects/model-guest.tgz + name: '@rush-temp/model-guest' + version: 0.0.0 + dependencies: + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + prettier: 3.2.5 + prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + - svelte + dev: false + file:projects/model-hr.tgz(svelte@4.2.11): resolution: {integrity: sha512-m1fNr1rzBg+FqCPoeWyo1GE0BmA1TRTTgNe3s48jF0b16O0EVtlW6c24vaex1Xaf7rPyrFAYyoVd4XLMGr1Row==, tarball: file:projects/model-hr.tgz} id: file:projects/model-hr.tgz @@ -19295,6 +19447,27 @@ packages: - svelte dev: false + file:projects/model-server-guest.tgz(svelte@4.2.11): + resolution: {integrity: sha512-akEz5ZppVM2lB6j5w2nZUoGsmluulr/MwMPlyNsxYNYC1tgqC+u14khPAOWkoRyjdsPGGHFdbyMRDEQNBE/OKg==, tarball: file:projects/model-server-guest.tgz} + id: file:projects/model-server-guest.tgz + name: '@rush-temp/model-server-guest' + version: 0.0.0 + dependencies: + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + prettier: 3.2.5 + prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + - svelte + dev: false + file:projects/model-server-hr.tgz(svelte@4.2.11): resolution: {integrity: sha512-M4L3fW3gYeKBdXk3PaHy4u1tuCq0AAFIe6F/SWSeZioefq0f6GW+nerxFmAO3l/leySffba+rdXNmmOAzXleNw==, tarball: file:projects/model-server-hr.tgz} id: file:projects/model-server-hr.tgz @@ -19674,7 +19847,7 @@ packages: dev: false file:projects/model-task.tgz(svelte@4.2.11): - resolution: {integrity: sha512-x9V62r2Vhq0crzWctRsKFFXj7hWW01o82UGgFYZMWDKmOK9rH+Ab4EBwjkxJRg1IDJdTlCOh6BaXP50FZ8KUhg==, tarball: file:projects/model-task.tgz} + resolution: {integrity: sha512-dwcT+Z5GRNUUHfngIuBccTtt1yKE5ju1uOdAM2CcUAMWPRxtoh/ahFIYTPQMbIUIDkGqKA5F62c6C1+NTL1FhQ==, tarball: file:projects/model-task.tgz} id: file:projects/model-task.tgz name: '@rush-temp/model-task' version: 0.0.0 @@ -20335,7 +20508,7 @@ packages: dev: false file:projects/pod-server.tgz(svelte@4.2.11): - resolution: {integrity: sha512-Vu7R/lyLRjCyqDTofzOdVCFk67PxBM5neEHd82HBLrNniUjVrmCfEFt4IBQOgpoTy1cM73swFSsl7UEyLA0VOQ==, tarball: file:projects/pod-server.tgz} + resolution: {integrity: sha512-t0dTTvzR0GNGvvEi8f/KAk65SeP43eYlOH5Bh1ObHU0zb7NAH8idybiYypKKkpRrZHydTDL/C1iFrjXTrqqVKQ==, tarball: file:projects/pod-server.tgz} id: file:projects/pod-server.tgz name: '@rush-temp/pod-server' version: 0.0.0 @@ -20482,7 +20655,7 @@ packages: dev: false file:projects/prod.tgz(bufferutil@4.0.8)(sass@1.71.1)(ts-node@10.9.2): - resolution: {integrity: sha512-wxoPP5P+qy7KnUurqydjBwLhbA7sDZ2DKpp0IZeHAUM1XVUyGG7+lmtH4D5s3iCVCwzvZ8qZks66ncp3ejqeFQ==, tarball: file:projects/prod.tgz} + resolution: {integrity: sha512-sz8Xw/l82dtTDjeUD5fIOHpy9rjyTrbw1H7gh31h8nZxztMjPRZw9kRs9bzs9KidAPLnWEA/jL5T9j8QfaU01w==, tarball: file:projects/prod.tgz} id: file:projects/prod.tgz name: '@rush-temp/prod' version: 0.0.0 @@ -21367,6 +21540,70 @@ packages: - ts-node dev: false + file:projects/server-guest-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2): + resolution: {integrity: sha512-oxxjV/UtqYFgmLBSfc+vkVFUgLsaMFU/x77GCv8dEHlLlXJTUx5uqkhVB/xh6r3G3j0pT+XaUwhedEWqOWVb/A==, tarball: file:projects/server-guest-resources.tgz} + id: file:projects/server-guest-resources.tgz + name: '@rush-temp/server-guest-resources' + version: 0.0.0 + dependencies: + '@types/jest': 29.5.12 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) + prettier: 3.2.5 + prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) + ts-jest: 29.1.2(esbuild@0.20.1)(jest@29.7.0)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - '@babel/core' + - '@jest/types' + - '@types/node' + - babel-jest + - babel-plugin-macros + - esbuild + - node-notifier + - supports-color + - svelte + - ts-node + dev: false + + file:projects/server-guest.tgz(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2): + resolution: {integrity: sha512-M1JF30TVm4MhIwj+KQme/VjmeoGGjUwhsntBcABceM+IewzJigjYhmVR4XTKURx9IbdHv1ibqqZhxjxkW/aFZg==, tarball: file:projects/server-guest.tgz} + id: file:projects/server-guest.tgz + name: '@rush-temp/server-guest' + version: 0.0.0 + dependencies: + '@types/jest': 29.5.12 + '@types/node': 20.11.19 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) + prettier: 3.2.5 + prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) + ts-jest: 29.1.2(esbuild@0.20.1)(jest@29.7.0)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - '@babel/core' + - '@jest/types' + - babel-jest + - babel-plugin-macros + - esbuild + - node-notifier + - supports-color + - svelte + - ts-node + dev: false + file:projects/server-hr-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(svelte@4.2.11)(ts-node@10.9.2): resolution: {integrity: sha512-9ynW2uOReTvLE+Io8c0xqxZNaVh+BbgbRJdAV/Y3GptWFzoyizvF7tfpwJaa/KWz53rDcVRlrXtHg/izZS6g9A==, tarball: file:projects/server-hr-resources.tgz} id: file:projects/server-hr-resources.tgz @@ -23281,7 +23518,7 @@ packages: dev: false file:projects/tool.tgz(bufferutil@4.0.8)(svelte@4.2.11): - resolution: {integrity: sha512-7SvydeuLUJiHLfgw7qRAuhTOopzoN6XU4XlWoQoDi+YYE4fj+c6PCZPP3GVotIOXCC3uNZe4wrFyrGClRhU0IA==, tarball: file:projects/tool.tgz} + resolution: {integrity: sha512-OrzOa2Flf5T2Yto4XM6PVEb19EWtTh3ektrC/qUedc4e4Fc/0Ihqqe7gyvD09KKfrczfagnn2061YZy9xFRh5w==, tarball: file:projects/tool.tgz} id: file:projects/tool.tgz name: '@rush-temp/tool' version: 0.0.0 @@ -23568,7 +23805,7 @@ packages: dev: false file:projects/view-resources.tgz(@types/node@20.11.19)(esbuild@0.20.1)(postcss-load-config@4.0.2)(postcss@8.4.35)(ts-node@10.9.2): - resolution: {integrity: sha512-+A80Ph9sdIfb1nBd6Th+OmqDik7Ky4ImRa+b9i1XPkBQEAM4Fv9m6A+Ebq9lIi6pjJmiF8f4v4S+mVaZr0o3Hg==, tarball: file:projects/view-resources.tgz} + resolution: {integrity: sha512-SMUz1ewMVxZdhnE79sVLeW8cf5uNr+e1QtZDELM/JTTPLBy9IthoGoHCXf9NaWWHTVp2uEPDF4r74/dJw8Vmhg==, tarball: file:projects/view-resources.tgz} id: file:projects/view-resources.tgz name: '@rush-temp/view-resources' version: 0.0.0 diff --git a/dev/prod/package.json b/dev/prod/package.json index a927b17ab5..e80750f252 100644 --- a/dev/prod/package.json +++ b/dev/prod/package.json @@ -175,6 +175,9 @@ "@hcengineering/server-view": "^0.6.0", "@hcengineering/server-view-resources": "^0.6.0", "@hcengineering/server-activity": "^0.6.0", - "@hcengineering/server-activity-resources": "^0.6.0" + "@hcengineering/server-activity-resources": "^0.6.0", + "@hcengineering/guest": "^0.6.0", + "@hcengineering/guest-assets": "^0.6.0", + "@hcengineering/guest-resources": "^0.6.0" } } diff --git a/dev/prod/src/platform.ts b/dev/prod/src/platform.ts index c0da00fe79..879a5e610d 100644 --- a/dev/prod/src/platform.ts +++ b/dev/prod/src/platform.ts @@ -23,6 +23,7 @@ import { chunterId } from '@hcengineering/chunter' import client, { clientId } from '@hcengineering/client' import contactPlugin, { contactId } from '@hcengineering/contact' import gmail, { gmailId } from '@hcengineering/gmail' +import guest, { guestId } from '@hcengineering/guest' import { hrId } from '@hcengineering/hr' import { imageCropperId } from '@hcengineering/image-cropper' import { inventoryId } from '@hcengineering/inventory' @@ -53,6 +54,7 @@ import '@hcengineering/calendar-assets' import '@hcengineering/chunter-assets' import '@hcengineering/contact-assets' import '@hcengineering/gmail-assets' +import '@hcengineering/guest-assets' import '@hcengineering/hr-assets' import '@hcengineering/inventory-assets' import '@hcengineering/lead-assets' @@ -76,9 +78,9 @@ import presentation, { presentationId } from '@hcengineering/presentation' import textEditor, { textEditorId } from '@hcengineering/text-editor' import { setMetadata } from '@hcengineering/platform' +import { preferenceId } from '@hcengineering/preference' import { setDefaultLanguage } from '@hcengineering/theme' import { uiId } from '@hcengineering/ui/src/plugin' -import { preferenceId } from '@hcengineering/preference' interface Config { ACCOUNTS_URL: string @@ -130,6 +132,7 @@ function configureI18n(): void { addStringsLoader(trackerId, async (lang: string) => await import(`@hcengineering/tracker-assets/lang/${lang}.json`)) addStringsLoader(viewId, async (lang: string) => await import(`@hcengineering/view-assets/lang/${lang}.json`)) addStringsLoader(workbenchId, async (lang: string) => await import(`@hcengineering/workbench-assets/lang/${lang}.json`)) + addStringsLoader(guestId, async (lang: string) => await import(`@hcengineering/guest-assets/lang/${lang}.json`)) } export async function configurePlatform() { @@ -169,7 +172,8 @@ export async function configurePlatform() { new Map([ [workbenchId, workbench.component.WorkbenchApp], [loginId, login.component.LoginApp], - [calendarId, calendar.component.ConnectApp] + [calendarId, calendar.component.ConnectApp], + [guestId, guest.component.GuestApp] ]) ) @@ -204,6 +208,7 @@ export async function configurePlatform() { addLocation(bitrixId, () => import(/* webpackChunkName: "bitrix" */ '@hcengineering/bitrix-resources')) addLocation(requestId, () => import(/* webpackChunkName: "request" */ '@hcengineering/request-resources')) addLocation(supportId, () => import(/* webpackChunkName: "support" */ '@hcengineering/support-resources')) + addLocation(guestId, () => import(/* webpackChunkName: "guest" */ '@hcengineering/guest-resources')) setMetadata(client.metadata.FilterModel, true) setMetadata(client.metadata.ExtraPlugins, ['preference' as Plugin]) diff --git a/dev/tool/package.json b/dev/tool/package.json index ca76bff994..42db1a9c3c 100644 --- a/dev/tool/package.json +++ b/dev/tool/package.json @@ -119,6 +119,8 @@ "@hcengineering/server-view-resources": "^0.6.0", "@hcengineering/server-activity": "^0.6.0", "@hcengineering/server-activity-resources": "^0.6.0", + "@hcengineering/server-guest": "^0.6.0", + "@hcengineering/server-guest-resources": "^0.6.0", "@hcengineering/setting": "^0.6.11", "@hcengineering/tags": "^0.6.12", "@hcengineering/task": "^0.6.13", diff --git a/dev/tool/src/__start.ts b/dev/tool/src/__start.ts index 10785ddb16..db386dd5ec 100644 --- a/dev/tool/src/__start.ts +++ b/dev/tool/src/__start.ts @@ -41,6 +41,7 @@ import { serverTaskId } from '@hcengineering/server-task' import { serverTelegramId } from '@hcengineering/server-telegram' import { serverTrackerId } from '@hcengineering/server-tracker' import { serverViewId } from '@hcengineering/server-view' +import { serverGuestId } from '@hcengineering/server-guest' addLocation(serverActivityId, () => import('@hcengineering/server-activity-resources')) addLocation(serverAttachmentId, () => import('@hcengineering/server-attachment-resources')) @@ -61,6 +62,7 @@ addLocation(serverTelegramId, () => import('@hcengineering/server-telegram-resou addLocation(serverHrId, () => import('@hcengineering/server-hr-resources')) addLocation(serverRequestId, () => import('@hcengineering/server-request-resources')) addLocation(serverViewId, () => import('@hcengineering/server-view-resources')) +addLocation(serverGuestId, () => import('@hcengineering/server-guest-resources')) function prepareTools (): { mongodbUri: string diff --git a/dev/tool/src/index.ts b/dev/tool/src/index.ts index cac9b21f19..5383207b19 100644 --- a/dev/tool/src/index.ts +++ b/dev/tool/src/index.ts @@ -48,7 +48,7 @@ import { type Db, MongoClient } from 'mongodb' import { clearTelegramHistory } from './telegram' import { diffWorkspace, updateField } from './workspace' -import { type Data, getWorkspaceId, RateLimiter, type Tx, type Version } from '@hcengineering/core' +import { type Data, getWorkspaceId, RateLimiter, type Tx, type Version, type AccountRole } from '@hcengineering/core' import { type MinioService } from '@hcengineering/minio' import { consoleModelLogger, type MigrateOperation } from '@hcengineering/model' import { openAIConfigDefaults } from '@hcengineering/openai' @@ -228,7 +228,7 @@ export function devTool ( program .command('set-user-role ') .description('set user role') - .action(async (email: string, workspace: string, role: number, cmd) => { + .action(async (email: string, workspace: string, role: AccountRole, cmd) => { console.log(`set user ${email} role for ${workspace}...`) await setRole(email, workspace, productId, role) }) diff --git a/models/all/package.json b/models/all/package.json index c21ee97e2e..88e30dcb98 100644 --- a/models/all/package.json +++ b/models/all/package.json @@ -83,6 +83,8 @@ "@hcengineering/model-server-activity": "^0.6.0", "@hcengineering/model-server-openai": "^0.6.0", "@hcengineering/model-server-translate": "^0.6.0", - "@hcengineering/model-support": "^0.6.0" + "@hcengineering/model-support": "^0.6.0", + "@hcengineering/model-guest": "^0.6.0", + "@hcengineering/model-server-guest": "^0.6.0" } } diff --git a/models/all/src/index.ts b/models/all/src/index.ts index c8cc054956..48207fdf60 100644 --- a/models/all/src/index.ts +++ b/models/all/src/index.ts @@ -67,6 +67,8 @@ import { textEditorId, createModel as textEditorModel } from '@hcengineering/mod import tracker, { trackerId, createModel as trackerModel } from '@hcengineering/model-tracker' import view, { viewId, createModel as viewModel } from '@hcengineering/model-view' import workbench, { workbenchId, createModel as workbenchModel } from '@hcengineering/model-workbench' +import { guestId, createModel as guestModel } from '@hcengineering/model-guest' +import { serverGuestId, createModel as serverGuestModel } from '@hcengineering/model-server-guest' import { openAIId, createModel as serverOpenAI } from '@hcengineering/model-server-openai' import { createModel as serverTranslate, translateId } from '@hcengineering/model-server-translate' @@ -111,6 +113,7 @@ export default function buildModel (enabled: string[] = ['*'], disabled: string[ [coreModel, coreId], [activityModel, activityId], [attachmentModel, attachmentId], + [guestModel, guestId], [tagsModel, tagsId], [viewModel, viewId], [workbenchModel, workbenchId], @@ -298,7 +301,8 @@ export default function buildModel (enabled: string[] = ['*'], disabled: string[ [serverViewModel, serverViewId], [serverActivityModel, serverActivityId], [serverTranslate, translateId], - [serverOpenAI, openAIId] + [serverOpenAI, openAIId], + [serverGuestModel, serverGuestId] ] for (const [b, id, config] of builders) { diff --git a/models/all/src/migration.ts b/models/all/src/migration.ts index 201737373a..2968496ccb 100644 --- a/models/all/src/migration.ts +++ b/models/all/src/migration.ts @@ -18,6 +18,7 @@ import { type MigrateOperation } from '@hcengineering/model' import { attachmentOperation } from '@hcengineering/model-attachment' import { chunterOperation } from '@hcengineering/model-chunter' import { contactOperation } from '@hcengineering/model-contact' +import { guestOperation } from '@hcengineering/model-guest' import { coreOperation } from '@hcengineering/model-core' import { gmailOperation } from '@hcengineering/model-gmail' import { leadOperation } from '@hcengineering/model-lead' @@ -54,6 +55,7 @@ export const migrateOperations: [string, MigrateOperation][] = [ ['recruit', recruitOperation], ['view', viewOperation], ['contact', contactOperation], + ['guest', guestOperation], ['tags', tagsOperation], ['setting', settingOperation], ['tracker', trackerOperation], diff --git a/models/contact/package.json b/models/contact/package.json index ec41226575..27ee1e2de8 100644 --- a/models/contact/package.json +++ b/models/contact/package.json @@ -48,6 +48,7 @@ "@hcengineering/templates": "^0.6.7", "@hcengineering/ui": "^0.6.11", "@hcengineering/view": "^0.6.9", + "@hcengineering/model-guest": "^0.6.0", "cross-fetch": "^3.1.5" } } diff --git a/models/contact/src/index.ts b/models/contact/src/index.ts index 17964cd8d5..9ccd46a98f 100644 --- a/models/contact/src/index.ts +++ b/models/contact/src/index.ts @@ -73,6 +73,7 @@ import templates from '@hcengineering/templates' import { type AnyComponent } from '@hcengineering/ui/src/types' import { type Action } from '@hcengineering/view' import contact from './plugin' +import { createPublicLinkAction } from '@hcengineering/model-guest' export { contactId } from '@hcengineering/contact' export { contactOperation } from './migration' @@ -1088,4 +1089,6 @@ export function createModel (builder: Builder): void { [], ['comments', 'attachments'] ) + + createPublicLinkAction(builder, contact.class.Contact, contact.action.PublicLink) } diff --git a/models/contact/src/plugin.ts b/models/contact/src/plugin.ts index e9b217012f..b04a4195ea 100644 --- a/models/contact/src/plugin.ts +++ b/models/contact/src/plugin.ts @@ -123,7 +123,8 @@ export default mergeIds(contactId, contact, { KickEmployee: '' as Ref, DeleteEmployee: '' as Ref, MergePersons: '' as Ref>, - OpenChannel: '' as Ref + OpenChannel: '' as Ref, + PublicLink: '' as Ref> }, actionImpl: { KickEmployee: '' as ViewAction, diff --git a/models/guest/.eslintrc.js b/models/guest/.eslintrc.js new file mode 100644 index 0000000000..c1cf82cba0 --- /dev/null +++ b/models/guest/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.json' + } +} diff --git a/models/guest/.npmignore b/models/guest/.npmignore new file mode 100644 index 0000000000..e3ec093c38 --- /dev/null +++ b/models/guest/.npmignore @@ -0,0 +1,4 @@ +* +!/lib/** +!CHANGELOG.md +/lib/**/__tests__/ diff --git a/models/guest/config/rig.json b/models/guest/config/rig.json new file mode 100644 index 0000000000..2f6be36605 --- /dev/null +++ b/models/guest/config/rig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", + "rigPackageName": "@hcengineering/platform-rig", + "rigProfile": "model" +} diff --git a/models/guest/package.json b/models/guest/package.json new file mode 100644 index 0000000000..855fa12078 --- /dev/null +++ b/models/guest/package.json @@ -0,0 +1,42 @@ +{ + "name": "@hcengineering/model-guest", + "version": "0.6.0", + "main": "lib/index.js", + "author": "Anticrm Platform Contributors", + "svelte": "src/index.ts", + "types": "types/index.d.ts", + "template": "@hcengineering/model-package", + "license": "EPL-2.0", + "scripts": { + "build": "compile", + "build:watch": "compile", + "format": "format src", + "_phase:build": "compile transpile src", + "_phase:format": "format src", + "_phase:validate": "compile validate" + }, + "devDependencies": { + "@hcengineering/platform-rig": "^0.6.0", + "@typescript-eslint/eslint-plugin": "^6.11.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-n": "^15.4.0", + "eslint": "^8.54.0", + "@typescript-eslint/parser": "^6.11.0", + "eslint-config-standard-with-typescript": "^40.0.0", + "prettier": "^3.1.0", + "prettier-plugin-svelte": "^3.1.0", + "typescript": "^5.3.3" + }, + "dependencies": { + "@hcengineering/core": "^0.6.28", + "@hcengineering/model": "^0.6.7", + "@hcengineering/model-core": "^0.6.0", + "@hcengineering/model-view": "^0.6.0", + "@hcengineering/guest": "^0.6.0", + "@hcengineering/guest-resources": "^0.6.0", + "@hcengineering/platform": "^0.6.9", + "@hcengineering/ui": "^0.6.11", + "@hcengineering/view": "^0.6.9" + } +} diff --git a/models/guest/src/index.ts b/models/guest/src/index.ts new file mode 100644 index 0000000000..9a846cf2f6 --- /dev/null +++ b/models/guest/src/index.ts @@ -0,0 +1,35 @@ +import { AccountRole, type Doc, type Domain, type Ref } from '@hcengineering/core' +import { type PublicLink, type Restrictions, guestAccountEmail } from '@hcengineering/guest' +import { type Builder, Model } from '@hcengineering/model' +import core, { TDoc } from '@hcengineering/model-core' +import { type Location } from '@hcengineering/ui' +import guest from './plugin' + +const GUEST_DOMAIN = 'guest' as Domain + +@Model(guest.class.PublicLink, core.class.Doc, GUEST_DOMAIN) +export class TPublicLink extends TDoc implements PublicLink { + url!: string + location!: Location + restrictions!: Restrictions + revokable!: boolean + attachedTo!: Ref +} + +export function createModel (builder: Builder): void { + builder.createModel(TPublicLink) + + builder.createDoc( + core.class.Account, + core.space.Model, + { + email: guestAccountEmail, + role: AccountRole.Guest + }, + guest.account.Guest + ) +} + +export { guestId } from '@hcengineering/guest' +export * from './migration' +export * from './utils' diff --git a/models/guest/src/migration.ts b/models/guest/src/migration.ts new file mode 100644 index 0000000000..5acc4765e0 --- /dev/null +++ b/models/guest/src/migration.ts @@ -0,0 +1,97 @@ +import { + type Account, + AccountRole, + DOMAIN_TX, + type TxCreateDoc, + TxOperations, + type TxUpdateDoc +} from '@hcengineering/core' +import { guestId } from '@hcengineering/guest' +import { + type MigrateOperation, + type MigrationClient, + type MigrationUpgradeClient, + type ModelLogger, + tryMigrate +} from '@hcengineering/model' +import core from '@hcengineering/model-core' +import guest from './plugin' + +async function createSpace (tx: TxOperations): Promise { + const current = await tx.findOne(core.class.Space, { + _id: guest.space.Links + }) + if (current === undefined) { + await tx.createDoc( + core.class.Space, + core.space.Space, + { + name: 'Links', + description: 'Space for all guest links', + private: false, + archived: false, + members: [] + }, + guest.space.Links + ) + } +} + +async function createDefaults (client: MigrationUpgradeClient): Promise { + const txOp = new TxOperations(client, core.account.System) + await createSpace(txOp) +} + +export const guestOperation: MigrateOperation = { + async migrate (client: MigrationClient, logger: ModelLogger): Promise { + await tryMigrate(client, guestId, [ + { + state: 'migrateRoles', + func: async (client) => { + const stateMap = { + 0: AccountRole.User, + 1: AccountRole.Maintainer, + 2: AccountRole.Owner + } + const createTxes = await client.find>(DOMAIN_TX, { + _class: core.class.TxCreateDoc, + 'attributes.role': { $in: [0, 1, 2] } + }) + for (const tx of createTxes) { + await client.update( + DOMAIN_TX, + { + _id: tx._id + }, + { + $set: { + 'attributes.role': (stateMap as any)[tx.attributes.role] + } + } + ) + } + const updateTxes = await client.find>(DOMAIN_TX, { + _class: core.class.TxUpdateDoc, + 'operations.role': { $in: [0, 1, 2] } + }) + for (const tx of updateTxes) { + await client.update( + DOMAIN_TX, + { + _id: tx._id + }, + { + $set: { + 'operations.role': (stateMap as any)[(tx.operations as any).role] + } + } + ) + } + } + } + ]) + }, + async upgrade (client: MigrationUpgradeClient): Promise { + await createDefaults(client) + } +} diff --git a/models/guest/src/plugin.ts b/models/guest/src/plugin.ts new file mode 100644 index 0000000000..deff851c67 --- /dev/null +++ b/models/guest/src/plugin.ts @@ -0,0 +1,21 @@ +import { type Account, type Doc, type Ref } from '@hcengineering/core' +import { guestId } from '@hcengineering/guest' +import guest from '@hcengineering/guest-resources/src/plugin' +import { mergeIds } from '@hcengineering/platform' +import { type AnyComponent } from '@hcengineering/ui' +import { type Action, type ActionCategory } from '@hcengineering/view' + +export default mergeIds(guestId, guest, { + account: { + Guest: '' as Ref + }, + action: { + CreatePublicLink: '' as Ref> + }, + category: { + Guest: '' as Ref + }, + component: { + CreatePublicLink: '' as AnyComponent + } +}) diff --git a/models/guest/src/utils.ts b/models/guest/src/utils.ts new file mode 100644 index 0000000000..828f35bb5e --- /dev/null +++ b/models/guest/src/utils.ts @@ -0,0 +1,31 @@ +import { type Class, type Doc, type Ref } from '@hcengineering/core' +import { type Builder } from '@hcengineering/model' +import view, { createAction } from '@hcengineering/model-view' +import { type Action } from '@hcengineering/view' +import guest from './plugin' + +export function createPublicLinkAction (builder: Builder, _class: Ref>, _id: Ref>): void { + createAction( + builder, + { + action: view.actionImpl.ShowPopup, + actionProps: { + component: guest.component.CreatePublicLink, + element: 'top', + fillProps: { + _objects: 'value' + } + }, + label: guest.string.PublicLink, + icon: guest.icon.Link, + keyBinding: [], + input: 'any', + category: guest.category.Guest, + target: _class, + context: { + mode: ['context', 'browser'] + } + }, + _id + ) +} diff --git a/models/guest/tsconfig.json b/models/guest/tsconfig.json new file mode 100644 index 0000000000..cce8988c63 --- /dev/null +++ b/models/guest/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "./node_modules/@hcengineering/platform-rig/profiles/model/tsconfig.json", + + "compilerOptions": { + "rootDir": "./src", + "outDir": "./lib", + "tsBuildInfoFile": ".build/build.tsbuildinfo" + } +} \ No newline at end of file diff --git a/models/server-guest/.eslintrc.js b/models/server-guest/.eslintrc.js new file mode 100644 index 0000000000..c1cf82cba0 --- /dev/null +++ b/models/server-guest/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'], + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.json' + } +} diff --git a/models/server-guest/.npmignore b/models/server-guest/.npmignore new file mode 100644 index 0000000000..e3ec093c38 --- /dev/null +++ b/models/server-guest/.npmignore @@ -0,0 +1,4 @@ +* +!/lib/** +!CHANGELOG.md +/lib/**/__tests__/ diff --git a/models/server-guest/config/rig.json b/models/server-guest/config/rig.json new file mode 100644 index 0000000000..2f6be36605 --- /dev/null +++ b/models/server-guest/config/rig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", + "rigPackageName": "@hcengineering/platform-rig", + "rigProfile": "model" +} diff --git a/models/server-guest/package.json b/models/server-guest/package.json new file mode 100644 index 0000000000..929f6d33a9 --- /dev/null +++ b/models/server-guest/package.json @@ -0,0 +1,39 @@ +{ + "name": "@hcengineering/model-server-guest", + "version": "0.6.0", + "main": "lib/index.js", + "svelte": "src/index.ts", + "types": "types/index.d.ts", + "author": "Anticrm Platform Contributors", + "template": "@hcengineering/model-package", + "license": "EPL-2.0", + "scripts": { + "build": "compile", + "build:watch": "compile", + "format": "format src", + "_phase:build": "compile transpile src", + "_phase:format": "format src", + "_phase:validate": "compile validate" + }, + "devDependencies": { + "@hcengineering/platform-rig": "^0.6.0", + "@typescript-eslint/eslint-plugin": "^6.11.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-n": "^15.4.0", + "eslint": "^8.54.0", + "@typescript-eslint/parser": "^6.11.0", + "eslint-config-standard-with-typescript": "^40.0.0", + "prettier": "^3.1.0", + "prettier-plugin-svelte": "^3.1.0", + "typescript": "^5.3.3" + }, + "dependencies": { + "@hcengineering/core": "^0.6.28", + "@hcengineering/model": "^0.6.7", + "@hcengineering/platform": "^0.6.9", + "@hcengineering/guest": "^0.6.0", + "@hcengineering/server-guest": "^0.6.0", + "@hcengineering/server-core": "^0.6.1" + } +} diff --git a/models/server-guest/src/index.ts b/models/server-guest/src/index.ts new file mode 100644 index 0000000000..0cf3273f04 --- /dev/null +++ b/models/server-guest/src/index.ts @@ -0,0 +1,34 @@ +// +// Copyright © 2024 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { type Builder } from '@hcengineering/model' + +import core from '@hcengineering/core' +import guest from '@hcengineering/guest' +import serverCore from '@hcengineering/server-core' +import serverGuest from '@hcengineering/server-guest' + +export { serverGuestId } from '@hcengineering/server-guest' + +export function createModel (builder: Builder): void { + builder.createDoc(serverCore.class.Trigger, core.space.Model, { + trigger: serverGuest.trigger.OnPublicLinkCreate, + txMatch: { + _class: core.class.TxCreateDoc, + objectClass: guest.class.PublicLink, + 'attributes.url': '' + } + }) +} diff --git a/models/server-guest/tsconfig.json b/models/server-guest/tsconfig.json new file mode 100644 index 0000000000..cce8988c63 --- /dev/null +++ b/models/server-guest/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "./node_modules/@hcengineering/platform-rig/profiles/model/tsconfig.json", + + "compilerOptions": { + "rootDir": "./src", + "outDir": "./lib", + "tsBuildInfoFile": ".build/build.tsbuildinfo" + } +} \ No newline at end of file diff --git a/models/task/package.json b/models/task/package.json index 477523713f..bd7d865938 100644 --- a/models/task/package.json +++ b/models/task/package.json @@ -38,6 +38,7 @@ "@hcengineering/model-core": "^0.6.0", "@hcengineering/model-presentation": "^0.6.0", "@hcengineering/model-tags": "^0.6.0", + "@hcengineering/model-guest": "^0.6.0", "@hcengineering/model-view": "^0.6.0", "@hcengineering/model-workbench": "^0.6.1", "@hcengineering/platform": "^0.6.9", diff --git a/models/task/src/index.ts b/models/task/src/index.ts index 12b89a4551..add47db5b5 100644 --- a/models/task/src/index.ts +++ b/models/task/src/index.ts @@ -83,6 +83,7 @@ import { import type { AnyComponent } from '@hcengineering/ui' import { PaletteColorIndexes } from '@hcengineering/ui/src/colors' import { type ViewAction } from '@hcengineering/view' +import { createPublicLinkAction } from '@hcengineering/model-guest' import task from './plugin' @@ -557,6 +558,8 @@ export function createModel (builder: Builder): void { }, task.ids.ManageProjects ) + + createPublicLinkAction(builder, task.class.Task, task.action.PublicLink) } /** diff --git a/models/task/src/plugin.ts b/models/task/src/plugin.ts index be6a9c0cc5..82e240d8f3 100644 --- a/models/task/src/plugin.ts +++ b/models/task/src/plugin.ts @@ -15,7 +15,7 @@ // import {} from '@hcengineering/notification' -import type { Ref, Space } from '@hcengineering/core' +import type { Doc, Ref, Space } from '@hcengineering/core' import { mergeIds, type IntlString } from '@hcengineering/platform' import { type TagCategory } from '@hcengineering/tags' import { taskId } from '@hcengineering/task' @@ -28,7 +28,8 @@ export default mergeIds(taskId, task, { EditStatuses: '' as Ref, ArchiveSpace: '' as Ref, UnarchiveSpace: '' as Ref, - ArchiveState: '' as Ref + ArchiveState: '' as Ref, + PublicLink: '' as Ref> }, actionImpl: { EditStatuses: '' as ViewAction, diff --git a/models/tracker/src/types.ts b/models/tracker/src/types.ts index 8c5b0d8104..4cc030b65b 100644 --- a/models/tracker/src/types.ts +++ b/models/tracker/src/types.ts @@ -233,7 +233,6 @@ export class TIssue extends TTask implements Issue { estimation!: number @Prop(TypeReportedTime(), tracker.string.ReportedTime) - @ReadOnly() reportedTime!: number @Prop(TypeRemainingTime(), tracker.string.RemainingTime) diff --git a/packages/core/src/__tests__/memdb.test.ts b/packages/core/src/__tests__/memdb.test.ts index dcb73fa91d..0913724475 100644 --- a/packages/core/src/__tests__/memdb.test.ts +++ b/packages/core/src/__tests__/memdb.test.ts @@ -13,7 +13,7 @@ // limitations under the License. // -import { Client } from '..' +import { AccountRole, Client } from '..' import type { Class, Doc, Obj, Ref } from '../classes' import core from '../component' import { Hierarchy } from '../hierarchy' @@ -250,7 +250,7 @@ describe('memdb', () => { }) const account = await model.createDoc(core.class.Account, core.space.Model, { email: 'email', - role: 0 + role: AccountRole.User }) await model.updateDoc(core.class.Space, core.space.Model, space, { $push: { members: account } }) const txSpace = await model.findAll(core.class.Space, { _id: space }) diff --git a/packages/core/src/classes.ts b/packages/core/src/classes.ts index e86bfcb11c..5bdb434b66 100644 --- a/packages/core/src/classes.ts +++ b/packages/core/src/classes.ts @@ -366,9 +366,20 @@ export interface Account extends Doc { * @public */ export enum AccountRole { - User, - Maintainer, - Owner + Guest = 'GUEST', + User = 'USER', + Maintainer = 'MAINTAINER', + Owner = 'OWNER' +} + +/** + * @public + */ +export const roleOrder: Record = { + [AccountRole.Guest]: 1, + [AccountRole.User]: 2, + [AccountRole.Maintainer]: 3, + [AccountRole.Owner]: 4 } /** diff --git a/packages/presentation/img/chen.png b/packages/presentation/img/chen.png deleted file mode 100755 index 9f9d1107916b4ecfc042213ce50838a6a670a09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34129 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

^!!m`71+Dd|+rbt>uU0qoG#PlJ1%* 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 diff --git a/packages/presentation/src/components/AttributeEditor.svelte b/packages/presentation/src/components/AttributeEditor.svelte index 28f024f6f9..56ce7b4805 100644 --- a/packages/presentation/src/components/AttributeEditor.svelte +++ b/packages/presentation/src/components/AttributeEditor.svelte @@ -48,8 +48,10 @@ } } + $: isReadonly = (attribute.readonly ?? false) || !editable + function onChange (value: any): void { - if (!editable) return + if (isReadonly) return const doc = object as Doc void updateAttribute(client, doc, _class, { key: attributeKey, attr: attribute }, value) } @@ -64,6 +66,9 @@ label={attribute?.label} placeholder={attribute?.label} type={attribute?.type} + readonly={isReadonly} + editable={!isReadonly} + disabled={isReadonly} {maxWidth} {attributeKey} value={getAttribute(client, object, { key: attributeKey, attr: attribute })} diff --git a/packages/presentation/src/components/DraggableList.svelte b/packages/presentation/src/components/DraggableList.svelte index 41985d1036..b59d69a193 100644 --- a/packages/presentation/src/components/DraggableList.svelte +++ b/packages/presentation/src/components/DraggableList.svelte @@ -98,7 +98,7 @@ class:is-dragged-over-down={draggingIndex !== null && index > draggingIndex && index === hoveringIndex} class:drag-over-highlight={index === dragOverIndex} draggable={editable} - on:contextmenu|preventDefault={(ev) => checkIsNotDraft(object) && showContextMenu?.(ev, object)} + on:contextmenu={(ev) => checkIsNotDraft(object) && showContextMenu?.(ev, object)} on:dragstart={(ev) => { handleDragStart(ev, index) }} diff --git a/packages/presentation/src/components/NavLink.svelte b/packages/presentation/src/components/NavLink.svelte index 5ff20655ba..3e0b407caa 100644 --- a/packages/presentation/src/components/NavLink.svelte +++ b/packages/presentation/src/components/NavLink.svelte @@ -59,6 +59,7 @@ 3 $: narrowModel = trimmed ? [models[0], models[models.length - 1]] : models @@ -51,7 +52,7 @@ {:else} {@const { title, href, onClick } = model} - +

{title}
{/if} diff --git a/packages/query/src/__tests__/minmodel.ts b/packages/query/src/__tests__/minmodel.ts index 7bea8a83d7..8e7322b60e 100644 --- a/packages/query/src/__tests__/minmodel.ts +++ b/packages/query/src/__tests__/minmodel.ts @@ -14,7 +14,7 @@ // import type { Account, Arr, Class, Data, Doc, Domain, Mixin, Obj, Ref, TxCreateDoc, TxCUD } from '@hcengineering/core' -import core, { AttachedDoc, ClassifierKind, DOMAIN_MODEL, DOMAIN_TX, TxFactory } from '@hcengineering/core' +import core, { AccountRole, AttachedDoc, ClassifierKind, DOMAIN_MODEL, DOMAIN_TX, TxFactory } from '@hcengineering/core' import type { IntlString, Plugin } from '@hcengineering/platform' import { plugin } from '@hcengineering/platform' @@ -194,8 +194,8 @@ export function genMinModel (): TxCUD[] { const u1 = 'User1' as Ref const u2 = 'User2' as Ref txes.push( - createDoc(core.class.Account, { email: 'user1@site.com', role: 0 }, u1), - createDoc(core.class.Account, { email: 'user2@site.com', role: 0 }, u2), + createDoc(core.class.Account, { email: 'user1@site.com', role: AccountRole.User }, u1), + createDoc(core.class.Account, { email: 'user2@site.com', role: AccountRole.User }, u2), createDoc(core.class.Space, { name: 'Sp1', description: '', diff --git a/packages/query/src/__tests__/query.test.ts b/packages/query/src/__tests__/query.test.ts index 365649b87a..7d6bf134c3 100644 --- a/packages/query/src/__tests__/query.test.ts +++ b/packages/query/src/__tests__/query.test.ts @@ -14,6 +14,7 @@ // import core, { + AccountRole, createClient, Doc, generateId, @@ -105,7 +106,7 @@ describe('query', () => { await factory.createDoc(core.class.Account, core.space.Model, { email: 'user1@site.com', - role: 0 + role: AccountRole.User }) await factory.createDoc(core.class.Space, core.space.Model, { private: true, diff --git a/packages/text-editor/src/components/CollaborativeAttributeBox.svelte b/packages/text-editor/src/components/CollaborativeAttributeBox.svelte index 12ecf68e7a..e35204da61 100644 --- a/packages/text-editor/src/components/CollaborativeAttributeBox.svelte +++ b/packages/text-editor/src/components/CollaborativeAttributeBox.svelte @@ -27,7 +27,7 @@ export let object: Doc export let key: KeyedAttribute - + export let readonly = false export let textNodeActions: TextNodeAction[] = [] export let refActions: RefAction[] = [] @@ -118,6 +118,7 @@ {attachFile} {placeholder} {boundary} + {readonly} field={key.key} on:focus on:blur diff --git a/packages/ui/img/chen.png b/packages/ui/img/chen.png deleted file mode 100755 index 9f9d1107916b4ecfc042213ce50838a6a670a09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34129 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

^!!m`71+Dd|+rbt>uU0qoG#PlJ1%* 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 diff --git a/packages/ui/img/elon.png b/packages/ui/img/elon.png deleted file mode 100755 index 7bf7c0983e4da238768eff1a1cbd5ff6401405e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39256 zcmV)4K+3;~P)005u}1^@s6i_d2*00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP%|2gNr zDo7v+f*_RxKE7M`-Fv40JA3%{#mZ=n)L3sI6SxWNFg-9(1pktCCm zOD5A^UshLE7Phyyq*kfO&eoP}?`%tFcUP)ex>2iCH^xRsHhM{KV|{&fW4FEY{K!ai zakM$Qc>Rf67XS6X`*&yL|J?G;$zRfqV2edgCWGFcRTtk;sbqJGqziGDi6jGwlD_P2 zY)I1W$e`1~dwq#rBGp<|+S@zQ?{#HtY)tmrJF>dEDtiFncymmqr>1dNQ<*z3Cxf&v zoz9+gd)UVS`>Zx3&0^^d24~jSHy2xDQx9KRyK;Jde*Vnq)2BD&FX8r=27m-yBT7D$ zWZ9jAOg@OW7HUyN(q2z$&PheO0NXaewI%f^mi6Uj*;-$bjDLru8y_9TS27tL9g|kG zA?@8ANs>hBjhbw%tx2U?1x6#;+S2`WDHZm$x0L$dW zxa>hHZf$MI%*?cGKvK5bdonsUD_5>8t4eOP8u(0CKY#rVC&Wcgo_+EOsZ}HV`zGlE zyjPZ2Wpis&qDoD={T_Z&*=cvA)@aJ)^vvl4hYvpxyT<8%{X4(?L#wub=l}>w2g#Ow zBukTfAlMf8p2G_V)MdEZB(u*|0SE`x7(>M_J%3JCFDy!<5=o<3myykX$II7rc6ai$TQmfUZ)oKEmiL9-!3REama$lB~mSu8sQnsL?BS^Nb?QPk?_qe~; z-S#@UeCZ-2Xj8%1he{rSRP8{ObN{t^T{?R`SOJk#YIUgr>}%Lhg8ht7%`Vnktq1BO zqaXkD{r~-<{19zF6ab`ptw+f{Y34o{Np>=qaj@qIKK!4gcrW5_NW2Q(iU5FJsKpKd zw7q&+lD&?!0D>eX3LqPw7}I_A`(5ckN*+CO z1g2jqPd@Ra96P=syE|=_YA?KSUYd=TRH4Qz^@{9u_vGzwe;Xv`E&vSa8$(7%B0D=f zl0iK0Y`5jek)yJS?{9Z|vH=jcCZ^=*i4)Qoo05K1J)LIRr+(+-|KNW4A=rMP0r)eJ zb}6KtbJ@LVnoR~t=K!{t>K4F>AwdYh9#)qy1jNMc?aIo97i9VTc{m#x02!%cK>*Nk zn1EWX)L<3Df!JJMlR9j;(Pj&ubE;kmp4r(Mwey;dI>6dd3AP6{3}{38MNrLi(x|uO zo8R~*&Y_|zI;!D3lAhfD#@i)@qtk=BAD@^|HO$vB06#G~0WW)1#>XaM7jDWfRQ>4m z6dahUR9d4_ADe(goRfYQExJnmbehH=`&S=7wJ1NJ+YclFfBN22u;ULrw=rN`d}vbVV=OXr@G2Bc0EAKZh)>B3gqghMbGq_VfyhL_rf z4K@MbRip`ERq*Wu(x?sz)(23y|0u?LkfJx;bfY>QTL4iVw%gL>Wq@j2s&O6CF;Uh0 z{Njs{oSE!&ws~T5?AS3masBnGdb^OGd$2j9IEK1~Y6dV5&K`j637d0#T-x|s87MRdQU?gtWxKTrT9@F1h^gMD?9|Mu8ZHJd`(QI{DY zokW>^z+vHmHEBg%*}8mQHda=|VUai2j5?vTf%KGmtqBR%QQBmD9L~n%xa@AiOU2@k zx1d6yD#u1!20-kbHe#0&YmXy1T@Yx%0yiuKsN~JCv>l$3eeuHYNbD*9YhzH50t<0VvzsyK?Zryh^TZ*mxBjrwgYe zf<4&7_YNICEDk%RBs_HFu$+DNoQwmot1HXu*mOH>0KEYxrm6O03W-Vy--ER8rZ@pO zDx*^~GI{WjG@+UkoJWQmC0TTTnxsDvKzvODkj_OjlKb%T-i(W0+Optah?j&g;4)f& znK>VTsMLVU2sYR5#;UBI{gzaFd+jEeZh}Lc1I4p0qmaO~Ya94p74%RQUh)9% zY+!$Jb42Ej9+Ua&7NmyPJpho;rYe9ay1&*>KX(6X7>KdFMz^2)e|_wis}=WY+~<>2 zRh2l-rCtm$rb80Y)GS|<{s5Z-av7Q_g}Ur*$@;}bNq0A-3F%a=H54RQKm>2V!Fc}J zXJK!(r4HA)4i9D&l4jx10sXn{rt9VCfoYkYMucN>Om0{>CNonLkdQT1$4z*~GjJMa z0m>8CT_+=;aB8G-sxh3Frm1a6&`EsPdGDJyd;s9kH0Xi?(rbZ4s{rh)-~}rHKCe}Q zhe!*h?Z(;$9GV7z-cz;R#`h+sCgt+dWp%U=^V9E)z+;c$`0$COn$Obo&NPlcbo;yR z-hA{+556Y3#Mhhz{JFpV_wR(7{S6rQCxfb`Gr=3mo6XJNTzy?g!AxyHbvm%vF&v3% zvMW2w=K;P=0Fs_=Th=xaI$K*;hox1oNe4FANWBVY1He0WM2OKJO)V2QRs8l_P z9Gnlm!S+Wnrdd?dFv3w8wBd9-FI9xsMk^I(Uv#RLLwG|nFk{Q8* z9)_g5{`gUug4C(Q!yOx`s~23Wffz>gf;0=yA%+U1#EJp50cH#ss&+DMRuJ}!$zJd7*MgJseYXLB z{%`;NUv`z~Utw_<%!Z4+E$2+)sTwf{#6_l3f&`2`7`zJ%#{n;)E;lbYs!V{GmpYs*`piNiUjLRE0M+J{ z$*2i(O+#{9&UvaM&ViQsg~+9& z2dNUy1S@~wa8#4NY+Sx5=bm~(+VCXjVb3Xep~Co@DwQF%CV$#9Xm1)rvVZV zi`Sx;i3Q|O3=omNW<-V5O$Fbh3MSYHNIDNn$A|$#!O8DHS`(Np0Im)I(z9m#cytuN z1X%bzX3!)!*9N2>H}$YV&(!emS{=?y%_J_LKa$xD4-!NKVnz@#e3wP`zR{kt%UCtO z&uks|*)l#oBMCK!_*0DRTAZhhaGtp5(Fbn-k@ro$<;Q>YD`!rh?#TCH`@R71o?rd7 zg?>N&W88}mg;=dC{b(@F+b=;X#*t+cXtX0TFjB2JE(m@at@BX92WO{L`pqHQLC>@r8|6~-KLi=xQb|>Timt%3CCIVnD&2BZfJ@DP z$C18Q0kBow;mghgtpZgVb06w~<2C+9iAZTTH#aMXKtfN$lOFUKeVK$LZs-F*iB8H$ zPsPzk~;$x8P*<9l~W zR{NPZz3;C)aOU)%zUn!NuQ~vK{#XCrN!)`6aR(N{d(P7a{D~r4%#ctJ)Uj8>;#b&9 zKl}>@cGbZt=o z+Ke-gLqbkMbyuqdZ5`@&pnp#gv7uUZN_=PDUM3&d${Gznb)RIuV%JHX49ma>5`~4aUhy&5hNVQ=B?$+G6_}Jgr_@-1!NSY z1%S;UHcJ4GK*dhMA>m>ZoUIycv09{jU4v2<$5i#|oaYri;T?&pR&_j7GTR?1(KN*? zfJ8$ju?MANjMm6;wI5BD>w`nEkSD~kYE`3DMn`Cyg8G4E9;0)F^RKA$)z3c{S0a5) zFcDJRy)~lepr5g8CzxXV4t@41RXc+0>MjMQu=fBl!PYkR^s%PqT;{!N{Dgc+kNufk+fvh%@ ztd6Kh&;V+8LdvGfC-&4!X2>!1AXin3{nD0f;z67`Z~&h3H~?sx!?`%Ww?P6H)Rqrv zM$rfEc<=k=;m`et&&sQ?y($3wh5zE$@54Z2aJDnCrHk$BeYj|Lo)=&P?K?)Oe9T4H&AOZ1P&k6S_#r_yUAtf_^ z>^iAJ(rRFm=jUQm<=!bV%(^o8yt*{&?htkhgRF#nPYe4l1q8zIipI6DUwXq{BSJsrmsA4}e(^IN$ z8#PLvflNZZsk4Ero`fAZN;M3rsQxWOWw`ltDyV9y?$m)Hu}u$L)4H6ef8GE%1c{96Qat-N$oq<|OGqC|!B(&Uwue z2hniy&3C_F9{TLR|DJ;IdkVmh{N4Zhlem&!B9m{FUQn<8NpofdTfUxG1OCVRdHKKX zZxwx#xo|ZsRLdoD>D)8I(ER146>xpK2xo0T`gJr)Fb2DbYFb%r^@^#85&#b|T!66& zbv({QQvzB{<#Rz|^=!>^CC`?rIS`0%F=+zuMU|>aWb%X{kq46HCIx>dT3SmV$E~IiYCQt(&3(AE zd&5)aB3FobZ`^0zpf_ol+0&WX?^q3bQw!>B_$QaA94n}xx)AkPz4W47xo}?A*0*GD zw*$JRqlp5ekZ`o6=<#N0UlR^^%jukq0+8-Wi~x936C(;d+Jm$B`v?}Z zMu24DpteB#C)Jvxnk6MeH4D#LsA>T^f{z@V!+RM4sC;8ZLw0KGsT1P-LRyMg2;o^= z)~<_5w8m#zc+uYwwe1Pk&sCgq+m`p*{{3abn+(!lJFH*$FDd5@44?E-zS<-P;xY) zpn~l)Sq?DI`8l(fV$Zjk#EiWv@U{uRsIge5yk6SdL--_>D=(gt&h`!#Ez;7-y`61H zKJZ~lN1crU?I!$YiqsU;F4L(P9%Gg>LvuB#(paUKsOn`jLG3#xse15nQ7Hijs%{BF z`-}pwQqx2L=e=KjKw@)XGVj#z+Cw;vHlNyvnUtav;sIwWIvJQvXm5K$8eke|4RfTW zqWx}P!*P_*aa_|_ao;CB^m=VgqMe?dm6`b?GBJBluOm|%G0GqAD2hGjS^!bJofro# zAYtLMlXn1wXI^0tM)C@7zxc8L_Ls54Q_;{x79!s+az7U(g# zXrK30onCnH1=-%*0>Dy*=oVg20$lWV=MT)Os^(`&>K;6Z#Q-r&&}ouEEw)OvO6+Z* zNF^A7Mw`w6Sku3$TB8uA6suTTbmoot%!MEOobzfhN$oucHOaKBDne|=5mq$|#yCTK zC$dnYcpFnACqD7P_A45Rsp0{u(})F#m}uLq$B0{lzXWwN)~sma?Bw`}MsAuoUJd$| z9`P<7&e)eFkYF#b4exXsB(G$-D%N`*+ruA-c9q*MJN41O_lb|lE4aO40KDhae|;xH zL?5TBD1)mE#B!XshJiHQj<9w*h(f?ApwAJZfOmu9&XAfe2-ZMAMcjO9|I5kQoFvCqXP5NIp1 z9yl|-t*=w1Rzy?12-+yB=F*c3r=ha|QmQ%b+nXejkD$brir-&hf~hI!)wavbd+sp% zhWU}u0>tA8fH*$Nq=ymB`kBMEj>F6_pCysCE6aMHQuV∓883JDr+BFoZQJ)z-oA8$0d5k+ak_V zE_HWN*@!o9unXI63?VFL3bRm$YKykk9MlePD#>U@6KIgL_^7Vw?6KDQQt~yLKIZCe z9!j3bXI-Zur9E7O_X;(kBpc`hK>N+?x$u*z+RXFt^t!6v9*pf)=hr2+wqCk~`(-3{ ztl+Kqga~hu7&65`p8C(5)9lonA7L91*tO&}naM-d--UD11EI|dyJ~EXUct8(QK+Ff zyff`nz6Ze>R864{qWgV-a6w*y?YjmbPGmB6%?AOR1vS>A*n3*B+Cl+Lh1wl?`!3U2OHr${R-NXeg*cc+zDiWf^XCnX&*pr^u^G9+yc7ENmkGN8wq6Nilp{9 zfZd0SS}+H}>?c0yw2@5R_-KGHA}Xr@OR@44jIX4LyjQ4%i)O)?{YPRorG15kuK`$_ zmoCV7qasU77iDF8OU5R^c{L+VS7%aZmG%_Vr|{(|@L>m`n#c{Z`#}RgOf1mUem$5O z{TBCiy5Lb`zXBq0o!J289@NMUrN#v+}SRn2;#gxlWS#FIZQhv(;2LbMT< z(?pb%Md5oINjM0Hg!Q{j8jU?=!cD_rQB?BEi-#hZ390AbGz(f20%8MMYJkcmh*;Z? zd>>Iky`&y6iQ0>)elAE&eduC42mU?L4C{e@kKS?@>eIq@{`i!lOoFYNr)^m-nR>>2 z0LI3_eNMEbIl>ZxR1;u(;6_Q?RA8GHDQ@nX0L&#}xbLpu3v(OZnS%nm_1?er>%Voc zd>7ky48VI%{pJF0+No<_#IVZE1KyF#Q?3g2>ht~L;sSM1$~TBM8XXtBPpP)NbV=qA zW+TXWbLZy{NPE|sL`IMtDX16zX1ddX1G8G(-C`y(qzt`YN|caL8mm*0Y93wR*IQVO z)KsoGm#eDG^MxTfb|_{o)(#}rsytJ%3=iu5m{98%G;F4_t$x`+n&?Ajl+8f$EO2L0 zi^O+%aNbD>>1zq29{?IoF=+XOpIxw!=T@T9SB>nv#00h1EBuSzqAB2)2Pg5 zl(hstDpb|0}I-{JNh1F%|69>mE^mVv}A+m}~m5}}YN#owKjNobWcIT+(Shb=fY zKBEmRL=UusrPXh*t;6W9gJd3&)hkzE8{*^e_>LT$krPMf<+fXHkmJXWAgJH4Y-4(+ zo@l0{ka)sZ_mB6<32H8&v+h+YdBgw_q7XF~e`MwGHX)wXvUp=1MZfiw~_5L(Gx% z;2nxe$<_9@xMDq>6z@kR%@CwMPGGWLcfT*+;r1N?@c;S$`KPR2TL>po4yoZ3QExI0?S-R<?3HEEyY~t?wkN^JvaHo8mTjksQJi+l`aO1MkqXUF)q`0?_;t5@8{4-f0e|V&{=0i{umv|{ z%eaz(ehtG`TrSbds=54cKFhIqFIcnMjjzgy+9+hg*tQLagEFVXJ}i(J?VTMN1Hn8A zPOw#vHRXy~(5yD&P3|+hSoyg`(~*KY)lQ{Qbp-Rk*Y*Y?yawCS`SdJTwa{6lHY5R9 z(TE3slw@|1uf4GNsd~Dq!V(1+)9OixN3lhF5>H@Tsib#EQty0t=}F>P+Xeeh42dVc zQ_nprNK-Q>29SDne+@m>6oYDM1AyD@wo1?SjdlEO59g9-XRpjBUg*7dg)hIt@^Ah6Kl`@4;+G9TRlP2{Ps%4574^GCSk1OvB6=Gmr(nG3E(0`9;Q(Y6 zrBM<-;WF@Sf5rH?$b#dV7K(jtZtmh9*KvcX*RbDCqUrVHqZMgZQxMHglS}*b1qPOA z%9t=gnSy6y;${FMy+@uoBPwjCCRvo*X^I|zID<$XFvpI)_@bI-!8k}G;pZbJDzN&j z;xm4Nhi@T6!SOPd29RsiW8*wxUT3BiYiy}R2gBhWu)}JK5F)?B{?u#@M-zg;(uajK zjZbzp)6?i1CC+(Be2*Rd+xY3>JhnQB1@{t_)~hR5WCw(FmL*b-&j)iv?LGfr6hd$Q zb*_F(_F(z5f#bD(#`oQO>XR>-?~qySJ+c%F z(v1L$C{+~;npkRBka~jONkw1BP(^j#7@(?&h2GiRfO>VZ-9S)?JZ5}PY<`U7_ zQO+;Uxjw41em_+^YtU!tjLDp$63qcjmeIn(BdSxL9do5wpKB74Ie(fKrkoulm`klF zi4v8O3*m!O^+c_y2heY`Qig4PBX-0rA>GgriYYZ#U9z0t0^>r&5D} zBG{<12bpE5&;+KjinxX-9S` z5q!nl7#x_Lon0*gVkO!hBnOW<4Vvf3b;s2ysnjx!KxE3<4YcJxr6xhdh33o=OL#xv>fG%}RtPU_h!yeEL|H4cX-3CwRfSnrT+pf@NpqrEn5h4BD~v zb5QW2|h$~22R(ucjI!Ac=dEqL+{RFJsoz6_^aQf4v)TBCvR zom#Bd1@NA{_rLk=lOO-vzj#`{8vx=uPw7cUfuPKM@?_wDvLW%Cf3M^L51qKk5GY;f zdXSnVQEwNvT|#>>>B;KuG#lpZ_a)0UokPAX7s>;X9TG~%pd zO?k^(-XhmQDsrZXMj~)8D1EF?wK+=mv{|!sya@I5nnnl|mt5&F-pckfx61 z#hP%zMwY?*?fK^D&eKME4}G;BYlN92*v9p=SctyKM(e31&9aRgohtm-XM}{s^dZVr zl4^mg)pdzP%3SS`p%(bdu+IK-u}@{oQUfG8&@6Ve1y9SLv;Da#`ILUx*(dcJyw}7N zjr~)ZgJ|D>x#3zWM#}AslD8Zrp-L)vkri(~(L;;@z)7g(qp+_Q0J?=nMaJPB#~Fy$ z?k)gvNy{xqLAzAI`5ikntKCc|T2*aC#16x_C(ePXnLcsxn2CSdiBASTi4v z(|#{czaqXmoZ?4qktw)J7-uUYDJUU^)dGFUyS|1798r4G3M`OW@N(w zVVafFF13meBl%31$W#PlrF?d4P(`Y0#nP^LlbOIeJ3X!M4PawZimt()dgkmoIlFjH zy4yXS3CB}kUtX2Zx6vX6xo} zfQV=F^3lmjIBPS~FWG-N2^|D>2)B7V)wEoew?odC%xC?CwGQ@TPHsz9R`GwX6nsel z-V5nBaPpB5&y^AobEiTrZQ}xYqe2Q&&ggp(@XH}v+EjLU`uz1$Q!uR^8mt2qIbiuA zIIRxsystd+Rf+GsRVtH*v9DC-C+kw#+minFwp0%uQlhr0Y3U6_C9q#jr;k0}S(j^) zMfoxo@o1I@LRGZgd~~IT@6P~ywADr@XP~A)ZH!H+O?B7Ws$4w(qCEQOBXWN61zEv4 zQ62X1a4cV1k}as>-I+agayV8RI0k25j`SE- zSft?slFwM6_STj>_Sm=NiN_w2zw(}U%8$P1UFxkKoI5DzF0E@;b1&VJ!v_y*#aoE6 za?xwGsyZBPs3S@vrr`5QX5>Rl03b2xgi!TPPE2d!C+ELK%(<(x-q*OY>A7jxhof?0 z;V9JpsyzSPIeGetCv?sTFK2suLsnLnWrp?@TZO;|tE&gzGgZWzWS^v}_FYubJVndw zf!)^MH9LY{ScFsxofUe!>}5!zIc4Gk32A74lFeFOr_Mv9aq${}rtWN?vhpLhW-jMT%&Pu6PvPgI}kvg|nBm z0inBp0}C)2JftAK@@Pgd3NkzSaN_1r80g}V2_r>%w}+rluL@~a_C1$zS`ft{=oMD8 zA*Pw_tjncK=jFL`&&$C>^RjT$&2sU|ioCeAEQbyqhUy#0!jS`V4EA3Qz}39JILf=~ zbC`@~ji?y15SaEFq8a@{ zt+^m5I{2X~Wyr5yuX;PP?u(gXpQ4p&&K@Noxy#gN%=B17%67YZJ+UqaJ)eNu*AmN) z?}W;lj)dN?H|!JGfjf}C8ynl&cDO@AU24*SbnOl@ec0AvzizcVDtYJT;9QN2%G`0- zf8%rB0T~8ga5BxIipA~A#SD-t{|>|HM!I*6GhYa8(n`Yf8ZX zk#!=!cC6l@h6^^+urnMnSlhHJ8(cca1cfz$tFjdy3mX=u)!p~Y3-gxM`NU= zl91(!y}sq?(HUt~TN-{_y0jwS{N}e*vTSpJVHZCfv4v}7Qs+&u?r>)Z~h4$CJ&m=DB zJkU(x=++K1p|w=NA#An@kG`wU4jX9dc!$Jj8Li8}=Q>cYy(BX8r_#{6-$4@E@b+Y4 zd;;e(3WA|7HKNKpW~H=j`&*ds7{YPpI5@r0PKF(jkPV`nK4nopu`+ao(tT7+!V<(hjCPR1 z@7bwIIdJ>yWp8&?j$VJWeD!Nzm2=NMr^fx!BZuY6jOgqQOGR%e zr$$N0IuR|MBxhx2tClK0^YmHy+E>otZ?M}MBT}25g=(IVKmGiJkRZGASKjwN`Rwn0 zT5h}kxEwt=B`pxqk3Mup4$sYL9qts)uMZn-1##BNsd1U?&B!=x$(U-K**f@-4+-r} za*uQpxZpcGZH>Ncg81HHSA0mct?gY|L5zEs-LB}hXXFX{FfGQdmB_@XG+6D&m@+g4 zqd9HFz^O49;7G}#!X#mXu4HRhK|2X^g|X{sWJ0Q=;1HZeMuI(OwH|>QD;x{c9+o%} zi0J%v=&T?m2c{(P>~p~@%}TtX`{2t0;Jv^3$pzPQCv&fNUxiwbfFbe`l&U>R&In28 zjaOIn_R9sho>Odq_4cLK^YiIUm8VzBmfqsj*aV2w19Brs;McwWX1RP}QNH!aH|5av zH!H7JVS}O?q8N}&BjmU6J=%qJE#j_fG(#JLLuG0t1Fv^>cXS5uHk=rq>!HJkphCxF z6Xw_ZKKRq}92|=;KlYSlAh^Hw=o6Cc!Wqh{@F3@9^~I+lIVgS#Jjw*ifG2JtbqV0D0jgS z?+*MuVV6{T=2O;|mqTz4LjBKAj;LzyX0awj&>6`p7LKb!)wcUxrFU2x%!jcJi9S6s zBNaSgbY?QIy&@@Wz5v2FD#`%tGbJH%m2G&nEm*v7S?9Su>79{Z{mtK9_=kV%XBYom z0J>guuZujrk`(|91w6qqiCp1sbG}6=7mWQ$Tc$*?_`*em_7A~uH4Ct>2QmQD8DS1z z3>Taswp!Q8ES`RrVE*Vk-XeeYzkdaM+=|Wo#b;+gFECP)gboAPFSB3h)zJ~D;l_s! zr8N5a8HVb3vpLZ+hJ=`!fDL)WEz+DGQ}KAq4JTv`Qi)}c3G6)1_x)>k|EN6tr9YEL zzKI9mz#-WNh&P&BG7Bf=z@bA*L}$LcRTX9dotcWm?_R7?imlyk+1T8X zuJEyYWS=u~H2_6En3IxGN%EDd#3VlzJ5-j7Y7b5+i#<=flxspV$!!mtf)wRLRrD#0 ztZ--qo}1fFG^4j3XPO_kySXNtAc&_9UngVmTG{C|(<-&9+I}?5TfR1UpuP0^*3Sh1 zA8C#22vl(cRc}2=hoz-;+1>8S7$nyir0MvvdHJh%zgzz3^yjef6LQmu1^J1S?@YF9E3af&nL*a;s}i$9D56Tp2)vYkCnXxfw)UbqBj>P1;! zU)Qos&IUe+So7@6EL7~Ij$K#=zsRYWn_vKTci;$-@`2Q9Z*Pi&gxkbJXmV2LjW^vQlQXcFGb^Wz6<`)!36lr{=!!Kel4(OiM>N#b z$R`Pl37sH}6hEeJ^Vd!dBF}xg=p%nF0KwPXiLWh~eNfJ5iEIb?(_sy-wd1Bgkt9op zm8TqNnDC8nd;`4jONc*1-L-er18&hf#(wI~`uc$cQW|97 z00brm;JqtLtMbH?Pa~?bqrX8*~!RVIGqBg-e&TXlnom=FoN5$<&eK(!sT} z?zjSGA@dD4JwhZ4He4LCuruFNS~R3s7KT=AZ=P-BX_>r4KnkWr1y+dpZGhv`uPi2YR+n zi)-rD(GIIf0 z`|%LyrHk_TQ%~qnndt*_y3eTz&?fL)54(f#z8i3O4#@M6x~$k+THBT_I3D`2I!=Ml z^m^k;PwxY-m6MwIkX67%&Kx-^DJZ6ani`R&=367Af_+PK=fmX;Mj)#5a)Mloxm^00 z81ghriP}-=nS=yY=c6bt58*+|o|IB#WEg<1^1(23&35LcUhMPHd{iU#UQjSX)l-hW zyDm`)WG(*Oum2;E` z0O-yRqy~9INTkpbgl922GG_H1)z~^vQ97r_^qbjW(Hp)$4)xcm?jTMJ51POOr7~Wt zn=jOfTCW?xgjd$E?1`4HSFs}a6rG5Pt?dl@8Rx~ash04 z7EJ)3*h!1`oYaU-bl-fc$0(t&5G*F@_S>pb$G~rGJ^Q?Nv6^Vs^!v;J)?Rr~w{_T# zmV06j&x%fZS zEhCnhMkbkW&mm$JahleYSX&Le=DFT{;|);N<8srDH_IbX$LB$M-~P6D$RGaMgYq!` z{r0!ML!SQDV{+oiyb|lv;2Y^=O~A$+85>Fs3G#|x&nK;22BrVu} z2d-Pd?-}U?hrwB7sxX6we-}A{X)ZjjRb+Nm99f2?qCI?u@{0Bb@_s|k0n5o#pZw(H zsgHhiV+erppmJx(Y*7ABicHwl+kM^uFe&GP3bqRi2bWX|(3aiyNF<2j!oUrHr1#84 zG$YX1%4kd3{KsIjF#q%d0X9VAh*VJhe7x8u;fh=ZZBHQZQDmK~iXw zt0kjJtO=qOI512ONS#S^>-WrLl2lquU&jAxRO3xr2ptRK;YPP14K*PEi@goUfDXwB zOaV=+XEqFLcR9n24^lGl1>}7>G=D(e`ldVKfj8yf{n4Mujjz95{_nr|emQvJM)~sN z&&uePP5Jy+AJTNPODm7d>u)+CQ;2VmHm`t2nN&w@hshKKUu4%p4bV&X)Yj$wxU_Uh zBQ|WLx$wH%K|nXP0TLY#oo1_z;;)Wm><3gCaQgweACMwtVA?yhuZP2Q_POw0uQT!? z{JMV#fH=7i6}H-N>^C%YD8y}+OSrQ5&BHgIZpqzsmw7du6$uKNmwx{9%vKJsDUCRJ zlAd5~ZpIpKJEvJJL#nRNx6P*A-IBNb$UEf=r~g!o%9qwRbx=){ zlaH`u%=^o2T>{rH)e^O2Y<3ncm!rjbByJ#l}6FVa`IKx_ZXCpTv>~wA7J#d7K>#f|*k;N%v8z zk*8$pHg7Hq$SYB%Dp#X9%;eTkaELz(LT7!s39;-sm5|JI*^}k-i}G_n_1EOe`4?ra zxvdY-4L7`7a|vf=X5cwLrQ;>Iv!jQP!s&=L(!%U!j%e5gU&%SbO0nSD4o=R=%=8?t zlhV&9D(#T!tU;!DjT6Fg0ZjXU!nWTQ+`nDD59^7ON6I`d>@yxqS;nZyy*U6+{l@Q4 zcB0;$dHS`Jp(scBq=tCFEGsf$v+SyqFCEqYPV)#!aM^7paKW_ee`>2GAa1vy>fi`a z3PB>ZAaNL`Gf-8%O6{usH`cJ;eoTAs_ykl<{D`c!Ef1!9N$4WaJu9mXy&J!+5)^4eZHG;1KQ8RCny zo$wMuc{A{C8?v@^UOxC^@73YeBXFKN0O(WCoRx8aY#dT@ePvUdEHPV#?RR-4bT*g> z!RsJVy$PO?lAcMm<`g#Uq2(I!!SnQr75+zht&&_DeC3FTTpM>+X}z*-SjIznx>Nuq z{JtfH%daBy&Px`uaGl>L zoq$L?TA5AD8(5d+y`FsjYhRbYig<6|b%gmLjGMCiJ5#tg=_uXY(*W3U8}1w%}s&_+Uhtn+VFPKo0PE`tir*t=GK{ zXUs>B+3Sf|7gzE1&OQ;rYp=`)5rPPivg(z>bPCIv1Jp?#Ei*^K-UvnR`@QUtA3zfh zx9}w1{fc5`I)wsA(7_??lV^N^Gu6?b>WiR?=<)~ zH1oB=P7UuRGI8Ba^7ViFSuDc3yyeaBkQ2AvE<0D2Ws}LMpf5PAW*2I$%FGbZA)JCf z;BXoyBBUhaK(+KU4T;6R;EAfR2f*|>BMz!MC25!0cmwOum08;lNEL1TLl2lq{BT5) z_MY$U(o+zqBqeZtT?l1uK9N$>(yJh=`x=jB2Un_WO07M_qY2!Z$#ET|O%AHzEQChN zW^Hv%RyMZe;^k%OBib?zFPOHV!-LevcXgI$WTm22j`6~=*ehphVoY|{ugK$1JSR84 z>0L6rFbVsWS&DSR5`T|F8{&}BqGbWgX|kgR=p=pY1)B3%B0scZ(wArp_#==2zXi=ELoM?tM&Ub4Y@#U>m{B0NJ$C|X^j7))?K7Ra&%uJ2p z{J=v3#0T+SO&zO&o*x+lj(Vlnb#ZA4M77nt&|I;IlkahzKlFc&O}7txu4IB~#``sj z)63?Q?ZeoOaLoNZ!PU`>6o6&};tR*id|uGk;oreK3QxmT;B))L_P)P65y`IY-IPLi zQLgNHA+*DoUeu^f$Q$1DX1Vg>lAOPIL247zO8Q!ZA5rfx+3P9z7#&e(pkfV#LdPgd zSRF>_0mp;~VMQ8?ifFvE7j$A>4%j|^a2}^Q)VHjdEZukBlCK7 z9|(iZt{^HUqJ+FcwJn|ad_gb7q9|{LH{?;9HoYSUAfEg?GbxIa%eA0oQCfaIbb>hm zOP6>>2n#sjs1&u-#cn7Xw}$`)qC{LGY$!;aj+gTpanajl_i#wJ8lt!a7YnWtp~AphV8 zep1T{LcOlIkjd`K?wAC6L~=W?EFFui7!?wceK)t`_?NU4YW2Yf?PhirHl)BszUJnL zR8IX5zkg@XhmgcCMBt0|17~QbrPoF0Dwo>`!J+XEZjqW*+Eq^NL{TBYQz=3^RgRl7 z0L~t)O9vOcGqCfk5Oj$RA!Hk}(3enW{IYn5YKY8^~trjkKb z(wX2)%gE@6Y!5`Uz^efF z9+O*PrZf;Gy6*ZLEu~9oG7E=go&zB)%lVDykDQ+kH-lP$e2d&2(t8L}gWw_uY* z;e;geDqk-kW>P8M8>PeH+vIvKOUY_ZOw#dFao*OKzpX&0nm3$`Kp@l3imlC-b#>6r zq&*4UTD7R%IZxBLz($&lrz5{uNw=r%JW`*GLCS{LUh(5jZGIeVQub!{{ib&yoz?)1 z4$gfSl5-n2;TUXNde~~-@HlL(rV_WW@o8Qs^90#ejt|N#q~;_v0DH(JP|uA)L+U;9 zicU%TagfeWKK7`d_w4);sWe;quxf%zX4yzK1;7@W*A>U*P@6}FTw7}u5w8Hs$P17H zoaN0%m1UZg5u&w28ZZDmt1MJ97cWGSms!r-fHF`DLa_v*tT;grqkyO4eOIta&b#^U z8g_5aJE^pE9$&VggMrg5-W?eK6LlN9oP-YZzOguG{#K%4PLeiPyT7L;j#QugYy*EI zpU9A2#k8_YAGPbeB-U~P33V-2&ymM60fa6j(k>*R_M@rUR3`pS$!P))4h&J4lNiV%Yw`BXQ%`x|U`20!ou-;;eXsLFZ$cWrE7l?N3s4p)ezEg4QroyBY?Kj+ zirmgXGF#8W0v}rQ6PMcdNns0yR4qd(0f_(0LZwp{(&)Wk;I}lF&ZhUv;|B6AE1otb znzc7b_*3Q=z6eHcTdBNJ)Pr$XrDG!&pHDIW)C0Q>n0i!?6f?Ar*KY$0e%Uafwd8X+sv`OD-6 z$$vF@^dYwI@dK4ov@9z533xF930RrnKg(Q=+iwd*#Z!=jXZRDjL7UeIQ)PrFFDi@X z;WV%E11Q01agvXdV*frjfgpbMdU@>pIZ1cd;qgK3>}_h_6RNX@8omjnk2Pu}FtkGf z7Om?K1>s>Kc>BJYxONU8;f~i8jh4i+vb-jj;E}V#)&wFJ ztWcvw>ceYi87OHK9&crBO_tZ!G;3!Jp77-Kq^ey_rge3He9J7N#LIfdF*fi}?SWcJ zwSE}%O}ndo3z;UyrbBxGXQerzYWmq{&my|Aqb-Zy^{#izD4dnHmq^Y<*WmSv6uR6? z%*sw>Q5$0a4hvJL=*ShMaxmKh7%eoJ6~a`mVRselzEA=AFd4i=DFb2uNjoWQwQCrw z;$3?4g09Y%3HHM9_wv&z_81N!S?*2uxVRHD%6V0{S7rOfvygyJydFY{sVHS)4s544((?n2vQF9Ajey*a< zg0oq31B-|dMpWJ851DkpD!*M8w0G$I>>+wmk*A+NtH~7!?B#d9_ihcfRpWTbY%1UP zVLmo1tzWU0t_0dZ#as=j@^|dFs(p0?gBo|<irZSi+ zMLLE&A*C4Uk8qnU?i*<)Nf8v!JRM?$=^(LgREZC>F~}czGPR3n%F6lkkTg{}ckTsw z^4tZ4*!uDZpZUBTJu)wc=BA|8*plY%m=3aj#x5-Ye7cp z)qKhkuaOzk%=#hFd%aziF03C;Anmr`L2t1K&H9#X?!X3w8ef4E)Qear+>#g1Uy$Y1 zbvbzSsJ!)UZ2%Y2XVd<9^_iRVoTy$TBzR;lNi${-6a{IFcCVveDQOty3i5i?tMr{jwcQ3= z+@=*HiYtDs0;}gJX?^5^9yBvp*jb-KadK)}F7y$OgFSic>u-~+H7<`l_JnM#Ez5(a zKQDK``z~2oxhxS>ZFOWqE-bGgmb(tmJAn$_lP$z|>DAUX9W2sh(l|EWGWOlOOiE|! zq_Q}Pb;aA;yLb&SvVa}Za2sm6ftWA*RiAnIQB9txkB-Yv{f(cME{o84Pcokm>1W~% zrA);>LKKDW1?g2F6fYFY4{E*-FCUF#jE7WlXc=r&P3&_3(-QCsVG{re6DpbvDfIr> z<@1oTeYbxrm-U5%6t4TQ$6UDKWn!{;s{CAXk9zM(nJCrzUxw6c1Qet~l{_Cl&p2o= zO>G7oR2rXN^?*fel&RQ4*cjGGlSixS+4hwD9${o83dQus!_iZw6s2QEgIcK(oYtXZ z#}S9E%F@cJro7+vqwkWl&z+M$`44|0k3aH=Jo(gF+1}X(u3@t_$K=Up7UkI&F3F+E zQO$DEjzX+Uu2=n72tN-l+&UJU6LjDjS;k4Px4mZ_?{}z%Y0u(BSZu@y$oWgKL7|!> zT=&8aH%rtSl|BKO2A~wc7|MKB0pXoN6(-qLrjZ1#kPS<~U=~FobH<4WY8d`#7ZXK= z2@q`g%$s?^KD2d@7ApDlAStWD!T?nf>xRW|cpdvGkHuXS31b_I6PG*_c39mOfG?W< z`zK6KAy|UW&)QAcQWR2QL&p(t>QB8ACTzwk<&ru;iBJ`j6*L#GKd{A4O#-rtj%{;E z%Ep>@1rX5I%B<<8wH;xdg{h%DqQNH>4$kDE>!dYzP#a`YjofhE0oi=h>t*foC9Qhv zlI*Q!^1^e^$oVU4+F5^QW=v}0>^e5`)&BPCgShsklmJP3ZRwA`bCPu{q~!& zZ|)ib$4jxydKL~lmcxQ8^66o==H?&S!&TbS`+on+2N;!b>5f;g8%u`e%7eAcy^6bZBZVx>b8t;gsqz#UZa45Zte-f)|2 ztZvG`{ewS}JzT?fXH_n3wDFmi9Gsn%iO~re&|{}c_Z54ZwUhbdr#6C%6>aQx%7&Ay zM`mgk)AYCf+>bp-PxjHO)kd_L`qITEoMTOHzvE7M>s{}ZHf=qsz$7W%ck4f0HlGv} zrRuhF39f>|`3`Z})wX*0e(cQIOwwXtx3L|f8m{=>uqrQrTnHm3$>q6(QQ?;69;ov* z4dpF(xgtS=@r8fxQqT2xUeFfSq-<0O*PNWJc-khBG*=t+N-MtjSwdKjQiBmN_WOf0 zs7$~K0SK9kSLaNRzDW{hFlW&~Z9o=$GbBbS$f`E2qu1Klszw7ewSLf5LYEPeB(WL2 z8WLoeDREv+iRR+jFzQ5kJT}W^^1}Gsyr$W|@eMD?0P35a52C>pt=F9fPZ#fP%hY&F zZn))o8HG0tJAgMy^Br}p!@#m>lrn1fWM>;71kJJq2WNS^EgPKurumWPjP-F$Qb4Su zK5*R$x%;pGjPw!zbq)~|h8rWv%^(FxEK+VHWPuQyfo$s0d?dh8~?Eoj`blD2}SLda_cl}&E?VQVUl_Nr!11oA~%H6$^zS!UghRP z6c};w)QBj^G&@C#zQPu&$-ix?P#ZDAcW@Q$GOtkv8skly7Rk&P=D)GzGLYaLdcy*p ziuX8mkfN)2kKUpj1QhKTMl)!CWzIM{^&Y+SZZ|W@1u) z{O*&I0&ovK^oTssdl<HAvYSHnx(4jWx{Oau%g)9nX=2~+`^le_qc`0oJE>^*1{PGYyF#GK zTnUVscQB*qrCLIoWOP1-Enf>S?F_WuCikEV>nTAUdw;+s-mELzo@NA^1MBY}-?EJ8 zs6-&U;tOTfyk8WTM^Z)Nu6aprzeM%Gj(s~eEB_SF&0YQ7a4cU&qfZs{{hExi;zm`# z{gGB7jX~!jBsF9%_EbX=KBCkz)uY6VepbOon}*R5iWoKt=a3g?ouOhs5QYm^Wu=_h z9JdN2Xr29Lc+Ua$R--9X*IzG5O|<@_#tiM9j#j-*O^nKcgVV}k(gdI<&h7~`D|l^m zh#28uMcWpfn2n7M?G3|TGHvjE-Ha(|5kQ#8*hn46YRL;1FUlS7c(=Uy-S3i4BpN|s zgZE75ikLeC-fH+;>O+2cGx{8Sp?$~j0tN7?nh&0`-*2@4vu?P7QQ7HX z=j%m$WFgAi=O+FnuMSx6PuUuBIQE}ikcwsSxgyjj*?y^-JGq|B?BF;P7C-ZEh=c#{j%mtF9blyKB@D zj0cs%e26%J})TwdE}t1u6d%ANsKLc^#bA znQAh$u>vlY{W+XvFqUbRV6&^&8Wrmh0ApY*oH6GmR7mN%3Iq9aX2ZXoHG@x6*++!S zMx_i2lZ2I=MD}>dC1W{LI*9e5Aosp4B%Fp55AVg14Ot1|IPn)0o-|j!qF}5>R$$Hq zP|7Dt6K0yQPYP4=o%I~ksxa0`5crJ6HYzoLJtp_WY16HTV-1KfR9@>*_GwB4O!bU;(42`H~_wG#(v#RCDrMDo_+3ldH4I@FJlMiWJe4< zI+Z=OeP)$-XpO=eiUetA?+1ZU{A4+2XTU6lW?dmb?C)lD1uig-BnP?;-;S;saS32e zgKZrFfLOW>RWn(U`{$gL2gZm?0Q-!fJ0@;A-R7xhA?qtWPRO?o&q4{?qp;c7c5zrSdT$C$_To9~> zphC4}LNinKTE};}8`@};io5}IO4w)c(2>Ik!OhA>dq?X$sFDZjwb-oV=4ca?$quAz zVkH8cfZo|t&%CaKrFXR#4S#P@?ZW2UXyZZXrP}+s@6(XDUrNrkjdeM8^UZSIO}9Yb z;@bPHyVE0Uy4k>&`xfiC-xeFTzlt>qIe^0;ye8ms@VcTVytM8b`pctXPKL1}xwE1Y z)DeK0JRd$>oJ{z4@jkc64I7wYw@%7L_3*_hUlgQU4knMQVCa^Hn*?LIkcbvyv-vJO zw@4Q)nW*bA)Tpl*XU8xaB_H=i$HeKJIH+O7krj}!=-)M|73akicDBlW_St9U1%R;G z90kyJlt$TNgAWY6o$*p(ZF7wBZ$+@LxwOc9GwzdLc z$tV*|BkNN`E-&J6nqFTQh|`-odtCr;$45N6vH{v%N&$M9X&oV&Jtrq)*KHemzC8!lu-hXz6toPbE%-Aa&HQ3+@+Tt;lCOL{A| z1XOeP%~ek|tu!k28@9M{=-ZWfDe3aR2YaFL;PmD&IuX?+Llj{3#jeb^AtiQUZ?rPm zL1dzizcKrn=h)OfF`~JD{n+{e`T94{Xu?1rC%e7#oVH1; zbFOcesi#YIOuI(gqV0AxazQYUz&4yed|0lmY(cBWvdeJ_tYwD%cj(9=nVp~0kQtky zv(k-oig^jNU8^`ps^9i*TQ1=N*lZ7EZL2M-;9S;r2Kre#OH8Jv`N^&jH{EuJ-1e5Y z%k*`})h?{~j$T@T&Su&HP4kEX{X!P!lqkqy;<&h=R0L)?trE|U0OUZdx&fx zXeV=12V{DB243fcN+{0o*j!(ivrj!OPd@R4Joo&IQonKq0D=<%`;q-)80s4b2p4WT zF1OwOI-MV)gJ%H59i4!ls29$ph+X`9o8z|NoNPkUu5805Ol^i-qY-OrR}T@F#>AA| z_NKSX?9m0;%lsT)zfOZ(O-9D4Ia{+#Yk~D{8(^~FdX-c$$6>g*^qw=RksDO$K8b1e ze3q6g<~$CvkQtxmEJ&0CDl6^75{0?pfm!5)z(to8!DW*^ML!SYb)p<}VH*my`I86> z%^Rl|AKM7fY#_Oq-*1C(t5j?@s~s;bJuzmFTI2Ib$6p;>I4(WdKP!l_{hAfxkHBz$m;;wpLqX|=>WsU7haTaKJpMeeo z#jA+8(s8_P7|CM%zMuYR15eX0?dRmm0IOW1xTM&bwQo~^dPgFN(Qk#1W)o(Px;ppt6EY6z(!if|kTrgodCZSe+HhbDRVRtz#Fq(b z9~idlMVPF`hT=@O@^!*Imo6k=dvlAr8(d>kwE(}*Fd3UaQY~_vmkz}tNG8YS?QeUF zHl92Nb-Zx+I`DvpHLAkV3)@h$m#(b9n}v4^JMYrc6-YK4h|O%5<<(WZzsElJvH^f@ z!Um*nZh7vzK&CuIBK9y>4%+ z;D|!25z~y;alw{W>&bnLHOvrkQAvvCofM+tz2dBXJ$}#6-P5UM?pMQCVqd1HK!~F} zKp#RW;)c_E!o{ll9TgW-{)~dpiIlzKkUeeRcSD{QpWu+jV*u9{I~Lc3biMA_5qa#P zZ;FHTXgEeGBF%zPUJt-y<8URFX_x6tUYor}0BZP+Z9f{;Pf!6i=o_f857v*Y!`s|| z?6LDc;>SCz2i|RK>~?K+MXT6ob8W7#Y45@YMYG!{Xe0`ctEeMBDYU9i`PzN2{vp?6#};i>*_hBlDEwpax&xS41ZVrK^_J$7Qz8FL)a$_ zxHu{SuTZ`FYe;fO#{atz!S=@}e8&&D2^W>$kgOD6_Kmg8B=IL)$+XJOX#x)x2L$Xc z0{%;IM&c&xX4$N}DiblAQ>NMxfkot+mQU(~E!%hu*oJ%CyH@MroO-Eg#`+QdM4E~< ziumnJI;%+syNGTuKKsJzlI*P;n3<43RZL!Q;m9%VbkGJMceXd+kwdzH5Z{989E0<6 z0%pQgdkfUjHYlAv@Q24_a$-z2Aw^Hza08+q+p-5q$EF~2(^ER?p@U1_C1;2*!F9LX zEH%cF^?7Et^T6a%79QZT{a)D32EO66xk3dG8EB<&S|-DsV6jF;08C$<;!sjE@yv^CihlRoDsr3wksswRlXlAmLXj;dv^ILp1`P{KN-Bcl&` zL=G=>-s#c$4^Fb&R_V!Rl~pX@AmFMC8YSkRnc4NJ& zxriyKp54Cna%L8DM{UtPaEBsCj!w#vLx**Q){F3-+5NOx1F62X1P5qW0a!)!gUuva z2GAy1Jvk%CZ@y78eIo5wqgC7wD0ob_?(oc0=m1Q5dDVd!4n>v z1Ofhn4l88R!_?%YnkqdV(bW@{7#}$RK5_1lE}n#fA1C5UEJ0Zy49D=ZA-l_N?|v1! zKan7)&LBjx5=Azw^$Inc4r@bkCF;wBSL!>GY1a$M0}-cl0OG+v9Y@0jMd2iM1buGs zs&DH*Q#x=IN!g|_b?junAzb`+r3*1Jnfce2h^mM*qBXL{nGVvyL9&n_e)3yq$OO6rw&Y;9 z?|T|sO$pQX^+90CC)4-=jBx;YZkk2tYg&h~2M|V(ij2YTY;MacR5a-mdaRrQJdWee z&&|l;gEKM-5RQ(-a$s&!#+uf6Xl!goUbwgl+Yg~QEndg5X!pT}+-3h67NSd2?s)y% z0pe*qFtH|Fkkn88f)@f}*fc5}j&kiqxbIoXdmgs?l*@?9X?SI|JseXm=Z9vVHw?6l z^TI3S4RGd5Fu#m47k!`xgV90){t6tCfAYZR7xB4;!lQ|X((8*8E!!K#lT*AdK(-%f z#ZQsq6Gh>)f|U?}9@=LZlg|hQM{+&;*rW2_|C4_rx88KZ1`Yyfq%+vO@x;2t(<@z!)GJ^p?BcBP~Qg`ral=ea4aV>A7WRAOsAG zq~a(CLs5n1h8&XNgpq4?LMU(9Rj;qoVp4?h_V3#SPFmKGXTo=jK{eve6yS++k0wpa zE_MN~kY84i*2CZ&az=)1zx@WXk12+Wb9S4R_T$O>LDO^^?*He%El)r3I83JdD+{S{*B6#Y$S^56xyv0Z5Nm zLrk1U!WO&iFGvXrkZ)>~!~ougKAs$@YJ%wwJZ1K583WBS0ZGUNR?ae6-PzJ=IZjBr zu(YZK^!QjqI{ic=vTcBH7t(L$@KHJW;~xO$S=YNor$qB6mBXwINwYw^3mvw z_kKTr8(!~Ex5}YbqHKo2S4h~PYO{R)v+V1SSoX9{I>U^3;3@z@;e5K{s-H}C@Ji7o zAw)K`eMRgu9frV_?X&H!m9kZ&TKUT!x&huWu&8gz^O7tSCq?pw)1Q?uJoq3aSy$!` z&4FO<=ol?F?`AS7&yVVj?J^WBkT~p>+{2+Q}Sq;5kgpDXO9wYQ`F@mW5~ zSTKKf+g({jcy9^7y9`^B$*CipbqwJ5Q)}R}0Z%+0nUtUTg#q=kApTzLk~d7t^qJzgz5aS3fmB%T? z5k`PM{nQikub_HU)_&ldQ-~DoAX>pOseR6c>%;qGOAV$u;ruQwZ>r?p(^AI)yx69u z#_y5EX2L?XttE^NNWu|m*tzq32Lt5<_ds6L-Q);Z%I1!CDrHZ;zSeN?eoP>SOplHr zWnmGeYdsyv?iQ=y#+8>mdh941k|~YpE`y9FDc%7W$m+AnsTp|hO|5iGajcE49f?8l zy#N35lXCqnH%Z@xIVPfnx1J(ZuJ65Li(6!^7ogg&J_{|hzql-Xw@jau*J~JD#`_h= zDcBJsz|HebOQo8_$G6YMapm+c{`ik9UIjq=O7>YBrx^`NtWZg1(l9PPMYiJr%8&|F zHi-8-A7xct+=Rk5w14}WUZ|TT1pEKz-}yb*V0$2PyITE4sn_kaH8sA@W{sSr*-f-@ z4_mGE5LKY6L;ON&%j<~6_T>O03oHZV5NuY`aZDENH8%Q51`06Rf6R*B++=t9X$|MG zr7lByz1Zq{Lpuu6JG{rEqvM*g-@&oB@ZHf7;|gc#0Z&aTEwch!ukYihya%)JkmJUf zCZ4jkcW0*!Nean;h|c`c!`jg`^|i^V?^Vb%T(P5JxbeV1#r zvec6yuCc7a%91e~`dr}*WhIY2U*iYL=eK`iIwW9rpLlT{*!Czk(l*V?(yUQ=V1hn3P&E07~X~#yADca z2{BqWL_c=)SPr;dL^Buyo5ttZ0=PM11G1S^Fo4ZR>C3KHoKju`%`?HV3XrfCIq9fM zA0$@PK0bLs)_2(msi#2hL4uA>Ov;msXXStVt>2W7-EgCfAogp4e#<;z#*!6{7fHcc zFo<;RLw=s*_tdm;k#T;tQ&~t)88UxFuJ)>3u4d(`FkImYm&0|1{a@IJah#nle|IRy z>W_Z+lZ$`tZ~i~-iL_x+ss1DKs=&#RB(v8g=_p0XX4yf>>4U%p{i zls8wG<$wK`za!uJ%Gaa@6;>rxg8!-@G;cY0NRl?YL?t@qsFrFwVy(O2`1*tuXY_3e zoIR-2zG_#US~N&4)txq(s%+Sl4AXJtI-KhZ4|#lYLQ}X{D?*8{8P16{`R=Q?YCU7v z|G5i3kUgMjYf@1(z%w!#f+Yg%cEIfIH9QC%0B&V{3lew)&P5Z);Q*UVJAH95_rmoH zYHDn6ZYrt$_8)n-g!x8JeAkBXpojN-M+d!g{{7fRzB8)xs@sajLPAJk!@H{lNLa_= zESu;m0aG|Q(U9~tK$lIgtIUJN|LA>h`#WXK?U#V`_&x=K_r9{X%6z>fDdL0WyuNFt z{e+7uijqQM^fhck+IyMgH?W3%Zz90|zy8kuEDwL<@Mu*oIw3uaeq`^|b5TTljw85>cU6+j|qT19jKgYa`k)spr!JNO%Gh1RqrK ziVW^?C`;WZMeQ6Bk<@iEL}3Wg8TfrKm8M#U$|aA{D1p-ZNB8R|6i*6 zcd}po4zHil9mTZL5Xr~|ie&rbR~d-ekU3NaQ#oOwOf*N)FzEJ2W28i6gHYo?#Wby1`Z%EYSoQ_o_yn&k+&)-Q%d zMk9TwP*{!g2UU_DJbXyiGCg8u(1=RTo`oJGOY`q=o(EJmdq(%VZ0pvstAQw71x3@v zQ*j<%`O5l^T;AN1`sj$PAnv=q)rS2iT7F3zaqiGT%@rh0VwP;;{QuzJ{2RIL^>@fk zZ@AscEqzJp{_Ukz>d>cN;$Cbg`G6W82;+XEys>P)c{nxn=&#AdZb#nDM;KS^WhjU z3?-XlVLrxx+3<(2_p}tVrzM%BZU$<0X41gEw15h?g_+bk{sE}$Xjf9}RKM}7g zAf1SiH z`{`D#98n8=c6YR!={OvcexJSl8rGgyQXLMHYIH(0pKufElC3m2)o2T9aupGbD~L?Y z&yCB`^#jW7&2lhwlIBBj*!xA*kWSn+GMf1*M?$BgYd?^fD{OZ`LRq^8^fjcFXuFN79-m;-p?@HcYZbQ9XvjFc+sUa3 zt@mXuFYQErZgPy_H<4|Coje{Nia}xz5TzJ<5w30RDh0H**_JD-o0{v_VOv9IegCNL z6HT{DeUl{bm}TO?Y^4Dg?Gw(UT&*gR*Pi@qP&F( zM&-{J6pWNUUw|lo*%QvGq8NFF-p~kYtzIB~%a3{vNrRHfG^@3|Q zm|E2}9S?enYTG;Qu*j}g9Gztn6ucnSWZ$A8bVzIgdondTs(t-9=tfIKHJ#mBkMR91 zW=g9Q(@>{nZ3B{P3*PDm)aTNM=I-%~I8kXDYI0O3AlWsLkk-N4K3|u$%c}t3wjZUi zuHzaa&F0~}ke*lnx~YQDCsCz*%Dy%X8+vct*n(8A8zCQg^5IA1AN|^|%YXV`{+DVC zrrtM>JVld(D=Q5CVM#ZLiCrLyeMV_|{`j%IQCQP|iK~ ztPW=$#gomV@7|zmPZTf2Szo}&54Yy7bIma zsc)71V9D8}oI$Bw#iOnJD`N`&VArj9-+if%QlPWk?J!L(rnRKAv%zP#gj8Yb{ zKm3hv$R~gMf0V!R3x89_CnnS}u?CUDMt>O~CIj~Qyk3fBo}%#(w5W@7xd18V#05bT zUH$!%30ByH=~Vy+gYq%?b^-X&pM2-y{eSZH(~vqRO+y&1;i)Gzh_xBEo;)vw*~6KR zMWr!a4S9Xcg2fFy|NIN`=p&EFH@^BcZ3xtZAx{sJiJRJ}(NXeM@+Od)G)j;&8bD4D zJ8M9F)*u$@Ez!*7217tRHtRe%HNEaMgSiv4c@SukHl&o)AxTDMb=LtTJ@tZl9XbwH ztWh_I$#Aq5uZNCAt2qMD#=gjjp0h1h57)NcYfHMZW7TxrPiA9Y?f!64EV-fE@2W$S z6=R}oA$_|IOTVB5BP<7A^`^eTxbvNGtf7*gCrpadfB1)T_VGvM$KL;bdF$KWCKK?| zwa*Qkx7X_GWU1Sw3B18^bVFJ=DmgJh;~G5{vn$~j4 zNE8l8bpJ2B=Z;1Bb^#~`x{pOJK4~(eY#T7I&ZLNjvm(13B|*Ixy0roW9NgApk31^p z;LUN$J@H_wth_k*?9SerQrp^u1Qnh0pW$BeIx@E}quE}kxqYR{Tz>H*m545?_yteZY`OH}dHG$~%fEB~ z{qp9!?vnTY*iUHJeg+F@itP0}8V9$|3E2<@<{tqms)_CYGEZjf=ga-PbCq0t-<7@> z+N^}k`5@T21q}&x{F2h|F9hI6fBbEyKY9A0)7aHXDGBV@14lcFI8yO3X{6s$^0jC2+>BQW+bUWA`HfAoKoWBfUF4Q^(%Yv4_jJBo*2C){7 z6Nqf-(a`Ssnb8!PH903i&&bF?i-n2;E(N)H75=sOZtVr1X~4`%pEc*h49i&Z@RKK$ zwb{B>@C~#}!&koeCHeYSzacl?bd&sFKloE}^DVc?C>$t#7zP8$LvZ07{Q8vvrN6x@ z&Btpwca<95Pp_C$Qh2{*l^imz@$&wU-uhMzY?;WOZO;X*QyY&SmI62P zJ!Y6L1)H(nYH1gG#*Ayh@n(ZY9l`3fy8ttgHEv3e)in&%N(q3^(@8{;?_Xlep?yol zJa8?xrl-j)8`_iH2WN~#_N=Fw72eZSPyjpY)goSUq*CHQTv=-H{ZtA*FJu7mW$b}h zG3lqXHmbO1HCxn>+QdOUxONo)xSnSpe@cGq+&`5Wczn0m?|6q?w{V@rtd;gs zI1M1oibLlTEt8Tx=Z1h99L^G4#ca)CZ?{ax**=sR_}E{BufGt0zj*iCPXG3weDgGJ z=}FoT1Wpg?^!(xr^3d16E*D;SQ8w3>@kH)f)ft_Q*qR#Y>|LE^8JmIa=^LHXAtt76 zP_yLK_IaObDLt{0<*L}Zx>6JM=9r8?4J%j2*egIua=1cQC9bNPu4iHfeL65nqozZm z+0NW+*Y|7oSj$mjY9&!ng?Sl?Z(dFtj_0EzwZeq=aGp_~R-1!QuOkV-w7j%&9AfmDLQ62A2OZ#*D^%YTpa}|@<+q$ zJN)l2lzuM@fcl}>eKZ~n&e8sO`pKu{smC6dD;F+lsuIE~XMn@+q-Q?F{Z1i^n+velsyo6=q1 z(z;>VL|jgSGtR8x5qFRw2CU6gvF}|0F|0kIMZM3&cXkr*1ULzNn%(#`pIu^IzY@s` z^;!aAlzNXq_*45Z~~LNf|0^V}00_ zAQoS=l}oOQwt#!`vB%`;C!UbG`9lEV&GM!2(GMzI#AdZr+9~xs?chSh(FHxY3{C{CQLll4`VOea!6s%IR z?Zi}^A6X}^WMk<}4Y5*10+08MsbwUM&noKODC%Mkg5y+P5o+?+#tnTo@ z4R=DwS7eBi+aGfC_v!wh`;pr|B`;%pSpekLi&|ff)4?y*qo_dxTyJJ%*&m$h9Sr5* zRhi8ap5RO+U*W4oKn&O_h?K?BqS!+S~wdSCdiZ-L7={9*Yx3DG`kZOY_bZ zg@h{^jUq)X-?(Ke8Z6 zBo6`UZE!{Ej*TYu6UKSN?3DF)k`D4gdZ|}^rlQ4H%1fTtmZlY1eBrztKfWN-<0Eop zeioFBA)y0R#tf6xH$Tz|nO>S?Ugg^`n#61z{~*zp&LbPb8HK5C<2blyXbe6#nw;x5X|25@J7cS1%iY z+?JOXzkJ}}4JUEH1wE*LI=v%qPe$h1ub_tfQ)I~qu{S$hu67k)n(FTt)!#JVPD>%m zl&q*?_EeN|q9unmC$he_CO4iqCJRRn$XL_H)VDirC7UBZUZIJFX8JuWL?1b!|njffBpLE@C3y4o`D$E%xUY z+6OBFApL&kU9bPBd>h-#aze^m=8|85yZ2DpP0dBI2VdmXt~q+kE^2-V(F@^m~y3F$17B*4G6gS6RGxN#6C2*UNZa)QOmCPeQd=v~z588q_{b48JIH;iITYJ`l|f<}EzwJi?v`(J`?e$?H%P&yxkD!?FHVN{ zJpK!UGTc17gF4BQ|Dbvp^et;f)1`7ov`FPr@MhMYE!;>2Bt1u}LK3k6?e1P%gZG;o zEArm=yi2A=TUyJ@WK>qQb=lz_ssXzgMCXnYBh@5@y3P>c{sumChi!5r&o>57(uU(0 zJ)OS}CWW^VL)tqtYAW8DU~IbHj5UJ=?wpPU@mx{;l|t~>;% zfWv6C{twhr0}@b8lM)FWsoJd$gHP3?$FH!~}vqhl5_R812Fr}$$(^Um8oE#Kz$Z3B?o z^3u7}2M^uwAza9O824%pf}KeSY=;{XD3x+!MVrIs?I@*aoHZqibh@6uSz*Fas^L2& zw^_RjAZ={#NMDmoyRvfSvfTZi_n0lj6fQocsbx-+cVwKDvw%5KlM;qJB#V;N_wy>4 zpN;)25uP${j1DA_%ZUteeiaJ9cTVsT+%#6!*&z{DEzb*$49?&*;*w5lm-*wxE2s=i6K`ubS4 zw{Sd;F=a+G6H%8DcV1gvm3RN>d-eMRCU;7rQivx-P_Z*&Q#o-S&>0d+s^;-09P@`0R5VH{W{Voe%uWPrWR!cmMVs z18`+&apM5IV%)tCg!f#jS4mj{re6Gqq|~7bFX!^vV+2~N_EwtDwACi%6>}&urYte3 zDdJcJ&e$DTwl!?N=PxeF<&`x#3HIM19M@~_DiBqQRcuN*RWi#Wd3^S9HdWnL&;)N* zJ>keZA?nG-`tN#dlQ#(_0-KUf!KXcC%wtyRhu;JqsTP7+$9NHt@Oa1O=H>HWdq~b- zUX>om@eGtpMl&4tXbapN6CZ+i8=?wvTu8&vhg*khXQdikuUZMjKwW7#FoZUPz3#$H z=IAi`*RN`Az5R zaLSZR@gaZAgke?piSti=`ILMY+jj*(ZinZOe>rpU2XL|T;Ub(j)Wx4~P^;oEE;ubB zvd>l&C13+pWB0wtEmM!u+l7n}sCsgih0A(h-uK0`PwR}{>y8~(N`-Y8+Ut*rq|BCP z!Y5m^r9JhC6Q4pAk|pd%a$3fwLy3aQ91N)5dR@C-u|orEQYhhgR?7QT$@hs8QetzKiX< z2H+A1YTAP^(C?x7lQ$mE@}NPfKDCg5+?0Euy&}sou9IJtHsz_r=S-J^h z(lvcxSQlV1-JDc{@dR=DY7FXKa$mX zPcB?Y zAUt{mHe%m0ok1UPmWakX*}SOTlilsMMh@8hie0E^bE%poflO6Psn@8f`ffBw6o`Q+ z4xeMlPk#tdI6LFhb24_|sGPgFF8|?+-;fuUHgp0~ni+Y|WLKUyB_F{^(2+t?>F1x% zGMy46lDOib4K`oc3Th?Z2bR+K1u4Adkd_-HWm?iSWq!9P$t_bu>D|vg@%bm^71&-8 z0CKysw757sfBbm>zDYesYnWf7)rG!UeDT0WB^4ayDmC0ID?v5XD9JB{BN$@bnu?Z{ zN-ZTDius1T%v>9(*KO%qW)kE;{*|*&eDT}n`(A2$#Q?|+B=woO`2~lIIT<9Gssj9` z*V)3iy;dtVjkPkMpG8%jGFim} z)3$pStp2fMM`eC?RtF4HYSk+?acIDXL2XX4OqHXn0dNzOlUjI0sW&=0>R;D2d0>QI zG;Kl7g9Bh0&uumu3d-^EaT%SOla2O3KK+@`$(J5}RywYwREyL3cQyx)6FCV!#-rK*8ukcI8xjP0h+O zKVQPSn5N#yc2Ve?7isOr`1pj5JEf{_B7KZ)rTK_R93I7*qDTgNz4AA zy@=3S8-Hh~)zK-uuYVg=Ftp&6@;B`?+GiS#h*AX~rPUaL+8UJ>fY%rsmrKj*^2eY5 zy8OG-Uy>JAcBSh^Bn8dl;<^Hlm3#brwcgZjsoaMaV@YNs##md7^T}Ic1a>4zht;tZ zl8n4&wNe?9TD+&$IKX!{i^_BU%3$&>_(InNCqrcsVJju0ee9{nK6^@D;q4U%Ah#=* z&z(L1dIl%0^h^|o4q8^$$WV^<=OZ8i9!|UDZ{32KQX*6JM_jJL6Q5a~_yTcVJPnpd znn|L;doeq{(}N0x6gmg`f%nc|(5p-~I>r_h0zBoQ2J|2S+1~s7@`Zl=dD~cvFe+ zn&vAK&|!EBO#_Y%BanE)aa5|Uc9N^&;>W0>0JZ?AP^caN7*uAElmUcA1A$WavLR1; z80`AKOF#C^;1mF`N zRf?%2yipB=uGqaw7a=k_gWs+B97T@8a*$Rl2pKU!slmnQ?Mkbf$-(KC{M8?Om&}8% zdHqc%v=!XM_?S-Hj64-%)oq#QF!7+Ul$1%WQ14gPx8#doJtL1k@hlvSRqb+>x=NmF z7`vL51w>lCN9U!XeG2KV*J~|HJ;S|dBci~f_bEtUi#TL?qCi@j%~3QV*AAl=HA<2^ zo~|J?K158o!1-2uJUK~|{C-w_K~?5s$CmG%< z_J%v(cM6w$pC%QMrT6JPX4XVQWHfIY7rqR_{6<9LYb(4;$($d@x}z$$QfsJP7wHhe zR2Ou&%b_oQ9cV++mo&+sw<9iTBTmcO<-Q!AosuI5=i~rDaO}t-IePT4OwUZK%}Emb z(xuDV=kMauWq|F9oWFQkp1*KK_6D3%&QMyc2?bV6B$j)Je>F7cucZz~FR^*cY+y+c za=+|LNUDdwC!x-@`ziAYoy+YoBb5s}D)U8Jl$zX{J_(oCTBc=!!(srlhsZ{gN#179 zXTBK-t|0*}dtE;9>=U26SH6ea_Z)!SZhpgiP61H&1>3It1WL&;4qJG#hbe^A^IS%@ zDm{>icC6yfVsZhqgafU^G$Ae!DI7MP+~IIRpL(R_k$9i+Ve)}&Xs&g!DGR&>-f(1H z^ck}2K+X3uwd2_M(n5lnPt!{BZV)V#j~Ug#gJ5C5x}FQqgHkKgudYLRFl?HED3a5mQ9FNI;M?O*^*>F$B@^_ep#PaeY2~}oNS@OQzOF( zz$Amiar%^ekGJoM4Y+?>z4H9&`9s(97M(Ts zUeEfqgyc(tKzT7p2YRbaH`iuL_zufCS)V)rnLP!vIMELKq8+%{GL19d_VD+1o1F$& zO$N_8WwgZ#my*oKX{$Aj+|VB79AG*ynjI1*SW3~xL{+I|xnwuH))t@iP#nnmlB1B{ z4-b&Il&Da4*oLwTa?P3L9&i>Uptzy1-TvcbIpHjDIKKDb&1|VBK7Zd}J00NQziy5lRXf*S`8IH4e>XZYWsa@mVhX3>TFhxF~rjg$O()u6<^7 z7ZDI<(=-8|fzAP}Y7|7&JB*dL)AR&qm1=s!;%X_up(Ya(Q!+L-p|!i>js9Rl=xKU8 zmy%c$Au6$NHlF4Y4Sj&vT3EeeyCET?IV*+RtSH~tiAd3VC;Wu_pk)o2WuP;|$VJ6H z%;ahShKJl4+5gdJ9{=3O4^Aa!YIanb zc!?O>fEqUV=F?p^$Vv5RCUo5fy>NjEN$vUUkHah%0+69NN-efkqix2qUQ~@~+P6g7 z%xZNx>Wi&JG$}Op4@7JaOQ@-3mT*n0%8LGatbySGMH1QKqdBQ>-;sG$J3cn5W`Ry< z^3=(G02f8y#rwJDu-L4G=Ad~ZD*jBh9aOe+;%&k--&f#U@vRM9(1*`{>-1@P6}ML% zfZT4q^W*}S^g-N+g`80!3oWIKad|qDIVjt?p-wM`;NeDq zCaIMns^{z}7b|}psAn3og=up}DoLz)5P_}93*IT9RORH85xo9#2N_e zJgL&tC{(vJy4!ngEm7nR4?R;zGOMHDEHKXkbxX}M@LCR|NetV+(G>)nhUR>FJdf8` z!=CldJ!`&+zmI`W)Yiix-W^%4UO`0}p-cd)W#L1Oab=%3>luU405a8XS}r$Jf@Itu z!pyQF2a_bYD|Iq0t8RS$6TNnH&)HWXvEVz|zAqB6yxsD~llKBf_u<}5h8U&h4aUX+ z=H76Y3`s!AXO={&Mnm>6zaIceAW+4q)Ix}a18C@ls8ouJK7th={|%-<;MKSh0!(Jm zWC;aZKPP}Gy?E>(Wk#DLLlK3FCznGFhuWt;2CGdyAq~e6z2Q}BixPgxtI-ga%R`i2 zvIl0M{IHcJVBXjh@AJV64;i;|vH|4v2KM{0vrl~fRkQc5wSC_K$c-x5rS3tzTnN%@ zh?^42%d>D?tik`#gwv)JSqG~$BrJFpLkFblK`4Htyv~5b{^!ewl|Wr7VXOF zqCmCyIH$LDavH{4*}Snm9adPxE%{waF>QvfyRfeLt|UF|?aW6zVA}y;oMaSI!fZ&k zw?Eavh^=EmX?#JR{^T>Mt+$^PsbjjID0r8?Gna9R>|@B^?2bV7ns})##ib1$r_A+* zEl;H?MM}!Rr439oB+H~obdcy(;rCwd_L>49H%h~_pFM~hxDZsb-slhw5IgBWW(UtN z=^5u0)Ms#La+T$&pTrmESf+_>CbcY)HUNcNnS%@JktoP~WFur4hwxw&I#@YpJ)uiv zIzOu*b46k)lVh#o&8g=dYIC{mkI4o#oZE0wiOLFWmcJL|JNdUjKzon*bQGn(^33C3 zIwP;4?KKC$u-$aq$$M}=?}G$cP#{S*v^eG5L3J*Ai67aTXjDP;y?&m+pwE7Z6b_Qn zQrMjzBUdM~woU%cR#v#l*Jo|!wc@Bm2TsbtW< zGYW)ji6aYkpSAZLNLD1cd5^Q)>?nABE?1L9R*2+wTgc8Xx4X!J9v4xA+>0y$B}s;> z0R#OKJ{uA&lmdc1$UMW?PkkzbFPD5yq@1}D%#X5U)Q8iT!iFRU9)pfiqfz@rza4-0 zxwD@?Ew9n-H7fzj+pV{rT#z_Dg_j=*_Lk8L)^w4QZ?Dt$Z7uAQ`r4(nm|@F^N$l-9 zo1$LCKTYyUsZ&5N#Qq9|U zAq|bvuS`M*k3Rs{2xaT$fPJ6F?fB@@;+GfYHNO2o05EI{Lu6tYcN`YnhEQ^5#Gm4cUabDlSRI zA~e_62ua8U3hD0wRAp~BL@UYwET`I&*p98U*l8z~kDYz;)s1F+H`@;s0K-NgB0PHv zUgk&i>DT6z*7(v!JNO=XKA%wY?@~XL&bd-FG?OsbF7+L+D%w>m@t$j%*WoHT?S>_z z<}+qlDc5c|lvuVS%V|zLfh4mKUGN}6j^9v>T;!Srb78k8A!>3ubM9lWb{OrI*nS`Z z7&eoL$*HJXc`pFC(A7wWZz2>|0_SDm@}mnP?+Fj7)-?3|OY=E+1YYR;#7*fMDZ*@J z-Z2MST7V^dPQP2K2n_GB$7&HKED}tM@f0q%=|VIk0NEdV18;mHszvuddFK1i=Y6N! z4>SPF+YPt<=smr?{zs~{%1QGMjmuMs=c9PR@kqUd(e!tfl6kl1JnpKC?6XSp8N8m# z3EpV#RQS;e;yXGxzmotqZkhm5wQOdR+DuM}eTXsi-ebZ8w=%C6KxopN5phU6aSsf3 z<^ILR)8A1)meu2m9T^=R$(NAAqB+DRA1A4K5cWa=|c0w_$~S(LGnen!16|Wv7gGF0MCa2hC4uU+^HEYAx!4gph+%I^@Kw1VDL*(X%@D!XPT8H zUT7AcW<_*`fYTv^S}xGYC9bOeI9p5x?g8xNOwx%z{llPMU(WWI27vpwg@u!oQjt3) zN>3urd

gK*ODBR_fXn$Z9dWu;MJBKj`eojY!3DNViGwh?B94CSglX zBGx)tG>j}r=0TP%rdIE}0f24*dW!(tChSc}x4~jub&JxkE&gQ%+qJg;1Lqv+Kj-vn QWdHyG07*qoM6N<$g6#*ebpQYW diff --git a/packages/ui/img/kathryn.png b/packages/ui/img/kathryn.png deleted file mode 100755 index dbc348a1c6c223b0791a644bfa7e7178281a802e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40495 zcmV)7K*zs{P)005u}1^@s6i_d2*00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP!z+NOphEk~%Q?9gvS#p`>m9@y6c}C=@JQH)~L9GQ~7gtR>s`|S}SD$#|=#T#B zk8a9;ymhxAe@AcEKmFr3ROh6#DnNX=OH_Nv|sOAO%^~ zjZBsc{Y#YPawSRcw=)_@)FW6Gg(Uq8em7sO^d9A1CaHRrM18)kz00z9a8(w|R_2SjJ+^Lcma(|m-x_{tREXN+jU)LxaQme; zz)ybq)7Pbz-%dfUYlyrK>j-KY^XZvPPVPym22^PH91iY07aN6p9=kvMr z%aZowMj{QooO(dq)bwbCFhKm&G)Wd}a7`Qa@vRj44~O zhnkP^_erfVH49l@oJm?uk+eyn$y-(R)VNmCtQs}Kl`v@HZ)yzF=~RZLhG4Zogk7~8 zSvI&w^ygGhsfO9W==62)8V!G^2CQE&+_`$n1wCg{FWZ+&5BXAGuix)WuUANK`-+C< zA)gDz-0uyfgn^co8nC{$z7I9zBYnOvsbPQa#+Sc%B)>$rUkU?MquXCJ@hLq~pHfeA zz0i|aRTT{YAv5a9Pa5iG=l9jP8a<)HlUu0wnQC4)o6TfUA=Cz$>iu>H8Y=bBEEY?d z>fc~k$n%CnWQWM;^h*r}#+G1^h`sclEkkYyksfoUKQ}clfGFql1^-s)o9gLn;rR=F zf4xCp1{#v9;kN!JN>AUr=-+W-V37DKQm`|X_;GKvP4k6+d*hFulV5_{FSG%ET)my1 z-ncBCg;b1oXnObx9pBEvHbZ9bc* zQ7+9xsR!(9wX4;w8dO8i21C=Tm|iQjW^k>B-<5k#gkrCX1#hU)$IR6W!WPe`b3U$8 z?^^^*0eb2Ux77#-TYLIkrKFN?kbXAeYH64|SfQh@feTBof}>D`8+r{r`;}kdeDN33 z06%!`j;m?pR#*^$3Sk^t58&E9@Z|^=;jhr%@YcPDd}M}_tM8)oR8Ib z8Z|Tx$Lc9(vxR!SrR?o)sR0K!EGsx*L@TXwVaM~PrXisS!F#Cm@u)TsI`MqTy=3yg zGc30--XIfw{+Wh!TnO-pr5pM7-o6aC4%87B%r672&OTQIFB|h`)yLtl`kwH+RlRzy zZC1~I`{vCf`31ZELK)zDKXUDQ8RTj8GS`EiGF10jkE7#NH~f4fyQT1Z5h zXg-H?2jhUZ8w>_&1Pgk=0-j5a?fCdipHoAmLMEwg?fKLgYW;ho-Y=y>aLz0Bax@E6 zzZzD@TCBh`E$fw(p`cf5Jokj*;(jS48f2j!4u4y!JG_`KnM2~W`JVcf?Cc&$wSAy( z)Qk=GXa6QKvle>e7@}WtiU0BSQt{lXXrDd$1v1262m}1!wQGl(Z~eZW!|Q4SdcxGe za+t~n=s8lQ=Nm@UuafNbH7{G$%+rYLX+C#(caN233R*mz2VT#Yf)6ttCAJ-q4f8k^p0?gmR9cn3|2Gh!wEzQf+JE5>x zsHcOM>8UYoD|n1N?&R!3UcPfj_D3UzUKAQNbFIMKZPf(X-5T*{7|K`;Zn;|OeQM^H zIn-AAFL6K(%`k$fp3MAXk`wKkBtOLPig=H)SRZl}9V>m0%Lc`ddBalwzCGwEL~}_- z`wG*f;9k!#NBo4>Xo5X6Ds~t(JRl(-=N+DLx>~?($hmsCTdy6< zhu-~&oL@{d{PhVw`^TE<`e|KfS2TR=+|<&Bw*gO?NLnW*>C@co6pJH@b5ci1d%M=+61_q4Bt2?!h_Yj=hp@Pk=c?~+Sbo{$z5 zR4e8|ng6BknBhI}ShN`sZxljWFw8HTC2>l9fummNed6ZLuN=wS=vK(v==P8QZ~w*9 zn#KQt9^ym557FWlPa3}0&HxJ!fwv<@R#?@Gf<#a1fkwXOgN1c+M+-SWq0K{s5 zXKH-gYCJeGeSNOItu29DgKZAfv%$9_r-CP}^yDMYgHiR$o;-ZzlI(2{7$TSI4QusY zC{Ey&h$-s(V5O=jduLeky`j>D_XFMt*ae@Z%`Lmu-h;jsdUF&rxRue8S@fP^l*{>8 z_75(phaQ>%<6;VHj1b2Kg%Uh#k$=YyPeB-pk7*ex_Uq7o_TeYqDR*9Z`A_9-a(i2N z!0XpPc^G=d7d1)$82hWiItm>W!DJ^8H-jT+vIorJR}b{CSjaHUWieaw1czkzjG=U_ zPoWsi4SS9e!edzoSA$!rr&0q%Q881T4jqxi%6TRGTSHd8fMwuqXY(n$CaAV&OTz#M zWk~~Iu~Q>Q#6=+*wpVg|su(0ZlD<|yW`cr&M!0B(8qVj-#taxCvq?0l3-w^g348kc zo&8;T_xnC<9TOZdeICns@xvOSrlDou$nrU{>#~|E*v?eKLcU(YM@6sr#Lch#{Jr7N z-2?t#{3PnrD4M)okf5eKwnR6 zejj^eT9AM zrCuEU%E=5?5hKLcsbQ~prSEBLZ&y8FNv}pElhMHt>g2g2^JTno_l_k%@?ah}>GPma zQBSR)efiWo-u2|-m6u=oiu@dJKQ{wJh5L?ozyH6{WAlt2&_T}iSm|!u@caCQlLyyh z_q2l_^<*8;_^g+UtDbE%4U@?AK&d((Pc`2=A;>(3_tG$m3VJxwfP1G?QuLImhj7-38mNK0>d`cuo}8XBmy1PZ{aFon zB|8Y#)rE%whp(;?`jVWfmjhtUkf;W8_3|#C_s;z@dL)ogw@0XOwTq&L4Ht_F8W-4qleOMFf}27%od#WwYrXtelv(I5Vohrjya zFCBgR+dp$o;?LXwKmI$vb6r#9KhZwyVQ#paae2b*S9VAb8e()q3?a9tkaRb)TWYSP z`3?HIeZm{UMEycN*<5p&}#Z(GGT|Lr|*Fs4K=!IPL{+bz6`U`+7lq`aSRc;Gcf~yWhSoKf~M4)Byj%_3NL}I`)eimg)fwW(mk`J;EZ5N=_bN32^?usaAP!hW3xhK~!L=3^3-oo>3l_(vwJPmcEhK6v{ap&-pimVqkm7 z8+Uhx+TYdZ)0Q6~9e8MXs45!4b-Y+TPyr%e1N?GHb4h^Gg;&FJ_VN>fxHP`%g zr1|2Oc}GdP23bQ=ehg{EZj?2>JaIwh%BYfidO?!%#Y#Ht>wEaG-uwO!o_+5--~O59 zg+DU`{P=HOe_B7~=PZ|t%uU3NuM4xt>F}mJe1zl$M-DeROzY!^+G@Mft7S1?@89x@t~1LFfR0bn>Pc*%L4)4%ZHE>2J7>cbD|=dL=VYuaX={E797af`_+ zeROe}*1|NokbsWzmwLgNlgA{VeDZxCknex@ul`hi2DhJy0bctDAAed;#WT3diQRd% zOG`-)-nRpn-Q#uN+aKLKs`m?1HJ&*;1L!)mtnS2f!9asU2n3`t)|MFPRXD*T#pwDP zUg==~!DtK{4J(FBB>SMu&$Jru^^9Uge6Y3-329rvAzN#?;jNdF=T3WQB@8&-KH@_sG!;&%fnH_?8>s zhd=uFey@%3zb6JU-FARDxBTbnz<^W!z~ zobZt3G)DXU*??e()7eC}ws(1f5w59?9>)8$jWM-Bh(%fe#y23CdS%@kKdw21)9@N= zEsz(}jm&=9CdFX)!-iH%@X=g|KxI;a` z+VEEctI*lNiPrxHY8bm}EbxW{4NK$*mId)ba9!XHVW=?3gPmQ8`r4Ovw&VagnHuh; zt&v|8)_?&=5KNkx8VhcFmv$I(!O9u+2kgS&f&k6G^>$ugU$=2%L+)6&sXIQK#}GfD zsHhZ{!9_>IX=)=k(12F_9=`{?#46e$pX^aB^=av`dB2qzAI1-m)9UxvuRiwJ;oVnX z`I5Xvx3|my4?p;!r}bccwst-U+g!5lUcd;O+&D*D3%yX}T{(2rtzXS{KQ#RDr9BL} z++SH^U$6ewtGb%)v;nVpJO&4SGM#BBLSY!EP3>-Pkt>K|A#(gO5dJ`W6&?@ZE_z*=|u~@0JdwtknllJAmAb#Xlj7>o^M^6=0=DMtWO9iI)kUBLBW`a z`}y(3SLPJL=#0u`@ucG#!i%~AgQnK_vDd#{yYlek`}bda<$sX3;P#fZ;toIfk*78E zJ;Q+MuRv_7u%0E3Uk;s;Qio%$!D!1*?EBb((`a2?-AeNKZY4Hsgkd27wu+k-)+e4$ z<~%VdB4&$Pb2J!;8jJRTwKCy-BB7jyo`ZmJ?c6=}Slgo!alW4Bl_3F~p3^wMjsY9y zLJb;_ij-EhU)tVb-#F+=R^O+FHRcJwuXy5}d#7@IK9w`|u-h88pLleiX~N$Az9e;% zV{Ox&DhPi2bgWI~ELFYU(f8`s(f4;B&@0q{+-@fv!yvesW-2mVJ(Q8kut9ypPGC#QZ z)o39$yZ+Y6nv#nQ|6BCO5EuL*Kzh^*^1-VW4H3o1LX-LaXiK{bz~hE8S5MLa=$!%7 zkMiUb50Mzq)*9xtBf_txr#qQx9kY{g2tt2)<}3g6zj;%Q@J%(qkN)~^{;uZY2DK1tbK^od&7mRZ zd}3ZOy0P(uW{5^Mpc%)KN1ioM;iRm|WDC%`)`hDLD8$FN!moM*b>B*YQ zd~(6LkEuc^Jw^V}@){_(ysx2fTXVtD))xD>JNmVyp>x;=ZfETYbUW~FVTgDyFh;-` zU}KXKPfX3IP@FK)R00ssYB5tVd&NTFSdHrT{Zo1Ecp@iSkf>9YCmy*hmoD#1*+(c| z%JIE3Z5K}D`>&qJgcrB(8W#O!6n@`TU+(QpNERR0%9yRc)BO|z- zJ(>VA! zo*Z$v?%ch$Xqf9{SC3FqI*px1h|sK$E5$3mkh}vR1Wl2ol^Xvpk1{B2kAdr%>4`&e zfIJ9Z1AW$!R<+afyK;JRMm$b|E_$k6HM~n&Fzjj`cjfXWGGIpN_3F=k&FR2usd!N& z78uN_XlQl{R+`^ofSpb|M&?*CS#i{?=Jbq+%mAnj;?cLbkHVzoeDT3_Aa~&H?w+vs zd~nGCa^${HVR%UIo6ZyIVvqqD6p48m0CLN7Yonuytf4Huot&J=BadsEfKE_0CU!`q z^M3jMu}vN8y94{tb`-miLiT{kz;WJMZ-9e(mgKqL`Q)cx{Npcw@rJw!w>QNA(c6u& z_b;PYyMMHD+>4qUDfD7jbZhyZ z=0=IW6ixh!UZb8*<-X=qXD1i*63FFt)w5kW&|K-E%Nk+_S_F(_PkX8;F8ciu@wpH( z0B#H#iJ)8+q{M^liua3(xhXQIPw%I%2ciKAm=t^Lu!IE46TFjF&VWYrxeoSs$W825 zbCOK&D=vAe9Tap)f`aM$`gas(@S4ThL_bGgD|Q9Ui46kNT+rLYFtgzpDqy!-z4CZ` zN?3-l4KEzaznS)kbS!e&Fv>N?y8bzLrZO9ezYpnw$AqH&m)Af2>0i6?#h-pi{->^j z!D=ar!JjJxa>xpctY3TMIpL44F2I~Z4-i^o1$v`u97wXkK7ncg`jWWX@h@<;h$|nx zRjo!ZY3F0NkAa>*pm>E!4eSv$qW#eh$(_sDSiQkLInktkqM)$0R^{<4`|{4m9+rnM z?a8B859E^Oc>CIw*iramINDYN9I$0pY6vgb7cJ>sEu2};)QFy*GDO4AiXwJ75_T5EL~=sR9&(T(I?- zm7K#R&(BElQjd9Xv;se`>ZPl7*YxXj_Nn51K)H)g89o5?3%0_}sgV`GjodAU0@ip06Zz3Daf>+o80C zI)ya_D>Ho2kKI-558)Lj0L6yo%SpY*9{GCHi!&LYoye`b=W;%4WV>I;lMi3j%JYhP zza2TyuWjwm?(U2<>}_dC9`dzea8)Rc;^YMojSL5eor0`VP|z4Nfr3Lq4&zv5Z=NP~ zxtHa(*>k{4MmOZLaKl0szO?R&kzZN`tw(Z!;dM;Rfz}_vrY<`=6}ghxsEVS?-4I*Bd0jo7us{0R@rCACQ#HPxJaKhT-u381>hVxuj5OB+SyXXAt(tq_>Zt*ua51mj zqo=hB+};~K3kQHoZ&{UoK@|SGD8^;6G$DWHOf3UOnR735i#6k5!azHPhBqa$%??u~l>0ojoI?^8JTSJc+$`u~e?v za0);J$h~o+3tl{O!p}aG884or*kCJJQS^ z1E~>s zKZO~gT|@!EH87^08o{7dN|R?f+DbfFxGS)5OpH2eLCL9eWm5!dEC>(?nd)ea*i)u z7lmw*kH70Zzw$4Rp8v_Xgg(62p_IL$dc2Bcg?zOj-|TW9Ci-e{JsU*>Z_uuf%Gl4W=s|$+N?n%SV|g-T zp5+bh9WD3j^;*aA8g^MytDi-SmPIlQZmt#kmR9AnVj*XWT`m;H(L+5rRU2mYHdZCGcbJL4ASXs(XS%|!wdjl zV~V0Su=!ux6mu+co$O_=04O8p zunf_j3$m-zE<6{r&zNeH+8_}i+3^4xfSxu0aj4Kf}W@5FPWAfYYgW6syM ze@GwGel#n4jS%cHde@2G&b@n=qvted9a0Uti5odQ(<`6olTAYKIv;FS^&^iy_C$F3 zrK21225)cJ00FtEtN&u_IY#T0s^nKl;fQ_AAQj+^ZvN{wTt-tW%+V|h(mTIU$}(dT&QrCoXQkxO#*k^;;_%w|-? z#}Jl~Yhm!Gr~vZz47}C?#0)TY2i?GM3%e56;TPdLNbI`Xq0M2o6)%Fj6T}l*M9GCf z$5?I*l((7U##9Yjqh%q~LtzV!xm~o>oWW;0oi12uXQ~;)aBi9Tg`WI%kecl5?OBeQ zFOD2ZI^gNFo7Lb3^3nd)jt;=wO?zG%!&>mj}HH)bq*(i%=zk=n2n;Fl=7Qj(c*b zfyD&-ZmGLCx=(}36WAkK8in~?h^?K21QQ~LK zj;pK*zjiY4|J-cG8lu^u6oV@uNN(}TJaORzAjsD zs4~ThpCqm0d!2P!icnPE5?ghi6MY!D0b~8V;4Lse*7x5;VxqA&Y?1xw(gy4M zyx0F*29;s^2QDD5L<%=l3#!Khd=t+?|UA3+ z6slIM#nVkwtdm-Cjh4c2JfiJBzgq;yk}L{!xuWTx*dTUv8j;kIFivh01wJ@X;{_*i zzMNYgrmurAI=eX6+;5`Q;+#X>(Y?}+dKu(OfGdF6f%yzb!=!HQ@fMasXXpm!djFYo zw4o!#vM>=R!+I#nm2HdUrNsS~Hab9cv}6XsR-skGgmjQMLKUmhhp6#X3aXb&>*|!` z9BNdk1K%^)IsHLkXvXKbr0~(%yyghN%DW)&hQnUj;dcBC8Ep_~9-eBdq3{&KHPVJ) z&&`wo5h0bbIlRS07u`@vAcLT|Zpyb{s7o$KFYm+=XB`gEs}YP~SM{U=c)Uc%F7@&xB+S%3BraRV&iF zN&xTbrO*jNMUVSc`r3WH$maUH+1WWm=S16b;22^K1v9}V=~%{_MEIRCEs>4)6T6FJ zG8xPE{!9%`jWw?9T(RFy@pE1+!Si=A$=k-GZ0bZcqiZ74I32joExX`3VTPS@(N$HP zb=lV!cv}DP&tH#Sy)FZM#OhzlypqBR07yeo~Q7UqIT zVW5GSD^ujORK`+#w5qm@LI%|=ecvTWuED=8=8ZeWcc(Cj=43(vvf5^FfLh6rUA3cNcW2)IV9^%%vx2q2oaUfO|5Ys{0r zGldKl*kC!P-n=CVuz9H7@Jzcq@bvKdfN8W)m)+gI^t9Ta&P-iPd_EX>ptS>A=DF0X z@!SsK6tZ&rmwF^qfH2W``m;1=-%Z33ucQGvVc1VJXK9c#gmvwl^F+gSy#wUNi-?z; zq+yKr^!xHU3X;Fo01rQS?J$J;Gr6r3oh6$AO?zV*<+txitJnYP403kek3eq*fgq1- z&Q7++*y9`0kOoX~;AN~K4mmYa^VRFkv>gZN0?&!*HR}4ctz=9a7+&G(TBv~Gec-hM zA(cujY!r_68$s3R{ZOdN@<)+w$Q>WE_0Tv8Alb#lLZ&s!R`BqQ3Of-c$Vv^CVHy^i zm8{luG7Dcq<$mO!px7@N)(tg)X9S1wWU?@oOB2yz)!9qI)VjbBh)pNchIdn|0rGh3 z^Ksy4wd#sJ%C!YE!qSyi*)w(`L+DuOmd_>!rVUPVUy?F0!Y{DGuHxLY7V=a+dHu$X zFW-=##sIel)iV-G*JF0PE~_)SdVB428=2CLH;a`7nP3Xcu5=a*s! zhD2em)41nrqyzPceL1zMU6U(v4oFCeyui@0k@G|z_=(7paWsn1&~Dn~v%5)b`Yx_J z5!fSwkP7lHhUD=XFxQOF(JRYNt2{zccYo)F=8tW0A$Z#`Q~|l*4f#n8@Y=_( zABuXv;4YbO%E<%7@|=;$3Vq=xS~9F6zOu z!lyE$X${M>)?&ll(9(>Y8@l&P(KTBly(e-ydwgxAhE!P6PBb3h>+{Fj^FHLAC?HHa zE=cYIX)!|Ogh-L1(V%2{fr}RJWu!&fWWo7O6I}=NgrbJD{Xm6P$rncvDZsv%P2}>G zhxMY@0&b>YxBf@3o~ic^m`6WHo5Yb#5~~#@-m$5SDIRKZSGdL&d0%%>zCB8v;6J&3 zBXKXN6=|G81WZ7x2|vi%QZX`Qu71j_HyA2ce!KgTl^^ zVIG2{w<`EIVt{4r+I!JkN8C)bY&=}}V0G}&t|y`&O-}_!1_vE!JE~Y*7;|lHA@Tso zg&tt*;iPL1I#eVb9u~TsH{ZPGGY7dri%K4sjLhH{sv**TA}w5Z&xs@#e=Av%)5{}p z;y9Hd`nV|)friW#V1D>w;n$|F!-DsU5lW086#4zTr)m@&9*@r$&I3XD!qpPe1DGFE z0e_EigF?5~>~W8nzfbbO`N&81XbxfvIE{0--l^0r|pl4UldUSn+)i`A{^ENMmu}bH(b;gt(2h zY#=VY1}In%8*hE(LWHIt879J2Sxmbt-mYXg_qAy?rElvi0EUqoI_@-5xL;u8#X|F>@#lo;&sBh=#aFoe7&oIC(8OJ8FA;; zk@gHuIc;28DJNd$OSCV`y9f z=()bh*Y4hzyLXS}-szd#JGn2XXD8ZYopMFjltbLcPGKGkYCTfG++xJ%O35qx{CRB< z$vQXQ3G(B^%!lE*qW4X$<(YMg;}K+=2czimftMEQ~N} z0BjyO8~$r+OwHMe!Oy60%RIlac7nWM7d{kE?@npw1v?0?Y@d?9;r2J?fckvDoifsn#4;JPMbZY7mak<0Mz6le?u|{?6E^yK z(E*sbXX%f&=ZwKUPRnpwvG}kWCyRF@B%=d>G++ubacAzryG|6E+3wqZx4w2mdRx14 zKAy?#+pkKqXn1AD@}6vMjo4mlA*r#quV0tBy>e@3TZY3Csq!TSfAn*BB`+OUF|ALe zq>c7f`@l)!A>weA8lZZ?W|ioDmk9rAbhUaq*kywaTmdQwE5a}+6mWbdj&yH6E zq{0Y;D!!~)NTA)wBCEBO1dN}iU0P4OwIT@e7@7S zvZFA;E<eJ}S45Cvy7QnLPf)6H@K<*>%BK=ADzVR+eKqIX=}~RE%vs8p`1lkH`~` zJTAL?mt=c;NBUS~Q}j7g(t*>3C+`4)xgSn4_RHhI#WQAoy!aH8mlei1PF*3)#3<%QhMlGfpuf|9|O&$eBQGII{| z7)2Y536vxkG_oIuJ5TA4pL<;fsO9x%WW!jjd(e9R<147V_0#&*z$+&hQIf7ZTFSm@ zY&i^zT}akxkaatbJyZb9-UQEs*TFj?5Z3__6h{N$1v=0+IoERP3^XLP=RivR`~UfW zLSwWX)}RAG2;=Fw+`V&O{_30Gkng|nefj?PZpp2eZ_7hhUy_F|Uy={J_r3Di!;fey z>$0?iZC>pedSbeV6M***QmV*$P{`W?Fq#%UT{Wun$%UMrpUGV{_=y@m2I-+gJw89@ zXSh%=eReS+fIDBzSg=9XBMgkFu$r0hW}{xdSA%M$M`A7p3A%AqsAXTm6s_;-Njx~vz!-+ItxZJcWtp9rUr z!BGbqJ+4~dV*pa|`T(ABMOS`>QLISA51RFt_jl#e?ymgGuYOE+-|;SnQ(n>NL1Ukr z;)^3~yuRy+19{}qHTm^leXo4~rCV}x=N>)OTpi4bb{%#P)VS3%RSwGX-XhT83R8ufFoKeD{SH<>=Mdh=ZU$SxsGQh>!k|?H08dlxX+i?v;vIRFd7GTz(;DVr1<7!!0MaIoZB3&LU zU3m0d55$8qbjFukkjX`p@;OS*fy`tLKe_Jt*TP4PXx(FcomgtM7Ww4ijW2)s=*JqM z28z$-_qLfxQhLIxRDWI9rt^xhEA128ZE0i9!`@WOFwhpp&dpa#Fe~EYD;yhyx6-a+ zbOtbMJLo~PZ_d0Bc@1+##86MH;U$I|diK@xJ@n8+vVG|?@iV+S2F7ROdosTLirjwX z7Q@r_&JJ_5gM(f9=&!zCjrqe|$#A}0@`Q1%!eTCi?bczXHTutXBYXk1WeoD6Z*U_} zMO$3oj`i*T^OH%`oF&c&{~#8c!h_7kR_)3@;Papab1+214d&>V^7{(-y`xiyhrSqYklSh zhDpOI71pT@58SMLgP&KgJ?y?s?Z?&{1Udg}d}K6jIHJt`%(=22+t2)11AO26K6Gs{ zUmWJDb@NJyUEeZxRa1_l`2YmZg^YD#6J80d-DucQ+?+{B@<4t8YFARb+3s^Fkoh3! zM}yMTOe@ly5-~Lx$q3sn_4iOjs3@B@l6?)q=%wOKfDJOg{T8qvB=x*S7ajkfeRjt+r6xPk`BDbmVJdi%CJ0ph0QW927CvaVS1nT#d z4IqjdJS1Ml_$tsVqk89pt*s(oQLVMDN)|4P145a8XmYvDQa#vmEYE-AtMZj^d{-_% z^g;Q@|Igo*ul@V4$krp5But0$moHRu@Y-L<-g~y>pcyD^qdDfwFUoPB!#eTdh=6V?EhRR~}>6XEnQ!<5zE~0nFta-~XPR&Q7J) z3#3*fZH^lm-7?iUKwPYHX zRo@v4T#td`mNx?E8M`hU{ow};aG9D<74CSkBdv8Y>*!s9;0Z#Mb^p(1W4$%w)hq57 zyMAC;C%+;li{<%a4%7T#@GQ`YDRVD2F#*Q>1ovM!93tN7fJ6si8XRUQ+ha=+1j$*4 zFE3_MwWdgS?`1!iG5xtf5D9Z>St1szdDtmZR<<9iQ1%Hwc$=Vh6lUueiHWV-*D zyt+6di+XbBOfF82Wc#s08LNT5>+o0Q&;RnPa(e$ve&hN-l!!Tww(*O#q~bqXcQ_wF zKTv4&y!cqQ7}_#%&K`BBYuRjzRnD+(+m&fzmz9YDNbu22=>$MCbuRrd<{46#N?B{N z=<@f?*&pf_mTRVUnQH*YC20qd&5GaNw7JdzK{{2_x^521dWOtf{7I;1k_)AL33xcp zy}^7{i6@sR{&H&Y1ab^;Ys8lrE9Oi z`)v;jO7hx#Nz3j5hR)~HiM;pl-E#cRuggGR?(&EKzP#h$-SYLL8?y6=hTCu;dvi76 zSN}>bZr_quPL}e4kGw-lEoQ3iD-^Cou`wKt_*t8@U_~v?20>pL+I>?h}hQjD^j1ng9^$J-Jt(&NNa?PDSf&AcoyX1z0 zA4z!&M$V1y>YL5*>d;GcoKXCH6LCw@<$&T9baV$3V(jn^=YT3EeSJTJ(wzZTz2UXc zA=(yV*>=g{Ag)8L={}g3E4)t}HUaA3d7|HsoW79O4Q%oJqI1(phH89!BV66y zA2N?=26yFXYhmZ^Oiw-~+2}d@ma`#jXf8F=s`5i0{D>OU6=}+Ctp?Rlj$V|Yp7A%{ z^#MH?rF`T!{!^{I4bQv$&i6|DL?gFf_zt@<@A&Ap(WlgiTIxCH#M-3hfJx$4bA@-# z&(38!(}GB?{NnySsfMNe;9K93>CQXl;Qa@h?Vrk{@B5G({na1Id!9Vh=lrk~yVx&x zmCC7OHP+dzk>|gEOWyS>@8>WT`r+_&OYHOLSpk7#+{*|U^D`HfgfRlZ*84(l8enns zqLFjRJbwj6pv(|$Am2Zcb**xYHK7i39Bn2T=e!T(qhuJcV}Q}~`P!Aha{h?c1z);w z0t3#U>lS?t^VNCmON&u2P03iu^(+Qo_R3*-e1IJ{@2DAI^w16>8-kg zrA^kj?^Z}Tj+eb@AHw1#=t8y0oz=GLpzxj;%)?Q={0|zVMblsN!o+E~c_j&xl-drT_M{0&MhO^kGXqyN`b0-LjgTDc+}E zS3L%OEE0Q(KKW$}56uX*sL)Dwf%UM6*Y!leG5F?JZpzgs-Y>g_b}(Mn-0#*4@?m%d zO=FLr|E@l!k?FTzlwbdczaz7+e^t))!VoCC&R24F`?d_Um)-YWBxi^Qcuiu5m3l)p z{E3q>P~~F%1B(&G4>9hE3#!e%chh;H9u3J2U@Vyun4K2CswH&7@!dQOjE1y2LqcqJ z#3*o?tlE)DTHBGgN?H5S+j()lTB73^8VmcH{BQ^!47NUIxa3+|Op5hR-XgB`ob2A-6{ZT7 zPDF;VCN;k3McCUV$)NVl!RW>wpk zc&cYL#A%nSiR{M9T}lLAvzM3ydOnv|4MhMo$6q7zLk#tv5q0LhbXy!TI6- zT-niV6rJdbe6}+{t&I0WsILVd&=hK*52k>Y&k>}9k5M}fw5KJd)GD5d?*W0{b8v9VYi zTPK1rj)~1WJC)6L$wg~_I#7IoElW!ahfII;u@eQ?FJl}udK6wKW?Kq{3 zJ|~CMd`~X%hPd{c`NlqWTC->HuGsF&C`rCwu9{Oiyng-Dng@RI)I8u|el69(xP1AJ z*$D=V^L%?L7Y?ZdqJ36so!b@b*%9#z>H#7`O3tQkyW&OsHL8%f#IGgzTyhH~lKBj5 z^3}l(E-kT!H`p3fG(s}3J>iA7M3|v`E>Ilrp72xn(P*4*l;?lB4GEzNkEu+bIr?F? z(Bln$TGOV| zjPLkdxV01Xcn~arDfXD_1$wvjIwWQkacwDj#t5I(}ZbnRU^}Y#d1UejVcB_SM^w>-y~% z`S*HWUtg1~yp@7*64nIL#;nndtmF5^u5Z|Z)J5npqONq$fA^~)d4n;#X5?d-o1h9P zos-e=c{O5xM>Gi!;9X!u?`qPGtSbOVg%rV5tM(5F9_eFQ5t0dmBI8k6&+1N)L8_BqJO|`>nPhI4_N=E3TpO# zJ&5mU4pgBafd@*~y33Wa{+0O?OlPO4s3#5P$j)G-xnQ4409AizQoF(P8T5nMzpd#x z$+Jn3)ipnSurO_~LZ9I|c$#6I54#Y_Tt+*rUb$CHjs-4xALM-~B0@c94%sZ{8md4c z8~9S3hIuWB1<7+VfYwmeH;4);%ZkfyTI8@=QNz!G?Q=X`T2TfMhh4{jWhxiQ%)|h{ zV2U=FFuIR4fU?$!!;_`FG=hg;9JVM?9`H_4a`f{Vnqc0nyA>PZIklYwq9g7c;0BK9 z(J$l+*k4<}SsS3{MDJpXvtcCB!%Oy3DKkPmws%8ClD&n^9TXnAvwVZUd^Z8+=T|ah zZWXq%sZ*1@-DW+_uHDlBNkF#0SgzC3=#wVefh=K=Fu~menRKLI6%&| z2W*H&9~c2Kf%Y3ss~jt~ISQ6mHH$k9yoU?WWTIf8(~3t@Gp9v1~v6>Vaz z_Q5QhQp?(mtrj7T0@MX_!Qkp+AaM{+^~!(>|FL)=oy$}?2^%aYSx34}7nU~CF4?e~ z&cWr+))lOdlt}I;v>)pXP@m{pM!SupXWDjTuY~-9{-h=#XP91;j;z3+ThB>ycO!ej zu+AH^OU~cp3;}#bzS4J;y~`{Cl>l@`%2y{-kHX3Ws?*n&C#o0hqXjqI)i3R-_6AhF z;?>OyskO;B=4TDMYi!6HAfAsVuKR^~Hi|6uZU0AfkL3o&)P$<|3P{5cvu?Au8(XNE z0w~8W5e!A4w_D|dr%6A&ofxBrG;M@xT&T`6p|_0DhV3x~1}~^TV^;`7HjmGi>h(+Y zj1{_-`g?m{9MR-FbxFZXZ1wE#jP$vd=FOAM*UUBj@XF6-n)A8w!;nb|^fe*-i2S?Y zOqrMy`!0lA<{Q??hSU0Ue!tlsTzgv-BG>oJ!}q=K8cu$6kHs+5@%yu&q~<^}FDx*^2(}vcgtVy>LA0qd*QArcz9%U8Si69N1B?}F zoB)JI7ev1Vy3gS66_w{SUeWuq7aJmP&Cs&qf#{V<^@kF*2cdj5!p0$YT@J&wZQkGa4P1i&cAAsR0zVDMN7* zKFXR#?};To6j-ihn}rI^2pL*^5V_56)^j`dYVo46eE_Up1Cz<5%U}$gr1K#seGga; z2t&ZFC`@_-9u2SuIs^SU;Nn2+&xrjVM-Q>L0|MsMU*Q$L?%bdYq z%8Geu5v(F7pEdgELrSc4aV((VKh@6+=?)kNW`?&%J$gw`t~fihsIei+0BVEA3fa;h zEwxRRPxx!)&l>t;Y zMDhF%`HJIXWQf2gd{sV+cMhQ*OP+;T~CIF z-dGM!gJp7Vp6jYP8b@KAVI{bAl<7OFG>#-f}5%@vbz!))vlpA7{Cw-FVla#cfU z$A^?~b-@AQs-iX?Miw>n9Nj(96Q^PL=rwutp(o_SA9%lcJkr4MAm5eI=8c<$%V^-_ z1r|GOGvWTR$&tl74kiTx%2eW*rm3ppBp0oPTk2lJgSiK7Io`RX(eCfc zxp?w@*_Z2C;~8)ugtT$@>AWKt6qw&H^7lV0)GE| zD#sTSd+vCu0F8%;>~Xui)H+G2K^0e9%E0ghZRpwx30Qt=yF3;hhei#@a>T||3zAdw zYrmk9Sf>Y0kXT#6UJ$@uFk?#fVhFv|r*Y5Au>(97s-`e3Jl)Ea>h%S!z`^kYD9#mK z8v|T?y-M-Vf!uv%%!(E%3gDQ@%E+p<>)Rj^L?0QW4Ca-zR~#*h;T&_r=&&}==LXnr zu$i;03SPO5Yr;ZGmV@Ti4a|e(!JW?CB5Z%tU9Qhl*K*5}5nfYP(b`k=qu9%qo|y~) zPNNTm=PGuUEG(CYyJ{N8qa4DBffBViFt44@6lGzjw}y&t%GXZP=!E;UkuU{Qe8G<&73 zT_g}Lf;f7t*=FMsoMiJA$q5&DUzM+p0H%k}vA;cF1&9rsySrObo}QDUWjQs^I!6}v zG)kfM7ex*UATVZ7G4T1`Ehx9g=+rh{5o2i^8QaCa@w+V9ETwc#pxu#-=fb>R$?cXt zS5TOOyn{zwF1W-BD-S1KIi3up=HsDa)gN%z2c8$?Tu5qY&1McN82t-Z4VCi?lYz*P z&!V;GWs_gSF{EoD`?zgw%U45Y!FF zugOdco~@XsvETt0%=or{JF|3hlsjOxVcEON8D&=Ku z!|Rx@o?z>{LNTcFt3hQR-WP_GNKzJ#I%hE>Z#v*I;i*V&e8Rpmg+{?ri#9JEa!Te= zJa$rY!GZbIg?artEH`_6ydsKq86R9Tj;=bI%4u2HiYv#g%_HTC4c6aSt_Z_iwI*W$ zgDyhZ!8Ax}Vr5ccC14P-Pn3zTA&;MlwchZx^5SK>Fs2Mwwl(Zyb79R2+AGdB31N${ z0CVWLZUyCZz&ySyJ~;QS4R%to*SF9<@8n3@ z2~2X?z51vuG`YX`>Py^3f>m27EjgE5YM4y;?8yr{wl}>KQG*(9^!ZRn!YBxDD=2o6 zeQlKb)dKIeCh~xMd3%UFv8GYrKMcBGENUBH^(nrkCWIjDhSr<}jvwyF?^jE55BtL{ z$M(XyQQ*ZwX3NkSS?|bjKRZ0;y zQPHh7;9$6^XeO_0x+yg?=WZ}say|%u5eR-5ZkAlbE~jFx6C5f-^2^G+WbG{JOy1!z zdb==T^L9yz5S*x$Yf8g7XSGeIHLg~Wcrm4}ZRRreV(r0#X@WU@bTVfCnF}!{Uu$4^ zLHTc4g3G7XC+B|QA=KcO$G4@O&E?^Dy;ElAXL9@Kc?xT8VJ+nn>_>YF@!ZNWHPZ{I1FK=Mvj6EU7EF& zvdDBkx4wB{p&ktGN>e2cQ(at0xO9bu(k7P64n5>cIWkgiybhN>R|rjS`U^xIyU46O&~kCttRu7 zRp)W>2Yn8PK&z!gQmL(+CvaZX5W0sMcF*b+OFr~oppJ^_O z^$k#9m`tFaRhsl%%0fYn%oGgV9ohS-i^SXi;Mn<&*#IMUFgh)mM`3F zR2^F4pfvB6vB3<>#Er+qARY5s%&<*G)+Qw5Cj64UVE(TQS+e1x#flD8Z{3u8_e^rQkM0%Ra?<>He1bL#?Sc@^}_HB5#o+&u$Tol9$%2x6k5m? zT58uq>Eff=wxMZdMGD(R-up#03Y|TzaG@t1)KIWH1gFC^y6mDPI-oENW`C(P)z?nK z_O?_S!Yak%3eEkH|FwW@)M%Ftc6GES2MjfY<-{(q)>tzf@CnJ6QUgFMY)DHzH9{{! zGKd#2VtAufZ32`$Cmc^Ly~}_D-SFXqYCU6ZreHnT2{djhn-&CWfKSCv3l`(d#ym!G zqk#~9$QCy3Ejy9WdAGHf%yy73*3DZUOk1Zv<}q2}ZyJ}KP+41glCIm4jn7}v@+E(R zHG`FXpS+!u=TfN>@0DoLVTb;KQs_P;X-~laYNJH8nL^LUJ8uvtX1ZeTx81|=O-tqc z+xO0_lLL;PtcxFX6f)%q)F=Kv<|AnsBX$2GWHquxE{cS?@%+-9&#$hG7aMe7OpdOk zX>y4R*vI|gLXj;ce>u*>O3|+L)nXz>RjE2%YK{pY4Pe1Rw1x)BSzLg)`g#jr(umNB z6|5Jtl~=w%4a%+><-QdC-Gr{)a&u(X6gFC+_-Hx4YT-3dVGI*^(~DENr1>ibs`8>> zcWi!MJZ}yj0o>Rui%1<$Fw^I{I)GP!sbl1}p6Rr>tLl1vkeQQoq(2;PvZ2>kQOZB8 z=QsQ+*tGF3uR}M&J1UK%`pJ8op+nT0t|`qSPy1Asd?Ocx=p-Lg(W~{CcQ)k54bI5M#kA4R4ZZxtMMDo%{(}R+V0XS?acTHfkAT3}- zH1|o>_!a=8aUtjlW0=$&573D?z|PkTUN(j3jd=s}VT470$hKh9_A&ATW{YlZQGFC9xGkuXd$vY*Xr6jwjw zKwMA}2eIj~iHvsktb3Gfm{Kk> zoz0p@OL764yCvjhMs}an08=>K48fb<(@1>$&-#LSS&HQ{h4Z`YO&i#V-M%LK)pl}i z=H43T6DXD!XHp3!#XuKc@uXt^1iCy}m>ngn9!T?g+Gk?FFYR9Iix#fwuf4*V|n!BNVh6*ti~U7fN_upUJX|5KyzQP!@tJc#olL(uvKQf?SVDt!iq zizj6;7!qVhTXC)zJW&A3c38(L^C-y^G=s44+inUq84%t5E|@nC?n%ixbm9TR8yG{F z+$-8H6FMz5?>J?J<_ZTkjBR#~mP%8aONU}9f!&Y|HPR>wUjj&=6d?uPf?%kLXY(rY zEkx1zVkjp1(0f*BVK|Dm+7&b>$4v;bqV2Y_Zc5%TZn;sz3vt$(Y66=Y`ltWt&%Y}F z*>C=;c`H46MbBi~81hN&YSzUMlm^tBEf?o9zVn)#y!fi@Tz*JKTl?&kV4xj^11iMc z)(-PM>~^b4tr(%udU{vt$vKSzY5hn$B!yPp;PXv2R3{&v8XWACR9j$COtgu$8q8{P z{|x%Upj8I#x#JD98~X3rcx+1u@i~2A4T-swRBNc1PqvU6BNiGesKW3JO4|Y;bFXyN zz(y+PcuXN2RD!oAaa51pcrum2e9G<(E(l})EV^pfAQ)Nm{8I8%uI;E-b-Pwo0Qa%i z`U0NPC|__&;6lPSmW^rqh!v=(rT*eYhD_h=xG5$>!a=hh&?)lFhPQtBJFdiX-YD^B&mWz zwK`Ytkd_?x?2Sg68tgJuBX4S#Q*CFRQ>F9_vK;#SJ?$k9^?4wQgq&@9aZXre?_itn zBQ*v|(1W62!o{`}Q`HhWNOCKb#J%O?OSY0?-6QP1pIsrcDxlGHI_v(^i9MEu)WN2IHkgO~z7+-zm@ z5+rTKBkXpQU*woDOoerO6alzS!OZ(1{i8puU6@ge4%A#@B36GAkW4KD|@@$~P5 z3PU?l#(L8J@X!82-uv!%Xp+6KH4BB4O)X<4d=VOBBGa4gT#&%SV05L3#XRL!Dv@Y=7ONjPa&?^ST49CXV20I_G+7{(fE@QJTZU-Ig?>! zIVX0kAmG-{2A2)|4i^{5vQ5)=Q;bNdmg=?fx>YqaubXkY_CYv>=fTP#02)mD750l*2AH-Lkd2hZ9fayERT5uuWEJ$kTD+MGQoV zdK+)7BPq6a0y>a7c&mq=$>ABVDmkI$23Y#$a!mGf7fE3gWMtInLB1$3v>r7K|AqWN z{_$_huc{}iFoKBcHdwWtd)KXp4l<|9p@HBa8h{kByC+GZj&wF5+=K2%80@Myo=6%f z=BFpSx3w(`tsE;1LTQhV_gHju;UF|l1?ToQmznA=dF{f#XbWyUqJ8Y(w1L=#1Y4QC^{?pZOyfhQC}Gvoe&!cR4PJy;{X-@%@g z#~MPl@?FlM`?61Xq^d3$x-o(R(#!U)dOIxwny9a(&_*0!aL5L%0E_eoCEII@<&*}G zNNUQjSWaV6C$_c^8BFE5VskSM@t|A1c=uR7`pzqIih*}6*f` zIl0k7abp|MgY5;zEOEbFv2_R7=g+_XUHMmk@^9t8{3oB(&w>*_a_`$P#BGWIha* zmt@~S!p*4ZCOcfWR=IQ5M1Q~33L2jsVwW@R-+uFzdtw-TL)!g#VW?SHtk9ckrQf7A3}y{Ds~>{zm*X?x?y*%5D61nV#SEY@rCtD})6V0D zbq)}HjVT!npktLT$>9ShPVZV9n;Tq+;Q{7!PG|{Gi;-~4xL~eBMv6=La@g6Qqb!X% z6E)P@=1zS~W0G!wWVSR9BrRVbI-btux&Q8elE3%C_sd5wLpJpms3BuRLn|K) zGTKrutd@Kp#pE>H-aeVgw_mv9AiN!OQd%oGdZXg{uUz7k!g- z1zghW*}7H8kj2V?y;jONc>ldQA(2KmIrWP78$-?O;soDvYj`=O8HXD(n&t zV7b`dE;B?PL|oOjV~ubDygx9E!AO!;!~tLGIZ|PCv66&?%2$f%afF8~dSrAXpF&7l zY5quUo28F?iVg82S6UMDTgio1CRvR4N8XtgF5nJg1l2BRyW(xS%`R#a zFfS!5oZ>ma99sCr2PzllZhQ(vLFloJ^s@{#1Obagv4tv~4S?VgEJn$K_0|z{pgL}J z#^B?e$ZC0ikoC^!V4kn?J<-nZ)czd>&LvZHD`FT z?l^?J03~!-o_GE_ub6+6)5^4ttArj}F7BImqD0o(vz8FOAi5wc%(S`e26n{hMT6E9 zE{?ny5$^bv*ItwFfAc@cOhHx?5%R7`n|q$gWkrOel94}+fN43s z)+_-MD{j_6K&atGXe%}?3}%Kgr_F+ECpRW!xg=%EC(&F7$5v@6kgfUVUuo!l!;R9!&%d={+l>Zoo((UG^$uwdkoNZ!UhE7o#_A>k z$gnYlk~Y{4!J(Mo1JZG$Z5P&WLeiS^pCw=Ux5f@Y@>Y&viAFC1aiL5m`UnF=mjEo4 zk_u4ZuFd({$c4C^Ff>g3$(#oE6`?QPQrW&o`3*ZXr!!2h&E@;w`IZ{th2@nsr^7ck z9C?GBZ`m{l$;X50sXi8RYs<-rEYI%nYjJUps~3DBmUA8o| zYQf^@M{CK(Lb*^Z=DRDX%h{NMPD>^1!^JcdmU>fKO7F|U7^;B3pNnRbiJBv198oe z>b^_gKP<1K2BV= zQyzHYar&64=7P9_F{kl^7oL~H_q|`!hye$8D(zh4-Z1;wUN9Mvp*HXrUJv93$XRHm z2rmlb$e*M3LTSn8XuY#xd_v@gI9|1ndm_xDx?iqp_W&j+gm4TT@7AqXxGvs>{OzYto1Y6 z=K-5paU-=6C5;v&8kAPSP>GR}RmP>U?)=K!6$ynX0hRGoG&;E>gq3e@|Y$^%A`r zxP-h){eq)sjD>XBb#k@_fL{okL&6uLm;MzwcWf=e<+7%cVN#E*mDS3CT!=KaCVjD7 ztVj?*g$q6)j@gph(v4i`Me^P6zaYma_r=urTQ$C(T;AJZ5mvKx1uteW2Ec0O-4)2P zsEB(^K?(|*SKO}7UM{w74thq54~c2ilGBBD!a26-9g)Ozpyp&E7TVzK)C=3P&Q{vS zT<>NPN&86B={Snp$U0*7NjEt}RiM{*8_dVLFeIj}F-=FdaYV#)!OJ!^pr_Dnk&i0F8!?iwgDj5Lxkjz1GD(VM=^wAlH)*yEB3xAyi>Gn;Z?apR*Tl2*S{nRE-HPBm!ho$%0|H zF~KA~{wV0!YE-XWYv>nxUKa`7==H{EV0c2szz{O}d z6dMnevA4~||?EN;qf1f(>En)jib5vi-w@;QKQ)-ez8hassV~@Br14Km|R}%_3q7e?*p{G64UQxQS+bANX$^b>wc91zo;a-(3 zZ++bzbOp3SfaQgC0MS8YdZD@7fjuVgsH+vXTU0Pg6M+=WYXDkuMhdCy@Seqx`+Sl6 zK|Z%rc!(N?izRcz0ruE15}=4$^0>I>2`^COeOUY2_@;RfM91TqoZP>Q?2+%4^e-GM zZT-PO-gRlD#YW>TF(LG%sVgsRTY-w*ao8O^pb=osI`xvA>2ZL1>f(IL2}FpLBey#R zh#iejiQ@-PRC@t}lYyS{L@V%qvJu=1E!ZwyI$)o=2-^;z+t_7ZU?gd+Cy1x9H58VP zk^2aSJnrVri-J-eCd4E*@BO8}W`L`C@x@pzf1gWPoX?e4F_~O$+r@Z8zmv`FwvkFx z(UV?|7xzP&Ej_L@|Na;-ag#>O_k(Z1!wwMuz=CNe{PhK~8|sRG)>Hu8m0qXa^$h zdGS!gPE%!AtLD2C?Lp792&uNFl!wc?f8G(y7Mx#b#)J;UGBPi)$u&SUpgM=-#?L3c zW$#CLK;(fR`Pi@DP{X-y<;pr=EHYKwy08Hd1EOvaKSyec_D%hY>0gC`DuS1?!7$O&@3Q!u=-PH6W zNu@a0D5e0RtQy18IM1vtz1eum`@x8Udv2pDndf+D8f$ys%oGH zjeA#W3L@lE7S3jZkskwU!5jz<(Q-bK?aDT++xbtNqdC|%mieN_ws|W?xM|as{AcR5 zdkRXIq0i6VQR#z4B}usxlj-(`b=E!_Ycmb*Iq~`Mo&iF0Ml9Xsx2n*$)athvEawCb z9zxtm)cb{B0IltW!!~n#$YpIpI6W+r;Z!=H*S;}o9M4G(B)Yap#;tF} zlaT9kvN@Jx_5PZN4R_7Ex|Sg3Kq+TiC1>a~*1~EMjnkAy8Ax+~_MSjzyz z!DAN+nP3PB7atTMz(qo&sPugS8{~1-*S)ekke5%+HLo>J-cs*_;VULGR8tKsa2AAT zOcvM%|LpTKrLk*`Ibr3q&(M>;Xv~mI5Gh%^GbIY2Zw+jTc-0y)8A6sL3a&3rl1QDZ|w1a~ovj;d0x zK%7HtAi|K69R#r!p(_BaS`$sYbN`H^kv(1r4MFS7=x|J&C!|?ikVDs_5f*FE3Rf*V z1}oRT;Zd?Mf|gg|dN{~cLER@UB#}vtxd#lugJ^(}&aS5&jqm^nh3s)ozbzS7=Z&#_ z3ZIIj-b!zin9;iEkgZ<;!2su=#@vdg4f8s=IB4RadZ8EZ`5YeA@X}RldqXDLb{q7J z2(j>~IWrvNX^z$V?KCE&Y3K)IuEV(ot|zyHOzbe{6FVZy<|^0JAuEVJ>s`Tr%>ZA1 z{@XVW-~XW_wY5V#$gU3M1w|e>$_AKs=D4%87mDV&n0R|`hwG!LOuY#PhKjFB7q&34 zwx%^eWjh$QR1jVgkDh5lJ_Wv|_nj>4YC2c^?8^R#FIom0Tt}e+ybJ~k8H`f9BX`ax ztf~QyGpHt$f3i-fPx2!aa%~ls4xVcMH4>Bh4%BSUVms?C;yp_xK;xL5S%0}OqJZtz z8%UoOFe?0H!|xDf8kC(NPeus_D1h{HPBpJYpY}|Xma=t$f)Jh8$+mjeW6OpYH_(wLYcJMv^uPVP8#n((1H`Qt%P*+cc^W0F ziGvG`uW$)mGd9zH;W8KRonq>?o60wJ7h#Sh=3eRkHDdi+Mw)^nvw^>~pYJ?C^k# zD~ijo(Z4Nh)&p=0b4G_7a(m5GMOQZHj`s}XfM5`eK)v!@^DdA@gA4VT;Cj!DGptpm zjH9T(qZ+FbOUDWXzvq$1v{Js1(|IiidR%q}rGvR(Ij_1E6E%gym;4*komd!qn(r^M zaI|Sr+cmtU$7UkdhsOO;bo6jh;8-)Qv6O?URkZw@a(t+=o76QCBo7*SQGr`k79D3$ zGT!HlY_dv*&6LD1{jk0LH3J+CM$fgeeVUZ*qU^+djMd^*sKYV&s=!GplFPK#%?5kg zB54t9BN3PPRRw8O%hm?6p=+`=z}R9-f~DmrW@yd% zUAU%S2tFRLLCn5hOlDT(h+|V;z?d&F5(SJScYT2InUSEE>@&vnBrBs8WK#AcVZX_%oYn8fwLk=_-#9rSCFg>OPd~SEO*3bDST+0%%9qHU?6!`C!?pW z*y2lMFo$5T8MRU+y{o_geA5+-CY@vCR9p@X}WZC;8`9@QE8*}2X1zGd&sa$W^*)3R_$xHkdlFAl9OasPPA_HtwS_q|z0Xck7E^WBiPKbGWI1iPW%2tn_vY^1EUW}zFD3Df#gN@k_ z&)sk_PBq!j%yL|0TfK^)H9iaWAVaF;bW+R1dws7cYkHgc(guwtdQ7makq$yE@n3Lp zwausm?@-|LTxd?Xr5D2lL<`dSjZqWah>SvSRC@M^Q5->J9es1p?LuD1;ets9(U^FZ zIUJjoOb*ddKd6jOFpf9=_+R~tqrcSv&81dfVl`X_!<=wHon>p})5yH4bR%mTeG$D< zp&*);54P}HmuL$v9Tu?Ud3x$nVikdF^iKJpl=y9pGYBY)+W>k-3>hnQv~_UR@H?|GJC3=)XxH_?CgVLg{udk@j`WJ*3qQ)% z;*a`ezo?(nvvta+^aIDlJlbG54h~Lyj7Ev#W=9YKDx>O?SI8^O2&AN^7l8|zSL0){ ze{o;*KBw$&Y7x>OdUpdJO!VqrQBDPGuZ|TQJzLs|rE*r|)!Jmqs~sl--nXY0!DMB* z8k+uF1IrOxr;RmjX46<+nU`_%pb@$MECqZJwqM?KB}2P~ygIH;uOtvqKe z*r|~R?om<3k zb|;|~VY3(0k*PJK+eAh*svZ5||L+f;d))?zMzQ99pU3KT*Kf3h+6T~M*d!mULF@cM zf`m?0Av&CcliMt33do+ay4qprtjQQc{&sqPZu%uFQw2rEhJ$lHt>t7g=kr&U(XGad zl~u2WF{?RK+nT~YmlL{S?Tva&u5$~AMMQ|*MyJ+wk2krC=23DFJhMd_)9xXl?NuI+ zMJXNO)_<3WvZw~@%<_^&Q|Q>>nf?_vRHI6NUN~3)*tl>2u^`mue7~>{V4O)Y)^g6p zDah&5jU360E`2e8|RkM%CB*Ehe%&zpt2_ z=50H>rml{}xG+^JoY*mXw@^G?8q@dI?Q)P1PP>Wux4*7~!?h{*+2YhF89;Sv0DXC3D$NFJ>WnZS_wbq>@< z2YYkpg~kSgtr{aBj+jRlqAi5XL*hd+VG`SlT!UMQ;dX^FSIiAq5x_5JuKQ#O3l-ap zX?mRfA`<~zwwGIxtmxv}vf7pIoz7pom;eZ}EF4ne(E18np|bHM1GdG{j^G!-1LxeU z^v&V*q6yE+8#TZiH@31Y zU#NmI-&+|BbD@TZ$}I0(L^TI*cmI4Y#}{)RRN#Y)>r%sAuGU ziq;JO(futlY$!WYbleQdt0%Z3wM`F%7`vnzr|CDg2hVT>XM*I=V>l-h{TTdWi>`NF z5L-mYhLrheX^EKadRTH#s>T5534LRDF0xfHZxh^OafxKX{MWij#uMbLcm--bR_VGy z1hHZKr5Pki7(Uxwdt)8IeeL2-Sy3xXspPgPUVD6g%9dq!jGTxoj)a&Fwr77`ZY}G7 zMV|ZO7ysZ$-lzfcIhy9##y9Y!4)1HIypCP9t*t5O9j?Ujcuv*{z)yI&lkt)~wwG@oQ+ju%c+}o#i}>HMhT>E8hU^7Haw3}I04ltR z!Unj%K}Dbhnt$taAbB36WAy}6&dL`~_qo%WX0#49vT<_Eh^-@2LbKeu9$XWrS?EO_G}hfdczL~eOpyxs^Qo<81858sPtO7!?Sc-f13PRTibSy zbi^5!;!^1RiiP23$p38NjpeE4@d_Vv3??fQ*WH!G#WjJSjkXDuRrHm$V#c^EyecLY z5iW@-GSzEoY|-<{Dp)(l%Fl-R-`!I=^l=gdhQ|J!5Xz)yf<#2fzOZXzixfOqZ!tca=p=p=Ec=z z!x{+Y_(C#LFep_`n{!0l%oKwu*P1%Mt=`ItX8Dcd;(pu)W@C0oJMG z3Ys=^@-a@u?B-*s$7dvHqF0%R)`49Cis0<3Pu30lwqFfT@zVVZ^;ms*`QDk_)tnGy zO;FR1&!>cBuy`3)D5>KZG3*x<+@8?*Y~l<@tjA7-w%DIEf(}9uJlAtZ`wXs_ULKt&PpXa4?K+AIfZExA$IK`}R<=#GTBmt_-(!t!YqcE?(L&SPT}nvum#P zm^Q24-|GEdw*lV#%2$p)^!I+_^X;nr-K@6^4+Zk|QgOW%jiB-BEpk8_`3gmMYOCz} zT8)-^AOT0fGbPu!d*RNh&DLuEa5`OSZ@Az#pPA-A7xO8rW1H3rG+HFhkL>Shc<#$9 zr*l2P8oDnQax$ys3X}stQ`ZCf$o`I$1I%(%l;A*TLb^)b3^0!hbiSa?g^6LE8A_0h z+qt)Bn>?gr)F^nyXq|sc>{|ts>V;F`v1Z;m4- z8>~c%!1)$1ku)EKfYNX{;bV}KR-DP{+l;a+P1G&e<>9%n{Mna}UXN|PE(64^*RGyX zH~bk*X!rS9HSs*VIODK138pS!jM5(;4izr@nV7$*Y?c+o172vC-N%hDfB(;FhLKpukgp^OZyD@ z(PbgbjUt)oKho%;6CX zYe@eFFlVr#-u4$8;lnndS7bi71k1S@K;H}UVDz@FxU(D(&u>y_mZy=I*v@z?@v>xG z!&_s*V7Z?42H3qSOxVf#`sNYK5PeR%8USFX&y3VuN8aVa~a&1>!)% za)XgoOdVr3B&DNX3a`uiy&(gcP^gvcCB4u7&bBA?-YSd6g7NIn@-s=@%xc~%Oh3m4e%o={ z?B*f6UFU)JI8*v>y#S#n%}ai|rG6_`zh!A-lBsqBEu;7O5}80arXW}VoIlr-ytlng zqwQ<147ez#uBAgLFeK_Ff*I7BS6rY)mrQTFPxb$W7e}~fLp3oRONxq1Aai;ZAZ%GN z!pxVp44YDY0JvM*D1aNzaUa3~rK#~_-1OBuceUSqp+Ndjz2it-ZU5P?{O^B$^m^^; zbsHdV-}=V4KKJkw@A#B{_UrI)q!FR{t-lySACIBMAqg?uaIrKEldVBu5BK=^Lc!!I zI|`r%rPf%?b?zwwQt)Z2Wn;Zi7&Nf3E89KlrrbH7a_ViSX8>WFA4H99XE>1Aq~#C~ zcC_I@QF{=uh;PrdEID}2Y?W|U4DH%d>|qzCZ7uemj8u_)>djk^^!Po_H3x@mkPwm= z$^CC)1ptPk7|syd>n^{HE_a7kU0JLskwLgfCS;-`e3sP#p`ti2X|@m+eE*0tr3*aS z$Oo9nEAPe#hpga@NzRD23kSkP`C@``;+W&u)V>k|=dbk6R83KMJ?>m%YTc!>==re@ zgt}Tzza>hQjAvt+p2^XRx6huFH*kAH28dgmihtg$R$sM|6kBU`p`j38U?gM6g-lwU zXJA=aIiLsrm9x3xbW4WitJ?!IGVmO8hRu>yGaB^-TlM5{Ajc39+1b&Ms(sx91$56B z7+ilvN<-N7RZH8NZX z3ymBHS;#$EY6Hhv5*IW|8+YW1FBSAuW9hHY9J*fceL&u1F|T=ym^`?wh%KRv){l-E zQ!;5_j8mX1)uXyr$rPc7iwRaQ29z&3^bQ4E`GmZ|+Z#5(ySI*RUV7xQXZ7GeU3gEp zWa!gGRYT2u$$>^&v=>ZTw)KfARKj?(uPCOst5^N58Wh4fj4I2AH69KJT<|Aa&2Gs~ zWz3Fa?SkA^h-MoL47rNl@*UQ0-Vs3Ge@hKK_B`}buO+gTmC=2#J)OH}s<7hiC+{6t z0Rr!s>?)v#tZVOhv_=Ze;o3xgC zd4yqe6@_iA4E_$yy?Ku_xKdVV9qe9pm}i$ex)J5YF0FgT?DgmYVJevjoei9?vq5So zfedI~%QdPCSxjIUxBw%M0V?AGr`F7avS_1rVNL26i>#0cH=XD)?IUOOjt^3o0rS9_ zEe8j%9iTrwm4_51=n;=C=}`e`C6@@X-hb3b)%4Jy^kQLR$@!EdbF$1Wha^xg?a}$! zWd#lm0< z;%e3*S+-MBlQ1`oJ}^Q};8{MCxkhJcba&M;9YQalYlrFnT}YhK2Pkveq^{ zk3v;bg_gi`e0YB#_q8B-sBC?T&Q2A>wmt@_OBHO46>!K9kPGIEW1{#_Rl2Hav@Z*< zjqITBE=EAu(GYSBp>@rdISSD0(GY8jqHF#RC^OiCpgqm2SskOx5*lAS%g=Q>Z_^tN zz4`VN8{p~fqob`Wk3OrJ)$ir5fl-Vqss!NhW_bylP3Mzt^bF3j7RcxJT0_|_G@TBDhDgV(9a zB{IWkp8n^yppbcVnH3|JKZeYSbN(ACQ6)W8zGc4Q+RE)c8Aq_N3kAdF>XFX1lZ3Ql zTU&{@PLK7yZYloOu~o@g8yBj^?{)m!E6{d&9=t$=(Vlx$vtWFh<4Q zB#v9L&j~#lqdQ?x2oi1ZBshAl--m3El$=#%@*%V}Th=R{D~Nvt8$@c2_m+Gbt_#s9 zT%vS+<&>NS6QX|=UUW#uhs)cYk{3UjMFPSqMc%=ZCSk&m0kC3frY!}(&>6vdHkH_x zm9~NA#%3{zV@+FnfrJixY@|bYE_k}F0g65~*q*&-L>*lI$5UGg0h|^2vN+~vnmaS+lP2 zLcuw_n1=1^AiX|kg2T~{?+ZioGOqfF&Ma)1fvbifrI0pI8KCiVwN^O(uX`F zKjrPG@_@LV>P_>6f2w%kDV8J8<|ebti8dcjkHNQ32LE!;WKC-$Ws<~M&e6}$YAr(XfsFT7daRHxe z!37@USj+tWR*%Z^i9<{%Dtgp&MrR4bOk}rk$_*5?0V{ksx%oWNTV4?AN}Ro+ri^}s zky={6%vh}zh=>|HgMw-b7iye=oufk5b06Mu5$o#cV~+GUpTN17pYrxo8z63{w{IV5 zDEg=PNK0Quz*7_LBeFN_6=KeVvU*kqV{ywm)R{|1qr$L{drJddn{_l4+cAs-X!AG? z@v0o2iHXCAIMdN~m1y4N$vm`mb~NtSE~zUGV6}D-k{m#RZ0#{=NSqGLP?>*@JnLbf zAD25S$3Ai6ItO$uwB-iX1u&(7slrnZdP748)cE`AJ>i67Uq6kZQ}B+nZv5xSig9`9{5J{uycMm5p)cN|Whv^5E+yFM2nEP45lS zb32i3$L_&F&#fTp1O^LhrO$fc00XTDWJ5)OXkaas4jMB)@$EgBoJ-9*yc6MvN36{d z^O8m8e^A7SCqzoG9<3Ve@ck7|xwAdTq3dek7Mv8AoO|CidF_~39tAH1VrQ}ea?St; z!zfEk+W|4qV{vk^Llq(EHC}$WZn|aiE`bPd(p~ zLg}Jyy`e%`R#c(A2KEuY5ZwheJ;Kji(Jasdl+(GNE(xY{9B_^yT}J z$D|Batju{a+OSe$i%nP{)|zw!C%wRu8V%*cfvtHkk@dhX7T(v~hv!K-1GSF0b9{Do zdiqlp9Y1_~Qwt#`qaXNLhP4ciyKu!@_9Eh)3F+n*Oz=|3w#`(g zjJcW}zyIF|Z^pI_Qpy`H@@?5NSH|QGF0B2OQYFy5Pr?0l8J`b(0 zAtEs`PwxY_u1Q0|@w)Crnz#|Y_Sa9=-r@i_+I=t@pA!KGa;9MVrL7@1Kf!R$#&d2x z0_=jc0ptw8DR_IJ;A6QVF8G1sbm%OBH#sT;*Rw(=8*u_K3x?tMhg%Bt*RtEQ7TrC? z8%K}_F1<5D?qOveC9it3)Q5iTXXod~&&Zp6d(#aNxADC@&*(UXGag@06Ak1TsrF!H;V=5TAK~AbVgv1 z9N-a~EIDSz0^R7z!TvNQj^w>``R3$R*O?s z&KG*%_w@i{vaZ!iwpFO2reghqVQ{rDtrIGGVT~kIscKVbO|Ceahi>>7Ed&4#2UO3E zQM2-#h&Ubk0GRf=>z4qCf@qEtnD56$iXlzNvB{x9^=%!3ta0L6<`N5gIrrY7pmYWQ-K(@Wd6Bvk(z5^#@=W_#rA+ zT!bhxpg?Q%F%$QkOcp%deNH0^<=TQzN}bPFzKJRs>n23D;pR>A`Sat`r{pcX74jC} zmecW#{%BimEMCw0aeQHK;z!?{$n@TGd%`%;G-q0dM$Hud)}+EkczEE0x7st0b~IwdZ5fjT{VXQ^8A|UdU{GW@C-9@?xp%ymkm(r_O|V z94I$vsUh)HT3b(#848XnK*G1RF~%i47UyPsw3WM2mV7LJ{)=zD$bxD%Z)}!D4dKqk zoTP-L7u2Qg0mCHr4`UeXY~FIJ5POC}Xx-L}?`(=DKts3+ZyO48R3$5H0xq%>(vZi8 zD|$v1{T^Q*AH$$7Y!WS=J->hQU&~v3drLiFzMbE@{fv5xQwASvNlR5EioV5 z+8UXxwJ_Uwm=&LuHsIMpHlE9*evRsn zVkfp(_b}5KXsf{>*S4*ObaFA#;-b;^*-F2kGZ(vix{w*MznXaUfC)vc%-FPjj=!FOi3u0#2(Ak z*ZW!TnA-tb)4FC60l-`6Co;nB;5jf- zW1>S-a4=ly>#3*IJQ2ki_<&oLscOwuk?Q(ty#MU>EBBt0pV93t55b$a#bo@IYHROH zF{DrGkNZY#%Hh!%Cbn`la)S|Z!z3OmEmU)WrpQhB!o`8CD0t<3DS!FWYx1=hUX*XW z_^N#GmAmrdofG-NYxm`q<6}8FJCn2XiB_0Pt@><`2<#7W%n-%PVsfsYLOo(I5%Q4d zJ8+g(zUj*PWP0#AtqsE~9HAnjq&wcoUWE-Lt9u z#dm*zku=J)!D+#x-PR@LLNpmt3)Z1OGs4V7JAtGmN`(YmXYz zKlBQQoa z#6SB#z9awd|NeiWw)MmNTWp&kU3YwEq40GA_rWe1_&lI zd%}7!PBiDkj=9}okKK?_Uva!%BNNQsh_Hg4s3Go+O0KJ2MCj%Sb3>>~OlvbxiiQKX zT-H{sr1ooVnLd4b`^{;uy^-6`)C1<*d^|qwSC_xg6phBD^l|P9iAJtOWk|0hmh4+k zc@1PkC#7ySh@E0!Fr|c}(bS95IBW=^nF5b=m*SJjLegu;r}FEE`?9;WC&Agq97RM9 zsD_sZ#wlVcCR5DNODfcggZK#&B=y2`J@NLH8S?)}jqld+L`H+Yyry~F6m!m6VNW#o z!pt+?(V|6YTydD{Sc?aAF0gozgX8LPukH*fvVKX6DtxZa~a>uT3+cL>VrQ9qgPVPjG*7(2_SRxC;JlqKaN;~(3Bq}4|{hdM8 zRgDfS7ch1TSYw%789}V|IBqcWJ76aRVVV0^a5_>+LjoYJQG&p7U1F6&LDtV-y*ifn zJ#oO@zgRM@z@i#gl(S{k3`&S0iZ`xD+@!98Z zoxiEAwKsbEnN-0)?so6iOP|va_G{|>j*QxAi|xz-6+`5g{5sDJ( z&6G9@=~x+;JBu+;DxdujKBsjvu4va_@8D5xz@$JAsnRP8(WQA*&_Zj4JZdcrYBk1% zLNv?CvDDKu4PSHP5GE6853Ow}Lh=Bwh6zCM?#Lug)(NuV@{*k#wF6e9P#M5UKt6js zRXlFgK6sY|pcSCpP<>ML0VW~=h9V=DI*F@2BtgXBIla>(FAT+XF zU=7AVaYV?x*&O!CbpEx2e)zTLZ{7R38Xs;ycLT%?bguK)UVT!-$g^n!mdPqpokT{6 zYc0C89-zq!b;wr9d+oxS8r4Z8?;9Z*eOTnaiIOJP%ByQ@ zy+OR4GA7afHdDYEVnr|B8*A}lM!Kz@ZlIwX!~)xaY}nyMt6E5(^f3oAC^`0koyyvx zd-i|-s~=qZ^39_oc^ll`76zDa$9G3yd)|dD!4}uz2916&?AiNo zZMOib@xnf1%y#!{#e&%E>5^Mc1$wD1;RNQ-#?+&zb*0h6KPeimb81FqmgSd-2=1&(zymZi(vI0RF@rcENGi)#sa? z>dAlem$%-Q#)sS6)&OzC=;!gPKX|Iw7Eh{8eIe(D)P;9rG~MaYd5um1E1F?h%4Y*Q zrLQV@NUPIfX=_lEaj5JItWETe2U{BY)cDjGvBq_v1~=N$%Cl1At5CEIxkC+GguoWX zu3_j5V!0vS+kFMQ%X|U+(1laD=jM{`WYszFyUI28uz~^&YyJlfZS`!U$_AexXM#yO z=;Q#-!9?3DXEUv^3oe7)8x)*^(R}d6WHEp8=F#2He(}c9Pd&HsR^Hy$2AFRem5=Vf z`h%yMIzFi<^9y;{x*L0J>yEI@G}hIqohg5*fnAyoMU!mP^aJ zk<=+Uu~bY_4dUJ!TFc%@g8qvy7@q!uUx{!}LFyG}C7fU@-m!tOq!HmW_L$5|Z;&pA zT$3O^2%v^GnNy+|jAroh>O8ZOoO9^aKEm&SM%Zx97dkE{)5VQd5kK(u!~J~30GhdTl0RhNzNOc z9s}pK3zZXAA%V8C)m-Qc`|!Bf;RM@^X*!F`pc|jdHO;@k z3Kn$uA;b@pE7ntNsgl=D#%i1cdQ3n+P?23W&1sQ}XK&rT_vD{_{pb__-#`BP4fzGU zz3r;tH*$j^>OW86`^OL8^OPFQXVeg{XPI2ghjayua}4pToqk`kAQ9+ZP%I4;=E<9X z!Wy_1>GYekN1}JltZ1lUwI-3qEdu%{sQq&h4-7Nd@O@tYWkXpCR%6|3>jIX+a#_gW zLc4`SPs=1D?!{{vq959AScK^7+*sB1m)g30?)xvl^0v*R zHUQ{7j_MS?u+twr_wA#%2Y~!$-F|5dFyC%}``btQ&u8)V_~HAmskvO&6Zk0&o!2?v z%MnkbEEzMo;fao%VfMT&*xa(n8agp8$F|EYGqIM7y|}2SW*9!cZ%%0~NaVSv3xAW% zgD76FH%l33Rr5ftfVZ{6g*a!`@7>TU_fN~Vxbgh0AKduCE%~Lq{n8oW=Iz$ecQHVX zug^X5$l;+H(Y4)v_;kODA5%NHCXMj`xmN>)ND$v>6xMowF^9=@x}1l$=^cIi6a-lq z;w#!FGqD;UfZu?OGBL+=ZrZL&c6RrX{{Bmv5!{^5i!Yv@e(x7PyuO~>FSP+~-T>w3 zKS%dPzWD!o>6ZM<-}}VA2EuEa#9h}D|1mX-L$!=+%=aX%J)MXZ8vLCtfyucb>06uu zZv5wl;_F<+5QEFWu?1`#M!oe+$qKE;n;L$005u}1^@s6i_d2*00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP#piSU`ywB=$lou1;uD`ZLI0&CEug=m%@Nx%Cak0U zdIuBAQ6>-&92s$es6b$RjC@A3S2X(_ul7C8wd3$T`m@jY&Ha9YKZ78jDwoU0@tN$ZiYmTUo^XudMcl@VWZ2!~|Ad9jE=4kKXzX$l^g8!RMKALf= zLEO)d%{L=F``!98vF-Qm6R8oNeeWM{_hIMyuhu_v?Zs}l`#697$WI$*{HY*7=yNSAqTAujw-`jhixU5+}rtjr{&;NF7;Up2t1cb~`kn9nd* ze2jhy+N+uXjoa}gKFE_Z;ZLAVY<_a{Viqm`J(`_|<`a({>l2PoNIvJwpM&NTl>KhR zW^E9GT60!7Im`MubH|5y92V(S+Fq3e_>qr%1p3^^`Ry^AygV`Fxy~R1Vo)1Iq&}z1 z6Wbt8=!<2uhOc$aLHBIe^+mpaZ~nQi-^Ut_#>0<1^2j2+%G#@n06}=X>OamCa}1w- zZinXdrOY|Lo@Jsr4~+~GuW1MTeH`InbVmA<5vIX3eLV-ibKgFp4AL!qZtQ<&-<#;Q z=Ne=b`Ooi(=*Mcc+N+8qzA6ZiA(VwmrSgZcX6-u+I*83C%vbc$^4!Na0;~<1RBPzF zFN6gG1YrfBMT!MZDe-GRAwV1#^Y39C$cXyl*;<~{4f@`1d0f$dra|1%7uz7jR;%@@ z;E1ni0)%nFUWt$MfIpb$7K7do0)q#MT%S1exLsn+29$6#5E{M%p+)^36@rinv_RY2 zJ2WypL_w*{=NBB4jQ8km`Flb$wZU)x{pPu!ac}$1a7FZ!*Gp|t^6O(fey?ake8m#r z$3FJ45AdKq#BbrTNCwpm3m^FPjS0W`x|+|CY*OtnZxlrRh>A=b>#M8OX}77{+@+}3 zrB16&qoX6VwYk9uvhEqHPB=6^AzX2kUyGHBybsZV^iLwjQ(YCrlHOx}feav`$knqaKu*>0e<+y zAO1Ltm51_Hs13AlK;*@2Ugz?E%YXJkXtZ`?mo}EK(xnUMsJXjEVXsY-<6}&C6`GtF zrQxAbzJ4r&1zoVlgxK#z)NZ$^$9=S!aCe(K)MYLiMFBOM9g2b?m1?6jd+-oV%*|7| zQsrZ#J&VDfC4cY!{a(u=&U5&@erXcJR|(iN^w2;3r~mX}dWE!C1OdXxV5j`&c#!TG zq_g?D&LEC}mdE<81-l3lvG{CvTGZIuqSY%`=<3BqA-thVkq+#eqp9gB=6nUw^)|Qp z`=KG?`=cV?N0Gm0gGj`5pAC`ioo(tc;epe2I&H!@9@9(tx~*Vat5t@ z|JZyiUWNeiuK)s#sJXRGr@r$P)mN|3_)vuovZx(p2xWR^lErDCCfI`QFp&_8$5yi? z=e4>W+S%D>L(emmV zEnd3Jx?qLA_4M~>b)!Lr;R$-}o9_|P4jnUZK=~5E51Pmmo%V@CU%t$L3pO}Dw=#~FxA1&U=TF2Scty@9Jr4%L)$`}*xu^b; z`mJqRIJA%EnJbO6k#TT-mbu_CO)>G6nAjm&tJMlkOirk-$a9PD+YGh88_ zWNKy)*Z0T4o-NK{iTUTx2R7I^CB|G34%CmK{_wHyzW@IFpZMxmzq&*(V|!US;733D zQG`i7b}d)fpf(6LK@*Yc^dJ8>{DZiGQzB;F>-5u4(Qq*$pdm986SQw;iai!RDl@Un z&aidLVz*o^vjNd%&est!)nU%Z9D(}?#Ih|FE3^Y~%bk?VMdpH4xi-Wva6<8ruu(G3 z{j&{Me1g4y|plC|+8oi&vNF>rXvHjc$oliJ3gikXOP7 z!4*D4V@-4%_-)}9HMnxC4WG3HK{Qb_YN)69j2<(y%DEfq^Vv7v}! zcs9hN#(fV}t70e=im`CaQ6?&IyAoTq5T#}2f)it-e10gp-V_@%Q%r;h4;B}c?*5@D_?nnUWWFv5FqP(ALo~cOg#9yU50xF!9cOOb_O7^LzzfIKKrn%X17P-?jH#N@0P^KZ~TI0-Vir{?w9{L&dI?N6@SIGTT_&3(d zgy<@jk`NjQaRd+wUt)}j2O=4IU$tCfLKY_#dtn4{p zqlWunE;&4+7WP>Nz^hDz1$OO0T%!4$4Q&u?lQ+2R)sGM&%ECI=!c+A<9lP&mnF#;v zr6th0O@WcB$2cCD72$H#50EmPQGD|ehNS0=I}2lrFJR%w;r zPckROIf|H9K}&`eg=uaZ@vC8)(MGq!k3f?Us3{OjPDQm!QPkG z(+rccmS2VbU<`8X+p&8f2Y|E;Fz;Nw#GHzWin-0y#0XVOip>>E1p%Rrcwl*gC_r4e zMy;Yo1@yOaxg`*Vp9O)vH%o6c5Y2+4v07mlNV47cxfK_(l2N{jTTb z0&q#cigV)%Ld8PnbC2D3?|lnj``XtYr0%%ut{QW>YNae-GxWiTIcJRt1;z*#l<0=l8daD;yPd9x`2u@R0Dj{dAjp`B4%h0j zb&Saeu87bsh~R0qzArCb5%IjXwoVlWzzZHuXk+Dnww700bgW$*BRTz850tTqjUy&w zoi_^gH~#<8`|rDdf;r(A=p|?`2?2umm{1Vi3^G29d*T(`BXWwp zOm3$^?X5a3UAe5Hjm2NJjAKE3HQHv^o8Wlet`HvxM=VC}yTb27vQQ}%TOuZzsA^2e z$^i?^0V^Upi!8d8@R*yHStM77#LXt0k59&L0f+!LQNdJ>P^@ct4tbnd7Jx7>XL2-l zc4&E{E|E7u$oeB+H*ol!FAWSAlwO>lI*D5}Li8j@Xp1zCGt3|e?3h4~u`!ki9{Vkh z@45Hhdx<&Wi!P2|bOMC6%P$Y*k$m56gl3%3nopQ{1v~%hgR=?l#l+WKU!k+7PqXz} z6N6*8#zqJKA!q=TFSE}7!GN$n@O|jG0yvuZOF?Mhbj%Gw+$9#T(A_{}MJB8&b3Jgk zu%OW|AroVfMK7=(EQ+uK;wuXGLtn(64_LwNRwD_=ip)C$?$}rEh-Zgk(_m<)&Wokf zVD}y`n4nn22$6yGIL_1>Td*t=#XioIJF(TYGRQP0*Meq5uXPDU9P@`yOYD|of zBI{_l4*G4ky8^jHy@>I>jsmmX4-69McDPk=N{DQ5Sxi<@bTk&F#ex_t;4mQ*mgsuS z{X*!C?C%Z2g3c9)1D3AoTlgF}0%um&V9>X~ zVW5wRn=RHrf|h{CAroYWeZne^qo~J3riMX5CNUB*9>i)yKo^s@;A}_*5I0{S#IE`O zAZo6#V*TaF74|{PTWop1q`mj8W3(veCi4Bg_PY^e;Bd0$&L*ucU6z3ZN9(h}QD$O- z)rlOAE)s^A>$F+SwwV(~$^FG*z(DVdB)O<4*MS?Z$Haq7HxO$e*VjeTcicB}9K0_E zOazO7eZG9{Zqu2Qq3V+o{l)$8Jprx}{f&tlzYEyx^i7*|CFnr7&7s2w7^H@g)e&fE zoAukiSnJ^)IL5}@zOzVZ8Ams6CYAKK?D*!rON06~!bW5Fg)dh{6<>?3Tj+nVMBCkth~1E}LCgr?kQN&&I#CJ|%RM+n9=cg5i>D~Z;!l&5 z`qYz9ClX?8HMSTAYO$#5NJu{{@Gkco@iilcf4DmP4F2Z@{ z;sqh-m^M~d1WczKEF~f}3^L;=lE#Vj(33RDJODXx+TEaFhm5Wnr`{K+5-LbS^nJ8m zuYa6gV0%F#_}6~z*FL~658?fwuqoe|@K+j|KUj9G|DC_${Ql%sMuBMg@+Erasc(r0 z1yPlln8cmNgFnI`GC4vwZU9{m#zg4)9v-Smps9eBnq8HU~r)J-<9;51fZoe9$=0#(gV!5TI(D(ZK3_f1=X!Z}s(6o~SPE zHX0%xwFP34LhtMKlu)`ZG~M(pfnMN_gNW`r_f-^UI5WGV#0`h{;8-HE!Bs?LE75hq zMIr7Ag#^X`F$+h77>-r+bwnT2yTf;qQw+Z_7DF*56oHjsutZ9b;GQFlWlHKN|Gv$f zo`kbSi3h{()yACybIqj@LpBE(4Ory@fcGO&3w%@}8EYM63LF%pzfoe$_nGf?;9IsU$#W#@O`jo9%7CQaSpvv zt<^Y*a503zIGis@Y;5gVg>009{l#s%c|S^Xkkf#iIMu(sdEj#=_~<{PAG7^f1o*4J z`m2!r3(13dH>+&5$DZ5`N=3APoHbF@d4d{S+bXI=ob<`^Z!zKGac~>} z91N~CA)KO$Sa%U2FnC53E9_|+B}L9n))Ou#_b&vbfBiTVy${l<$Y6AtJt3-_>4Fmr z6a)>CE*N5oj0J*Vp}663!Z1}oii{-!XEYB?O^!s)z_#{H{@>p*b05pi~8Wi-kL3LctNi?VxXgKZPzR01yhY z+W<04;3+xRVCdi$a6Dloq2oxJgbuD27M;c3H%P(}Dsx`okZm@EgbR1oGLHLdd=x{S z@M@(ZIvzwRV`>t0jYsdoK!JV<1Q4RzjTIKi=;*NKpz!l9v#%ILEUve{BaA@ZZoX(t z^ft#O0Xu~%m(#_an~%i!b9iAKP*x`=m&EUMNz(}xq9KUlqx2)TADIAmcXz)m6W~@w zv^T#Xqr3S)^tB9*YZ)l^KK}|4AsJ~*Jjh0ae;0uUVL`nW&~J8jcSQG7xJLDvlDW#9 zcvt->7H%W@oP&4zV)>B}UyE@@! zC5BO<=tQ9Ed-wp43dLapFt>`_iNsM|*Bd+IVx}Lus2dQe9OK44 zan-qVGSNmhAKrK;oX|zu1eC)KoqJRC>mc}T`VrfYM1bt=cz`EuA=7~;R_$g786;?a z5h0(;q50-`Uwxn8YCJ%lc26d@U!Kqd0{7<0h~=|^bKn*d?y@B@6@*B>%?QLwiLpRYsYF+F?DyX1UMnCLK` z?jqmu=X!lpUJ(w}?Q}GV6vwcI3+%5_tvH{oLK1xd!Qg0oY~NX@eF3X`GHFG#e&Z;K zT!BFX(cN{JUZ1@zJtpv&`)D?HgyZS=JprSs?|^5G09Ar=u!Ru0^C!n{=ppjE{m2o2 zL5NiiY8?;FJ?RQIh$JR(zU|Gr2JE{!Gnw&@vZ@aSZVd5kh`cdZ9Hrb)&(BMxbo{NE zg$>u922u?0DaYbcgeZRA0QK`GKqQZoGd#?K9h5fd8xLrfATvmpGh*{aIMH4|aH2;# zcNdHba3qCVy22rhFvS{bNs;myQ`XIvM-+sEIf`i0+w&qohx5G0_fX&!lVJnkb3`LF4R=aKYd+M?11>kfo$RrP)SxlOC*OwAbjZ+IK9)FsZPGs z^2Im#y1Mg*Bx-;h-}e|u|H0>r4L&ad^a}?0oXWRy^A@phjQGT4=lSQ`Z@w5v`hmO3 zMU2Q5U@ode z#J9Vu_(RNSuqx}1>{rDDjcyO#zi1_9)_dIRHHQI*K(4j1fC;0viv#PFM6V z!5Tq?J&Dhk=p1mnp5T9glv<=VLm`Q{F>4u|v{otUg5v9ruy+J$pZ%zpAvPcGN?NQC zi5Mq++o>r#&i+_ifNmUTgMfWx!#HWeETSlhA@m!5FI6fZrytUOU@!u>AK%~~+70`} z;47@Y=*;U8zEYeg&U~Nw^I``T$ajL5S$Q$|f!FEsh4WG>BkJqQtV(s#P-6UQ@;(r2 zO&s(5JGdTnHTYn03?>qhGr$l{7c9dYL4gpgMZ`c%3P+bH8LbJeQ6@@=ZMKBlt)_@+ zPzeGNG=z(U^Fd$T-rQo*xy2l;C9!_HTU%mDudQAcqXH@gCKBQP=pP1@L{D>H2qUZS zH0b=LB`Nz>8=IiX`MHe5$g4Mg1bJRPvSvVfp1Jr|a7u)xhI@G6fIyQRI2!tG5 z)M=@2?nq4*5EB%15Ehm`L>7#OE@Oh-qWX++3<6KF)B#Kfffw!%3qkThhJ?F8ytZ5F zp+I_Ox7(CSz+wW?NoE}rdcUiL0^)8lQNdf%Z8szZU~9WUn_G2SU0bE4r6n2}8Ku#o z5#hw6qhkW17b`V|eHhzZSzV#Y$%(|%BFRm>dSD65v-2O)K`95F*fWFwvHKDgj<`cVlG+>bkZk9C+Y2&7jbT^9W~Ly%|* zX6Lc-yl&^;w4Eyt9IAx}t1@sR#1sv26FGPRfHFKHCTW}4JxLPl8*)Eh*35S-s(ZddhoMCwH#dR(I*(b>K3 zE=}?|Ya7o>zg-6v2@i55*EI4brobZ{8?$5%qG%6c<$dh_d|ivtWUfOF(57HdAE^}` z0GwX9R^_d05+L8?Lq0pVmEh|dLYr|~cf?5w^qPOt=~oq*=qOEYf$Fm|;mn(eH>M zqwvBA8vrxYQ#3I=%%Z(a(in?FP|LV&E_@dDU4H>Y7+&}SP>?qib)vm?%<*dVpNqXue%j2fXK=d*Iib7^Iu|4`;Dru|xh1vrBZh9I@p^v%U9IEbX|!InM*< z^709EhdI^BXTHk>7)k_->WO`+S}=l=8wHJg={YD!ay_^YL`{Q0U`bX4>ZpmOjF5eB z7UW;7t!+pU=r;S4cbFL0Sv11)0&p5Z11RYc6k@S_@qTD@ockFOU2$i7lP<7sdSz*u z*0*-(EbDDMyKUOHZy#H-%*nP}bYW$k4G_gHv4BsVK23Ed)bWW)Q6E4|5X~Y10`*5f zduEZAS2t*g_1b^*_x?65jMk{b>c$l|jC^A7u|J<1`CQLer+l@@H%gR?rp5{7)FNv# zpU!nBc{1@{?-;*7djEa*efr5KpKLuZ0%Vr?0H64PzXJS+%gg*E^U6I`!KER}v0*Ui zhBAhS+=v-3E`K+0yf04tt$zLEg6LdNf9EL?fo0%;krKo(iUw86vSJG^@))LUQN&qa zJRTspsmWv zNZn)=piIwv?>ltl`Xe;NB6^aE5sSIcoEVbe+~up(WLMx{|GB?LNA~Tf4etB&g^RQi z7bRFV@Qg!$&V1&PEbL$}SZ&7`RAVkoIfwRIxq~=mUPbffx5~`n>NmdrjXjam*Al_+ z@%4jz@MvD~?Ms-t0=$JFyB&fiX77!Jv8WLL#?jQ;qy$1qh+KfzP=IIb*)hcvG|Zf* z!%F`S6IHFO?yF9(B*q6U+rR~-qT;DS5Ct(>P!sydp+my4E?&MumzKXx-+A^qYP8sZ z8K0re%_hD5E%(s;)Fdsiv9WmW0$pBSrj4y#fq0O4SCPtED77{roI=Wc!1KZPJvn=b z2{58tZwiHzF0Jp-o9=oGef{JT`|t|% ztmmFOK~*N&@$m_^W_Og!F~I{MM&i)y)Qnid=*Gzr8s}%4nHZ%*2j(QX3AL!pMVHVnS#`_-`97gT z9@)Q-x;xtxLT9W^&{{(aX$DTe%M(>rWZInUbp{ycvt6MQE|!~9<&Ar3!k@ya= zw}t!fyZhR12{&;rG^Ng81y`_|XLMo2sV`TO5Uwc{@ zfnW~KPg4yZoC61GqK(MszKlfy>H}$7K%>!+>aKIMGqUZ2M9eV3PcrAdv>Qu>g+h)Y z_(YL02xHIt;Q`Vq1Qxr9qC$p{)ZOP1nJ>;M$cX5?9_iB$8&(fc&KTK4fPCP)Wb(rw zUVYx%g-1U71#^5;+~;r>CIoS6zx(Vw73-R>FPzUsCgbx48w2ahmuTPoKAM>vm-4#x z?JerFjwDgZ$c_usToQ;$l(v{+t92ZOBpEMUTi;|$xGCK7$iaQIf8QZmuJ2N`?=>{d z*6HhSyOl;`hEx~>oSm7ax4-@EtOqVJBi*xDh~3_c7iie&Dv z5j4Z4#^^+)f?6JSOJyO8RS`0$I1rA;2lI&}A#5?3LlBp@>0TSnH`DLuVF*N$6}DsJPX z{)$}3MXe?sI)lDQ;6WYeLSU<|D**~e4j&SO0NiPl zEmes5TW+|4kDaGEp421Ejb=xy^qM1wX{DnO2LPr{?d zhik%tkP<3Eur4~f$o^h->I&YtvAWFIV@tRp3S0u#sj-^SZSTqkIo*x|+`u)p5T@3h z=`uIRRuI?#2Uh&WrK|iL`}iJWaW#H-b&EQV`$%F`Fc^yQ-y8QzP>P&1ON^8t$n@hg ziOg2Alm;Q^jS>I4uK$U<@4JgVBVS*%-|`OIW4<+&W_iVXI!*ku#{F`>TSeg08}o@T zc2;ieLal_iIbt)SjGPNi!`9vRjE7Z6#w8+Ug^2;jNiHw{n`AME)l`(=0xjKU@XIjk ze@NybL^gAmBW!VAf8;tEV(vM{`e3bE5TEPy*Bz$uQKUcu2i#@?*rCn!E9^SkWg=Ro zap-0xHDmxr@3L_Nh^E0}xyx2>#QJ6gKQe+9nBYbkN|~6Lq9ZroMzaTwu*YLa43(Yj zHCkW2OdHHqn=G0GV3ne2)n>E>x-ITw}i1!^SvB zXFtOYLpL7@9vEJ`@XE_n2WnA|v zn0kh9juRQ14k)$0_9E^Sx&ewa=jd2ZOgVHfmUELFv*K-g2j{kL12?1^ZKQPJ%HtnLUd zx6MR0F*ZyqYzYSrb8AD?@_b++>|+QA{@rRV(C8T{O1Vk#2;h`429$?bRP*uS5$2|v zOAIdy42(*(CPAtJKy`_N(M8wd>zjZQ0^oj8*t`&ym@sR!+hg6$E#d@m$XL6n(O{5D z7^hy2tTY>}JN9h+J>`<+E7uFy;1bL+37kREs(!LQ8Up1SkKSTu11d9 zvr>f8<4}Qb+)-AV`38#;R@O0)s9X-5_KD6UWcZLFF-L8eg(_AP!Zx2k;w}MaeNYm%#(;1yBbfl5NAp2Mhl?K-=oH0kHss* z^$Z&?OAJP1s3!ujA`K~fTkT5AV7PXM2f1&Kgd1QQ@|v{D|La8O-wb;DLEo8AjBa-M%Vnk3Vi1WFp}>!9dYy z>?q-Ev1G7Tk3i9gt5v~>ENck|DW2~F6&R7$0Hix7_b=~h&M z!{lf%f}VL;kBbk&_x#o1o9b3v$C82Me8)*67fh){sa9|dV3wWp(1j4y0{CNPZIdo9 ztxKRO`sljolvpBO$`UnGDhA>!ZlQu!Pvi7P5SZ#R(6I0@p&b+y>a;}HL;n)}%-nXD z0cFJZ!4-#~RTw=W22^7$AO!%=hkRn>8}mX&;yN%$Y>bGkI&j3s?xuQDV6-4-q!3CN zex*7ruTncO(h2NGnye%d){^gxYWicmFgi5JmN_|nZm&hV*AVdu&$n28UCwlWBOV`I z9@KaKH-FCkSVCX&S>w4$@`pXAEZu>=!!R`(G+`#nT)=-Askn(0K@**T8uAIyffiqk zb7DbqY;i3oehm}UhmR$eF2hL`h>}7-0TTu+MF7nJ!YTlsOPXvx!eTIrP~klkKzDp} zRJh!3OM?(v*haO{;(O@PPGei+3_}fOEm(yr=2|tz2LWEUTRV)u?YRAbnW#E_jk4xr zp}#>KYH5vv5aQ_g6m!QR$zVeWRcnW>SP&uWe*I3w2FoVDc9@f*dICcAnM)6iYN=mL zR;aaW0wgNMeTQi>gJ8pH|GtB?Rj*Tjv&Fx&WezOWjkhml@;aCilpm| z|NOp0p)G36TmE{Mhbjhz)L;&!$|%CIKx~K{K|(kJQIYwEV<9eMXEcEDBn=W9P4nbq zVJUd5HB*WOEztq5MU@E<5J`jKng}%od)-9mv!rp^%#b-MmINS|g6M8T0&G`UMX1S! zGa8H71OXy(y^o5lZR#L+mG7<9R&_x{Hm-oYl~9Xd@<>vW=o18DD2FYo!^Un)2mxVMeRppNG)4ai=Z{DsC)s`r z2}Tmg8mOKYn_8j-TPo`{z_9@WLzD{9G6yTMAu+^OI*2G>n50x07NYO5*vGEysG17Q z5BH6_FD34OXOlS^?xhzcv5#i`>+@^0w}^BW(m=V2V_wPz!&e8%LW1lBT-3;QSv!E zY>=$1GS^|FWtRQBlT)+QWbU=T-QV0pV+n-Y?>zOgDC5=rIEsU``AW9f|NGtP94jPPGw$ zr~blh#+t39bZ2tXK8W^UM+#mBs`xqRMS4;@LzMA;>}s}1X$?i?qd3I`L0G*gbQX7y z4T-8uwipu#heuH&Dc9B$@dP}p$&)$Utx;4`J=d&d99u>?UIBVhcCD&OM0}2TAtW?E zq9rE4dBzX1@VDw)>=I<)cqF2e=g!jbh!#Z}1^45dT4is|v(KKSkO}9tx86v@W8aRA|MbM^ug!L29GAs_xtgj)~Yq_cfIJ~bWWp^B zC&*5^3>+0)#Ebf6rD`a}N#u&$ToRn1Pa?e~I)UO*a%iug83YYSw@`fFRir?wgnRi9 z%=c1bE)+Lc=(g9~C4zz8u}9A{u-r%Y{M$1g=|U_%Vc&+x`80z7I0O# zy08n9=}|IReJ#yaaJ2(>*b1IyNM>!VPG9@>_vqUf*ey0YN$3xxi+lyyU%6`1V%sphEHU0tnyg?CfU;}AB4;C=2WVsg}97He|Jr@#u zs^ZHnm&CGG4%!k?3a*O2nk@D%FD=nkCIak?Im&?Y923^TsR_2McbI!s1RKQh4Yqo3 zJaRqVcGHb4DyuX-zmE>^!a%@m(M60ScepJT4tDvrdQ4b5LS*2~Pz@k{0kWg)NLO-A zSaslqbnxJQwwM_l=Y=%PT>mdlp3zFD@m?s#2qCi}q#1gqn@RcM)O#Z0JU2fXOV2r<2{pMZ^4I5ALfM?y?QiQyz%FG$3ve`A?d z7^D}JaP4R>`&NrLjT_XPOwU!L#;XnE9-_z!es_0E_JzYXsevfpeR1}0NjSakN`#0P zsfqw2ll4XrOF$ZJQgZm8ZV;nes!Bpr%-G`cl1x0p@Y`MVTb1YDZZyT?F*7}`+kVCB z%rCN@JU_dSZdka1#wN$9Hp-rr{Re1v-+nnxbt)~Ej(&?0KiH7$y1tYERv;^K&ncBx zoy)F|ybp$K4jnou05$akN!$F+h0C&`jnDODo}x6i(kD#vh|l-q>SwnLQ?a;*laj|w z5)tm}^PXYq6I|Y{>VJ0X!Dsnt3JXN)XH_w;zFavVFg>iO)tCyQ%fXE_bUqGJKIO!h zzcNf=#m@o(1e9`7B3FS*cM{h~now4L7!(tBnD~rcf1;l_O<{EQ0JT;YMR%NHSC_;T z@_Qtjuh+Ll2W;|0Rof-0$pTK+=?=T1K$@N)+j3R0omY>I3>A&gyMX02nw#ox<#Cvv znv%VISJ&1xZ&$ceSKM^7Gt+cv|9(1hQBmT{Dq#4MoMD*JPX&~ zv(K+umc05g0=cZaJV*4sCxeI)?|X5)Q0(_R3$Vx%qa!AdvQ-Zgt;=QA>&3i`D6=sV z&N%>)kCjN3_+nACb-M!F@52(3T#+IA)*Dtb`@nDx3H5EC9DR89%s zELCC}BJF#6YEsezCQ+$@nK`1g$Ji=IDy9`b!rmpiUx-?c#e&;M1d-a6n)7`}&fm>% zJG$tkwhTss^}sb&F}fWDSRm)QM_0F3H2jOQ%_kb45PX904o-E!I8Kc`FHKa+nz&iHIR^9xs%!0m;WbZk0b`Y^UK zf&qjml}DYm)_0sTjVtp+MHFQ91%Hs#qwemJ#WHpyXPqu$4uUjB7#uyRm=z0mEr?iA z7yND4C#0t;A-3AVX<96M)3E(`)?ZrI-_rr6Jv6w}q z3xY<=k`#|1*P0}#&#=Y3!PamwarJ5aKR_!G;Sl+)W=HhwVTM;4yE_v2U~a*nmu^5< za+}(G<%$1Dx7>IO1#F0XQ4(rK4pPC>X%yYrt>A=0deNEEg%w|qpsE$$8UZDyc`OKV_oN7gr%M6bU0Xs#^ zkA}8p+|axxKJn&#$G+8@*FTfviN;Z>XFN3)qJ+ySz7!{fpfHSy#T2kiLw!;a92k-w z>rJcv7bmq=d|kkgVeK{M zuMEPRot^@D%fe|ew~=R2$Bf)xg9)U>9Cdp`H-_0@zbpK^x|?Q2Hnsr>jHqa2)=kgM zO27hs$DQv#Fd_?YmspZri0%S_ZN8G*no|5^J)jlFHh(L}6k~By-@@8izupDHho{K#f$4E3!qw7M_nyB3 zOoY2}k-iOUOxb;q1g%mKXMj{u>Uq#=bBAeX={!YDR85}LgBTG0NYw>c=4H0Z3A;BTSOKoWiD?Ny1*}qYRaQ|#q*fl$lD|7m2{{|$ z{+djT;KsV`1Qrae`GQEPfMQSo3NtmMZSu1Q1ZAue3r0IOySDa+01+nQ3DjF@AzyM1})rnpw1QmLL zlJVYRlzkDC4*n^a7*024*5|QQLeJt#d_(-l9B1nKTO`izwYMCVUB|DUKQG6%;lG6_ z>-L-;77EuwB+3@b@xoPCRGlVtQ8A-qBa-gfV|}#P4>Zi4E%T+dixlvEl|Z0uoS=r= zf%*M(mci-i=}FZ&nL8m0r@6Hw)fd82QR~w%=Uv&_ruplSP#NIj=)er^KXjdx zcnd<+TM@xsmD1IyKRMn-wv${VnkX_gPN=x;8x^LCqT^1+?jvWa=T}$$!W0CF zKuA|a)^Dgp=pchQSHeSz5@iQXyZ5mvN<=sQ*JVO4k86^6*(v@gYsT-As`G+H@pDeI z)q4KYWx?kl{@|*c98>WLmmIc7fK%e^;vz#jqqMcUK_yhy0$?3#(I5~AJT7qu$w@A3Cg0~*{==7P{fL zjUI5rqO0DIL?&Czy*R~M^WpFQeB{T;#?{0t#c{@RPKnduwQg4_1D@?@U!TkSoc#zW zS;SH5Hr->9d-oEW+;a7;h^E<(8Z$^-WxWfV z${?O^n>`*H!bAcN1Cj#aUSN>-xl`w!6w;&x#{2mDpf1OvBqXbg&0SNhS}4? zA~YVNmGyPW#seYE&dy3mKe!*@7z9D|_+D>+-RtS*J8oyIcTFO2YRG~smqZV3GG>Ti zSAgj#Qe=gns@0NYzlrFJukGIQ-xFo^v?LVE&0#V}an{?B)ys7b^OZ47IwkN*j?*SO z716-s>|R3Xfd0iT;XJ{043jffNGUfgxUefZ-*Gb=1k(xRA_XNh1(4%hnKy@f88?#) z1P+zgRcWw*9cQ4oV3$NLI5bRFwk#wTdvU1ZtLX4c0NyC>*ca|m5a?r_jf{>E=O&B8 zS@G8nGdCM$0(kQsuahL84c5u96)ZyZCx=I<%-5}OpVJI{BiI#s+{ENGjkAFRU>ZTP zK)V27K%c)LhBr3qw6nD#`NJU_7$dV2G;?@A>xC$eIYaGUTlK_JS+|VnYaJMbh3z!A z$fCRJo7)r>%Nnf_WD~c>X zaB;pPuyh6Cy`C%F)NOm9I#XZ6+Y#>6*cHXU6cr@$1W*fN0#RBG{^RA<9uq;I32;ja z5$$K!Sr0+2AVS9W_V1skDicqgb;jMzEgAvbLaGxYDH8;P$(NJ(=)tYYz`rOv1Bj5EF<*>zM z{xP@Y*ksQDTZe#a#EV~KQXv;V`<@)fk(<$;Gb=@+s-VAgJ*xNEv!3GBE{=lC!z*w} z;;|57#EwFtLYqH8f9I8qtm=*c}{43fnOS#5I#02Y`fh06Bw8U0!%(Ax?AxvK5_o`E)R1L6A%?84+*^l~e2?Xq z?6{8D7l9)ba;X+6 z7vp(XTwWw+=GyZ$i*vya6u=l0?RDTkVBi@crW0EJu4QkT|1hAeE|CnJ*XJM$T94D@ z@r27!Kh^)_FGyCR9d9~kHk6DzN%)pI%n9b$Q z5uzO9ViHs0bX>xlrwri*S);~U9+S1_v7m;5*Y}JQH01Rx@&OBRkS2u3KEcKD9%524 zsyCe|nL!p;vcvpH2%jCN{Zqy$iLJ~;9J%1kzzvY*&T4Rh?}LmpP)%y_1+s4lxKKG# zj)weTa5a?8t<_i`gO`MfYJ>?4Rkb=yK%2}Vf#+4(((MZ&sKqzM)-$f5`->>3j-Udp zSa8U~XjQoE2otA1i*h`ObL1UsB#8}7Bmu0*&V$E9c5cV+NX&s@1*0++GWfRn@7&cb zcE?qSD4Sa=*Knng(`b~`lV!N3FA|N=h4_e4(HfXh;Kls~Sx=Q;c*=;+nsGCq81qcV zCsH@+|2Y?%15t1d1A}GX(H^TQe`PQ&4WRXmTLV}a}M3NAMqA$tk$RQ4S z3)_G7)ttO)w#QJ-Nl)uzK+a0N$RF#z-ryf>?~ORk;!HW3m2)LZV*wTBu>1$>$FRTr zLnuRV1KN)~NB7>kGJQ$`PoEf#NE5w~Z)u3}wf63|a3x981b1R0fo_O6L4ihyBuWPU z*fF+x5k-CV>N2~<7$&K9#oGbPwqRSRIs*bw3piWBZH`l@==QI%OUMG}1E5^6d*bUs z_XEr#T-7a1DTdC!;T~~3a(`QG?1Z!{zgpUz$Mg%j1sH5~!-H30{#(`N@+Y^FIFJ=ar z7qk%QH@-vL*C~9qoN&M(n@231Fzz|y#rh1%s(0?yNwPYt7%Z|GO-cIfImLRL#cNd6 zEgeeE`LCO+#u9>6bd{(8C?nB*sHS2SunvL(;O{NCT6#Di);A!c8gs^Ek6m{^3ht}Q z02l*{K&SwL5v<#xJP05rWcXG2x|{V4xQqqFhWNdLoRTQij6TiR+{1O0s!}5^6-?P= zAl2Q;8Gw{nv`JxjrQcM|ip_tU#q#p==ePcVGH?Fe2SLhV?R#GQ^&%71xiHDw+{-$R zTGNM2{k3VxRO-snctGn)tu-OC*mInFtH8h6#9WV4y)q>#)w>E__4iaSja|QyyJjTO z#0ay3yG#zKkAgVqM6^CR)?5U|q zDc6DP*4Wb#YN&(Wf1nT$?g3R1Py$4DaAy$>u}p5~beMVwcEvFbDVpA;aRf62eYuDA z%^kV7B4dZWmToN@=2RtBUHm9#av5-;Zj@b6DMS`Pk}wWecp&y&qMFV?sb=Mpvzq%sz|Ss}{vO67cUnZ+_jAkd<0^`)OBeX`Y* zg@AFyd#O#+*WdvuTN3HUJ1xF;ePdH{S=N~Y&rMB9GQBW|APZ%f_bICbs*DYsaR_i< z6T%E9bio|n@#(pKh@I`rycgs1uaz%WWzA02XsgCMo6lJ703Az7s^TD>5iGVQIbd^67Li*P+5g&OKtFEPfX zgas}r8$H9LfQkfV0ZwRe| z`wT^iz-vLA_$=cVY5*#ttAP_DE)jhr)^KNchkenSB7l3|;?Jlzc<9gpiPFBb)uwjj z;2g^8==PTqW|$Cam@tuS!jgY}G8ax?v%`F5;EQsfxbldGPozG<<#qiG6esji{A`g; z@{z0yXzyzV+&9S=-eIY*>$6(i@4bYN6N2xDwYli$tX{urg3l#=Z-!6Aelv!XcM@1X zevE)#ySo@xDwRe5%e{0H`l*$;?R^2}OsmIgQoW3oOh za8j?~R;Lp+LrfIdmu&>KWO%ZtSYKZ=@9*x8ic~Q+*ju50-@!%LX7}6lm|DHEgFBCh_u9R+SjPY-!;X`hLa z;n9xHfx778D9dboCgC#{PpAP+SC+EOxs+k2tbyTHl8Q-y5~Z zaTY<(mgu6)3bgCwt+d3l^O_BYU)3oEU7a39DbOktgA_(M@q1k@TjsbWvfrezBy+Ig zAx%z4Jm3~v#sGW)(g_&NfAIO19L~4HIv%!1*xcM^QQHx&CT>0EW}92PlBtH0ZMa9| ze4yS-i{Tr1T{Z;jQDVWKZt%_+Cs21{UtEJ1udL8Adt>&`&I=BRNE+;@-jY3t15pj~ zldlUraz14zHHeagFy|IlCK0OTu10~1bOE3HaS{P-Q8Ixif%32ZJmu#!&l!CJ^}jRQ z0^{|&zx%r<3fRBvo_p_kfWMo_6F|!O2FI9X^+6?GJDzgZPo9;hDF%zQ3t{#ffH z<%*OU98@Xz(igu-U;M%ssm2!NB;$T?x8WKHJ`iq=oQ;~6a6>dS+;m_fec5hRi4bA$ zlCvz;y8=n|MCKca3l~MS3=9QW)gTsd&XR;w>4t?6{W}aM1H8ueUNB~`FCF^Ey`a?Y zHvbM!$R=U{SwEbc8KbFj?3`W|0$pC;qzl_!G2E2bDOCl|=8j_XI5~)gd?$dLgT&aQ z6ko;pVVo2f@VTq%gL~a(d0qTk-}}F18CXvDR3qxdU;f2ke7dNQ5I)7UypZ?pDG`}E zn2mzahjHeA!nRX(Zn#g9obLZoN;t-G{UAqQ-|?}fJP{`k7%ErUW|4+EF|YuI+f~(o z7-2mN#ldTULfm;X6Jvt&t+8l?KDh0yUX=DgrDyCTf{I(RRV#~YY>{yAz&_z@sJtM1 z5wl*n&X(&qi%nEQjZh&A6;|U|yd|g|4G|0LdrRP*J`-+NlI0srn6S1HGBnTkf@0<) z!y_6&jkHo%Cs9U7S)0OL1shKT?VS$n1qvXyL_Jgv77GFw^s5k6K$Q5~ed(oPaUtdR zZqDm^=J)sKz<=*cIQwo-Ktd3n!{?%&5S<8gFRwkK(nMb1frv>0I;Dw5VhK~K1IBLk z>7E~+gWK0-$S2r15gB%)K2aJm`h#P~;UBmk_VKvw*4ya9`SSvqNNHXqsPp?uZCH#0 z*;gchXJd>CTRS4=u>s8Ra8+tdBRCZsO2aaR*le&kA7PgrxEF#JW`P5;c&=~MDV}6* z#@C(N9TNhE0a2735Qyg`vF>5CU;#)@G;`K1=6En@>YJNX;u|`=e?}_s>wa(~ImfuC zR!;?HoCAULK3U^ha*SMq66i(YG8-$)%W;wCu`3iG_Y*f?!MX7A+|DN~Kg=r2;oSW6 z`b0s_Vve&CROqTuIFS$_U-Cp8@AdQfl-7BLsA3nT;L!~6nU++xlPqD8?=TWH{>#X?66mw?Ca zDid&<^~)V5{F&)dI(%@B4W*(~WG%a`%K9#eyxsT0uRJ9_j&c#o4!bhZNR{6iU*S#S;23P+#&$LQ0(n#$qVZ!+q(>UZCR%0rImS zhaF;K&UeQdarobx*fn4?_PJ3&-m0Js#}ezuIIJg96Ghhf3sY!?D5)dpnjgeqgSO40 z%(C7f8V?^nOy{267J`~!$fJYEWG29Bxhlg^D#3RaqnEvdYPu~_QqPU_W)mU#n_kB+tls7CZOxNL>F<1l+SZoK{w zO^giF4C>8bcO$FRdfrGbT8T(+fMLB!I zBqRO&YgqpvSm?T1WGT+vpBg`2WPRk|Fh}I(6|rmdYC|Vd66N+k|HFTDmTzjoHwN++ zj86peYAYbv8){`YmpR8Np#B5;1eG1wc#jh6E4@DVJI^8)&U=L5<2$&xu=PQAeTnY4 z@gPGl!xDNm%ETyp{8rUHhnx*aBj|pYmzKpK*{Czo!J>{;upytf)9gxZKO~En1=<9FXYQ|$h$u&Z!*bVRrcEMEk} zVmdZi1wbn4SH8bUYrV=I->PqY777*&?CHspwtHpAsM?UYq_eYB9Mv~*8F`w zB zaT;Y2?+w#2R-WftKDV_ne;;D;ub&K<_3Z_uBEApK`=V^_7plKkwmAss;LWe4E34<} zw(G{3D0IL>H6aC#LDCU)H>3s6&rI>;Hz*p7Xv^(Fo^px4oZs!Ug}dF961-A>W+jv? zI2?;m{a(NC_E`zUyE4Q?g&@?q=^5HTKSPJ+=cL+Iv7iJx3%sxwxpEgOdL?p)CvCUI za1axxBrNr_n*{kpk}07fcyvEejZoE0j6hfQGA{--nJFN3yHN%+Oqc}qGjrvOUEe4) zy)ZRo3$lX(IjQK2bH3*j)_+2Pg&;g(8{XMXN)k-3KahaX%pvWs1aswB%PO%t$b*#J zjGM+0nSs}NtJhW~&fVD9ND6cJU9rZBbE|DLJ~wmlX1cI;nQoXHW5{Gu>aPHxmTC}8 z43lHnDQTFlF0WH*vZ(%J+LVMNa4`6dhbtojIBUMNjtOE4v5gl*J21z6`{raZz>-B? zG7J*vom0&5z)k08XC(MlLbaG`$3`cdR|WBf=r>A0T8M3I*qU$@^2A|AiWu-5CEo=e z$HKUEyS-#S@(d+TbYv$!BNr4LsR1JdScs;P)1AKG>u)&;VYC<{f6t+%q$@)l29~m7I9T5gjnXTncry*Odg4i@M97WJau>O6Sju ziD8?^B-G0{Zd_w8Pr?Bcdme!Fo8NTTF+O1-OE8plni7*UEopCjlmdw}F~ z3I~#5Q~t5`eJXa;OR}-CDG??b{nAe=!o%T@t-SCZ@@lca+QjUBc7?6c6e`VkT9W*2 z&j(2XZZ|PHEc=XL%Po*)ty-42K%@d72o+qdjG~c+P;!C;hsy!vo|~PO{fMtSfPIW7 zq;4R%8j|3lgI2gtY*GzBGRALs1fcVfz&61A;LdBdI%0^xKYf{t zmo2zrUx5pO!~at5sB_{+tr!$*@p&<6s)Kq!dA_ODLW;zTP7d;1pgf~0@<^(j=N}-+ZsM^bf_rC_Z}oe%9c$(u;cudmKZ)^ zK)w&yUv=^wDde-ZwkAGP5EBKOq%P%n-Ld!{!JoVA8ry6#XByi_E6nAlAzo35J}63c z1Y%B!B0|`Gvs5lf0uzc%f_O^-@We>;T@W}#FD`~Kd&>h3^nwC>1A2j&l{$dnuz{8b z2H_#i5=AM2Bf{4l2*(?h$(4l^xY8%w9nwB`maaH_m6E6-6^A~qsud^1t3jzQ8OPZK za(|TvhSMcbNs84OCri$AQ=gYcVxZypD2-@}sh7};Z^&9-a@{C;+^4yWAB7d-<33UN zK3)IMe~65DAj%P}$MNDgS$+EOw#w2y;sl}ZxiBYhI{>>Mzzo(k#OUtsj`(v;B!l3T z3+s+Szy&2cj&-!nt#vu49*k16GQ-{oCFW7)db88hZd=t+37nM;VNi;V|KNgyu>#Hr z(FV?kEV(KmmEj?=xbcj54^N1ARIt4Rb72@d@bgt&rBk^-COVV~8DcSvC>p6@Bm0Sz zC29wgiQhM|OFA1b`uxVpC_x<3c}h2dF=IwtZGq2?OuUdIE;p{u?bdTOW74La5B-Em zq`Pfc1u`Xfq^Z%*ghlyNo{8AR_@$bQYWS#xrt{E z1P=on3YQxZHAd!H)K$3H1;i2pY5})|m<4y109hn2Ng`HX#5t;M6Dlj+fv$*6*o*Ww&kqDiv%DUeKTgR5)Dv%9~lgV)*n1ZNfk$5j|ID8%J zeu^)`9XL`$mHsUOq7h_(O%cJR!P&Jh2CK`uBf9LwNr z^j6$MfKlf$Mq)p%7G;p}`S})+;c|Ih&5rePADJ$v|0Q~54uH<+k#Pz&B*e@=Bl#N; z3v@k9Fy2GVN~tu_yV{A;i{CUCSV3n*BV!9z=w)jgYm$T%gp+g?+bM)Cnvy!qeSt(! zx24_It+5b-1*|TPRm7DGN)X_RSRKQtmW7Q3xu0!R#Al9*xIBn`ShN!iI)gCP|4Kq& z;CAvHeT~@0SQn)lgA&MdCr{Jz>Y6OLiHS+!_DOVe0<&bR&J(2>a2EWlzx#P4_?(Wb z+u|le)UwbEX}LZt&!UVY5Rqy$89HBcB0`{zzD+%u({0; zjbQJQAW&F_i3nEhxYGq8YN0Pqvb9?(7bVsZM1@*15X%^!vQ_EtV>^aXIUc2Zp)=xp z-F&AYhKp7VRWAW_$nT#yr$o=+PEJl`h$DeIoS|X3D*jAdi_f+nkzbKEacz=sP?*Pp z$Pf$tz2~;hh^1zbRP=YB3ziHY=5w(OT1sp!0X`LYlg`UFS8 zxtCc_y5*MJgxgH8&b7R}DufPw(27#Rn}Mwva1$uY(dnsZ-mI_7@IySp6?d{3Q#%-^ zDfa)?3SFApw@){iiTWCPZJKzPLg+yzWlTNvTv4aNi0I+3)HDh zO1TZ$O$i1BcZ!@~R8hbV=?au0*sB+n9Eg!3nK8LR;kIt!uWubfP16A zDjO+)U=53t$qNg@{hm9$Nb9Tvj!F!pdJ_r`S~9{g3s+M$v)O`)$`l(?k$Q-HH75uH z%6p%Zd5&TiKbWdfCiOzMU5C$v{DMaM*Oy9WabTNU#*2^s?xT;<^CiH?9(%0L=Y1;M zX*T**1~u6NfD%Hp8?^xw%&d^^j+9u-p8k@!?;J*mhzqPTSexJgb8~a@he_#6#VMX_ zHX81{^G>>O;XEBYcz|JxEmu}966ZfS6?Q2?AgJs%$pi}V2QCBeMu|C+1b6a1paKH8 zBjA(Et93fxDbl5GjrF-e;F7jLEh^?9GAB@F74`m@i;Xgl7o((Gr6evk)SQ9%m9Vdl zX3rre5s}kS2`Vm68TSaQR$};g+;E?Wn0e;(IVv-O-f-g$vM8}Y$kUzEait{o(#AE# z+X81)IOrqDIsojr%;w}CcBckonBct$<00QkVBQZ(n24brQe+gIFLryw1mSVIMhma? zL%CdhY%c(v4MI$v&{^Fr39m|C`w2=emXnDNZ`FYVjgL>#_1E7hA@3mWwj^!$WJ5w2 z1UL^N?&xHkU0@)}{rmUPSHJTA%O=uNg#cS`p&*bmq5!WngbPM)2c?qB-)KuY4B0)i z-xJGqgZ09ttCwYOj#KL$I@4!S-HOz3D1;97DT)Y3#54THqU*s^5NJsb>?sWE7918O zdhv%QyQ>@La=NkUYDmvqU0b1NPM)E~D=RcHHO=tNm`pCXIKb^2Z@kfqLN*;P8$Kly z>H;-<->Xlc{+t#H*>Wji_=78B#Tg0Z@I;>;#8nt93OTU$%#J8U2XkgSAZ9Uv5&YTnsiUQ^7D1 zL#D&lFmtmlhI1~~+Y+!aJ6;ou8tIqVm=MGR<6{@OAAwP$W>XD1rwR2jAOI-V_^9_lAUMRpm9ef zQl^8)KKoSXfvPoojh{Iq~s=Yi(_9ibw+ogs}mz_VA%YI$8amh&^y9a0~PUE(t=xz2kh8 zR})U!XlT6`woWad1lK`80^XximTWZ0_w(FlpT2%>lXbHewrQg%09=C!?+REQILoW( zc3p(~v?tX~`?B>aijQ|C3OjcGY4*(U;%c%!y1KqXSC+5R*~?3GWp#rJ{}&%N?& z*zQZi`TKP7;zb#Qd+)tR79EDL*E7SwBvNWb_&6TU^JDqaId$Rll%g4CK&Z1I^5!*2 z=FA`n=%KHP1XtP>~xQvJW|SH-b7 z7lVP4ydXSGCi=uN(8YEnq&}2TdfU-Sz-`3j@x89CughXVCH+Qml%Bk}L*G7kRcZ%@ zAqaX`f)!BM6H(8r3=^ShLZ7)Re9*9N``xZUH$66Vif&&zROknn*kU7SeQlF2URkCK z7q8H6H=uVS`apcNNeDA2rl^3 zFMf&s_={hrGgnzfXvY%GGBsM0dd?ClQyCGFESRK-$uuTU(l+6Z>Gfrif_q)Oc!4f0 zFVWfa7iptSbl|o-5P~gR&!TD;2o|b{Y>LhI34Ikt83@!;0^m=^q7}W9@3S98dyK`r zewRQdj(D*MZGme~9(lELZ9q(aYI zS-C0}@O9T+C!7)!g6n{QQRo{w;>yZ0-EhOri94<$yQWu!uu{O=qDIo{pIR%h%-lGblZgm2A_VRJ!P!6TG}pa)v#8G2#g z6(hp4?KU)n4`tvMFD%iyRmL9Yk5HZO|8xKEzod&i1~5DTLPP(>bK*R3Z}Gyg@dNG; z;zWb00%A1W)uW4n#A5U0$M|J+!>qe6%@IoHIJLm-&$yqy=i7MfpZ&Anxu)(%&zAtv z-t;qXd?G9qA52_5l#Tbw<4gWSXvBq_A)KJj3N^%`=_zk`!|O#v0g(pS;`V5QZE9;x|nuUYn zK|ua7ii?Befq0N`1h_@3p6ezX3=XzO_qAUb;Uo9>=uV!FqNS_bKbJ}XWiQg0rU zicGZqOkf};;CL32q++%$+z|waeqapPfNItHjtnw>19wp1S;YfHHI7Gl3><&@)G0c^ z#H@o>5Q4)bL2O(09IQz(OvJz36X!q5^P)f0aK<@Lop_4A{nQD8U7(aV1w$-J!VmOU zJQJwoYJE$F^EHR(nUn2Gl~p7;LC=NWx4W||;r$39TW2rK>c%ErsyAr(;LQ}U#r*#< z@nLeCQZpKn*bQ1-T%^~({tfc^h8wPzanTfnViJH0t_U3(#g*pf=H+{Q2h|1(*n$r< zG(Wrhl+BlY9u(!Ay71DZB#Sx3sfZ4@<4kTnd%%Q6A8a*SGGMZ$spc#+ig5>Q)1167!1_LYKLBD`VRWQ`5;XEhSxfu zKgrw;unmqAOOdaMiuWjYX1d~;GiT`jx4cC-AS`F-U1rdLkkK#B#q}|`AYuz@z#v~> z0{F{senalVxF^nqc;2^fzhtms#RIp5&Uoqqy9Tenj%G%Nq=G_M{(3@$yL|5rHjbLD zt`t2wx5A=(`XDWD?aJngBBpy?2Q9T^!ofWc9y%<#EVy|pPD$a)M+&}ISivkN# zw~L*WdppE^Xc~Y5-~MKXz8DrFigm9TBg7Qu@rq%(f4)Z~!4d;nWWMm;=fnMeBmzXp z{@r)q!>TvE)7SU>mE^l@Y*4U80YGHsfLh)RgLK0UH%L$c2m!}c9Xx`8GZ@7l3LHvA ztmA+?%we!Q<-vo8WRem$k$5U?3`h^D7zXqWZY!(&w!J>3-I1D6DzhiIA2 z%^fd~o$$x^$6=N7D?n#k9c~;nAaaidq5{0b>U)j_1QzVlktM zk<(Xc0kI6&rs1F_s0$!0=(5v{7T~#IT%m=bgJE3gTR@c23G;KDo%ewJ+CFl}LGZ!f zd-R_lr{~$8Hvyu3;~QUp@=bT$eJpl)Bl%`Gh8x0)gOv+-1e1orFs=p#8iSW`G#*gI z_hBNjvLR}$KNG>Svn6tESu|d`a#;xU@Zsx{=ohJoABHXhMgviyFP=Snh6!ebX4s-O z4+)xa6cCeyOT`**2>1g&*>8R8TVf@GfXu^!YxMhC2@Ch0a{gF0$=;FrGF`g&j@y|d z?l9K3nTS-p?zVd@syCVVLMc8zJfiM7z)H_P`>crPwYAkW2$fVKfY^;&OMr#@GcE`{ zSvEZMEZys`zg`w=S9Ibl@*OxM%Fy9F=#LQH7<&V)4aPC(Ccj6VVUGS>>w6o9c=7i? z{mTn~4s;&;ZdqyQ7dj;fU0rUB&8@CTa3{ny1{%rh zxW=x4!(Fkk%^*P@FDC!g>C?g~z?ndxSmiLB3eH&Rxxh{dFm(%KbYx7bUV(KUz3DJv z7da8bd=KrehJtM~af18xM`q)`3!*1Z^I(|*ZIgk4g_s6MFlYiI9AGmhK8_>jZ%wT?e1^rk%&t02G6)Jp zt9qpZ-4eyZ6M?}+xYXxA|9Odw-p@)rJSfxCGveCAB;mY6hpv;YzF>u;KUk#T_ESt0 zAmACC$Kdo#r67^nU8%IXDJh-1tS5f;duM2c#qh;T=Y^0UCBUu0rFXVX z{B4(W-)-k+T#jXec=(_F&j0l}`VrfYOn_+L{KnUhGZDU28-Z@Lhshv!qu^FI z@PnBcww-z~AU1H@+X{W)p`laZfo5i=lb`_%tn8nQ+Ri22@d!8{I0*D15a5PvFjGu$ zM)VD$f(XWExYf=uSHto1^ZVp_fN)GlLf^O-Se@wWDsxOsGKw7Gc}(t`tSvV#3|%78qo%(sl6S43CJE03n0O!Ra7^ zaSh+?h3CRTy5o*JG`yd$hi5=DwE$eu)DSe&cT1%*`I}K=@f+@md&VDPE!9w*Wc>A3 z=^MJI^(Tbwx%X^-!!R_fcky5R-lM-rKSukp2oUXcuYKbeO6BkYek)cn1``&oKoqDX z%B%1VZ+L?c3MLf>2%PSCICYn`663>y4)6+h6MhE)VNi5{)d;|#+HvdaYchG@L>M3( z+iO$7}rF<@H68W+#3cI&VFp=3O)1m=~EI_jeCLk0zuld zf%s5C6|sP71O>vyVQDw{c@gZ;D^%#v^qBZ16T;ejxmMUhB(%s-jWa{p2@r>NcF_M!2b*;fM>;cDjXKcJmEad ziy2a;pJU#zNEcXQY5g2c2S_8Ia>a`%s59Jn@AI{KUo-+dapIfxH{JC!Z5Fxj#9%_S zVGw20W_}RpdRSdh;_X%T=;(BkKu!y{GK3!>EW|KYA}l!&4hA80!Kont0t6R?c*J08 z)UX;9=+iJhyqb%z;Q|6mlD`@V!D5f#fBmoiCBH5^T}X2{u$Vwdr%s;~Y;cq(5B=eK z5Ss>&A3l6YGThWiDkr$4Sf@kvIxuP(_-otc@F zfi&2|0u(UN-~jNPz`Z8@IgX0sB6mIX4e<>QB>52n&?2%paC+RXaxb3jGiOhU2!!~7 zC5-DrCqu|T2wh>4v4jia)#4!4VviE5(L^7Nmi_w9iEETK4D%V+^a>L^SRX_k{6+ zYY_V&qiM{bma+peZ@B0mj2oU0iwp#adw`Ugnwm~j8fhBd_9?b{AEFn~UJwDIz4fhc zd2)Dk?43+}`!Eo&yr6S|(?BF(GE8i#xa%a=vt_esKx#KJM4$&@0467=GlL64#Xv1D zuSiWm(_2K;0!ks0>lip|VL^f=I`^1xL}4ZSxydOApyFB^Mi2Aurm%OkWaIbAOah* zGicQz2~m*u3UZFWB=lJmgohx z7fgU?$B!Sczvn&g{d2y#2fz(v%TX3_=GwA{0a2Rap-op7#3zVQjhG^xXFUkzDsE-` z3ab$livf^QxlB-)EUZkKa6SjuiJjx$Tx~EUOb;wcWrLcCViThn^f4&o%;jKppE+|% zj3k74;TYVrh`b@?9^jJb6T!2l3g9>p0*D=)-vR}+2vJ4Ec&E>p-1a(MVXk+6y-vHb zl^k<^RLf_gyy=!(1$qL(o56!cr}b7!8v4)I)A-1e{EjgO2oF~v2olfJ5bsZrShohr z;5lquFn$(6q`5amG0e;p1VYB*#$u9EA-Fc{o6yJcXN-iI&D%cupLN zEBxA${m0kCJ-{e|F$kR)&kiYLVi$8XJ~8pZU-1|?uMOPPyeF-evJxAXyA5Tus%P+W3yYEtgw+_^#x5d z0pM}(LsA@R+!;WV!U@L&OrK4-7KmOZ(v|nHqM}lm$&G=jDCW18NN^|S&4R`;7z4}= zeA3{)Fp_XTrc1I@;o-miOMmN=^dhzwl>pKH&A&-H&%HQFt*3aH#*xo8Fv25+FEmKj<@XvEf`0GB}#KpLhv5YRo}%8Dy~>^&o(5Y5DO6mX9-$pVmV872u)Ce z`wxAaS|e3hok0RFhrUe=r$idb0>k~n%Y-oo0V3!ZeTq6#C_MZtzx>{Z=tXWXIsu~n z@#BAV{2lLj=j71v@I6?Sz_yG4EqYh|z?(t<=1HiC-ZUzcfZtA?e2#8r9SJMm6l!n< zh>ESvx`?--p^-#SY`LoU7HYrk0!Pg-!r-fKbzAU0BO(nf(8yoh>oRk?LyYm^nii)B z0)S|Qc)|psfrEoM)zYjbSe%JJLjaJ5xq0QR;+nAbaU5R{#Cd={B4D4dfBhZKuiQ%v zCp<6uGMp5D=+l67KiLT9lHi+FFN&z5i`^|kyvMWPp7E*@sh1>u>3B2~|2&KjV1}%R zKKyrn>2EzmFF|`r2oUY_pa0`O{crxpyRYZBM=?mxJ$EumG_uu-0e~wFTty8M=1`6+ zVj^J}Ag|W^$TrX*07N6BK}6vg#mqWR&uq%~WzqMl2@E7@l)DWF8W&vvtHMJN<52Pu z9(D2JdGT~0;mPnn+_S0)WfytePsAR+w}4lRWU)wXA$t64?$Fi-D)9$`cOo~W%Kgvo zKS&@Pz$*}!=-YHT-3FrUxdKCZ9y6*;uM=?J<&2n4XgMRs9W`~K;5;O~B%}+H#ez5R z2i+Y;9yp<>P}5VNdEoE;od@Y9YA+c9qCNijAARo5JKq>ErgaPtqqz;5RE}oQicX*g zd|F5r-k&*rMu_dc`|eMyUd6eZ0uVz#GqGgxaT*~~B!8DBi+r)kQclxJELlvR`A{X; zfmMfPo&dxfB3JQV&ejnwQt|N7$h2IRunO;p<6>qC>J;#bX|jh@J!&QhR=cXB1oaLxh#eV zDqpSdv?Ku?(K3LWkZ1+br}-b1WI-UR8qbb^RRfysS@8!e7sulIMwsTUz+#gH>B{~h zFc{nq=Rjvwc*~-i(+oHmV!RL@{)0dG^hf9=ZZA0jqW!yn_s7TYzwiE_*N={YC}25~ zbKTjhwcG_vD1OtZ=#c*W&;MLPg>=BmGMQ?mT#~@iAto3QEr+C z#fQnV@OMnOC8n$HxFxU&aKTA&^^GLlLy4^;1Oai~bCvY18kYqEn9hd907wY6p_?n0 zWS_V;bIu)>)HmP$28kcM`No@tz(wEVXY4v3u!W0RggEXG?}uES88ppnQQcPZpDVf{ zqmKyS{!}HY$gAz)jOVdk<9+W=xm_2-}2WsS)qL=%zJnj zK#ZnGiF?d}p_oA9TJTW7sskPffYeqwjD-&4WFS6Fx+&PED_X;MnmfClgni+f;JD~t zRfAp9`iBKqi)Kcw>`M#bH`Eycp z8XMWP*RKfh+k%*$*-ul9UqZ}RWD7BUb`&H6F_>RDilW4lO(Jm|_d^5W8J>z}?oAEF zDkZ537+>MyPCcUw%~Jj-F0_b^UqB@BBMck;Eo_Jvp`KhGLB_o{UBtkt0D?K zUmF&zPHs0*)Fq0W`++r#NST`BI2P<_Q6U{ypd5Z=*?WYq`}UvvIePl(r^QGC(E_3Y zt_iW++*lR-a&>cu4%~37)T5bVe>Vuu?%Q0H66Rmm3_xJ1CLS%=)VQmOTh*`0Ns!cn zR^3%~VOcztY6hCIXJYHV&aS`z`n~V{yDu8Z{CrwSFLV3whd+3N;?CPxfnS7v1#8Q~ z@fGfxyHubCN+p7l&F)YM#2DU`tEn1rl+2IN?eL? z_eqUIDhQ`7vPh>wSs)_x5xSDSxM%3amf&rkA3S@Sp4v&&3#cQI7HAk7JTDfMjf3tU zs>fJRFZ|cGP%)O8Pu+WJWVm|g```b|$LVEmFFOIEee|OrU3|@LH{Hp|{-=-~XR&?| zhbDSJ1nQ40yO8q@;UvZ(&G4|&zsRQuoNEmY1OX9mQ6h$|nP@T&=^G#hx4^H9N>Df4 za3jsk&eIBWF;uO$C>vOaCW#Cp>c@n=Syd4B-f8$lZ0XNmb(aIABFYPdFY z?EUY5|04Ya+RG|}{r1_FZv5baQTg?jF{mswl070kh}~3+}vd{(^je z`0x?u@K-ky{KXh>5UGR|G53J=X)Y=uNGRbh;_##agql>Cz&*l7owkIxL`cLG6mG4O|q4&Gdom#QMGN@O6o2#zNK5 zic-)sPLKgWG$0s@e8#;3`?UIgwokHQk`~#FbNu2&eiRII#d@t;`{)A?{N0BhfBdsA zD5UCzw4VqE^xJR!*8lOy#MsoG7cN{{gm|$*vM6W_@ICk5L+8((PokXxg1x(3aZ}1`0Wj2a#BWj#c$SE4s40AdXvaxkU&7T=4w4b3$zXaWFJ+ zKU#HbSU4h#7F-VmWC5x$X6joF=7KEt9k{LBQv*ZIdx8ZAH{p&ea-_w^qvSp=P&>AdtWwV<67+}PJn3dfB$=sr+94KcyAH%IxcxZP8Z0M4mKbOYp42@z^wF#wu5k${_aHvJ$K-(vnx&~g zZ#gjm+Xp20R6tnZy0^dXwX$o_(@%dp31&6$RwIbV6XhSxJT?h7DI4Li{?=y^j=e#^ zbx8v})i_X9!m2W;MQm=xev-L|=Q9<;(m0L7;nk{4qyeX$WJ5-)Akl0z9{%|M_OYWM z{pbf5=@rmk5d>)MqrdTM5AEM~=z1QsMG!_}k@7$TJjH;UHK&P7;|X%F6Gv_`DN`*9 z$JHd?V?r=6OJD+#2*+VUR99CaiIVYS3Xfd3K=X6^h4@aM{Jz$a;roGi!U8%~{~D3L zO@-(>*BH38)x9w+58TZRB}q#Ng9Jv>QX(bi>8K@yY^kXh0gc=h1<$KVr2HwsP601hv*g5equV{wc6)D|9G9@nos@Bzxm&vJAdK)Q69(%a3xdJk@Gfr467zOf;-ZB)B)5yMjrgmSEt3 zTjQPTBe_Pj>dpdz1?ho^ur(e;QRm6fBMo3j$nSV+bfC#`tAMi|ND=zY4En~t zW6?1NFs_n8;y9q+{_M~Gtj->k&)xF+ z*L~*T{JzQWe)qdaVP!(3S)_@T_%JXVE;8U_XqK>p34>A(PHK=0hz)RxVR{DVNDUh% zsJc_+HF>I+ROq^N@sbz`AW}rIKrD-H8EXwaMB5nGjik0rL#_?3hAg`qZ@NV)wW3eN z|Cu`y3jl67jpIY9w>YVdh)5k3yJ?t~C3RUYidnsAOq|CnYw+{&Kfh1p!(+apFY%i6_4Nxp%zd7e0e+)L6$m3gf~E#X^&8 z3kTEBFi93^4V?>C%GQ*DxE@%}T zLg(58?kBsTQ{bXwdUS4aQSik%#uCwhDfV10u{Di3Yztm!-Wdg$hZ8rU74I}qSuFQr z@%T`!_TGQ+5B{fzzx1UqEYho}y{ZV%+84g?`TD>A{J;I&-FN@&XBcFeWUe;B1T=vN zUWi0X2Q}Tyhz*J7n{(Yj?flC?(Hp||sTwx)=m#nD-`;vIa)Up?Yr_R{o|5+;5 z-us~sec)67_TN6fNUy?Hq*rnK3m!riv<)PeNEHNRv@}XaEa7tbICIj+d!60K9(w4Z zSB04ULG4vdfPVYrC;s=x_~o(R{_TIhaPi`~2Zx4--o=x-pz(W(=QW+N0(Y2#x_t=( zwIEIqfQ7o7ZV0XhVzAlG@I{YqBsTvWXcs6vWob~gSDzxu%0z3s_#nM4vEMH;lV3n1;Fw7jd#A0 zjgd8}>2m9>w@F_X*^LY{3n-QPH`_Z&Br}@TsJ18<9Ank3EYypM?l>D*Peeg@{9_;c z@NxPnZ9jDc=(kUN;-M4#g1<+=8T-BNQRY7H=FfL9XFCcav)Y9q1n6W|3_U51>FU-1 zpF>y^wo8!0nCzlM6@^o$o~6^LPD(!(>ecTTlZa#l4PaNyUQa=BtIPm#jg1dgOhd#6 zi>+qk@m8mEVs~fjbEq~!e+Al4H39m~aYp<}z$NQX6Z~?tSSlT3j&=tV!UA){qXu1Mj7k**!kw+f+D@kmF+J6RT1TzUpOb{9X0000 {#if !isHidden} @@ -170,14 +173,14 @@ props={{ object: message, embedded, onReply }} /> {/if} - + {#if parentMessage && showEmbedded}

- {#if withActions} + {#if withActions && !readonly}
{ e.stopPropagation() e.preventDefault() @@ -47,6 +49,7 @@ } function openEmojiPalette (ev: Event) { + if (readonly) return ev.preventDefault() ev.stopPropagation() showPopup(EmojiPopup, {}, ev.target as HTMLElement, (emoji: string) => { @@ -61,6 +64,7 @@
@@ -70,7 +74,7 @@
{/each} - {#if object && reactionsAccounts.size > 0} + {#if object && reactionsAccounts.size > 0 && !readonly}
@@ -102,7 +106,6 @@ height: 1.5rem; background: var(--secondary-button-disabled); border: none; - cursor: pointer; &:hover { border: 1px solid var(--theme-darker-color); diff --git a/plugins/activity-resources/src/components/reactions/ReactionsPresenter.svelte b/plugins/activity-resources/src/components/reactions/ReactionsPresenter.svelte index 7d782475ca..4614fbc6da 100644 --- a/plugins/activity-resources/src/components/reactions/ReactionsPresenter.svelte +++ b/plugins/activity-resources/src/components/reactions/ReactionsPresenter.svelte @@ -13,13 +13,14 @@ // limitations under the License. --> {#if object && hasReactions} {/if} diff --git a/plugins/attachment-resources/src/components/AttachmentActions.svelte b/plugins/attachment-resources/src/components/AttachmentActions.svelte index e158cff0d4..b91bad6c66 100644 --- a/plugins/attachment-resources/src/components/AttachmentActions.svelte +++ b/plugins/attachment-resources/src/components/AttachmentActions.svelte @@ -16,7 +16,7 @@ import type { Attachment } from '@hcengineering/attachment' import { getResource } from '@hcengineering/platform' import { PDFViewer, getFileUrl } from '@hcengineering/presentation' - import { ActionIcon, IconMoreH, IconOpen, Menu, closeTooltip, showPopup } from '@hcengineering/ui' + import { Action as UIAction, ActionIcon, IconMoreH, IconOpen, Menu, closeTooltip, showPopup } from '@hcengineering/ui' import view, { Action } from '@hcengineering/view' import attachmentPlugin from '../plugin' @@ -24,6 +24,7 @@ export let attachment: Attachment export let isSaved = false + export let removable = false let download: HTMLAnchorElement @@ -56,38 +57,40 @@ action: attachmentPlugin.actionImpl.AddAttachmentToSaved } as unknown as Action) + const openAction: UIAction = { + label: view.string.Open, + icon: IconOpen, + action: async (props: any, evt: Event) => { + showPreview(evt as MouseEvent) + } + } + const showMenu = (ev: Event) => { + const actions: UIAction[] = [] + if (openable) { + actions.push(openAction) + } + actions.push({ + label: saveAttachmentAction.label, + icon: saveAttachmentAction.icon, + action: async (props: any, evt: Event) => { + const impl = await getResource(saveAttachmentAction.action) + await impl(attachment, evt) + } + }) + if (removable) { + actions.push({ + label: attachmentPlugin.string.DeleteFile, + action: async (props: any, evt: Event) => { + const impl = await getResource(attachmentPlugin.actionImpl.DeleteAttachment) + await impl(attachment, evt) + } + }) + } showPopup( Menu, { - actions: [ - ...(openable - ? [ - { - label: view.string.Open, - icon: IconOpen, - action: async (props: any, evt: MouseEvent) => { - showPreview(evt) - } - } - ] - : []), - { - label: saveAttachmentAction.label, - icon: saveAttachmentAction.icon, - action: async (props: any, evt: MouseEvent) => { - const impl = await getResource(saveAttachmentAction.action) - await impl(attachment, evt) - } - }, - { - label: attachmentPlugin.string.DeleteFile, - action: async (props: any, evt: MouseEvent) => { - const impl = await getResource(attachmentPlugin.actionImpl.DeleteAttachment) - await impl(attachment, evt) - } - } - ] + actions }, ev.target as HTMLElement ) diff --git a/plugins/attachment-resources/src/components/AttachmentPreview.svelte b/plugins/attachment-resources/src/components/AttachmentPreview.svelte index 8bfc7f2695..ca20c47dca 100644 --- a/plugins/attachment-resources/src/components/AttachmentPreview.svelte +++ b/plugins/attachment-resources/src/components/AttachmentPreview.svelte @@ -27,6 +27,7 @@ export let value: Attachment export let isSaved: boolean = false export let listProvider: ListSelectionProvider | undefined = undefined + export let removable: boolean = false const dispatch = createEventDispatcher() $: type = getType(value.type) @@ -58,14 +59,14 @@ alt={value.name} />
- +
{:else if type === 'audio'}
- +
{:else if type === 'video'} @@ -78,14 +79,14 @@
- +
{:else}
- +
{/if} diff --git a/plugins/attachment-resources/src/components/AttachmentStyleBoxCollabEditor.svelte b/plugins/attachment-resources/src/components/AttachmentStyleBoxCollabEditor.svelte index 667581cca7..2c8c85bf36 100644 --- a/plugins/attachment-resources/src/components/AttachmentStyleBoxCollabEditor.svelte +++ b/plugins/attachment-resources/src/components/AttachmentStyleBoxCollabEditor.svelte @@ -34,6 +34,7 @@ export let enableAttachments: boolean = true export let useAttachmentPreview: boolean = false + export let readonly: boolean = false const client = getClient() @@ -43,7 +44,7 @@ let extraActions: RefAction[] = [] let modelRefActions: RefAction[] = [] - $: if (enableAttachments) { + $: if (enableAttachments && !readonly) { extraActions = [ { label: textEditor.string.Attach, @@ -59,10 +60,12 @@ void getModelRefActions().then((actions) => { modelRefActions = actions }) - $: refActions = defaultRefActions - .concat(extraActions) - .concat(modelRefActions) - .sort((a, b) => a.order - b.order) + $: refActions = readonly + ? [] + : defaultRefActions + .concat(extraActions) + .concat(modelRefActions) + .sort((a, b) => a.order - b.order) let progress = false let attachments: Attachment[] = [] @@ -89,6 +92,7 @@ } async function fileSelected (): Promise { + if (readonly) return progress = true const list = inputFile.files if (list === null || list.length === 0) return @@ -155,6 +159,7 @@ } export async function pasteAction (evt: ClipboardEvent): Promise { + if (readonly) return if (!isAllowedPaste(evt)) { return } @@ -172,6 +177,7 @@ } export async function fileDrop (e: DragEvent): Promise { + if (readonly) return progress = true const list = e.dataTransfer?.files if (list !== undefined && list.length !== 0) { @@ -231,6 +237,7 @@ {placeholder} {boundary} {refActions} + {readonly} attachFile={async (file) => { return await createAttachment(file) }} @@ -248,6 +255,7 @@ {#if (attachments.length > 0 && enableAttachments) || progress} [] = [] + export let readonly: boolean = false let element: HTMLElement let attachmentPopupId: string = '' @@ -46,11 +47,16 @@
{#each attachments as attachment (attachment._id)} {#if useAttachmentPreview} - (attachmentPopupId = res.detail)} /> + (attachmentPopupId = res.detail)} + /> {:else} { - showPopup( - ContextMenu, - { object, baseMenuClass: board.class.Card, mode: 'editor' }, - getEventPopupPositionElement(e) - ) + showMenu(e, { object, baseMenuClass: board.class.Card, mode: 'editor' }) }} /> diff --git a/plugins/board-resources/src/components/KanbanCard.svelte b/plugins/board-resources/src/components/KanbanCard.svelte index 893d98a676..2a1eb06fe2 100644 --- a/plugins/board-resources/src/components/KanbanCard.svelte +++ b/plugins/board-resources/src/components/KanbanCard.svelte @@ -22,19 +22,9 @@ import { ChatMessagesPresenter } from '@hcengineering/notification-resources' import { getClient } from '@hcengineering/presentation' import tags from '@hcengineering/tags' - import { - Button, - Component, - EditBox, - Icon, - IconMoreV, - Label, - getPopupPositionElement, - numberToHexColor, - showPopup - } from '@hcengineering/ui' + import { Button, Component, EditBox, Icon, IconMoreV, Label, numberToHexColor } from '@hcengineering/ui' import view from '@hcengineering/view' - import { ContextMenu } from '@hcengineering/view-resources' + import { showMenu } from '@hcengineering/view-resources' import board from '../plugin' import { hasDate, openCardPanel, updateCard, updateCardMembers } from '../utils/CardUtils' import DatePresenter from './presenters/DatePresenter.svelte' @@ -53,9 +43,9 @@ isEditMode = false } - function enterEditMode (): void { + function enterEditMode (e: MouseEvent): void { isEditMode = true - showPopup(ContextMenu, { object }, getPopupPositionElement(ref, { h: 'right', v: 'top' }), exitEditMode) + showMenu(e, { object }, exitEditMode) } function showCard () { diff --git a/plugins/board-resources/src/components/KanbanView.svelte b/plugins/board-resources/src/components/KanbanView.svelte index b04fc3653b..753a744450 100644 --- a/plugins/board-resources/src/components/KanbanView.svelte +++ b/plugins/board-resources/src/components/KanbanView.svelte @@ -14,7 +14,7 @@ // limitations under the License. --> {#if state} @@ -29,7 +16,13 @@
{state.name}
-
diff --git a/plugins/calendar-resources/src/components/DayCalendar.svelte b/plugins/calendar-resources/src/components/DayCalendar.svelte index c86de38de1..7a837f4249 100644 --- a/plugins/calendar-resources/src/components/DayCalendar.svelte +++ b/plugins/calendar-resources/src/components/DayCalendar.svelte @@ -37,7 +37,7 @@ ticker, isWeekend } from '@hcengineering/ui' - import { Menu } from '@hcengineering/view-resources' + import { Menu, showMenu } from '@hcengineering/view-resources' import { createEventDispatcher, onDestroy, onMount } from 'svelte' import type { CalendarADGrid, @@ -759,12 +759,6 @@ dispatch('dragEnter', { date: new Date(new Date(newTime).setMinutes(stickyMinutes, 0, 0)) }) } } - - function showMenu (ev: MouseEvent, event: Event) { - ev.preventDefault() - closeTooltip() - showPopup(Menu, { object: event }, getEventPositionElement(ev)) - } { - showMenu(e, ev) + showMenu(e, { object: ev }) }} />
{ - showMenu(e, ev) + showMenu(e, { object: ev }) }} /> {#if event} @@ -74,7 +65,7 @@ class:empty use:tooltip={{ component: EventPresenter, props: { value: event, hideDetails: !visible } }} on:click|stopPropagation={click} - on:contextmenu={showMenu} + on:contextmenu={contextMenu} > {#if !empty && presenter?.presenter} diff --git a/plugins/chunter-resources/src/components/chat-message/ChatMessagesPresenter.svelte b/plugins/chunter-resources/src/components/chat-message/ChatMessagesPresenter.svelte index 255d5a9c8c..8828deb59a 100644 --- a/plugins/chunter-resources/src/components/chat-message/ChatMessagesPresenter.svelte +++ b/plugins/chunter-resources/src/components/chat-message/ChatMessagesPresenter.svelte @@ -18,6 +18,7 @@ import { Button, ButtonKind, ButtonSize, IconThread } from '@hcengineering/ui' import ChatMessagePopup from './ChatMessagePopup.svelte' + import { restrictionStore } from '@hcengineering/view-resources' export let value: number | undefined export let object: Doc @@ -26,6 +27,8 @@ export let showCounter: boolean = true export let compactMode: boolean = false export let withInput: boolean = true + + $: disabled = $restrictionStore.disableComments {#if value && value > 0} @@ -34,7 +37,7 @@ {size} showTooltip={{ component: ChatMessagePopup, - props: { objectId: object._id, object, withInput } + props: { objectId: object._id, object, withInput: withInput && !disabled } }} >
diff --git a/plugins/contact-resources/src/components/AssigneeBox.svelte b/plugins/contact-resources/src/components/AssigneeBox.svelte index 9b1dec327e..7f8c3f75a3 100644 --- a/plugins/contact-resources/src/components/AssigneeBox.svelte +++ b/plugins/contact-resources/src/components/AssigneeBox.svelte @@ -35,11 +35,11 @@ import { openDoc } from '@hcengineering/view-resources' import { createEventDispatcher } from 'svelte' import { PersonLabelTooltip, personByIdStore } from '..' + import { AssigneeCategory } from '../assignee' import AssigneePopup from './AssigneePopup.svelte' import EmployeePresenter from './EmployeePresenter.svelte' import UserInfo from './UserInfo.svelte' import IconPerson from './icons/Person.svelte' - import { AssigneeCategory } from '../assignee' export let _class: Ref> = contact.mixin.Employee export let excluded: Ref[] | undefined = undefined @@ -156,7 +156,16 @@ onEmployeeEdit={_click} /> {:else} -
-
{/if} diff --git a/plugins/view-resources/src/components/DocAttributeBar.svelte b/plugins/view-resources/src/components/DocAttributeBar.svelte index 81359cd567..de2901b54e 100644 --- a/plugins/view-resources/src/components/DocAttributeBar.svelte +++ b/plugins/view-resources/src/components/DocAttributeBar.svelte @@ -24,6 +24,7 @@ export let ignoreKeys: string[] export let allowedCollections: string[] = [] export let showHeader: boolean = true + export let readonly: boolean = false const client = getClient() const hierarchy = client.getHierarchy() @@ -36,6 +37,7 @@ to={undefined} {allowedCollections} {showHeader} + {readonly} on:update /> {#each mixins as mixin} @@ -47,6 +49,7 @@ object={hierarchy.as(object, mixin._id)} {ignoreKeys} {to} + {readonly} {allowedCollections} {showHeader} on:update diff --git a/plugins/view-resources/src/components/DocNavLink.svelte b/plugins/view-resources/src/components/DocNavLink.svelte index 07ec6051e9..0aef777229 100644 --- a/plugins/view-resources/src/components/DocNavLink.svelte +++ b/plugins/view-resources/src/components/DocNavLink.svelte @@ -17,10 +17,10 @@ import { NavLink, getClient } from '@hcengineering/presentation' import { AnyComponent, getPanelURI, locationToUrl } from '@hcengineering/ui' import view from '../plugin' - import { getObjectLinkFragment } from '../utils' + import { getObjectLinkFragment, restrictionStore } from '../utils' export let object: Doc | undefined - export let disabled = false + export let disabled: boolean = false export let onClick: ((event: MouseEvent) => void) | undefined = undefined export let noUnderline = disabled export let inline = false @@ -31,6 +31,9 @@ export let accent: boolean = false export let noOverflow: boolean = false + let _disabled = disabled || $restrictionStore.disableNavigation + $: _disabled = disabled || $restrictionStore.disableNavigation + const client = getClient() const hierarchy = client.getHierarchy() @@ -40,7 +43,7 @@ : undefined async function getHref (object: Doc): Promise { - if (disabled) { + if (_disabled) { href = undefined return } @@ -53,6 +56,6 @@ $: if (object !== undefined) getHref(object) - + diff --git a/plugins/view-resources/src/components/EditDoc.svelte b/plugins/view-resources/src/components/EditDoc.svelte index d1abc4e539..0b3106abe2 100644 --- a/plugins/view-resources/src/components/EditDoc.svelte +++ b/plugins/view-resources/src/components/EditDoc.svelte @@ -14,32 +14,33 @@ // limitations under the License. --> @@ -92,6 +94,7 @@ kind={'ghost'} size={'small'} icon={IconCopy} + disabled={value === undefined || value === ''} showTooltip={{ label: view.string.CopyToClipboard }} on:click={() => { copyLink() @@ -102,6 +105,7 @@ kind={'ghost'} size={'small'} icon={IconArrowRight} + disabled={value === undefined || value === ''} showTooltip={{ label: view.string.Open }} on:click={() => { dispatch('update', value) diff --git a/plugins/view-resources/src/components/ParentsNavigator.svelte b/plugins/view-resources/src/components/ParentsNavigator.svelte index bc29833354..8703be806d 100644 --- a/plugins/view-resources/src/components/ParentsNavigator.svelte +++ b/plugins/view-resources/src/components/ParentsNavigator.svelte @@ -15,7 +15,7 @@ {#if viewlet} @@ -41,6 +45,7 @@