From e962534593998cd5a93471ead3dfc897ef1f1fc4 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Sun, 16 Jun 2024 21:34:38 +0200 Subject: [PATCH 01/20] feat: basic layout --- src/components/Vesting/Vest.tsx | 76 +++++++++++++++++++ src/components/Vesting/calls.ts | 7 ++ src/components/Vesting/index.ts | 3 + src/components/Vesting/vest.module.css | 5 ++ .../WithdrawCapital/WithdrawParent.tsx | 5 +- src/pages/governance.tsx | 12 ++- 6 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 src/components/Vesting/Vest.tsx create mode 100644 src/components/Vesting/calls.ts create mode 100644 src/components/Vesting/index.ts create mode 100644 src/components/Vesting/vest.module.css diff --git a/src/components/Vesting/Vest.tsx b/src/components/Vesting/Vest.tsx new file mode 100644 index 00000000..1a026710 --- /dev/null +++ b/src/components/Vesting/Vest.tsx @@ -0,0 +1,76 @@ +import { AccountInterface } from "starknet"; +import { useAccount } from "../../hooks/useAccount"; +import { openWalletConnectDialog } from "../ConnectWallet/Button"; +import { unVestCarm, vestCarm } from "./calls"; +import { useEffect, useState } from "react"; +import { balanceOfCarmineToken } from "../../calls/balanceOf"; +import { Skeleton } from "@mui/material"; +import { shortInteger } from "../../utils/computations"; +import styles from "./vest.module.css"; +import inputStyles from "../../style/input.module.css"; + +export const VestWithAccount = ({ account }: { account: AccountInterface }) => { + const [carmBalance, setCarmBalance] = useState(undefined); + const [inputValue, setInputValue] = useState(""); + + useEffect(() => { + balanceOfCarmineToken(account).then((b) => + setCarmBalance(shortInteger(b, 18)) + ); + }, [account]); + + if (carmBalance === undefined) { + return ( + + + + + ); + } + + const handleInputChange = (value: string) => { + // Allow empty string, valid number, or a single decimal point followed by numbers + const numericValue = + value === "" || /^\d*\.?\d{0,6}$/.test(value) ? value : inputValue; + + const num = parseFloat(numericValue); + + if (num && num > carmBalance) { + // cannot set more than holds + return; + } + + setInputValue(numericValue); + }; + + return ( +
+

+ You have 0 CARM and {carmBalance.toFixed(5)} veCarm +

+

Stake your CARM for a period

+
+ handleInputChange(e.target.value)} + /> + + + +
+
+ ); +}; + +export const Vest = () => { + const account = useAccount(); + + if (!account) { + return ; + } + + return ; +}; diff --git a/src/components/Vesting/calls.ts b/src/components/Vesting/calls.ts new file mode 100644 index 00000000..2e09329e --- /dev/null +++ b/src/components/Vesting/calls.ts @@ -0,0 +1,7 @@ +export const vestCarm = () => { + console.log("Vesting..."); +}; + +export const unVestCarm = () => { + console.log("UnVesting..."); +}; diff --git a/src/components/Vesting/index.ts b/src/components/Vesting/index.ts new file mode 100644 index 00000000..090815a7 --- /dev/null +++ b/src/components/Vesting/index.ts @@ -0,0 +1,3 @@ +import { Vest } from "./Vest"; + +export { Vest }; diff --git a/src/components/Vesting/vest.module.css b/src/components/Vesting/vest.module.css new file mode 100644 index 00000000..aaa7ce95 --- /dev/null +++ b/src/components/Vesting/vest.module.css @@ -0,0 +1,5 @@ +.container { + display: flex; + align-items: center; + gap: 1rem; +} \ No newline at end of file diff --git a/src/components/WithdrawCapital/WithdrawParent.tsx b/src/components/WithdrawCapital/WithdrawParent.tsx index 238c24bb..38b44fcc 100644 --- a/src/components/WithdrawCapital/WithdrawParent.tsx +++ b/src/components/WithdrawCapital/WithdrawParent.tsx @@ -21,7 +21,10 @@ type Props = { address: string; account: AccountInterface }; const WithdrawParentWithAccount = ({ address, account }: Props) => { const { isLoading, isError, isFetching, data } = useQuery( - [QueryKeys.stake, address], + [ + QueryKeys.stake, + "0x718505b87b5a448205ae22ac84a21b9e568b532ed95285c4c03973f8b1a73e8", + ], fetchCapital ); diff --git a/src/pages/governance.tsx b/src/pages/governance.tsx index 3778ed39..7bf5b1f8 100644 --- a/src/pages/governance.tsx +++ b/src/pages/governance.tsx @@ -4,6 +4,7 @@ import { Helmet } from "react-helmet"; import { Layout } from "../components/Layout"; import { Proposals } from "../components/Proposal"; import { isMainnet } from "../constants/amm"; +import { Vest } from "../components/Vesting"; type Props = { message: string; @@ -45,7 +46,16 @@ const Governance = () => { /> {isMainnet ? ( - +
+

CARM Staking

+

+ Stake your CARM +

+ +

Proposals

+

Vote on AMM defining proposals

+ +
) : ( )} From 11ef6725e9b2a283fe05cbf13ecaaea0aaa2d128 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Mon, 24 Jun 2024 13:33:18 +0200 Subject: [PATCH 02/20] feat: split governance page into subpages --- package-lock.json | 604 +++++++++++++----------------- package.json | 4 +- src/App.tsx | 2 +- src/hooks/useGovernanceSubpage.ts | 7 + src/pages/governance.tsx | 109 +++--- src/redux/actions.ts | 5 + src/redux/reducers/ui.ts | 16 + 7 files changed, 349 insertions(+), 398 deletions(-) create mode 100644 src/hooks/useGovernanceSubpage.ts diff --git a/package-lock.json b/package-lock.json index 11094a8e..087ecef8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "carmine-finance-app", - "version": "0.1.0", + "version": "1.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "carmine-finance-app", - "version": "0.1.0", + "version": "1.2.0", "dependencies": { "@avnu/avnu-sdk": "^1.2.4", "@emotion/react": "^11.10.4", @@ -33,6 +33,7 @@ }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "*", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^10.0.6", @@ -112,81 +113,17 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", @@ -271,13 +208,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -285,11 +222,11 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -330,18 +267,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz", - "integrity": "sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "engines": { @@ -399,42 +336,46 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -470,20 +411,20 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "engines": { "node": ">=6.9.0" } @@ -505,13 +446,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -532,39 +473,40 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } @@ -604,13 +546,14 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -681,9 +624,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1678,13 +1621,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -2154,31 +2097,31 @@ } }, "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2187,12 +2130,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -3215,13 +3158,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -3236,9 +3179,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -3258,9 +3201,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -25075,63 +25018,12 @@ "requires": {} }, "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { @@ -25196,22 +25088,22 @@ } }, "@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "requires": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" } }, "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -25242,18 +25134,18 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz", - "integrity": "sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "dependencies": { @@ -25294,33 +25186,37 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "requires": { + "@babel/types": "^7.24.7" + } }, "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", "requires": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/helper-module-imports": { @@ -25344,17 +25240,17 @@ } }, "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" } }, "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==" }, "@babel/helper-remap-async-to-generator": { "version": "7.22.20", @@ -25367,13 +25263,13 @@ } }, "@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" } }, "@babel/helper-simple-access": { @@ -25385,30 +25281,31 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "requires": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" } }, "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==" }, "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" }, "@babel/helper-validator-option": { "version": "7.23.5", @@ -25436,13 +25333,14 @@ } }, "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "requires": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "dependencies": { "ansi-styles": { @@ -25497,9 +25395,9 @@ } }, "@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==" + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.23.3", @@ -26109,13 +26007,13 @@ } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, @@ -26439,39 +26337,39 @@ } }, "@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" } }, @@ -27169,13 +27067,13 @@ } }, "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "requires": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" } }, "@jridgewell/resolve-uri": { @@ -27184,9 +27082,9 @@ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" }, "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, "@jridgewell/source-map": { "version": "0.3.5", @@ -27203,9 +27101,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" diff --git a/package.json b/package.json index 521cad04..a0cab802 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ ] }, "devDependencies": { - "@babel/plugin-proposal-private-property-in-object": "*", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^10.0.6", @@ -74,4 +74,4 @@ "typescript": "^4.8.4", "web-vitals": "^2.1.4" } -} +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 4122e876..0114908a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -67,7 +67,7 @@ const App = () => { } /> } /> } /> - } /> + } /> } /> } /> } /> diff --git a/src/hooks/useGovernanceSubpage.ts b/src/hooks/useGovernanceSubpage.ts new file mode 100644 index 00000000..4906edf5 --- /dev/null +++ b/src/hooks/useGovernanceSubpage.ts @@ -0,0 +1,7 @@ +import { useSelector } from "react-redux"; + +import { GovernanceSubpage } from "../redux/reducers/ui"; +import { RootState } from "../redux/store"; + +export const useGovernanceSubpage = (): GovernanceSubpage => + useSelector((s: RootState) => s.ui.governanceSubpage); diff --git a/src/pages/governance.tsx b/src/pages/governance.tsx index 7bf5b1f8..11a6934c 100644 --- a/src/pages/governance.tsx +++ b/src/pages/governance.tsx @@ -1,40 +1,45 @@ -import { Box, Typography } from "@mui/material"; import { Helmet } from "react-helmet"; import { Layout } from "../components/Layout"; import { Proposals } from "../components/Proposal"; -import { isMainnet } from "../constants/amm"; import { Vest } from "../components/Vesting"; +import { useGovernanceSubpage } from "../hooks/useGovernanceSubpage"; +import { GovernanceSubpage } from "../redux/reducers/ui"; +import { useNavigate } from "react-router-dom"; +import buttonStyles from "../style/button.module.css"; +import { setGovernanceSubpage } from "../redux/actions"; +import { Airdrop } from "../components/Airdrop/Airdrop"; -type Props = { - message: string; - data?: string[]; +const VotingSubpage = () => { + return ( +
+

Proposals

+

Vote on AMM defining proposals

+ +
+ ); }; -const Governance = () => { - const SwitchNetwork = ({ message, data }: Props) => ( - - - {message} - {/* */} - {/* {account && } */} - - +const StakingSubpage = () => { + return ( +
+

CARM Staking

+

+ Stake your CARM +

+ +
); +}; + +const Governance = () => { + const subpage = useGovernanceSubpage(); + const navigate = useNavigate(); + + const handleNavigateClick = (subpage: GovernanceSubpage) => { + setGovernanceSubpage(subpage); + navigate(`/governance/${subpage}`); + }; return ( @@ -45,20 +50,40 @@ const Governance = () => { content="Vote on proposals and take part in governing Carmine Options AMM" /> - {isMainnet ? ( -
-

CARM Staking

-

- Stake your CARM -

- -

Proposals

-

Vote on AMM defining proposals

- -
- ) : ( - - )} + + + + + {subpage === GovernanceSubpage.Voting && } + {subpage === GovernanceSubpage.Staking && } + {subpage === GovernanceSubpage.AirDrop && }
); }; diff --git a/src/redux/actions.ts b/src/redux/actions.ts index f6934113..c49449f0 100644 --- a/src/redux/actions.ts +++ b/src/redux/actions.ts @@ -3,10 +3,12 @@ import { updateNetworkState } from "./reducers/network"; import { addReferredPairState, DialogContentElem, + GovernanceSubpage, PortfolioParamType, ReferralSent, setBuyInsuranceModalState, setCloseOptionState, + setGovernanceSubpageState, setParamState, setToastState, setTransferDataModalState, @@ -125,3 +127,6 @@ export const markTxAsFailed = (hash: string) => export const addReferredPair = (pair: ReferralSent) => store.dispatch(addReferredPairState(pair)); + +export const setGovernanceSubpage = (subpage: GovernanceSubpage) => + store.dispatch(setGovernanceSubpageState(subpage)); diff --git a/src/redux/reducers/ui.ts b/src/redux/reducers/ui.ts index 4a13a301..8b98c141 100644 --- a/src/redux/reducers/ui.ts +++ b/src/redux/reducers/ui.ts @@ -30,6 +30,12 @@ export enum PortfolioParamType { Referral = "referral", } +export enum GovernanceSubpage { + AirDrop = "airdrop", + Voting = "voting", + Staking = "staking", +} + export type ToastState = { message: string; open: boolean; @@ -50,6 +56,7 @@ export interface UiState { transferData?: TransferData; transferDialogShown: boolean; portfolioParam?: PortfolioParamType; + governanceSubpage: GovernanceSubpage; referralsSent: ReferralSent[]; } @@ -61,6 +68,7 @@ export const ui = createSlice({ toastState: { message: "", type: ToastType.Info, open: false }, transferDialogShown: false, portfolioParam: PortfolioParamType.Position, + governanceSubpage: GovernanceSubpage.Voting, referralsSent: [], } as UiState, reducers: { @@ -101,6 +109,13 @@ export const ui = createSlice({ state.portfolioParam = action.payload; return state; }, + setGovernanceSubpageState: ( + state, + action: { payload: GovernanceSubpage } + ) => { + state.governanceSubpage = action.payload; + return state; + }, addReferredPairState: (state, action: { payload: ReferralSent }) => { state.referralsSent = [...state.referralsSent, action.payload]; return state; @@ -116,5 +131,6 @@ export const { setTransferDataModalState, setTransferDialogShown, setParamState, + setGovernanceSubpageState, addReferredPairState, } = ui.actions; From 582a590694df27a169ec21f9d7545c0899e2b7d8 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 11:31:21 +0200 Subject: [PATCH 03/20] feat: new airdrop and staking --- config-mainnet.json | 2 + config-testnet.json | 4 +- src/abi/governance_abi.json | 819 ++++++++++++++++-- src/calls/balanceOf.ts | 16 +- src/calls/carmineStake.ts | 172 ++++ src/classes/CarmineStake.ts | 84 ++ src/components/Airdrop/Airdrop.tsx | 140 +-- src/components/Airdrop/AirdropModal.tsx | 270 ++++++ src/components/Airdrop/airdrop.module.css | 46 + src/components/Airdrop/getProof.ts | 50 +- src/components/CarmineStaking/StakeCRM.tsx | 184 ++++ src/components/CarmineStaking/Stakes.tsx | 154 ++++ src/components/CarmineStaking/Staking.tsx | 65 ++ .../CarmineStaking/StakingModal.tsx | 213 +++++ src/components/CarmineStaking/calls.ts | 53 ++ src/components/CarmineStaking/index.ts | 3 + .../CarmineStaking/modal.module.css | 28 + src/components/CarmineStaking/vest.module.css | 20 + src/components/Slip/Slip.tsx | 20 +- src/components/Vesting/Vest.tsx | 76 -- src/components/Vesting/calls.ts | 7 - src/components/Vesting/index.ts | 3 - src/components/Vesting/vest.module.css | 5 - src/constants/amm.ts | 4 + src/constants/config.json | 2 + src/constants/starknet.ts | 12 + src/network/provider.ts | 1 + src/pages/governance.tsx | 24 +- src/queries/client.ts | 2 + src/queries/keys.ts | 2 + src/redux/reducers/transactions.ts | 2 + src/style/button.module.css | 5 + src/style/input.module.css | 2 +- src/types/governance.ts | 7 + src/types/network.ts | 9 + 35 files changed, 2226 insertions(+), 280 deletions(-) create mode 100644 src/calls/carmineStake.ts create mode 100644 src/classes/CarmineStake.ts create mode 100644 src/components/Airdrop/AirdropModal.tsx create mode 100644 src/components/CarmineStaking/StakeCRM.tsx create mode 100644 src/components/CarmineStaking/Stakes.tsx create mode 100644 src/components/CarmineStaking/Staking.tsx create mode 100644 src/components/CarmineStaking/StakingModal.tsx create mode 100644 src/components/CarmineStaking/calls.ts create mode 100644 src/components/CarmineStaking/index.ts create mode 100644 src/components/CarmineStaking/modal.module.css create mode 100644 src/components/CarmineStaking/vest.module.css delete mode 100644 src/components/Vesting/Vest.tsx delete mode 100644 src/components/Vesting/calls.ts delete mode 100644 src/components/Vesting/index.ts delete mode 100644 src/components/Vesting/vest.module.css create mode 100644 src/types/governance.ts diff --git a/config-mainnet.json b/config-mainnet.json index 63f1567d..1fd8caa0 100644 --- a/config-mainnet.json +++ b/config-mainnet.json @@ -7,6 +7,8 @@ "USDC_ADDRESS": "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", "BTC_ADDRESS": "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac", "STRK_ADDRESS": "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "VE_CRM_ADDRESS": "0x3c0286e9e428a130ae7fbbe911b794e8a829c367dd788e7cfe3efb0367548fa", + "CRM_ADDRESS": "0x51c4b1fe3bf6774b87ad0b15ef5d1472759076e42944fff9b9f641ff13e5bbe", "ETH_USDC_CALL_ADDRESS": "0x70cad6be2c3fc48c745e4a4b70ef578d9c79b46ffac4cd93ec7b61f951c7c5c", "ETH_USDC_PUT_ADDRESS": "0x466e3a6731571cf5d74c5b0d9c508bfb71438de10f9a13269177b01d6f07159", "BTC_USDC_CALL_ADDRESS": "0x35db72a814c9b30301f646a8fa8c192ff63a0dc82beb390a36e6e9eba55b6db", diff --git a/config-testnet.json b/config-testnet.json index 27ea8f5f..65979b6a 100644 --- a/config-testnet.json +++ b/config-testnet.json @@ -2,11 +2,13 @@ "NETWORK": "testnet", "API_URL": "https://api.carmine.finance", "AMM_ADDRESS": "0x07587280e108db0681eb60190ed1f5bd737965177f6c13551ab2e50d6644d382", - "GOVERNANCE_ADDRESS": "TODO", + "GOVERNANCE_ADDRESS": "0x02c027aad2668aa66d232d846c190785ade993b032f9ad44893739b365b89d34", "ETH_ADDRESS": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", "USDC_ADDRESS": "0x07b5be4ebf7c50f67d54d328c45ee21b06de8e39240c7943b25ab811c07c43e4", "BTC_ADDRESS": "0x00c6164da852d230360333d6ade3551ee3e48124c815704f51fa7f12d8287dcc", "STRK_ADDRESS": "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "VE_CRM_ADDRESS": "0x4a6bd0934f92e8419280e3b7d83db9a1ed15c25991ee91713042dddebe72b7e", + "CRM_ADDRESS": "0x5e5bf796ce003158104836ce0eb92ba4387676cc43ba9bfa540cdabe66c2c7e", "ETH_USDC_CALL_ADDRESS": "0x201f9513450a32a1f3803f289ee7d104735cd1f933712fffc1cdae98ad6c008", "ETH_USDC_PUT_ADDRESS": "0x3271dbd7dc85550648cd561595fae76393490a8650b9225e9b4392e09b20c7c", "BTC_USDC_CALL_ADDRESS": "0x6fbe70f97f93f9b42707b7cadabba472eb810af5fe1f06da04583b1724a8c2b", diff --git a/src/abi/governance_abi.json b/src/abi/governance_abi.json index e419cbea..d7b6fdac 100644 --- a/src/abi/governance_abi.json +++ b/src/abi/governance_abi.json @@ -1,132 +1,787 @@ [ { + "name": "Governance", + "type": "impl", + "interface_name": "konoha::contract::IGovernance" + }, + { + "name": "konoha::contract::IGovernance", + "type": "interface", + "items": [ + { + "name": "get_governance_token_address", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "CarmineGovernance", + "type": "impl", + "interface_name": "amm_governance::contract::ICarmineGovernance" + }, + { + "name": "amm_governance::contract::ICarmineGovernance", + "type": "interface", + "items": [ + { + "name": "get_amm_address", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "Migrate", + "type": "impl", + "interface_name": "amm_governance::contract::IMigrate" + }, + { + "name": "amm_governance::contract::IMigrate", + "type": "interface", + "items": [ + { + "name": "add_custom_proposals", + "type": "function", + "inputs": [], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "name": "Airdrop", + "type": "impl", + "interface_name": "konoha::airdrop::IAirdrop" + }, + { + "name": "konoha::airdrop::IAirdrop", + "type": "interface", + "items": [ + { + "name": "claim", + "type": "function", + "inputs": [ + { + "name": "claimee", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u128" + }, + { + "name": "proof", + "type": "core::array::Array::" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "name": "Proposals", + "type": "impl", + "interface_name": "amm_governance::proposals::IProposals" + }, + { + "name": "konoha::types::PropDetails", "type": "struct", - "name": "governance::types::PropDetails", "members": [ - { "name": "impl_hash", "type": "core::felt252" }, - { "name": "to_upgrade", "type": "core::felt252" } + { + "name": "payload", + "type": "core::felt252" + }, + { + "name": "to_upgrade", + "type": "core::felt252" + } ] }, { - "type": "function", - "name": "get_proposal_details", - "inputs": [{ "name": "prop_id", "type": "core::felt252" }], - "outputs": [{ "type": "governance::types::PropDetails" }], - "state_mutability": "view" + "name": "core::array::Span::", + "type": "struct", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] }, { - "type": "function", - "name": "get_vote_counts", - "inputs": [{ "name": "prop_id", "type": "core::felt252" }], - "outputs": [{ "type": "(core::integer::u128, core::integer::u128)" }], - "state_mutability": "view" + "name": "core::bool", + "type": "enum", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] }, { - "type": "function", - "name": "submit_proposal", - "inputs": [ - { "name": "impl_hash", "type": "core::felt252" }, - { "name": "to_upgrade", "type": "core::felt252" } - ], - "outputs": [{ "type": "core::felt252" }], - "state_mutability": "external" + "name": "konoha::types::CustomProposalConfig", + "type": "struct", + "members": [ + { + "name": "target", + "type": "core::felt252" + }, + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "library_call", + "type": "core::bool" + } + ] }, { - "type": "function", - "name": "vote", - "inputs": [ - { "name": "prop_id", "type": "core::felt252" }, - { "name": "opinion", "type": "core::felt252" } - ], - "outputs": [], - "state_mutability": "external" + "name": "amm_governance::proposals::IProposals", + "type": "interface", + "items": [ + { + "name": "vote", + "type": "function", + "inputs": [ + { + "name": "prop_id", + "type": "core::felt252" + }, + { + "name": "opinion", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "get_proposal_details", + "type": "function", + "inputs": [ + { + "name": "prop_id", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "konoha::types::PropDetails" + } + ], + "state_mutability": "view" + }, + { + "name": "get_vote_counts", + "type": "function", + "inputs": [ + { + "name": "prop_id", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "(core::integer::u128, core::integer::u128)" + } + ], + "state_mutability": "view" + }, + { + "name": "submit_proposal", + "type": "function", + "inputs": [ + { + "name": "payload", + "type": "core::felt252" + }, + { + "name": "to_upgrade", + "type": "core::integer::u64" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "external" + }, + { + "name": "get_proposal_status", + "type": "function", + "inputs": [ + { + "name": "prop_id", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "name": "get_live_proposals", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::array::Array::" + } + ], + "state_mutability": "view" + }, + { + "name": "get_user_voted", + "type": "function", + "inputs": [ + { + "name": "user_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "prop_id", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "name": "submit_custom_proposal", + "type": "function", + "inputs": [ + { + "name": "custom_proposal_type", + "type": "core::integer::u32" + }, + { + "name": "calldata", + "type": "core::array::Span::" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "name": "get_custom_proposal_type", + "type": "function", + "inputs": [ + { + "name": "i", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "konoha::types::CustomProposalConfig" + } + ], + "state_mutability": "view" + } + ] }, { - "type": "function", - "name": "get_proposal_status", - "inputs": [{ "name": "prop_id", "type": "core::felt252" }], - "outputs": [{ "type": "core::felt252" }], - "state_mutability": "view" + "name": "Upgrades", + "type": "impl", + "interface_name": "amm_governance::upgrades::IUpgrades" }, { - "type": "function", - "name": "vote_investor", - "inputs": [ - { "name": "prop_id", "type": "core::felt252" }, - { "name": "opinion", "type": "core::felt252" } - ], - "outputs": [], - "state_mutability": "external" + "name": "amm_governance::upgrades::IUpgrades", + "type": "interface", + "items": [ + { + "name": "apply_passed_proposal", + "type": "function", + "inputs": [ + { + "name": "prop_id", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] }, { - "type": "function", - "name": "get_governance_token_address", - "inputs": [], - "outputs": [ - { "type": "core::starknet::contract_address::ContractAddress" } - ], - "state_mutability": "view" + "name": "Staking", + "type": "impl", + "interface_name": "amm_governance::staking::IStaking" }, { - "type": "function", - "name": "get_amm_address", - "inputs": [], - "outputs": [ - { "type": "core::starknet::contract_address::ContractAddress" } - ], - "state_mutability": "view" + "name": "amm_governance::staking::staking::Stake", + "type": "struct", + "members": [ + { + "name": "amount_staked", + "type": "core::integer::u128" + }, + { + "name": "amount_voting_token", + "type": "core::integer::u128" + }, + { + "name": "start_date", + "type": "core::integer::u64" + }, + { + "name": "length", + "type": "core::integer::u64" + }, + { + "name": "withdrawn", + "type": "core::bool" + } + ] }, { - "type": "function", - "name": "apply_passed_proposal", - "inputs": [{ "name": "prop_id", "type": "core::felt252" }], - "outputs": [], - "state_mutability": "external" + "name": "amm_governance::staking::IStaking", + "type": "interface", + "items": [ + { + "name": "stake", + "type": "function", + "inputs": [ + { + "name": "length", + "type": "core::integer::u64" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "name": "unstake", + "type": "function", + "inputs": [ + { + "name": "id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "unstake_airdrop", + "type": "function", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "set_curve_point", + "type": "function", + "inputs": [ + { + "name": "length", + "type": "core::integer::u64" + }, + { + "name": "conversion_rate", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "set_floating_token_address", + "type": "function", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "initialize_floating_token_address", + "type": "function", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "get_floating_token_address", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "name": "get_stake", + "type": "function", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "stake_id", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "amm_governance::staking::staking::Stake" + } + ], + "state_mutability": "view" + }, + { + "name": "get_total_voting_power", + "type": "function", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u128" + } + ], + "state_mutability": "view" + }, + { + "name": "get_adjusted_voting_power", + "type": "function", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u128" + } + ], + "state_mutability": "view" + } + ] }, { - "type": "function", - "name": "claim", + "name": "constructor", + "type": "constructor", "inputs": [ { + "name": "voting_token_class", + "type": "core::starknet::class_hash::ClassHash" + }, + { + "name": "floating_token_class", + "type": "core::starknet::class_hash::ClassHash" + }, + { + "name": "recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "kind": "struct", + "name": "konoha::airdrop::airdrop::Claimed", + "type": "event", + "members": [ + { + "kind": "data", "name": "address", "type": "core::starknet::contract_address::ContractAddress" }, - { "name": "amount", "type": "core::integer::u128" }, - { "name": "proof", "type": "core::array::Array::" } - ], - "outputs": [], - "state_mutability": "external" + { + "kind": "data", + "name": "received", + "type": "core::integer::u128" + } + ] }, { + "kind": "enum", + "name": "konoha::airdrop::airdrop::Event", "type": "event", - "name": "Proposed", - "inputs": [ - { "name": "prop_id", "type": "core::felt252" }, - { "name": "impl_hash", "type": "core::felt252" }, - { "name": "to_upgrade", "type": "core::felt252" } + "variants": [ + { + "kind": "nested", + "name": "Claimed", + "type": "konoha::airdrop::airdrop::Claimed" + } ] }, { + "kind": "struct", + "name": "amm_governance::proposals::proposals::Proposed", "type": "event", - "name": "Voted", - "inputs": [ - { "name": "prop_id", "type": "core::felt252" }, + "members": [ { + "kind": "data", + "name": "prop_id", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "payload", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "to_upgrade", + "type": "core::integer::u64" + } + ] + }, + { + "kind": "struct", + "name": "amm_governance::proposals::proposals::Voted", + "type": "event", + "members": [ + { + "kind": "data", + "name": "prop_id", + "type": "core::felt252" + }, + { + "kind": "data", "name": "voter", "type": "core::starknet::contract_address::ContractAddress" }, - { "name": "opinion", "type": "core::felt252" } + { + "kind": "data", + "name": "opinion", + "type": "core::felt252" + } + ] + }, + { + "kind": "enum", + "name": "amm_governance::proposals::proposals::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "Proposed", + "type": "amm_governance::proposals::proposals::Proposed" + }, + { + "kind": "nested", + "name": "Voted", + "type": "amm_governance::proposals::proposals::Voted" + } ] }, { + "kind": "struct", + "name": "amm_governance::upgrades::upgrades::Upgraded", "type": "event", - "name": "Claimed", - "inputs": [ + "members": [ { - "name": "address", + "kind": "data", + "name": "prop_id", + "type": "core::integer::u64" + }, + { + "kind": "data", + "name": "upgrade_type", + "type": "core::integer::u64" + } + ] + }, + { + "kind": "enum", + "name": "amm_governance::upgrades::upgrades::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "Upgraded", + "type": "amm_governance::upgrades::upgrades::Upgraded" + } + ] + }, + { + "kind": "struct", + "name": "amm_governance::staking::staking::Staked", + "type": "event", + "members": [ + { + "kind": "data", + "name": "user", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "stake_id", + "type": "core::integer::u32" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u128" + }, + { + "kind": "data", + "name": "amount_voting_token", + "type": "core::integer::u128" + }, + { + "kind": "data", + "name": "start_date", + "type": "core::integer::u64" + }, + { + "kind": "data", + "name": "length", + "type": "core::integer::u64" + } + ] + }, + { + "kind": "struct", + "name": "amm_governance::staking::staking::Unstaked", + "type": "event", + "members": [ + { + "kind": "data", + "name": "user", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "stake_id", + "type": "core::integer::u32" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u128" + }, + { + "kind": "data", + "name": "amount_voting_token", + "type": "core::integer::u128" + }, + { + "kind": "data", + "name": "start_date", + "type": "core::integer::u64" + }, + { + "kind": "data", + "name": "length", + "type": "core::integer::u64" + } + ] + }, + { + "kind": "struct", + "name": "amm_governance::staking::staking::UnstakedAirdrop", + "type": "event", + "members": [ + { + "kind": "data", + "name": "user", "type": "core::starknet::contract_address::ContractAddress" }, - { "name": "received", "type": "core::integer::u128" } + { + "kind": "data", + "name": "amount", + "type": "core::integer::u128" + } + ] + }, + { + "kind": "enum", + "name": "amm_governance::staking::staking::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "Staked", + "type": "amm_governance::staking::staking::Staked" + }, + { + "kind": "nested", + "name": "Unstaked", + "type": "amm_governance::staking::staking::Unstaked" + }, + { + "kind": "nested", + "name": "UnstakedAirdrop", + "type": "amm_governance::staking::staking::UnstakedAirdrop" + } + ] + }, + { + "kind": "enum", + "name": "amm_governance::contract::Governance::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "AirdropEvent", + "type": "konoha::airdrop::airdrop::Event" + }, + { + "kind": "nested", + "name": "ProposalsEvent", + "type": "amm_governance::proposals::proposals::Event" + }, + { + "kind": "nested", + "name": "UpgradesEvent", + "type": "amm_governance::upgrades::upgrades::Event" + }, + { + "kind": "nested", + "name": "StakingEvent", + "type": "amm_governance::staking::staking::Event" + } ] } -] +] \ No newline at end of file diff --git a/src/calls/balanceOf.ts b/src/calls/balanceOf.ts index ac62cf83..3224b051 100644 --- a/src/calls/balanceOf.ts +++ b/src/calls/balanceOf.ts @@ -6,11 +6,10 @@ import { ETH_ADDRESS, STRK_ADDRESS, USDC_ADDRESS, + VE_CRM_ADDRESS, } from "../constants/amm"; import { Token, TokenKey } from "../classes/Token"; - -const CARM_TOKEN_ADDRESS = - "0x3c0286e9e428a130ae7fbbe911b794e8a829c367dd788e7cfe3efb0367548fa"; +import { provider } from "../network/provider"; export const balanceFromTokenAddress = async ( account: AccountInterface, @@ -57,7 +56,16 @@ export const balanceOfStrk = async ( export const balanceOfCarmineToken = async ( account: AccountInterface -): Promise => balanceFromTokenAddress(account, CARM_TOKEN_ADDRESS); +): Promise => balanceFromTokenAddress(account, VE_CRM_ADDRESS); + +export const balanceOf = async ( + address: string, + token: string +): Promise => { + const contract = new Contract(ABI, token, provider); + const balance = await contract.balanceOf(address); + return balance; +}; export const getUserBalance = async ( account: AccountInterface diff --git a/src/calls/carmineStake.ts b/src/calls/carmineStake.ts new file mode 100644 index 00000000..f2569cad --- /dev/null +++ b/src/calls/carmineStake.ts @@ -0,0 +1,172 @@ +import { AccountInterface } from "starknet"; +import { governanceContract } from "../constants/starknet"; +import { CarmineStakeResult } from "../types/governance"; + +import GovernanceABI from "../abi/governance_abi.json"; +import { GOVERNANCE_ADDRESS } from "../constants/amm"; +import { + addTx, + markTxAsDone, + markTxAsFailed, + showToast, +} from "../redux/actions"; +import { TransactionAction } from "../redux/reducers/transactions"; +import { afterTransaction } from "../utils/blockchain"; +import { ToastType } from "../redux/reducers/ui"; +import { TransactionState, TxTracking } from "../types/network"; +import { CarmineStake } from "../classes/CarmineStake"; + +const isEmptyStake = (stake: CarmineStakeResult): boolean => { + if (stake.amount_staked === 0n && stake.start_date === 0n) { + return true; + } + return false; +}; + +export const getStakes = async (address: string): Promise => { + const increment = 5; + const stakes = []; + let lastId = 0; + + while (true) { + const promises = []; + for (let i = lastId; i < lastId + increment; i++) { + promises.push(governanceContract.get_stake(address, i)); + } + const values = (await Promise.all(promises)) as CarmineStakeResult[]; + stakes.push(...values.filter((v) => !isEmptyStake(v))); + if (values.find((v) => isEmptyStake(v))) { + break; + } + lastId += increment; + } + + return stakes.map((s) => new CarmineStake(s)); +}; + +export const stakeCarmineToken = async ( + account: AccountInterface, + length: bigint, + amount: bigint, + setState: TxTracking +) => { + setState(TransactionState.Processing); + const call = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "stake", + calldata: [length, amount], + }; + const res = await account.execute(call, [GovernanceABI]).catch(() => { + showToast("Failed to stake CRM", ToastType.Error); + setState(TransactionState.Fail); + return undefined; + }); + + if (!res) { + return; + } + + const { transaction_hash: hash } = res; + + addTx(hash, `stake-${hash}`, TransactionAction.TradeOpen); + afterTransaction( + hash, + () => { + markTxAsDone(hash); + showToast("Successfully staked CRM", ToastType.Success); + setState(TransactionState.Success); + }, + () => { + markTxAsFailed(hash); + showToast("Failed to stake CRM", ToastType.Error); + setState(TransactionState.Fail); + } + ); +}; + +export const claimAndStakeCarmineToken = async ( + account: AccountInterface, + claimData: string[], + length: bigint, + amount: bigint, + setState: TxTracking +) => { + setState(TransactionState.Processing); + const [address, claimAmount, ...proof] = claimData; + const claimCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "claim", + calldata: [address, claimAmount, String(proof.length), ...proof], + }; + const stakeCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "stake", + calldata: [length, amount], + }; + const res = await account + .execute([claimCall, stakeCall], [GovernanceABI]) + .catch(() => { + showToast("Failed to claim & stake", ToastType.Error); + setState(TransactionState.Fail); + return undefined; + }); + + if (!res) { + return; + } + + const { transaction_hash: hash } = res; + + addTx(hash, `stake-${hash}`, TransactionAction.TradeOpen); + afterTransaction( + hash, + () => { + markTxAsDone(hash); + showToast("Successfully claimed & staked CRM", ToastType.Success); + setState(TransactionState.Success); + }, + () => { + markTxAsFailed(hash); + showToast("Failed to claim & stake CRM", ToastType.Error); + setState(TransactionState.Fail); + } + ); +}; + +export const unstakeAirdrop = async ( + account: AccountInterface, + setTxState: TxTracking +) => { + setTxState(TransactionState.Processing); + const call = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "unstake_airdrop", + calldata: [], + }; + const res = await account.execute(call, [GovernanceABI]).catch(() => { + showToast("Failed to unstake", ToastType.Error); + return undefined; + }); + + if (!res) { + setTxState(TransactionState.Fail); + return; + } + + const { transaction_hash: hash } = res; + + addTx(hash, `unstake-${hash}`, TransactionAction.ClaimAirdrop); + afterTransaction( + hash, + () => { + markTxAsDone(hash); + showToast("Successfully unstaked CRM", ToastType.Success); + setTxState(TransactionState.Success); + }, + () => { + markTxAsFailed(hash); + showToast("Failed to unstake CRM", ToastType.Error); + setTxState(TransactionState.Fail); + } + ); +}; diff --git a/src/classes/CarmineStake.ts b/src/classes/CarmineStake.ts new file mode 100644 index 00000000..88db3dea --- /dev/null +++ b/src/classes/CarmineStake.ts @@ -0,0 +1,84 @@ +import { CARMINE_STAKING_MONTH } from "../constants/amm"; +import { CarmineStakeResult } from "../types/governance"; +import { shortInteger } from "../utils/computations"; + +const formatDate = (ts: number) => + new Intl.DateTimeFormat("default", { + hour: "numeric", + minute: "numeric", + month: "numeric", + day: "numeric", + year: "numeric", + timeZoneName: "short", + }).format(ts * 1000); + +export class CarmineStake { + public amountStaked; + public amountVotingToken; + public start; + public length; + public withdrawn; + public end; + + constructor({ + amount_staked, + amount_voting_token, + start_date, + length, + withdrawn, + }: CarmineStakeResult) { + const numStart = Number(start_date); + const numLength = Number(length); + this.amountStaked = amount_staked; + this.amountVotingToken = amount_voting_token; + this.start = numStart; + this.length = numLength; + this.withdrawn = withdrawn; + this.end = numStart + numLength; + } + + get isActive(): boolean { + const now = Date.now() / 1000; + return !this.withdrawn && this.end > now; + } + + get isExpired(): boolean { + const now = Date.now() / 1000; + return !this.withdrawn && this.end <= now; + } + + get isNotWithdrawn(): boolean { + return !this.withdrawn; + } + + get startDate(): string { + return formatDate(this.start); + } + + get endDate(): string { + return formatDate(this.end); + } + + get period(): string { + const months = this.length / CARMINE_STAKING_MONTH; + + if (months === 1) { + return "1 month"; + } + if (months === 12) { + return "1 year"; + } + if (months > 12) { + return months / 12 + "years"; + } + return months + " months"; + } + + get amountStakedHumanReadable(): number { + return shortInteger(this.amountStaked, 18); + } + + get amountVotingTokenHumanReadable(): number { + return shortInteger(this.amountVotingToken, 18); + } +} diff --git a/src/components/Airdrop/Airdrop.tsx b/src/components/Airdrop/Airdrop.tsx index 7c8e85e5..c23b1557 100644 --- a/src/components/Airdrop/Airdrop.tsx +++ b/src/components/Airdrop/Airdrop.tsx @@ -1,97 +1,113 @@ -import { ClaimButton } from "./ClaimButton"; -import { useAccount } from "../../hooks/useAccount"; -import { useEffect, useState } from "react"; -import { useNetwork } from "../../hooks/useNetwork"; -import { ProofResult, getProof } from "./getProof"; +import { useState } from "react"; +import { useQuery } from "react-query"; import { AccountInterface } from "starknet"; + +import { useAccount } from "../../hooks/useAccount"; +import { Eligible, getAirdropDataQuery } from "./getProof"; import { shortInteger } from "../../utils/computations"; -import { NETWORK } from "../../constants/amm"; +import { isMainnet } from "../../constants/amm"; +import { QueryKeys } from "../../queries/keys"; +import { AirdropModal } from "./AirdropModal"; + import styles from "../../style/table.module.css"; +import buttonStyles from "../../style/button.module.css"; +import airdropStyles from "./airdrop.module.css"; + +const ClaimAndStake = ({ + account, + data, +}: { + account: AccountInterface; + data: Eligible; +}) => { + const [open, setOpen] = useState(false); + const amountHumanReadable = shortInteger(data.claimable, 18); -type Props = { - account: AccountInterface | undefined; - message: string; - data?: string[]; + return ( +
+

Airdrop

+
+ + You are eligible to claim {amountHumanReadable} CRM! + + +
+ +
+ ); }; -const AirdropTemplate = ({ account, message, data }: Props) => ( +const AirdropTemplate = ({ message }: { message: string }) => (

Airdrop

-
- {message} {account && } -
+
{message}
); -export const Airdrop = () => { - const account = useAccount(); - const network = useNetwork(); - const [loading, setLoading] = useState(false); - const [data, setData] = useState(); - - const isMainnet = NETWORK === "mainnet"; - - useEffect(() => { - if (account && isMainnet) { - setLoading(true); - getProof(account).then((res) => { - setData(res); - setLoading(false); - }); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [account, network]); - - if (!isMainnet) { - return ( - - ); - } +export const AirdropWithAccount = ({ + account, +}: { + account: AccountInterface; +}) => { + const { isLoading, isError, data } = useQuery( + [QueryKeys.airdropData, account.address], + getAirdropDataQuery + ); - if (!account) { + if (isError) { return ( - + ); } - if (loading || !data) { + if (isLoading || !data) { return ( - + ); } if (data.eligible) { - if (data.claimable === "0") { + if (data.claimable === 0n) { const amount = shortInteger(data.claimed, 18); return ( ); } - const amount = shortInteger(data.claimable, 18); - const message = `${amount} Tokens available.`; + return ; + } + + return ( + + ); +}; + +export const Airdrop = () => { + const account = useAccount(); + if (!account) { return ( - + ); } - return ( - - ); + if (!isMainnet) { + return ( + + ); + } + + return ; }; diff --git a/src/components/Airdrop/AirdropModal.tsx b/src/components/Airdrop/AirdropModal.tsx new file mode 100644 index 00000000..ffc464a4 --- /dev/null +++ b/src/components/Airdrop/AirdropModal.tsx @@ -0,0 +1,270 @@ +import { Dialog } from "@mui/material"; +import { AccountInterface } from "starknet"; +import { Eligible } from "./getProof"; + +import { shortInteger } from "../../utils/computations"; +import { CARMINE_STAKING_MONTH, GOVERNANCE_ADDRESS } from "../../constants/amm"; + +import GovernanceABI from "../../abi/governance_abi.json"; +import { + addTx, + markTxAsDone, + markTxAsFailed, + showToast, +} from "../../redux/actions"; +import { afterTransaction } from "../../utils/blockchain"; +import { TransactionAction } from "../../redux/reducers/transactions"; +import { ToastType } from "../../redux/reducers/ui"; +import { useState } from "react"; +import { TransactionState, TxTracking } from "../../types/network"; +import { LoadingAnimation } from "../Loading/Loading"; + +import styles from "./airdrop.module.css"; +import buttonStyles from "../../style/button.module.css"; + +export const claim = async ( + account: AccountInterface, + data: string[], + setTxState: TxTracking +) => { + setTxState(TransactionState.Processing); + const [address, amount, ...proof] = data; + + // calldata structure explained here: https://github.com/CarmineOptions/carmine-api/tree/master/carmine-api-airdrop + // in Cairo, to send array you need to insert the length of array before the array items - "String(proof.length)" + const calldata = [address, amount, String(proof.length), ...proof]; + const call = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "claim", + calldata, + }; + const res = await account.execute(call, [GovernanceABI]).catch(() => null); + + if (res?.transaction_hash) { + const hash = res.transaction_hash; + + addTx(hash, "airdrop-claim", TransactionAction.ClaimAirdrop); + afterTransaction( + res.transaction_hash, + () => { + setTxState(TransactionState.Success); + showToast("Successfully claimed airdrop", ToastType.Success); + markTxAsDone(hash); + }, + () => { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + markTxAsFailed(hash); + } + ); + } else { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + } +}; + +export const claimAndStake = async ( + account: AccountInterface, + data: string[], + airdropAmount: bigint, + length: number, + setTxState: TxTracking +) => { + setTxState(TransactionState.Processing); + const [address, amount, ...proof] = data; + + // calldata structure explained here: https://github.com/CarmineOptions/carmine-api/tree/master/carmine-api-airdrop + // in Cairo, to send array you need to insert the length of array before the array items - "String(proof.length)" + const claimCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "claim", + calldata: [address, amount, String(proof.length), ...proof], + }; + const unstakeAirdropCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "unstake_airdrop", + calldata: [], + }; + const stakeCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "stake", + calldata: [length, airdropAmount], + }; + + const res = await account + .execute( + [claimCall, unstakeAirdropCall, stakeCall], + [GovernanceABI, GovernanceABI, GovernanceABI] + ) + .catch(() => null); + + if (res?.transaction_hash) { + const hash = res.transaction_hash; + + addTx(hash, `airdrop-stake-${length}`, TransactionAction.ClaimAirdrop); + afterTransaction( + res.transaction_hash, + () => { + setTxState(TransactionState.Success); + showToast("Successfully claimed and staked airdrop", ToastType.Success); + markTxAsDone(hash); + }, + () => { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + markTxAsFailed(hash); + } + ); + } else { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + } +}; + +type Props = { + account: AccountInterface; + data: Eligible; + open: boolean; + setOpen: (open: boolean) => void; +}; + +const stateToClassName = (state: TransactionState) => { + if (state === TransactionState.Success) { + return buttonStyles.green; + } + if (state === TransactionState.Fail) { + return buttonStyles.fail; + } + if (state === TransactionState.Processing) { + return buttonStyles.disabled; + } + return buttonStyles.secondary; +}; + +export const AirdropModal = ({ account, data, open, setOpen }: Props) => { + const [claimState, setClaimState] = useState(TransactionState.Initial); + const [monthState, setMonthState] = useState(TransactionState.Initial); + const [sixMonthsState, setSixMonthsState] = useState( + TransactionState.Initial + ); + const [yearState, setYearState] = useState(TransactionState.Initial); + + const handleClose = () => { + setOpen(false); + setClaimState(TransactionState.Initial); + setMonthState(TransactionState.Initial); + setSixMonthsState(TransactionState.Initial); + setYearState(TransactionState.Initial); + }; + + const handleClaim = () => claim(account, data.proof, setClaimState); + + const handle1month = () => { + setSixMonthsState(TransactionState.Processing); + setYearState(TransactionState.Processing); + claimAndStake( + account, + data.proof, + data.claimable, + CARMINE_STAKING_MONTH, + setMonthState + ).then(() => { + setSixMonthsState(TransactionState.Initial); + setYearState(TransactionState.Initial); + }); + }; + const handle6months = () => { + setMonthState(TransactionState.Processing); + setYearState(TransactionState.Processing); + claimAndStake( + account, + data.proof, + data.claimable, + 6 * CARMINE_STAKING_MONTH, + setSixMonthsState + ).then(() => { + setMonthState(TransactionState.Initial); + setYearState(TransactionState.Initial); + }); + }; + const handleYear = () => { + setMonthState(TransactionState.Processing); + setSixMonthsState(TransactionState.Processing); + claimAndStake( + account, + data.proof, + data.claimable, + CARMINE_STAKING_MONTH, + setYearState + ).then(() => { + setMonthState(TransactionState.Initial); + setSixMonthsState(TransactionState.Initial); + }); + }; + + return ( + +
+

Claim Airdrop

+

+ Congratulations! You are eligible to claim{" "} + {shortInteger(data.claimable, 18)} CRM! +

+

You can claim and stake for any of these periods:

+
+ + + +
+

Alternatively you can claim without staking:

+
+ +
+
+
+ ); +}; diff --git a/src/components/Airdrop/airdrop.module.css b/src/components/Airdrop/airdrop.module.css index a92c7a2b..1d7b5157 100644 --- a/src/components/Airdrop/airdrop.module.css +++ b/src/components/Airdrop/airdrop.module.css @@ -5,6 +5,15 @@ padding: 25px 50px; } +.claim { + border: 1px solid white; + display: inline-flex; + align-items: center; + justify-content: flex-start; + gap: 50px; + padding: 20px 50px; +} + .active { padding-left: 7px; cursor: pointer; @@ -14,4 +23,41 @@ .inactive { padding-left: 7px; color: gray; +} + +.modal { + background: black; + border: 1px solid white; + padding: 30px; +} + +.modal h3 { + margin-top: 0; +} + +.buttongroup { + display: flex; + justify-content: space-between; + align-items: center; +} + +.singlebutton { + display: flex; + justify-content: space-around; + align-items: center; +} + +@media (max-width: 800px) { + .claim { + flex-flow: column; + align-items: center; + justify-content: center; + gap: 50px; + padding: 20px 50px; + } + + .buttongroup { + flex-flow: column; + gap: 15px; + } } \ No newline at end of file diff --git a/src/components/Airdrop/getProof.ts b/src/components/Airdrop/getProof.ts index ccfefc55..4067e60d 100644 --- a/src/components/Airdrop/getProof.ts +++ b/src/components/Airdrop/getProof.ts @@ -1,14 +1,13 @@ -import { AccountInterface } from "starknet"; -import { coreTeamAddresses } from "../../constants/amm"; -import { balanceOfCarmineToken } from "../../calls/balanceOf"; -import { hexToBN, standardiseAddress } from "../../utils/utils"; +import { hexToBN } from "../../utils/utils"; import { debug } from "../../utils/debugger"; import { apiUrl } from "../../api"; +import { readStorage } from "../CarmineStaking/calls"; +import { QueryFunctionContext } from "react-query"; -type Eligible = { +export type Eligible = { eligible: true; - claimable: string; - claimed: string; + claimable: bigint; + claimed: bigint; proof: string[]; }; @@ -18,37 +17,25 @@ type NotEligible = { export type ProofResult = Eligible | NotEligible; -export const getProof = async ( - account: AccountInterface -): Promise => { - const merkleTreeRequest = fetch( - apiUrl(`airdrop?address=${account.address}`) - ).then((r) => r.json()); - // since CARM token cannot currently be transfered balanceOf is the amount claimed for tokens - // that are transferable a view function "claimedAmount" need to be added to airdrop SC - const carmBalanceRequest = balanceOfCarmineToken(account); +export const getProof = async (address: string): Promise => { + const merkleTreeRequest = fetch(apiUrl(`airdrop?address=${address}`)).then( + (r) => r.json() + ); + + const claimedPromise = readStorage(address); const [merkleTreeResponse, claimed] = await Promise.all([ merkleTreeRequest, - carmBalanceRequest, + claimedPromise, ]); if (merkleTreeResponse.status !== "success") { return { eligible: false }; } - const isCoreTeam = coreTeamAddresses.includes( - standardiseAddress(account.address) - ); - const total = hexToBN(merkleTreeResponse.data[1]); const diff = total - claimed; - // account for tiny differences - const claimable = isCoreTeam - ? total.toString(10) - : diff < 100n - ? "0" - : diff.toString(10); + const claimable = diff < 100n ? 0n : total - claimed; debug("CARM token claim data:", { total: total.toString(10), @@ -60,6 +47,13 @@ export const getProof = async ( eligible: true, proof: merkleTreeResponse.data, // proof generated by backend claimable, // how much can be claimed - claimed: claimed.toString(10), // how much has been claimed + claimed: claimed, // how much has been claimed }; }; + +export const getAirdropDataQuery = async ({ + queryKey, +}: QueryFunctionContext<[string, string]>): Promise => { + const address = queryKey[1]; + return getProof(address); +}; diff --git a/src/components/CarmineStaking/StakeCRM.tsx b/src/components/CarmineStaking/StakeCRM.tsx new file mode 100644 index 00000000..e48a9cb8 --- /dev/null +++ b/src/components/CarmineStaking/StakeCRM.tsx @@ -0,0 +1,184 @@ +import { AccountInterface } from "starknet"; +import { useState } from "react"; +import { longInteger, shortInteger } from "../../utils/computations"; +import { CARMINE_STAKING_MONTH, GOVERNANCE_ADDRESS } from "../../constants/amm"; +import { TransactionState, TxTracking } from "../../types/network"; +import { stateToClassName } from "./StakingModal"; +import { LoadingAnimation } from "../Loading/Loading"; +import GovernanceABI from "../../abi/governance_abi.json"; +import { TransactionAction } from "../../redux/reducers/transactions"; +import { + addTx, + markTxAsDone, + markTxAsFailed, + showToast, +} from "../../redux/actions"; +import { afterTransaction } from "../../utils/blockchain"; +import { ToastType } from "../../redux/reducers/ui"; + +import styles from "./vest.module.css"; +import inputStyles from "../../style/input.module.css"; +import { invalidateKey } from "../../queries/client"; +import { QueryKeys } from "../../queries/keys"; + +type Props = { + account: AccountInterface; + carmBalance: bigint; +}; + +const stake = async ( + account: AccountInterface, + amount: bigint, + length: number, + setTxState: TxTracking +) => { + setTxState(TransactionState.Processing); + + const stakeCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "stake", + calldata: [length, amount], + }; + + const res = await account + .execute(stakeCall, [GovernanceABI]) + .catch(() => null); + + if (res?.transaction_hash) { + const hash = res.transaction_hash; + + addTx(hash, `stake-${length}`, TransactionAction.ClaimAirdrop); + afterTransaction( + res.transaction_hash, + () => { + setTxState(TransactionState.Success); + showToast("Successfully claimed and staked airdrop", ToastType.Success); + markTxAsDone(hash); + // success, refetch new CRM balance + invalidateKey(QueryKeys.carmineStakes); + }, + () => { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + markTxAsFailed(hash); + } + ); + } else { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + } +}; + +export const StakeCrm = ({ account, carmBalance }: Props) => { + const [inputValue, setInputValue] = useState(""); + + const [monthState, setMonthState] = useState(TransactionState.Initial); + const [sixMonthsState, setSixMonthsState] = useState( + TransactionState.Initial + ); + const [yearState, setYearState] = useState(TransactionState.Initial); + + const numCarmBalance = shortInteger(carmBalance, 18); + const amount = longInteger(parseFloat(inputValue), 18); + + const handle1month = () => { + setSixMonthsState(TransactionState.Processing); + setYearState(TransactionState.Processing); + stake(account, amount, CARMINE_STAKING_MONTH, setMonthState).then(() => { + setSixMonthsState(TransactionState.Initial); + setYearState(TransactionState.Initial); + }); + }; + const handle6months = () => { + setMonthState(TransactionState.Processing); + setYearState(TransactionState.Processing); + stake(account, amount, 6 * CARMINE_STAKING_MONTH, setSixMonthsState).then( + () => { + setMonthState(TransactionState.Initial); + setYearState(TransactionState.Initial); + } + ); + }; + const handleYear = () => { + setMonthState(TransactionState.Processing); + setSixMonthsState(TransactionState.Processing); + stake(account, amount, 12 * CARMINE_STAKING_MONTH, setYearState).then( + () => { + setMonthState(TransactionState.Initial); + setSixMonthsState(TransactionState.Initial); + } + ); + }; + + const handleInputChange = (value: string) => { + // Allow empty string, valid number, or a single decimal point followed by numbers + const numericValue = + value === "" || /^\d*\.?\d{0,6}$/.test(value) ? value : inputValue; + + const num = parseFloat(numericValue); + + if (num && num > numCarmBalance) { + // cannot set more than holds + return; + } + + setInputValue(numericValue); + }; + + const handleAll = () => setInputValue(numCarmBalance.toString(10)); + + return ( +
+

+ Stake your CRM for a period +

+
+
+ handleInputChange(e.target.value)} + /> + +
+ +
+ + + +
+
+
+ ); +}; diff --git a/src/components/CarmineStaking/Stakes.tsx b/src/components/CarmineStaking/Stakes.tsx new file mode 100644 index 00000000..c234cdcc --- /dev/null +++ b/src/components/CarmineStaking/Stakes.tsx @@ -0,0 +1,154 @@ +import { + TableContainer, + Table, + TableHead, + TableRow, + TableCell, + TableBody, +} from "@mui/material"; +import { useState } from "react"; +import { AccountInterface } from "starknet"; + +import { CarmineStake } from "../../classes/CarmineStake"; +import { shortInteger } from "../../utils/computations"; +import { StakingModal } from "./StakingModal"; + +import tableStyles from "../../style/table.module.css"; +import buttonStyles from "../../style/button.module.css"; + +const Item = ({ stake }: { stake: CarmineStake }) => { + return ( + + {stake.startDate} + {stake.endDate} + {stake.period} + {stake.amountStakedHumanReadable} + {stake.amountVotingTokenHumanReadable} + + ); +}; + +const InitialVeCarmItem = ({ + amount, + account, +}: { + amount: bigint; + account: AccountInterface; +}) => { + const [open, setOpen] = useState(false); + + return ( + + -- + -- + -- + {shortInteger(amount, 18)} + 0 + + + + + + ); +}; + +const ExpiredItem = ({ stake }: { stake: CarmineStake }) => { + return ( + + {stake.startDate} + {stake.endDate} + {stake.period} + {stake.amountStakedHumanReadable} + 0 + + + + + ); +}; + +type Props = { + stakes: CarmineStake[]; + veBalance: bigint; + account: AccountInterface; +}; + +export const Stakes = ({ stakes, veBalance, account }: Props) => { + const balanceInStakes = stakes.reduce((acc, cur) => { + if (cur.isNotWithdrawn) { + return acc + cur.amountVotingToken; + } + return acc; + }, 0n); + + const active = stakes.filter((s) => s.isActive); + const expired = stakes.filter((s) => s.isExpired); + + const initialVeCarm = veBalance - balanceInStakes; + + return ( +
+

Expired stakes

+ {expired.length > 0 || initialVeCarm > 0n ? ( + + + + + Start + End + Period + Amount + Voting power + + + + + {initialVeCarm > 0n && ( + + )} + {expired.map((stake, i) => ( + + ))} + +
+
+ ) : ( +

No expired stakes

+ )} + +

Active stakes

+ {active.length > 0 ? ( + + + + + Start + End + Period + Amount + Voting power + + + + {active.map((stake, i) => ( + + ))} + +
+
+ ) : ( +

No active stakes

+ )} +
+ ); +}; diff --git a/src/components/CarmineStaking/Staking.tsx b/src/components/CarmineStaking/Staking.tsx new file mode 100644 index 00000000..d2bb1a40 --- /dev/null +++ b/src/components/CarmineStaking/Staking.tsx @@ -0,0 +1,65 @@ +import { AccountInterface } from "starknet"; +import { Skeleton } from "@mui/material"; +import { useQuery } from "react-query"; + +import { useAccount } from "../../hooks/useAccount"; +import { openWalletConnectDialog } from "../ConnectWallet/Button"; +import { shortInteger } from "../../utils/computations"; +import { Stakes } from "./Stakes"; +import { QueryKeys } from "../../queries/keys"; +import { fetchStakingData } from "./calls"; +import { StakeCrm } from "./StakeCRM"; + +export const StakeWithAccount = ({ + account, +}: { + account: AccountInterface; +}) => { + const { isLoading, isError, data } = useQuery( + [QueryKeys.carmineStakes, account.address], + fetchStakingData + ); + if (isLoading || !data) { + return ; + } + + if (isError) { + return
Something went wrong, please try again later
; + } + + const { veCarmBalance, carmBalance, stakes } = data; + + const humanReadableVeCarmBalance = shortInteger(veCarmBalance, 18); + const humanReadableCarmBalance = shortInteger(carmBalance, 18); + + return ( +
+

+ Find out more about CRM staking and veCRM{" "} + + insert some link here + + . +

+

+ You have {humanReadableCarmBalance} CRM and{" "} + {humanReadableVeCarmBalance} veCRM +

+ {carmBalance >= 0n && ( + + )} + + +
+ ); +}; + +export const CarmineStaking = () => { + const account = useAccount(); + + if (!account) { + return ; + } + + return ; +}; diff --git a/src/components/CarmineStaking/StakingModal.tsx b/src/components/CarmineStaking/StakingModal.tsx new file mode 100644 index 00000000..ca253c10 --- /dev/null +++ b/src/components/CarmineStaking/StakingModal.tsx @@ -0,0 +1,213 @@ +import { Dialog } from "@mui/material"; +import { AccountInterface } from "starknet"; + +import { shortInteger } from "../../utils/computations"; +import { CARMINE_STAKING_MONTH, GOVERNANCE_ADDRESS } from "../../constants/amm"; +import GovernanceABI from "../../abi/governance_abi.json"; +import { + addTx, + markTxAsDone, + markTxAsFailed, + showToast, +} from "../../redux/actions"; +import { afterTransaction } from "../../utils/blockchain"; +import { TransactionAction } from "../../redux/reducers/transactions"; +import { ToastType } from "../../redux/reducers/ui"; +import { useState } from "react"; +import { TransactionState, TxTracking } from "../../types/network"; +import { LoadingAnimation } from "../Loading/Loading"; +import { unstakeAirdrop } from "../../calls/carmineStake"; + +import styles from "./modal.module.css"; +import buttonStyles from "../../style/button.module.css"; + +export const unstakeAndStake = async ( + account: AccountInterface, + amount: bigint, + length: number, + setTxState: TxTracking +) => { + setTxState(TransactionState.Processing); + + const unstakeCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "unstake_airdrop", + calldata: [], + }; + const stakeCall = { + contractAddress: GOVERNANCE_ADDRESS, + entrypoint: "stake", + calldata: [length, amount], + }; + + const res = await account + .execute([unstakeCall, stakeCall], [GovernanceABI, GovernanceABI]) + .catch(() => null); + + if (res?.transaction_hash) { + const hash = res.transaction_hash; + + addTx(hash, `airdrop-stake-${length}`, TransactionAction.ClaimAirdrop); + afterTransaction( + res.transaction_hash, + () => { + setTxState(TransactionState.Success); + showToast("Successfully claimed and staked airdrop", ToastType.Success); + markTxAsDone(hash); + }, + () => { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + markTxAsFailed(hash); + } + ); + } else { + setTxState(TransactionState.Fail); + showToast("Failed claiming airdrop", ToastType.Error); + } +}; + +type Props = { + account: AccountInterface; + amount: bigint; + open: boolean; + setOpen: (open: boolean) => void; +}; + +export const stateToClassName = (state: TransactionState) => { + if (state === TransactionState.Success) { + return buttonStyles.green; + } + if (state === TransactionState.Fail) { + return buttonStyles.fail; + } + if (state === TransactionState.Processing) { + return buttonStyles.disabled; + } + return buttonStyles.secondary; +}; + +export const StakingModal = ({ account, amount, open, setOpen }: Props) => { + const [unstakeState, setUnstakeState] = useState(TransactionState.Initial); + const [monthState, setMonthState] = useState(TransactionState.Initial); + const [sixMonthsState, setSixMonthsState] = useState( + TransactionState.Initial + ); + const [yearState, setYearState] = useState(TransactionState.Initial); + + const handleClose = () => { + setOpen(false); + setUnstakeState(TransactionState.Initial); + setMonthState(TransactionState.Initial); + setSixMonthsState(TransactionState.Initial); + setYearState(TransactionState.Initial); + }; + + const handleUnstake = () => unstakeAirdrop(account, setUnstakeState); + + const handle1month = () => { + setSixMonthsState(TransactionState.Processing); + setYearState(TransactionState.Processing); + unstakeAndStake(account, amount, CARMINE_STAKING_MONTH, setMonthState).then( + () => { + setSixMonthsState(TransactionState.Initial); + setYearState(TransactionState.Initial); + } + ); + }; + const handle6months = () => { + setMonthState(TransactionState.Processing); + setYearState(TransactionState.Processing); + unstakeAndStake( + account, + amount, + 6 * CARMINE_STAKING_MONTH, + setSixMonthsState + ).then(() => { + setMonthState(TransactionState.Initial); + setYearState(TransactionState.Initial); + }); + }; + const handleYear = () => { + setMonthState(TransactionState.Processing); + setSixMonthsState(TransactionState.Processing); + unstakeAndStake( + account, + amount, + 12 * CARMINE_STAKING_MONTH, + setYearState + ).then(() => { + setMonthState(TransactionState.Initial); + setSixMonthsState(TransactionState.Initial); + }); + }; + + return ( + +
+

Restake & Unstake

+

+ Your stake of {shortInteger(amount, 18)} CRM has expired. +

+

You can stake again for a period:

+
+ + + +
+

+ Alternatively, you can unstake your veCRM to CRM: +

+
+ +
+
+
+ ); +}; diff --git a/src/components/CarmineStaking/calls.ts b/src/components/CarmineStaking/calls.ts new file mode 100644 index 00000000..9703b4c5 --- /dev/null +++ b/src/components/CarmineStaking/calls.ts @@ -0,0 +1,53 @@ +import { QueryFunctionContext } from "react-query"; +import { getStakes } from "../../calls/carmineStake"; +import { balanceOf } from "../../calls/balanceOf"; +import { + CRM_ADDRESS, + GOVERNANCE_ADDRESS, + VE_CRM_ADDRESS, +} from "../../constants/amm"; +import { CarmineStake } from "../../classes/CarmineStake"; +import { ec, hash, shortString } from "starknet"; +import { provider } from "../../network/provider"; + +export const fetchStakes = async ({ + queryKey, +}: QueryFunctionContext<[string, string]>): Promise => { + const address = queryKey[1]; + return getStakes(address); +}; + +type StakingData = { + veCarmBalance: bigint; + carmBalance: bigint; + stakes: CarmineStake[]; +}; + +export const fetchStakingData = async ({ + queryKey, +}: QueryFunctionContext<[string, string]>): Promise => { + const address = queryKey[1]; + const promises = [ + balanceOf(address, VE_CRM_ADDRESS), + balanceOf(address, CRM_ADDRESS), + getStakes(address), + ]; + const values = await Promise.all(promises); + const result = { + veCarmBalance: values[0] as bigint, + carmBalance: values[1] as bigint, + stakes: values[2] as CarmineStake[], + }; + + return result; +}; + +export const readStorage = async (address: string) => { + const selector_airdrop_claimed = hash.keccakBn( + shortString.encodeShortString("airdrop_claimed") + ); + const key = ec.starkCurve.pedersen(selector_airdrop_claimed, address); + + const storage_value = await provider.getStorageAt(GOVERNANCE_ADDRESS, key); + return BigInt(storage_value); +}; diff --git a/src/components/CarmineStaking/index.ts b/src/components/CarmineStaking/index.ts new file mode 100644 index 00000000..700b577b --- /dev/null +++ b/src/components/CarmineStaking/index.ts @@ -0,0 +1,3 @@ +import { CarmineStaking } from "./Staking"; + +export { CarmineStaking }; diff --git a/src/components/CarmineStaking/modal.module.css b/src/components/CarmineStaking/modal.module.css new file mode 100644 index 00000000..dfd244a1 --- /dev/null +++ b/src/components/CarmineStaking/modal.module.css @@ -0,0 +1,28 @@ +.modal { + background: black; + border: 1px solid white; + padding: 30px; +} + +.modal h3 { + margin-top: 0; +} + +.buttongroup { + display: flex; + justify-content: space-between; + align-items: center; +} + +.singlebutton { + display: flex; + justify-content: space-around; + align-items: center; +} + +@media (max-width: 800px) { + .buttongroup { + flex-flow: column; + gap: 15px; + } +} \ No newline at end of file diff --git a/src/components/CarmineStaking/vest.module.css b/src/components/CarmineStaking/vest.module.css new file mode 100644 index 00000000..e27b9756 --- /dev/null +++ b/src/components/CarmineStaking/vest.module.css @@ -0,0 +1,20 @@ +.container { + display: flex; + align-items: center; + gap: 1rem; +} + +.inputall { + display: flex; + align-items: center; +} + +.inputall button { + border-left: 0; +} + +@media (max-width: 800px) { + .container { + flex-flow: column; + } +} \ No newline at end of file diff --git a/src/components/Slip/Slip.tsx b/src/components/Slip/Slip.tsx index 5ea86fd5..fe2037cf 100644 --- a/src/components/Slip/Slip.tsx +++ b/src/components/Slip/Slip.tsx @@ -3,7 +3,8 @@ import styles from "./Slip.module.css"; const MIN_WIDTH = 1200; -const SlipElem = () => ( +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const LegacyAppMessage = () => (
This App uses new Carmine Protocol with C2 contracts. Old App can be accessed at{" "} @@ -11,8 +12,17 @@ const SlipElem = () => (
); +const AirdropMessage = () => ( +
+ Carmine Airdrop is now available! Claim it{" "} + here. +
+); + export const Slip = () => { - const [isWideScreen, setIsWideScreen] = useState(window.innerWidth > MIN_WIDTH); + const [isWideScreen, setIsWideScreen] = useState( + window.innerWidth > MIN_WIDTH + ); useEffect(() => { function handleResize() { @@ -25,14 +35,14 @@ export const Slip = () => { }, []); if (isWideScreen) { - return ; + return ; } return (
- - + +
); diff --git a/src/components/Vesting/Vest.tsx b/src/components/Vesting/Vest.tsx deleted file mode 100644 index 1a026710..00000000 --- a/src/components/Vesting/Vest.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { AccountInterface } from "starknet"; -import { useAccount } from "../../hooks/useAccount"; -import { openWalletConnectDialog } from "../ConnectWallet/Button"; -import { unVestCarm, vestCarm } from "./calls"; -import { useEffect, useState } from "react"; -import { balanceOfCarmineToken } from "../../calls/balanceOf"; -import { Skeleton } from "@mui/material"; -import { shortInteger } from "../../utils/computations"; -import styles from "./vest.module.css"; -import inputStyles from "../../style/input.module.css"; - -export const VestWithAccount = ({ account }: { account: AccountInterface }) => { - const [carmBalance, setCarmBalance] = useState(undefined); - const [inputValue, setInputValue] = useState(""); - - useEffect(() => { - balanceOfCarmineToken(account).then((b) => - setCarmBalance(shortInteger(b, 18)) - ); - }, [account]); - - if (carmBalance === undefined) { - return ( - - - - - ); - } - - const handleInputChange = (value: string) => { - // Allow empty string, valid number, or a single decimal point followed by numbers - const numericValue = - value === "" || /^\d*\.?\d{0,6}$/.test(value) ? value : inputValue; - - const num = parseFloat(numericValue); - - if (num && num > carmBalance) { - // cannot set more than holds - return; - } - - setInputValue(numericValue); - }; - - return ( -
-

- You have 0 CARM and {carmBalance.toFixed(5)} veCarm -

-

Stake your CARM for a period

-
- handleInputChange(e.target.value)} - /> - - - -
-
- ); -}; - -export const Vest = () => { - const account = useAccount(); - - if (!account) { - return ; - } - - return ; -}; diff --git a/src/components/Vesting/calls.ts b/src/components/Vesting/calls.ts deleted file mode 100644 index 2e09329e..00000000 --- a/src/components/Vesting/calls.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const vestCarm = () => { - console.log("Vesting..."); -}; - -export const unVestCarm = () => { - console.log("UnVesting..."); -}; diff --git a/src/components/Vesting/index.ts b/src/components/Vesting/index.ts deleted file mode 100644 index 090815a7..00000000 --- a/src/components/Vesting/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Vest } from "./Vest"; - -export { Vest }; diff --git a/src/components/Vesting/vest.module.css b/src/components/Vesting/vest.module.css deleted file mode 100644 index aaa7ce95..00000000 --- a/src/components/Vesting/vest.module.css +++ /dev/null @@ -1,5 +0,0 @@ -.container { - display: flex; - align-items: center; - gap: 1rem; -} \ No newline at end of file diff --git a/src/constants/amm.ts b/src/constants/amm.ts index 3e8fc74c..4b32a24f 100644 --- a/src/constants/amm.ts +++ b/src/constants/amm.ts @@ -8,6 +8,8 @@ export const ETH_ADDRESS = config.ETH_ADDRESS; export const USDC_ADDRESS = config.USDC_ADDRESS; export const BTC_ADDRESS = config.BTC_ADDRESS; export const STRK_ADDRESS = config.STRK_ADDRESS; +export const VE_CRM_ADDRESS = config.VE_CRM_ADDRESS; +export const CRM_ADDRESS = config.CRM_ADDRESS; export const ETH_USDC_CALL_ADDRESS = config.ETH_USDC_CALL_ADDRESS; export const ETH_USDC_PUT_ADDRESS = config.ETH_USDC_PUT_ADDRESS; export const BTC_USDC_CALL_ADDRESS = config.BTC_USDC_CALL_ADDRESS; @@ -72,3 +74,5 @@ export const USDC_BASE_VALUE = BigInt(10) ** BigInt(USDC_DIGITS); export const BASE_MATH_64_61 = BigInt(2) ** BigInt(61); export const BASE_MATH_64 = BigInt(2) ** BigInt(64); export const USDC_PRECISSION = 1000; + +export const CARMINE_STAKING_MONTH = 2629743; diff --git a/src/constants/config.json b/src/constants/config.json index 63f1567d..1fd8caa0 100644 --- a/src/constants/config.json +++ b/src/constants/config.json @@ -7,6 +7,8 @@ "USDC_ADDRESS": "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", "BTC_ADDRESS": "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac", "STRK_ADDRESS": "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "VE_CRM_ADDRESS": "0x3c0286e9e428a130ae7fbbe911b794e8a829c367dd788e7cfe3efb0367548fa", + "CRM_ADDRESS": "0x51c4b1fe3bf6774b87ad0b15ef5d1472759076e42944fff9b9f641ff13e5bbe", "ETH_USDC_CALL_ADDRESS": "0x70cad6be2c3fc48c745e4a4b70ef578d9c79b46ffac4cd93ec7b61f951c7c5c", "ETH_USDC_PUT_ADDRESS": "0x466e3a6731571cf5d74c5b0d9c508bfb71438de10f9a13269177b01d6f07159", "BTC_USDC_CALL_ADDRESS": "0x35db72a814c9b30301f646a8fa8c192ff63a0dc82beb390a36e6e9eba55b6db", diff --git a/src/constants/starknet.ts b/src/constants/starknet.ts index eb0c8a8b..823e7593 100644 --- a/src/constants/starknet.ts +++ b/src/constants/starknet.ts @@ -1 +1,13 @@ +import { Contract } from "starknet"; +import { GOVERNANCE_ADDRESS } from "./amm"; +import { provider } from "../network/provider"; + +import GovernanceABI from "../abi/governance_abi.json"; + export const TESTNET_CHAINID = "0x534e5f474f45524c49"; + +export const governanceContract = new Contract( + GovernanceABI, + GOVERNANCE_ADDRESS, + provider +); diff --git a/src/network/provider.ts b/src/network/provider.ts index 8817dd70..fdabe8e1 100644 --- a/src/network/provider.ts +++ b/src/network/provider.ts @@ -14,6 +14,7 @@ export const testnetOptions: RpcProviderOptions = { export const mainnetOptions: RpcProviderOptions = { nodeUrl: apiUrl("call", { network: "mainnet" }), + // nodeUrl: "http://34.22.208.73:5051", dev mainnet chainId: constants.StarknetChainId.SN_MAIN, }; diff --git a/src/pages/governance.tsx b/src/pages/governance.tsx index 11a6934c..2ed3156f 100644 --- a/src/pages/governance.tsx +++ b/src/pages/governance.tsx @@ -2,13 +2,14 @@ import { Helmet } from "react-helmet"; import { Layout } from "../components/Layout"; import { Proposals } from "../components/Proposal"; -import { Vest } from "../components/Vesting"; +import { CarmineStaking } from "../components/CarmineStaking"; import { useGovernanceSubpage } from "../hooks/useGovernanceSubpage"; import { GovernanceSubpage } from "../redux/reducers/ui"; import { useNavigate } from "react-router-dom"; import buttonStyles from "../style/button.module.css"; import { setGovernanceSubpage } from "../redux/actions"; import { Airdrop } from "../components/Airdrop/Airdrop"; +import { useEffect } from "react"; const VotingSubpage = () => { return ( @@ -23,11 +24,8 @@ const VotingSubpage = () => { const StakingSubpage = () => { return (
-

CARM Staking

-

- Stake your CARM -

- +

CRM Staking

+
); }; @@ -36,6 +34,20 @@ const Governance = () => { const subpage = useGovernanceSubpage(); const navigate = useNavigate(); + useEffect(() => { + const parts = window.location.pathname.split("/").filter((s) => s !== ""); + + if ( + parts.length === 2 && + Object.values(GovernanceSubpage).includes( + parts[1] as GovernanceSubpage + ) && + (parts[1] as GovernanceSubpage) !== subpage + ) { + setGovernanceSubpage(parts[1] as GovernanceSubpage); + } + }); + const handleNavigateClick = (subpage: GovernanceSubpage) => { setGovernanceSubpage(subpage); navigate(`/governance/${subpage}`); diff --git a/src/queries/client.ts b/src/queries/client.ts index 4013c9d2..121e837b 100644 --- a/src/queries/client.ts +++ b/src/queries/client.ts @@ -18,3 +18,5 @@ export const invalidatePositions = () => queryClient.invalidateQueries(QueryKeys.position); export const invalidateStake = () => queryClient.invalidateQueries(QueryKeys.stake); +export const invalidateKey = (queryKey: QueryKeys) => + queryClient.invalidateQueries(queryKey); diff --git a/src/queries/keys.ts b/src/queries/keys.ts index 25892ca9..e4e372f3 100644 --- a/src/queries/keys.ts +++ b/src/queries/keys.ts @@ -10,4 +10,6 @@ export enum QueryKeys { userPoints = "USER_POINTS", braavosBonus = "BRAAVOS_BONUS", defiSpringClaimed = "DEFI_SPRING_CLAIMED", + carmineStakes = "CARMINE_STAKES", + airdropData = "AIRDROP_DATA", } diff --git a/src/redux/reducers/transactions.ts b/src/redux/reducers/transactions.ts index 9684e4dc..5b540ac7 100644 --- a/src/redux/reducers/transactions.ts +++ b/src/redux/reducers/transactions.ts @@ -11,6 +11,8 @@ export enum TransactionAction { Vote = "Vote", Swap = "Swap", ClaimReward = "ClaimReward", + CarmineStake = "CarmineStake", + CarmineUnstake = "CarmineUnstake", } export enum TransactionStatus { diff --git a/src/style/button.module.css b/src/style/button.module.css index 8be30455..9f21fd25 100644 --- a/src/style/button.module.css +++ b/src/style/button.module.css @@ -8,6 +8,11 @@ color: #1aff00; } +.fail { + border: 2px solid #ad1111; + color: #ad1111; +} + .disabled { border: 2px solid rgba(160, 160, 160, .6); color: rgba(160, 160, 160, .6); diff --git a/src/style/input.module.css b/src/style/input.module.css index 6c50b66f..b3b70b35 100644 --- a/src/style/input.module.css +++ b/src/style/input.module.css @@ -5,7 +5,7 @@ font-size: 21px; padding: 3px 15px; text-align: center; - height: 46px; + height: 50px; max-width: 150px; } diff --git a/src/types/governance.ts b/src/types/governance.ts new file mode 100644 index 00000000..5e3070c2 --- /dev/null +++ b/src/types/governance.ts @@ -0,0 +1,7 @@ +export type CarmineStakeResult = { + amount_staked: bigint; + amount_voting_token: bigint; + start_date: bigint; + length: bigint; + withdrawn: boolean; +}; diff --git a/src/types/network.ts b/src/types/network.ts index 5abb7196..45875eb7 100644 --- a/src/types/network.ts +++ b/src/types/network.ts @@ -19,3 +19,12 @@ export interface NetworkState { provider: RpcProvider; network: Network; } + +export enum TransactionState { + Initial, + Processing, + Success, + Fail, +} + +export type TxTracking = (s: TransactionState) => void; From 778f4f11688bc4beed33ce884c705cc7fe06f659 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 13:10:44 +0200 Subject: [PATCH 04/20] fix: airdrop texts --- src/components/Airdrop/Airdrop.tsx | 3 +-- src/components/Airdrop/airdrop.module.css | 7 +++++++ src/components/CarmineStaking/Staking.tsx | 13 +++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/components/Airdrop/Airdrop.tsx b/src/components/Airdrop/Airdrop.tsx index c23b1557..d43975d1 100644 --- a/src/components/Airdrop/Airdrop.tsx +++ b/src/components/Airdrop/Airdrop.tsx @@ -9,7 +9,6 @@ import { isMainnet } from "../../constants/amm"; import { QueryKeys } from "../../queries/keys"; import { AirdropModal } from "./AirdropModal"; -import styles from "../../style/table.module.css"; import buttonStyles from "../../style/button.module.css"; import airdropStyles from "./airdrop.module.css"; @@ -50,7 +49,7 @@ const ClaimAndStake = ({ const AirdropTemplate = ({ message }: { message: string }) => (

Airdrop

-
{message}
+
{message}
); diff --git a/src/components/Airdrop/airdrop.module.css b/src/components/Airdrop/airdrop.module.css index 1d7b5157..10537927 100644 --- a/src/components/Airdrop/airdrop.module.css +++ b/src/components/Airdrop/airdrop.module.css @@ -5,6 +5,13 @@ padding: 25px 50px; } +.textcontainer { + flex-flow: row; + border: 1px solid white; + padding: 25px 50px; + display: inline-block; +} + .claim { border: 1px solid white; display: inline-flex; diff --git a/src/components/CarmineStaking/Staking.tsx b/src/components/CarmineStaking/Staking.tsx index d2bb1a40..45fd9ebe 100644 --- a/src/components/CarmineStaking/Staking.tsx +++ b/src/components/CarmineStaking/Staking.tsx @@ -35,17 +35,22 @@ export const StakeWithAccount = ({ return (

- Find out more about CRM staking and veCRM{" "} - - insert some link here + Want to know more about CRM staking and veCRM?{" "} + + Find out here! .

+

You have {humanReadableCarmBalance} CRM and{" "} {humanReadableVeCarmBalance} veCRM

- {carmBalance >= 0n && ( + {carmBalance > 0n && ( )} From 3454e2f0e1bfc8c7e8e2a48c7054738b1f9152f6 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 13:18:12 +0200 Subject: [PATCH 05/20] fix: slip with routing --- src/App.tsx | 2 +- src/components/Slip/Slip.tsx | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 0114908a..6d738a03 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -45,8 +45,8 @@ const App = () => { {acceptedTermsAndConditions ? ( <> - + {oldPathRedirects.map(([oldPath, newPath], i) => ( (
); -const AirdropMessage = () => ( -
- Carmine Airdrop is now available! Claim it{" "} - here. -
-); +const AirdropMessage = () => { + const navigate = useNavigate(); + + const handleClick = () => navigate("/governance/airdrop"); + + return ( +
+ Carmine Airdrop is now available! Claim it{" "} + + here + + . +
+ ); +}; export const Slip = () => { const [isWideScreen, setIsWideScreen] = useState( From d94fa3d4b2c522248362af23ed48e10424d4a26c Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 13:29:15 +0200 Subject: [PATCH 06/20] fix: select size stake modal --- .../CarmineStaking/StakingModal.tsx | 125 ++++++++++++------ .../CarmineStaking/modal.module.css | 15 +++ 2 files changed, 98 insertions(+), 42 deletions(-) diff --git a/src/components/CarmineStaking/StakingModal.tsx b/src/components/CarmineStaking/StakingModal.tsx index ca253c10..86d5a9e5 100644 --- a/src/components/CarmineStaking/StakingModal.tsx +++ b/src/components/CarmineStaking/StakingModal.tsx @@ -1,7 +1,7 @@ import { Dialog } from "@mui/material"; import { AccountInterface } from "starknet"; -import { shortInteger } from "../../utils/computations"; +import { longInteger, shortInteger } from "../../utils/computations"; import { CARMINE_STAKING_MONTH, GOVERNANCE_ADDRESS } from "../../constants/amm"; import GovernanceABI from "../../abi/governance_abi.json"; import { @@ -20,6 +20,7 @@ import { unstakeAirdrop } from "../../calls/carmineStake"; import styles from "./modal.module.css"; import buttonStyles from "../../style/button.module.css"; +import inputStyles from "../../style/input.module.css"; export const unstakeAndStake = async ( account: AccountInterface, @@ -88,6 +89,8 @@ export const stateToClassName = (state: TransactionState) => { }; export const StakingModal = ({ account, amount, open, setOpen }: Props) => { + const numCarmBalance = shortInteger(amount, 18); + const [inputValue, setInputValue] = useState(numCarmBalance.toString(10)); const [unstakeState, setUnstakeState] = useState(TransactionState.Initial); const [monthState, setMonthState] = useState(TransactionState.Initial); const [sixMonthsState, setSixMonthsState] = useState( @@ -95,6 +98,8 @@ export const StakingModal = ({ account, amount, open, setOpen }: Props) => { ); const [yearState, setYearState] = useState(TransactionState.Initial); + const selectedAmount = longInteger(parseFloat(inputValue), 18); + const handleClose = () => { setOpen(false); setUnstakeState(TransactionState.Initial); @@ -108,19 +113,22 @@ export const StakingModal = ({ account, amount, open, setOpen }: Props) => { const handle1month = () => { setSixMonthsState(TransactionState.Processing); setYearState(TransactionState.Processing); - unstakeAndStake(account, amount, CARMINE_STAKING_MONTH, setMonthState).then( - () => { - setSixMonthsState(TransactionState.Initial); - setYearState(TransactionState.Initial); - } - ); + unstakeAndStake( + account, + selectedAmount, + CARMINE_STAKING_MONTH, + setMonthState + ).then(() => { + setSixMonthsState(TransactionState.Initial); + setYearState(TransactionState.Initial); + }); }; const handle6months = () => { setMonthState(TransactionState.Processing); setYearState(TransactionState.Processing); unstakeAndStake( account, - amount, + selectedAmount, 6 * CARMINE_STAKING_MONTH, setSixMonthsState ).then(() => { @@ -133,7 +141,7 @@ export const StakingModal = ({ account, amount, open, setOpen }: Props) => { setSixMonthsState(TransactionState.Processing); unstakeAndStake( account, - amount, + selectedAmount, 12 * CARMINE_STAKING_MONTH, setYearState ).then(() => { @@ -142,6 +150,23 @@ export const StakingModal = ({ account, amount, open, setOpen }: Props) => { }); }; + const handleInputChange = (value: string) => { + // Allow empty string, valid number, or a single decimal point followed by numbers + const numericValue = + value === "" || /^\d*\.?\d{0,6}$/.test(value) ? value : inputValue; + + const num = parseFloat(numericValue); + + if (num && num > numCarmBalance) { + // cannot set more than holds + return; + } + + setInputValue(numericValue); + }; + + const handleAll = () => setInputValue(numCarmBalance.toString(10)); + return ( { Your stake of {shortInteger(amount, 18)} CRM has expired.

You can stake again for a period:

-
- - - +
+
+ handleInputChange(e.target.value)} + /> + +
+
+ + + +

Alternatively, you can unstake your veCRM to CRM: diff --git a/src/components/CarmineStaking/modal.module.css b/src/components/CarmineStaking/modal.module.css index dfd244a1..3a2c9b4f 100644 --- a/src/components/CarmineStaking/modal.module.css +++ b/src/components/CarmineStaking/modal.module.css @@ -20,6 +20,21 @@ align-items: center; } +.inputall { + display: flex; + align-items: center; + padding-bottom: 20px; +} + +.inputall button { + border-left: 0; +} + +.inputall input { + max-width: none; + width: 100%; +} + @media (max-width: 800px) { .buttongroup { flex-flow: column; From c0aa94b3c915eda93b4d251018a5138fcf5369f2 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 15:11:02 +0200 Subject: [PATCH 07/20] fix: use string in calldata --- public/crm-banner.png | Bin 0 -> 298636 bytes src/components/Banner/CrmBanner.tsx | 5 +++++ src/components/Banner/banner.module.css | 3 +++ src/components/Banner/index.ts | 2 ++ src/components/CarmineStaking/StakeCRM.tsx | 2 +- src/components/CarmineStaking/Staking.tsx | 4 ++-- src/components/CarmineStaking/StakingModal.tsx | 2 +- 7 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 public/crm-banner.png create mode 100644 src/components/Banner/CrmBanner.tsx create mode 100644 src/components/Banner/banner.module.css create mode 100644 src/components/Banner/index.ts diff --git a/public/crm-banner.png b/public/crm-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a358554c6ea8a4ca960d49e41dd830527e3df332 GIT binary patch literal 298636 zcma%jRa6|&+AI)c@WC~};O;?!ySuwP!QDx4cXtUM+}#Nt+}+(JFmO3{-T(2P{13f$ zPj}DDUbVljuc~&3E6PhCBj6)IKtLc%Ns1~%Kp@IPKtM49pgyj2erNRk7$BXMC4?b< zO%fh|{17$Mlroo-gP{F52S7lET0ubn=aG*C|Kosw_>>0;@#$lP{Li&KsQl?O$hG|h zUB*^SV!A|>nI_EbIQ}JK+tAN$Bil8$GH*LI;NES3H1TH?oq~Pl&mgS?hOs&;9i))o zc`cN!tgU+&$}a~OXS@(d`d~j*R}J;~`^&7v^yGC*LuNKX4cA>=Oji31?+fn3w|dt4 zf+>Ni=pXN79*)q2kPv4 z^vTDhc1IH30;fLpDOlvb$;>}h2h~XUzCJXI8$2`E*fy@Pgd{yhVYJVxV?G1ZOtfy~ zUvgg}SuT&ZD?qx*(tqguz?&R_3pTmm{P*hBQMVJ-%vgfh)O_p9D}x=VFulX49^V~t zk@_r?nwn=Of5AgoQ5?UNf#Sfg{`l>OBDf(vQUV0RJV6UrobS7HI=v;OgINTzU>~`2 zc0Stv^C@s>Riy4B=Hx-o9E$&?ebM}4)x|1Cgy2i)d+@@%!jaX!-5bp>J^p^C_X(GC zL@F0?g@)B<<2M=qcHu1@kk9JLU^Q4lt?<$UG4OTjy**iED)`E%0;l`UKDgkuSLJ?k zfj^VMeU0FslSvqu7}*nN=&UxxS5dqnPOIK`AZLVB*`?+x1KoxxsY(R@i7c9PQTS4w z`eC+;GcQ;5FT8^QI=JzYO|?uBlTikK*RWeueGPLbGO2^$W{}mGWv!WG9i29Wm>FgF zoVf)f3T2r+*sUG1zL zbn=H@*QF%>d@gGTL-A6mr>^hIlpcz?0*?z5Oo^9jOV+e6EeEYO`JdIBXRP*A`SaP+ zpq!FW7Xm-QKZ#V;NgYI(?U7}ivvYwf^Hfy{UaPfZ&WU~f4fHIRlpp`MeA@U2z&iGscpeifhpm5!64l z`RvptWsI6n#$HOq&a2g1r;1cwN%ZBJa;P|U|I78otYbJYF_U$W2O~7PN5BTx**cQ@ zTaWz0(@O5oH<9d?1H9VWu52i%fwxqKyrnP_w_KD=`z@q36!}@q4yVLexIoo4JoNynXnsqArE`NJ=I3`+y3b4N z8=5PX?^u{4x0owgy%(y&eGS{`x~+WVIF`M>qs3?bxYlA36F{~F;DY-9599by_-u@y zhOZkJcV?8w>!v+9=zW`QS-fBi~ zl)bSYN9ng1w$Huic!iM5+-cmxA#W+Kx%EdbP_wVX zEdui*wN+503cyk}-uZ&ktO`2NBvbID?vcw=(LF2b0EVBQDs}diZ?Bi;m*B|esa8l> zCxNUht=1P1@trLpKKZ`e zyr|JeZPl1Z^)HXE?$13n-YB#~J?+k{l2V4CU*>k-VPlKpt=qlx)fY*;=e|91Irib7 zNNxs=Ik{YQNkm;WT06O_wpf!i4;LkkLC1v^+eMypgspDJ|5Z_TljQ56n-$7?-T(J!;|M_D>sxiaMbf*kaqaY-XLQPPMvKjse zBKpN}{_;gj%y2i`L8eYws`V)`|Carw<@J-7k757$vcegpsQIm70`m7tBDLT6_vI6h zY=MGG)!#Uu=S8)%@!nyMRb$hiZdx$@|48|ND9Qprqd=pC&Kva4=571Pc18~vjC0z5 zA)q_x$)DbZd&2PY7pYh8Q61@DX%@aTUowcz+^mj{@#OpKg2i0AYUYL+ z0?8pCs%Rr3?3*7Mrn^e*uoj|@y)k<~$Gq>nvIzQsnRI}pG3-ykn)k)!qb zP@pq#jvdHc=FCkXagILUC*Es z6BHyRe_uM8arwW%2oZYV#d91((BwX|KSjgAGt&E&KT>C-;+={;805;Em6m{>02Hk> z&3%*A{EBlUf9A&>zbo-+q|n*zf08l^5iR`@*w$OGHl z*J9uU9uq!pQ7H2ydOUtSSQaC};$fklFZ?2P3zVGQ*`Fh+@guABE6kF6IF9S2zQ16L zenyi{;VC)vvov&qDlaov*s-NejSFbS(h3iU)~-^=MVZy_d{}@_`;&NK{4U?hpHZ{{ zN)H7BjL9IU5@V*KCIs#^2`U(M18$w-QpcbcKG&-|mJe5EqdgA)tH=gw3FRR?54Uv8 zwK-9YPldW+=Yms($KD?Fs6z!i*E<-kKtxt$m4)ol;`Hj{vs9XkrT-Crd--TPQA1f&8^`btE`g%^tj?^IX9$$*b@CucQWU(Z%Lk+df=L>1dfemJnnfDN`>usc?$F^ zSp-|u39NXXrWC2rMRSUqiD(7y~y-1-FFOQk)bhu6BJH z@*P99v2{*1vaJtuMc{8?)vdJW?_WWav8st){7F*po`EflS5BA}wzYN$h_~BnjI)LE=z$VSIlxJ*g93ki{wS8oxVsJp3mOOrwQ@MstNv)>m*-7w?Q? zuxUi%k>ZcF6~5<6u)Qwbi3yh_O{o62-r4%vVpT7Tf1+%ga=ES4HIaqp&|fa}@5_{7=wu$wO!4|9pBybo66vTHSu7+DRt{=;=|DC;3AY8@vm* zJrwWWRawy?XZSl%{Rmd(bCNOpgUP#mPx(6-Xg@I&XSS;q8hqXtD*R?m(n3IB(`f6@ zV(ZtK_1x!VsfAOfm4uKu1yjd^=}kp||M=Dmz^vSWY7J$RFG2_j)x~G&zS|Po;CTVa zhPl`6NhH7IFOGnLEd(yYwxROg4<)-q9B8HXPl*vhDRjb9eZjzm_`^FdZYcmJxQA*H z<{-mwR=7QNSp=d<;tXHS?nZ{@K+o)aJg5C6UWL#6ZlFcypMW4_f~v$-{^@DS_aZxT zS3P{Y9&s4RWM&t>WVW9aN*{+rlK*86vR>lb+tVEj z4BhqU*s_fP`b~^DiC+Xc@(J{xwTwN-s-g~43(B|nrNSaF*_|$yTp9WMG(#7B8((a% zQjAX3GJ_NYu4onCnFI1MtNBW%%nn$RFBYh+#H?w2rYHc%@QHVDQNDA*;aJsM&ATFB zgg!}O048^py78mziQ`ab7811bpGe{RxJV6wmd{onZ``!s7-?RowO^2|FqM(k6;5bu zf`jSu-Q6j{SS48}EcGQrpPm0}ANe1e&xKZ_7^F=YEnObEKTh3QT1sRZl7?v%s%k|w zYB-OkR1yCAQaKnY08Gt^T}RCKW`Q>0hzc=y`QdUNI}fQGHx~q3ke@NIA;lCAz)NRAJCDsmNwV!bB&*%pUnUrHSE?y1%kF6`3t3tpW1zR$qg|Z&MP?>quoaf-bGX4L{-yG-xXP0nVZ)B+8s_PZv>kP77<~4ZR$j&*F;IKNu zn;PX>zVaB<8YmdDS)0gC_3iTa*onj^Z=*FKzbbn%}6H%GN-H9V|IpjnM zE{MO>7%*lR`a(ZPS(B+Kbn?^%`MmR3)x>+*SRJY_d6FT)8nIgk%T!em&w~a4{w;H> zzKoTA3a3cb^7_k%?Xv*^x;bDSBi$e)CKr8V#3@8h>fEf;$E!geWRI*j?l>Zn6jfA7 zJ+tdqJ}h)9k6bU#@<#GJ>*WG;p&Q$8lXl+&F_0cjoI0EF`$ADqCoi;S_G^NO72pGn z#A@XxV00&!6eeh%?-Wplrn82T&2=C4rb)P34Iii`Au!K<5+}QMlUeq zi}CfqTcDe)I?+5;c*}&z?NQ{(4e&B;7t(#dnJ&R`EwWK;+-+SZj6*V%aI02vsXzyH zJajn}L+PQZi-ag(HMv$txt#K`ZxWw>cziwFU9Y4Jn^YfCfVX!diijNB1IGpTd?J+*1BN-H0ruXn?dc+WD^6rw!0=$ zXXr%o6E%t(?r>&v|G@_b9;Vw|6km>e-}SQ%*ES!b-DeLj{c}9f`aEqn%o{rewjDQG z<;A)=G=7{PJ*0gFZXgI@bh~ddY%MZ5=Th4Yr}$b8)=v!;o3SM=s0$&3sgRoy&^I^X z0@?AC7pInf;U|wx1vvzqb)=UHY9=?urpM9&xGq;V1Y z`y9O8bpsc5_0Y7;@_k)Xw;90=XGL0y{G((WWAq@!KanQddU$q~x3hpriHBR8zQ$yO zVVUHf_I<<5p`wragFLtX^Pk{h`z{DZFrmdKQbU9kyx&qu8jpqjREWaCXPgrN=F^*1 z-IBNNzWH6_!s3<+MHd@H;cWQYxG7n&Y3o5ZFL5>uIwyXriNRpk8?rXp=+vabn=Tr8j z%etWd{yvG^Ju-DR1cL5~-jdp}rT`=kx@$0aDVx(l@ub>&ev;|7FzA@&xTbRAk8Xgx z|F(Slm=#ei{4NjR_2I7a0dPBePZ>WJ1O47rWiP|iMDfpP=L>V_sp2v9Do1wBLV%_I z`Nh3?eq29|sYYFg%ca`X{NpQO%uS&ZiG$g8;@Y?WU6ig`(57+z&P&SOhk34a#k+Bg zq{MsC8MV-bvp3msdJ^5&(PClkDz)L6RLsv%hy6TaocL z!NaAI%XnVU@F!foMaoE&O~XGTPI@bPLJ`+uR4buzi3Z<1Y79D!r0?>B?3}Ed)W4gO zEY>ySAAC`d&(5{f4H%fM;W@rq2^SUY{&e#Nce911%P%`l?TkO0Ps0yxhmC14ucRF} z4&qRBaypwI9a4%w5vL2nNBe=*YyBiSF-#D@XRqR7yDlIVQvqPam6i6*AFQvj%Q~mV z#1_=EN9C9-C7-qG!$;rU$Iqy1#8V$DSK>AD`)21~Gt^TiL1M0DX|X*{dg|UV35KvD zGWAWloeBx&Z8%7OJ92+hU+Hl5Cj_9T`h0&G4*NF|ZXaw@JnSmb@3f zd@4*^+}y7}GKpSEF$wIO0J;g|Ms?lrSnX%e?NVHl$=uFCgbB0QF^fHnT;vr?-CH)t z&h1B2VFtplmv}KfZ{hsZ{v?dy9aNA$co;Ofw2lou15rM_n!z35{C5{LGQqnyktH~@ zwZ8{)2pCXl-AsO!)t5(t;xjS6<~rzSOZ6eDiW6`(e)U%-OeR(e9U(Nmr}mfIUw6EP zn~yTuQH{mp0bRuWbAiQTLP|a5QMj~MDfkr3b>5j6UEoz=_#LT5r}qCSC6a5Vcl-v?Q2yCS`Y@(4y^;5)HpAl{pX{K8vK}T-!Gad%)-clQdaEN=ZP@EI0Gt{=fQ{m zLUkdg>s(J%R^aAMy?B`{Q|PCaxK$C0n$n7Qpv_qvE(!PiE_v?4r!JY5fDH6uIgwJL zTJPh4DB>(pXs?vc2n)C=pdZ8HY)fl^Rp&pGGrw%KyH>aSX9(0at z=!Ea56K-wJWlK>}$K;-u%7|3>A?^Mtdj<|i1=Ju83^;JHB%QebZIt1Wyb+QuQ>wI? z88YZ6=#1^4J(&=F*-za~XWJtQmm!AVo=Qq_d&^{AiSr_NbLvB=4oa~wGGcjo?pE}C z*RDz4q6n4f#N~CROBC1|=JnS&y5A#F%f0|c$lZLGlv=fKi01!(fpUq_e`y4Q@O?3W z@p1kNY!IRciv8@gxuSAA#vDJRX_D5%=1cmBx3xVw72r;L<&?) z>EUr}M}h21q3?#_xf12NlurS~rAH~C$b~Aa)Qz;);|9U(n7N@zcCI!$C&*5g5q%-l z|6dplX;4rv(aim&I1!zyAMy;}ot<=Nce?tiyFxINArX;IQ`D!A$)_LSMvg9`bqeP^ zH!Ji?(t|@A*!13AgA*gVREqi{Ci2s%y0)%Xqmzmj{r)WDdNE^Lhyqni0i78Mk&mp7 zn>GF^9@~a^CQo{eR1T~4ka=DtNy8`Jt5oA-F-Z8a2w#e8c3BLDUZ@z|-(#?`xZec= zij0A73w?RSAwQ-&2`4-H5YSkv?a9{0Gaql^PHraCg#|UCz!4M>Iu-Qf-=#aP<$jf4 z!!O4w>#l}pc21fL_*BK*(A8vqNYlc6lcdu%6nqPwSuAw_Oq%b0!v@#gaQz6@>Z&c2Q8hHj3NO%$C)_?u$Zz;01%ovIA!@5N-L{E* zpGnV9YW>3tdEEe5wIk9dg^2mdw6ff7N24ElgTwXKAM}G7T2jqzoTh-?s(;Yl*5BJxP@6(ly ztKTZ3hN%Klfge`Y0y6o=6pqQ`aoT%W0z-<6zJ1aY_;?e375@n@dUgYC`x*bhores9 zG`{Fl6oxVnbl#6cp=VXV)F}UAK;j(reyO{PU0)X;3xGVF(rF&`ZtQ{gnMm_Dg_{Aw zw)-~}h031^*U_ z^I=G$Zq?z~^xOPuVYJ0H7`^`B#iX-tRc$-9zH#yEe6q@}ne*Xm`ww~l=?%J-m;MFd zS2*5bT##GZD*061{Iqty7{$~LIFOn0x6S?H+mwZXtLx)yy42r9t+cYIX_M_%x)UVN zj`Cqf0r-w_4ycI+IwziNHT&!nmI{j@u+u+V#!n=14{#Log_`!Ipy>(_2CEOD5@qcM z923B4VES>BJdlt;@9zEljB5!HK{uQC0zjo=4B zRR$WH>4rRr)TTxtYheVr%kF=fZ39x!oDRRQaQ?h(%pvbm!x2vY8mwD5w-S}h5pmA$ zlj4#1T*5+CW=*bU%*j%`@Ejo}l2lGF(PgcBK#3L~<*HUxx^d#eUPo_u1ctN8_qzJ6 z)f}vRD`TwNhFj;TsR;mgHgx^$?Bdn~0LDrf&GO=@P1aR4emc?2FLd5?0jV!VcJEzV z(XP`s$Mh+}Ba;^9V}nW3KPlTkf;YdaCfolE7W_e>xY>+a3q5)nzz-Lj$s4Dvd)c_? zUKgz&iTQc;1yQHd!5hPPm{;c4Su{?Qn?!%o@Pn=rW@YOP>1UiNiL}qsi(58QDJU@> zEspPau|vG?N79ftGo`b~NRjz`Pqz8kzHKwVfu40SA^qwE$>+{vhrbNk<;MhG`)|9i zeh>)UIN56-o?5p1rX<&@h(MwH!2@1s52$`rJKsg+q%F*~>m~4-KlywRj__yxzoP%} zF18xTdQN{CZR=`!(7NOzDCoh8j-tVH&2zV3gx7eY5z7|Ic>+TrbG&503m+duC( z_kH!vgyPDg(Cm2SAGJRKoazA+wrJyOU*TX6dt0haz7c zYltiQ!Jl!FZ?^GjnUTJ=@Ki1NHa$S*h^qPPPWAUPUm))o&TX6=UfQ}{*qOOEeQj<& zu>Uqyed+cPk_{$(c*wVGSgpdg;?S;Yy5`t}#B|P?H`1LRi5bRKu*Tq8uJ;&-l*oBelyn_;m1}D8>5j_0Wdj(87~Kx3)MG z6JyX~`H^9VrE2W79v6}S+NdL0O*2Nq?UN3ArN2_zY6&!Cc(Dn#+|Gc$P_Jzb(r|03bZa`A%aaWStJ4JAHG6BGX22&uo1 zQW9E;K-p*ICqCcUG9gPEGh8a|JAlYJ4*zo7U#Z5C&0iGiqT!y+mCM(%wlGd)Wdn3m zL;L$_hoElsQ~`pU;EztFZ+1VkJ+Nice4iCdsuF!HShf7%fsGUnD9m0ENy5@8QN z(Io#K^PjN+iHY;a1GzC0oPkEa7cry3r}@r8w0cr(hGNIq>Qxt4YK!^4EK$BvlYdsu z_M4lXe~;J3Z?5UKte*b5YPLGMX$ZDzvvgQ)C}) zw2zKV-8``W&*aeFVZbV=q6$#oPnZ`uG}29?gO5i|*90&#g;o$DzQ1wq2}z+xT_R+s zffr4q&E` zj_nvi?kBrn*d`9Du}icT#mUGIHeZJ(e#Dj-<&yYDQ!6c_MQM~7x7vPeCh=u)*AW*r zmRS^NBdqW|BB3(|%O%u;L;D^+r3KxICt*Q~|Lr^l9*cIn|K+QsTg$EzVPYIFG(Ys+ z5U8CLUUFx7sdtKr7vcVw$pKKZUx_?Ndf6bIOTr7Hl*l=<1BGWEw?X#%i5Fy-7hd;=q~|3i{1WqIt9%TVAw0 zedvlG?b&c_c^@%+9kv?j#OgtraALxaKRQF}(hxNu^%Dh64cyit6DLcQf;lkbnnu|| zx|8TRC_n2S=JYiPg%kzQ8e~zoQWDb~6%3isxO$|@SC{{``L@6&@YF|uGsWR2Ik!Hn z(QEdFgI?U=-9%jh5uCk%h@-9HAII$wuf9G)=t)DITWELO1sJ)cV0cdNDdF$944`pg zx4ToRxuE>V%kMvdv<(5M4A}yV$t>hlKaK{R{?}Qfi*%AQeC@L4udfsDuYu*U2Q0h} zBfIC7r9_{%rEGl#kU09@yv{oHbgJO7UB^ty*^QYyzWP9~ni#t~lO?IfN_9l<(Sn!} zBi_)uj%W@KypB3CB7|17ljD-Hle#1Q61}@uzd~@-lFIPvsyv`x|9l2ArC%)ZF;$W< zl^_SE!M<4a(A^eJx2`9+k3RFG_LsbW-_H!ElTVevtU&sOoHNa<+LH((bBT?QHy` ze>s7(J$`cF!Hhs}Q}CNPL@TAgXDh$|QxXS})&3`x$spl=6DaZEy$#?S^zScEBMH=X z&BuDB(|h^yQCi^8uM8L8o`y}D z$9P7K;sN_5GVYsi`_p99=sO#j3!meFs#r0e%syo`&A&iyK-tenZSXW_T|{p7A;t`6 z)hONIc~y2Tl7edfa9pS#aG6geofsh!B8YFIQg==@?8@Dma7N{1p~Qp-5^NEIcxHP9 zt@>tn@b*o8e*3@ZZ$QP~3lCjxaruC&y`9Ww|h@!JVWR zSm&KaHtn1GFLt%__8;w2^**N^^4r^b`zjrsj!tI&BC4}9V*id)1(-ex-~rQA8i7u# z<4K8xq%H~htJe_XTx4~>cIehTOEWsSl3;f_WsOK{0b4)Vfr(rxq-f4iE9DQhjm0#& zp|)hA>6xK#ieu&-K}M~JCay3LubKQ578P+m;5#{T@<38&Z^E5y1wN7c)`tM zx5u`G!HMrhqZ4Ed-t$V4P(SekbXlF~R*feBz_wG~4g#oBNuD6?iDxhi6q#{Ee0ZX} zye&BYq)NPmP_B}K!hB|B{mq0LXu73DJ{KUoB|tQ#EU19lQGa7PnK~)Sj#Iz2pi#W; z@1%jpHlYYXm=FQ|L*!9<$wz`9y+U>|LLx_+ME**iv~cGwuw4j` zXlKmlyT!q;%}BxbDxjVE#MD@^oD1I}(Y_fr8nyWKUu{335p54mX;8G!U#EJCU^-2B1Nu;Vka{TNLm_n!o==vQH>2C(@h918y#fWhZ;oHDa zP^@+mN#Pyh_LY+DI!4npCAoj-uegLEm@N1-Y+EaKy}F=?HIblS`DI_o*GHJ8egbQS zl`0&BR=$D0Ade(>pgG2{ouqtq_k--tyWo*B`O8OYHXd+S>f0* z<~X~hscWT4s@;Pd(3bvg41DqaY6HD@Eha=Br0U7q zTjqNpn*^bTq@j;k?c0U^Br0}EvY__I#&i&Rzq-Np9y>lc>FKYv>zC;VC;T$Gal$jd z4hcSL8o>#;xC%Toa)=t`;>YS3U;nQ_$gS63ZYtY$Z^PZH2QuTM;#*md#nI$M~iMr~_fCs_*lj@%M* zz-GZRDiNVp$)?c%uFon#JpBC%XRYb-KCAl#v7_q`?D&d79x zTUL=}fKO{CcmPy%WJpIj{R68k$`VK!TDomTXLsU&c_iTERa)ONq0Ocm_&tl56_{Gb zYeJ_k7!Fra^nmN$uIC&p67iI;!@jw3^m>BB`1aE6Ako3|U~D&Mel2n0jZrQ!icP?} zq9fyN#sQS1_t3!7>M1Utn)`@evbla;!~3UDuz?&HTq0}%qUXb4;>CcX%K=s$GIj2m zcp&Bot-M|wJ-%1CtFY*R%M|RwON6-!_ux|+Li?1XLfwblFL0&4=gIFolCdg(@$Kn^ zH5{dm>X7uY&!7Fy4s%*RS1c{1%qa;I5<1#|qq#(ZjG%ldvC&2e*@aE2qFxKkn2+_Z zkm1FxFz>^TSTBjqc)j*M#3sgr!hW^RK<4Z_JVTWG=@W`IM zV}G(gJjU^Pzpb_-^Z2^3J9oi6r)D%SZjaEtsXqDJjq^a`x=$MRhW_u13x}m;;y&lN zJJmR>7TWuG^iZ+*eNTD>ZZej>xI9wP=ngS?L{D+RXJK@H$q2*PJEd}7coJ>9h?%JrPZsKC7?2ZMx=XAdSl>We>ElrE850vzR90#O8r>x znSt+||Ij^HJZp)vF$pvWeetb-DxY7nk0)#ik-{kQ?eszAk4)=H+MF6uM;_0`mxpv{ zD8NEVeBK=Z zmFEq1m4|ezx2K)2ljbWIQ&qOjcHbtd9@{eNFk{tfvMaK7a|I3MI`Q4aB zAlC)$T;R6+2uah=5o3o`Cb%Ph#Pz#_%(rpA3+HR#!=B9if8;EuNo}n&$j=Z}xIk2H)k$CKaRb0@Y9FuT?4j#EqP~P5AG8dj0In}sV>5N1 z28q-Tq|UiGWbe;(@1|_e^U|A}c+V4t$^UMBdNY-#(7*X^yz;BteBoeKB@lu)z^o2Z z>Fh#?s|Bk~A#`4#@ffYQ4gqK7PDC@AuFKy8I>|!axplMxmvph;#v_3ubho8;b>+;A zpz~q1V%e+O+oa0XhOE1jue*+|Sp$$6$cy0s^gt0>-@*@U6ts@O)UqINKE&vNvzlV1 zMto>Vun8~LA|cfbp{*L}#C4U16B-}Eu_W6K4m0{#>=88-^}%bM$(%yP%HtXI+#2QN zd%zSC!$3?AEYss2k-1s2EL4hbOPXzQmBfXBOm)ZDB!X$KpdX}J;RB>JSHhB2LIr4! z3X~*8$mtkZc|cs#RfGidPq5+S=hI(wO-YRF2qX7y6*J2NqdjEYfJ47Iqp|eskWR!) z7&2Jb=V8+6gVCjw(|4SS54<`vXZ9hzluZ2z?0RD50&2G< zM>OvYZBEZ4;02xN13PMU)BD6XdGMkeB0fk(1OFyAPdn6Tr^LgNQ{^T^IjZndfb zAm5Lw3k7E)xl=+#xjcW~5BqAdG)I(vW+nU2sGRe+*YVt@oaf4gR9XuyOiPfhy&OuX zn>CPn1Kvm}6_0e`DUzcqEw{oR)y%;x~dE$iVbE48Rt^ zN_seKD}XuoGTd;Cs(spi9x@^1;`X~X(Z4iA3 zX%v(ZgNu`t9AthVHFKAcP)%QDD18%E_wT`h9V@aMdrr33YCH%q}XP^ z3U2+u{fGkKKO3Sy{1+O~U!w-&!hSm}c8qvPuwsK0d*r5d13 zq0n!UYCwLw>0GF;0?3we&6`N~v}^s7mk^-@F6kjG>!x*+*0$NQ(8vAQe!;J#czik3 z^c9-Bs(V{~U%HDo9kndo0m3sKeeW2EOJZdVv&6pe7*(4qX!_Ih(!WaDpm0qm|t z@RwRl^%V$9y(iv}eX8)O;+>otzCDy-D+B!LD@MnzLg?k~Z}N#wdsyO=@rp7xEJIJ> zL(7qhD_M3tb2XgX(r9HkA0w#HHYSUXfSn(8+sr0~9uXt%+lEHXx!K0dHVSu$)!-Tf z^*oR8R9WyBf_|&J-OqDv6mg$Fgt)72vCF+|>E^*zUVcy$TleYK+6+A%GJ)Z~`*{y% zvdtr=v*-g7kb_OiH?{b)g436?SD9pbr&3u3;I_ME4qltK+s zNvTziWgI=1u)KP-5(2qKd2xENBX2vag!%P=}i~HCo0m=3H zug#8xfn{XV7mU(16gHuVOalr&T{m$2L13{|7esrFXt9sr4U;NEQS#Kt13!0GAU+xn zV%t{aQ0PF(Q(tVe!E^d(dzYG_pXFVNwIBP-%2Ru(jNBTfDk}Atr*+ib&g%#F{s*4? zqv9RAlTN&lA2qErE0^(RL}%(LT#|uq|B;{O zD$@8^*-lKK45didoum#t@ly;8qdTNaQZWJpHg-n|)<5!MW1WEJ-9f+8bpQF+SPOj= z9fM>qKWWk*FJd;XC31c-^VzRMUT>4y-WD|uHVpS6>-zDJ4C{} z3||_@uaKqhF@lkGbj-8~Z5QEbi%GcbGqelwf9@3r;%4wIx6wqp@spx&$b-g}a=hC# zYlFx22`gY(LhTzOk)jZk0!>QeD4VQ<-9Xl&PUZk55%c^(>d%VYQRVqjz|X&_=XvpC znS+Qta2461$+S9tlK*so#ww%^%2krDr?gX68nCuC<4<$}vC??ZGOOOmTSyk*SB9B) zb+X2^$r_}yAg;ss#Qo8R9)|6peD2h__1|q~d`mVcx5765MoWRUDm_2=E^jF?ra?A9 z?{@j~YC-kYu~33EZH7sV76gmK_Tuj~M7cNO3)@jt@49WH`HsPf2AV7(MbxH zeQ8D#hZh1DT{UR92RJ<)EN`ls%>9YFRfDyNR0=n<*Axwtg4A9TfA%{A4SN&~DXCg@ zxmf-cuPQ7jZYX&Y;<7nj5{#Ew7~eybyD-x;x5rx+h64Sn7ZW_NrUV9*a`qhgdlx;4Q=iL#FbN+ZChzg}G{_ervN`@ft=;b^&`K z_JvF04PXdw6y&qw^!8M(STu{Y;%)7Y|K@gkycxV7-y>SE+Zx2A4gH!ru}VgbuTTza z-Gj{xp|iXF(8b-A##-DnPn(h=c`1TVKv5^@G;DjLxR;pog$3OxP`-l-}04 zqaH-O)6M!lhnazFOD~CW4}EWcud?0gX<)XIBaoAhe#>I6QR~e_cqCJbrlfgQgnzO8 z2!G$VH+Ex>m!k>@7F&J(aw5gQ=yyKsDW_7fzD|tre9Ho-+*Tf78StrhwfR-9+k_Xj zD%ECGvXeHzHbA3P<1<^6z|B}3tOPkI){{(XJZhqE-IEw_^r*sNb$@Zi=|92V;Qv&A zeWF%2Y_{tuskad7R31v=h#;L%4A=5BdA@QsZdYwtb>7hQ_gP%w z#@Y64=)Ct;$9;v4$GMraUg@ajueiOz#kMQU;d$KGENDBsX+V%Nb1T7^Z;nX5v?Yw^ zX`?LeOld3emMrz7U@qcBCKoMUUU2OQBAYPSFiiFN2m>1pBu@SK-AyLk= z4tU8~?!5!pYb=Fwn$R8PiX}+m@%D?sY;Nq0=e-t;Mqb5UdvXYub3V@f5+sUeviQ&E zdMCrX@RD}Lmx~9T@*9>GnyhAy}KDw#Iqy(=wznvll*k6@IF5? zweu)^NuVxJ^E4tWyBmN3ZC=^%%a5E<59wJ~*N;005uZ7tu=+jQL|*toE*q z_4Nzehn-0x)uh&5X5r6yTL6`si23@;u8P!ij$yB#ZlMWJ{$jp0%hUR!M=*w8mpSgq zKCwV$ge}$SWYv)d$>s+~aEVGIQK%UXvQJBPX5>Ny)%kB;T{NJ};Z};+VdO@|N}GYfyL? zo26PV$dLN!iV8Onv zW^q*JxTbA1x=(`j7rglZD{)iP8{C~AH44-8K?wjMX!e1xEr2&%GJ`O4=vpz;fnSr& zzrwyTxXKKcmVNzMciB%`g}6xBx~zO8pBbp^y_YNku=O>luell|3@uLWPcw7>x^2tk z^RgNWUE+GA8fyi*bo-}!2LWjetlRg0q4FnnX|Em2efx-}6*fpNzexz+=f$0vs8WE5 zz6EofK?{=>JyOeLWy-v~%>R)+bG73T8UYs3#?N$J5!#|wO`=iFAYgc!T9He87c@sX zCsU%FM^LI~#Os7w-bu^D@yA<|V}WZt$to*v%w1?BYMQA68Mwa*Un;VUTjq_U$gee# zIR9?mD}IL{aWK%2!`llHhvS3|xnjUVYfRehFXyMH**XNz*%N2k_pb-$7QURD%l4Nz=i6LV z2?`^*FEYOGNvedSfTKMu1`)fOeTGt$4KgN3zik1@;Ah3^LCYffc#q2BiRn^*Fj9c6 z;W-jL#r=>R4?{+FpC&v-#Sd|$G-@@w>w*qr^fXjAE|z@#@FIROTnbxQGpCVHB3fv+ za#bD%tPD}s`Ay>y@`1HpW}_~)JAL`UuAn1Kz63CoOF|NMAW!A6jpbC369Q zH3L)hRdIH-AIK~ghZy{e`O&DDi|W*#3D3s^3gMAq;wNpAN#IfkYUilT<_=7@y>aF@%i;Abxd=`z_^)5phEKM_VsySEU$^H0b zg|`w}-fP)wN?(`2-_dsr^=^^AAM7=as3@AriZh)m|A(=E3a_hy+D74EC0Vh}72CFL z+eu^Fw#_!S*(Qx`yD=Ku>Yw-D-#&c5XCKXLp5ND)W89j&Brg3(s*bK`!xekDjc@m` zxe=Xj4!~80LYj0R$H)fNHgjS|M?OME08=^4SJ#1_!Sw5B5{@h1mw7AK_R2j4un<1U za5kHR@W`B+70Mj~u^SJB6z`q$27W8T!JsabPUZDJPLi}WVe%-~RaLox9*phVbVIOH=Cko#AU+BQ_O(iRC?l+a^bjfXBxVh9*hrpDamZ`;yXp zpo`&ikBbTkTkgf#c^JgWFJT?_cpyA+@Yi7y)8Hi=OW^+m;_rr%&?#68oKA8}AwRfO zuaMkLB`wUW9_95@Jm{Wf?kncJO{<4U(i~ruM3vEq7?;ONl(g25YM0em7SMfT1Pk_G zCA$71$Z95bI0>9?yllF_{=XW+Oo!+jH%42akY6)6}ip=Qp!qBxQvoU!_jp?u|3lV+pZx0RzwfC|c|rSo@N1}0Eh zBh7VDO=HOaMmf=&SMN2Yz`GDcMK*mR=zY&+7v4*HiBJhy1@(ja*HQ5Ob|sV4uXPuh z_1L97qv)rqn|d4fZGXH>kXM^zQ}y{6R*7bn%Kv8Qbu&T8W_6ZqqU%ab{>2+Sd`l3BNQhP% zF`iWTPZ@Lv$c{<^AtFrbF>?k-`FnZH=K|NcZC5LR;$Bm9&XM7;mck#OPY9dwW6g&C z9w~)II6Ld1WE)Q>nOe@*y3*W$-tX(QrJ-W|grQd{Mz@yCpO}vPqa!|I%7Xw}RU7s? z`g^BkNRzJr@~h#wXjzBj=$9;;Tn5fk=y20uc=O(+e{3GhMaivj-=;JGLGE-=5Q%W|9^z$BRXc&veDm=SUeNHIH?LtLOHYQsaba zcN&*sHDG;%-j)MA96Y)3F`SE6bT{nnpYGB(-)s3Uz8Hl^OQgnPuDtD&Sn|feLJkB9 zL@`3C8TV355CyyJCY`6GZ=G|XN=MLUYB+Vl1wxaLT3m;9gXD(nq!Gtriey8B*!`?r zzUoSCsRK6Rc!n{_AO?9QGZ}h=%Bn60>9Qad ze~5Lg4{8y72+lrTOiX-6x%Salh7`X6ZtDKO6-N{d+{mW#5WK5SSr&Ox;zN4fkPWJK zj0luskzko&pDBmrlzoEYSSAXjcFG9Qki6k};0gdOyci;jfkb zWtR|p<+wGdN z8Ke04n}#0_0ZVub{ozgRNk4rxMk7HK9)%GEjA160B`5`R#t|K2UJVP$x^w#6VE-uE zP~)eILLMT#rb7RU@>jy0CXJdmoyM2oXEB=wi+^nW8^Z3U3TJ>^RK42%A~m6p9O~BNOH%tOMQ( zL8P^B)c4S(v};?Aq8Zy464isWotHWpJh^vq^vaN;vYB$0tvtEkO78(pv+pqO{i2l#~&6cmepmsH3C z-Gh@$dx~T_3t}+x)I>o=Da($yg&d`mx9qU0=~1H|YFGZm)-GI$@s8qGXr;xYA{ikq_)(HyFvpbF4nyZ*R7s}Et1^0 zC^FU{D%3w9M^aH5H0^}y6w}7m1qi>_jM7=LA+MPd&PR0MHn)*us~AQJ$}C}vh<&r) zDZrlwvNgG?Yt06cpOf7f;ZW9`l4c7WVUI_u3ph6qfou?EbngL8KLTXB@RN;#RE_=A zlYOXraZ;j zwHpn6A}$}`UhZzs(b*{w=u7rT`^@e<|JSdKOS`W~fN1jN;PSuz2c#z8$uj_t87HKeNTPU3vwS-kE=C!DjVSXSlj4keqX?5gdmiL9;c z^ZnZU-?WQYD+t)UQwveSQ(HVD^kP{gD%9lT7}Z3F=2es%O~1A%s(uu=^%6VarHgj1 zaoU4!_~SZ&)21VWg+ECI#Hx&&RLp4BDw>JNPUog#^X<4)kF!cdA)||Z(F|8~6U{iw zeE|$vY?Qc!ZBE8HLRM(0VpW67+|WkiAf0poD}PTlj#=WCKGV#^rI&|hrpbw|1?sP< zalt5Ljy$I0Y>k-Jfp}WmqO}a#fSJTE!ch`ApPg=kth_emD0wzQ79_oe|FN8g9~f_Z@(Dp$?JG^L4;NjipkUaFRu(RGg} ze5ch%7*`C&|g&GROHJ9i0Wbl z@pWPRN5bdzk5ORspT%qj%Y&Keqm^BIo2l?p6@9}Ud7 z3qj@=wCU?Csf~3$vCO3hO2;d?jJoo@e!^lGXzqOGu{e6EjUC***QcyBOQNO~UeIMQ z1WEOC!U&dO2aU5K*3KGhI7bmz*S+yXGfwlbscazmEWr@cWN`vCAqVm1=?|C^L>WtGcij1euecsp3pg zJg8{;qJD=_)J97?RUdz1rjP^$8AuZrP(p@YCz-m(Q5q71Ko5^k;!a z#zPtLWR1<^afNPgOo)=EIbRknCMnp!!$Qy9wt) zhRNE0mo#tC*5we5WQB5ItX>In`lCTghtVv1P|5ypk!nEdGkrY09T+bo@Pq5S)Doj_ zybTBbr5;s4XaM|mi_qQ7$YE?Fy!Fuuiec?=5@6^Pq1%ie*PiJgGm)!Hxlo1GfgFHn zs}!a(w^7iE?byzCt90wfU|k(9pp*KyaeTu!RY(8fKc1dM;1Je#zyBrQNec!5Ui57!ZF(R@(KrmhU?GT&p*}l;gIw8Hd_Y!FD{XZdB7O#j7vkJI_=YqY_ZK;Y(@dT# z#}cVEr41tIctlz}ugIwtb1Mp2n3M8u1aq+sq9t&uWkEW;Ul>Utl%EQZS#}TZqDj)c z!F&)Y^&3eGRCV*=?Ds>v%4Nz)a9!o7Rb%E}3xZ||4Ywr5a|r8D_@AsMch~~2=?!1| z&jL#tH*P*ZwuWCd^AJ|?a8rv^+jl1U1t==;&I~~5LUt+*o$~X58;UTGySdCtU*VLB zIqia*GxS{V;L*`h1D%6bP(xNMilzn*`&aP`{k3R_yY)Gs4MmzfAU7@L6!rFYP{F6{ zf0CkUL7vV3fx_!B65*OKE~CS)H59`)JFi!XQnCi#VL1vg$4?*akDSHm(#_6@(F1!? z^6>^bglLzVK{m>z4$cQzLWkth#_p~h=oIN8sI0muiV0yrmn_rNJ}a4EC$aWfg$SuEn)5k?uT3eNy(cj%wlSfNT01`-Ruvmk zYt&hUQ~L;lz3J&F@<@F zG2cR&H7Aww=vj8toWaDaz~P{Dgp*iepjj*S2D5nXbnIxf#Q5jbjB%n7BCSx0qLl-c z!{egBk-~5!R-XxO^`vItu~bBvY$z}z>n@tw+an>}lD8nk%do(warJZ$Iz=5)_y@#0 zC6>`E6D9lmcNfOj56Hm9vvSJ7Tj4hu4OtQx*vg``Uc-glwBfbiTH36^Ixn3-`SZJ! zLf=sV=8erA*LS{&p{Fq4HU(S1Y}94YUHBgV_gri+6*zbZk^NR~`+PQXibu$NR8#7z z*hI2O6nXs$+2l7IPRB&8?u^%5>jo*DP!WVVF1rbY>#}c>?H{a4K^>Va_3G!5yM`RL zd+cFeC8;C|W^filA_P8o7fz{5)1JEz7xz z;zg{8@>ts`yxM*z+LjITb7y5Cj8j}v5_-T?YyspPS-v!yLjBNjk;D2VmWM(Qp(+<` zP&P_F-aeDYiPI7j7YsS<3z-?*8IAT3!V*^aPvy<)DJ+N!~6^iRqTD>hd)S*lx8kseT~mTaML?h6@` z6EteIq5zV#DFR`?mr4-p&Xiele1lju_1b(NS+d|!c~NJJVFD_`5GPy~)5 z%O81$ZO|-bGteX3VC$rJNjcL=I3k$->)5SI=AIFLv0z3kf)xS>8$QL^%SE&Rc>lqH z%hePvz#%!ci~iSTaIg65egzL{r}_IqUDG8Vp}OZC&VK46mTYq+`pe;aP* zB*J;7taAbxsEwpd4;iHbOvyN^K8q$=pVxuAt&dWl`Xq(zzmL7eDv3;fzZ@N(^;j22 zLFr^A)=F~G+Osut)$a{eJD*t3Cy9el(gKr-0$#Z0TmP-_Q{$zm?9G-L*#D%{rZ;>^poe~9@FP- zGv5HkPSpvLX7W!CiFtxi7jgnpF~~>@VS^7E88AFGF5E$Cx2D$4L-MeCGg}IU{N>RK z$>NH>(D@=O2Eqys<-$cVb#YG1m4l0<+F#;Oflj#vf~H5gP|pfPEOZ`T_2dk0DkuZI zmoF%%^9Qw}_1P84jacS3-n3=!%5nla3$u%%{QcCG0vN^V4EUqVl(vvl zr0#gh^oQ;kb-*9Rw|`cVOWA0J3B{HnVEUz*CBa!{a=UTkbiU_C;)teTs!DsB(A64` zzPC4)>8#?Pl2%nTV+O{ds@{lBB9>%96wAXFi#IcJh5kh-RK!Lifo2l};y#vY%pM?U zzT>!pgQYMbBQGXdj z&bLg3o{(U1JaX%#GQXc&_X{-!g@i)6&RhrKyRW9m`mVR~5kq8*I)g9;2h)=j$%8|JTZRM)}t3ZCePl1*tI(Vnz zP@RCM#k#JRk+s2LQwr&wH6t^$z9W`Ed8;`<=00?k;%;zy54NDz%OV1<6u#SE z6fT`*yf(Bc4xK(=;pQehjz(lynvjO=uFYGqiGGifX=;_^V^>-wm4}CFM?|q@p|GpX zB7g9SVn)WhE(&IpU8oqVevNiVm=n#!mDu`js%{lxBOK0%=iRcC5*%l_Fd(cOXCFj< z-Cv6G3PE^$pf;5QG9931r7tY9L%W+jkmwyH&DkzmEGWbMRwn2DjCG2MH5d6-d=quA zoq{P=9-0LUq@Se+L$6r6^HO50-4K zo*mOslX)M3izFSO9xhT)miKcXBv^sKq^Fh5XafiYMQ_OCaB#xkV4<_0`pJNWtbcTU zT<#T-DjOOVseOE_<~*F`w_|mzwV>7e82d)$VJhUKnFx!+rpeckL>eZ|@S?vX=FwsO zRbDFphVaw>KYW4Q@xZ~mzj|7AgD>F?%*2_Wc3HlXmf4qK_ZGPhx-XXNe|}#rBGY@O zWDY`&B3dLLM@vesX0XIn*~a*i(nl6!S8C17LCEiYmq^P^SSPRAMT2TK%r@lcJI|)O z<}b--2Pp-%;4wP4R~cSetGMdyw@%D+1=nR%r>`(5`B+fX5LETQ-W!}M3)F;Pxvn!o z;xBzMy#9eMC>4w?Nv|J^`}A@$U3^R7GL(f?^m(vdyx1yB$8T>Wy;I?d68UGfLlb9u zh&y^+g7E4!ihP*STFzJT;f0Ks9-=DfOD^ z46%;MJdK?ARvgUeGp&2U)ON$umQ0fX4TsO%Azet**56K0v{CZu6sf|!gLZoR#{I3n z>eQ6-P`hH0oPY38t7j5;tRYn#779h-VHqp3%s3kka$wA1I>_h=!3O9?DOZ zML@i^sQk3r5QfT|skE-NS6S6;FUd7pF=sdCv4unyed;zCkj(pPxx>6hJ2`oQsloR} zdb$k~sx7jH<*&u#|0IHz?wtE;qF(ao#knt7ovqft|0jH$0E(y(Lk$mc^L$xqdZy~C zq_(Zv3}N98KarQjnmy&CQ1{z=cnx1Hj~&CdpiL0)>qYWXkX5YnUJZ-1($Uq;s}QS3 z^l|ZUL26`SW*1>zc3upU6!F6<*+eFb+Mi|mHsTmr%&2GTK}+si zZSuA&6e;nav^k}$F#V34lWAX@ zKio0TZrLtnEAm~ob_&lH9N&S}ZRuk0LL#M;#N?KCJJhRSe~vN^JpNV7elJ=_1U7zI zt~mTf;TLRkDT!su;z_GL!>|)-)u8-*+p>n-x;9%RSY(>7iAXwPO?(dX1?PcsxM8l! zrXqZ}n3`hvfDgSpGYhzFjR7m7U3`@C1c|Y2RkkA1lyvxGDIRX^$t$cL|sLQ^w3E_7#sYJho7w{un3;1$!FNpmv_o}$Nc+OkqGHPa&|BQGa5i92(l`wPR1@nL&GyVZP8-WQnhuG{49Tw z?gLSGLLPoho^GrpoU>_NI(Au_5p000t3Q!h;d~6hzc!!4OeJiW1-m ze4?{k%9l_rHL?0*-6#+k+z%wgiT#GqyMUG|$-L}{Ih9eehJ%^TWhE17-1kma@-l{M z*Vdp2RP&wD94t)vvXbf|EH=+DG7}%XZt`dmau$0i^pD#C;DlKl(tr)?t0+4EyePcx z@K9QYpNO8Yv-NKbF=g)5B4G9U$tl(QXL3W^p|QR5kOr2?a3eIOK7=3ha`?3=Hq=;} z$odr%DYy^)nZIs_EN2_5^UcT zKU=i|8@&GgXn$L1nh1bB=VY<{#x^k)*Xd}5jlohe_4Io>6nyNv;0tSAfO$`Vmn7{_ zh@qR18j;}L`OexmdhLlGFMsI3k(r9cVmtM}Rar?K6ZjJNj_lv2Gsf0fzq6+@aiq#2 z>g5Z)9Ewi$9fyS8IWWC-scr>13^)5Od*AQ9JaGehyEia;zQ^C4{7QXWj+0t)KmGOc zR47VfXe*-q+*yLN4>P_w20=i5tz2uz5OSCdY>@4x>yuYfb9zYQP7cn1g8)j^ANbSL zhkd>1goza_Bj)IYrJEwl(8Dmm-;a(`s+s8f`QT!x%)}IX6>uQzlO`ORg_Tt%QAIFQ zl#xo&XOMtL+=ipdBL2zRrDxHJkmNQEf{o7@B!?sn3xSo|WycsW#tGI|K{lz}Pl<`q zR_8in5iwK7LILi>MH|Y$gdiDp9E?un;5WNxhleW4%eT}(448|j`dQPZR_~5?Yk>&U?zBe%$r-z{|br!1D9U1pk8Cv#;%_-9r~ZDFYjFA z&v9CI4W8lt$bT;XRS%v0^Rmbu7l`^bDRX|MX=<*=kExaJ>Nwt~cP;g9!ZQ{Us=1^nW{ zDjNf=NEPVi^2u2XVQlPGByJ(Dq{$fF*!7(TT@c{+8i28)i;zDOa?a- z)>xM5#5x4sFs4pL^woT)KiX99r_7wR#oKMEYa9A4I_>))Kvbj@ncwKZp7Y! zppt28z1Eq`^(zP$pn-}vo@4#MoFh`RrqMhc_peovOSA?}8>i^RFDbC6S?(4Vy<3jIXOhF`zN;-YaC+eqi;Y?u3ymaWk* z?COyVJL%{j#}1cfeGA`xJAf?{kkb`4JH#7C=@AA3%LQL!1W!K<0fZ_IKnoTp`QIKy zE&%Ai(_CasMytG9luD1)D&wJuR2jLX_iEn{qrgi+#ZyhK7d?gLIl+z&FfiMnQWxp} z+9%5{?C?S&muMezk}ob>*xv=yH~EfvTEc6FxAul}V~PI-wJ70tW)UFqv9e#ddH2Vj zRY{Vwl2!z_MQCpIG16R2CzQJ4O>mh|$=7;u^G~XffEkY`F|a9I+)J&q422En^_$gt z@7jjb38qQCMDq;*5m@6>Q+#Bkr?GwNk-a%#Xt{^Ri-eYEips$p?|kiiSdTwUb1w zqjAAWU?V9N?ZI`yXXOe!N@%$I()^u8QAIOCL#65n<$+n+%NQ}YR&!or!txra(uTB? zZ0regq?YOEv}aDP@-o<{4qc&;bZyKAdp8txRk*&6$4JwGwZ8u$SyM2V8zx(+aVM6JP*b!3fj=%2SVFc|j{P-$AhXxaieE7hc=3j_qm>C8zz*2q(J-Z9=$Rl#yfnA#!j!lk+DyK`j(v>;u(;5ZZdUkwP&IU zywcMkz~}*C=<0b^tOeDHxi2|tgMxm*Z2fto%uMFiURmd6fGuY*9Gc3xkVYIUHC9I@A>GJ(nN)wc_u+S)4 z@aN4^H`~^5C)yCf#R2$9ZTLy$IhSJw*>(ao6!sQ!NQE+^lv$7xP0+J+O#NO^6etXY z0oef}qa=u)qx+r1#CvWlP43dCd#mZ;o*pFGvfl;ggbo&Vt@YYLef^hr?Yiq%0bZEZecT zw)FJhB(g8lUJO(*q%x;*?@Zg8J3ndywyldT`E`ymUr!$1s}IHtSCRY~F5mK3V-hwt z2ba!&hoBEgjHGaiW)@Qj5gJ4T9~Irp z8dgQ2-x*7ciAM{p$YgY`D2Uu-jk|(AL6uB7@`<<`A8N(Vsy^wo5Jz~7IEAA&jkkoz zDnhW}WZMsrjLW{&KtYrs!upNvlqIs{=XLzE7s;IJ{EXwxaIBC`=U}>@>}X#1Bznbp z50AzYkp&qRkL3{+mEK`EzEkaPPl3pP7fnAjpq&xk(ieH7qh{^%51x1ih#<1}l8KHn zcj;x?Rp(SCIK}+`vbg>~TM9A^LhQif_jq;Bg8VerXS@;Z{>&-_(q+cg=Zdb3 z?+5R{4vh!Cc+Y`!p-4r0DkBc+yWFWG7h5X|TIE~%bc?FxF2YycyzoCXY0c`TM4@w0 zM)>#<1bTPv|B3^6n1;(J1tNR6czu4puhGRk2^WqtXj-Pc{{)_I(>Djo6xFtLTD=8{Tliw2>|l2IC8zk@a|&+oI~O8gpJVnm!d*<|Cicq`ALG52Bad0X zQ$NXb>egdqxpU%CuGtQfq@`Y_?0qOF*Hwi5KCe#HBJH2AdSP`il+Jj|Rar$KL)kUJ zN=j4(le>P(Wnb(T_eCN~foZ<#+=0)ua6Xn<)r&B!^!G$j1CYVr;>R!-4wRXrASGDg zVlx1(dF#rmM%l&({F+}h#VdQ{3 zF%z%Ve6=4MP|yT+O++o`!Jv*D4)iT;$TRll0P7txztIpTaT5}?BUgdhIZg5$IH}>G zSR+~U7AMHyaFjUg%ia}mMi;89Ho(E_6MV$uC9>xF#lVX;PC^91;vQDSU@ddQ0IvcR zRX}wwmzto!)+$cod9w)BA9MukC@9c6Rs)i~Y-QvQIUeV1hp|XJ4-egjE-7=h(2H`2 z-AdgUr2g`)u7&dd^|<*TjQoKQj?f?c`IY}0VycZn;r;0xNTBZ>Rq$TXshe-Je$7v=VQe5M_3&59>`m!hcpvbtC>D_IqQ( zs{c1+a~=v>A{yqen6armnLVcCmwZo|-vE!Mn@F-2CoQMK`gC=OZ~E5)Y;@HA7Ff8??|b|6VkH6e;4QZm&Dr>wHqt(i83Kc3{#3+RrjAFz?KCct;A0uaO#JG z5bs|M+c4Hb+5yBM19_5b<6h@+6yH|URD<~Nm2diq%?p_z%55=GJU?TD9) z`;boC<9;4pAyqs!NLEJvD?@jg&3Bo%BXIo#8yzF<_j9k(ou1)Vz}yx?>TaGZqW*nT zkTRg+)ZXn6F3NZLrjr+gH?Db8$YCA6E{E;fJ4cV!P5%L;w(Twzk1bLTaZ8vh_H3$F zGSauV1mVuk4LkenHIH8#er(=l`Q2yT^tE51^Rm7L(E|TBn5hUyO1JN^TSjYhQ0YGG zdLDzqZN6l^YAQ-pax=dBHx=Y95gD;{O>^3*=2J$f#$VzisSGzO(3u{l+(hSeR4fS- z8#M;Y(1;Vf8U3ywYOEr&lNV>s3)ZNRh!F$QPxsh{lR!kgVw8E1KNqzRU3(Lx>(RQtqSlG4}|`e{!AAxva4HW8HvP1sy9%CT&WRtu5Ar;}hTY9PKU z1@?AYTCuP4Q~27ti42cLeEqoN|5&(&ubXY7 zvc~ydI3@g+8#8x--}oavPZn|BT8oq#A)4h*fz=i=$9}!UelPu}`-bR!Cp9YWP+BBs zl6I^y8xUm&-I~pNyimIvv#C+a9b*4vC#{sIJk-}m;s1K>pan~Tg9l80i@uh~?smUE zYS(+*&AQ64t;sX4-Y6;G)T@F{mIC0c3(7GJnL{pB{2<%8ee^L7Hk=49xqb-S)jH@K9!BdXSUDL@QB<&SJPHwCD53M!s1MVbdODzjDIg zV|5on3WzkHq-a}5=e*g}sjs4g)s)bI`hOz0SI%xKZ=Za3J+Iq>rLpQpWPnvBsf)|E zi3;im<<2J>b-D1798!1%N5({+_vY1@$%TD7CN|WVg~(DV z_fDeUL07U>u0Zc^9(<(Qx|`*-5xo=eEg20Ywkfa^lM(zaa7a60IAQcrNfz8_+SyCW zYV)Fo!7|}Q*!S$PYy>ZyDtqDI*TT(gFp3|5k!Y~XUWk$NKnMUB)k!DvD--@ zZ!B=jYFN_1#GFqBNt5{*cN!Q`rA>!E`z~%uPyl!pDk=w2A|z%M7(`Uf&xm+3HuN~U zb{&}floBBgIt7!Wt7r}QjiByX70iT8BWfIO7usgA7-l=&dL zp78zGm4gMyfyajaJL8(-*Zj*s@a>7GxFqh`WIIu=aX@q3<=ai@zlTv>e#~9{8C!zv zzg+nSWYN9C_GIQTdeDfDR&Z09I0je~cPRmyZeFzVX z@5Rq%9`@Js6I14@+*OvhxfZuPe7hF%A0u}kXxvqj%6~WkiRV{fGf_61I#!o~}*pEgw z=zAgH7|KjLVU!{?s2}Sqgo1)S8VQwap~T$7m?91j!6E^L*f%T7_}Zx`nWdV_SNvv* zA#HeHH6Ju=Sus&o6 zc>-D&t&At&HcP8RqgJJ z*esQoeUnl(ln-qC=_0}YE6G=f|ANOTnM#pSK!7{2FNTM5CLKaHY;)4+jcJ|kUmi~G z#l;*~_Zm!WFGYE!Lp0VzO?MN~iwGLXC5$8=Qt2ak%-jzTK(EwR6?p79ylL@D-TqOP zPf$+`;rt7`-GRx$T}YW|GC*fI;C>!AVB}Aa?#Q?C8eUuDk7burRB%i4oH5>1#{|*f zQ7(9==q2#j0eVD-<9*Y8qFQBJX z3809DL$kf2WT2Lj7|TlZ#ljlx7FJvIN0O;E4WNWj8j+II>l!MXR0z_CVMi4VaBIbm zwqVf};+!BZ(o&;vs)Vg2nyPHG65_2+MkfAgMLon3P8+1urvsNou z;2~a0Zn(Ic8^W!9+|MF`yvqL=Z$XMCV2Akj!tw0;AiMVT_o7d4!b(y{_!q#et3t;p ziol)dxAt)EgfUrW@kE*7RH-y3DsDX2g6}hzq;*FHwQXii||g_KS}cs7Fxp z4wTl77BGTG1)W!5{hsUYAtZAIltsVnPu(GD%J&e%EyqhD}HbWVAm z=YU0f{4mpG%_-6vXu@lX(Gi>K2tM@54iQUag0-bKVHv=aw>%LOv>QhfQzsWrY_MB4 zP0{f#2VQ}2W3<~+!UrDM;lvm*h_En1eQF_eSyPtQbt(SeE`X8Bel>)9w1RS$Ry1b$ zwPe)(UQwrhvPKY%ZBA)9jb*j36CbdkE(cawd=n$OZ-VjwB0(bRw=B!+YupZ*WwU-$ zcSuQUiIrJn!KftTWS3ytPk5~1TyTE3R=}^a!LUH)sT!$}R>e6v;R-Pk)#kD~+p780 zPhGP-idmF`Td^mYX*;b1hd1P&PGJ*HVtKozpdIiWBUF|&!idSyE8hDmZR*@7yD^ih*lPLRG19Y&_d+N*9j*wn61s!n}(Au>pzifP@R^9&i+8 z*>vA;`7E9k`MTB>>(gG|EPNtQ0Zo$c=2_`UJ|q{;i4-iG7WnJ0Pd5hPVHfdpfkRi> zL~>as4@A&PUgK(Pk$!C?v#rldWZOYPr3D+6S&J|Yl0LmAmMV3hN{5%776JA*TY4~# z|4Q0tKPc#m?NSrL?c!0iVISu3B~$9C?4mF3TP<%(m@>|uy{Se&lq%*>^FIa>f+$qq zR&@CMd$JqEka2YwpE9nrgs3-uFf8Op`e!3^25hevDs^q78d_WO#Q$lI;NQ3q`J1Rd zw^v-0_HP^o_waW2?M-xL0zw{mQ%aqyoyyF0^&8740g^N@w&CmzKLE<&5r2tFt48 z1@YFfgeirJr9wrZ6_23GJGTf&%UBE*w^%l3w+#wQnwsE>a(*ciKxbQ6I^06feFJh} zv+FvE zJia=I*vbg)HKW&5OyuQ_vFs?C)2wBDV4Hj7g@q}AzJ=c<>gH(p^E1Hib-vkNumnOo zQJ2(q_G;Un=XV6!?#l)En`QhAs@i^6NcF%a_HSqtp*m2DM+4FikMqyFJD6X@QWiC| zs|x@MIRQoVkNf=pP?v0@z;sgj!RgFprKS8X&!*NU!V#XbT`ijV+AVJW{!{35wcxnj zN7CEfcoC!<%u$hu1?w6-2WK?9J37G0rrxs;amo@bB(H&(g_3Poz;i#p>>DSD2M@TW3 z4bv~cAwU>cS=HZ_mdKi2!Rl9`7w=%j^gszk?`Tq<_$pYz(ALf{Wr)+!^Fl@nTRcS4 z9q7o6gNOoBpm><#KyyeanPm_e;ISi$64+p{mqeo9ocUN&Gx%gh^&QB{^v0R4*-s?X zk1&j&u%kqfB{mhXX--xO77O!Ct9z}c@x|zvDEd9KUg6x!$vnV_VGK|%KmQ413I`?L zmR>i=3y+co$zeMJAedzgI}n&1GF?V5zVUNwUiZa}HYP^E+(9PzXU`zFwYB+#T7q&q zwO#1dJy9XbMXlU_8vf~S{&_(hti5H|j{EkBvQMQ*QRVi!3!HTDsf+}?)Y!IT{csV| zzX6vsuN;Ad=AQa5Wm+t<*NK^T`x`q`moj6(wASolM_k$MzE$OjOLj*84YUa?uoz~_ z>8;3rNa*Vym4WU2ckKp2#K2E_TN42^rl9$#TnMB+OlgZ9hDU95S2G9?i6ko|cMs$2+`mwn7ZW?ME>|f$)AnBUzYnK;v-kV-Py z;^oLC>SQ8-N93d^`1E5DrT|Bw2+9gHq=QSIMWn%SUrNhmpec1@loh8?p$&u;DG1Wh z>o)E2q0#xUaKKlX<^y~ zIScrjmgwEm&xznZkI@ese4j8}dkJ!ZNi_-`j%lIRbeqgT=Gqq2pDZ-sJ^hdd6LAOg z*BG&@7ofhl;AwlqcV!K7dirJ|$awLG7Hs%mozbia+hxKD zh z-JxpQ2j;|Tu$XIVzJe9onZMO8gzl}o5^RY1aVv@&%a<0poMwKY2r*m5V@%D5!mN=) zf^?~zsp%Drj+GUXk&mMMJ~sh0)y^ns*_myilz6x;6(ktL=ubfnjsut@?vonJ5}9zH zn#3$)uuuJYOEFimHbuit?|GHwhicOk-t!@3B z+v*6mG8eQqo^yWTsnZnwwQg(OT z!+zByO&@uxs$s+s=_-=feP_;dOy_Fsp8D6$Pp@VcBt~!cDq}jNK-O+~;(Yp9aZi~k zjjS&Z`wZXF8Z>g;C(5-nx#apv1xVr3SOb$T?{938AdJlJGcIm-REK9?0LS4K1K*-tGNQ}Z1T6iQ&l zg*D{q8&Ao~4UiDOD49l(Gm{cylvsv{%-XK1aRh{AB4j0{6|VQ-@Z$Rrq{Kut(q}oQ ztoN|-0wMyP0X#_u=}StLN~E7%d=5ofgvSfjtzAj7O~VCR9a7(9(HlE8&#$h?tjv*wVnDei?A)!}Jn>tN3d3knl`c?k&7`w9GSwB8HsxQI! z&%R|QEtYB$)57}>ZZYE{>9P5%(D!TF&1>TqmR@_XnL45cy!gn5f3&d#&P4)8!&R4S zW>A$HW4%at5bia}FY%pu(C%`3GG`Zz&@j1^n?ih^^+y<7W#`>PNsD@WGXH+1h8&V8 z2IoN%1?B&_=*J>4k{QVF2hF%)4a9yP$u$kP4NB26?!{N(Eydwg{mL~tU49=myb;g*bQme^L<(lhF?-g;Y(Hz{uzX z8;WoVFN_7@xbr7kWISWTub~V*-UTRDLv@&oq=o4-g4W00ojMX0)WbpotggRWaAMbp z0kfMjz>BNPY>$gh+&Y_y2pa?*H*8ZDPR2znO7Qs48;RzFQNW9H`7-3q;t#mziRx zATd7F6$MkES3QUeVLr9@s{VdcpyJuukMg*%70C&&TpTDO16{hU*dD(>bbPM$M>kc} zbLT20?JHQYN{(DV`!FE>nSd6%fes83TpiQ#YB|`=p*&ka0C0H6n$>!T!$A}*$2B<; z(%IDh{`dIlQ$Hh{VJ|lL>uq+u@+w>3=j5e_w2rTOYK;V98PQICmMx0Cg0g`N01po> zt|<3USK4{>7n0-pZ8mh0OcMQpwvuBr1yvTjkeISGa@uAy91B>uW@aCSc{xbY zNmFV>?J|G?=1{(dG%jg;I{A*Y9>l$HKRO0{W>UInP%5+PuBKKno&|N|{hU#@R%QwF zOfomCMC}?cKib(DGkH93wfdqGmea7HDr^|Y2d+P!LlDKB^7|SOQ_|$nmPgTSeZiS$ zK40>AL(nO&P8j)9Rbe9S0M*S^(%)uyyuJxVC@vRV7?80vLZW7&G!DLi`A;m|E*;iN zFe|<#b=kHzZS}t8hS4++~WoRHJLT{8{(w zY5Omb#PlWOAxHF|#$*)(L}j@G(*w3(eT=(FVTRku>=+TC9-Zy9&1b+l+(ORW#jeS% zcfBb&#xLieW{<2Bp*Cd(-bea#-ghXnlMOBR?)#w~4_uuR9sLr0UckE|cSVLw?KcP~ zq2wn&p0`G!3(?nCF6dchLWy5W#?8ie`!ARtSJ?d z{4Z9{i7W1oupGMjd*60W=j)B)zbkgE%<@_a2$6Wq%`a&Fyq`+SPK6gx5Tj_((|yCC zr-K3DsDi$rGuJD=eq9muBvu`0WMh>km!3vbB9-=^VY}i@xCM~Vji4T8tmby_%clU8tf!Kza z7oVEUlvmO8#GXt5E?*nlN`=ABW-eLIYQT^Qvt#|zllY$>e%xJCef``6nueZ~XRMaW z5XPWCNnWpTNJs#G!SEX6)XY&y4K3OWiz*@cVHK&ViI4f6JjU=XTbS0JG=wnvN|RGd zPVNEp)IoV|+O3?dz{K*~LHL%zLIBZh9rekopONdy`Cb1!W9dr6;@*9o;_QDMiaK?m ziy1z-GL+fT^zh7C_SB|xRDVuxYNz-9kBLut8q5Mpgc~OlhtjJj+Rx$h^O_Ig1l>?7 z*)iRO*n|L9obGFy_Y2Zju-Q~GmGV*jDxmUAVSZh(LCJS4hflK%1)Wa?f8E2@iJ3RE zo>?Xrvv>ev@7M>}#<;!|VAt;&Jxhu^nwDth>;zXxqy=5KB^(d@w@hjWMGoKBf{>j> zSIy-1!Nm?J5hj)6c}lK$l}CNL{chK^SG-SUGWD$`yH!I-_{KR#-lL@@Kg=FDW zGlP)8K`|o|x2Q_w@=H^NoMzBHqAB*8!g_9|J zJe-5uhc>~$NFtuu*oZvDh?UMW-P*axa9bJ*0ue!U*%TiU(2VO5GOH9w5^nruFXtOp z4T)&XiotHpj8lNus41dNyx!Tx$3f}NG+-ai9b*pDRockQHKUy%HDAH?`iA2aTFSx9 zmo+_tho|P>$FlMfYXtb?7ouPh^_o1=<;Z2NtdA;M_fHf1Yw*)CV!HF~JlPxp?>-1Z zdyE=hp?y)?ZNXjcL|qxGtMc`TqBc=)(vfH-FBM}$4sZ^Zc5sYd2I@i}=N8QVqYKIA zg_wT1E0WE;X=}eeI2<>id8c<6(qG$jI)T>s%pFGRX+|Z_NW_?t!r@Ho(WOko{j?L( zgSBYB)_ECzSNyDW^CECnL79*g{>A=64Mo%h-<~9Buv{!}9Zz2*|C<)8S1s(9a~OtG z6m*@^{*5+`1KHYlcSQX+2OA7aox&@REB2T4loxzKQ;_3+nKID);2p3sQgq5lb2duQ0Q*(z4jv22^VEGICMVR*`N^5w;w5z<`zKCUv_nB!?VY2ThcVI0MIiH) zOooGFA&;VOqO)WbrKRUZX#qUe(y>mZwU>`|Qqo0noa^9-O3Mgv;=|!zM==4C?C=nB z=HwyRRa!O{OW=&W0to>^1LN*CEpbx(*^h0(+PI&0J8C*TXt}iSC;b0mF@A>$oR4O5 z`@I(Xa$D((em-#S8M+rQO_gF?PV9iJ7gc$rNh;EGq}#E!8gL$lLBCkBCKRrN3>_N7IIKgY=Xz`hoc* z94_$ll!3{Z@572l=&6Gu^;Y(&1N*LX-!>i*f`6_<occ`xpcI9lU` z^np200w-v1UIbF6r96RGOxr_5xuanmJ%oIRZ79wQ>-@40S&TIm>=#scq2?Sosf!b! z6fT8Bc8rX?%f2+BXQnW>X{;GGM$9nQU)-c#xdR+`gd<@sH<<4mlQtw~6Q6YYALj^g za5T|Sn9SmjUVZp}|U13;VpL8+&f~Vy&yD2>#z@7O00a9s0e}9?sl|JOt(ypy->s9!aAx<-tX|F8FDZ)W2g*P0 z$y=95=kR4FB^xy<@AZdl&vrtmhBkOi&H zVIT+@_W>EmNfMNq7{Yd?D@%4FWNMX)QAappR>@sM0>}7uvsDdtHM|*^wL@7n6z(=XrEQMY6W64VXHC5H3_~Spn%Ue zI}I^o(@Bg7X!fySOck=M(!TQ=gV*=0Ee)w?CP@8F~ z3S_vr7IAFIgM}YAhK9hY!R!v*PlH;g_g;$D9TZ6_CXu;-RCPR7HX2B_qW{|pCi15% zX7u`Hv>O?cv>|M{e?WclY}g{{z&8#BaJ6l@MXsv#_e^8HT_M^!u^2E4RY6Rh*t+@C(7=g0+ss7Z{mfe@p0nR{ zN>pUq4|rf^+_%F^)8xSa7~!a%I(?Igk@5@enkkLtcvyiB-1Jh!t*J_5`LU7y=6c2G zr~mrUZcjvkDsX8nBcyA%{IkQWt)y1t?B!(z#ggFwzPK|tizvt)4dt3cjtGL8VSJP8 zIf+MhtV&)63WT>Nl}ZJy)kT8IN3viHl$_iU<98H{_p1VkwL9jLO4C9M-N+*YBGyYn zZ1k!jGKlxT4<<+jjG!ZwnAf9;)jh~$g(`|kvIA5bh{^7O5oB=pyAeRFBqZ0y4W?|G zP!hOnk{~jy%pjaJ{r6)t9B}@qNCMyu3H$IIey7dD^&mF}Hm$p16p-2$JV<+flA$a? z^I6Bq-C&1>-sL78y0Tsv0+A(41Pq#SG&{d3y|{lgI>p?>6V}gld`FWZqW7lo`*E@v zaXd4GI1ri>pN( zwZ#8~;j}&dwJ&sbaT__&26@vd25_DSb z-EcO;L2Jhk1;(@-t~{A45A*5Ovs}x1>PBC2z@tNIutBoh>?cBxTG-$HVDl>W6#0aQ zGkrLsdDEzBCWvrEEKPm&3V|xOYMYUxhn{7mCc$OsXAPML!CLtq9AQg-Fq={isaZ)c zj^fjl;+h}gWP6Xi!SH83oUHIa^pPdN#-y<%fbE!eKAooM_%4uW4Gx$tgyCmV<$~xW zi>3y22vW?E0PtsHNhVJO7*=!=V+QK5u9z|HYB&S^V=+p=5DXbe|8_jKf+cqR1qsr^ z#c+LStjhu@=;2r<|9}S48c}LV>;^QOaHb3l8AbqRx&$lzWW+Y=bPtyFX>(~MlORdE zaVt-F$q+f%9b;in88dJpik80!c^MgJBT8&LuUKc2PH(QDZZLI+`Uc9drJ1o7js-F5 zpN>`}+!%s>hc~*OJwL=?gLnVt$l+lOgl=Y9()Pfqc2@)-h|Q9dlPi5uMSSk8plk*G zL%a2a>Ft`-U5K76Cv#aQk9A=ZsWl8Z*kgxu=vt|@3?{erZ#o$ zR{FEq47KlWSHH>B%Dz)iKg-W*eg43eG@0e5FO5?v!Z%FPz8+FBn5XNfEI_`6}an(Z5u^Zk5lp;wR5XYEvtGTF(e1?f;=t0Opvk8>j@*KLZX z(+gz(^UjzQ-5sLTi!0Xt_9r3$tZ(X=eQw$dOv4r1Vha$a+@LLj3GkjxrQ8FX8f~W2 zli8Sl5?a!}7kFIy(9k|81vRJnWq;jH-Qhy~!}1_fR^8Ql9~&A)e@~fWSA|IajVT6{ zi+aM>>Pt*tozFsfza|_Y3C2diA!UJsLqlxLfqWump&zQM)W$LoMw3U`mD9j47srNG zsX4K#hyuEj8%-b%>_!Ke%R;n3q=ocJlud3%r2-5|@v%fnhU-#M6buQ}eGj5yY}DDI zFp|=vbW;x)%@ft&TmhEakbw6*8#rfirhyb&5_k-LMol67mj)w~jU*U}XE)YpuBn25 zGA#_9!F~BylL0T$zgpq|{mPj67uh z5sH&*Syt2Ty7{fVPEYH1Bf;hRI>>F7vm-~bPll&cKFR&ShK|zxZx4wh|4G$yO8}$+ zuK%96Ey%TJ7h9Y9IfM3t%z&1DUX$U6Q1lc=*2}KdIVW`9VR8>-LZ56>-6JsX&D`A# zy*Mr6xnFx0U4=)#@$`H6SO3{F@^9Jtm(=T(Upx)@o;98RX!@U3kLBno!|SQZ>APH< zuKU~TN&}3TQ}6NjH)`U!%S*ROOPZ$>ZMK$M8i$E)nw*up+bgkXVLsn(bU&BxM$lFrpo|80>(=sxs#NZ!v5L6pSGlnrbT=oXYII$v^J7Xz>+{Fe4-u z22-SlBb9j|v9yGtL|N}S0*fH?bTWzS&e`#Y(%Fo*umHa1iKBvL%KyLvwK5@uQ95*h z^aafxopiw5lKi1M`Z$)#Srf*#@0*vM`f^e{1eIrQ)^*c64b^B6qw3y^xlxLOtACgF z_E{9;|D)w}EC41jXufWAs?OLZ3RB-zM$-vVH+H*mArcEm=?YWH1sRn;D3|MJpby`N zrOCoi+V-^F&OY}Wbb256JzVcwMZ}+OFO1bUd2`!YG#1}zkzZAI^G2CPK4*4T`*p4M zJPZy$xKG@>Wn3Zoec_qi16YGC^l@}O1@DeE32gfH1yRkWs+Xz!Gh;co z8W-i#YzQM@rVF3DBg>ftU^gUSQX4-1xIquT!S-nFfs5Sj+W0i?H%i6JwOlaysnb}r zJ+OiWC~01;EA|w>#ehk!eB%VCIJAvdb{$cVWcVQv)|XH%=u(jI)?D^%@uLEB#L@7( ziC#VFXi4X22-I(m&M@Cj10qC-fya}xRlB2Q=I2o=azQYnpGbCkw4?UVPNZ!hi$Ah2 z`}_YMR{X!WNw>vO>coZHJ<8=N5xzKcX@42eSTH7o?35Ar$$q|}KRr(~{We>#$s+A| zY=>*GEh0ony|10q`}F0Pte>(pOdEgCyMtFgkAKHSxN?ZODZW5+$TUNjwkES=d8!!@ z^gan;(h41}tmn8Nf${|^u5v05)D7qw{iTWti=Ul%P=^guy{ZZxk>g(wnhOlx9}I{* zJeAm9{vBVvZy0l?_0Dbbn+W|mAknuB^8*GRa7x@|nTg{j`A=VuV{PCa(M$0W&erM+ z6kWF=diY-Z3Gd>loyz~5u7~f2lLl=F3xBsdIUYtSa24dUWtDi;yRi7Wt0!Y9A>N+M1ddmxMR~atQ?ooUlUN#|@m9UWAPmCcuLUZ>HwY8?4Vv3g zr5g#Mo2kA#7HN@Cf^#=V=lu{xX>9oR>-C$dvEB|MA}j3gf3R3x<3U48F_k4+o{5-^ zbO3Gk&>?hMT{c=OFgW+5*7fjD*a=D>ILYf*Dh!-NNS6#&RVi5U2rUdkPJ+ibF@0vd zes^V~?CT0Voz&^Xa61mt9t~*s;84>yr)N(VKQ?Bwqn5TJ`pyme&cxssU3oM|!|L1M z1-*6WI_}lgRbs*t<8fs8rF2+9{Q0xht6SiY48)Jrt8z~2U$a#vW${1dlU;0y+NsY2 z-Mt(FmX01qUk3Kq|D%v>qlolz-Yu&@8Thn&K5CWDrrqjnzGC`f3_LzM(NR($XMja8 ziaDw!g@C^$(%A_A2{Ne9gkMX>>Rp9%$GI`L#nY?$L3T55`{_QN3H-Q2-dl883#?BBUi$BnIF4a*Rx{nw3^~gy zO4f5njYP2+{y{&Uv%)F%_Ozh;H^kD?pIkb74X~j}he+`lN?G6wzO7Y@$PthN#22A# za1D4v#obJeB#Kj|gvCsg<1M7&+#As3pIPAYC!ngelN!*p8^{>arC`!m6T1MK5aWKH zfpzl!MDgTiY-)zfz;I@W>ysS-nyCCsR3#al<}$r_9(Z_If&9FbSPU@Zhx8v~%pgo! zR!9S3D|O?sxq+UN?ZwkM&8C!9zK&rde1o*1MHBH!WtQ;tTgyiRgh4bG+iOLKS#275 z{gn?^g_WxfrBMO|L3}Suq@w7dDx+MOt;%mf{vITU%ybNk-7bZd)Jd4@5s~o*%&kHmme zySNN%J|Tj`cyw|CsT!o^|IwIwJfm!%sek!p-w#e9reCWQD5#7Wa})|vU915QzNN#8 z8WSygA8wEB+xA}9$~ixkrYfEG_nPr`APrr!t!{UQKNzUH~b7|(%&6Tjqv%V4(K3#RX`h4+eVsL8oB=#kI z{}jQ<#k5YdLUVa70-DzXv(E_$HT_?%o%sfN zRm2-HznO=|lj6W1-nBmhl|6DGYgYp#zmUsuHn`GIBJm(W#6diC%rj@582WdIdU0?93B?e`5WSyAmIkn*AT= zK^j1)4=B0W=r~QKcGIwZp_ghyzYJkfo}( z-sui^i+{CCL!Nt#RiqZ(2=!+B=~Stzngg9K&&Vjz+5Ucq47!(QeF9?rq%{j>W4~?| z`pB!RV$GbNhts{eAZsxETj0lsS@xU8#BmS;7gNf78$8#0^v zT9jFRIr_H^K(?7+=WMx+tdF5Fwjqhb+S8{dCXnqk((_;pqhKKCaPqb?5gY8Z&Z$-gA6fh5KX3W5mMm91zIgnvMjCr zk5l474AjI8PDa9Wjgg!_FtC~tR2{L%luHv>>En6}4(@%O-LP_xkrtnWr z+^3rrLYkei6lcOz$<2Rwwe%dNTe*|>M!_P6%wp%$u;kx}nou*rQtoFsGck8$Vvrk= zQu39YGr+SJQ_4{O5Qk7L*vps0f(hd@)&kHv-MQ?qzEK>#Ax)~FwM_8r#%PN(Q8Jv9=_%!R?i*u)>e>9a}-qTprrmejS8iPkv&|_ zCoEY|zdau~I^hX9J;K0)<*0*i#ky*UxXhMI*+{iEc7Kiu1-D0EsZ9cx5erq3j@!B? zGRKQmV?br*JIcGuf6>cNFo9IRu>}qwF<0LvdVg?oO9ZuO$mV+C6a9RSm@I4jJ0)c+ z8%Qi~ErJso_VTd9PMA^Ov2CTR#0_zpb5ql9$Br5Qk~LAdtX z6j~+&7GwW_0I})W8BlG6%*v=b02_zPihK)6l3{;&-7LvspA|6yG;C#4aB-T3;tWlP z4{O%ca}0s&$P`sh1T#27oc}H3I8`t}q?7qZ4E8w@bW*`PgvC+13`m8WOg!)W9omQN znt5rpC-#)K#BT^)TFhgK6=K?`!1fRO>f+J}Q^M5JJipc4?d|aW;A6RQ<(O%>*>@gH z?pQ2Gm!8j|RyjG|lX`TC9jj*kq#0z|3Y;(e{14OiFB9M}8-KpF+s3zCs?{o7L4GDJ z$KVll(*PBEBB<*6iiJE{Y1(aTn20g*c#;e%6=3)DL}O3ZMM^s=xaad zGjYticy}Z?-lQvZNEJObT8zn!$_nPsR`2wh z<>$rb|4x^&Rj%$m5`F4XeAcfr&F@Ff#gFvb!H_#Rb0AXP3hKI#F7Su82lJ`?nQ&mn z)}si*ybjsua4~>ddErP>`r`4DWB^N*WG95+Nb<%HW*|?b28i(t$mTliuzLFLB%}8& zpXMQIq6n1COk9`GJ-nz?FA^RAbZ<+>LffeWlZvH?m{s!I5tfRlvCJGmX6TJzsSK5- zf98geToVBc3XAcI2~kZ4hMy&fs4OFMnh6z3-ArQn06mcejWhL5;!*N?ECh+*t0zW- zS!}Frhf%)ogeX9cD=m|gfzO}1YM~VNCkD*FpSdsAslXdxmB^1=Sz`nd^W0uY$`c~< zgAHw)zz!Imq*+l;CwUrK56yf0OCW*wl9dMCGs@P@wz;usR%|i*JJy4^h+33g|26Cv zhy5twB5P)q(@?yDW#gx+ee?aHn!EnEO8lt`dB%SLsYo;s51(kzZwK4<8CPi^c+qD< zw2hq?m($L7z75~#;~c)o#0vNOOLd(F;|Nk4UUg}*{|yMOfBl$ff;Vrx@+tK&{JnUl zvYGp5v;I^&Q?b6}J2|xqg&aei&55kQDJx=yN|(B%D!G-kv8zxO#}ae#(A1xG*k*$@ zenUA72iMerMm{=O9v^h%RqyVpH~c3@UEIo_)|9iLrGr-CzXehjzwVSk%GwsA*%qxg zz13uGhUY*`meW^~KlSo;UrlK3aI zqM*=cTyA3FK?l2Vvx=cWni~pXCgu|{ITjmfMKMT91hRW$(TMn(^JuhrS^3mKK>&o2 zEUobbH$M7~@SGzF6N=yvFg;sZTT;`OLcIX3AZGMB)%Dm|1TR@@ z#6xIrZ|~{6cGo*f%Q^e4p4jOOF0QRk%goZ>UK8lu>tVn1ERk13m?sGq!fZCQ>BzP* z59TL?9;5b1Ij8qe4&+?y#Qbd`ba<8%I;T*K0%j9EiO6;APNoUvF$^q3^=Q}~yLn@F}_x)-Ca=!dm!LhA=8?)EV z@XXuAskzA}rY-l~L@iN|m}~FBdy?d;d;QKfLxZ z{E$m;->qZcGySx9!@&8>J4Cs8B<;0?^t{2?VZgKTt}AuabTC!i@R8wssEcFAuCZmk z^)e1^N%ck|nYX!FT~G?_n|;8}MKE`bhGL2g2Lo4(C-l_c^yyBv@xA{rC;T-jaCGz0 z=`-PNt(9SJ*8BqpjQyc7g`_dFKuX_bfBoS+h2R9Lnx-ldLJ9nKln#KO*>9K6i zNeG$ymirsq)HLI_MTcTRxG6VkAnAx101+XR($mXHT$rqCm~;?XP=Q@66O0ATK0}Me z1m=1t0!gGv7)86`YF*E8ml!4xGl^Xb4Gj*tNm~woSdxi}8ALNzm9LDTcTR&7{?=XTAEH<~KnWAk8%r14 zdX*z~a)UOSptoFz^TVKr)!U3UA4LJiRVSYvV?{VZsR3wh|8926-HaHv^!mFK zVI{jG_vP@pGfM}HiKT}%6Xz`rwflX%9!#d0kf?|VYvURtn3DIFd@$w`?#)k-1h~Cq z%J}o{WI}zchAw@t{Rv;d)Y-{)!5Z7TPXFL>ei^Fk_#ZXOhZI1{_lN&0v|q!&wDksd z4Z3iYww<}bX!7;a7ON*Aw)UAMb!#^BZ#Y*mygXwAV)zWHmeO~U-X--79mQlT-#_3T z`?OWPTh%&x*sb(%LM&a^tiC@lo!jrNaqLs3XOj_<*xje!cE5YR^{QfDyj|U0sfH{D zH)`T{-Nju18+y0SzZ^YoT6wem_qGvC^+GK{#zZIbGC5d zF043)V{$$VOL1!3GIsY^24u!CZBcDc;ttHQN38e6l!X&Tz9$3{`w~Vv%2e2c*^ofx zJ|W(K6jypbgJ`pf?u>LUb0cfzxodJo#Ra7vQxJPf-<>{Ii`*cOl&jw_76R+jL{2=X zZY!&7d_N_N9YiS@GQ2KDcWewRiU1A_`6h{Q@{Q3lavn_)U4VJ0mQ>u_45p#nV*r9x z9O5U1VN72lR)`e|nYQW(zabi8C&rHi@Lb3ZR~LpzBLr~l)gqCF^dzkL%oL}>4fW38 z^!^Hv*e4tXi6jL?1d3tBK_HHUX!u}~kIhbZqXJPAS#dk{Y@o^@(rLZp-QhGfthC(Zs6fm#mQy3`15Z|M$C^NOidOtC>Z+#>`~5O@&~Kp3AH^E|%ih>0SZCUko7 zBWo^L{>S0T20*->6CuZvLV=jp92m^4C+JNqO-)?VbfOGlGpmY)itejk9nRlQevPZ` zMi_*RABToB{kN!;NFoh8WSwu0BCI$@a|rGuQcS&npRb%Ii+i;g{j0g|hkv($;^g2t z;l41{AM*{i9w93Ig+S1rx;EsrL~@LyJM3E6u|8vPc<%lU2^g*E4v{jQle%?UdoE~n~Wpp8*-E|gpa(LWA ze$7*Hdk$oEGrvl)!&@#hB6g#0AhSQilT;jehHIMs71IE8+sevGigq)qE2R>6;x3Cy zMzK_u*O9>`DZ}?C(kP7MLa-8IAZZiG!;Dp-pMdVV2$(w$)J{;hUQW9 z&?8IQftwTXCp9UJI+soI;hS5b7|l@|4VWEjEe{C%Uc)*++2sXw;~!e-xhd3)Y90#`wBaCi&zVYR(653lXB;W z(Na_`Pzna@`3d`fAZnM;5S>o=Fl(dk>uY)EU3!vv;1-{Pkgv^3RFhUx+5*##71)lrDD`yq}6B(mu;<)lHw%Rc%pX#iM%= zTF%v0!ayB%iW!U;sqyNW&zJ$}nVS7)73${ksayv`tsRt1rm3{nj{zA$cAz78r;P`* z!Bj^_r5h&S+A8LUwOhKf;?b5Ac;K2l1DuvenV`l*t&IezP`kbAOSv;$N*PrX`6B!t z1;MfLBEP?=MHib`?~M{@4z5VvBQ2xY0j8$KwJ%<_qoqyTm1GhNyO9mN1#35NUEBBRYBpkG%rE3^z6n3C;1#j zX?4bV#NXnX&l1EJAPxJvRvqcjIJ2& zS4rDFKi?3iA~35vj2PBodkG1PF~*fYyLtHd_|h2ljP)YMAq48JE^0RVT^;yJIc+vX z&!2y$NSzg{tP(|g#lw|iD)I_q2I6dN*URCoL>x_}c{Ykc|pge52IMebqvFnaf|x zqv=+bYxU-u{MEbl)6Wv5!`_5_oGtwOIRALB^bi~)wTfj-aZsw|jD*j3r9#<~tWuB#d8F!H!9RLQx$>jc~x;Wc*OmtZHHc`xw|hEF|ec<%A_&mYnL~C`NJ`0#jat zFzJq(4O3xTO8wEM$5z0(0&-EtA&tH{WOhiUQJNCPOa+dr{(K9|l85hyP2BhS*sLU! zdb{z%)=~N^DBw-(blMPexPRc-F)8@^MUrTKWJhr35c)t$Dw<$oHOSBEW1WwSSkZ1c zFh_?54-ar1uA+q-BbvN^k~-E!reP*3yYfl5#5f1qpBIu&Z!N+SdpvB9a_F^C z=uAW6wz}C{IM3zk=;?NiNi@Zj`Ot=)UT6%!)n}pe-CII-t<&}E*=YYCUmf4Si{W?Z zk^qyqk`=iZt6CXy+jC`BllgDA$M4lDewzjBzJAwU#ptwP(iF}C(GKKnHBZIPzpLQI&SG4IfL4}b0)eNP{{E0$TuPKt4MJngRI)ZR5lGtmC`ZSMfzy+ z^XNRB`8GK6p;D&gG!MrLTg}I0w3aY=_6velE5%x#A&59KyI3X9C;_I&XTZeyAM6A9 zzpxN_MQn2w#tzl-`qAw;vy?&UJAt82Kh<|sk!&)q3FRY{bo0eZFoB0ul%N4<8i&zV zI7q7>LmBcWGFHe@LXdanGWD{oQ>$&SQI+q*4E`6l9$=k@uU34o*fiJS0_~aRe?%0D z?FGC4=rMfo0n*6~!$&`y>yJ2zuA_M=w7kmS-dl4NvIbUepv^iOJ-$XS?%nvh%}#I> zWfS*^rCj~>ylMt+Bh&3>9FSUP({9?bJsVzj{a5)4?!`G+_Sd(L)5X3haZ>_|J1@QY z1cMuOH~xL=LB3G7TNj@m_P z`@py^Rcd4%)qC7<){j2}ZRo|JMQ^A7b}?EYh&fFcO_8-jhD@2cGtFchasNm)?Y?yl zD@Bh31mSdyGR38WO_7IJfkJ^o#he_;V%y&~yq2iOEuobYeru)s3+i-uOl^NlBs@^3G!k!G{r*g>v3DH%>Bt%>tC3qMu zZrLDGma#REK!1A(ol%?(4rPFpKfsR&E_Dto*|LQb`;_jcFW#loIDv0|H9wNfW^`ha zcCIX>6GKm7TrHv=)?4V3U>ssFvyl5+Yzj@vrFbw6Ppsu&-gTrF%v>QO z+*}ieXNgiW=1Sx+@gN;a{hCkMy$5@b>lr4VE3u3xG+=<;>3(@eEu90a8!Me->#u)7 z7z%?(h;7tet zme!!-i?2&rTXX65e6~jQ-1=JOAEdwV<3B!natI>Gz%YfC+23T3)Jzu>|8ogi2^1h@Qd#V`IKYRb_bkY=jVVKYMDEgBLEm4gkZCs$aj^u38 z?)?4xd$2}ihmPjBme&E&;5L2 z-LUOte;w&1$(sIYz<8ig$dtR@ewgdwTK=qzY-!PH_T{zKtB&|MIdU|yOy@Rer@IYC znPN?Fe!=jl-um%OovLasfMQvC#reyEz9o@0S@L$s+ySYOuv8MN+xyt_P={S$`ca#^ zYaC79Xzy;a0vN_GZ55c!4Ilqq241k-cm5t;3=1O8yjcIKS<@0{o-vwsU&BpQvZo02 z=glNy4=EwX5nD^f-d^<4(s!CjcuEUUj{0Lv8xvl$FDA@rDk33Qc8mb$gDi=PQ(_8B z*?3AZUd8Q8Gkv2h=MaPiduvig~>{9h%#pS~=v6oSboYwqfP8XQhmO=&kQU)KDy=!b_QR!<^s ziwJ6`6%Hygi!4xBPc`*?F=C^i{Im!aW9??K%^=~i4I{;lO2BR^1BNNgv0^D9!zAT_ zBZHz!*wXvY7d98(RF;-9e!Q@5J-ApW<;R0J-> zNDR)dV5jYM$#(DuWmh(R1PHDfzN8*y*Mz=dy99jqyr;-XT7IivHm>;7M!hL#!rrWh zXU$Bx_ZnX$)w%vwxJ2}Fj3`mJSQ$65Y8{2)s+I|(MQ2?;kqHCIj);R$0fv*IY`~Tn z?4v+yqni1RCk~mXrXzkEwH!&Ar=?2tFM~#SgL+J}T0jFLYG=Ixuq@gqS@d5`fR7#i zJJeF-Qa#>JVoN_9=zYscCl95CZ0e!J0PR3hwLoW2@``py*bB%B>ez{~5N*$FC1KIv ziW1hA)nQBl(rbim$>E3Z(9TFZKfDZwsteJp5ZN)pp+)FK=a$t1@ZEoS)-f==690TE za_+^(!(}|;R}+fYbsE**UL{jd)f-)P=00|-VnNMt496VFM{?jsL}+vA{Hnt2*tr@c z1+#E1rtME83_9OtqI)r>p}8oRt|jz_Wx}I^5Dx$%gOdsaBEV3H|9=nLH^@Lq#FePn zDoBgq`4FTNS%hYy(A{(r!?*Uk(cs1SBYIIp_LNib&ZYF} z@IeINHsFcs;Si4g*o;AuqjIVE(KbIC8$cJH2+HrMv~fz<`*SElcm4`4{S@uPK%o2S zLm9eRfW0%4pM4to7LQ#A*UBFiTN6WN~!Wv%|}S9i(gkq z-d9UF%QlBQv~foR^w5noEb=dirS41`JKzWi!f20uT)~v)^cen3HGHO~n!JrkMRnE_ zOpjtBq;AAa%&BR$cEBl|lMdI5KplOXLa=pR4nUvSb|glF021Jx;UObiLGsLn$Lwpv zbW3^4#T{PFs+X!0V()Wr-D0~<(bJum!l%No5-uz(crl+_ti&&^RKqzJl4$8%V|(sH zQ)CF+lz86OubUohO7^v^$S;iAp?Ew4kLW)IL@P$^#ik$s7w`A~d-K>10M1ab<3S#P ze#HQ3(v!hUuiabb{d&W#eYO#EbDus$;iS2VshStDkzpNnI#--;-EIDC`eC*M7>cQn zb?u?UdwEp-_abg|UZmGxC|Dg7LD6N|9(N%W9}L!fEF%9tzz5#n(4*XBGw7#%9MIyJL22bZm8O+qP}nw*AHE*fu&gzu;wN zt+(c_H#7YY?!9$)Rqeg2&cUQvuCV5}&7dQ6fu8Xe;s(<;X^c$LKFN(nAO!VFwGve6&0^9i^90wuQ^R}lo!SMmQmhWQ9C)@VNBejwB(PF&CH!&)zZ9B{{-g& zXCb&0p~vVqna8559Va z2_D0l5!<1m5yBLMBWe#)5mM~}EeH&dchX168NacLD;z}nK?I7n8DQ;4avtEmBegNf zi-gRqu~g)+A+$0b#FQk~TzvK$;wSovOQftj*6Y)vJKnp)rsrt3Z0W2Spj8adC2N$| z0I$O*1g66@ri)d4%T&Oww+4c+m~CjjM?3J;cwQ_5*u` z`WzxBPCJh}Vu!ppmbjjl=YBGlj0;4o=PB{leMj16cMhysd6U~WB1Bm~DSF*diBa^n zlI|5Bo~O|pIbU{3E)_kUd5%XEuA=-5H!&n+WLHS`0DFK@!U*Iyh7zl6{NA*V98{a_ z;~=!bO< zh+Tb?tqBGwMLh5z2L=sZHVjU*HNE!Q-$gP*Brs($O~tE>2<#*(OL&`$bQb2$=N5CD zE6U0YfWr@(~)6n}3hrFGKFe@+EKxQZ09fM)hrUI9uxL3+jg+6(U{{XrKEiu=DNgwqGVF^K`el z8##&%QSH>QOA8BvFllK_wd(H5%8krueIF;KD<^>CZ~aHo_JjFCOjiuU*7G!7#*;5C zf|&vY5^z>VUCQKdnpJC`I!7n)!CplKr;&81rlvdn*F~?C2xQ)H5kn z^2yTd+_V)X3>sGm9U@YL)5d$(jiQZryV_=TDh{>o0zPLj&=P%Oontb4cZ_u!!Tq=J zDFGirlPND`fA|jV`z6w@Im9>_K$Qwc5V8&@ zj3?Ly zcH`EYyEwXNv2wbRH?p8H>1R47TQt>EA(ZYX+~jWRtKt4#US&q#uUDfgVs`4IrB{^Ww?=(_|? zLRbo_^S_6)QE^_!0aY^MEg>u14cDpfA_=DxI452EP~i+kYO24?n()SLi2Y^=o@uZZ zzRwmO@$39Oj(Aj_4lXyuZjeE{-qdc3t+z-sKG1s6aLzC zE$rrmtANV>R@kqA7AId+D%K9EA{=94ph-bLD6622@r6q?7UDc{&v1NwELc%-lq6f! zwIIHTq*2Acd6w2>76mCSB|=u5tcutCGd-B*V)aT!{cN@OksL}!r+RfNg1|*DYq7i8 z3`}!iJqZLE!nfiX5#U!I_SpaH()kw)wlmL_NDxuQ>C6%fx2Y;|i0x5PHO!&CiB>Fl z7QF=-gD8mwBQXsPQra}~=n=M}KLxX34O}($75N8I2$De?k$!u<8S-z-+(n)!pG4#L zRGqo4#I^P0p{r1qB;KPkXc?J*}pQdAI!O*z|upy z^E9kqRB8q9n5u{F=Lo%k#1fU5t$Pu&s_S1C4O*fyDlo~Tv8xKN^;ih&=j-c`nkvg$ zZyF=M{;ND1OZY!!SM_yBs+d@bTu1cG&LWt(Nccwnr|}_pZm+-PD?%3})AKog<3^eY zKce_tEb^z4ap0>zw;Mp9?KVH#(Cwm_4AZxgpu}{LY@68PJc%+-5Z8%$DLeLo*Fi2C zS~_3G5`txG7BhuD%g8v})RNysv<6;uDL)B>wUv14qNX+8!rt3_yP`@f>aQo)4Tq^` zH30ot1RBr-(m5IwMn_$N=S-A$)&~D`lddvZ>Zh*fLI)T2Vjmmzj^f3^Otb3jW4+3w zu=|p|Ravl0oB_t9|1Du9)eKpvf8CD?a`{3^7?7NZ#8Wem$EGZhi0Bl<<>#qe8$AAQS$kom+apWpAIXe+fJ z>^|%`(HlM9o-Qs+N?uU=y_p|%w^Ed1*h0v(9VF>T3hO<1kI&pj5a%TvPS-ET=~coc z90{jP2ZjEdX#Y!_{GT}06R>0qFIS$3H=T$_7I##waI=1u7JypHsFal*((xiTx*TIT z=USuZdk+TfAKQFx=5oz8!0iqh)0`jHjpduJ<@0t(4^5||1! z&5#TWgUbDdm>DFYf;`OIW|;%AW5Q82TRfCFWXN;s0r1WY11x*S8p^=q7`T?hIbrhD zW2C&g$Z8UK`Up;q3Q$=e3S3&N9Xqw0yAnUvy3%A=sjfHNz*?-pqx~6JF_8K?)cVnq znT|(TA0`r^J{t9;pKyybjg&J>8KsZo-J{-qe3kltlgA~66@&RgO6rkx>O)Vg=E*Iob z{iD*)8l6#cVeTU4<;R?tQw8(=EH`s~r9>oADhqKZ=t~iuz`}(5^tKsXavye+a%RM0 ze7P&RwFpoV|A2;QMFq52Ljh7HCNQW6N=4xlPjX-01G=RQ+tOTgv*0EzZU7w>gck0* zgOhWM9`;Wa`RugvaWf++*^R|V6~Saf)F8U*x9dWsj{iovA>^-adb^46ag&5&mG^xkYzsYS8JGz%V4>2+vvJm zoYcs!fQL}TW6DRlDT}rM22ieXn_KWh?LkitnN`^l*0+aoBm})s#yt>vm$q17Qq&Md_oV>j(?cfnq~+%}x_*V64soGqDg@__(*u6Eh-;uJ~q%(nzB-3g4k2ioV9W ztQ0C>U)QQ?Puc2~Ci$~8cR;)d>@H=|7@@q+3p$qQ{*2Cg8QF}9p*oCjo`4u|*PBVn zRyB7Ee&K$j+GE1^H|XYO2V{X=7~@0T!;=;v_(o9a8DpSYY#cQt|2I?F(Y>o{l+p1| z4XTivXQWR8Yd(aXTeG%$%>Sl9{J(^yGsG`g&7~Q(kNTWXe{lKJ?J%1C)~(t4e7yZ5 z)px9=cDtM3^lN$Y#9LBNO+b;nnNmI|*$7PeU+ zb5dkJNDB@Go{^GeO|o%5R81a9J1VZZ-nQyEx362L>i`9;`-5p^FO#s7S~p&r@_;Ih&n$EfP%(g+L3}cf{SWIR9o_Iv3Xgp zL`!(~*__7&kf1DC_(97@q#NUWw`Zp=%LAks{}9VwX{xZMqOKIh5mH_{wP%OpKDC;T z>fRO>$eirZPD^PYd;6Qk+x=tY*mLCQb_j=?pQ=&mB|g1hVwm?kPBw{ViO0fQpqX_) z>$SXxjT4kRhnT@SxME=#(A8h+qzFh;n{jk?lcF5U3zatcPb}Awf-PD&>;;vp7Hj+z z>Rs0eRk1? z)D%3W8Cfir#BHp(u|GDgn7H45l4VB*M(3IVk=v!7MG)ck13|*H0{f2ei#^2O1aORZ z&vDBXz9U2IHBTOFznN_Pu`^Ftqgj-D&qLyO|D+Vz3ba~xJs z5I??=f(jyu3UK(qY_C#EX)Q~3{bNCGJMI6)W)sXG%2eqi(iOxklRbl~((4OSQhv5# zjJ+k%N^7EU#7rNX#;hE+Z}lhPnU9?t`8xE=E)^>@nmZ#9gtiFOJF{yho@W#h@g6t0 z{ffa%RlR%E%q)k}JhS&DL;-wDD@kaCCg9syF+>wIB^*|G0~+ai7*PI`$D;T%gC(<= zMr;m89lPt**4;dNy>n?vJJxGiQobi(uC#%NVBT>4c;G#+K7Ml5D-R?~gPgmqh+WUz4fzmbHvg_F; zUKb!DJj%Fw6?-Z6TYGZi35+^aU&>28*T_R`HbVcuP9+`Ai4GI*zWEwP3hVeis)#IDhb%?%1;$ElthItvJ)|y3+Q)o+X4ID z7SZk**b5dwiRv0(h}D*crj8Y(fl9kwj~<{ZrchOBVc)uury3=H2I8c)$XY7B8OEi7 zrCC%EaiwgGPtZc|-#L3#NYZjxMzbPHd>bz>)f%|u^`}G7d}8^r-CF zwV;&%TCA*=Zr}1}J(f$k2>(w~@_!|AJ6Wph((S7wrUGa`{|kA1PABqhJKuK|7AC`G zHC{9DLI7_SQY=U<^S6W-&ho{{!64~u^cNpO!4isAAMK8-Jef}W(q0ECT(z7~Bv|sN zbJXI?;JR;E8=Al(k~_JyVFd|Xlhd*ZKFUS+KF>GwtH^g&pzFaL|1#S}G>wa~z-^nU z7^&LdWiwn3y(aM{Xv6XEv!sLhu8BWTls10ZsN&6l6Qjs3Mn`Y8JA(C#wPqI8l2P)c zn_Fn)yyO(5|2dX;a3c~K5&Wt+Ng?Hw&Z2YWibsN2?~rn_9~bOY2UZMV>|l9B{FtJ* zp#d1K`F@yj3-M48Dq$EZZMcI9x)@Emqia<*^|n0Ug97IF!dAB9shjJo2nAdZ2#}$<2Zc34Zkoi`?i_O>7WE{uj#(1ePV5i7bFHz?i z%WhodPz4ZDQ+#vc{ne2B3@(7F$ zc6Zl7@W=ksecV^051)l)R$dT^oh|o2AQ{=pxZJgIynds_|$@HlaOxxwe&}$*3gF`L9?(tNW{0MZPB4! zh^+L#J#e7TXYDeJu?{P&IAp9nYL>u)W7Ah~H1|%5nFTnOaIW`o#x#1CG40Eiz%J9* zG13tL(&CkWl`vWWP^2zQ=3uQ$R$fcrr&tL;D~l~k`s1T#LkuFUF6BYWXKm~ zj6yhrcT)d|2G?XQNOuwFqB$)f`R3vjkWtAQ4CVWX1*-km^C4Vmfnl}ViJ;BO(>0@T z1mxhhPriC|At<{ny*z}s(MXQ&Xyo|(r1)bj*vpVN92uneI=)Z_T#rA z{h5(@qBv$n{0#wQTmn+oZCYj?s81oLlY9|uSAu-5Mp?}~Hi5hHou~*_6aRZIe z;imc~b?OECAk9haAer$=Dfpt78OuQr3+hgo_vr-+P{cdnNT|#2-Yc+#K8zcuu<0Gr8Y_HSWXqS7E%mW^EhLw)+z3h?o3lF z6hS{m^kaf|u1}orEU#es!h(QjL&ozOE~-;UiVyR-3Sx)vwq0?(FR#C)Lj%1yAh?W2 zjyTrr57ea5lq*P*WeE?gxY`5Ye8ph=@fk$eI?avdV!thSNHT4pL-Yj7J%m{XlH%+P z?&G{rpE+x`GC{M#Kg^+43WIX41cT&+!gWMjSNL_*j3%~g@iKXd!I7Q5hW9R+6%<%@ns-Y|#2`>$!{EI}LJC}I80Vls zk%A=Pps;vc$>QbAWtcwJbI#&4NIiaaOynHJ3u{uW+;eiwQ;?HmiccFZiWOTQbC{h^l9S66dcJMWt@Rp zc;>8VM};FhLg|ObwR6int=FTW?GpF^X}N@t`nN8?#aeXbJNp)ToxqxPb4NbzZ*DzC z&y|lX(!>kp*ayeCPSW?7rs)TIA7Kv^8*w0<8-W>N;}*}2{m&}mgJ^yP5w^8%{+BAD zR36Wcx!1JRGf@E#>2}T_*F)saqy=9Ah=s1Q@fP?eg6Cg29|U$*{3qU?%F=NCBUe0n zmddzP5CyZY^JQzx#m;lbZW@^>lX$7gPXQXNFEM9}w9*GPy#i3F+}&bjQP${o63g1% zEvc=eBQ;BlZ)M?2Z{!OvZvqsrOC+0+p5UD0yC9X|qT?3=<(CybG1zpL`zwoVhCOhZ zEx+mSLweh64h`t&j^%xnA?ki~G$3yYXo*#qb!vX6aw2H3$B$a7rr2==fQM#he+yFQ zY@Xp~v&1sF9Wv);H%`@f>2I?BX|2IoXL=u4J4$bP35XqJQ5?Hjr+*qbB0vXSU#d%} zi1npygW)D#n+jxWpz%2L6}*rPv;cz@}ZY9p=Rz>x^qK1&l6-f z+l?~u)0xJu?8Cp*tA2`0nUuaNJ@k2ZZEzp*3ISYp7fC5r?l-~fB&4MO{ubBI{d)S? z$T6miI23?r@cTx>X??C)Bg6k}a{p&#vlB-RYk@F*Z2Y>qu61#xCenWheu-)Y(pNld z`crvLH+6AaKJ9!QZUs3mTU{tyzYXlCO4+!u?P9;bMO^~GuH=CR9$o_c26D!Q;hLu| z5KknfPtBuFVgzD8V&7xX#Y>Qhta-lNqMdx8c+sK`#_bFDDa?7D&V^>NAasS&*slADkb+_n zhbqjNMrUV-F_b}HG>X>gxVU9eGU`!(lx3;z zvQ#c*W%Rq~>zmm7Kq6C_PA$Yv8&Rt2>SonHgAWu+9^-Kva3x6}FOur0X^3K1nNaoY z%KsXY^%sB!)!IwO)ZyhBD|GhwtS4SH{A4nX{YTrsQ%4jhEtjbwvjc1RSj7o6FP9N- zCVuA+C`5qvFBc~tw(}>2W)Rx~N7vd&X~05JGjE-vXa&7!`LPJTB?2{;$X~af6-9w2 zhtg;1`gDY^^Z35xU5}5zssK1ZN$;O7)BU(*NNX*=w_(E;%-6mA(X+k$3t9&G7l+BW z5)e=0tW;d@LIP6*GC+t>i^h@;FjW^)3`p9T2)*;$> zFp#Q$T(aM?_x?~{Zdo>X#(rK4Slz@SpTB4^=7|fm-0+NmrPcZPK~>~8yF*!Y%=1DLkK*$oizrC zONg^-gY#N0@h^+CkN&?exGX#||!-?#KbEYbC5Yt%0Nbeq-C; ztXkI>|KQiS5!n%y|A(#?^wt2ooq4=z;*{-p?gr%X`_o3L)E{AJU%y%ZK=-2Q(yAt? zG+L#0c#x2l*7_xQC`rAXh0tJE6rvv}YNd6Eq4tlb{MV0C!CsNJa|jXmkE&o?cDR{8#+eQ^xJ81X7ph_xQj z4M>MSbWR(dchkOuxom%ehZv~gyLA4hxWo*rJ7=vSe z$!>VF4SDQ290+S;csw7Ej(b7rEolciCO0{%n&6>2$pQ+me3zloO_0h}WAfccwBsfy z*bFSQa1Hyb5brcR!GJp-%#SUI9*BYUu-{Ws8wfKEnuYevXXmz0k&^nGPsNSzNjdg{ zrwTl*PcV0G?Wg;@6qxNVSDW#9O5-DR3acYNt!$bAqq>aqn ztGPKK-Uqug4Hq=UaC&VXp%%^#=aOYnNomdGope-Pbvp(D&?Z`<^}oXgS!~y1Z~eFw z6LFvV{4Vq}zGq7FdhJ+AOW%ziHCj!ZN>q&G2u~pWV>Sk`D@t_5ZHt-Q!J2aG+DofG z;!>08o=D5k*18B)Tg|WJ*Z2YLaBL|X;uyI;RO;}Z*m!w%-NvT=!m?OLFZA)TJt6Y^ znTchB`le888%gI}qkOp%J~Badw+6uT-pK5~O5EqsjhE3a&%q2^uc7rZ2;qhxnExD& z@7_B@&ODCU4c=tA{oW;E*?jlxZF_Thg(f59WvVx7w}Df;v`VIl%=9uq~}((!Mxm|2?2BLrxsHgh?j%HD}` zZK%8^cR{FKgSYyIjs*}#w%E=LO>;TB1e@-FyxOc;H&4Ud|h=T4!^QnDR8-IE3tL(!m z@r8;a@9?{T-A$dr8Vqd*^I{<%vFlR7xZt-8XJGF8@2jiN$ncA&$Us(^slzRpLEMgt z-P6!N+ai-gD(RU`V#f#Piak8Jxmwrj?w&=9mFI<;h?$#g1q=QO(bz#!CGjF4TijW- z9H|lOWoVgq4Gw*<(!wHn-by9!;f7MKtj~9v?w0(}DqPV|jhc_5|Dc0mfId;c#57J@ zm4GCa4oyL)`8xd_HP|94)dYfz;efIdtk0Dc(zR>u@h+d0sGWaPIxQb5SRz@+-v`~d zi??Y0*`Zn624c_7%}r>OUuPDF@w=!!gQ9s6m(_1aQd8w)YohHwL+L{7Y&&zLA*EEB zA>$25`+l~lRbu4?xL1fK5oPS(w+mri4{ecesiG;tz$->hEjar7N+OPvj$Z+BiwL>2 zvB#{O7NSI|QWe=R_JWI@D@4EwcfXSm9FDYl=#^u)~s z)0iBkF@#SDDK84JBtVyQtx&8M%lu0?0XpYpFOmNZLssK>VGNOq=i>b0TKr)}(`%LM zUr9UYEAxNd_0sQmin=L-3s1OEw>{16OK?^z?gD-f4`~(L zX@XC+)s?co;;_&ME2DZy`j{^8W=UXe(lnVQ<`BOcFrJs-lJ zt-SAnu8ch4=7{I--JFW&*7f8TaPy7Eo5SX2jFn!Edn=bK3fZC6y>9DEDq-k0L}1azOxH*6n&BKsu+|}5MuK*Hd4JP z;3+I$nm)o~NR*S%HFQ7pyuUEOBo)C-kv;-#D#^4PwUUBLRv=46 z9Q+jEpZV&ag(ACRow_=;IHz2ibV>}Jaq9o#bFKVo`#Ctg4SY!W6Z8#^qYAn;QIT&* zLEwuE7o0eO3#u6Dcla9UOyM<;XuJ>MbTVFilu$YZ8JI87au60W?ucOrTIh2d_;r8|z(kQ!RR3}PY$|f5e2x`i(p=XW(|tD`YQmLEr|= zmW4YDz=6W)Z>hyHbQJEs;LEn!Zm3M%aOxUU92l`;`lE7mB%RR_@z4REszbI?@!)J3 zzKB{dhyE(4;(LXLZqj($x4s@f34R+LS+PF{FtM5oK~#=4d)sdK0gaps&PJLg+2L{+ z+(^Tab_9HvM(veY#!nF&M0Hy>O(_TGAb4E$Z~&<4<(8r?{qc^CfpC?%CiMG5@y1z9 z5lre2p5t?=w7LD_@mg$~Yy%DLHN4N%J=$1adNf*mK#i1OOeXJ4`I8x%7|lYq5U&YrVHBTkEEKDM)1L0Gkz3@Y%F zWk(r?V`Zf^Vu6(tc=}VX|7$8J6cSXPm3rJ0;QAutl~-HNIG$lbbKtjwicR1?CM-NB z)N}DwIJ0ktJ>Sr@JBvB&D*Zo=^~#0}K}DIS19LM9v# z-Pr_f*;W27HRp0eG%giL8gw1KeA6)CVZ58MV;w!@RIy8QCo@kvZHR_f*rh~KzslC- z(RNlL$LROM9l%|U+a??G2L8-FU-vnwd-k@do7L4=pG;df5N-zoihY}8*C>#Y-2~6# zVlzizeMsa;D}6k2ba4N*+;@LeYTbC5NL)~Tdb=y8^U|>AVnHY{mb5l7n<#N@3~YLZVE$ft zoZMm5vr}O=NAqe6j9zNxU;KO_+`XNpGjHQ$(LJn*lNjzT2AB1dtg zmFFsAV(*)--M#g>R5_;;Z^i4rr_6l9KcDL+slks&^inWNZ8U#RtR11nT0$sr#`c$Q zn4zaz*e$&p5kWeNJZGFu7wodLJG^7T;(8ZUjL=~(ROSqV?-#p_9jd`b%5vmzBh8!- zc*70DZtLUdyEV+S+OFoLE!!E?5G{iJcl^U##>6)#anZm(=B)L=>}N(kpvYU zByy}PTXa7sn-h`g}OVAFQHlTsl zxIcQMi#A{vwBr}uB&DT;lk60MGhPhZ-Ag)Y15f6(%p)abmSc>@!!_rzn^BdvK$BYy z1{in%4|A5MHWO6c9e(hG1^u~muhr)z%sJq&&YH2zOY+ZWO}i&UT9NO+J_#iX6?ngO8Rfo(k)1Y@t%=Kn*ZxNBfYkkM z@as#^9y9?j2{;OIzqk(ISlDNH>q;so09oqpgBlpd<0dsn93%oR{gH$wj)C5>TQ%y7 zu+JVRq=Ehh08KmJ%@zX6nD2IlD3RNJ@Rd_Gv&xM*H1RY&xGnzinw$I;+ zd)b?%Y$}kB1cSiyH0-B10V`=XX-bhV;lXcaf9RWUU#PI$4$Y*FN*zTE1?!RnVf#L& z;9^`P@k5T&okm90$weaugh0-X>Kp}1U0_T7JY9yCSg|%6Y39v{81p4IO2<(Y@I1O=JgE9naEH3t@yI2NgFx!9XhtSPC=Qq5*? zl!8cDBu3Qg#vY=Xh}3xQxS3r> z@T}E&JWA4CW8DggfUG>`Xn0Le0K17FtWxvPgMjj*s@H+p}etCGbZ8?pz;^t6O>_wpr?t>nyIsnz`G z1blu1uvPN-5L+;awtfm{H?0S+1FO$t{>B@rT$PNSePYhN=Hv!68+T2p$Vjhl3ZY2kJ(i(^Iu0L7yV7zSy1)h%CP{R6~)}n&Imti-D|$ZYd1EUpSG*u|Mx6_ z2J|v;sV6tQwZ)Isl>uVCMpygE`<~yJqA^&>*-tQvyaY&NybCd)S~H=V8SkD>Um78D zYO>6~Vh|VsAgU1RwQ^mKMZzEG1874da3@Ek`$(GfN=a)|hfQ6JkxaF%`#!zAEgoZJ zNfz7L5UQibB7gr&>VNDXzh~)?N?potmT~GyDz6xKww1G;e7akPn~@M=)C#|h|3cUP zSemfU{Rg+(RW~V_CQM$w?1k`}r{DAx`hxV~meo}uCTw*v^AWRut`j0NQIR(wd*zs| z1ORsPjeS2-VCT_D{d3NE47j6Ae!>mQ!%I{JP*&nY#e=Ng{CYdDRCO_%b=Q9Mf;_A( z5+MDCpS<~-ukXh^ZZEL;lzo~okCFa2dK`8kJLdUb78?}%-LFaM68AzIEYqEcfqsmU zvEaA+0_~hL!t6#V7MGTEwUaEv6|v??dR%953L@fQ(z~r#;Q@j>{mX5Bq;kRD`?qH@jn^dOuL!&a%MvG%tAQ&OjEUxI=lh^a^YjC+nQz3M!@_I)m` zVI24;wB3M`+YnB2y(1oSv|piz5zZd{YO?0oUPO_j842fuR>O1mrNO${{l^Znl_{F$ zWj+x50xl8l5zEKrz4l|z2w^{9-xsSq8p!MEE32AdNagb=l1?h6DyXt2#E(G3|JQN@a^hB66_N@Tdhyo z7&K4sCR%`=CzktvdAnm=)_NPTNT6pxv|}PfvY)e7Kw&)oU5r32nKOhd;BAg%hs^kjozc;XUZ< z&Z9r)sH&sXJPJ>|X1p=1yoJXBa$MeN17VYrsr1`Mi)Qp3Cs6e9?2zI7czb-RTRrMo z=~HzNaiWBYhU$&yWx;IJzr;f?Vf#tz>e$!oJ=Leu&g&;84|0{BMm;6g;X(p0-!eZN z<(I*8xcat|71_khy;v*9pyK;{g&Fz7m*SSqXkFIx7(0kOkGY{Yoi9zj{>)%OG3p^_ z>&D&0h|=B-%4E~y#F05|eCWkEBT}n&mJ^D0^pdF^gdUjsMb-JMR?+^!X0SaWGGwOj z06co$$mL87>tzIU7vp5u#4t+@r^z?u1|vG1NxHxkQIMFa?*>(QD8ofOgoD3f>G<|+ z8KF8)r@o(4fh=CVE11i+Pmd^ZVBHuY-Fxl(F7Qb=KhLZU|EBvfO3DjayKr+H62b7} zU6oyhA6SVX$B9MAK6_qcgTIRY%HMGQ8Pzka={QlkW#f>Cx zR|s?%Tb4wNCME*#Lx+W`fWce#7;V}nD6~JGIVX`vxsYDfYTlzyMea-@G(i2k-Yg*7 zfJWU;-b23V^L~DF`&IHHTFQeRCt1DkY52S-OD7=_p2+b4Io`eFjKEQf&A5d(+?k#obn{}>PdLH&K%hdlyM9)}MgO30H z+hQRn!?L$dv4M%HOtp!HbK^5F^AnTAsiHq+EW=+b;FZs0j;Hov(KlU9%VBz}Lb~yJ zF}S^8^U3x)TKe60H}S=kyHkIxhUNrc)N3}B0Z6LA+Vi+2ow&=2dz-apsrN_*ZpBDa zcaCi`aYhr&M`=@#c^(@=NYG~d6w5Um(1vM*osvGT;&$Rrt@zt8(mLjYhmK0j?5q6sAR*9S#D|hH!t<~@ zGosWQ{fjm(3DFHET*uGa!OKvR(eM&OAb!LkfyLP4CU(;eYui4p^5FwZ?Q|im*l%O= zamxtGOO>`;nK2&WK{Kmy#FT>vdcC8og)2sUsu_XA|JXy>kMc90l5`fDQ%CL68ulCt z-%9l@-r-Hs@=%`6qB2nrC5^7u#mhKa$jLa;2U(Jf`!g(>=`7rZ?FJ7+l^*w2at}19 zJX&x~Z_>}WGx>N|P>j`l(lKSXm%BT-(!Ca^Ipk^W~-y~*zksc z;PQdJmAdvet?boc;&dS-raYXynJch9_(Zj~;?HH2}LWyST5tWx2?T&4e?>1!8 z$@bK?ySj~*LwA#`@@Ic9T8Ad)tlW(rB&>2QH6QPjGP3hCs`7yCEU64JXxt`Ho0Gxz zBgF62-|3*#_^1kvLYC5T2lwS5t2ype!H?;ZzvZIqylr9N_>XltiK5&PtDH&<;fOlI z75B@jh0jApg&p@R%(Ib}(P!b9366@6+Jn?Ps?f??zMN;Dl^I z>+TPHyIK2hzF!{x>f6M(7H>C1_qHP!VO%DysQ)l;d3MVGe72|A>_T=LmW zgW%bX3pO)voWGK=Mpe4>g(|4^eXOM)f+KGBWnft2ekyu;2#f z0^~aQeFUxVezDgfuX;CeHg_^gYw`9-D6rEo1Fi-B^QPQ^-lF-`k&sP=khJ76YBcn1 zN3Hm-QwJsSKB9;HF+;JbcVE#z%rXT?9_n~`UHxGoP zKX*zTinXaLQr--aZ)l|7`{zgbm}ktX{We5UmaKSNpWknk<~q4%X%rpnnx&vOTpMd7P8Wac)Hoj8)itA}Z9;92Ib_q(Qf z*>mE5cxw8(k?Byyd`KQrY6y@acKDh}$|{aTPUI(+w#Q`R-Tis{NA&ROa5DG`B4J|}9Ev>8!yF*YJ0aX~@n`7%=}8&xQ<-~W#qshVos1uhl~~?+DcIBs ze1%w@tpCAmT8hi6bEsv%>}MJ0E$TKl-=wdU=47pI1D0;+xfOyP+8)}$=BsiOqjsKa zuGU?*PT!qhmLVCRN>cUSp-1;9t!QriTT7L0@_EQT_d5*(;Ai(em&3ly7*~wTPJgHf z+^9`-H#VfNi-2BYBDU$d>lXrE3%DcZB<5>I7ilskFF*wVE~@wn2<6f+;yY-gO1xlF z=O7dJ*RuKGwFGra{prv(Wxv&*Z3M9c1Xsca{3c3!=zx~nn(up+i>hcgoaa=>i30@L z7t?ZM8_In1b&1ZPyM?Ow;1rpYOK*w>oBfTTMNOPg!u$xKYk`xqB&R_olaD92EIWbC zBGtUYM1QV-(?Gs+@yzdOSrRl~(6}|w-^D&zp;$fh!61|o49!6tjd-8(+Ax(9#6}XG z{gV!bgXj>*O^n?)DC5rQCN7@Y)$3hpo%OzTZ4O^!6M=jZibhny#9Qo!>wi9@8m9>G zLxjXhSKK8i7tJN@%Vn%m9UHd$Pm|naER3MGy?1H7b|G!|yg=b)hPGdS?eK>!;E&mE z_~l}+PfxyDCX3c_=?P36F2s7+GLf9wwcYmn#6)>t(18&tQ{@`&ujLi4B^z%NNhLYU==_KRE}XA86b zEQ-W@#>*%GmnMBaD<^PU>$^Q%l=ISg5V31Mv485MIyb^k!~n9yMot}N;K92MprDSuwm1=@MkuQp+ZSzG z@~(}{xqKjfgwXs4PWmSwDmxl-5CRd z5~CIScDmT_rO+)u!>#4}`#YA!NK?#($CZ_xI857F;Dw1hf2+IhZ6$^n41iiwU4$%^ zQr;pg>U<4JeUaxn7;@Nj4G6>=Ws&<6K|h&;9QDOy@C;l8{*hw;Bl33w zr^!9CmC~3>ZBhu3PwH$R-{DJObs!P=>s}AK89qa*v@o&FJaL)sC3=y8OE&Rj5w1J0 zueh3D)JL@v+u~h4-DCXE^(ksE&#yYi!@R+=WBEQy#VZtU$WPLu@QxEqorXf^K@Ehh z^`h>^^StrxO%Xu#zRO)6%a37*icmQ!Fah*2HGAB*?NB+ak{dxHde^NX^%DjpTrBEu z(=&QQ;_$};`z$OmPS6m5N5)C@6MyvI@uv;F1r!w7iWx*mA#OZ_@K;FHjFuuO0$nWa z*u!8BMV+A}Wg??EZ+m+a>qj6lyAs@4s`OQg(v6Udg*Z8{2C%{2VtU6T`7$-65ysTn zx|cZ4PXvum-cyE~`sU_4KkZsS${lsZ`-SJcG0Lw2FdH4DG_IG0-cUNk>Hm`U{u1kD zH~%E78%XwkBFTv3aSh+do6x6GiO8k$ZI2KjvAFD z{lFh92qPGHo`9qa=W5f@d>?=RytdXYE9g?))&c(Fu2?&i9d`Xc(EyZ%b**>oQ?cJ4hs*h~NHl-`Ui1 zGWzX?;9M<$i%OCP3t-Y^)X4;%oM||*{39cP+Di6nm}!6x#2?6ygteLVA>`I8N?`z4fg!&*=%uWziE}PSpc#AHLo>xbm*s7EX3-b)LRR;NUiuS&}T+w zXW=hQ#bLfzXv${UEYl48p}TE&;!gb2087{;_gT1)D>bDCR4&iEn z1Ea_GmmKaQ<;h0mJb&C!o_rr7?S21(w#`rjrFi_8k1FvtTLVJ7G2o(ao`i;jt@B8W z7r|7a@rO4;j(Unc;{CWWou(3#C7-XHJ4vVyvQB}@hqA;X)-%8r8O~9m7Hi7We?x0 zSudhCnHpyX;fLk)5wmkpI*R4gFMsKgQD@IT)~=tR0cW@K1l;@@?=q=X*}#a(BsrDi zv|=O*0wXV8qNRfm4n)o0EwzyJQo$oc98V5NPBOxxgnE#U6VWlC8{Nh{OJMN=!gzSx z>fn&lg@?w6!~qj-E>B?>S3wF)DF3uM?tq2ThjZAk9uT3WRD`uJQly3Gi#jgdYqqCp zNtfPasO7Ngx8WO}4mQm;uuZ6wESbe!4k`K(#{dXEe>#)u-DuuIxB;u6SW2+@`Rwm~_p#5Ft;=;% zV8Iv*18C`ngu=J0`?aAM(=kuuhW7Hx5mTOqla&RJi)HQQ`%@bXG#Tq=F)6AXo5z=v z;D@9U+88xDg-T9i!Jf{Z%`zfBQPje0wPqpNWyutk=F%rx=qwS& zEUklWv+y(bcZwvh^UmEjo6o54J0{n(kp1|MX?ju^(KnZE3-HYi+@5biNRkWn>U0`| zC4rqNZPCz-)A`tc0DI4Lc#Piu$Pv;%`9GU+t>=4;Go_aZK2R=sIb#jzoaO9xj)N{| zqAuj=TP}I7UcjfJs)jg1(U_e{IlU$qm6XdLW^$p_1ETR2upf6omyAt^wyAWeHBZj* zSpk>=C!Pqmbc1@mFk2`5_d(|p86{}v%HSuFz zl5XPB9jQ+WFNX3Z3r~*qIl{KHHKxy6Zl{TSAs5J*V{mQlZ*?8uG{vFe@|`A-}iK7fH!!g!g*{PwcMl2)8g_+q2KN~| zcZ$m+>y#CcHt_un8%gO|?{d3RMi#|=1;o4X(S`w6F9;6$#QN}W?)X{d4J0U>(dXkz ztGXQGdD_TEK2~$~9}h@9-YVB$JblNM2n{z|MwtoE0yKB=C%n)=G}-8yDy z3~VNamJadh%iMK8(-;Xe#4-ceI?=9hy$Ei9TFOXzE31?^{@U-y@6_hqI6c%nmK)}- zRo#YSr`={;ee2OaY|7%%D7x-qEcvmk4Xmt8xo4+Rw_l;(s?gKR>gZDHZcyr8lUrds z!^t2`fla6L@DqsWfYosZLD(!t)`LY7`k?kZDzKz9X}hWus5tpik|NdIyDU%T$_t@G zX*BaXtKxg|4(7*aHs_~RU1M*vsLZ@FsTKQ3Ld(h3?Pg?mAX3@L6K{)Il%N}c+0%e) zsIDyRzuBnswQv1{FfU#JE7G?2guspnBN_sxhqq1dw-!0?!q)s|fA7~~D?^Sr{VY=WlnQG(|IYfYxh-=_EQ$Cwh`f?3=@YR;5KuwsfKKm4e zI`#SbMXK#i@)NBf4<;Jl`jex=6K-^q;`{dJz~edOebK1n4#{L+uf9vpj+-JsE`lj? zxZjNU5aJVb;6+@(rJ_SjU7mq=-!PkDrt=jvjg8H;PZ$_3TMI8XMAnuzI9F>i>T(U{ zDDPNb6ab30E)*?a6u13k2XqW(`v7f>@emp{XkWhr|W)fg+k zd9rP#OJJVyWk@0g_PB&b*eLhg9O+`<7V1y}Dl7Vtt>ES#`C^ePE$Pv|1SOGl8|42$ z?~z1;(4Y^sv8jFO9KYptbCOYWcRkZr6ipp2Qph^bDN<|YsqONXG_OrtS0`W)c0x0fF;D z@TtRQ^cml*qvUh<;CDBo1522R6<)rocsPpe=xEXwWO16wcDlJ zU*PMj{@Y!~pdF9*#S@f#O|QM>V=%>XTr=|fS)fwn8E6SKem0QANJ?K5DP;SDdX4VN zH*q1@8G*@&tog~G^um!Epm|zvVx&izobWuWNKR6;#QD2fmveHQR{o6TF0<*z4i zvIE9H;?&oKXqDLI_}uuk`QJa{XaFx-x_5TRZR#(Ge(zGm4&N5jtn{Zpk`dQ+uGcG1 z#N7b6t8U=?k8TRdL+L0SiMJXq5$rnWqd%C$Sgf5*euXbL2&Jb_?LzZx-46>^!` zi6aIswZh^z;(V8=iBN&wr!L1w3?nL?7ERpv&@(%_pb$m28X2kgdJOHx!TLIK;k4TS zbmR&{1IpEI(JN$RM(5%sO@+wKic`l^=%so|*1Vn``4{%QFtPhDN1nbDx(yRTuqyE0 zq@`G5fEACVbp;xqn91Bnyp8X4UxY;`cK9E?ZxGjMyLkHpE1x?2r?e`f*2<@bw3T2h z#LKhyIS6Ol6DY!?)rN`B+rH6TC=qzmDU?)^;<$o)w?2(Eqj+N0??1*zJ=5v=;8#4st^va;B*EvE6a1 z#MvNS6yR-Hq1)6)Hx-ADE=9-+f@Uc83JiDNI>@a6_iCE+f{U0IlSzU$@H3;(0)q}h z0}xJl5;^=yc^SN_FG-hX{9K2uD^Ph(L0%cH>H_R?54#Az#~w04G00zZZYPOwAt{Fdx1W*LD(EvPx{1$x0NKOm2EEQ5y@~so?k->``;3~++uM%&V|Z@o!{)6VF9O@CEYBA4LJ{E{ z)0b58MqM2nBm1oV=N#b^@mFPA?P3WGt{-u%5@P@Ti|6ehw_*+CQR;AtXZCGhtdwC0 zdW;7XS|OIe>|^07g>g}{&nRX-5&}J&T{l_GS$Ar5uKeHGRpP>;Mq0=E6%?D0m_xDc zX~Wcf!nHCq879oT2l|$^|3=x}=oU(zYsV<|2Pv`C@^8iw0IvDy)eVWBP7nP_RWbQT zWoS6f>G=9vM*9DAxtpP;`Y+)xtA)%H_mbPq0JR1Sh)T#76+HW7-&3ipj z5;f0!F%Jhv*l#!C9?EPY`%?yx07zIK+q1Oa5=vp?ME4@`wC2t`FbIE)4De=x6X1`A zRAsJfZHks4f^Dq&*$BQlA-tYdRAsL2XFz3E1QV|?`3aR;AaHh^H$qLKZw;xPcR>19 z(@b=1(T&peK2IIwdcUrghfa^k?|dvWW9D+YQP}RFVgeB{H6~GFKzVffd#8)uCXh?x zEx#1$?O{ufFzkc-x2r6rwm7ZQC5FTX8|pHSm|&VzTu{OkGXi-zhI|3B9*eHMXx{#r#=neq|e_Uai~ZPoCy!-rqEQ=vtEr{nn6 z((<{$wc!Vk^@+wJ>G6-|v*1G;*c#$*`z*U7hn*fV082%D0^-eX6c1tZu2(JNXPDu- zzj$xtRhz$5HG4N?AS9jI6HTz^9aCRh>K?1{`StPQLVfL){RF>|Z@L1R7kL%akMBsD zT|cF8GG6c9DfGB@UJBLCx4XABCJgSwTIqTnu{sObb4+>M<0q1NUD{A`6MPzokK)#^7Ah_DWB;DUjL= z2JpOSt)y7zJKr%%jKW{DKxKFnKF-3Wa@v zlsJ|gmgaQ!#0Pmr^G#Wz#nCu!W~mIcL<(r33H7!fBPbv42gabjQ31}V{*V*JM3>g( ziSqvvISJL0dU0^|eY1c@klI-iLdH52CcyH!7dnWolrPoq@%sBvJ>ygII3_Pgz^f&r zge~1bsRm7jUIvNqfd~cKc_-(9r|5+!4xg6d)YZ5bb6NKsmEc_6h!5`Cxj&QxCUu3V z^2NO%#@U4a=P5_T2l&4f_&iD9g<>A%P&-X{S8#iaOyef{KSLeT`(>e}|2wN)7!!bm zdaXA;5#GC!?UPGDMf05^iZSa9k<5c0 z+%MBl>399E4QH0WD1aTH)%kM|qw|&5`V>W`&2TYjXEEoehaEoTSLqw1eW zuhA8@LI60at*mwcliMu|R&+wV78l4=2qK^}uhwm&2k3Nk+3MZol{roi_tOJ>;7p|$Hcj0g$&lfqA*QbnWjY{u zuK+gH)lC)OrLl6Vf$_hAlyOX7ZZFyAQ7v>CzV`fvI=Fx4=k_szA;`mOY3)zOgL+Dou}qyL@@+^&8cjz)bIz+*+M+{dfN>CQd&R7l$SSJ z7V>=uz&Luc9CWfd^Od}1)#Aw^=m-SIY z-E5$q7nv<4-qRzX+eebZY-=?9?;nRBD3-DoP$=Pv>J=@X z2>azaUaya?LKHLcE(Y;U^!wJA-w&UXCeal!^Rci%@G4a;pdn7VwWe`a7nk2@ym)n~ zzmhz2J~6Me4CdXc88$WS%%Bo%c3V{$3OOt4Ao4!SH9sD5*>tv6v9!1T`LD2gNXX3p{Ky8KmzsPTfZ{QEHz2_au zPkuX%m#kT?HYaMhDeGWBIzA9uJ*kTFKGPDkl4jgw!BPhmq!4=~&iJ?UDU2Ev=)H|~ zr7WD{J_L*%dMm2laXGSy8^sD+dk*%4wXn;ojL=h)SIHHVdyB^f{uUqmBWh7;~VRpZV!g-GAi_ANAF((sEs0<-S%tF}8rX zuq=p+q>VL2s+em9zH4o(1Z@)9rsS-aDguw&m^ZGuZ zZ5Q49XYX@6wqSYZZ#WowF$v+1zGwd|pBEUSS7VS^3b(!_Seu>h{T2fc9wESh0QxGx z#0JGJF!Emo!GRt8W5b{B#k((L;=}#J_H~oKEgJscWtavo$N|ds=_n?9RV-Tb>8x;{ z{NDEX6l;oGuftR0RcGUR70-6Iv@nsnGz0r%0k-gAp2kQ__Ke2c=EGg}^`4Dbo>9RbAbT6x9?>^trV}3b||!6vwNi)_vd=j9#T_7Wy^6HSp43k^)TpR0CpN zZ}qkZo*2@GC?dP{TY#xbV9J)A87M7roijm4u(J0+TjN+E%cdm5$$>fvi5@AH#qDCz zfUT2THYs2ahu0k=lb$Anh(FD26mfAgL$9kT~(&tsjILE?pGIZ7GivS-~g^e>uPn zOH{cZrPj6977T`d)Cf#m7X`n5`Ga@W0v|N1w#dudxP1B2$v)F@wu0wk7w&X9B1q%HVlRpSxJa zf;6W+Rx#k7Q`;KrPsa#LYaH-1q21G0c6P6P^kXg=BcM_VmbIgHmQ!M`JFK^GYIP$G zk|Qx9FtGUGLL|;p;`z2Q)a)vMe5XbJk6_@ykPsU`irjx(qt-uq;-|*JscG1^Z`bwS zBrY4_?8De@+}B6OrSM`8fa#6c`jaOk5c zpMB+GaQ#t8YYW&RLHIaUOvCYVR>p;Z7_HD|Hq3N34~wJ+X>%x9+I0ghdWXDf3EK5^ z0C>CAm?SnN_*5c__#Mj%mP#@_Crn%iNzW({2s9qq8e_)X_WKO%^q z8;mKZRiB;acqhQoY3~6;U)&haqzsCqF=gZ)T6Tsq94c`YpAjJw0=jc)X$#~cni6{T_9a6q$2*hQjcq52(?r zdS#=E*D|%Z-orsb&cq%`9`!uMHC=k;UqoHRJNc&a$}7k-MTZ+b=rfeAR<&Ehy_t-& zpVPN|jM2MIzIv(g6id?C6FL3IlLEg{yK|N8tFR>C>Oe)P(Opc#Jz)Iyl_+h$0aHzi z!ukMCTuif}n!BbQ-c!jspnoVG2}UjKpnX7m23aOCB+i>j!@YLf!Lv`Cx0U5d7L8|- zDr;0e8T$1sYt)=WGSfY}fEAybVD!3o0QP5O7J-BZ7~$iiMk^Z9R$ucs|IfRcTE4Cg zG7=tq6LkFXJOXPc{ZV4=AL{-<9~_N9at4T`0J`MEM4lqScgf(xVxr_ywQ({U#yKUU zDKbjvP;iWRsPB=I6z$NlKdGQOkS&lA@`*Vm;GCw0(nl-Xp(%@&9|V3DAs{?@b?eyi z@+qRbajefD{dU)V81qK#y}P6Ezh!-nR}F%iuJbKg83FLQe2vggkp}dA z@$tXjtJlt>4N~+wC36Hzi{+*313)u@f*V$&;76BI#40vKEeP2FpV@riQ2_Dpu{;W(xol<0r8O#LKby)}s9`&}iOA)g>gY8QiU{t`%V-B_ z_-ixQHk%qun{?I_)VOZ115MgQhp#^aB-s z5G_X7zEwbrJ5i;*Mv^GbRy$Le_afCHZbQ1WMPuCpF1>ZWxcQnw)va(hJch*El&|g< ztY-PB#~6pVn0B>S*Y&hq`LCw@z>OBkMe{=fyYwwMG1}Ir%28_P^Lsouh1sz}H;p3pO2S5LG{Bp5*B4;9rESKJfsmB`K_Rt<-{;jLMUY45*c|Jsw1#g5ltklglY^W(A#4yWeJg6bgY)Z z`Fs-_mEkSjS{~Nk=w6r6pgzW^uioZPe&tEZ;1~rqxmh{(O1fSfnH^R&Lae)|(kQ4| zf6uS@W1K_5MY^@u(Rn+=1{pMKNVLs568VFFza)@^p*+iO4GUg2+>VFW*kWke2w8eFVJ!2=Iwy3_qn@CFWg|SM}auf~c5t?!#3DR$fB9H4KeAPl3};H+nHz}QV| zb)B*?W8Q_yL**k_u8n2tgb`;y?tKX`t%1 zPAG})$rF-?N-m(yng-7jf`FP?q(?|fnI4+(y~lBR z(1gYGv7llW+M&+`q%I*Kxs0}nCgJh)4K=(=shkjr02_cXi^>)f9#taZ%#M)HcB)=_ zBgxFn96zo8abK!`w|4!@>&?2y*FqgWlZ>R=Th1UJSf8!T-V4%iQrhe>qVsG#w@qXb ze}VGN4n(Flrdlzi0{YQ{-Cq$KH$j}S0H_^+G%(S7QZ0oHZgv|o?FA}%3uJFAA*-Cz%z z>0-jW@BzS`oT>28SR$S*!TcsFj(~{*l3odXl2-F{UmjIbuvy?fwr#J9wZ1!=&AiC| zs9sKdyVqzAkd9@=)xqd6<<|NKO~Ue8iFmo|;5#H81UpZ|Eu@}?sX|Y5Wiyt%@A^{w zTTV)V$z{*x<+Sk)5950=|I1>F{Fbu^QFXGIPZumA*%)*jlPI2bdKp?O08s*>Vi)=^ z2$7@{8HbgeA~qqZm>g4yOGQgzB&qObu;qe>3V0yVH;B9CXc!HBhuQc#H^syNRz>|k zj1G`s3xuK?ig^fJLST^vVYCPi3EyP(ksU~Busx$nrbtnQF>ut|Ed2zDwL)n znU8N;hb@YY=jyzDBHJ+ZcQP%(6yj$^;t5dVbX1y2Pz|xsSH3KV-W9^|f`)^a7f~VqMm1|nNk8LvSAv4s@pAbytfpcXJW>~eCoH6s5;Y)&t+Lz#0 z4&eCRL`~Z4Xtdt(CX36x#RQ_^n*>rhgqBC)T4^KYk8QBp`0JbV3y{doQWnu;Q0E|k~nJF8B zZr8WV@W~3|`g#oLL{PS*CO@k3(VbHi93(yt-}@;fpNm4w&UrS(V*kU@ClgRx0a{Ui z_vx3t+fWilMlu6gLU82-NJIKTLA^0*+FcTC3ZH`zU1jS`GBAp7Y@s(xX_*VKp{N+K zMHQox7?va#LcWPO${>gwR(4!Oq-MC~#SujnSn*-viazCJX?1R{iYTC8XhZ@nN{LRW z=^M7VjMFUXA%*;}%@*4Y0>7hTeV;$8y)SduIvw=>(;|E&u5|)h-e!?_+R(u)ud7@S z_?;TlfM&Ecv!IBk0=$+rShT-Bn&{|f>sfKamvL_Vu$I6o`hTpQV%B$+aoqsR5{xP3tz+r&M8k>Ws2 zb`UnX0!cmZt_%=y@8ACMQLRv1q!j{B$)W3epm5{+;&bX|SslT*Kac<)>S8(hc8C*u ze6c2jl;LiiPKTg(V9zMeBLj`hpR?v*3N_LzFX^fyG8w)CSaY1=Rjn?Z8N2Q|-sGM3 z9eL&D`*pO5qTX)eQTkoHXBA+1-mPJ$+@YM3l!Hm`{gnDd@B@!4=EQkyW57r?ky!yl zVutS+d&f2QZEN87n)KOb*+flJFd~#ynIi*ry+Bkiv-Awl0(=A^E_p}%r-bF;I%o>v3?UorXbO5O1@GN_HDCAf~Q ztpc%;c%B5Y(ECZd(H&Hc5yW1mZHw*y?Ae_ z7pnsILHA?XdC(fC-t6pudCb-ycyy;?bUI;;g7rfF%0qutfJ*~9e7_s_SW>00Ygvl{ z7JW^>5DvtRZfIwt5R_wBt3xRq{I+XQD^>o)?F1VIKAeW@TK2OZZ#_^x?^kZM_{LN< zeKsUbF!IKl%Yh=|B<~G7R&4?rTLR(OUzq7Yt09J}+h=BHh*Zxu47+y<>AwHk2R>o_A)^8yjN#|P6cPVep#_>tPU}q3)hjMCAFt z`l4Ag7yv4oh_3n4Jmdvk4R#{K0~qUp({U9aFc0ESpqo^{EWFyz+N?ri%?`O@U+6I! zIG4Y%eSw4@v)xEd7DE-1`4Zmd-k0OL#dWhuyu9+|qSSES8+h&W%?bXBU;75BN@VFw zDhER(jE~_n*e;#p4eBHrdP79e0y#%vSh5NZZV_KpA?pucpdy9HJ5jt)qa%s^_+Y6W zv;)4dm88t!JYGD6PZtZoovk-r;>mg$WU;|WM*wgy zr>-_rLmT?{4`>O)yE8;jR>AfP7JN$u^!5h{0YaERL$FJjcNIZ|YjsPZQJH||63wJ< zLm>&Iq6n(EtjSoa8mj_0^9ECUh5aSMKNCt|RiS_8p_Hge%2+^am5Y}bNF;&aLJxQ& ze>)5uj?;e~ZRUU49Qn9yM!HE1wI-lu^jb7Ua09^#L z{NS2+VvADbRWs<&6S+C=Io%R&G@f8$HX#;~>htAOh;wH6k?#J-s5pCKIz8>(7xH_K zLro$QP42r+gd}s_9xn)c7neVbm4R%V92nSRgC*UebH>F`l}QbksLgDJEEc*5+`pnK z1%i&d?bUx`dE8CW{=Z2O18oojA?tvtHQci~BhOC|veeVD&?W=UU#Rv`QscPjBs1QY zmi!)Ys1k|16|TnK5RVQ=WO`WK?5hLrX=K+p$bkfci=$WX#k!g-A9FD7hbf-E=f&(s z-iMI_Bg;Lz%{{C+YVCO}no=^!lZ}C1i@7f7qA})_KAq-j6(7praJSj%Y|#*zNPbK8 zj`GHI-+P-}miSMY49t$wKJu)+LZCR}hi@5XC(JUQQZvPwcar+#y^hN^9Lp($%0^b* z*m*BA7!krDTu$Ux#|s?aF5_O18XJo%>G0c$y)PRYd=J;ukMGmDe&Tbp;X1Dm6lP~o zzmH+M`CeRY#b;Lqf-z)=%MfpZxI76Y@iY8^7trvLR07vCP!%FA`$0CVM9ipKUR@y~ z4H=hyII5h&$b*n?6wdZ2gdazmoS))~psz|?R)FpTH9ufQv{;VN$B|UOr??26NI_&D zri2z1WKo7;c$)$T0YC%9B~fAu{yLo=u@Pnp9aeOPS&$N4gUVQ2Tl4A$p1#$1+zd|p zKX!a!z)_yfq&UxB+JtG$1o7JMlj4w%WhV0N?^o1k=hFaNfBi#$VX~#>^%$E-{`n4^ zD+cKa=iUrp8pm|Tw?qm^B9yV<+W^5elSs)ew|Mru;_5cXESsovF1%?Cqxr5+ujgT& zp2d!*9v|~v9F9Qu5q+@}K9}>ml6ClIk;h$)+T&E#fRh_D4hBcWIl#Zigm#~vHvQg8 z*G{o%E5muol{SYXv93kOYr9E)WV|RB{F0$}Uejq!hIW&O=r605U_~lDry*ve>S=_Q zQBf@eIO|~R5jWLzB=&WNNh#}grtf&vK1eU9PJy!{$QHav8O!EBanB6#P*w{wui=zy zn#5f3W$V45X%hH6O2snd7Nx&W|HgcmL&iVbbGx|llo7TCwF6(X{u8IYxhZ+l=F6&U zIj#GGtzOaQ#L9WUaykYLjg@Jf4T{`IkS12h$(j=Hy-cY2LjUSfYNllQE(SmK&@wM@ zayBM@wf;(>zxg~mMs@Y+#OZIgn^at;@305<@P;TZ8Uucb@_xt^fo!^c$;F*?hI0H#Lc`uaxXC-H6%mf^oMJ6va)H9}2y@hb8*@HY@I z7P<%jDm*&=?P*akC_$JyY;Lz{@cB@89qAm`NNyes;<1Ggj1z72+K*&FJMCJ~3vbr; z4Ototozh$wk-%NrjwXvQ@ZRIi6+ds;`R~xVmmM~a*neCl|9PSO&)3B~@UX9ce!IIy zNsc_OZR>MB<@xOisb?nVg=VKqV4cU8Yb8DTC2e8CulSL0+Rb>JR_0Ff#60uo&mV`f z=kSF4s&x&uL+_@KIgL!V-@L5?NXm1a&@oCd=f}dc;{ASJ;r4W|lhp9#E}z^mjyea_ zgoZA;dhI8=7)>w9QKWQ_eUKPv+_c1W0h?=HO&V;qxp=o;=F_G*_ca)8F#0Z2xKn}K zyrNQKqOY_e>q*&~?P>MZuVF@Zmu0`gh_N;1&S|FWc0zhN4k4H&h#Q%yaR33jr zNx*lSsu9-UC9a)A-9ETo;NE_2x84Re*mv($h!?XR`?d%m7-ZY-0uu3hu$BsE)UG6T zUx25de{LczLW%$WvR8yYG#m2#0|Yti=Oe)heM;ECXBa$|ixRy(xps2w4fDgZXkUdw zP)Etf$K8?j=iK0gUkoPM);5T5?PA+Tm`q6g-#GPOzcrlUNWGtv=^$!%)e)Stp+6*tPt9}N&Cy@?hX@0}B%B&r~#>VKj^ z_^z`4x_x-1Ex}+UV1rwXfbD~c`7GR{O6!2lD`WZra>A!RIq0JbLGrK8c78q5V6=<( z+V|(C6~OGOchU~g);&ytd>+RRbgR3a{D^A01qp2SH>hpLxb%G)zIR(xZ`Yo1EZCpA zzBR8qO#QX@jofYil}$FKCj}62V4;{Ji|Fq~UUfhPS?LduKr2^3L<`R%B${We;K1yD z0?u*YaDZQC0t*PMV!RSDs0B)iGWGxuZrI`2oQ+x&soUJPxeX|wL$%_fnD7y zfZDT8f0N4TfB5(1-vIOI?wJKmLnfcn!s;P%A408$@M=@9S1^qT^Y+{dGv_a_^Lst5 zj(vz?5_R&Wt!WfP4mb}5Dm`xM+6UhHD(>3sBDvGF>G!^dWSyJMd31gauDc|YePZ=B zZ5xEI2YtNt`Hp@CAB8roxA<`%F0`y%G^`9d7RR`Ig-&_lO&L2T(B>72O%rmy->HDf zf#;pXNQ(jS>F`ekTig>UP)C+?AkLa)ezl3%@HKC77VurjSEOa3+G?WHTQQG%K*0%zu$*x~tAa;4$W<%iXwCka9>f@RX zK*wEe&nQFJ6_N_9hQ!0PIKB-jGTIP-=RhVO{uzlN3?L`xO-eRvZq@-TZ$h6hLQ7Ws z(CRLW;CBqf`d@`G4F2}NjG4RbLG9*yLUkkVEH z_A=jZtQeee?$AmaF}8~(opii$I?H_KS579^{mM@JgFf)InWB_i$chMm;fzKh*V*T; zs0^P6K!$RuxN1Vu3)UolZcbg^kYVttd<(YbKLu9dNb7)4-@f@isv3t20)@!$^U3eO z;ItqfmVhH=!1S`|7XQfuKi=gJ^ZCGS?{@8J{mJr6enD&1%`sQNgyC_}&EATS)IvLS zgpr@~01IYt?qItp-Cg!)94r09$RZ{j$m6aBs*a%pszA6pCg#O%jMbLdT_X2iA8W1F z#OGy{)>|YU|6kr7;bwLsx!sJtc&;i#M*j_I>$C$-Ce!~X!5|j^mfcsV%LpU74I_BH zQ&Tx^%@hmF&-B?mV`rV#W;Ka6I~Zywnzk!6Hc+V!N|v@<un3R^ z<6hl|GjBq`(THvpv7f1}E@8~{WsUcm^voeG0RZ(Ae=}517>#mfy z&a2V&+llgPP~`!|({{4KxbK;ZDoI?dx@lk&UskS6e&+N&ZB_IGp>}}uJi$!MTmRzw z^p-CCU)U2wj}C0TE>CJZGh2jcwp(uo+Js|5{8+kA-!X;AV9xDoj*4}iySYv`;IcX5 z%w&9nIUMe3CxbF>$}uJ#oEd>sU63rWAZ3+LCY)Fb@iNRP z1W*wy(}!Mid!Uo76b-}YPInMeB}Yb8syV(`*+2Z>wh)MGo*ea7&QeM(4ET*DQ;=ZyZ8rbC?YnjN1Moh^&;mp@ zaY9Wpo&XXt52GhjAe|RknbAk5UQH=3ATk5;Kmf}&Q;=#_EoZ%t5JS2GqsMA&sXR6x zOd>GAYffTOM+UnhB^{eBQ@BK{9G0CXovr~c=-3@Kmorxbhu&>h_}IT+aji5ywS;NIoeA~@EEWFv<^%#1 zK}rv1+n}e~r5PL=g`(gRzMPmQJU?JH@3S$T-zg(a$2{SZz`kLrWO0os-2*2KfNjxz z&p^f(n8nBC%kIHR>FclZzs7Y(>@b>ta8E-c)O7E$ZyxE6AK5Q-w^1yE3Quph?|&G! z-jb&0pYct9Lq)E9?4P&o7e+3{{jU=FpURg1{MHpgXiUmJnbTKs+iE08+Wz*=5#$A^ zK;i$)TMUvj`IT&Q`+lbWYJl%UMelaCrl;sU&3n&%#?I?Z!|N>8G_mh`@&Ma28)r_( z>0vk!ZH>I7PMQMKyL`H1Ol{;o1B}!jeURtR;d||aZF>5FirwEOVR^ZT`sN<+FHK4} zEA7Hw?#)7^r36i1|9-+LVM`c~b6O?dqo|wxcXpGRD-RuQa%{H>gfm4EiV7Qfw=4Gp zGW8l#xY!2|{R2y+&Y>`Kpym6Uq^UaFHt+Q1Vjr`~_Ig(^2T$tSYU1=Hng3%7UhnNG z9LBt&T?Yuj<&6x}*4-Esf<;U92#WE|vzb71EPNm$gU2X|G(4W6T)1?7Agu`ItH}Z% zObl4T3F%aDhUsJf4qYs>d5_)$2ojXy5*YFXEE=Hvavq7EH{y=xG2!?*xD z65y@-GIeF)60rAb-AOZ-9`f6j_}&+~03y>z>(24?rr`@PB=oM)Q`Kj2sHmEQSxeii z&Ph_;W?r!~IM363Hhk*aA3S!uoeIBWV7nl4JvD41nY1_7K+qP}nwr!lO)9!z(ZfkX))_h;1&Dlr97twtHJa@4%fRpFaX zg-!qs+{8Lh%Rr9~`-zWIv^5)jNHr;qSTaIS1jRhXFc*m_Yp(W5fURHLjey4paEERm zwPi(J+Hkphn@9rjeU35h4&Gfml7e#^Ut^0Je8ZW1m9apgUgo9^*Ll!Pw;eKi7EeyJ zo;d&T@8b<`j@P(HO~AQ7+>xh`L|bLASr?@hHjNchm5SXx^gWW(Id#(FE`X`;`WYta zenkZAxO=k4;MkuqBV2doKjGx_bP`4c*A$K-^aGmWkwpS{Hue!p;K2o=<}FdSl~<~8 zkrH5P=AtT{1R)r#gz|070hI85GHQTpMqR}2I z$~q9|RzWxR{dx}kcE$HM{CDv`C$KKsP6`M?LRJRbQK0t+PWNgF38icUC7<;_Nd<$9 z^j7@+h)GP`L|doP^6qwX1)}DZ)!ynO=*Y#5rX14TC(wgn3L{Ufw8ojJZFR3 z`=X%>G5^=CSj9oxopVouC(jswvqSrjW+ZIoS6EN0AA{-wX-#)Byg3Ko)-bZUS$8~U z!#gye9qpr6-oOfx?Ld2X>R@yeDx+#mUlNheXO~>tV3%18eJy~yX_T= zJ-f$Hga2s2W3Z8vCN>-P`N%BWt|)7gdd;cs1^rHX z&ei9X9KLOlT`e+yR zw5Viafh1H_7$O-#w6eNpswh1t31qB=GaDPkL8ySJfnq3ti0P4{Y&BqMvKEK|0+MJ3 zOK4iyVR@xkxp;R^J~Tu{(_N}Pq~_69mUx z%`X;ArkD7{&h&-E3mVyf9?)&;?pv-;j&9&#c@!uCs-WQ|jWta-tx4A_C?4p%YAz2? z7oL5?8DKlQkMZ9F`~Q4mivktZd4f*}1C{{A89tis;>lUL%XyH8S2T=%a%6m4*7Q6C zrANPcmAp6_yeogCTM^g3lB#Arns11@**YkeEsg@42GIPoZ0>FHkY6x)*KEq$hANZp z%&}hLrIVxXx+_IlW58~HJt~X_4BsxAh1~I&IU+R(Y&&)6FC|9zN}evy#hjMy zDeX8JvIwMg!nJ*7S*rl8`OJYso7>hLj%*|jzr!>jTY~2#C&O*M_&Q4WtuH~g6meBT z)H9u;fLQTv7^<% zg}MXHeW76(2PnvU8daj-6*;dt-cPVD-Mjw#ZZww2XW73*i3w8ByCzCIOn`|=(H6JI zIRV@GIM9<`%M?%`lx+_+E;Y(Fk{l<;?w$H`vaguut2Q=%2_Ov+BK<0PkQa!%)Zq3h zH%K1+Ed+G9luGkI$J^(8OSzY=c2k9Qwp zvG(Hoc%RsK-V2n~XN`boBY=qILZ4n5SLjMec2lVNYJFrU;bOcJfxyk)av=buRr+kp zYi^1M-QSC79|CupBREa=VM7Y+~@UFcn5S5D*7$Gfj-} zHEeDI#1N~pBw=D5N=r+#ciZ3bzC8LlChvaVkB}usQ&L6S^*vo4@jFVLMLQ@-ctM^S zSU3o|I<=)-m0^NjT=~nd;EMWd72?x1h$$w@Xf;AbomgUhQ@YCL>DLgj3D`hpg5N@9 zE(gS73}@Z^&JXTV_R25I&SNU;=*DB^Nz8Vc%#@yQ*r5-#a|ZfwFXswae;Rt%8TA3B z-@EwLP*s3S!F^)@B|x56xx%1%vWGQKY)8`mHx(SF9aIDHGGOVpF5ug0+?|*--~D)g zROR!_pWEWm2qj4k4y<^0#q$nUxy6J7-dO8$Bi?P=2=J46BEvs=5p`mef@Dtn?RM`z zPx#2|V?3qD;LvR)DY}zs?Wf-|1=DRobB<}1#<1>t(rb5ZDE-MG&fDR~TC73E z!35t9t|Hr(8@^p?`!xG0W~;$x`pT=>DNSZA2DU#n4g(C@bq2ibs3ct6YV)gj6mfh#$hKyozOSx#l zTwffC%wUV3!XYJThqnVm$Z0KSRV+Dqkf$k!Vv))$!%~WAf@)m%V4VhJMUtseX%avi z7pd-MkR5?IL_&ci^F3AlU2h!HQh#DC7ilcv?{4UIyMA#BHouy`mA{TuC0OTDoT-qySuw}-skV=RsRuV zmeC{4Vocp2U~HCSclu~_J+(3FWoGuzgQAuxNuhiP?RF*;;PfpZ0-nGlTew`}pIlGJ z-8&oqV!=r)UcVa*5C|d9Eq-hFi#EwBP;rbI>l_vf43QfQT>LPN!pkb7brVg9gq2cBcNzVR^I!H26fqBVKbE z{7dI}ZGVz|v-z-@Qsa{I5puo2-)+02%aZM8tZ#0g$40#3zdYOUZ>Q)(dgJ*oW9bOS zjYNsV!_+!W#2v+4JR|g-r07OzNDW(=cK3apE@>gJ7&3UX4OLfknH@D zek;SjU!?WfcT`F74JH>mA36tq;Aqi!R(!&ulpdW>HZZ+0NILCj`~D*PzqdS;}J%ji-+^RQoTtY6Mn*?i#LHB7_THd3f2JR%>x& z*O!(K?(J^p$`7v#Yflr+x(&bbZj#SF{@cuj57m|jf+=wi(L3*YeX>SD*vfHy%jff6 zPv^z&LJ~1^10!vY!+K5-Y16x--4fG-x&tD>R|H8i!(JfB1Z=-a11ltfFvQ~V)P3>a zT@*mFr7A#q_wv0g1qj`PT!}6yhyekGPUUnoD+O30kfHd_B!M8FXL%5WjB^kn$a&2L z6#8ZaDV>Sp0mHd~rRZUC)VE+DO7aPCjCV_ve@RS_jPYf3)AJ-ArG#Ln5MTuM1a{>! z)6>(dQhctKRdM(mKu}W27_&BjQW@li%=WdeQV$c(_Z-+GSuc$I8by`iZ51}*ounq| zPMQF-(fVqZ&CIc9Wo+Q2KwU9dGD9X`wp-c@Mz+MRPuEjB3ueCQ1=Lh>YR?BoJX8bp zcYL}$4w||w)E1I)zG^yWzWQalFw}vSMiZ96A=DSls!Qy1@zhX3q~XJQ@vu93VxllJ z!A;@88c^r07@4M2I413)|1+SUH1tyK^_(c-U;Hq~3!27N$!@lAY96 z)G%LG6S1bTN*g%+6h&fj3F(dH?>u?sXz1ZqL4*9wRMFpQzWn;UCFExcs_TBMvP;I1 zG95c3>97~Uk#VQKES*7q?c6lh=*&~ayN4yF9i@78BIUpe3a8K0xkpLL0^d|c*|lnF z*5xY0bIMV64f|Wq3Je2=IJTs&H}*hP#k-56nlQgK{ja-dy!tm}!yfSK-%vKkjek;0 zn`Ah+3P@Ui=2q|~$iSbNdXMC{9=g?IRx%tq?2d#UlG{CB_P_MhtVQB@lB_woiKYO; zg`bVj31@2N-{`{QV7rZk&~dq&i?wC;Fis2J^}MRfy67u-roP_G42P1Ah&n6~05PVk zRjZH{P|X4d+vJ){U@jDEz(TGo3rb~_TTcGkxT^H}nx?^m*6G3$lzEbqaKx#2ump*I zqO@)6<>-)VVq^ji@r^-VeT9&o_tGR{Cj`h;Fcs1mLM&GQOu{6R$|Hf5!fbIbpMk6c z^7U}Aj1+Qmkdz4nkXQma>v(0OuRLx{bRKPXZllgk{e+r_<4(tcM3mvNNIU54q7tl6 zWW{o`luFtak%N9;#+QD9{2l8^F%+0kg;8ze{bauplJqP68BovpoGv?pW)#kqIZ*Pu zD3?c|=3cCd5O-h0Q&@q5v(e7OfJ}gb&$o_G7LRPojaDs}D#MWUUj*_Q@BC^~K`$oz z!2faOTT4(A@cgb%)1$5Hab;0K^M4UX1sZ#kn*{dSY|X5w%ElpSAw-Ph?}V*Y=&z3O z;96-e7bHUi4bu2xwyriVR~6i*9qNZU5Ogj#^CG?bIe|2c%se|RpkMdWisgw!qM`l% zy-V-jI%MugU%JI%b03Pnv?Houg{AB&J)Dj#i1m=QC*{}#q$VG>D>SU#yEshKPIe#) zx$E63p7lQb_L<*S56+GE55PApO|-+3J1>es@5-Gos*scTlHQ~ckuCufjRr`CU05hM zBt#7AsR@i!IM6h8WD$q*>M=1`)l6B0tvTFxM?SOHO_SB}!2D|1%`-2pQS4>cq3Gr6 z1u=tS*El~@eol1CJQCq zn-pwaN&6uG{o?tb_rB##ASYp06#0NQ%Ir6h&84T z_}n?HbD)Y|$!(v65_4G#1w7+sbFIo{@~S7{3yQ7g2G6S>9q%=M47Y7~(vWKB4&BRg z^p3jZ3C}ra$ZqO|o$InOu{t>2N$QVAo`5svm-dez{vWr~o;I>L09Q^kpZY6XvzKcl zZfwbA{R5{pqlk2Bgh9_cMxSOaN%tRAMo-UbMT?*S5CNHe!jVaX^eU zW9(_1Q+FO@0g97;W}*(0=5Q8;s;~W!s!7FV95}4eC8%yJq1ZuH z>TqRRb!sxV*q>QL}bCgZ{;;Tlb{>=&!%x>ZY!t|kWl~A(J1nD=r z0l^G}Dm5!{A!$t$>|b$U<;KRw)?eF0IjtxCLPaPeo+4oTu6MB%y~;M+goS4jP@qps~vn%o)PAORay4H!T1sB{7-?l+>HRc zcT06-O2d{cx0tjz;In}J-5=35fRzFiFv1tiwq#v_<~_fyw1I0O!0X2!nq!bZt29-d zK%eYLEDFP|vR?;L{udqnztr?v1vGJI?Nev%L(!3h@uO+&bFHBz*|v}GGK<|!`>BSK z1%nIZPjD=fZ3NmBYI@P>euHMHo!Av-L-v!1b$5sRM)+fe9Jy)fdYATBjqZ?X9%9Z> z;=yonnkq~qkYEu>(>$X1b889Xwq%Yk0>Q$@WiH?_Cj#b!L+daV7n2fPLf*t_zH8^p zJ0nhrW*)BdV;F}7=;0c|CV)75G`R^cJ zfs#TdLZV}@I)Q?;&Bw7YcrX1P>ZmdD7@KTx;Hz#z9Doo}I1ig2B0^wDu_ly(yHd$E zqe>O<^?SIZVRko4$S0RbD8Q!k(@}SJqD!gwzof8a#Z-ZycD^=$m*Y4TM^|H6f*6L# zS7N2ra8iq7o0~DiSz<#HM3@$fn~`d%ltK$d^T{HDSOK1@Hxrdeg0vU3nivLx33wbK z5O#SK{)PaQ_fx4e;hb!4Y85HICDic!jAoxz#AFsz737hKV3I%IkdT{H=hf|>eISqX93$t8ad|>TXhebL; z{ST_ZNyD()0d5UPJfi*|(y4M7sM7agno?@d+B3%EsfSAWZdo;$2SXz8!8c|SY6U#u zKC~i|I~J;!!?|ld$))W#3FNx-<*-IQXT4{`Ulgt8P~tMDkwp(yyUG5G#8TmJL`vQD z)^+pjc-}@#jg@E}RAzY2W0`E@>yB^YSY6{MtT7O6W)_9n)hlB;4FXWy+`g?QawmlN z--1&}-LHg3zcHxi@};mrH6~br^*QyCKZWKPb^a(cg^ckH@Thd~Y#o*z1HTkEn9RSu z#hr9fmEjp^6h&lfb3K|*)!2QYFE9_8F-$6L4;t#er-*-8IZ1b55j=2}8`McbXYwR; zUdX|FzV&sjM-FH>*zIklaPPoH`Cw5JF$kOjq3DkSvoz983T0`;B~+p&QKj>Uu(At5 zk%&&aMiNU*{AM+PP=rhUKv;+`>I#zba1bC81`9E}qr{l>d&npmEr@_5LTkf`gcWV0 z<%@-BE*FdSqyy(HKWovA#3v&*AB8O@%j=Jc5~a2W^(0q0M8!F~giT?T3GvCWv8Bx= zY;#RaOr(mgdR|;+eq3x?FZ{z?BjBu>6}hT#U8coeA9CisQ*Lc_WSs$kTb+ui^0jnn zV}X`$q$xLao$pn&wFCkRpGJsXFXl*@X|j# zcFw!sI_Q*&L!5gbiF2c5y zn`vzEcVH0omqOfV|5@8#Uy{?Oz&$&nz3r{L z=l*`3om)UYvcF&yjsbb^S}YJ6WlX0sZD`~9TFx>bAcy^1);5PLVgZM*@h+l-!Xc0@ zqZpVvZ_N3ZjmPvXj>OZ9nHLvpH>1#~kgc!?0j?ZD1vOBb@U0dqIu(gc0xMjOj&wgZ z#Jmcv_zV)ezvUOhOqhkZwc1})L^YRJs1kxLEfQDUs71dU8>ljx6%c|6I@G5osY3Ht zY0|iQJ$gxnT1l3)|FB+&N+n*!{1-k((~d#j zFl~~9F7USG9H%UB8`E}|Ro(8uEX;d5<&xoj+_cras`rMMi^pp-Rf~mx3to*+1~U~8 zoC7lnC%Uj8Z+skz1urW)vY`MB#5-hIOWv3k4tyt%+Vv%+B04#wo zEFaotGrkJ?*z`wMM^yp$bYlKrF&P@TSkP9bvwZ80jaSvohQv$DDAZjIX<<{pM%mq> zg20$@z8U*#D6%+VxA3z@+%JF3o|G1VmzJI`mrGTCPd$5Ye*#^yNl?xGlt>w@E1Fqv_;FlDO3B=~X6mn4Z9F;NjU=lS%1Re3V{tUNYz1t2laY61XQCCSk! zwvMte(QQH+H$x(cd_V!Fxc&|}2T6Z-+eEcJfPFBB! zPr{*m%x0~Q$ZhXV)9|VuE7~o;=5vZjHHEsJGCaL{8N_6qvM8_U;0fNw9;7Xv$ogaq z>()CBWIUszhZTb{QJf>IlGd>=n>&Qg{d7h|L-B-7=00%!lV}RC4f2S=&CD#G)g~%R zEgQHgvYH;KgLWANI#!8N3!(vpI5UAfylA(2%vqFA^Lzlt(f=H*|L60&0iXa@XL9D{ z>dCYAo{P<0ufNyy9gzE&jMob9r`UNBr(5I{M6NnT%an?m0(|o6!(L-*L*Mso6s79$ zg1XDo*l_|p!eoHle5usmW{{i@413x&bm&L7x~2&UL{pMP2ijM0e|T24Q~E-Ubf{?p z?~(_I-~R)PxAJ6meIm!7|5 zRP#?s44$;qLBt-!+JWGNPY!lxD|0ZP$Cd_Z3Gvvh2q!Bnl46}v z3G*OX?0~a64a8y9m~nkYYOMapQbn5WmCR1EJ&Mhx%Qengw!$YK`g{Fqp1S4tBgt4?Mk0WcXPJ>o*U zrrwy>2pL_yovRjHhgI~A(^8kjKc2Gdf>dSd>T#8LLr4zzlLLC=FpEK5GO6Mzn5W*M z?Y~$E^!BQTqOasNS8(To$oa&M&`-T}Uvb>+xalcA2Td8|-+;ET{iO(Vc^iQrpG)k{ z8>R^p$g2gKQb13=-@x%~M~p{IH-y$xzBq9lk^fuT$kb22v3K;y2h3OPaO1k*hC>9vdmM$*5bhM=PCr zzOLJ+-%0@hcaWQ#Migs|1f759v0*a-+ANJo?CHNg z0Io$;z7-p8^-R(5}R>} zqzWBmu#IgLM*7l!;dbSQ>(6S%7tap3CHWjJR`w`v zbK$3tiGdAt2qb?$ZVU&zBw)gp@crkO#e;3QO8-+bGWE0Go73MA7yExbyUI}@4l?ye z;;H&llQOjxJjR*^pP58+T0!$GMooXCe>}P->{=pbH`~8vNn5p*DvG4TUx_5rp$GCB z=fcBht-a=}J=li%Zz=72nv-Yai9{Dp7c|tVu^SrCuZFC43y3EPWy%&d-uz(DG8a2r z0U+C2W-^c3Ri1k|CU~AZ6xvRJM-LQO+tS$Mpwii(j_LvJ$=Ez7{YlUn!-bF%O^5ml{lA|t;>ABhv6LEBqv*gW2(wzHOX8Kp<>FM~%c)kq z3{|us5(Ze2PEblXNPU?#cVud^h~2^Bup( zlmg_4XAqjWg&cbPI`n+X>b;=={zya}+;B^es|QBdjyNdHKF3G-Ww2~{$LmI)4V`GA z=uhWezYzI&L(h6Bee=$@fad+^X^e1FLDHCQ&2fM%-)QW~&?lMBW20Ml#}>AK8ob%> z<|Svavt^E66!(XE;K)^@i-Xo@z?#ob8Esuk{4PT^x!UTI_Ij|)7L0}pCB(h$XFRT( zPz=Z%YhVq4zk4t{ERY-CwNj;GHqIL?XxO)5fwA2(&iHt?6ZFhH+!V-bye61qRZ6H< z^^=RR#$;Mgzs2J5HOUj_@_t^^db1|5y`>k^)*~Yp z*2mx))jKZzoDGvPg$oex@+7*-%*L>761A6_e-wu-m#&+G<n_=Z#^<_bYS=M2;`W3c!hvGpDN?@uFH&yTD;TJUyBz974P@WNxm?p>mnZU#k8T z@9^a~ME#9eO8toHQ{Hehk&1Yu)q?U}DYasVv|=3N zR2ID@p@}~b0u>NeRx z!r0(|eH@GOTt&;Kp`vKuvapahg!*_=V)64rhWg&#--a)I7e_N(4pT*h7#dk4pPOi= z9=>~!a?&3kw3SD8L8H;1`GQ(Fdfd}tryM3CrA`=TnqE3@yCEx>!$Ll)I_K6=3s#Sy zYoD|=PM&PK28tMk8>x&LFle(W1Cqb@$~w?gFWPD)(R;s(-ztGqxcSDhXft@*YJQ)T zgX4$G&zkb?OcVtP7qnet?-$|gQ#&8A^vt_9oB=6wM3xY02!C67PYzGva62t~f8hQ@ z1Y6d#TwC8)8VC8ql9Sw9!bXgcfP#iMMbm_b?9%$MtRng@PZ{fv05c=Z@U8LR`>Qu+ zjZtP!+uW1yyLOoI7z358p*6iHN1fa5Awl*|{0nqT?q@bWoPE?$l6E0C>N1rL2{p#g5btmM|rDAytD|NP+BB;kzO*C(H zsBn-f=TkwkHS1EQYW9^^?8C*ABa#Bg1S%8-9D3Pf$Xfb)Xkl_rJK+5j;F;>8G^FT4g_J zC*rG*TwA9IfW=Q$$#B%twF@~*GHski^Y$|oSw#@dg8??3n zIObO)+UB4H2uf}g#2Q>xgdjL(!V+rK=~PeRa}XqE;&B@Btjfr+!CHUGB&s-&e1nO} z+9>PlBzn`0>UE@Xj?7EdOC<~HWrvhCl}c4mB=m8hUu_eGbH_~|!6SaP#+j9_D_H;=aYc?j1-T9->d@ z<^XRQv~%F#q-b7qlt6n*c-V4qX&vLh@$o;bH#u$7bEbYXajrS$+gCeJ+Py_jk~t^a zw*cPSZ8dF^&0@#*0#)ZQB#F2yt*|vnvk#k&fnE(c9~ab;%mhtOHexA z^t>*m*+LB7@Ij#G%+>uF3o`7^y;eQ5NiBC0&0h4p+zdV%@a333KMmacw{60Ph6V3O z2ddmZkdt82ariEbcY^~;aatnCwNwzPBxiAI#WXX@L13(L0r#8nF0(wm2MH{{D~8Z179FA)7d%BX7?vy-^I&!N2bFdFVd5w*f_@rQR3*AVfE<@# zCZuP#wOIL3A%O@{r8|SyO7f1$9QGj&eossHawXwjiQ{dQseO8h?H+s@h_`i8l`q8S z$Amh?O2WFkN>jtZ;W}!?x$6yL%FbPcT+CDy=WwgI`ZH*YYJ_uSZ96FgR-m`S=CV0Q zFma@4y~>K6F&UahM74VAi8DVEYH{mV_kI_r<>z@zW!3F-VSCx~aI<)nm&ydjO{uoV zop3B%g*;u{`_1qQqq%`{+a}+8tc*m2CgjA#;-`WdAqj-Ddflsg`nIRTr3RytO^WzZ z@O^RlsI1;F8B8jR)#?fh!E^l+$XdbY!Pr&#(k+JzxH8YRrX>~5`T^bOg0Z8Da-KlO$&8!k!M z8z-W}Th=O^>M0~eQ8S$lq}uWk1pz3m!p~C^jaYVEtZDS$)7cQmzL*UR6H8meTJw=A z*kOXr0(LT_Qw1@%c2Dl@^5vg{KlzL)(X|!tptBNRmq2P|sln?&Pj0=MgQ_!Rac-R~ zSx~F3#lU!Cm&weXz+Hh8CZ#7`V_-R3$y3Oga&%SrGE^U4`WwzISD>6OmLUs#_Kp~Wxk9cEGYqOzD$f69HhAn{Jp;Jd5~uvrJiI}sI8u&X_Io8inW&n z=TNM?W^i5MdMxJj`Xjay&SNhlu{ftg93Eta%LO_a4yqqyqG0Dw|e5HW_+ZHri{4FTBdpfSXh`kpW6xn>{&n69{zTmp)c7 zanCk%TJ+5_vjo_2D(K|iIdd)-MZ4&f4BzEBEBrkLlJ+nPZEYr~D}Kwypd#OP*;H1l zUJC(+mhQ#d`Ooe~54aev;K2&r-7(`gxt2Ax+-vpi#4|%&l1m+5JjZjp3}VY-)sTDg z2@9|?iI~}pq{_U!DUtvfj+O!XkZ@<`Tv+g>xVHMm;?rOSjTrz*PxLa^8}s@YXi`u&og$A`k$F*+6Iuw#B}Aj z4d9&dBR9iqk~Q1TfgC#q$7u?*rz6m3ib=P0NztR2N2_$wgLyJU6GDX?*M{dKQP~B> z>XSVpWAB~J@od~;eCC4?lKZ6|h}gc}*S%Jn=XyOkrmM0Kmnlo+LjMC!#;@%D-)6fA zkRBh7zvWYNKOcAU`UWO960nWmzJ~4DqvHjI{on(@)*2k&B+v>(PW!AZFn|m`=R*LG^vR&#os0dI}!*_Uro!8f#Q!U%fBRHm;#0Ile?W=HdYA z3JuaF4cnQa`cPvb==UM?Zxp<2AW5$TdkeTt?XXIfxC`8mqD3>uYC;u^6u6U~dshW&W3hUE*%3sY!&H zsrb*QJTML_DX~?45mYn?jcS5C7?-7~GqX2`28orpxFmcVEHI!M1n2DNs;3nL#KR;d z@9eDzb$N(J8T3-RFT^@jOCFIGt8#dJ32k6I89F{(Sjk$PVwjhXr|#5o8na2W&Cd6A zjP_dy|4Ws^ts7(343HV^A1VhM5MX)Pa=c!wgy}}qH9$)-Aquz;1ZqU7`;iQJ+!G-c z+i<9&xpuIyIJL*pp0Duu?u!PqFG~&XqgUVURNl1dnRc+%XmVx-vDXoCkAdg;Hn2rH zR4L6RAl}Z4m@>7FoyUkXUIE@)+gnV=DAyLou{t$f?{$qeK!w7K3}+tkVOjZDe> zI4`ewzl~6UT^kIYPlCijU}nhjVkRAu%7= zIr==FxDH`M|1G;&)5czIj^R;D6lLOcFXR5EEixF<{wQa^RcCZ6aV@l6cTIF=NxZr{ zMkBcap_6H%E-oOy&~Ls-sAe2@J;zx(I6gM)PItuP2FO`F-(#}==66_ye}an?71xrj zg5(oBH%V2+;+3FiF%DP1a; zL)8o00Uo=xAUE({$%O;^7nySZDt8#5ZCejhjXw6Tq?tKmoC7+?s_sTi( ztOtg%xUbiMXa%yrl>cgRZWqs(&GvkbKfid{`xG%H>msJr;F?vVTL>qG6QOwZnF~uW zA`++hGRi16X~iHEb0(taWTM>X#j%q$?gANv9 z+pwAXz)G6#Ec#J0BCliwn8*RODlCF|fmLBx>xnYH!RJ7Lr*MAqw2eliq{p0P9`}>c z@H=j&Q~a;WlxI8=i)ND>H1hm$R@OmPt?c(=e!uN%x*FV+T*uo$Nw|sf4h@a7^cUq=4lrV ztGu>x7Odf^uXSwsrHx#XyXUPJis3gFss!KZ_#v|OhJS18+AeAy5cz`NVQy~b)=Gr~ zEIyBJFgSWzZ_zj|*%{`z!GknkJhr)T$j|9_I=wmaj$$T)eR;To2loz;0r7E-|NDUc zHc#F61-yZ@T-h(_rJ&hOAXl9s4{^G=Spg|6O!gK5HfW$7KlbM|&4<>(Qhd**NaF4627_o?CQu(32gMZW<%Ic}Y_45gN%Q-!p;(bkjJIPE5 zQg~R#9tETTqURK);FR9;%7Toqi$@X#a*gZ|i(eIk02+b=s19;rqaBHSIZ1qBhJuEH z{CJ&T57VbJj6LT$@ z*~Z9=-JXOZt}6!9)#2nH|GY-93YxGTKo($!>F53ZRgIzQcxpBArRj zheJd23ToXmeAQ#c%A@)Cd=W!aVsX}K z1=FzC;odoXl7}}oxR)#qO}g(UQMCX13OYOSxnYTn&JF$^C=Q0Y@)<6LFG!Y^q5b;4 z)5t<2xW;sf8v8`zZHNqK3SfqIvE=1utl6IyNkAWzx@&5v9?f;AiyiKm988<$y zwJpySYY$wE{d&INn{|7RdOh2$JD4Hb7A=;(g}s4A%#=D8ChYFPiJQdg%uzfpQvHPx^zk)c=`F|WPvVx zjZ=$rg0Yey&gKY6ktHR;+-Lx<{aCoT+O0O&;NM5}@NqzmF4Y7Uw6M_R1R)?<>oj0{ z!x30iWzo~4(|cQ@h3aCLrT22tuwcDe)P*ba^2}q46Ew!Kb#YQnW9`jy#i=<8JBe+i zZ}jL>Bu`6{GYjM~v3~~WweIo1TW+p4jqgz9@fVQL#L4mH$~_vwcjxe@jo>)c@~3R; zffz;re_EuU007`}B1T<~46Q$%48_p}{NB3|A`SmBgO9}paAr?8s{>9l9vJsI8x6fH zUL2rnos+>7$NmU$`k)Xk8vbKTS^V=tzlOX-{Ci-xuFrCt19p9&OzNCjVCWZt!8Kb4_G^RthS>yK8uupHtc3C`7H zuGY|y+Xw=Jd_wf`{eA}9FGAba1f~7Kb2xe=SA}O!g2u+u^c!dk`@J`P1rIsE65zx* z8FdNd>Xrief|3y6q9m1)mL=I2*A@yfa@(^C2C(MQBLNBx{=r5FmrO2Sq8f!4zlc+T zkY|a8SY+ZUC)iE3zt}q56AzZn16}d0RTohD*CigDNiwyEl1pmlj({xow^WfD);IsP z7#0YwsTdFo7AqV5*eAJA|9$dt@H)(fzwX0l(`lEsMgv)nQ+S<+atApOI$7@SRFSQ6 zfI)_Z5F;#RvTo(?i?9cS?mwI6DaqhpteZ1AQ`uXgF|xKWG4<&z(HE!5aO{#1oY#XV zD@WQw?w=o*=Ms}lN;T9shy`Tr((!uXWlVdMLRX!JdfL&#(nN6=AvT+Hy2ZLj%gsA8 z#&$8Tz|T0AdRUsXNA%vKl8T2DT(6>{H^G% z`j|<+Kj6$0RtBU#O3<31lK^M(eF512p*HLSuZb|kkO5G_7;~3nGxm3w?StZD;oyMR zo3e3tS%KhZzR^I&=~&s?ec1LSjqlJ= zGbTE^PHmI=ugrUX$_OGR-YuOszM$9XP|=fi?9sYPJEirUk8RI6x^=lzzisyOx+DXB zdmGUKh+Y&gq*Z0Y4o~ML-XdiPTRHqw;ROL9c~jl?g|@{bK(L!wqfOJFa6Qq$x%|22Kf9*zTM%1!z(O!0ja7i*9X-^x~6E+HIU? zDEl}%ThJ#wyz22Q=qB=eJO`I!W3y})@-zCPM9cf@S=ad^%qGZ)L5Ywugck>K-tZTB zT9h*G!w zsOu((ozok6nH*Z>BTtwOEu-xg!odgHuM-avXgcOc7vVu4> zG8fgP9~IVA01^+*Do@sGDh2^!Y)A#!ovnEaf|0;k6T8osA+JjH4AQLR(994;}X?ieQ%di zVB4xH?!3P#;5nL*&k+wL`nO+OK9 z0JLu0T?YMMW;7W31OuK*XUyhfyW{}JR5e*EVLwi2j(ZFC=cpn!1pR94fk74=*0eD2 zM(hCKzR7I9;Ho~8KlJ(0&21kc7)S~m2S*HG$k{1`0bMUeZz>zen30JB$$z6Y?-qbS zhKX<%6~-!*R%uLX=`^T>EdC-t&x|M*6>If|zYA!iKYuQ}AQLSm+;%Wqm>QBR-D|eL z-&wopE2CCB)<_VL(C$m4#DE~_>qmq{nNLO|9V3tW0=#%et_D_v`$W0wVUKYGGW@oop9ND|Nye)b(be1c|$2%V)K6+jzG}R|2GLq8%@AjpZ?vEjK z-9Mg)E^c>UH|RA~TlW!|4>Z&d+11jGdpt~jk2Wytz^7qyU{7jM7Om|wWOboA;q=}! z;GBA5&dv!ESk2Bu%q!o@N7ru)8k5uShg0*CYXmA9y2nQmkItZ-f30%g4FNefF#2A{ z@GJSAfA?rc{~wypF-Vp+*w$mu9@~3t+qP}b9^1BU+qP}nwr$Uyd(QbHBl>4YMMZbL zl`B_1>r=VeDP;QQ7*~1tj`^tsh5y2r3Vvmpw3LmvIqU-BMt-eMS{73-D{S|s1$%k> z4s5YgPMRLNaG! z1lNVT9>z#<7YLgMzuR40Vu%hXy+U`Tsl&FUNV$z$j0GKsEMJ94Ah8V;yE4kf zTjDsWcse**kT1KKTOhd9LL`x}m_okBJ=Ds=g>mI;aDOtTe*vz@X&!Me=5!XP%U(Yy z9UcIWub1yz?k^%i9|A|1?;^2%P`+q*kzAbt2qa8vj54Kw?cyz2cw@E~AsXQq8Xi($ zB-O))NcT0Ls|W@p&=o)ySd0HFb0 z>cyxBj8E+i;<*pb4>NSQ+IcGDvq0SOj|JDG)9w5$`%xVUU3rX4T2syYK=+;vE~nb% zT1bG+<+`qQd8cNTwLxs%H}3l({{q@$`ueriV+)6H>nxiY7o2W2MF7$gmSsl~QWmi% zw!OJmtB;)})t77$C^rut%zqV~tq5$Pv%0FQTQ6^ym;%?+=3=TQ~>Ji)5TTcw{HZc;=^gl*R z^{v`EK9EU6*SM;)j8Z}@mr}c0AjcIq`NeETQF4ca5qWu zHVCB~8mg0Z$L5ccU3iV+_iko2a-Y4di>B|Ys8en)=1r2@8j}=u{yAfQ|7ilgsONG{Ss8V!H%A)&%BE`uG<*QZFOt)_}jhAsy{99n8Q!g-Ju7ThR1vpiS;7_QKw87OILbTl(F)7RHGH;3v4$LfeR-nxsDasNk6I$_Eb z3qOjtgvhoGV74p94+DgkPNYmyED;yS@|w;9Pa%eYkZv=tw~kL%T5lBQD;_U%MjD}$ zA~9yoEMA?Sw>cCM@$1O%c@e$y`Cdoq`8=QI>i+#AjUA^WF_jh&yrtW(Wt5 zm@7Y=^i~#yF#l=wrJe*mHt?#788RuwGhT3;1XeI09%E*lS#!6@FN>CSOWWlUQH0$- zbh1hs***Z&|9?tk0?3X#n&h8W+4(pXt$AJoN}op-=Z#hu`w!ni$BuH$Y6Z6@%i~=I z=lLt4y6ASlv(`iwl&UTK+{B}xcc1I_sYlL z&a0Kmjp3&n;b>}mG107#xE+F^;gDy)LLSXlNOVg6pC-)zc#vQ*d6uJ8)$o%jy4)N51z);4*t00eCsA?bpde+_xua(nYiAr?zOKCBn>RgeUHcr?=q> zL1e!B$cv3~ox&rD+1`%(R27wj$XQ|GiINzI_id3wv=H`BkskrVuH=1PY?=6gM*9#Z?smr zgTzY^i1SO)t6)|nPW+rzkm@*ZeLmE{Y_t}lTK_Qqh~2mU-5h8lH*Ff9kg`FPryM3B z)i$F_Pjh1Jg0U3MPkABsmN+v`&1(L73e6|NcqKG!{8@6UBAl^ayw4z%5Ft4wbr3CM z+QS@k=yAl518Im`43jCW$CABJrmNPT%y<7quC6su~Y z;JkCOtl-bP&JCKsuJFuG7$4=sq9eZL^XR4jzKg<$ZwNAq3S5YKpqT&C zNFz}f1NcCNd6|BWSYa$do`r;^YFWEWZpmN*%x-lY{34eFZ~CowvD#fDPV@7vP~BEU zxrCa0=qeG0+(yeeBc6L5&3jowTr-A55l-@G8mdrO$8htx!NAbBj$?!N`+)wpI);Jf z9;METv2ZB!j_e(8VXF&`Av1|+o4*QvAwT2H4!7Dxj5H- zl!Z`?ks2L%>^#I&6%n&` zsd<~V+p2rNQED&Tw4>y3G`XKE)tLWoXf++3y8O8Qc*#!7$Q0jk(P6}}U`&&=__UMq zcwAtX+?Ng1{dL2b!&Vl;B&sa1yB{a6DS*VUY2Qt#bekms)*p{b2Jke-z=Ks7MIb4` zUds<6iUs$DOakJ@|LZeZG4&87g2lk0T$Bu|ukL2j4e?neTcwwQUZorhXG@XGeF|*~ z=danT%2>KyN!tHvo&?Dk8x+Zm{%33*tZKa|L=keL&^*t`$Xq#*wIdc|Ubed4v78KF zr6W-@3h}sgU5%R57e$%Et;x2jyS=_s0i%YBhS~eYLDgrshDVLu>ao8#`1;5YM@o=m zgYlP&e>ee_tjDBKVP>=;WjaaUjFi5WbI77aX)2oWidv#HFpx44Yv>KqaK3^(#rQOn z2wT0wOnh0`J=yI+PkY0%t3H%-uR1u)iAF{=4ZT!!ckLId@ zcgiBN%9HwIP+-7L8<(BuJNg(QAjUviJQr8qd9ed7qgWgvkItj6FZ2Wh4pFp|Ja4Eg zKnTu4J-`1du95FB9~gW-nbqQVqy~U`C{^5c7Crq9Qvycm8)iW`C6%hNW@(o@T_H-!mR+spVeeWeXbu8oYt+v}~wI~^b1(fVn^2eoE(h-bWOtIO(y-0aWTYgx%* zas;OAu{%ujydbw0;wS#d4&@v}>`!u~@rD(Dp(Xa#FA5jo7#98tp zwxF{8cvg*m=SgTy6uKn%1fr5+QRNFIlrRwn%HOMBFZ3&b`sGqDg32KXxB}ex%F)J> zruDP@PN8{a6$fRaOergVQw3Swm=1?7l>#3tM39j9dq_w~AnyB;X-=lI3{_Ls*3_FF z{b-L=k`)*9%!@!cV=YV?Rn!p;|GG3{uniZ()B9bc2f z=4M0jlkgUvg7%k|Gio*44u_v;(?5Cn`PczQeP?7rWYu)?*-%LO^cHfrA53GOnyO9? zb8)|SXel964gE&kJDF~Bb|v*V;}@1IJR~8j76UEo+KVP7PAjnqk9FfERM}rXrH)dB z;ZF!{vZz{8e2kZM%&{r7Jp*(`)hmV{>NsVl^jCMhN+Q*fPxv`SM+dqTRbZd0Tln&7 zF)kurl7JV1>4fr7zo)YZ9SCfr4tOaO`~OG>O**OTXG`a_f7C1BKmuI0ezC-~?~V*u zG~hs`PQtvm;N6MtvsmGM`eAvXf%om--%JZ(LimHz(Y(O}IiP)gfqXbz?h|x8De)1& zUb|(Yq_02pGEU0s3o@%dkN~L&M8#x1C)2tItgrKESqH=j4on!?c+@%Ju}&5pFcpN1 z1>0O;$c$i&>ku~rszKsk>Z~!ILZU+aPobBB*2jo?71dFPnKL7$4pDeiGR=I?)<{nC z8d^kCVY0jycLpG@P&wO8*dQn~+KLwwlwZ3XnX!I+hQ_?TE*Yw(>BTK%b&PPo?+`C} zzMK7~!I=c1iH4&TZDDk|{Fqd1%YTl#sLb#b9Ua_b=@Ldn{zBa8Q`S50dRh4!Ffily<6rl;MIPA^G%IW?v%;%OP;KxnOv5`;-Gzp$m zs0^$_Ngxt|*wH2yCisVk&lR^x_Z(?NWk9AHk%Fu*iX!RE)P>*2BPts1ULZf%I3PptKCiF%^3C20`^(>7_Wvz4O zkPHgb@<8z+&BgCkn(5+(zC8alF&HF!-AXO546N+!;}?8>c&l5Vf`hQ4pRGY9xYuw- z-a9J*!ghC%myGZ@+);#=3hb_=;NC}CYblM*#-os~uhqxE==IoqT_7g;yRd-ZK8Lak zKYJWgTizC=2EUgr?7refD^_IM-iKVz(p-y?(|bG-6atKg`TO_fpwMU2A$b|J38cgJ~SRWtpH$2 zw#L+@piCpzYddRs+t&qAUftHHJxp55`YGt$`DH~Dhq#FofLcR2J|<_jBlv>QzIy<0 zI#{Tw+h&%z2u_~s?U!ekXKS`1i=h5(J>_jy4dGp;2|d#7~1lzyE@TA**D9StoaCL~>X*(2{qI+t9Hw*;E3m z2GD$e^182&NE1-t5`;^xSU4-gOLYEWyN@u+ptOd6x)Uuny}1Nx`2SOSqEvjT;H)an zM+4TDHq2m6P%u+QNQiwVp`c<)~C47&IeCS zsZSGiepH7|o&fPO95zmjOB#<)B`U{E%nD+(_Np`wXAWQHb=??F?K*Fz9t7^w*c`7K zojpy1O!R-{BN?N_E~5nLe@wib{#|F?W3swr zT?Ydr!xXqD1l0Gr7p7A6x#G7@frP4F{mc>=_g;AWFLofd2Lve=1LS)40Q~g5Uarn7A*Z9K;d7XkPbO3d@%5hziFnlU? z_TEqiXmWdC=epCbFp4XQ-QwOACTD&pN_GI8$ z+G>>+N>iaSRkN2@n!VVnSrzA-qN{Dw)I@g~s7`?gxVYaLVAlQlU+-8pWV^Xr{e=XQ zsH?}*_*^U756!5i1)LS5Jgz`yw*h47Mn2>A z+}8gfDs{BJyM(uA%dfz*^D=t8J8}rLGeZ9WVeT%kKT$Cw!7}`TwW4{X2nuT+RoKVR$4mf6ap)C4r753Xa82CMn z!cJ4mCGJmo`0!?Xj8l%6pk4ydOI8YyK-VKR4BNj7oS#u#EjP7HD^I|cK8HT2FiT3>sVy&pALe`?64Ox5j$wD}}~PX*NRX>q1) zMyYBu9S>LEjdH1m7hBYM*wev6G&x!UzKyMS89ybIz04W9%txi=pZB4^>}`uZi9BlJ zanE9JoCHu;c8Tg!;!1JF*Mg`sWU+-=j+-%-alII5pcds84Vq%8c~Ta!oUXC}4F~e+ zxJ!jSo+1N|*(zb-k1}9D0K3(yM!X&?GiUu};gonVY0G-3QsyQ%Sg&*&=I?oS06g#W zrs?JRgTo=z2>1GkLr=UWAzH7O{M_y0uwgQbx3^yCjX{uw;lkNk4TL3Oq@FREL8*Q>VPnfGn!XpKk}S zj-M-bWr>(}Al1omk~|F*Al8fRD-4$IYi!xWlQE-!lH=;-xU0eH<~w%232eZE=S{@p z#>>=iSOfyG&xpR(4@?oHiS5F^7?6Dc_p$HMT-&Rn{;NT65#>D5qgWd2JKyiPiFKdQ;)x%2B?lfC`md0WFPqc)I0aa_Cu*GG9QccJOcq1Ni zq^8mId$Rf$#i{agd*k^^h%}Tzt@@sYQE#paOoATug>RVg;>&lS-#_RqR=aC zefeIW-J!f8phHXLds16eoYp2z5`&pg^~b$O#%3LO&I9^2qjXD5@u|WUJV)$o+~LqY ztXTH3`#!gB1=SR9T!udGEWUT8Ir%18-S1EdWx_D-7bvlD&VMXdUl38hoT!YSK-Dt})R5>e`ALIPnF%2% zfnGd(ESN7&X8#Kcai4%(d^U+X$n$L|ygMt)^H>eu&l#E)TenY3kn#l8)l{-JZ1y$N zlAAQ~-3+|Z&>!NTf83K+&{K{1{4#Kl>}`a2gQ< zxL$OGHKe7ey*Yg&!xiBd>)I7X7kp}(neO<l<4@BDR$yW?Kv)JFEq z-=9x}m+zL38tNCBeTzi_^1w$jqiTFAXyh!D#P!*dB~=gmJv1PZTYc_(?#IEG0vEOo zDB?+;LvD)2EF3f%a~}&j9nZ{~uihp4!JVI2!;pwSUkl4b5HvF9OQRi(<0sa5=&p6G!pKn^g z5J`Dn3Tkv+g}R>iWyhNXc2;xL)b;sQP4=A>7xbu9m&Yq^icL-*kJQ>mfq2R!R>Cah zxOW68>?$_4*XM zF%M{XoAPii;q!TtfcH93uvGr?GL~fh)i6ej#^Y(nMl$n*tV&R9w5v&ehA@(v`L}EZ z{cKG2-w?445Qj32XnbO*4J@Pb-}|AwCC*#ez*$p!YieC>=lb<3MCa# z{pyumvw#iF_~I&Qwi^CZSPJF%LYyK$s&KMCd4D&vGenPNDjF(*oNPRwoqyFICq1uv zCh=0%gFn`vHNH++;S@;K3}?lzSG=PSl;yb2->#!m+n1Xt82g_bNfFVTsO;ZPvDwCf zUr#pNFf~~<1m_X-p;7A#)@MpE+8!K$4qR94xF>OWGb@Q}f~0}eW9}R62*OLi?(?fe zvPOdwgC37AFM`~3i_SnEa+yiS{@x7&Q~j*j!P+_Pw!JQ2%;(jtCa1e5sJrzP91FL+ zu-?UYUCc6Nf4-d0sc7a`w(8V-T(V;#8cU&T@pyW&SO@B~&$okgfep$N@AAqlKOv?e_*?!-qxe0{%s@`N8 zKNi9NUv=LfRAe1!OyYt~(^aS;1PLBs!jmfL+98?_V74`@yZjH!49~3Rt4F>=ohRp& zmsI5eQxr4a2Z!C+ThtY8lF#SJS_pBuiuM~?eUSF~lBzqho*}}ITMimTStzJlrZz3E z4Kn?Z4{@3#MXUT-rW}6AB+zTZ;o+{$S0DId`{{Yb_=*uvByexZr?u#JJe=7gHQkR< zH8>168t0zdZB)_NX9Ro|txLn^t;;Eu+>iYIYLT{Qk4$PZ(OuCKu2@Va%~#ittEv0C zO>6Ath=wWL+phk-(thc}XTcPkL3t~r8vjI)+Du~9m_jx4!0TTnIfhv!SYGl&Cy8Mq z;n<85q;i*LTe|+s z%gfKt&$ES+U)jG(r3%ml4_SjzPogIpCXfxnlt)fWiZb85C|P0D;R$D;74!rEHi;j@*ermT`W`zz? z;iGUv7hHgS@Mt0MYCY&t(`Wb(Wnty-JpOd2Yq@1j1J_dpgBMg&;`~`iNWDy|k)I~X z%4uEo1TL)}?mKoBxwTYkXPM7+0@h6Yl5K9&9 zST8N;dVyRiu%{)TVDp*zR=e`XSl8t=@c8o&3W{egDj8G4)Rd&gXXKw*_xc{D!^RPcV*mnNKpqw)}axX(K8W`|9K{L3j zkV`7M6bQZzIH90z(wV@8dt@^iL}dNxlf`-}%LW{z;d(Q^YkI)S83zY6DBk-l>bamw zE#LoDZ?rnT`?RDaYd2j559~uMRW_8RKK8Qqm&|#JBy~tga>oSi7iddPlQz$yMH@i| zoVUzq%(1d+Qq4j&&0?EB8poWCWJ_kBcrI=dEUKH;-H&}0)LR)S$kQ(Rit2E=Lv{aO zPLGRCt?KSEzo)WD*6!O6b~drv4KnrK&Zv9Iw_;jjzt%6vmHOYdpd9bflL1^U8{;&u znGXkMvp^gk;`!9g&q4Klxf<|}uDq(_PVR-6DY``0iiR=3XPX@1jN*rCa<$|9#-7`K zBqVx}nB7b9U*+fiZFRzJ79l_!?eDUSeWDDfvh}y=5OL)? zd%RTA9K2f=M-n;{jY2vIzXB25GiBV4lJwL{M#&Ob1x=2zqt0-uNaaisZ1M)E{+80( zXW1MUVtk47L=fRR8%TRE!!Lh<+wl}0t0UD;%J=WG_wRuK+(*x=U%2+DS>_ps>>8&h zR5-$9JAPXF7e~3a$~-B)_Sx1?gv2a{*M2;%@Hno-Vl9UyJtdh|T1HBM5bXUVAgAj% ziIwIuM*?@Y)>$zB!i;sCv^sP=jPhqU>H7S{IE#_%B^ceGsb2DLq;D*M>7iQ*9wP=( z`}1EA;()XBD4T7R9L}UO-Jg{Gjr5-j=4kj45;`PBGG)1H^lzswh*3Z2LzJGgloEBRovO2q802g9TM#sswQO2B2rdGPuhl0` z!zLOQoAZ2^fHN#s8f$|f#OMv*BMPHB>cC$KM#eF-CZNx)^oT95<968vTz{=!Wgt07 z+E(TT>m*M{5!%TK*7^cS?BB9UxO0mWv9DFjZz;r zILlS1TBK{n->);xZDIUP+OEc{-?LMB6o9_}Z(KD*RXf>`L+%lmSBUSmqS0si&~v3mversr=uH$S!>56T0E#2M~}cO0kT9V;|%Y^|EPRwhaWm$oMomv*ZZUw{E%OyKNiX=4w+hi%svo*HG|{N9 z!?d>8ruG>(mqAZVtjHozMJqLRk!eibnV}~-I&1sp&)%rR0U>p!NKdhXjSo=0fox zJM}`L;_47)zHkItI_ZfrB0IW>97&!yk7SAy*35?r$sl)=2ERYWv86V8)oB`bDD_>= zg;n^8_z-tJ*{@b`dvd?qU6=W`8%`G=`_Fg>U59I)6I}aWtn{q|aD0U^oyt#4;Y$jJ|;v5QGDPzt( zz-H62?a6bX6TchJTftdSw)kqNxeoa>ut*@RQy7N3`F_*UIJypC8G+kJlxEQQnurW8XFYegZ=M48jsS3ac{eOL^8XVL@zwNJ zso-l4QD5hW>w17As$@xfM1LQ#UQgLGHQsv*Q#amIo&96$t^tOB*S1S6K{@wUY(*%V zP_J<`?HYQuxlcDEBYrP!%KEa1Mqt0`|$+4N`_pUprzmIK8DL)$n~Yy^<$Sc=niSj z=)m0L($PT3IQXB$e=nkt26~|$v(gLRHq%uC2+uZi1PN$hINyxj8<}FN#DW*nMWT_*(JY8o%uKJEi{N-FHOhWN2=vau{ zegPg*z=5tJa$0TJc@2o(p3(uYh`!6@@%eFq)0BS6xFCs?;*uNgcxH+l0fC@uFw@sqYk|#3QOP|Sh?rUHHjw_(-M?nc68;~c}_SYoa;+YvT%{BQS zt7#p0yjJV|B7Hyi^DO>Y-xI{NZ6BwW{lzaujR95EI1WFE zmAGS0cn|Mwb2mQDR&0%JCYOH^|50C8RQI@O*+3>QzU`Uy0#7MCRr7NpJ0a|KL6EEE z#)7uLnrE7+Alt~7ifcmuyk8A%uD0gB)_RvfM#5O@aCDeVXE1%UE38pk78HmPgtK-T;Oq~Jp^W;iG4U9Nf3Z6nDis5n8W5!MtP`f?W&FhX(^o~)w!T(}rNilbp(`6W+C@Mq zNPUu505uu=Ztd4n{)z>(!D6536U@AL{i%AcvBzAiP31#s}+93RzifYw?uv>h3+(JLzWAqFR;@peOGq`X-aP*x7uIcn8YL#a znM^pJgpQ$mOFd58BZfYB1iva2Ou*jp6g2 zPgn|_vSL?qPj%7jw4>+n!rp=@uhv>cGJJWw(K@q88syXez_q8Yc+;_BlWHf-RKAt$ z43*kT0250788-5OIQQdU+spzzs&=8@u@$q8s@bOO&l@4W_2;(+ke^K4k}&kKh0*%vj86s73fPniFTT#j4GPwjj`wmlPu9TV zBk_ACbBrjanyv8TR_D8V#5(C~XgbBgCA6Ko#-A1>47KZi$_T=maYD$&Wzb^-`_In! z+ws}a5a-OiujhQ3zf@|*o79?QSs%t}22N3TB#kVsPp$Z9R)ml!dLMMeOKXy)R}$Q} zC`94?NR*c!6X1xC*QA!9w2c@3yxsgP7jC{cR0&oiK#*pr15}DY7a0mT85kgysylZp zhvt-y^Zs-bA+!lfalsdu0(ug7>*D5U$icPzm@4VmEtP9lvCh=Nh0>JTs>6OjIEbH@ zAFh5j@Xmj+q<3|HzUL?|6sY3^$$D_C*;uT8Ag%vHHBALaZWMUFq*SHm#f)%XczSzX ztMj?78>pCz%o&4Z8_>ZOS|vyIO~%qmz>EHD&6JpY%?uxl3ruA*5rKH6C@QF51Vf<* ztS2(e>|{YoMlW%5Gi5OctgmftCG+V4*|kYtZlRz}v$4wF0nNG*MjPs&F?eczD!M`z z^n2DDJUKod9vR6~CN!XXFbpqrJP$?3o`RjbP5K?8x^aa#4I1t8MbzBQmr2+q`qo#v zW{agS0%4WmOLS%%*_Xp2m(?s*C@$Hz!H7cjeBVB@;%@!iUz|KZfeS1gEn9pVTSTt< z)iE3u|LHj2D`h}I0Liyc^#Z`*t;N~pnjZ|dyGY36po%De8@qJNWc}gTMgA_2z=3sik5+3L4%H+i~9Ng^?ZeL?lTvQ+iK&o3942aAV@QLNP8Z>tzH_%2d3GQCK(`3lX@`y z{_(-|-pP1r*<%V28dxQ&@3j-*A3i&)Ee0pRa9QcK=t8pRv8}>piM0x`-vqOZ6U={k z(M`=D@cTf=Y;Iu1Xv!qOXM)xbgqm^)#OS+?jfWke|8M$vi>g;t(*&~)q;RO}N*zf1 z8p$Mlfb@;jMx^c-@|mxnJSJhF65J$Ei)m)=$DV(_*BY#w2C501VjB$3p?=iSIIG2T zwR&6BeYs-6Xz5SAiS*8~fbosm0FaY+%pFFN87XkA_?V+XQqcR?I~iRLmS*I0*W_*Q z=2oM(`tf*R$L`3k+cRo7Ced2{GNkl(_anY;1z#-F$yK&V`4}QK5Fp~CI}rWdgE7LvqSlSdvXM|I z9JL#SGAS*Ol!q_^HN7n^G&D3HH@wP+a=CPyOv~uGoStA4xBh(Ad@5E=>s>r$ib3dk zYerTy+;nSMm}wqr!(d%4GIiB!D>7w;d>7y_u{jZ;U=LZfp{8ME8fk3Y6Fvzk>6ig2 zS}!~j5>kD$6m^z@={-kNU95(^IHmzaB40ugf*){|R=A);B8+-5FKxkJ#DJMH^FVxY zNRY|EI7D(@$SeYS5L56^`y!ZQLFI)vp9fM^@7H!5$V+}r4f6fFJ`*xU@YOlEU%l@# zro5rry;r$`r{;vz!!v=94V@1_CM|OR=Kdh|Pp?Gb2uqaUG$uE|C!?br*!Y z;ci0EdePq4U3gvUJgFaHc3_^REOx~i#C@rN1XbgoYSzH+@tOQhKzg^P??p9PawrS^ zi1TKaBJw$Z!<_)EY%K6+t8hRW%%#Umw`|8=X>RF@Hd#21B`55v<+`rRq+d7Co?nC) zK=yqW15isAPS1lSJ(Ol@kf@t{sX7|1aHllvjJAKRmCLsFD-EmfC_Gos<9geWs}*lW zL@aLP769h5{z|O^njVgv9B`|^fTndw0Q%tnDumDZplVvnh|k0yjnP4>dKkq1L!>#g z-22$RG4JPFIW7+;hR)z(%Ol1WA^}Ak(aRtE??o_IaS1y z*lHUB!W*>!D}U(sigNF6z0QVdmi}#09|w=w0;Ftgcw<#T2!k8>S<>RtC|}Qb7EV;- zAt8LLy@UZa;VUgvfyR$$xhpUCJW-dK>3HRPUOJVH3$9S!DkyEOSP=`VUiWM>zO8+j zjF3`Vb*sHi4=o~uw07QSJn$2zeS24a-Nng;PTNOFWd!TVkUumPOl= zL09=xQc|MP>QpX$qM9WWuP2t$B(2AyI&^hH){rjNK7IaSN8Vut4JPcq3-s7-*vG0d z#ma0GIc|CT-BS;e*HH^XUK6WWJjD>d|r7oey}t8#a6J2BtBfOW{gS2?gHVe!QlTrKJkj+zd?~W;Z?+btKXF^nlS4RK&u;Js0QE1TYJXcT= zk#f8ly;&A}qGX1YOjI@TB%?MwJxEb}Uj6P?ILNZ#b?{bCA>Hd=rh6HR>d3&(#r;d! z5gP^1QR#8B`D~5(f}b~4$M0d9aY}U0U4B(k*a-`HYK&*Ex;1lSRTKMVQBUTK;eC7&OaeU@TCgvkJ~YcE9{3RcW7f*fC}iymhC4R znIi-*lY5%!=;(mu_9AqrA|{wXO3p{S2^b8URZQEjAgQdpSHiNRU+y+?w$5m~)w&J! zkwBNUXf3q9izO_CNzk9rloyj`bPC~Sn{6f5OQfJC597MGJN_gj)$q_g&yL+EoQ$Lb zt4V54xYSlbt9hH41Y2o|f&am#dud?GAZ`fPFa!kG2e!gDYg7)81RJF&3O$beb@iwK z>l^#!5$QmyLum5b7oqZmG5)TY@ROItqtEa65|xLX7Uo7|+=X=8K2ch?`t*JpY9etW8>+be$yJL@tOM-2z;MB~Zs1y72L zpI5U0d^CN(vHFe&mqRTls^fTHcyxr(*G@$Pl;rC0gcSo01Sg#S-S3Zet#4r`%X96a z23X96ZuHY&CinLvpwTpW?{Pzwl3hkVeaj-CE=K>5eztlIz-j4^`8 z$z@MfJ-b|xq3c0V@sU7sO?C$-7uO95jN|`alyYxScY%NEy*hlhCbse_;wflJI&>?X zRm^@Z7(QIA2glPb%+bP@np)D!nqLI!^)DA6@=ttkQ9W@eeLQz7yu>FGKltYl( z=53z!n~yb1OT%y_U3Gk3ZFV=>3Mez(<2ZBa-l#WzfK|wjuaCv*{E|LYz6XWgY_%F z=>f&Hq4@fi&w~LpKi~}RONvtj`_lIJx0w!i?&lPgfCL@)`t#&*f#RGriPe58R9W4V z=pK@~Kd9evlS25zj{DbvYtJ-`z!m`whAy`*UW0WKJfndYewfPSR=cFDBcTQ)B8_VS z*mrU(&bGJ#c1cbQBDr{}S6V$;q@8jD08giXn|Z5`V%;tL1Q<(Nlx;+@YDc@$fsD{wA9hungr2O3mpOQ*-{zb_}gH;uNR9Zq} ztuJdvjTKXeA>uR&L2vp0A=3RIXMHo66t&R_r`54-(&%gtcTTorgr$nk2#!Siex3o6 zEMeS=MC0u-bWyTu3s{RIax@O=NWsS9$}b}fB{`qaN~UsP`}wp5D7^@AAMn#>h{t}R3v&| zEV{H-X8&L{yA%izcox{J-_zJ=#1`X8_^^bbtE?uxevo|7 z*=ViJnRspW$q6K%Nd4N=^O^9+mxPLfYnaMLh7hv$=^C&f+$Y1PvOQ_JjtpqP7y&oVl*3st$QWZ+VP)&1IR26Da<#bU5 z0v=ivusjI*=S#H+&&dTf*#|qJVOn#2E^3c`!aPtyhE^w=NgaK((lewS_;Z{?;VhdO zcHu4>l(0>Q)DO}u*EZ5H@76jDRn;pGgWYquPJnGlV?0v;sO~EJJOAgr*vfHj`Pj{h zUR~kb4;jE1fD@$(1GU~{|8%}poS=!U4XB#ZX7j^VfTk9SsCnW9p|vroRb|6 zA?p0BwgYiylj5gR)5}10eTe1>U17~$3CL$_n9e!g%z*}d+|T1xYB}m`t5ulmVDjzc zAr`R$pcMnzB3}<8h#WN#lw+y|f9RCcO1_9zSN8i~Kl}gxJRJtIKs{GcFEV~}9Qw)s zcPHHwbF#Nm&{I%4@g)1@u@v{?Dr0f9Z{q}V-dB@y<#%+|e zO)Lb<>t(-IX4AZc!!GbFFT7h{^63ImJfA#GN94A#N{uGf3 z{DsyKMmMk**D(WonKR4p3=)#7Ud$&#ctHYakMot>t*orX=CMz$_A}U1Lg99`Ki7=8 z@_3r!>!zAR3{Z4@aE#`&S1PwYCxhqn#X;cf9d}gfnpTeCl<{*f1mr56J3k7t{c04i z89$^(&`@-bD#_*s?2G7l__w*qr4pff0fIKTU)p^MJPJIeSQ@eg>{bcL0a?ZgO~>~} zAbG5YI4b>lJcif0p5|&slkK755c$?kpwilL&Pml|0_3D-@)CBp#NeIP^AXoSan!{e z)Y;DjyaV71*WE_6JL0Q2M-2wH*(tYWs_skv)xxVb8MeCIw+DHa7wmL5_8J|MGJ-J5 zhb%Gh*5{H(a|yI3Adlh9?-NoEEr`Ap+~O~g%1-0ixtkTZMF9nhrI8s@EGJ(oDqqQW zg5*TkP*-tm^;!!jwy+}j zrt8$wjkHBsC$XQqZEyi=1iCJU3)S3vW8b@8zbstk>NvtdiZPt_n2W2tlh6GZy{H@x z^2kl;qrWA>TcN{CAs2=Hl^onc8WsOL%2@2XK42ToEY*sCjlr4dG~4a9ltAoKCfc`wUC!OB|V0BI~|d5p<-4JP1kdh`RnCc zTq27^{z)las31b)%4*$(zv;PHWnO3yX*{aH5#c1YrzEgN7#L}ut1d%e1jF%#f zzt*#ry4o$48W}4sKo`%EW~r9lvLt4RMr81+6mDJ0CVbDGaD|P#*@5s%RW)^@DxJ{d z6sgM3^%Zo_ck$57Cg;-~t*qzK2htcowb|a|K(W<4Vx{@*l%px?x2C@v5I zV%TQ;uSxcpp1sfzNeiBN!Ku}qF$i2<{E>yK%A9a&r44%b%jeNEA~|KK_adqxu%px3 zq4T#4k7WCQj0jeZe|{f@kBlM+YhGH&G4T9oFKxxYYFhgE2=+WdC}*f=^&YM0?Dl`@ z6Z;}y}SXI}L0bn~aeSKtGs99hdhKp{bS)v+VgWCXF#N5{uE8bmIl<-BFZ)xPYe4IkK!+)3; zdtVSTa8)(5hzy6W&*2!_2RbH5xmIRW>~*_K8CWLa-y@HS@z2h8I$Q`>805Um4VC=4 zg^L@JQxv1C{yvVI>6g1o#n0QnD`&ymM@sQ_O$4Q5NIi!#A*9dluCdZ#H^N)kMwuQ+ysQg(xg#vu7V z(7o|Ffxac@%J5TNNUH1YI94ywXOHK4oy?f{rc70Vi4+#NdeSTK?_Q0&lvmCAy;<6wOa zy({MX`n<<)JwpotcEBTAhXi;1(hvsu0^ta*yR#{1`!*ecew^770?hxB;xRM{pKKFY zSQ}<8h*cFDQT3eXn)u37_udS--L^*W)nSj+d&?{EdrmAdMpe(fxylV&5Yv@Yp))7=AGSf5xUPRDK#h@tiGX?>+dmZ-2Z|9h*#IJf zC3SODxfJ@g#f!v~BQo}sSrc%Co6mkP)MY?EYb4J`rH!tRi4yJJ!RS4#k=ox*2fy6d zm@LZPBQv~r6Xg*cy{|vLgJCSx=w&Kb|5>7~Qp-}S!z ze$m+aQAL>%ezR8){sq`&3^yqudE)GfC+ur`D-Ba!BfI}AmT#YhI%W-@cA6z5<4gdL z$3V&Tyf4n%r6ntu;nj2XK|(|I^XY%gVzXI-yNxBVZ{5c3y=6;GD2OR8*RNCrxi+)2jFuYq!8Nbz&3&g3{t z$x#Gw_Ic2@OgsiA0M8}q2Lc1qP16f6JJl)k1IsQcw{xQvV~tTk^3N11}*v#;9#sCd>;K8wRI_{ z$SbizBEfby&472IUmDPr1?H%l(phiBFHyM-8_6SPSjTGP2#^{tl=V6=zd=; zOl&cLKtkL5`5*~<)}dUGJ5|ZAm1}9_i!ujtd~x|Z5x~RuVlq6aFZ0PTuEL@ z+aGzb^>ybs(GFP4ioMD+k!=At4YY~BWkjpD=`94I{jIpo)!<@eU8=Qfvo*h=_F*9P z_irGO~w0s(1;?2Uu==2##3Zs!*2z=OzfI=+fAl=lJOXbzShCi*tWf=)#M%R z<2G0A>qZN56772^)k&>K*!&*265ZjBHDh_MfzbW;?x%ppJRx>gST=FV*&idzWRp_r zNvhz5ig4(I%EpE6nt=xip&XHpAb0lRul6nVO!X_D6ts z$GOTM)Z1G6h=XY zTyi+$AyarGfXt7rt4{H?qX`MlbB#3dHF2nOvZN#FBphOj42o3bSJY2hV<)akVpgx? zyKmj^@Vt&o%(3|Rl;0xjkxmybtFL*a zn>|+@&|{r~y3p7Z+)j|mgTczYNc8@_3=rjqIp+DJ4u|iOGjkRgtg{L55s@xaPhrST zSXA*bk^Rks_ft#_HhY|)$l#7D^q8VfL zT2*uQeH5=T*7=tJPnzuiVT>*`V1*MCztrf(P*k3~^c;(!*?VTP-$T8a1tw!;+N`$I zv5w!@;4)>jn5Rv?8dNjeQWHY!y~7~8f|5<%apTMhG>c5t?6kUN zD#sY!8=!Ldx}`}3pIYeZ@|*X6a|81Z)6faWIKkC~c_OY15(r_dz>?;aNJ&kZ(YKif z&EgqB_MqT-1Uwf?&vfAU5?wAOdM{)m%>SzB-sHMuW3ZdN-Hxo;?lAqF*7h2uEZqLr zma-A-gIo1a0WCOKj4r9hTbBE2(A;|?I=0sLxwCM7@;<8A@98wC_^!yK(*sB#(ca}B ztoIhWZ~!eb?#q!?Sg6HkNJ&+;rfp8T`$ji4lM1e;a8FgFlyvdVfl70>Bn1eV(T{Mq zEpL$dMJHSBt`+@CoWLYu55@OAvG`v?219Roe+h-hxQ-~_b;aAL@BW5Zulgr@?q+Y@ zfdKbfhl#E2)z6McU7BsK%%UZHyxs;xA1heG)GRSLqE4FPBE+;1OnEkVYM_E%VRe4o z;+HLQCFli|h_Ym|pj7o)U<7sANdRUpW~mi5nMYdb(MZq7Y=5qo!~0}obfj zucfYSDkMtXo0!nJLWQ3!G(6WH7mxd4?q{6G4epH1Tsr%K*Gp+KXnrk97UoCWvRL|) zo(>j36?ISqAsY}{)LXWuK;G8Nft@uUTHEXU3<>N_h%tk*-eEW?bVJ_T>tSp8;v2An z7pTnOaZ$^g3S$sFh({?Zs3E_Qx4obHSh(^FxYRyteP=gWZ_*o4j<5ao))0~%?zMNtdy z@JV_vkyT)*so3&u9Pc zf9>yo#T($;&iz2;m$kbQQ8GGJb#)D?#Z$76R3eVVCG9++>9QRQGG%`#iry*E;t{ea ztY3s4#7saOb+k+}ra}Y3%P2S#wPrDDBVTtkIK6L5Gz=ZSE?r#|TiGQPKjv#a^^bH6 zy*G+n?wjKG&;5u#{ASYnT-Z`J?^mMG*mx7ODU_ikeL=#wT)tU*)H0!_h=?7^Ph6y( zGHQ7d^d_j6vT0aMfB}0ikDab3oKhzF z)cna(jq`%o_L`pu$i}!W8eL!`=JCr*cP!bQq}TY1RLiH>nlm|+1Z#F-;u|H;c~NEV zFPzp`yM*iU_!qR(m4(}`KnA2VxsCBlV=*`!Nb1VcjAibKBvlec3m%(+EcHv&C_KCX zjC^bign&N+233z$|w1zV(`RR5t-{O$Xscn1Ta3`z>&;^og@D3;@(kfx{v3a+@vCTG z;_yjZOzXhbjQ*%JtElB#<$M4`#kyO>>u9|+sS^91dg#pWyspJ*yzXb$xLvrV3ut#kQlkG&mc?cQb3_HQ~ zZ%_W*^#^Q-DNl9}RDU=M>~wd)pyJWU{CeXSP8;X$Y#tk(8D;fBb1OC;ws~VG+vWM^ z!e#n1mdMi0d_ol6d{fPXetmWcgX9M@ZA%+AB-v84B0g$=d*#>g5mAeenTvbuOMLCp z<8x+|Q@b9+ky1%~1eN+{Gp{Oq=#QP`&W<_7a>HGMY9~?&A_#dzg^KWKa&q$Uu*i!I z%ssOx2}JdNXt0E>sQlzth1Wezrr$Y0ilHOL9w`(0O7rV+RMqcUZRYb{Zp!yT>K#a$ z5qC(*00%<``a)FXh?y|{2;$M8n#rDvT4trlB^A40GW|zLdD2j zCkfbqtX8{R5yv@r8|Yhso*gIpFxliyg(6bUu~+q-W9xn}ebnxy`k4DzSdrv0LkO2K zEOq{phe$Z8-L%8By|}Gq=UFR@YyT`~X94mygA0-)q-Rc$6}Qo3qVXs9PJ<%pb>M(s zq~ea-raKvp?_qp1{&oyO z!cE0ZZNk*mZTMN0D$x6*la!lc^87_U4D23wC+G>T*Uj5*DtUI@mab14AG(&Ueh*fF zrw;Ni=mJ|;*A_km`G*p)lASMK8Y+odCN?LK|H;oI9+br`WYPr8ZfY*%sUMc3mlKkQ zuU>KtIN9Do7b$+grD6O@28al0pf*ci_|0hJ* zZ5=RFyepZ=n=o2@Z+n_Vg3mnJE9SS9Z1!pQr|+8g>lcnI%hjh+x+KkJb~>FFcn)9g z*u4f3A3shoh^_m}n9ujLT8DE*djn$aiYa}$EjqzqhK-pkew=c{*!g+G<7eCS7I4ej z^w^u-*N+7Yn3Yob7ba{K@?^G)U(X%bnhOio;ceNQ_VGL#76{yl;%5KicfY!!vz0^_ z^WEhk=PtYbZOo;2B=zqkeqNHhH-EKL@|KeKR|)MX98N3U|_c40{SH;=F206l)y8_ zLxT8wM9n!W1VI!7y?eG;Xy(GXBbC7g?o(3LemYrtI)?X2UJo>-?#jw&Ip4b+zZ-gA2p*utlWaT$Q|)_#Hn@d!dka)&oK13+7g6;lWTge{ywE!3oy^p;JDb zG5;k@dn_CeQ9aQ-f1Ugbqz@Tld)Kvz=F_ibw^f^OP{-6wzmdya@xD_y-ep|_3??-J(U+z@g>pAkd4}3 zmhsqz7iXCpyZcBc-PhmC$XSpVO4CR%fyz<2Z8SvQ=}Az2KkURusTjQwo*jwRH!kDi zvoqEWWZKq75}yQ|P!6U+djdA?o>(=g4UjXbQ_Ev-WqiRQv#gJ8*6AW|(Y&xZ5UJ3A z1uok8<2O^fMl!>b;`3CplKYT`P_%K+_oh?jC@)ERgVF38$)`@-8NbnT@mG7WkQvVjv6VGpHHOF z5)3twkWh!5{BHM#rycN7N%K|3{xK9>hD-O@2#2{}(#^epFBRj&x`EPIDD`m3`t37J z=W<|v|C7U4*TwI(-~GABP?z?{6rJtY0EQCCPguy3B{-Ce59LlIkM+}efoi}NCM?)D z#$0Nen~2l(v`&x_BS}hwr3?!925x_UU-(fU1&gYF#QW?1`E$gst6URYAzQj=t-P)0 z4SObQtgydh@SEYyR_x!XH$ z{iWfWXFXT1&+Eo40twW=3TzZY{huz>(+1ccKaZzt>EXPpD6rm|j^R678y$qRqKJ#d z3Yt}m!1^~1vg}#$tXeE3US)#?9bUgjQU@XBOE;vS&0iBt8}>9O7ya&*^i*8r@< z+8#!FnVJd1?5-Ya%iU@_JJDsueYHo1QQI-^w7JsQZX=ewG)Au5xWl%-7S5HJsaspeXz3}$ZUjO{n9}p1%-CpCuSI-rnmJ%{>!Be#8gQ8lKeKc8- zv_=9Pb41=sOrF=EiU%g^#+A&?d^F4+LtU|Gd9g)olZjWYNWzwAyk3=o+2 zmgBl|x+YS>u{g3SsGtKErFo<5zM!gR)ct@&6;kN@{ZQ-g6jW>G=AAeZfv3cHxXcml zHu=tLn(x~st)qRZ`$|9G)}-g-GS2tHcSp_r2_m-(v~*PchXXxkB1{$2_{)z&A6~UA zzpBOG(G`s&#>Z@c#EADgi+Kf}-m zd#5p+Ao~v>@7nKOR+nQ_1AbOip;STPMZ^tIh+5|_7Epm90Zgnqq`5iSb8NGjdN?BM z9-Fzn>lQ$DaCq4>A@BICnRi0BH|olzs(+xH1q0rV*}hBj<_>5b+VrZ0;eq{c;MofB z4{g|bD6U8p-qc|GgdHm4Z)|OMZsc)}<%ZkL8T+^MPd2M@=r0J1m?T@~19cDa^1n4;kEGIsX6qUKDb7_0;z^lcby-=}q##g|=GE!1`2Bnv;XSdhF`icq zx3kKtjn-_EH`q?TKVrX@-{SC#Zc#~_8tD+4e|&$BU4!!spNT&ZnxB-5e8*wSyp%6@ z$D8OC#7n*S1Yk72j=!sEN0q=idQ|(KYWctwz^hODs_aRcL4dvb6M;z)Gx>=WmPtC- z?8^L>0gVq1ceYAoRm^$*^EdMG548Xp35!EEIXvz9Glx7|?y;@XY!YE! zsUtELI6LPY33L#^r(3bsz{a&%7daKYt7O-H;JeFuo4es~ddcTQwZqNUw3w;qd#m@! zU{?EEH6u5dVnEWjE>9vu2a&m4*WunMpElFZI3Dpnq>-wkVtAJlD-97Bse}VT47yLb zICv}0ze2T!ZH%8ufarmMCgthm%E zjhHfzAuY*LOl&=9eLMI^j;*AF)0Or8&(-+R9u&S$#6sVgM0a3^2j8a{+a9?~;-<$jAE)y`7Scg_6DZYula1i`} z^X~hhkO=nrGRR7&Px5hB*^q=j%m0!`uV`n7m-uYZ945hMMrjSXFirI-2pU=~pi28e z)OUW;vcCq$rkV=e*5C&PQ5!Y4i(q%T&4{F`HDRifoC8Avujhm z^4yx)-ey_Rw$B%J-d?}#V`e&hSlnIqL>>Fie(XLQ7n;*X0~fHK#K0Y^WkLh>i6Y?6 zaIuT&zq()LkMLYewSdk5%Vd4CG5t$_^J@5aa`ViLKCAz_U%Ymf%D2yNyQo%xV_AIsRluO}Ti$cGT5+z7E)=-?4{I1J zm#$`HNkS#7ZXKKG;=aSBvf~8V3}Dp}glPj^zZYUO2o06Ip2z(zu!%+_`Pbma$&8QL zM{G~GpJT&Nb!ZV6G?>j26}>3#8ZU!^AdQr;E`A0n6P^rou!%r;>>q|WE>;gEL0esw z9>qy!0IHf*zsFcJLRe9xu#|d}!=H3DlfPYcbIW*6y^r^gdY)5`Px8%K{8jaRv3z!~ z+h3aZYQA0xpUzMhb8P6?+R}jheiJa4jAam|(g_iMP&x^!IV7@)J!M>DAp0~~bAF03 zQgb9RXZUbsqV-KOC`%Y>ZO9-gbQKbKfeK}6REqv!RkYch@Xg$<#*UAehzQB?WJ!L$ zg`-W^s?{DNI2hNR@kRSZxPcrZYgesWuT27SxPKCwg(x#PoqHZgx4GU;Y|>}1Q;@yb zxm{`?f`kGTWb=v>*dI*%JP>yG0t;ga&vLz`I89;-%VUI`C}%6(=!EFg?_0c3CqlW> z>OW5QU%v0tJ);b}caYaAlmKh3biwMi>H)B)mmgr#`fo;|Kg@jkocg>kAp#pUGKqIw z@JkmG44evzW31Di{WX3(X_H(^ob@{~6R3a*MbzK*h1vJX7&bTNfbEz}c9#Ev*8Sv8 zgfh0(H4g83aT6Qg-yN?*#cmg5FSd<=!IvhP5WE`{;z4Ap&j+RK(xPvh z`Ki(*Z=SpJPQJ_?N5eJDSSm4G&nOzNV%bu-vS_Vr!gY5t9_096G2!4Z{H!+Rv5-QB z>214dM#WOL*2Kh`e-V5MfmKr^3Tz@YN_RPu(9MDCGR$&iwbUoW)WG-ldx3Sl3Na^Y zf<~AYMC7Qcp6O z-L5a#YnF3(xf|?EOyy!hJQ%_&<%f|ZY8}dP$rwQ`N?>Edk2QPM)J`!@<7G+88V=bN z^mDJ+%jZcydPY>#gPK{_o$Jc22n+URLF@ zPVI}o%3mC0x?eoq-fh0_KjYs6d;e`gv~OwT{a6djw!7V?E_9XV*c0d0`ijlvQ|Py@ zI@o;}B+-2&(T97Sw?+z3%AKbE-__*_Eh7_>3~5a6;?nZEt)m~zqk5yzuK=EePt^+E zk`B%SyY{B}3Kz?Ugv){D-#8VJ4dJ)1g!3BmaZ_#!_=krl`8b!p>}9M>M@Om*OB=;x zDbbV5-lG=YW-*+;5|I^Qdz$n+V!c}E56^!=%1I;#(>Q@v+{%-i4&ck8UVtqm$wO_i z3oi{OIGeb>@8;S#mtO92S&^4zS>DxOANeRuo%cefdEm2Oy<2s{rQAQ(fMJnvxOn{z|D!y6|c5)tj)z~$n@+H)+&&}F@M zYRo6BN1>KrsQ@Z^6+XOhWL=4U><$flserUV0xc0DY_jpaWX;Cz=z}L6l&<6pf2^e4 z$m5_Hum2+}SZgvxNq320S@j9~d%~^k^l)mE|2P0C_`T|822!t_d^Gc~;4gQzR7ues zG0+rnjonJYZ?^qiPS`gL^jm1K^MUP%Q@NQi-%=y5wm|L(+Zx{3ad9laZn!ove%iSE zQ-eL#zj9CsK<_8{25yxVf-|D8|Wfl&m%Ts$ZNOscANeM5UZM6 zV}SqV*sc_!w>4cnD-aD2>5M6Q4BQ@~*W|5QWqHky8re%tjb7RCe&Jm%$LX1xBx?-+ zNw?6rXKyt>>3x|=$ipX7TP48j9bskg*ciWayqCr%?MpJd+r5_8>O+s(mrC7R8TBU` zek?ZUNiyRRo8RRiM%Pa!Smy6ox*mk!PTrujr`|rmtz%RTsCBtQsAf+mFi^59mVhuU zrHzY@ujRvA1@LowQ%}JY5=H+3cSO(|aTykA>_bp|(V2(7KAarky=T8RzV>~OeTt2Z zt(34t5aVLaAU{ffMVA^OMG8vc9(sF*`A1S9lMJIM*-k8c9IHyL$Hfu*BLlX#x3f(x zu_Y5@z>g>KpDd(_9+>3mx!XL{yV3ES%NyC8vX$F+1b~-N?D>7P{487gUoD$Cf1eU) znHoo9lp_9d|N2}yLePhONl*~TmW<_Kv(c9<m+U6w_D4a=FIqJRf(Sq{!678RD~2@ly9AU<#!DXOZ0eq#kX7Yzp^IfcIruOM z)ivkH&%Fd|$=n`B+=|vVaxLwt=pOq|-^?^Qxa|U~d977zhocj;Jh5cbL4`B9MMBBP zW;b-zVj$4)A$!%_6Mbd7J>%a8oCjuW_dEs27D74i-U0*~KM_M00>E9d#)No|kW2JJ zvZTTEPY4!*xFi%#Rv3EogZg2Kd76QoAo}#avuZb9Uk?ok_#C44F$#PhoH50;H0E$b z6kg|Are|Aw%#~wx_`G*@oKKFe&Gr9VYVMQQBBV}zy_$)Z>nt~GFFP11*>L0APdWOy zUSn_9@+GnQ)FIwmOJ8}i(jUAgruqS%^^jcyJy|VWJ%nld%+Y<1O>r;dN%3JZY=3w! zrwLiz|HVob;E7a5Hg?+rY5B^5b3SV(_Jm~OUSg}kozguG>r}?3NzRyAAwRb&9$3B6 z05XG~E`4%cjCeL8@Gsf#0q!a7R_7pag&neLIqLTlrG)B9gveq))X*#N{|^h`j4I_P z%8R%b7Ucd#Gq=zN=^VqeoSaLSDE!mh(XE!-q)9s;FH;b3shLPcH^sMyLq#ZYJ*Kv@ zYRGC|Kj}uD#ig~oJ5*-=%AtKxC6&Y6wq$zdHk{XIm0XGBC+w4%N1dLTQQAyP;|JQ98JHOy2U6Aw*1V?mM^B=zblVNW6zdk?`ii;eru_4GYNr zO_nC+i`zYn!W$f_g#tS6jV|&qbO4nLMjk|>4-XYgmKT}e4KWu>2K`wPXhgN1LN;!J zN1Es43I);#BBMj9r|u7RoWsHXHTy4drW+Z~w({aCkNcsHdAGz=JKIm-MF(fEy?DeY z7m1Mv z_>2j4F!25I)9$&~cj&cm_j&2Lqx0&dsZ{ut{s5Vhbi;xqaO0{0$Q`N=zz=g{f88S- zoZxqN3$nS#d`yw17GRhifettY?l`vtD-$zoxvWM-@%M3pnaaAtjtld#2UfK6_i;8G z-&C$Z1kNzl~yzlDdypL8%jl-|<{n6~VqyE=;IW@;@|LCS*&f?i<(E$G?#$|w7t$V-W*gi5X?^xY6bl$0<%*N8_+-j>mdO_?y zhtGs%YcFY9FHA2518xNT6Oy)x0_AcuJEw#Dn+)-)6Z{d)@lkrbzvjjjk)9 zr>CF(``2D_@qih0@$PW(B$F@0cN*Gu&B~G;P$;5*w1BGg?~uKR)vD`qop~Lk1ZCYA zHprCh`DpvYxd9RH_F!R!R?gdW!UJJiErWx!3{r{O2(Y|OWV2+CW#M1l4^08dn0vI} zFifzK7@YHy0qMTJ#G^9uOBbZ_me3f}_L5IK0k`Y1VSmOcgACw=c}?f_ansAgZ=;Ud zVsU+*g?nuRJrlqNS{uCRqa|AiEARn&2QqjQr^Q8G_E2+b zYL%i>5dTo6Ck2aZe>b*>3wHuV1eX8OvKRh-g zhL~NQGl%X`@43Lw;X{jwr4$`S-71s(jLk16-}VHlY?VQ8o6WWDy$T-pIJTHrT?t_f za$Uw;B?oRf7wO^AS&?&^_t3h!2&7d{G1BZ#1n<7b=s;PPD<6_TojmZ%pW%_K+vq7q zV)^u1kB|GU+bBx_sh?vg$(D~>d-Vms?i7l`frwCc2>T+!o+bi0zO7qwopjQ~1Ug*Y zg$>+LifWh+B|@HRDER)kx|1Z8F%YS(c!$bbq6rBH!*jX32%EnW)noK=s#QnLYiI1?YSZSXo^k^ubchISkUtJLi8xRTzJ|0z;JE;rRFGT+ zioJ%JQCN07a4F$5eA;S1YlAj>7ZC*mzC#$7gAQs4TA#`i@>0MBjG3tC`hB0k_upxn z{myqJwen_vP5DV)N*+$Q%??f%1VEpq`CHBGbw(4hG)Q66%8m(+WXHvIA-x~-Q*Jh8 zt4#buFDklXd$}_hV#RDGw%EJMzmHdy;OecR<1;1a!UOZ0L%!rWF1*dHCCAa6#Xt9T zcLYVBeLx1}Bzg;!pZ@O$>V=&+Fg8%>-XMgf{^uNiOFbqRFa$JPcs|rokip;P>%sY@ z6Oz?Af49-(>>hE72uK>*C7kWQ-C2TTsK?E%>R!CVR((IE|I3OnD>F9BjODT*M{(ba z70L*gk3iirR|N)v;BjQPbMe+}&{GDzT*TtY`gR!ByGkKbxG|Ga(QdK^O*9-Z-%JAe z)NXma*qp^_+vUTuxI)D0+C32q>EciRJkl-Hd>QCa@SUjx5I(=I@gI@$NSe)96azIu2oN0j7YsMe+GxEwM85+thAgr zzp3@K?J~1#owfF=rl3$FYKEG0Q+cQzq8IN$U(6~{m zR8g6Lf>iw6i(TCMCZN~u;!ved2I~fv4bI!FLyllXEl(OY?NF5)J!oczpK}>;2Bi0ymIye}6uy!c0?rr9Dhda6i zDGU2>D=B}7r!TCS_A`*jwluf$WyEQ(QN;Q9_VrQJ@_)Rd+Ml&5QSmB%otGkpG@?Qe zC&ChAf2$4iw01_I)#9^S>b*Z58~;87CLrjQ@;Pp#$-GVQe7w<;O1%`yE$7kor@*v* zX97rrJ@!q5trcD~M!h4y0fWdbMH&1>*kfG;GDk4g!DX<~*XO^BjBkbOqqPtCQqKik z!0SDR{&b0dzk|pwL!HZN7ykQ+{r5BT0DzGc!qjdX8Ce>qR%ln;6;@GK+I^&KVTSR= zp8Kg@dPVK_1)j2#s2bp9LEdhqKCt{D=~X!t{hQ1x&;r}owqdz(k5j>mL%#u=;{_^@ zfO3c8FXQ~jiQvVeFAQNY4|uwMc?aLMZRxyy4VqO_j2)F?Lhnf+*-XS&8}D0%m5iQ1 zJ7}1($p@u5UsVa@(OeyYzU>L<%z*njNitI$O=xN1O=5AQWZ?HFP0#X+)j0St&(e?) zfG>S*pUXHquIBe;jmIuH+`<6qH|M$wlO(^Es1)q;XlbRrO7YhofoSjZUCNxJF@~6X zy-n1VSABLSYM^ra%Tzv~tKLC}m_9d#_C-80x=(dan`{rAXc!r>K1&3%ChheH?ZVML zoRUENq#C)>U@M%~rXo&7b(hkr{r)=RXZfAeiwa36@SC?uF!I%k8ql>naTK)oaBoTt9(X}035)05z(ot_K|YsZB={+qA34bI_sJ^Y!>tJ8bBrBOX$VobRpB1##@n-aN`1Q%2MQD7 zmK=_Fh@~}C1bI-aht&N-0_5=#s8f?2vb}Ux!{44%bGuahLT|8-eX_aErC(xO$*dx_ ziXOZ^olo9Q>v$1f_H++q6kR(+p$b#)13>{xg5x=65Ue}>C|DP$3<=Br|66^U7XF7@ z>>H>|1f9|<@MrEux>F^%R{BHw+s zcQ?q`&0l}hLG2d=Pds6s^{Y2-${4@qVfnXh_UCQbG=C5$-Psc(pG!?r6> zrQX(q+`@csaim((h!3eXR0T85l{UgrF;o-iAJk7Gc8Y+7+F&7x=Bnd~9nbHYA_kUB z=rtITD*4p%@KeknQJ&GUpHte3R;WouZ0*_)GZ?&gFx(xYhFLYq6Nalz8q(Ub4SW5i6~!)# zG{`3zhX|lY+mZlq;-Q?N32(hV#veyCkeDJe>&354o4o7>KHP}c!jV|CUw*-FH z2;;1XOZ1!}X~x(a5Km5<b6183eQX)A6?F8>4asu@U2^4U=^{@lrJIPUKvYIK$6wYKlCw54x6M!O%rw zIw=YW5TlYM!QKN}3uPl;!-z48^$nn7-1tfA%p%cnzF_T5PniC5@A3UK`ssFXTaugD zmup1uZ|Yq;9<#b3<}Lb2T;@;dbf^$aWJ}rgCjR?(M);1cPeW6a)tq(2V#;mlUq5Ek zt4UD6)FEWEUc4YA3H)Bhe)U>tFG(=eH=lE%xEM0vKA2@%Px*J6Lt@B8M#JlKI6Vy5 z$=sF6lGJdq>$tTD_5BZQYd24%9KN!pE=H11>hfPfD-HRn?VYSOZ(SK+X97D$KzaVq+;wI-v3uuVkYhvN z@6nQR3{icT8e}7iaa-|}RNCM*0yRl!t2Q+@k>`CuZAD6v`uj=5_B5x+$0<-$oHN3t z^x%ioxJ7x|Gr4@%OX30&sbhQRd)kWDRC~3Z#2=r2iR;aioQ4kkO~!U_`kcgPfF!yK zsl4P+-lc;?KBl{3uOk9Kwv5}2y}Fi70byI40x1b@hs%<#x<$Qi^qHNT=(QF~lX^zM z@teU~I4A_kofXh5NUE7!{BqVnMFacZDw4~g9l`1tdC>6Jd48+Hvk!Ka${K8pptaL} zo1%Z?=NJH2d>Ha43yLVTFAAug2nl9uZcjV+hihS|&^Y10_h>Tt=M>wLtR7{flGqcv zJ=R}ee~%wi&QT3SM)A{dUdbBN`R=q~1ia$|7J%dtLgfo~i7t)XYGTjhqZMi7008NO z1Ykbg9XiUkw>S{Le+)_EXCcqH+5pDEpVMeLTUb&Y(i7tR_`Yyzv4|7mvF=P=5dYsw zu;e%5syjb$c;G3Z4qHgkp=QU<`MCuCs28KY=_zJ=>_YAkdlp)v*F#-ltsExQdt&sLpg@Zt8yZmJP7&2^=zyl#&M0Y62@P932{AEdtee zJ}6ZPeWY3la6K|fz;RD?JccL5m-B5B)U>?Qzq{|{`YoiFEO#OyaO-?@nzbB6wZ}Yrv4BkBC`Qe8 zs%6p}8%qe-+8nHX_7i*>x|jtpu;36+ntFd_%WM}REhJAik2+mz&W2$*46U>XSstUU zKP&&-iY#W|eENOfKYdr>`f$T4DK zY#e+X2n>C(e-SbeWhPp)hT`?ucmY9S$W>tfdRU=6|J}UWq9y{_M(OhOKJh{e7Z}YQ zL%n~-lB<7L2R3C2W)1VyL+*E2E$Y~?H#89g@Ma)YEDZA`Ra8?AuLnd0fmz#0fQov; z{l&aUh30q?Zz|>HdKxpqK5Tp|03Olh9K~OlUKP4-Yh+L~PJ-^SK^EX~$IRF3zQpC_ zfRaEB{o>9RUK=B1!W)Y9NIT^m=I#}x15pTO)a(40yV5KQ^JLxq|9f&vil8JUAyzdJ z)P1E65dba8XubKG22aiyu_IR>t?)i{SDj>*sGD$^mkdU?DTL!%pV}CUMq6)xsr$4H zFGY&So)3tHAia1VU|QxtY=MCSYE|W1{NEa(i{swBf{}F+b7+4Tt{7J5{ZI3zRSX-y z6$iPT&G$mKhE7cgAe2C*!Ix6jMjn(2)DmAF4RTrJt6NX@iJ(wwRh8!Yf7nwd)-d->CxOrCymFTI1G?{ADy@vAr+SuUl?im=L8P9ah zA0v7y1Ny>ehr_#~2O@GXN0v1kk}wU(4n!EJkDH@s&qbAgv$C zfyk}K30KJBnA#ykINL}@p@mghgbyjD2P;|;&fSvT?`~y$pX?ZJF;;0(>OQ~AcH%_{ z8Mvgk4}sS>ea@6G3PnK$Oayb4IocU0Wh)G^z7+)=Y6o1j>yc4gMQbT!#z)QUFYzDK zXR^K)^*&M71@JVT{}r1RX9oY3aiAhwerk|f>d)00)6R*4CKWN)mSm@AS+qn8hCID< z{<|23fV=9sn4^}mmwx*IPED6gOzXa{t#zTTk%ylJx+?onAA-%u@cguaX)>+J%KU!& z4@{umXD`st)iZEwfP6bAr)gA;Fj z2ujG8zP*yR;ke@*jyw!x6nK4BaUK~W^JKaf2n(_`XREEYV}6owggy9KfE0oQJ#xK0 zjON?0MoMorxFK?F7wHE>Zq8;StD_n6k{l#9pIBc5)?oF6T4Km`+FuzD3qK0$?HV24 zKXPS;Oq67tGSb}cqgTj)W42eiPH1GcIN>{ma%9@fW(49<$P#_E4^TAz%8*4#lz2#;g>rKE_b z%e*C5UbOX}2$e)f9VW5_e(#UtStx`|W^L|eVu3k0#)`OJ8@EJ{x1IA%1}Au4K>6Z7 zG6MFvJL}Wb-L#brxKaqxRUok<5oItzDCkmPnhrRh#5` zy3zIha~?3f?jtO^NNAzPb=BQR-keGNq}$n`y5#6s!{{i^-Zuqpa;l-?gm%DiCR}xW z@QlhQB@90PSsxD^a`uU<07cq7HB#wgo7Rf(>PEEC<1WdPRik7kIrd=0)hcQ~rNDEY zg5>nL*EkPiHOVPb2&o-5Y1z?Di;ngX5=zg%$l2 z11mld$ab+|NU|{63C8SED9))C5zaD1mRdP(!S((B5cLl1nMK>WZEPnM+qRulY}>YN z+qP4&ZL4D2W<_6&n{(G*dq49pj5*MIYj00TL11p9)qGlEM)vARZI?DXJm3!`VWEvR zSq~c26lpA_Z5St4mo!m)6!7hK+x8n9)Z(imck~c*V1)T4rvTF1v>wd&Mn{<*%;!z) z8ZwP}fjnR;#v1X6~yG^cDSi8v;5v)v89=DZEw@HCf11MzvPqLUmLz!HVzAeuzc#$=SR>^QRaQ zD5nt$Mf?2yRJLsEPHGm|;D9xTPc_v)$s$9W&yZjXZ{Trql!*3ZW&n>1By?v8pR+%x zoH_n8>T#c;oVB7U+%)gg@H&0p0s|Az4~Vw^V*cOWhX;f*ZtL zX~S{Z-GCUQV4^KU1E5-Ol$*v>JaddYhLXjnu`c2ghmMaAHJ5>UaASeR`YXoOtvDYV z*EQqju0=Nr8ke8#)VdnfJ6M;B^~}xb61R>lRgW_A7~OBfwq~L$nQNm;Px$oVs$ge0 z&r(~;v>D(rmFJ4g6^p@G(dWRN*p^887p{hYEDhW?kkM7r1`Jf)lAs2aaRSd(;s25v z&I36}J(0bQ!-m%JGxvfw>*MO+a9Q3T)Q3qbMQk#_cw5gC*&!R6VkMDbBG(Ed(pV$j z5Z<(x(hf8d3nz$l48oL;JwCFgxi(h!(`RPeLFGz zeFqManv7QrhG;t^9IBO8;dm_GOoFSs9hl4zo0Wst91I1Z5$9+Rv~2iX1+Fyh{<`jQ zRr!1%z<&iW#Jad7Ur(1Vpi=ERNvl-48-=7${{X;PIbd`6W#&=l3~25#;`m=)r)gY& zCoY%BIIt@OOQXeM^1{ZWHBL&V0|ak8P%#*wQu8yW@Vbf9=trL){D*`dP?x^+MYb@% z-TPUAXhDa#P98)IJueBx3MNtMLyg^syRU1+BfSg@BJU`ZL5xL`1s*)fJR$<^zLW+Z zpnyt{@*$^@R3}$ zh1U4)reJH{bU1l_t(?Gee9{a!F zwp|+A;i|x!$=F%5s*c62#P=deKF@4ACm#+2j+ECi$bz=+72;!D_2my_KxZ3?*vGgP z;@2`ll*{|ElWl+rCPE-C9<1IUIU^w6<`Vn`zmO@mkZ| z`}fo_Goy4o7X0z}Xm;O^md$mEbjetwA})YWR7$`d9PUY?F|*%4G}8Tjm`-b$XU%_g;r)HX#m@cAatDc zqL>mQ)Wf}($*x8&Ys@)90@Mix^2dZYAoHbv53*M%-l4QV`>*G1fY|{TozCs~d&To| z?@P@AY?;#|tPrTb2N>2tF+q|r zpMs)QsKJT++ts2qKU^|Iz1_X{H(jSJuTK9DH)gsaTCv(4g(y;fQJQr>VS}ud{_!)cnHT10L9QHRjr?x~bE5!F*NTcpf z!?;T23n-ee1uHp=7?occak0zgsQ^Vn9`#KhFs1!OsX;}2ngyFkSaD&9_B30bBvxb( zQ%A?-c7F&ZN7}-pADA9u!vP}LlehWx{8d_~Di-X+km;3MLU84QPa7!U5P~>&s1$E~ znG1p%xoW%bUZe|OlglAtftA8cl(vfSw%-W%Z)mNqP>2HhANRq=#>TcJ+e+lN&(4AE z{X8KWjYn3Cq8{$tN$n{k_jIP|mL!jZi(&?H10y+-A%9e;_jw8rAJMf})JS=+YjBW_ zh+f1w*ahB#Z6~Y97JXL{c*EW<%P;qNY%2#MUD-t4e+iUdDTKo49ji3psyr0}$1GMl zQQ?;u2{>bOS%K)sJQdFefnFsz^Xt=~|1O@4O&{9*>R5mN=!)`LlSR^4|T0Oxi?GP<0vGY$ON;cLJ6BiHknwo0W-j1C%C<#^FYFO*%AdNco zhkp_vpNAyHZWZBQ5Cv_TVlgN@dd^YuNm~ty@>RlIP$UX-NSnuhO1xPR%V(v;mN0Y~ z6OQ@ifMtw021W|+fpM!4Um}HL@y5enawF^Kfg}sD4uo%%xz90YRj4Z|#8^>?PgTIa zLoF~@Z0)&kdZo!45Bsjs1qyp>_^?4kTs?7r@Va$nVURSdP5_|^+6xKU@!Wl-2l}7y zvNkYG^L%E1wz%9(u1&6Y3cuaqClh=6Tc$y(c6H3r>N5t}y4LfhSAyTREE?kpJrZ}O zF~=&n<+otIG9Y>bX3YY1P1IaXD|>oe&c@ z9Nz$hRl&Q}J1uAYP=iXkvG)AkUoyw2Zyp2eGrRJt$rDSTZ$@YtZ2h;_f_54ed8vmC z#{)Mv0&>UN?`&Xr#);KFoQXsN)eiMb4@VV4^H^?fP+>1*wFRKMBdA#>|4!NHXNI5O z1NX3zem~k@fSFk-v8{vm1HDS9Xpj29y$4;wLgG9^B5jIPX)Y~jVU#GjeaT1~nxo?v zNH%e#4mADD5DHQtPT(SwLry;(u1zhPOI@@xU4sbWT9@jlK0!VWdS_-iMowM0>ZTxH z5d)cSe4;-8{@!YAFpX^3p-^GO5cJ-{Ur5_fu=0+9~rU`3(+I z8xVwS{hl6?&@s&J&NNdzP46jlk#xDWmBTess$k#AEji;tBBh}lS=0=Lz2pcLFVY>D z(kV|B8w5jr{TkBLrOJtwb)dgyZsOef)tL%m?ffGjpGOtlQ=%g+3^4y zMPd-fMhZSqfP_zAUHDIzuAE7+0H*IpEEz>2WV*4u7Xj*Yo! zEu-s{Zz1Xg^|>{#Tl`>v?%R2bwKXKG0N%CuC z&UC%!niHGrFxAv%bQ`pX)-YgN-4QhmP=|?Pq1zQdcyTCYnEAuJ>I}(609`1wF~#a_;QL!W_N8hvh_uyU&je}AhhWc!E0wncTR7( zbYArv$!P!NjerKY7tb9HURd(+?CV$hsf}@Q)iTvomN_D0sNESNfj`REyA%Iq@b~!2 zj>pL3uZ?$fbTY0K^{3P9BDD{5Su>m9P}VvkOdaC!rh^DnP!%V)uGVbh8$Djx~%njc&*tz6e^u` zZ~u^Y$Q_o^i~T9&t!k1>0|6wk>$hlwxe~VbC4C`E+~g8eUSj4JcSKszhtZp?#g6oQ zF#8@X0hRK944u;*ub8UqL6Lq%PL*3A&5iQh$o!GSpDn4y=DeB+pRNE7^o=+qBmWN1 zQ`YwrBw0>ED6HK8WxCCrr7;5~fRF%{Jf-wn-|TK$?33Kh!>>;6{P$5WU&F0G_aD4t zhz;rFVSpX3ik#K_*Sia#aeIX_l-t>_va8${L9b#qbJ?UPOeRlLI(8Mz9hY+F zEnXIxzHZuc>eDOL%FVtC9RMBWpIx=A=*oKCH&jH{r8)n2m2>h4z}ZYrV$Y0!A2kJs zYs+*$sfi#vKtvvG(Ee<%9CA_8neAG9GW9*S57@MPuCO*qddo5*?Ud zU5L}Z2LkbWIo62m6RCNw(GsVBRh)n7*BvhAaaKD#qvPbo)5D^)(n1PuSrdmqWeI5S!|w;zv8NSmyf;|4#RE^DdFR z`z|GiOa`#0QTH9V>EU{lhI;KC8$IA627)9X@G@eSoK=*1F~Xi}WCPU!c}gPl`=xjC z5VaGD(&4CrwK&v^{tGmxs~}4yNk#$Zo+M~UkuV;Tnv&Ri_B-r6mqslAesUdgO%0qN zAXJ2zWv!}S#gMN7j@y<5djzJbkD;hvGI|L*XLaD30Z$I0f|qky4-8l|2LF)QpNaX#Lxzb?mpa6scs)TM=R`w1z)$02ArpAVO@4p1Zl1*O8#f6uC1 zer&uCJRg*;L+Nl<-?8fMC@=U?w0IX~?+59M1Ho^Ch=1!c_KIhlNWEdq$j}%Q>xPBT zZaBban5)S*)rb?=22LLY)E}%2+Wz}B-~?%}U`26P&yC9O_8lgD34T@?$Zk+OklY^A zk+R6N!uv76FA4Vc#V@s9~`sW{{mtm1^} z-j5j${+s7kbaJ(0tD*B~Q>nl8hF?-t+D!;mz~KUP4?7;5C`s%Eap)xEV0J<%d_cOo z)FJKyMwa7Gp92z?!%4fc<85d2@j^HK?Pd>0?f@h<=v#5ZgpY16*;hxImM{_FG?t2% zl5(sm#G(l8E?a49e9@>oE!`TPZexADxzlN7zl>Ez1Cyi(g7Bya9$TF>$L-hc`e@G? z3Rzv~`V#(*2q7$U@J&A_sIXq^)=f>BrW%UD!2%ss$wu($b}3=vbXc7)(H0!=AgF=} z(3l$t_67|L*o``aZwsWcy92wpgUxrBuEq_gK);kVx|WU#7V`Za_K*M!+zvSiIwLr3XA*6a-_|!9*~NT9EL|UzVB&3Seh2 z&cWX6-LV;7vy_9e!5yE=^}gt=Uq>%(Ca4&g*2dDmtB_}=&z!X@7YDB3yzNUl$&n__ z@0i=BwYZpZ>}ky|^_ZL>5;i?G6}nS<4yzy72|C3M)s|o%u2XMECLd|kkEm93L0gBk zFqo_}TV6V?ccVs=LMb~yj7o2NuBb^b?=q7wO2wCPJ>ooDNXp!LH3jMqSJ7*G#7OPC z(ZWuR`am@8r%qC5`J47*raH?9ea(z{D8qeT83nO581EL`r+Pd`sI*?TH4~Ok$@%=5 zzdwzOUxWBUW&1{;pRxyHrHdw3!BB(Pch+7wEo-26-cm+p92=<6w2L|q&heb$xRNz`;LwUxQYinvI-CF6lk#E*lHrSAFFzsd4 zmP9&K@fC|p83{@h#Kc>0d^T^gdLW}Y`e@R^m<$R|0m2?1qLOgVuO54^_M$Z?d@zTK zCd-((?PUJ8AxkO0wOLCKfs|6X1l17%m<2OhLQ6kWO@6IW^<3j@Iw%Paoisc-eh4i9 zd6~U{fHHtr3q3Lp7lXHu`uYTT6-?k?*HKm9XOA7u-13=PZxfq&$LSk}Y`KXu%Olnr zbkinz{c((bf8n+!q_Q&>^*H06?3<{PhS`2lK;$tr6JX&j?-{-hXxX-@n5u}D zuR0e{sp0aAg(QffY)LG2=G!oBQOYqrD{pUD&3K8#z!|&ii=7OA9kjKFqwX?9x#C5- zGI?)@4n?6kRNVT;l7X-P!UgPCcLA%f*gRO>TW!+ruB!b4MF(yITycesUC66-)O5TWc_X(E@UkU6}r5vPUe z1oealXm2hj-H=N~g{Ia&%Jsi8T>M08dU5UpZD*{^~dUrVZOSRk8aAyOw}l>@IU z+v&=$qRAp=36_fIwd}cQq=aKGH2S&3JdW<8^sBIDW~sz*^WKr4%*E(&bAPExiEn-EWpnSB_rT1?p9NszYxCVoHTAbs0HnsbC zTI1M|ZEQpWPcf-(aW!{-V>W1MMQAnT!H%pJux=rA7p_Po$(a$39Ck#aT)fu#7r8@>u>d^+oH11`cOf z;+zc?9LT7NlV~9?Yl~Kax8=`I7M*Z-62>IBL{gK7Uiw{e$KLlB{TJ7no3;Jvy9PTO zq3^ZEVoZjs4HqrDqiObic1ma3Qo))0;iMS>d4g1Rl4773Th!5Cm}bZbCNItIM+$>; zNe&rMym(s;fu9~O^@ubis$%oREG{a#`(v2o1%kP4Z0Wl=G)iz-6kmgcZKf>Q#M;!T zoWW$JL800l^nr6ar>k7kb~IEfqX`2Eq=U`fwRV7(<2=y>-s+RMoVQpm-!YQm1v`OR zGCK9XiJi!j1;-m2ZTCa2(7HyVbNfwwIRf$hwneWl36ZUIaU(faNO*g6bOFB4Vi;i2 zD`Lfb=mOfWQgLV~C#$Q#5nrsT$o2paCjLV5<@A$dmB54gxuefbR5vbEyDL^2IB|>| zh3aT&h0bcMeS>R$i>=U2F6`xEt&NYjoo1`8ro*(krLD$x@`@1b0qR2VX1-(8#Ve>-sGdftN-q+L3D9!qP^*7&&T3_(YC&|ABz0c&V z+we8j;A;gRYEsqccF%g;Fe>3iC7!337u}2VS@>k;4O`&b;hTLC?}~<$XApqF3!i_Z zt|CK&{PqrPYS|sOLf;qDwN_ZBfGAMa(NKZK9zdNm`LXacY2N#yWks;)8CIXRfG-I| zWTg{2ukZgD(kzRDa~lZo>p*)%^e!6hSo65Xrzu5&x@PN7HIKLRlVtzW%2Q3^*>Lzc zx4tP3Z@-^pap~LncP86!+G{;7Nx~VmDOwcsk~Sc9otnIyW%!?UfRuD$nLx zDDshe?1Eznng_GE2*asmK@IRDM_#!B$u8)`p#aYHZ#)@zgX|Pk$RKLnm|TcrUFmDT zDmPMvjanzfszZP747yDbrRe>#;sHZ|g#z+n)dM}{KNVHS1=Kz^?x@#I8B2o;Q#Q}Y z#B$%4EcV<{AVuqBx7g<@%K?@#*x7vS%#0=DFn5lRZI1R~vUyqkKVlJdF+=Fc4IM2X zwlLKZsHAOGn8L;#$V3Vv5gjP)$B$_br?b-6N#nnyaMB}|j{ivOEVRXieqTbGd-I!u zV!`?QT!;i}_ujNR%tQd=RMo1Kqeh7WC;B0K@sM zp(N$)H)8#~i2xM=THZ|i40B(C+du$83duW2R^&s}7lLJFZymlf~Y=JA${V{z87|K8&pY^p=BhXj4e zc|UVV!(M}`6~}0nxw)!2e$*Zx?>iOqr78~>#Im>w7IVkAnorMW;nt(1A+0B)!yfu1 z-uiBf^l{ts`WYko@RneR{>broX)gs&A{9hUYyvD7_&qRz@(7HZABK6Z@(Q7fLNnu! zE0MRGFD5R$2CBOAi7=)Wjgx|BMZrO`7qy19%t2aD@FF?GxiI`~nqqn;DWtW=Iu#}G zE#K$hCtdaOEJ{<*4B<-j7vOjQA6r&iU6-u z{ZJVX{x-&GEZCY2{URNK01?Gx%|gdJ=iplmn^C^b4{T1a>X$6TE9mM8f>pjJ1TK0Z zNzlO>Qp`wUke5Nj+UMe*>?9q((?uBPE2I!KwI@BT+(#sseXikJYzx8@dfF_>q0KsZ zEu(}pCM;%^vu8BmZ{U}BEU5d`avlAlvDPco$8DD0e9QS6 zeFbiew=0HO0UYcP_iG7M*|CVOa=~?|;c5GQRENjF`|&V#Ia6OLm|(@?>Uqe@K+e5+ zz`+|}pkoL!yeYC!C@dt#@C6#?)XYc{_#|Q$3(T~wl{xC0TEBn){ne0FF`=a)Cn~G zvl%kcjnJ+D|Lz?B>XhaEgBYgF6^GJETZcef4AdnJ%t8whFK)^*+1wdYfVMOU#)IUE z-Wk0M>on=24)hN&Il(960s1&{4w{W$sK>@UmsxfXKJqY*nVr*_FRM2;=W7JD76+X` z(bS!ukZD~bxoqcxz22-|Uk6I4sy71E#Qde|NS%6mBf}j<+%Gv@%J@lh>6qmRGe5{= zAzf0KsUT?JHp2s98>~q_%_N$CXpzxVB@Q&|N)b^0k!xr~X;pN@ZFY{4$usA4=CgS% zZE4xZf+0GSff1(Gi{AkGsr_>yizL0@{HI0CclvhGoO5TOOGB;JSQYhkhmvx@t2B1- z)I5y+m#8Kl))+Ki_z88&x_OAQcQk_1cYg^7{@RdGLVeqEgB_2kc_$FNv)X0Z@oFMV2 zf?5haRjK;3A2tspJ#L+x7_KTeM{=7l@`dB7!{ZF&SQhS_Lb)ax^XgO|cBUZ2cNUAL z5RWnaoqAA^(h!0GL$7c45jyCzvm#-n9yvRM2;v_E< zc^kD*EST=5^1-lYd?|IGpr`{zmZU-bH|F0dY} zYuf(6cN=U)P}67EvBhXzx9-Jw#89YX-RlXbhN5p2hDyW(4`V|u+SSrGEU0pMDyfB( zryRKlyWE~_mOk)6$u4%ax@@-X&kPN%55j4esB+NuDtl=&5ohwx09|Np!C>*T82lIx8C`PPI(;dX`czPHzMM_rmgc2Avlcf{iivhV zGI?}cE5Ki)OUg68pL52#&K5BuYxx@Nc1MEvb1>_}AIK#{I#%BAi0{6eS&j!P_z|ct zNkZz7IgM0LR9X*Tj3qXitFPdJjMyoo7BMJLqY*dCk4DC#m(O| zHzi90+N7*h4b-kA^_qYT4@4#t!gqXp(8WOFdph!8p7AUlLc>;_EJq|B%$R3+*p+t4 zaYyPfZ&zvg!K-UCkOO1qjp49UV~_>*W(0Y_GvS6-rfv0JSOG0j9T65#et5-Eov*H3 z7h=94EkSDz>--Y3A4K-Aec|h)Mf+n2mSx(zms;k5V+Tn_&+x$T-RDLa2XZdIlP^7X z5lHSlb?^;5CX(i|4HAGqY%~B2=D;mtLU!Lvz+PLdR^CzNNMD@?M-2jQ(RBeGr7a8! zIMXr-weop_u<8f2Epe8?U}pbr0R(J#r($C%lV~p~?<$@$dcGwH!4KQtH&Oij5@D5k zK$4kVX6`q8{B+i)`ui;$5py*x=0nB|fKuS)*FD((C&P()F4S1+h%~4hptp7+NG%w5 z6hncf#it}~j%?AEP6zGWW7ve7ii#Wv8*oJfk=`TxghRIDG=SkfZgqapWgatXDShwf zs{{r?J+Q96VU?O>^D{_sO@t=DQ&;V^3&Lz7cihpv26sout~o0l57*-Vj&)^r{hMB> z&GkuXZ zV`BCGD&1@*LZZHjz}ZqTkkm1?)5bcIhB#@p9h00-n2!_EjFt!_wD1qx<4T z^%bLf#M2%JdaMDP0VRd*1fY^!-ft~)f11!T$r z#ZJ@r0;f|Q2f@3U#|PPD6-nbtSMMIfXcDG&(d8<75M{Ia(<2tWW937ec2@FrvF2O= zFx(lvKS(ra(Zt4!I0x{aGlx$m5QjnunE~N6pavmH ze4@0akajxS2~lgL9eI3+}sK=q)7%Mg6j47tKYjwHj(~<$3ZCPD4`GZId<^OXsQ?Xt=brFj}5Kra(d8v_mp5+%iplAIrcjk-*g`tfFWUHLeZ(zTP z+D&_zM_zut5V#k2gQ_2f49&w15_2g}V`G><41(6^+_G6Bw-l& zKyuz1@4Nm+vMWLRtl|mP{XqcMfA0#+uOy%6-@h#>dv_Dq5;fx-$!U2pW=dWKRF z>-Ig;@4P7#nOEyj4fcI1Lo-6^tP%XA2au<$fjtv^4S&s!o@d9BDkOmeH)ix)8ZQ$>bnU8@7jE zn`8UzU~y~buyO#;Gu43hRhrZfji=+k;EI-O{S^^yE)eKgw?dS%|p4g{&<+z)(i~p5r3{^A^VbGk}X7pKw*?@Mf1F;>5;` zXp=Hft%)sEQ$3trijW!fa=3swQ5UubeJ(r{JEH}aRzu0}Atx0H2;y4#WpZd_e%^w_ z?-9B2?B&-x1cmTfzm){lFcGnk2nhm{x?SXWYU4rGkZd#S4>W5uF`lH8y@R}u#+%{n z6-`GBrYjxEYXaRcmm+iz4&TuFGGAQ%DsOfN-fo941>K&9&#Da6ynjo*z0%5VAg(O z1p~$bUW{gf>@%hpPOx)d0<>tzZrV$fc5<*U?vnPX`&kze8SJ3V}o-bT(l zpSjPIK-)1Veum$GnTMwvtzg~%@0a$G&(G{wBqd!?gl&>*$2 z5_hBb|5x;#gM^=Iy5g^W1p+Y6@D5(6Fgh|){)46FQ4Ni?%h;_i2#*#2rsaLxJHR$2 zTf#p#f~p?T#q~aGE?{1#e`(((-#yHs_jdCXIhv_aYG~Zn&(`X!ixFgV-*vS47&l4QRHdiFm!J9#++ARb= z>KQz0#@p=0#V`f#|FD*(#O1Y?*=Z^fkQu<`m^nq3t1V>dGIiUECb~r%+0}sr1-VZP zN9PctU6Dc~6qQVQ{*)FGL1FTwMT`F9Y1&tzdUa@J9h2ny$lG3K2kNlc?X{! z6(E%&P_aQ+D(C=b{l-a0X8V7@qT@)qi6d?K6*y;*0G;Z3aqE?m=RU25cBQc2dl0%z zSZyDj9seMV^MMvm!)XSxQ$Kl>!ml6@JKn$4vtZ-UF5?81_j0O$Qw_k@oitLI_bwK} z#(0W}p%S-EM2jlE5ixlm;Ls{EtLG znr~8xbEYoE*ixN8t@iyJQA*9%SsUvk1A%}KH~>E*D`TI9pV34A&>)P<;cT}rz!k-n zplSM_ukM}HU#A2rM+=`pQ_W>P_W!5>1IvQ-&gu!Xki{eeH&simRjR!)n;&oLU+$KQ zH(3PJySJ#0mqp5QX`Jh%e=27y-nyfvszwuEwy^d{YBJMRZT0?j3piKW7TdN|d-jVN ziCN#LYh}s83Px6C#IYx4dr!fQqDq=(+VXkLFIMX!WK0v<-IBl2TrTPik;Jpd@mEyZ zZ2b%w_pB->bU&8m8Zk41({4F2-rW%K!utDX#qml}bzT$nxIA(sDK9P~#U*0u*YJw@ zAXDm_Gzfe@%7=+8KEta;vAqENC3zzoJzZOx zucLp`H3lm3|ID_aE`$%*=U0Th-d{Ob0=71W5kO#IXwrkVMIn30T5TkW*0hPYv=Hoi zNS(YUA0L}#Q>02Ge)Wr?mz{zDl-oxAm}zyR#%b#$*w3Va0u2i=lhenj-X_Iq+sn(~ z2Px4(x-G#Xob7(z#^d@ZtAEI10?2J4_g>dF}LCGajMC{q)9MD^@>Bgl9z5GNXF#=^d53 z)csf9H0Q}^iFaMYXIF6eX33jNw7D`}wk9>~KL>C02hWuPd`WTLQDmTO&vCkCHyyX_ z?4#+Kg#IzrQT?+%Oz(Y=@j*yL{jjP2-&jhxNTbg&9?lch!U+n!N5{*Oh;|T5a%Npa zu>Z+GNRWj`s~z?;13_4phB)ZI;I@7wWQV%Jn(}JUvp69-(uXZ*W)}7+mW4aHGO-Ku6gtEP+8i){59TR znk2?2&(xTi?!LvjBz*ASY%gjW>$+YVb~73T5fnVpJ_dK0Vr06Jq9Lo!hmYDwY;O?L zF|-LWehGwvUjmgnAyCZo_hMm-DBL*6y&lATTT#yOTx*p)U2cg=CPA?SO!Ev5QmWC=e zydUf}*IDwU0)gL;VVyU;D_OJ$ZydSQ!auCLk7u`xIlnFE-o#EFXB{G9=se>QsglBG zbOK{`C6a-!cSZ7vmM#RLB;{#I0a{zq1RZNy*|bv?(uqk2vNugiS}+uCTc~iMTGhUj z42+bkiDdoO5jwv}h?ocZ{eXaX{HIp56xk<<&9Y4k-~bu7{%%sYkSKUxHv`m{KE>w9;<?m$}o64vgf2Yihjap5y*c|yD&Qdf%Yq~;HlQpe?)0E*1Ox+IXORnq1Napu$o3?fw zIQ_)JP$1{Bs6bffJTA2Gx=UVHJaOWzI;~6V&KZ0>5W!*_@J{a2);`CXf(6^KDL*pj zESfSs{m363h@fSGXyd$$o|$~?>pcb>`KUfW|V%le)9=nGE98*OahuJ)CPBwY$zTwyK(w zEqbojz3%IV4tM{VSRnqc=z@K$XQe4E9+izqnb@Bo5l-fu^mh|#Nxtjca^CP>dOK;F zm5Qy2Odr8Dv?~sybu($CKX{c|kpeaRTo*JHMX#FBPGxqhzTd69I8-WSgSN3N+qN$K z?!AToZR>Uor+Nui6sxPOF)}m0H4=i#cb^OX>HEZ5fE-@a`L+D#C&?!D$s$G2w1|J7v z=EHAf)2|W4rm*tCiF_E;3qM;q%Cx`W^%Qs;BM?^7C1q<>u5VSYC>)bPg&pIXbMakU z4*WS-Pw?^NPY;g`N)BaM!sEV<<-$VRbc--q8~dv${hY`D8*CAnrwv)4BIy z?x3+Tio)pqr38kam|UA$R$dw}${6mh3$Nb*6T@8rT6MumA%T~G^*&bs)(R4AEm>x= z0i|Kcf6m$9;owdK@88&~lYrz|L;arYi zt2m7rBspwVFR?kKY}W&xk&R50_ttOfWHZOycEpjUm$={Y=F8HTcDta@v7e80B%BG) zcTb(&Z;vi5pjPwFH~bd&5rY3+HGhe~Ql>uT{=cNGfwBcq*I?=ULwGH%j<0L|gR9kZ z*YeJDn6}<__bEqq_;>Z|n!2M$0?*6IUeao&t@a&^p3r;e8Jycdvnhg4;uUv!VsXu3 zxb|4@X0;j)20d%N;gYpkDcjfrQFIteHB)i&HTU+I?BenW#Gc(~nSqIPzv5%66eCxp zDr5tP*1fCJ9Fj^fc-+8>1#5e2HjAr91xD(D0zRSCo!{~JYe@cpXANnzz5svk^Td=rw7)rFXS0J2CazzFW%?Vi_$(d3IYWTJtY`e z+?94GM&`hE1nLegCxVGT5a|4=i80vHot?Mph!~vD!`LK-V%>)w=wLq!BSndYDyclS z-*M}glv5~+x}jZFKnGGXaf(w5n4RN6i8Q);w&=0}?d=5<505nQfI^FaoJ51_W(4WR z#`ihm47$@baneq>HJ*bQF1iuy?c`v%QT;RBK;ZLH?Q7vhHLeb>bh9%TmJH+&{m zw{;fIx?8oA?hJAdRGO;+gbztGa^2HEW=!kM=E0rj-_kK9-~Ow=(oqwh1-}Y+%*R42$8Rt1bYxctRlb6P|42WZZf5I+q`$Gr_CL|N(*OiLW|5G$H@L)qigL(Z- z7rUlGQ;}mZceIGMbzI}`#a72vgre5I7XGQ)t5H(bqN-O+;HVfX9aDZ)YtGfR>3zsO zG}Mh89~_ts)RQprwAn)LVZ>LlAXbbvTg_C}*em^_MSnH8G}-_AF1j&#cetMdz)i?S z_mJ$g2I84Jfa5A3DQWW+Fz|AbJan?#Fp}dZ)5eC1=ilJHYp#@=9|?8;7O3P5^Xd3p zt=cvhojXyMukh+xY$EGPH%o+Q-lanLCT_<4hZhPH&Yv)JpTGqlvi#s9fZ0(0 zhI-c09Tl&NqFp4psu5Mo(t6~klkcTTLQ0BEuC#)OQu5>Y3Wg!M94V!tWm^>Du!AF@ zq(=>w(Z(Ph0p2|A^zx&QOE?JDBeT1R~z{>3%p#G(PiJhRGi$|SBc5W<~HHmd6aY9 zjUSyi$Jghf&Z%lN$-67E%~BICO`jLIZdK0988IVoJPO6YQ7nP7P{6j(ev!jhKQvC? zS-bzyXO`14=JrY(OwKZ~5%p~_uRg)VAT6}s@fH6A=*EVRuEY}k8O<~BHN3Kk23#&~ zwmn&95r-y3G$j}5fJ1e{bb-yEB4d?n?=gT@pB)4D^D0YF2|Vw%BC8o$eAWf^!6|XD z117u&*prKdArwamwGMbEN>U-=cE!vReCH4 zxJbi(VEkCRUJqgdhz{lbr_bD9@Dp^}Che+0VN^w-farHsL_XE{HZjQ8XLkAWJXCR* zVYTGqO~>GW>1~WL_MY0wq&EKl5%pD3aYoD1I1}8R!8N!J?ykXuy9IZ5*FbOx76|S# zxVyW%YjC%pbMC$CfBGKgY1ZzwcUN^+)t_l}MigtxiIE)x9Ebk;IzuY=e{H;;_LO$} zccnoM&^nIZ7gj$<33tVDboR_n)S>S(N+-iV>B;t=ndJn+!k>5X${LjdvLSs6fxADt z5J$VyjZ6BpFvxXgh5B>4(wI#+z49^?>_c{|96xru7!~BeBCgD~z6i32NcR@mk!F+?TKpPhP4UeM^3dT zAC_jh5^(yomYS-6`9aPcf#p%KJ+COC(rf}N2;BSSPWYo-w}_p^WR1WW3kq?^muCS| z@C-(w$jFm-iai_5Ds3@NJ$@pjxQ>axiz{@&fq?xK0EcG}f|Jfu;)VJ{oSRRENO!MK zGvD>1S<}g5rI+m|fy{zU846^3+EX zsPQnB+!X%wr>KVx<@#votP=I$^NpD$l??879ZQK6P6=(l1?6tYQ|xrB+SZ>?5@yv7 z*SEtp747Te|53aW=0i>ay;5zJ)#`AyElA*oyQ>^_KZ=*=v>4#A&;CqPKQ5RUd?_1Fjc(`5mY8H|ZB3O6lowt~vI9ml< z5v|K5vRlQyR7HZbS!cXG*M9dfHNxK`R*=ml;SeiOn?|v5;+N?1;bh%G2tTk^L;f(}`oPXSIXKy-M1Ahgqr7A#85k&+nkvpe0y5@al28lZKg zN3FNpbFx)=*|^B`P+E&!0r=C6#e^N&fCpLr_jl=TydcdmM9{czJHf)|6d5z>J6Mo- zq61^0lz>Cm7Z##sm)1_ih*76J92Wn5U_Rg-YZ;x!0W0q5WMS(p>cnl!Q2zMC%{o`0 zM=Uv7(aOpM3-q&C0M`X)J?6oj-ni}fCke^qIZH4L>NVRvWXYj3CIV}*oKk7;jXWyj z95gh$+(2ZTu#`Z>ZTcqBdu%#mKbOd;DI>Y@tD?m)nx_gw1oJ!^M@(nnJOJ7vW#z(K zKJ$jXHnC$wOh;TZ&Gn`Du<%w$`1trtiR0&bJBg>}0kBuyI{Q0S$+nPHEbVx>yj4Ii zY@(Ni5tFgox-cR~L(!6cPD85s-!PH;P@}f#i_xXdRxUCMi0?pFWkkB3sjXig&yR%= z8VELEX3!Sab1HcZx#Cy3hv{s~6(bMmg40iVB+&1O$9Id=-j?M5b|Scxp>2joE;g$q zC2t4Hw*}%4M5Kp6pPhwfW%Y3cqKT)7 z`_yQ~xD!Q6<`lp>9IqCc&%8 z@rG~RLlNwgxdIhET+3YpD^2f#wmpeKCWeZ{T8QS;JpI`RbDWi0XzT;yLY?%Mu=g?V zO#2_tgU{8kvEQK{fW;Z1@5o5T=3O~bDql6j$7u1(0#GaA`rh~c-U5}tgJAb}Lea== z|8pn`2Zg7q-+N+XJnMa<hZ1z?N^$B3C6P5@{#th| z&x9HUng6{HhFvj%?)1ae{-=5snxq|2=8g5Ji2AZc zF7P1twphfCb5>imc0+|ZXF6ck;7oJ@QjYL11266%@I{@<=|TkVFDO?Iu6-|w&Fqzm zogl&@OE`vuKg~$1_v<9m;Ww+Z47cMvF=h0ajJ2oJElY?$=Bt%f?yCoS^-|twNQ!k_ z!39RP*})##xDI4)8uNhwhmbWNhvDuXTM~x0i=wB{Kl>VG!%AmmUr$Usfc&2^qUq^C zaNh!#Tz=ye?-r^hr9?zzYhg&_l-yb^wubIHz-;_f_=a+QpUyOqoTD+nkQ_pz%TvpO z?C0?aPOa-`OLG%m>z#Jea!!|{rihtR^=?D+Fp2Vsb)kL{)<5So9#?;S3ye1MeRuJa z3p&`X;Mq6Df&owIqNN}H8LTn7qCDE)xMNYVC7A=_!{}e!zmH6yG#H5DbfVC@CaW;h z^?Ug7(yn|!(q&5tpTvwMVIvu^Zh3V_(90JmyvgR#lGaUz&a=l}2u*uDZVv>bUK`MS zG5<$^(Y|~Uvwb>wOCzPFSA97ib-DOYzA?@w`r#|oV?bvyWyx;W+r8pfsMjhE+tr73f90xUc?a`hJAGKh3pd9Z88AT`pj<=R1N ziyS05)2Q|Pu~(AEWMmJ>NasIT+R5gBX^)~!rJ!><^n9NJIkL$-e(j(jLmWM~=6{dn zV}d(>_IEAUbDt&BhddUw{mZMoaVZ;eS6<4?&f$mO$swdmJxbSfc{$Q@2c-txa zAM$c21@5epp$~zglNeGzR{=o(cwqLF2J4G+oDmEEA>J!edZ?EQ4At?YwwvZEG)-P! zR?~}#DPbKaeKV8b#@*EcP4Qv)Hnv}{+KufMaw(Q9k(hV|6(u}8*{o*%5rKKiQ$NG;PFlSo9*D_ezuT$ zY0MAlL6yG0Zi__{7P@F~qJQ^UFPu{IMnz_15+YnL$P(geMNOi+ba%+<9rM7)xXdm3 z93k}dP=ys=M_BR^dPm*Dxrv>8s=r75OCa5%h$Rs$qkjPjOXchoRcWSuuG)y82mE;) z-A1n?zbYRtA|^#8JQA^KmrZU}EK0H2k0?t|F5zbEpY!DOtVrK^l#OitTdT0T=BuRv zeek`m3N9=&oz>ja8p2b$OQAn2?h5pXHW^|mN=@=jMyo~g{6)MxyNF^jzT((HQonqEK#eTB4`;|A4*2rRF+WP!Y*np3BYySrftr^P63f@{{LI7^7$4Mtp6EF4Leli z0KTg1uKF)EeRN{ky*%_kd{8g0b!U!Id+-xZhE@46^S{42oHW&CDuFS7%%~?waJCrhRN{44yG|pIY@C$$WvFenqvO8<}YS3-*sU8F};(vy{uth+Au^j>Rf2lcKl4;#`=SnaDdU7?bazH8erBF(&uuW{*l(lUX$Yj6D<|v5@$}^2;Z4=_K$Qm_= z0OXN{NxCzP7I}_xkzLNt&USQk<4D+#DGM=2bu!jG`ZPah+aSFhp7u2U;*(ZTB7JZ5iKsYOnn{%VtV6 zyVh6C{uE`-3^wHoXq8{cbq#cB^9!+Hewf;B(H-HuKj6Eg`zCx(W0?t?w49TAGZgF# zOCk>#+CC=y%o?W+9Hwj-x56jRFT6|7O-bmsaGi%hBifLn<4R(us*JCLp&n3LE39t& zi-^=l<}E#YYy^;_IgR!9EQ-s>(^8T25 zTaduSvVHkilJRycqeCIh;jvzS+#Buck@`ZQ{F)y$Kq!Rz_e^g)d**-KChiEfrcz$b zQjf)S0IPOtp6!V2SzaLi=PB}ot9;^TRVy#R-(Wu5z<-y8hZQChRC{CpP{oSuOb0Ij-u4VPA%?1XFOtgKAcNEthQ>Z(fvJM`YNR zb>b}D-7tctdeAFu?Vuy6JGNhEhRBF0#)gjQIf<;uAq3h|he4Glwd;0BONF^kR-Z_0 z$rTo3{PNG zk*WHU7wQO|Yc*E(WK#Mak)WnENq-rM<~JV+8?2bJ zi_9|@{BGFL!Yt{FC}IekMf~&wyfUhCog?(A2P_YM_-bfoFiYhvpQbjw$r!Ii^kh^o zJP+Q?uPAs`flrDQ0rU%A>k=&9eqH$LmViCX#STfKjKU<72ZJPPNTFiSq4aH68`ntf zX4mM#UW?Cy>@C^Z*{OFFYf!Hcv5Cp>S-UlzDEO<=vb8=h@F=CyqV7BW9V^oeQAg?{ z&``VreGB@X1zxo_qYKeY3!afgZj7s>o7YnPlGkVH^7Lhq;syy5rE^~X)ARV@j)`#d zSDBO|G>+%s?=pOsj`IIi6$l$6i-S-{LK8yAvRCtGPwG}&a>d&Gq+Cw31Nz?*66tMG z8#@Gx&vuC1)t9TVyi1%v)pfhs{yhgNv%<2AcGr zyAyJ~hD`S(y?Q^i_p4Q*=AC@$P&YWt2pVOW(VwfosaO1^Zy(Xh3wm7`oo^1us>&v{ z%yKu<$yAd|w{B$pVD@3Lh^KXBz`4#94D+Tqt$hO zgSRVQpA~1zQN&vu{v2|hbf|~~4+W*#vgB#@r02^#e-XhU!6qM(K7SD%itgushDT<_ zov>vkd~W{;)}lDQSris1s4M>2ZJu3X%w_;OrLczkVI@RL@#pD$HP}ZnS+MA6Qw;VIOlb(wC`$jxUCWG`D0tHvof(# z#;h0hPS`eWkfpl9FG15Q0NcS2Cn%u3@uA_M@cHMRT}+3t%5(JP&l4?Vsi6jxC1}8# zgm)L(_-6(Zh<7mH%I%MXOI-AIAxAuMM9}SHG!18un4fk>!xs>#QOr|yJ{(@uv1AiO zMc5bvyhmZDGAc0K)ni8U?6YZ3f;%GiE8+Vcv2vVi@&pNYD9jTor z>UHin>14}^Cns%xiApGZkFoUL5MEcE!`=U3g1*lQD=gf`TE>1?H>?3J9)G%>h8qiU zEb>;;vDDW)Oiwp`a3?o<=8Tf?CbhnEX0Qq6xqTGG9R8yVhN)I@6zM1Y4dKf{M$tFl$@Sa`utz0OQ#OuRh^5RNuJOT=8`~ANr?chR-;>n z$dfx^%RaP#Qn3J(#C9oNjApYkuOG|a52P}2H;QMYCzaXh*~{tc%iQ;&{ZKG~02s(9 z2rA`#+Ju>O3t4xsrCLUVkl^d#_&TD)7dfM0^ut_HbX*nP5Yxfmt{Suq{mZyquDnqg zN*JC#(gi`JR6#J1K@btJ)rf}fHItq;5AvGsh5qRV`-{s00@3T98t(r10_xwNO2-T| z%;)zWMlXUhv$ERU&I$Mv6Ed}5De|$;vO~^#L2Zb^DsY(_5Efsi_v=6S1 zcRvtnK^*}mKD4j&7X5zN`4!R9!aw!$p^3Lt;_21|vU6~#K^MB}tdAFTj8kmYD@$8I zn}$0x_-?)uOE$seIhwRlz1-t4j_bhAQ#fXzAf_5>L?&;BT(W{p61P3!Z2MzIZj_uJ zOyI) zk+vIwwjws+h_ZPXh(o!j4|0TKWcOQab8%&}Vb`CRl|X!?nLeUjct68&L^x+B+L`wa_?NgCtkCM@{8CD%X7FsY0R}9WtzRCKYIE21mIU_nY4wxTHqZfMk{W>lLl@5*QHXr}0 zT@0b2-?beudL~LHU3Z>Kwpkfw3c}53Ayz2ZY&Ns(oC(JkJ$&8`KX1{xZS!O|`0l#X zyMUNHTjg~u9X{qA$&a1u7kZ?+##WDa@FT1uS$h)*)8+_?0-0IlP`yX4lOy0C4ZpPP!0f3mz9R+%}71|ViA9gGA27zCC`mi?)i+--s0DfA`!8EKO zwkM2j2l>Y>)2nl|P&uMM+SrAT#wdqpx`tW5Z+1W|2-_8DF@*bjJx~9L7_htc#jW2r zFymqaSJIF1GeTw>tbX#yzhUv5n!FVIp%!|_n(XiB9oT4khEMVU#eZ7Bv%!nx4r6UB z|3pf+p1Uo`I#5AB0+h=o39IN|A#6}GUOK*UCf4d(?J;?KNyfgsI^2mcm$g#B7;mV! z#g+oQB3oO`=B)p!zm8&}w%Y|I+z%r`|AptCgX4ImO4H9iVdc{OsLA!p{XwSP)pD6~ znzdySv5yAs3_%_q3>z=LA-2DX(D*o*s734Y?o#l-Uj!$#)i$1Yk#y=gT2_sKE&!g= zi(HL=a6jSnpFZ<|YD`O;n8#Wi=cK>aMGe(Sj3HD>nXKhqj6q9@1{SnviJH|&>6QRJ zDQEOMdA)Y$yHTyXaUa%5SdQC;mok%18yFDN%wtaw0krr6pz0Tv`P_@97l*a$<*sff+YlNmo;BOwCSYLUkk`cv(>GPePQFJ)8n85=jKPAn z9*>epN9TVto<9-WUwoZ5PBc%^XoB5e3N8oqiC*2`krrnbrF&*%<l&gfGHs+F?xHQV0KjY|(bDBLJu&4O~YvNwce`GfoZ1jQ)X?@L2)MS)NwC^^4heOfN0bdwphDHrAcYE zpQml2fVuqiRQw*D+E2|<{A}1o(rIbT8$GP z9A-m=-=&y3350$2n$kmJmD#mcp4d)3Hw07Zu)h3e^HI&=WG}M3Xf5$dOZ+06{ZN)~ zT9tLq|5lVYb;Y|1hX=8PP#V75>M??dC1lt<%jKDBTSKC#QdX1&DA$_>S8zv6gsq4o z9cy~2E@KcI-||xen!XM1>>TVDkD%Q={%*a4{zf{3<1`i60+XL~vTg(;I$2)n!lYlj zl)ipUd5k#BS`Firk^Xn^eK%iplsoyPrq|cG2wbOViQEX!$3nY)7+&({tNo}EhyPP6 zX0BI=MbEx*=MX`9$rnZfqW*1A4=X$LwohaX#twq^AQ`K%gSglI==y%5fFqeKUl*zztd@9LI6be9Hu~PHi7*h+boO@~$7Yw&S~vfU4b(c3jRJ^^ z{gKqrM;lBTK3K_7Osv)#sgB!-`0KdymQ`)_Xz-AC8d#+Y$xP={xCM_H^r)bW<7Gj3 zAw({rLtEJNVv@(o{_2mcAis(|?SM%>csG_KH@sH9UN`t=!0w)Qq+f+!EUNjQW#=~v ziRsMr)(0xJj76V^)&mLJphj3!94x_Ofz~&cj#P{I1=Qn;EMSFs^w2?fUQ*Y`@*bX*It161;xeHbNd4! z17@p$t*!U|{=MeAlH{N3JtZo5EnL98T?e1=ULvn%{H?ch1fS>zsgA_mt8%gf=~&kI}78v^d0oE5!{0I(V$sYqIuLj)9L> z@oc4F4uG%=Lb|2DE5X#_b&G{Zu1@!Q^JiumF<7s{xgtMNOa6DJX#yULzkJhUX9LJ5y z#GX~=AEqiJ^)Lu#SN0}OuO4@|R-2+ouhn9tMr%V|Ewdg?SNUGKN@Vo`rI#PiV7KwT zK@@&X%iYT8-tR3C-LD#Sj7yMfb~iYd1WEZ~(p7f7fY*^pTZc>#*3d_)(9RJ$#V$mD zs-Ib11th5nRofbae(P@%-J0_y>(1VB`rc^s@J#+jut_645-M_oEVO*$?!e6!O-kpW zWWaeKvyLAYHwy;qson5w*`^;Mgh3rG)aPa6kO@eO{E}u#+ zbTgR`!|tB{-2357i-3dNmRksFr$E7)`t=9q%&uODgi2PC+g zRpI95@H!fIx5zkxfL~C3A0?`FnD>V&`K~ya*XsMvtXNbQin$r{^1rYc_%vX4R~sMP za1mr*RJ6(6awN1svj>5xQDZ~20_bF*YiTfZK(=h@1HZ7_mmH=!U8~OL5wC{N7{mE8 z?jK7IaWIc4kWb+}I9G;JSO!r@s!YpuTr~xIFFUo&(Mge)AXbANz@n7!cD_T*>@J3@ zB%mDJMX{i>(?=`Iv>c3P8n|2hAfPPp)aCovZ>(U+6P2%HO3`H|Q07sz*PVFu#}y+k z9^N^3$+^%y#KmvW8v5{gLs_GWT@SCHOGcJ@7zNdXE&QwH-+qyJEusHt>{Ii> zM+-~a<`(SuaiTI3(3LU=$s$@aI8guHXJ>N?UZ{qufmVXd(8@+12KG6+Wn0v6DYOc& zr&W=bs1itWzmh*lw)ehlK(YXSTDsy#m zhu2>xR~P6xammKE=Kbv{I}Av-qwv0fH5O)O%lqr5sY0UTPDE5E#8LRdBHrv()rRs9 z^(1mV63O5!{jc1sFEE#*Xx;zM3xLn^SGbTqk8@6$IyKnn~JV*v3Iu<_eZxCMZg7`Z?yD&%UA2I{LYZWpSP9Sa;ib-(bt&2(M=ONEa* z$qT`9=hLjQ!Q&b9E$OWZkHx`7(SY;iQgz)L`~%7R{l0a>Njdlu&jPj60Ue5l+2D&y zX!vdA>rXf!lb$h^IDb|^ophiNo#*y8?SaE3RVwLsPz@3Kzl?;x6&i?sGHZtkx0ik2 zNFJA@W>H^Br`y0sfzl3qeNphYo-Fgd-v{V)gQmBOfuT-uXg;6$C#zUuw4DxlP2TMa zs7~8M2t8RjJl%{MU}ykG<Y2b9 z#tJ1Sy+@ov=!D94Oi_K5tEV%{oIs5kYyp8ls>$p=@f*4q8cr8uEI*qYu1ONF<}&9- zaa%v}<+79;OHo*+YY4=FPz$c5;}`a=_V}Mv>FO)_%5s+Y_ObtGj0ea zC!G1sFE|jDuDm5rEWkjlw`m@zbY}18b9A|YV2=X{7!6k=MBcz{wVbi5YqJ05Cl50C zIJ{NzOZ9u1)lu6~#177|*H0#}9Ly~8%B9AGJ^A0hyYUO;>KBzUMa@od$%R>Z822Ob zzq8K>rvT|pg2i9netmNfs@mM}q^p7l`|#>5ugpWdPl4?obV3gV7IHn6Q`I`WNnDB+ zHdVKY*yW8?h7>%@@QxguLlRN#6nH+jifG6ZI`HMn!Fx3hHN`&cHj!?N zOLGwwu}2nXSsL6)0O3@KW|D*YzOnV_iIAe}OK-Yn5i40axpR9zXIet8lVl)^;`H7@ zChXt@CkcboWPPuWO)TM|<~#w*2>O(xHCdKUdyj=X(gI|bas1snw*jnF{zyE`FG{VX zQJ&|%7J#^{A`UK{Qc}SohtDwG3)=|sE{6)W@%LuwEX~)%7=c&Y01XC49x7`UHgC!h z%+YhS(d0F-{WFbUQ0(dUY*0;)8nq%GFf?t33x{z-Z?W=Qs|j(PI7aSJ&>49;1#13| zv0lu_bpmB>JP6)Q^K5$ep8V(buWWA^0i77q0RL#FwT)VP#1lxod1N}MG(s}IkI>DPE#ajn4HJ|;`3M?~br13Yn*07ue6|*dY^~QhRwz=d zJj|>0R;mSgHwg8%t;UeQH<(H`Q7XfX^Wbxo+olcCPt-O*5U9Sq_JwBzgKKC7u2E2v zKYbUX@MpNu1p&_c&1(-gpV9~4K8lOS3O52^NnQ9+)g{6*#K;EBj=~^aFrSy)tlInF_ zx0*C(#NkI?*MR+SS{Vh`sBC{h*^Rr#m4g!%3CpCZ{6NrH?^(B4Paoi~_z-*V7mzFz z4+Sn`GwA1N!fg{40lbA&l84qW_;3dtreB!V2656|$LM@KJf8beCM^ydAc1gcrhA8N z(0dnZ7LQjFBOMH#|BIL34LM_5)Ff)A9ym67&Tgj1)BiZhvrloV6?>dw0_|n}5c!d+ zT*Wx-D8!qwr_$h=MmZFlM(rbof^?da7aZNMWD>e7G~^N~ZcG0ME^rone}?=9kb{BfqYP`gRa zY?VujZ$_>raS%sPQ?|NN|rw&%{+{`Z?Yvw9DUuI>Tccs zi@#!^q0Bc0RWn(BVb(u@#)TxSH;iZQ{U0}f&!7xp#I+SY_xWQwG>tvCd!ILQM7P@; z)#b|RrWeMoj+#+ZYmIHmIg|xKYry%gNdw_jbcAzRU2(uLCD;M7MIOXF0~Y*?ap5;I zv>t>K`XuDuw5cbSup5 zm3fZ?(s-oVssp0K< z+`t;A)|Hi+*R?XYD-5;usRl3$i)XQ0)WKjfPx20^XIAUXqTGzrqD(cFQ$CJbL0AOk=jM!Csf}J7IxaRWNRI40CUMT z7{C2Kh{L)s%B;E{QNOEbU;JZdoq5_osTsciNCgr(!TaiU&|M zEn6-Wq8M29=FP<_Sx1ulKr^w= z)UF|B2(&Fd`G+%lBJe51wtErmy6oHe1r1lnwbfPH_owpzm~I_32R9x5`9G>dsB3!F zhJ#EdoX1*?r)X+_!Av4u#x|c!vk==|aEL*au3{j3y@Px9d#Xg`BNoo%PPOBWw@k9m zdoPst`<37rlT@u9THS{Vibu6gsG%RuY`dFz-fU>^$8N zFi~~}6uRhyg_`!BXj`nOC$rf4=FG|`$9(giJ(GN@IpEkHEP?Q&nlZrAJe72l9`cQ4 zu|`estg1lBcjW`F7_)U_yDVE>);nlm*kyANB7gvwsiOa2el)UBv`mU9+7bCXW4zt{ zt=>T7cIs^+Uf|{6Z~+WcN_=9#aFsmCcH1Y4Pr~SmW>~T+36qhwu$K@Z z%QG2T+8Yzs(hV@wx*BqtcD|{e*_oAKjxG_K+xNu@?WW3N2l8E6-qqwF zjKeBtFD00{LAF^Ob_H%(S;;G_l)^uFJ7V>~yC~W$Ws53B>iDwGQO4sTQTrGk6Xh!m zopF=y#mTK=2vvt}5lupb{5x@jgXD)pquhmD3J_!3BgX&o*~qLN(?WO+71|}Cb-hB% zSjbp96eIn$+PxY!aNCrtKCC@8P*@$r(5ias1;+g|=}^Q6knm0Urp@Ym zpT<>~ZD(E@yvW5NcPu1RBOuUuouPV=P(kTjbks%h(?G>nXqpf$ zq8X0EATQIRnQC}A2U#H~V0IK#lZhiV9ZQlw__U_SFwkRxR=lSurgPfJA0bi@+Och#E4}bpo5Ije-qbqM^>DV#3a%w6_2+ zC(0m(N#RBSlNr|y?~*Ygi&<%lffbf`iklMWUpd&7JZQ3gE3-IBCbc8es*9dt7bA1O zA(5~UUqA+uV&AJP$p!%x0Mx&KrLw(B&tj{G(Nb>F%0!wHVWbWZ@AM_Y1v=!1LpSfu z48mOJR6&S>Onk&iHxcK585a^nghJvnk<=un)k%BB?Pw9@_*~bs(&1T61WfO!x44a0 zHZrJHHS0j|9&*VYY^f~ptRT@ROqo5V^<9uDn$7r*xaq=IS0Kin#~H;MYz03G_A>5da3$bsoT6I!L9* zvi!mZ=JiHBV}ibQsYs~?TV<cUBGS>+e-k+l@RT~$Nz3&XZZ_mU4v&=t@ zRow*XIUPvRTf8eaElPB9#5c5BUf5V9(ANoy)HopdS1sQe^C*?G-2_?Es!nPVwjcY^ zH754Lo&uX-Rw;r@v1#;o3dJ5_B~vx@($Vl}scWj<$)Z&(?|nJmf^`kpo5MAT=6lr; zrnS>o@?5{;26~W`>Us1!Zaou;;t*Mp77*bkD3Kr)b}~?_dB1sCJW=lxmvYg&2Renn zj~u^W(6lUa=G7Fd#V5M%2Ta0e2AZ7wRlUe9>*4|6!pF5QGHI61)5~tt2=CQiQN215 zDh>}*>hk}S6l9HiZ`5P@Y;9C!jTM*OhpC2Q(GZ1-5|W&lS%kXq&9dQ*O%~my#2pnV z$6Igwb9_sejF!mLktD%IiV_@Ge6mRRM*?u zVP@UYN&iTKQI<0FFK17At0&&^;+|6`(jnui9=ds0@b;csd?WH1!~DN?1=uQ?d@c=X zx?%y)M?|tEbwMAjRMqhf)Z2fyWiX0koD{l+cMkJbucs}yaT=k5{B7JqUglJ9kBi)5 zZvwF$Y}UdXBd7H(&1Imc;CkVL$Q=Y5z5OrO!;egqKsL$SHKBjZp(SdPP;{cWxBN!G z-s2%(0Uf$nIw@dj(un3_>7hJ;X>j4`Xu8G3x!qTo5p>^j%D(v)H@50s13%s-TdSyj z_-xC1F-Hxgo-sBtvZj6c_z%w(9vCwsbvi4^G5HNiJxObL|2zD`3OpC?I$O1%Zi9-n zPWA*gMLTfXd|m0F&d3oUE+~#MyE*x6bmn*-ToHeqo@1Y^RG=+)-~Yp0M=@iZbgyqcYS#QlmkGs?NyDxc#_$G0>A}0hJcU+n%H`(rPTcwwf*Dgg|D)Hatsm z&n>@PYQrpfh@(%RnIp9?qw5!6XSJc%K?XE;>Vuc z=+YR>vE6;2MTPex^{XNcOsnXh#1i&sR+!V~EC9z7Mab81kwadvJ4rL*7Vf`MT(U(s z7`|IRr6$ldJ1Nt9DGg)ek%767BCW;^EB6+_gCpkAJdu4u8{ z^;YKE%;Sb+?I)@-li_ZR|xLT{M^API?BPh^N_~3QE$$saog8h{qUb}p#hDbKZoEu7S9{0 zP*)Cow|#5f?mgiaQhY>C?FA7?7TY7Ujq=(5HXk&;V%dcU6El3ECs=&Y=g$R(TIuMsaeCa*uPl-AA{_ zL#IQAAw#~s4<%*fh81s2dh-r3EhwM-0sgnpB(WhaA(%A^c+tyDtmA}N0)80dk}m8# z!NVReMO&3{Nx}Oi$j4$7KRohIgA=A^oZfp57jh{_^&`4{B|QS|6=oN|bm=pfJKtBh zt_-mMjobg$H8R&-(*V_h;vt5YWprAEYup_Z{R??3b$X2M6Nm6dBR9C*Gk_5i zhblj#VN!d-t1({&%YFpuc|~dm5-Gn}PM5Z1=n@aS-?>f@h-|EJX2Z&4huWbYnz{tx zPf;{o*LW>)!r1)iUtisMf$97%Z9rzpaqL%uc9zJ}j={X4xmo(j?d==VLn>~NQEoWK zu^c-wMKPmKcskPgg&@f@ST(^2j_6S$Zp!uSFX#&5GWqE`$r4dnpT{<#b%d@Rbz`1C zrMu>AT&^r1TyP-O6Pc7kM}4JwNDPE&H$I`kC-P5vM#=E}<8sn&0>gI1q1f_YOZ>LI75=l z%ZI(DboWJk!I5%}>bfUG>+BPG>H11&?CR&cIU)8{i9ra=57SuH_^Bp`%FJ@!xzKT; z!W*NlR@(%pL4@iLZ~o$?x)*@qsEnx)iFW|&2{CAEP0n4>sk9?G4Q5v4A?FiF1pqUe# zS~nC`2S|p)oo7_@Z4DFFLg0Stf%2QP{-#p4;oDd|b@qk))njw>;zFD8ZXi=67kPiL zd;fFIqJ*zt?AgG#%XDc%InOi;n{mp$3l9{GoBvXnL;iUx(sn($ZkoIgDaGFQ9ikP? zICmxQQl`SGFrEL@&@q1J8XrH8Qe_kY;#;OK8x7WN|}2ZsbHkbhQMEcfQ`bECj-n zP0edWX!aqv+RdD}n!pc>!0!X|SUhc7CSz?m^5KFM_aenHl?^mOcwg(!U1iM4=Bu;+ z&lo+b%N#wRdiT=E2}cLRc~6G-(zmj!eEO;EBT|kFb(8QmXHf1Ve~%}h z0&OhL}F&*{Af=w2tBZV;eG5P#3#rR zFy;J&_EWJ3!2=H}{nPGb?DiJ)AK3ImK*Wm`39!TkfJA$$w_V_xrz&mE=6s3Q1irB- zj2kbxb==dqL24(=C8I#vNc@xK5j#KYG01!tct;3{cgOC&`y>qLU-A0cilb=-l3@bP z8O%aRtvjX8`Y%SQz3!W;I{R|jQy*+!Hc9$4gZCWE1!eOV` zT=cqU32Z`O0$n!a5T8oqky@@EBszIv^uE`SzbJu>b7Wa76~F@N#|0 zHQzLXQS0dF4X}SYcbQmrl5P4m% ze`bWT)(b_Ci*iSw8(d6i4r8;xA)tneRNQyAtYii6U0*U=6RqeU(85Ns)o-G&<+g47 za&2}>C6GLrBOTX+1bP4Wg8j}N=MG**t^`PRJ}Qzp{txC({SkWo2WW$8tCZk|6Wyb=l8YK?WOYm*0-Z^Czrlzsv44|L=7F_mKbp zCwC4Y%xj!G4_(Khjnc zZ_>FXqo&4l1z;44Hea5f=aO$P{we?^;v?BS#K1nivq4K=MX#>N1yjUx?5MRT z(-uI<;M&7a7F&k0L&w^SR zXm*BGQ`lT|9C;+dr4o5 z%M1wg+=FP4L}ZMZt3j-`I~Dzq-2nsjObMkNim~`5Z>qZCm}N|t)$m|KI4I}mIwfdN zJmpYXh+!=eQIadCBwgSXF_JNnXq*d5(h#g#x}<&sT~d0TD>en_L&V#it?003_|zie zkYg?3UN=cp=AGf~Nj=h{`LPdRy0ebRPv+TB@UFPke zAmPa1pqK~k0(n89<$pcc{tHz9Z@v8sVlhGVB495`UnS$Q5yBOH6ZWSHj8@w$@}Glu zP!Msx7kInEth4HrumUW-VF`YrHIZX~?uio~^akK|A=Y16n&sc9#pAJjSSJ>G7f_cQ zAdy0F&?uM7AyF`&4YI@RbZ&59K~`xApU2Ks>5CcBM~-qBkUf9lsCwB<&N~C;<~pGJ z3Ct(2I4e*zbNEOVAFPY@air7I{sJnk60nH6g+xLJ)cL4*p+4!?u_6Ln(J&lENes1yOm@gWG%&a468zw4F+**#sR?SP} zXe1?$4+Z7<#yft%%Vzu9m*L)br!6k zR(Q8;2_Yhw6g98c@Z{oAzeJL3?08Tvzd6p7{j)%^LEjMH`io0pB4=cmd-t*0(pnyP zeDbbS)VnN#m&E(&DLT(d{u1r5U>Kp#UzLM3O}LA>5og;))&1o}aHt!mAJCW^CT%Sy zf1?$MV^sJh$~s#}|DnSEyZTaKKztYYX;abAv_GV9awau`IHkJQ*cTZZOrU8kHlEH6 z|BPUL+bsFJWPR6hr<+5{yREmrP^%P`=MXEDhgvY-7Z?o-)b8|glz*GyVj$hb?oRiJ;^D?xh{$z8R(629g|CXDSV)O?|gL*y{5CQdnu8_@B{G!JuM?}txU!qHWRa8Ec)|TwEWY!A$qu44?{nYM zGeUPTY9WfcB06`C=E!7ez*@2bBS(nP!;0fQ`?6a;I4;8JS!{yXG&96k(ER}fC@){= z_@$WQynlo;%ye^?uoTbRfeq0Z6X%083-Upo=)?1o5gns0-=`^z|AXKDayj#ENN8}n zignvz;QYnnkQm(V-$LW(!3l8#>g!_|YN1z3JdRR8pZV~@cigJs#}VWk_HfGt1%XCS z=-FxYjQ0@blhgiT9j*yQU@O(!e-LxUZ9KN-0oG(12Ujjs&h<1Go!00(5ExsIJ`Zpa*lnVJ||ZM;21c^l}J zR1H_v%dr!0c0^Ego{XnOUfwWVEjBX2lnYn7oS#xUQW!ZD{zU8NO}UW>l9OyrU{hg9 z52T^;8ahI2X$6E_c9%d&L!#X!(`iDWuK^gx&QqrvDEEQnS@p?(XE$)Q6@pWX0K zv>}V7?aKKk84uZ`0$dQ4a_$!+afRIav9IbPdBUT^*%Zq}Lqo=ZL`5E_@so2iOHN=+ zS))Ie+1gWMefc8H;oaVxLD=do7iAv{ReTYSFTP^O?Zf;8((L`JxtV5C$`b_sA0*!&q;IF@|pRkbXHTPzp4GonVIMkpnOV?Q!0c_OEnzriL|g7d+~xoNV@ zeGZo>ey$}hcZG=_AJ3FbVjX=HIAeS##x8U3A{f7$qYr8l8xFCDU@Qk_HFPX2l4bv^J z^!QEq*f$I-U2}n3EA3F z>AUADFsXv)Ir^R;Z7}ZdF6#gS(>*6+(rrPmy)&uk@x#j2AFIufs7V2M_m@U6`yl+z z&oyDsnQ7&^U6M?wFF(fnO&6&BDVjgHehVBZYJ6{6_Ja?#;{W;|x)T}*0%5S#iK=i^ zEbjPsF!}cG{pRNw{Xn*#+|+qyhGxt|j0iUf`byk^Y%byQE}*%IW2)+e+eo~qfm>H< zI3a)4KF>3qg9-DgtbD$7pl9Dpu|XgaY)aw^Gqe`{2736kE_BmZ!81NWvF3o{&#c#JbZ51Ks#gG>d{&lOtqN)*L z^T@~$QwrKk!dkmSdkS?bj-eH!i7{N6QFQn@LAR{9wF4CO=JNGN}7K1t9n)zDGj{~ z&o7~%?|TRDECJie_8&q+9}zA!n%6U-y8-OAO+I3e+5U;hjLu9}>Uqb?nZqqA{9&~L zEd&4I?!yAPFL7~xO6jWnCaQCY=~i*=B-Q9S(3(r**7c)AD^+LZA3^wt3i<9Xg^GK9 zb_^Pw69|1u^Rk`<1}IpSYi;b(FJ?IVqJ=p@o|?#)c6qmI66)hHpHBh(@_650mXZ{s)I2g>aUK9j7>ISGq46e*R2VxxgC_ zoXC>jYWdW{(^4|X2SC_i;p9CVzbMXpRiLczz4D!PA)FX-a;RxYZc%zQ0uPnczj^A) zH~I+|gXzzb?DM!0Lfq+>mZ<~HS_#EpR^Wv-|NAcg2cTTGhPoaT;?*dqr(0+X%jb3$ zL@F|E%HqC+`pv7IC9XzuM&cbCk^YC(XB)cqCQy7P*Z!C1`m{xQB!dt%)N{-)KmQxO z8s|OcWK5CKQ+C(n4i)mP^spr*uA8@4er0@XC6(F@+anzAg-52(3=Cb~sIree01{>$;0L4_BI3uP54@ zG3YUn>N8R2?_5FX_7ExnrIQoz4uT=o@^l~5)Eyp*aEE*9J;3H_oq8OR`4Ite%Y`A@ zG6q3xaEWXJ8~OvmG+c2eia>%Fw4do$$`dJFfVRbN?6j)rL+xAXvs+$!=l5bf1(!W^ zoz8eGP^bRiMHpqJt2)2p+P#36dV5WgTa&jvovn_;qBzYLZEmv@uWnwM<0(*H8S?(Q^orF6&mA@+KbD#N) zq}B!CKgG%^X@2FSf7kVg;yEz*)B)gPVeF#*%Z&R^4N4~{aPCNu zxJ!urx_7i7>O!MHz%9<|X}6YZE_iUnbrCZD3l0dD(Xc44@d_@>?%{T}E{rFY_);;F zB9!KmpfZ1>(p?D?J{{(UYjYsYr;ApuM+$N@{St0kG>J6fMh3rUPtP}n#&ZiWw(Yxj z%SDDD33aWk;tZkJsDb)B#fK}GNGFvlVGi26k<-yhyu_R5FhMzC>kk&q{ z=mQ1HDIRp**Wg8HN~mM)f7^iks}E^|gfe0&Xbk8XV{!rVp&sO$1w!9o&3hPE11F zKMtYdZN%dndeUaJmrHtH78dZ=I3QZVCyKeGB(8Kq9-kPR9Eco5Rb|h1$o!?4x4;v8 zk5{muuo-_}XV2SrY`&VN^u5P@KMg3*|7gTm6sJQt5`cOxTr+om3}FE1G1x9Ta5<-#rEB$s0@0?lDMA=`Z%;?j+=N)#XwlS6GA09hAyll(-XGF|HI|9K*qFemy zn|1aNe*=IS$h1_+SI&XK)EEz?$$e4U-+=wlA4LB7f+Cv>KO*?vD7$HANUjc%bw~Pt zF#CpB>T?uo?(LITy$9Hh6mb-)p?ZCpFa8f4Nj(~rEfM{>M^uYGhPCa;{t}6h1RaN8 z(B7&2>sd7ezC(=h4tc>QQpd-ZRHn=k0%Qj2;s9 zj(JpU+}M9JZ8mAk@)eHBwHrKZ8H*(|N@ti!B{75?CUweZP|LLUV8V@7B$692DASc| zxFr7!%UdA_o%W+`JBqv~0Hh;DxMtRwF~=Hw_Z$UeWEff*K|_tO)?6Spum!NE;yR%o z+SxIBuDvn6%ogu0a_WfL@BM11N`MmU#AV#GFCB6w3ohAkkEs4--j}^FLbEEj#Qk<@ ztODb<#l{5-gWO&Mh2CfNc6!$!d#iy#$hq*CePN3(s25n=gfA6D(4KL zqX4uGOP_K$J@L(BHE1;28uJC@hDc?`uVO8YS`%}ImaJ}AkFj_g!gkOZaV z9Zk^)UcqcDKapMyqS{^ESmfK}0z+nT-MQydW7i_QLpQPHy`#+Ic4T}G3q!c9kQ8t@ zBnG6cf^YK4MZ$$7>s{W^bAdB#e_!~9=UNj=Q;SQTFyus6bk4125_Z1BUfU`dbiA$q z2FORQ2J91_&{6dr5hN(D%rqpJ(1YE}d5$ePv?24TupyFAUAC4+wOlQrGS!Au1mLo%MfkNF=L95WKqxU-U(99gds5 zGnKNlhL7%scO~|ur1gk#_HOIIzc8d{Acbg3p!?0C3PMp@_mh_&X$G8YxUKN|RcXbl z{+oB)=U_PvfGIiI!g-=Zot0Vs;f+t7s^GowEjGYzS}^oEcu)Clj4?dS=qU+DtZ2Bx z;tLcsnDK>YU29-bYnedZY`n_d8q60{f`pc>@X1Ml zEB_91zNQ@EqHfPn>99!`a!Q@HJ1%(VYgp#B93g@AU(mUS;$7eJ#`g2!8AlKporkBs zM)MarI;ppN>irdas2~-;)d{)Qy}M)GtPGt@!L#y}o%>g5a)L## zIB}AIvs-;u zzF|x9+t(vl3RAL=b=PpSU8u?K)z2j%P|h(PO`}%e_hBQySNOcOco5Zw)8!;$ho?R# z_XN%0Hd-i?>7ixo&bLB8eA8q>>*#w_2c=l#) zsL;R`AO-(trtu%DFopwSSwlVZrYuPKI^#=<5h7_H$AEXKsPIt2Z3xOe74Fef>7>^`>_MI^V^Q9-$Ku?8Lm9N4XEU70JQVPF z?@HLrt0n|u0PZ_$$fVreSP}Bc9JTe6dZmIAkLXYR(96NiKZ&-WLibVl*0qRkokH=t z*iup04RLs}-)4HSf=X{$nw&n1NX&XrF zGeB-zgIJOiXkX_t;S@-_^Sl?T>P-H%N9z5+$TgU#kWJEKCnQOgP5+mXPq*N6x%bAV zcy$E+B8E{yYv1lj95iFi$z_7)85Pz?zzlYoG z(Ldeg;T+N8(tyeuw?+1_T>@LfT_ z9SxT$C2Kh125Xe8k+{aC{O3AK&AK-n?lZ?}D-W4l@q z`A-KY=8Ko>;zD~oxmdqS6>3Fev#|=rsg?&$4wemGWIA;%yLkbDdL6@@^dR;+O)W4duweuTd~;^_Q#0Ps%|K@u^?=pg=s zec7nJID2x3xM%>+GLC+_qFb(^tQNqZWcdWkG|fE9h0fh#ukvPPWotYZCXqw0_R5H@ zb2hEug!vu}6Kxu$VNm8S@f4)bwd8fwImKaE4vC>x-G$8hLxtbFU=Hy=@&Bu0ef$2} z#7OZIV*Y_gNm>#^g- zjTvu~KBr@;A+)rx^!wLe==94%aiV0c5HHnGE8V2|QZ$UE_0}&*6U+;Bx3$YKPsSEY z)Vv-?X>&iRmYekaiRl2F$3N^A>|y%uc}&Lkfu&7g1=m_ehU)$3f!y$8a8&E4A*gPm zL4luMV>f?mcWBPCo+Xa8)_p02x|}iRy9zruZP!VQiD!mhx#GiMf$OV?zX6H_m%qB#GaSoio(7C_g>s6ByW{}dx!m>*a=CJ%e+-e(?UR9?hRqyP{+CC-1gDR$-@!irCdq6)yrYN%!V%&dC6n5S==g z_L`pcH>re3;+^Ym!)0142?rW9Er^IQ6K(@4&J9^zjkE8kmUe^El*unPsjwvaV5B7S zQ+)mG94?Yl--%+xBjZ81ORB>Wl!0~yp{z$CcWUuF;FtY83XpuIyrPobq!pIomF{qb z{ZD}@RU))vdU3}f|0RDq(fsjfly&8pGI6+V239wcpHZkp=hZ#iVL#h2V9T~SWMpWC z`EtO#R%8&vca!*;rw0WrbA-I8(n8W@cKRZG|s1QZxi&6o)%rUyBh~=HX zA;$&mb7mG?nUGylS1 z)hwQ9ft=rBX1)u`DYR)_*Kh8Za;QdAF`dxscm-*7xOMILE6kr>9nCK*UM^b^s4+CE z3cu4`%6Ky7nYmJK4we7obL~*HucXCnM3%+YgW&5YXH|DD5$z<_custqX<4Npr49Fm z)W7e!%th5@Wom*m^VD+bbA*#ZKI13O#LWvgUsm}^U>leT*~(KAKQL_g~e$F%;-4) z&0_tFJYlH>X)mS*HboE5=DGJlEjh?PYrn0xEOJ9#4ZY|vRC8OhZd_>N?m1o>8e%I$ zFuD#?(0#G%hy~Y?R=`sW1BPX!IEJwumODo_ZVo9%oJAqhlvoq;D0HEr73goYHx}y1 za@7<**EfyTNBJ++y7kB0s51K0_~JglOGVDC=KPP|Uhf4MOl&eaKNLH)AKFljI|PI2 zkbBJT&Q|rywhiRz#9!_ZDo4L)ne?kaC?oPwI0|YtUyQ8K`0M|C70y_U8X<0{_5)6k ztQf0xd;slCR}4G_pyGz{OmejC-)t)H8~rYRZ7*~{F)6&(Gi7xfkgpl?7W zu@W-VWLu6$y_$o&687HIIMz9+5$F4zI^Ddof6LoEHLdROyR#J4@;R?_>uO5TC6HZou0$V#XyBVB{q05ZV|~ z`S%y7*wUtKW8IrzV)ZO7Z{V!FUp}m~Z zCv#+=Ja=S}u>O`UasAEw*9&%QKc(3OrRmkkK)8j)dT8(SZv;zw-fk_Qu7XsjrGsq~ zN`Ti&ylGDKPdx&%2NOj-1w9taJpio?`cQ)te#zc9Gi{Av1kR73biIhbF?uA1&S`@_ zKc(*yvLuMQ-Y;cO1R~nUs)ftX2Nvugzy+~0%D|*Zo9{=;Q;r(2Rq|8|`Uhw)!IXa? z=leQw_dfEp=sd#nvdW>_MB^?3XSR`Qc+ z{R;6<|3d$U)sj80U7v1vob$%uNkoJ7A#u~IpHTtLU+QfO=P>zy3}64mRz>wKlNn)D zPF^z#KBVaT4z^~MacIAd)eY3bauJJNxbqxr^K2HRPGfPo0jD9~1v15awM*vb&Pn^K z!ucOARtmI-9u3me6uwa49MjT6&}j(a;IRDMKM~s`8>krib7d+fsW(~3!|N>ERsKc* zQh~VGvTpiHrJN=N&tomBULQN05Pt-L>pdbjo$Ys1ro!C97H~p;opk~$2ua$M=YbBM ztl%@-N5ohptEoxIKhTY{)TJ~Sb6mljBlN6XM4>0rMh|C6NYs`>Gd^X#<9L6QXzH|g z>qN2{SNuF6ZVqR8(TM}G`?;RS*{YWJ#xaeB*v`GbB%$0nciK^%&_??^QT92Sna##X_)XACX@M(W4NPhRUy3j=GhTsX#=%!kb`5iIa#rrA$KRSWFk$ zhr95_ow@mdxWy|)^QG~eCU>4=sxRG&I-qi)d1tk}S0`4^i|<4pZf@S}y$W`9x5Kq8 z)5SlW*5h4Dy>H2iHUFU{|6fZ;FrWg+XH}qx8@Bo&C`audlf0MzRz7U8h!Ib)>_`i2 zEqnT_Z|TC*_HFp=w+bf(oa>T7_L4E_s)f9(tBT;?6ey(yplAK_Ub0%9YLouvwwE3q`AWfu2%k#(#%;LO_+X-Rf zM!wtL@U@ofZ#u!?(T@<5hv$`a`uTyXudEPX3~ zJUsT-Dvc}k7S@uTY^r>RW8hfo9YJ~YjNOw^dM5ARngLKx{i%GiR@S;CB96n?7f*`D z8qcvnvd^LlRVIZM=3|mXMYku68~>FzL8SGW4dE9O#r%lvNyI=Szdqfh#yxIDXr9!c zJ@{jZJ$|L5r*OPPUw`=HcXRV;xrqnZ5(=x!=5C={{BLijX7+zyjJ6mMRrEXZ;x!S+ z%9{?@n<4AiS$|MhQ4OZRm0_WX5&#~j#|!tG4PUD^?`jn9Bv0Szc)Z{qiI^9nwg92_yG)E?^; z8bEcdifY>L9~f>)Et9}OgjiK5ERbu9IM8~lqeD5vy$0#F%drB|gSg@KWi}{j<>lsB z#LACb5x{?i@)7bpt^8Ti;Dov;Ei8D`<0P7+JfsG1Djp;<#rQC%Cs8SrNS`d^I^ za)HF8*||bYcUiU%WP$B~Pa4bE))Aiqfcom^(Vv1|p8my&p=XcIWE(mi6&Ovl&ZVgR z#u03UMW*gsx8s>$%|o@W*>_+>TNzgiX=H9ENqdsIZ48)|V>Zlet|Ym?UEIMUJG6sf zB{F%I6>GCq?fw~-*szvtqsCC;7B@;#JBOqeUyF_?NkdFu87|k$H_qj!ynw%8EPmA- zfP3tEr<&3&{`BqOPV)xQfrT$Msu+EMlo$B&w?YjSB*Opi&x{5F65zOBl#C#MUi##r z#3Gyw`)Q$Df?_ACKXm$#Odj>$H~^(t)blSJuS_w+$mxrS#N>tJfv@(NumPWOiqPm} zOlYygNVh&1IKN7N>2l>V!+e3a9M7;RH29uw0XUFh8D* zjhl=cnU+LF_`wV@O)fn-kiS~RhkD_;E^!maj})WJ)*wlAgv*^!z0D~M^_$N9;Kz;2 z=9J+hx;bZ)W&!-}mX0zIVe~edT(TdPS`X0EBG!*FI>6`_Ox)o3t2rUY312$K?9xT% zk-KhaU=V(XCG!9T(88`*I^ncm3yes-arRdDb%FNS-t2=i>W;m`o3gO!n>zMg;QE|& zGu!ioJ6Zbp(=u#_$%yX|Lyie!XKZ?E*5&Djl&5xfh&T#Kks;CbJjg6YTb5C0P#Veo zU?}0j-uv2N$5xR`N!4!#Ti~gJ5P`hO{VOe_Px`dAg!t{KFQYg8u)j#XDnP2;hv=7B z`gM>V-}+8l*wOZe#Q)@x{4*^A>W5QP%>DHDw+(JehHp+so@xf=oCmW&MCYMx={fPE3agSU{m`polb^Lv(v+Xhli~7L%X=hE~ z-&Q_+;z>%0NHx==3*Uk}IA1yeMBEN+Y&q{xyI8RIhZBVc9+S^4p=Op} zQ1q@?EwczdX2=rAX{@lILuTusiUO3qYG+<4Y$LR zyMxQ(6B+8*w3WF7MEqy51_s=g(V|k)>~k1IHSIeQy|QUsjMm}9AM--&)f(OHS*nLu zuu?23dE3@mujftYqu<|fuxm(S)HEfa#BAr+`4@*6T#gu-_+IUs+A&mKJf}0ED$CX2 zFl|o6bL+j&z4-9ds!d@@v9m~fLyY!`fZcfMAK4ft)_D&lJB{l^EQto+FE_6zs#D22 zb<+h$Ut}!RR?4R?zpB`K+N^BhDu+XaI1 zBXNMkq+B~JaY2UH_oaJuIeDx*V<;dX!^#uOP$#R1;~o^3jM}LrGV}Is21Jw+hV(em zr|l}<8wU1dh@PM6j@xG>S zuT==ruSYI%*z-U#OpOc9bJFHdIphQ%qjomaY;NQ={Wy;{_)bJ5%KyI|=|6xik_ecM z<8YK3?3an))ejU^zu^5iN|(_t&*d8amfm|C*T3c&f}AeYm4dHTIc(fFAQ9TDfzX6@ zfb|wj5{p!cw@d^W5qNJ`hS%GyI5gr^xbz7iRtamLw5(#~7fwHxmIr-fh#kS;7jEN% zlcJqHUxoGObV$rCuPxYJzDM~%B4M~C7d*7Bp3|yKJGf~`=0jV-Xx>DXr6h!Zg@;2@$^(ZR&3))QkIJcuH#3H&t~R;m8oZ#iWSx7Q zvYqjV9%mhOR{1Cs8DZ~)(T2Ypid?=1~ceYoUCB<*z? zSFBBzR-4w9az^p$FHIkq?z#oj#h+OUQbaGXL`2n{(9(`AFnQsKr`oNEB=_gyD23ic zRG$i*#QU|X(hP*6^KJ0>Z`5}2W!IkPZB!T5>-1^&JRkRrEVeYa&}t{UPCHXtE0ha# zZ#kaH;6JjoQF0B<4tCu5DhNUNIb7Q**lJ<@FqsncUKg zMobOhyQGE1z~Ij794Bu!xZn(PNw0%uy;DdMJW2Reb`*qaK9C&6I`)O*z)$7ZV%*#U zfAr7OP_>KD3x{je{*Jwww^q7QAy_=g(uB*>WI6PY5KnbAQY>5uE|#bd>7^jm(0v!+fwPfswlxZ)iDVI_;A9)xP)>{QA}UsLJnlxxx9_F|cb zE0J?pD)Xla8M55x93mCH7_Ew0LAn0p>`hFdnUhHOOA1l*`X;~0$dDaJu5_ z6phZtJA+YY1bRuJlO%WX!|&iZxMpe=z4Gla5j@|pu)PWwx=fB;_P2ytnL+v8{`|e? z9J!s)jBe)QMn)H|dBb_E2hM-;fp5z9FQwmTZiF zWfXJq&-M-aOOJqZsuN@+N{1VA!s1gY@}}b-~(p!BTU0ZCzLjdqs0eT*+Xe9g3@ltVM7E9P+DM$9cLNp$c|u{ z7uQC)&TV<`cz2awgxLzgJahjvj;#xA`#D<4O^J(Mc!gUs$k82AxtnuIvAYR3?7Mo@ z$At(-%%JW=TH=;<+f^plb=dhKC;maRi2zmV4TXF6pC(JT(CY1MjgS>Mct^f*XF(qf z$_gXVkj&f)oz=2{dEX_^8;~vgX13?Yy&dRj+!0=s#wEuIl?wUG%fNBY-Z+xZG}&O7 zm>%Rv>}+}3rN=i^e;qn$$ApvOT(SJO*AO!X#%G!<3E;43$Y4e*iN0F0Jj5lazCs$X9%sbE1MWsc}ux9_P>< z?_T{f{2n2Jc5HHQ^*?7b3;ssuEGc(un!>CSVsVp2)-)l6crcqiaX}y_?6Rsd%8?Z% ziq`a-bSppz#}+eHVPe49uFM~Zc*h8Q_^Aj2L>x!thHqBAUF=d?hYWtT`RBPyX8PH6 zLUs$+E^_CA*B4x-S?}X))FV2qjL0`N_qppbO}g_CN}Mjr0|($A7m;VR{(W6zg5=4; zT47y%+Dvr(RZU?wB))Rr3uMpBzXfs!^6w-t8C%b`3ch5wZmYQtO>KAjaN z@oF-PNVnS9;5)VEunlnco+WjA17SW@8#O)NU(?bus*(+ZDPP!|Sj3l1?qrj6_$fvD zdLC06mXSA$j=~S^E0&yR8;`qDlP*+gMkjF0L>(h5yLHw3LpYQu!h}#1&v~@H4j{$v zzFmxV?Y}9xedeJdY!_)tk(`00|8^n#0{tBgZQ02{F5|bmi^jZQFDyYT@9Xm}+2gtM zp7+ieQHe0-OD4(APvSLfhD&To1{w6nY)o+{=n_YT@rP71Cz96+)aI_5+FCMUJ*pRO z#w2xgUOu&WdsUwFOT672W=73Tv_m?K8?m?)+x`0&DSlfh@N9a5Yqj_Y6Dh1$U1oc= z_>Af;ZH)qNvv}qHyisb`D>9BdKbw!tKXA8ye+JW%Rbqk}19ucBcLG9$+P@|}Sj0@= zayWns)mW5SYIRedy#OY2oIY?guaJB}1S!3*gg$pgH@o@+Vt@c;l99+o?k@|bghp&y z|5h*oF^l%$iPtK2l84+%_U0S$ba2R?nR~w*GNGr22P9I(dkVq<9k4Iu&PrR<;ukcG zqQw62qMvSdh>a6vg$CW?aPg)!iT$82As5f|{(=WVMsRhK+9ebH_sCL&T@hm)I>0uX zP_{YeYZ4%I&zk`j;)=!FqtlqmXGK}IcN+b`HLbvGRX0WGhx0TU?hC7fC2|LFk}zCH zYFg=FM|>3&8WgAP)!+(Y z{X=wZOkQ(cQEIqkzMqxYiLuQ#^U$`_CU*iAs>~b7glxb>-+h6j7T~|az1n4>Th;6u zij4zg9PC{msH(|NW){@9)s5E;dv;>TU+os%-iG3{dP;h;!62uUl$L1U6LEy1|Fk-4 zXpyV1@aZ+KWrdFq+bnwQ>!po5GnRJre~431nFVcJFI_e??7pV8rbQI8W@WC&fq z^7e||x8M1p;tPWkJ!g`SsjUCH>AXX@Vdt_)i9H3tm}BFQ+?#5I>}KsMGnUEd)@-{)p|)5xN7SrqF7sO&uL^#+bk3t8;y9FT0x*Aqn>I6{OrF)6s`%lL!%Z zBUp_w+C{AR=*XP4KReA?1t^W0j)w-x!{3&K2vIDoI}xyPv$&C6=a!vx9{h#!;M?!$ zHUj>*9xI6s^PB8MrAZNDtbNX3K0+9Vv=QIj3?3`_ACSy{wm#6ewkln+1(7hu4f$H# zgMJ>H`&3}*v5jKWaw|37Nwc9vSM;#uXhrR?wLz(KOigV|(b2w~4{ST9Xwd?QxXL2y zVYBkLB7dgv%6L*1ZWnq>6?YOvY`j75OWcy+5-FV~W<3A4N4V=ohIpkD+w{SMNy#p- z?Oc2x;pE~($2wXgf99Z!(_$M*V8hd3l+Se=X-gD8%TDxFgNUL+^ zQ>KGW1A8}MGp<(`nHSW{J zG7h2`=An}7lS(|sGk~%+9iJzihoCfyROvN}MfQH^&7WPX(PYp&>Uxa5#6@!WD%rK) zh1OM{UIQbKOGH4zI;4yMmQ^LI*IOsua_*omgY#yAS`6()_9ECXkc0a1LYF|cKlcZ1V zi(lvY7UHv9r{+=7QxZxal0n01_;|SGy7w)kOH(duNIo~}t8LAhRE2d^b3hn*rlKvg zZ&->z+)b$gN^{^({}NER>JA)^3rog5=oHQ{TT^E1ni9{DEILHi0IF4o-ZAjyy0#n0 zQyHF|&x2!DVRUb187z<7b=?PkjWQiyOjpr~1>vc%#RV-WeyRJ=vPHbaa{|$&4o?nT zx=~S3<@7EbuMhobMG+OoXu&yLbHJRuh{RMs1q=|Gug)H@6BT~qc`S)n8ELmXLix%?mRWtVv z+fe|;H(|D0EwezndeuJ~%g?pvy3=-2_>eG=n(qFd#GHUrj#OhPNn^Y3-m&s`15mGK zCGJp-F%A0di?3D?s`hPHG~C#?mW!PbUY?IX`G0J&j`@Ejj#er14J^n`b=A!XBe#ws z26RTdE$VKfK#*k|Nq0G>?q?j6o-!mrqWo5;28gGTP@jyK;7|&I%~|xOEb%B)QXnMc zZoy^|a?ESU;g9*&&MMri1x?ssAwY=)MA(1eTk%LIvgNvl{Je5EmTzfZ5-r;i3&&%mzeP)dJ|DY7K0V3jd<0#NdBGW<;n0x}{&I z%+?F^wd*$z-(g<*eXOo1c|Ih?Ulczc)Iv+3Q1)Upxn@c*05?q^i;|s=oRT=6S9mo=nxqP7h>v43R~5e}j?qh^LRi@$_T zdR1SNM=4#@lWgJf$#U2z7iR+B3Qd0Hc|}a&%BZT=S>_`o57x6;+aBW$$^53$S*9B6 z!AKbt-8z$`X~n5)Xu17pdMFc4BV5W{Zg;4v)YN5M_!>B(5J({ev6oOkg!Y3}J`5M>J77?|R2&x`1xYzn=@{%ZPvx1vf6cMQjsfgf29S%o=4d*llKCo=Orm z8F!si>b{foi5-qt0O2ZfVXd%&1O3evjE68u!0`)J20nhkNG$Fq-V~H5+b&U>D2qv7= zXm%xd^#w3Lui&S0HmfFN5`#3q&??Bn2Z#&o^69#A@@#$xn6DAziQ4!?sV9Q_9l6$1 zbf`1arboN5<%OkMJYq=e!wQ?2OtjxF1DRCq4^g)ty;|ETI$5BQz(xB2O#k#*Mum%s z$3ca$d~d!Hs*8T|sGYTkQjNFzYHcF%?JNJ~?fT#u-%Tf`ti=Vb-|Zl%M|7{Um^>J4 z9lA7T7&4-7pLFWJSd~j~8nP#IB%lqsz$-y^rbZEvOW-P#gJU~yCn2Qnef02A^!A$H z)H+ZeFtq|@1hBlo{@@*#!e~Y1WZn85Zu&0MR_4#XLGqpIX!~Wfjv6nMS62r~Y@f zj9lNhDFYYM79dL4EP7acMK^5_r*RAcRi9|)ZqBa>uSf5uZ2CB2;IPkyEXuEedC@fj zBTwl-+4{e8ohv2%)v^wFM?!V+nJ|js>*qT>D4o(*CS5%!Utw##xLR$PIvtB^MACg4 zOJdbCeHD#%riC1Kl;YwLkgY|Z32M^%HOSq~X1nn9+AAhu-vN0$(&d5C;C`@9qHtmX z`I|}t7##m};{W{{;37l)`3+llS2a}%D*{iv9U3@TGVJiDHLVlJa0o@D>+^|KLk-OSDB4iaX5D$tIm)G_UiP+M$0D~7N7VF48D&5z7xGWl*|BVw)37EP6w){e1CKgx`CLF z_&bC;JT;DdtS5w{a~H+Zo2mXjT^OW(YkTYgWr5DztmBdK>i=vA(moIm6 z8dG6(wk@K<&vHv>s%Y= zt1iY7JI~XY-~P72Y6z{kBxM|*TIdp*N8Mx@`)fnw)?&8)#aB%M&5PChgP}4>deo7i z`d!)>X%?!#8%JO3! zsw0jYln5To{m_+oci~92FeUy=$TQv7hR2jo19u@;>_2-p2+z7uduV{d2k42JmnnAzF{_+e}=yAuZO1B`5- z!DC%E`?@(yT}gOH^~6KjWGqV8EhoEsz&{gQ5;l=QAoyY}7gvHsJ#P^{9xMl5wiX9i zxp-CEUK6(%^RDf=uHbTiq?+{1^#<29ys)qBHY1T7oe~&klc|<50sH^ag1t+{I`~V)UEhz>3L41pq5OGil$`)kPnmKg$ z4pDG_5OJf~rnwJ=K6RKU`Mp|Cm69SOe1Z{2@l}czKyUiy*$A6KCGwCm=7$|DD@o>3 z4~B6G=;2kKeAV6{6Il&{d)q%Y2}W@jJ5f=-4~9N;g#SS7EfI zg2RK_I*mftA0%^y;Joi}ZXY+wus`>*apO-iJJ^Bf(||EXZAs26$$P=;IQh{t7%lR7 zk&SXl5Oe2_cjz=h(9p%cQjX?+(ZbP zd#se#4tEDppvq(wk>j?Jm)a-)61q zl6a3AxSt(s}Is=foq(fhHr?t;L){X?PYf}yzr zJOjn|cS8P)GLHn#5YD5RZ*Su2)~GMi!h8V!33tFrr5}YA{6ogFxX7F_KgKIl@eky z`1;yD)uRg8j^s-WSAU(Yx;!PP8Jllp-7X97kk zv!kmYsA~a-TX<$(P`>xG=HMz?8D36eXxa)kN|V^C#K)XyzgWqZm#1`| z&N6asEOiL%u>4!nfyjSfX{ub_T}RWs9qG)D6=C2)_{+`W{hJaq-IUUe+vGeAqwTTY zf7hN!{0)?y*FeE9F%v^#%o67#=n>x2?oS1Z`}O-E{2SZJ1M=6a7DIGg(=}!I>}0^@ z;urVFNon9D^Hi=h-Ih>B1+-UCIIN-%S552L()hOeohwT+#`tIp0$x2} zT6+$&jrBjYep_j_S3-FVa?{zTAYZ*U%Yn{$Z!<90t2b+K-m@$dwpeR5@*LxNs$nTW zobd8}FCWBU`S7GWKC?HaWdD_9!Pf2tL#`!(4{5y_8$HcFK7qL*!IajZbA70#_Z}KI z_?kMud=Ydj6u|A6Asp4-3fTHJgd&Ma?^@Y?o(y*kER~!G{v`|JPYLym;jR~=H>T{l zmt%kIiG$VhAY{#yRRE+8=wK&LNI(9~FMZndxxiL$CZxl1(Sk8}X24gy2y@QpjZ0%~ zAo+C*P>Fzw4OGM3O-IKO^T`a4lrXM1Uzs>doc>E$CfX0wAXHR_Ql}IH)8W%Q@xS=# zjl1}lPJI*0htKfKyAs&A>8X9mj!oR#);o?DsZdu(4JGCVq2kaBd5JXkx&p*swmsTn z-_8n%_RNzs#Z6?tCijx}+nFEJT>&)p!Dz2+bCmBxzdV7*XO^+p3z{u{qlTf4GCMmwrRbfk$!<8bgvwjeJ*+e<$ly`IxNF?=au`Dn{bYm!j`sq2G(EJK59iZ5NGA>E zKuBWgbx*Q=xXT%e#yzgLJI~R_VDK8z@Pc?J4{Cm5AcRoCw@uAZm(69%|w*P}cN2 zmvU1v3{h-4P__YgDj00oM=c9_)Wk42h;iC+6Gsn^7V&KKIGEvjC>i@Jm!rF75uB}d zQd{>FXzQ)LIFjLOo^};C1r>~0>5HVL9yvhW+xrnIBQ{um2Ca$92%nUBoA^|oR~oRF zBM_=g&nBI$_L)d1o!#RHGe1%JT=}+wOiHDb+-G*3rPryRX?1E>@YJ~LS{8;<3BbT~ zjOqMi_iWnkcyus(o6SyM1hEyKCfM)Hc|b%!5lteJVhmIBB?}K`Nieqle*+q@05n8A zN*P(Qf_SCE{p~*p+T0X9bP`tlC-!tDMZTUq5+#tas3o_#p3h(c&i(Alzg+!ANUC@a zK6=+%f{BDc49Cu`*5|}}XBS{Q^uKj?kcOcC$u^9rO-wYs&%E(6ftTcXbYz*etaPnt zmxGv5gp<6_FX{!|Yf8;Z(s=ti3r2^p1aT8%Nm4HbOh*e>pp}3eq|;~3BJRGJ6~gLS zdJDX_%R252Xm{Ui+Yv64LudNOX>Buy&V|(XMV20KfmW}VV9L7kmLK4paW=qjwViE zUJB_Fd|$9IC=+I8Js zB1sA|WsfjKFtd7|s%#Dxnmmt;jNUBATzCiMr0t`H<;jokCd(Cl6GqbrQ%b%IdAYg# zB-^{(^ICSY)=U#Z!8M$q5R`)YLXqP!{$$#kCDIJ+GH!}%Ees!-Z934SL-~ka*De%) zVetju74-&jzml6-G8&(b|L&(SOW%w(@dkVKgNerlu5GK~qW)O5<1$u6Rm)C&C{ZTo zx5KrK)ZL$q2fzE14)z8MP;+Vrg>>q_A&t3cbDz#=IefOV9n54|%Q|~Esu(-YOGQeyy-!C=-Tgm!CPEMFcPrGI&S^my0-7DXhZ!f-`q z1yi6B3}AhVU8HULA!_mSFA!~N$@t2@pZEZqzJ4fQKH(>d5r;-i15;ulzMzEt(ZueM zFu{%Cs9l)kkqlp^EePCVAjn%|cU%UXQ}hnylenZME2V47E78%Wu?cW*Da;_7;*F8J!@?-83f!)pAhgn_7%_|s zo-HqjE+XhPhrMjBiq_(f05$w~VtCWgayFo@eb*gD1;VLZ~> z{#L-F7pQNhp9uSaG_85f{Rz4h}MIo^TGnrpr=7*t5_ zbS0Jj^?ACRNWI-Z{bS4^hr?dA;#i?awZ5L<7u*h6Ub#!L#Rll`RK$aU>-*oXvod9A z%fp!!(ISdcItj;L=e&P|DfhxlRv>S>ch~Dyf3?Dvqac7MjL(Wuf2GV*K@pNzAQ$o) znh-^4QHy|O0v>4R(b2rz?&_dZG!n`Eb9jH>-`|5nBNCcaS2LRZX5$I2hl(5s@m$x_ z#RJPgTuFrliB^Zy-!4ay&>Saaxd-^#5GL^S8vCYs9D!N{r=|70BSCE0#Wb1P=*m-E zXQA&szF|f=Orrd-fegbuIW^Z1;bYVnf(d<1yx!nEk5Ny%3C$ksYUm}XWgb^ltti^c zNXXs)K|T98%&KFoO^M&98OzUP`_?^ekzei+PJ!|fSj+j}?FB`n5Z8*EhGMU&Kr|hJQI?$l1XSoN&qhMD^Thh&3012*X_$ z!bfBbX-wi~o}QZ1MQ`SCI!5cH?VINHH|!Mg6I=;X*|pJz^+BQEI;uckvk+LLUY$yq zelKST>JUnU#g#pZl9EKfxUSt&RVm`=so_SGrm>O`S-pB zfLVZG$#Ts5$(w2N;|5$DKm9~bX~pffdm5hUgQ+~~Kp}!OI$gu(s-H^tw>Q*pASr+j zB1p;uB?TgSgfS_lI)8>XTzv=2OXE+MJj@e-&v|?1`<6n{O?*GREWF@So-AF3_RYcf z)C4~imr}O@^nys>Q@^Z%%QTX|lRFzQ`-+1B4`GV3oaQQ}>diyoditTa#BY~PpBImAEs3OlhjcM=G$O=Gq+~L?Dcnl_ZnHya9&v5yp!?F_ zKsT~z%*{uM>JH<2Kr4H^m`|LLppawJih)5I!850RMqB{VcgRe0`vVDs^tGb;_C~du zspSx%0cwpB%$%h|*`DHs@2*DOc%3rVlR73w2wU%Vx`mt!URV6f@_b=m6xQ9ixQOHM ze3#8WP3=nqvGz;KE8{j6~Tx$@KA$!C?xxFxfn~0uE;1J}}=yTp>%k zDpE#(v;Z6X&uzo^mN`9YgZ2qO%&;?l!*I$+)a2ya&s5`Z(6-l<% zj461&GxNuECmM^D>s0im6QDfi+wkzjPHdB%SbXi?E*}-J6l0!dxt|^+#^(Y-5LC5vqgNunyPVObz=m$7ZMga}GerjqaND-U(YH)q(81$_ zsZG37w^UF2?4whr+c~#ntobE|Ma$WsgI0$bx$8MWmT_gSkt;R7kiMj0i9>-|c zox$y9y|!m`yeCP8ksu{1=c83)4z*5^8P3$@4aOGmVgkm`*%3HFP6d&O%u|PC^|9kz z5W1AvfvY;jy6MRJK9SLkkK#&zgE43Y&6VTsSppApwR=$<6%4DWXIY&tEj<-pXM_O; zI&y`|1Y<0WpG;8o;0F{RB{=WvF=VpCxWebi^j}||b4m5s@-^vCeS}-UHy_8h%g9;r zh+C*x?37qW5=m?B;C?P&9`0^euq2Oish+3T(xTQ@|DK^s*V)YJ;$Bdr_D2ht61!qS zVXk1&$aBS`MvKNo#3ZV!s){S1@p}EZjTGJvYt!R~+d8$2!}>^oSndzpR~A=gX?^G- zSku-1nb12J{>VqFoY|sq9j)nRnUj%Q*-E_pdc@K+pZG><=@xV5O=5zOxwjTPD_LzUz;AWh>f(zmj|R=O?G;K;V#jEXUu zF~B6Ve?F$J93sE+momw$E6K*ypS?P`ABKU&w1*vpSs|>LEsHwm^g5F5<^Zo4mXuFo z)?c2%0|`2r!Q*y0U`5r8&(eSccu{nBZ^2nH!Lv3Y_@R(26U`5|vB1OJm zZJ!T)ktbYo@Q@!>c>>pk5y8H9W*f~NiL2|!4T9?q3{G$AJhiNFh7=QHy>ouI zxL+Lf6QPpdGS!)A4e5TVkrrVpAa*gb3F7-;dP!2itQEUEutx)oOI3B}m*Ecbpc<}z z!b$sqUbw-=Usp)Z+-m4GO(cs9{?+2h&~$=t@TM+z)r3LiVtLwTb+DyTJI}!*N%JEL zhBspcJ#QYy9qiT9)N|~xpYY{(lK=~}fPUB{Q6u)HSc zPVYajKY1SfUnlT+VsSOvoil8+et1E9_Cl)h4!Te*BV3p+mY3caO6{y)hEI74(918{ zQ6(jOa}6e?UF2E2dFDR&zSs2=sUhqO9OF0T3T{;gH+Qq?UJLo#5ByYqSUoJL6YtUH zp2RD!Q-K@6qfu+i??~6)`BfvH%h1qRMK}FNt+7gpX5_z3Rv^fBgE?r@Q$UK^qP@P> z|3IR;O#_kLD$5XS%T$#o#?LaAdqJ}WvqMnS6OaoHV#E?q2Cr{%7gP>|$z(!t-x?n0 zP$64S#q*(b2Qva}C1ahns~9N(dIT)R5r4_&vv2bt628k6668AnI$nA#XoDpht7B(3 zqJt*|^JXtxci&qc=IMrqK4JgLdsKe1@3$?J7GoHO+^C57N(e~#7X)_j}gDU6^;N4f;75* zpHGZ>PecK73aS5FPc_K%R&1qYx+oVZ0LFo+FSGn6@hlG1(a_NF%dI_aW+iKo9DEz#P=OPxPu`k@v9%>3Jnr`wS|ku1l_J;p~R14cz=xsFV==ssbJe8||x{ZUBxjoI#! z=_@oXWyFN#dEVE1&-ayqK1Dk4ntuj%!3{C~>QQ>eITY7M%3-*b;7V25OA&m-di7_~ zHQ%iASUbKOhG7Q<;Q?{X@YUcpC#l3qcTNsC8dtUTcm}G2VKke6O7u$!$AMZxdS@g7 zYer4fQ@=!cCkemG0^h&!k`1!|PPO603ix){FRmN2Ap~Q(#=R$@BvZ^m7R8uVuYvmX zm?!IwD%B=0b(5GE7d=PD)eo9X58A8@$&xBr$(GG$W`%bQqYjGZ-VmcB;QIwW*v6=5 zWeJ0I*1e746ug%oKAwsyVzv76-da1mhHN9EKR2FRP^{i-2c;xcTA#L8x|Wa2rTJRZ zwj2`InX5eV5q4;uyX2m6Wr%;pd+*g$fC}0E(g%qm*uBwO!hmLh+Y`_<_yTV7szK@? zJXlfSTUYn)OqvHNOEaj7M2l=^Q@yfbqcytZ{qIOw>3eO3)YuszAl_pFLZK)lV-HJD z=!$gB9r5tpjw{Q-)JNMbqS@cpWh}@|{3C?a-%N=B!ku~))-<#(GA_LUkOZM)PPXK* zV>PH{b$)4(@zI}lAEnBaaO3#6xZngVKNagC>@XG>(@D_m`b02_TOKeAgm_7)>KrG1 zG_&$M;#hh5>!WTm;QC7$%4vCT&x3auH5Cb;z~{LP{C?T`aQrioIU<{+zz8Y%7mYE_gks@-ttX1&cklKZ}SH}2<0 zW|uU!{t&l&%IB$pb@gZ``KERUTk}z(_0D%~BY}Fn=X&o_u;$Z&3*L#*?yNjfiV$tk z{Wt0pu<>K^ohytjN*gry5l#VnZs?M(6%O>1)juwi$0T?Gm(#?UkNMy#I!k!^p%jn` z3>DT7`oF?6?rq<%|9uPK|1iq`Kiixa0>W!*B$fKMhH;0&d(m{9jMs2!Vz&UrzlM?N zdG7MA#ZP%z4LT~jqzN6hs%m6j2B4_GI>pNDfK;;%Uy>4Rl&SRV!3@YN+Xx*UxhyA*q4<52A zV>2mCz6Lnl=SaLcc63HR2*#}UzLYZF-M)PIP&Vlqdh!Dz+9eYhDoC?Q5wv}lU{t0p ztal4A`0-Y*91&GvLdtikA@Xff+ajfOVErITikW{~DT6SYFPn2U8eD-tS!oj+2Miod zj@0Y>1s=~c2zrt#Z1UUPEp6hKljmw^RSEpXj>DawOjKj8+dwYrb=R?Dbk;7}{cJuJ zyhp3n)?n~eJXw_t`tLN_SV?=A{!|$NrMM=5ob|%)3{)YEx%%lbFF|n`=}~}YESaykbG9hB9NHl$NR&WBx_r)yTycV}yoa8~ zo#<1kYRAK!%tO&F_WrzUI9kPC31)?PY7OMl?V`4{ zgAM-!q{(W)wiC!Pz3y=RYq>L(qi5pzopbWw)JjI>y3~>}#Fa6=MPK!D)gh%4W`1PM z#459=Ftq?x5;j%z@XROGs2m4O1c5S+^)L2whtl#EdQMXweF#~FIot|Yr@7X+vAGIB{5{7Lh6H|z0fHe+JWP<*-%zc>{Gh^w~l z`slm%694qP(qLQ+)81reB}G&}ZA{h9-_2<~t}##K+OZ=GB8^zJY2BYAR*Rx;cGwNm z{-%;g^!y8y2xs~0g>FcnEXF-iitV}AC`F7JAqr2%jpxZ~&kLpMqDzbma)Y< zVr<@_YiL{tAK~eR z8O7N|gcGZQ7PE;cE5US+&`O6x zj$Iyx{ma)phSAA$xM|knG;Owh%~2gN5My(@(OvHGb)jlZbhWKN)X#hMrE5(oM};2`h}pT{lZf!ZX@xGVR!X)-|_R z19%A=so>dMh`TeM2RV6&oKjPU`) zj-5@)%&gGpV3bzBt}i^*>X)MYZ>6kji{xiIPbM3x#~qNT!J1J?XrJ1N&Kq(^d!z%b zF??C^mxd>Gn%@9QMr|nB^ADBLK1`zoi)R&OoBcHm2*$!HwiCLROTdBLYxVS5&D~h& zhVYpOBeF!UsLhzPr>GsL(sQa3L4Y)<*PT|&r;q6&X#GIF<+`PiGCP)ag9meQiCTpCqTNt{JJhy@*;3*8}ry*%EDjj{wy2%%E1 ztTS7SoEueMJky`6VqR&zUnOX&X`F^y%(V$3*yT(UU^x4h)r>c(Sy{mi_%i6Te^pLr zPS8d~l}Sa6QbqV$TxZ-R?H-V66=N(?{$iq!U7ac=SY8N`e(XJ87a%-oJNn;-Gto2g zAv^Zy@%Me}lJo>k*A+wsjjtQak%Ts2oL33F;ePi5r5A>&BBa7t7oz=AM)1ob-0S&< zN|)8Yo0=;OVNf#uB8(jV>^?*i@K_ws4mAv9DZhF^otV2{7ogsqRVW#HqI$x%zemq^ zG}dnwXsxIfV%)mQ<}z!yrv&0ljfAcZTVAB1V>vc;yyi5xrv9-#9SGuxR^ij`*jjVg zg6vqA$cSJZx{c;$4|w-39`|`f17*2iQhX|R_%FQ;9E_8eWP8wYd`ZB!P-+o&c7>P! zVJ1(ri6dOero3e7oTNp2{dXiau$?}1IELM{bkOMISz>5tTZC|tr$MD4^4;uA1|z}| zDZiW}2O?Gh_!XFDvx%hpDAv-iQ(mv00ZDh0_K7)yy?7Z&kbD9S5Dd_)-^cTr+6t73 zfJOk-K5y3;in3aXIzb5H@K7fc!fm>*idk~v@w6Mg9gheMswU5zD8E|XV? z)9`pM`Dj$*Uh+@FJT~!C2i;#?p+N=L-57z{GJ5RX{50YlB*8Gg5}>qPoOxHQNRt;2 zyl1?z-*pBnigxr<+^6P%N4FUX8 zv;M=Bhuaee&v2^|?3jnp(qO(uL zm;sHPjK{dE#((&omQJem;yZ0tsCY4}r`O$H&FI(RS4L$ZgTir{@?&858vaQ6#Ka54dC z)jAD5<)bz|mtQ6Mt#=?JsVf`N;Lk|=%jWH=s%X`oFjLHv-=_e*ve)RxAQ3LQ_0(!N zUe%-*z~G_v6fmbVwq^pbX^AnNPeBZEIdejkh+RHbwO!rY8{Xl2?4o5zOO36T58_Rw z(@0SbYlTqe&6Rw*9OoD;62>U{=pU8vX-@084TL9SFG3oe7oo^fMQTV|G20L>iMlw> z(lK#Op9J=-9C9kBkrKkwxgjMe2QDX67a8e1FtWit0qQjnOq;eyG4}_Z`Ftyw&kFH7 zbT8(~mY2-lrwOWEk41{YkpwP|ZgTgQn3(P1ta!Ysn3S$}G`5o>(BGN`XAvUV(&cO6 z^>&~)?VZ-TyEPkE+<%5N;EavZZjlg@?4z8%LHvQjdwG~R3BNeQIt%~a9(!2Ae;8I24-OXyWSfMe+Z!_WwKeHUXq9cq8sO^YfD`j{A zqgl~3J6obC*-WgLEF^%J4yh>Z9kar{{AO$(&BMAg-S&t0dZ^7&FTn>jKc}H% zQ^M&npY?5pKMN_ke!_PGuLsrz_xmq30+ri2-9v(j+qDZDx;R%}-li3g6GAU3srkZ8 z3y^-$Fvd%|p72w3Xe>PQGi&PTOpcAlA7n`9<7IXBc%!QBWr?Hk!Q{eQNX|nMshHic z-u^9eY4kyJoez*-Zj6GTy)z+aAW|c*m59~Vnn!fPK}qP7{+LPQZ$VM`RzkrtWiz^>Rit#Cno16zvA=sqe*=4 z>#n$-WB;cl6p6n6B9e>qEwRHc{)Yo*dzmDgFLxdhIAmK8Jeuo3(xThmb-m8IeM# z<4tZ5omc@rDzzOi=W!!yst*9BW83n}hGM=)Gl<4&GgTydh4{Vv0Si9=Zcun&6T8=- z+^{aV1sfCKXKs0ntEkRCew)O7%^SjZDrAPf7^2PVtGBi;6IsU9!)pckXKypDlj|eP zuDui0gAOJq_N5k$4ldySONQdRy!^4wNh*kv`fIX_)p-iq2?$sSP3C@rJ(jR9W(3+g zaGw4kp-_2q?GF72@cfz#x>W189t+7LNX9>wzwe@gB_~?F!{EKHOG7l^X9r)#~NGvWFi?tlwfWYg!Co4~% zUf|@ejvm^QH>!;iuQ-!GqZwn;6e;ttYFd*Wv%22cVx)ZbWd<0}J2_z2Z@t|f>Y1=~rXB*ac77N{ z!pNK=Xj!Ci-8KC{HRZHs>oTns_=YxIIhbzn^^)g4PUDmR1G-k z=!=l9Ta4ce;dwl==2}TMv)aV0_Sl)}tkr0*kwlFc>mprJ6zsdFlJ%q8!d)_aA(m}r z_5ZFicj6$XJ%=!|osWkVyX76E<#b$=u=NF6%&ON-*6+VNU-K`B#5ITOgY!>h_^QA& zIRF&O3_O7#Pz@eI^P;(VBJZcru7-K7ZD)u_-O%GKl^BK9EX#4#4ZL@*wH?~p@uD0x zso^cM0(0y5!vm*L=_Muw^WyE8S(F0tjFDPJ8dXqBvCRDZVmUx)mGykPy^gweh(|i} zyzB}EAvOnZf&;|n*Xo9ab~lwR_Php_w$Ho`T4u=$w<@p0m>Sb_+c)?0PV}=m&BTWF z43Oww-_qiHyf5JHjaH7^YInC8X*znjX8GPtkDFCpO9=C~yT6-9fxFiE6j98)M!QzF zE%;mifTu-1pq47s85l}1k=ZU^Vk9v@Mb6{LkI!)jHrv54X(^=EF(=8pUr83H>MWez z1A)N)eo?a{&psVq)nzmEff3es{b-_y*G|YvJ*ml8aAbW&zvoNYsG>}&`Jtc`hDbwJ zE?>qYJlDHuh>bzySXjivNJPG`KwDn$Bok_>D@apYS4vR-{aG;xuviFjGAbmdWI_Fc z;YIe|=%D3pQy2|?W}p4wlZ4GupOf~uKnx5gp53oK4m1K>Pap--;>Oh?0-)>kGAju) zQ&PNWUv^)G#V{H~m~!g#U<{sk5VE&kM5E_JCHLk>BQ=j1L<2#yZHBG(->`bfW7hn3qMwSg zo2LRQ^k|pfF>5SzPioi`eVq^WLZ`p$i=aW_X~Z!!pRyt_(=^n4WaZY@Y1H}JdZCzo=rnlP+0Z10R7RX8?Z;aW2(9hpkxnFLS3(7jw;(oVM% zA#)G#vZN&T=&!^@Mu1?}Z~gMF zr~OswaZ<fGGv-x6q)qxYmiX;kx@9R=0wLaF&rLnV zfdaNxybUW3D|lr(#60Cc0DY>o#AMtRjzmmCK9*jVTS&Xo*55^ z0}IG#rYYBG@^bDeJ}nE1c^@#mzd=|s?fHz>49KToq8%ps{%t={0ez&r=W9V#G7A#V z*;qGwf+1`>NMIQKZISAT>%8PDvRGd-k`d1@fpvY$ee=$(^G8L8e}d{sWy$E@V^EjtS6!x zD4hRkSLuI|##MY^!%J%RCSqG4*gW1bZyXBS*z`-c(~25Zm4|pfZbjXzn01d-HVF%t z!Uwo<$7u{h^F>;-;ookSY^$P%x1rrsUN$(sHeMT0%%F8=DR8CsoU3-Nz`9?IlFfq<4ehzmlYfM%lSLKqT4t@$Z< zSmZEdiqSWQC~Qubyx#=^$&M!>8mWP$MoYH55*8M=R0Gs6o zdm&W~(jhI(9Z%_aTYYP!l8)TB4}-^g{4tr0>fYbE(=!AvuiVGyFNUvYBI`U{AZ2n= zz3fLa8HRG~H0uJF)0GX*|9w_YlYI-2PhwMMqaJgE6NTdjap%r^MOXh{-h&?CPKZ!) zYcn9%hb+~jkH>rIv)k2>xOR}GT2^4Gz?mnKFML&&xYfb`T$0oKsC?v90v}lf18f0*ILtLg&TB;-UQhFr zMpu%W50Fyt}c)`s>7N7``7g;r5jI|&TclDcjW?A9$ls0k_cxG zoMru!`40=rm4HV?GqDU#Px0`_?txjl@`U<1Dx5}yXOY?pXuK`^OziDx4OXLx4eXpN zdCglYUfXToQzs2wsSMe)PIyQjo_%Y91fC?%+|Dl&tv!K*&N{ z;x&B~58ME~TZ)*LREc9oxnM~B=B8JH7A?0dleqdJDpaDP5(SKrVBqkupIWd`>@aQO zk4Wjn-X82)HCRO}mcg_tB6NSRg&|?WNm~0}!Z4^W45HZd14Bw!#@w#s?QQN)N7X}^ z_$g7A!Xhq@rBAYIxfR-2DSp|0`GU0b;Z>afsjGRJ(Ww~G3zl%8TX_NqWss>I zEK*idEBS0>H|O8U!+AK(<6R&$y8P4z=QD1Uh8T)m6U@|V#isbC+d*C)Ro4K;5?$9! zbk7EQ9>3$viKf>X()IAAHV!^4sfGVvx$*y%7z1NK=BU37X0pWWG(~QgGN08N+M;NN zZ|1VZOe~wWFbItM*ugnpy(Tu+E}zkUAx@+-&dN`9{WE&o6DIQE!5STQX=#r1VM&_xlgWW;=#=Sf~A~ zR-+3Ysz@#x|CCQ3v!7*e0N&Si9tfxQb9VNYr^uyH;ZxoYC6|1b*T!T+(lmM3$<`)W@#zYi(T!2;Szz6 zu6-#>)0vfhIx^$P@l%$IyNv_u6nmv-3Pcxz_SV~-0``gADO`jsvY&f?2hwncg$hD) zh>(C^k&I^ZziTP!(jd~((NY9Wv~U!a3n^5`LJfSZtr1?Fn;!kJz{3MJ-U}kWmCNO7 zMb2;7clS#1C?22nB@eZir9r|4q#)svZj?F<>K`y=I>X!M3#bR#z<{pYci|Ck;5_mu-ZS7b^VISdoi zg!s)>_bbx^z+@L-D*6!Cp@9_mqKNLs#LLu}x-NEUv4pDKN*?-T?vO7^+1(flx70;e z&Bd-fYr+e4LtUw%6~J-yj7%D$_7JQ;9;F8aFUN2 zf$l!zV^hdBCJu=kyt`wS`B?u!oCwZM(~qY-Th-5l z&;fqC&Rei}rGa?xyG3Cj?H>Yzsp&ts&D%H_l5g_)+L%qaT0Dop2Mk=#EijW^Xb#)0 z#oG`E$#AU!U;4?H%-7Im5&UnsX{U)|*BbeC=z=Xv>U4-S)K{itI(s{5h?L?T0F}-cY~A(q-a&vh`So_Wke54i zK?lX1|L!e|6;YxjEi3dJfWXp(E3o+ef(xu|)Fa)WK^>@%ID-18BTCmlyUnFJ6wo&r z?DWj*wdh$cpky}KW*8H%BtOIqUz;hXicn>zr;GP%p6G+vy>^x8&d&zhLoiwdvd{Q;sG_HW}KYjNs6(t^PMHF!u9Mo=D{#(%fQ zYr~YFMYOnRHqRyOy36{Q%|;($x__bZN5xA;&vLJ4Eq_W)<)2-mK8P!KafD=|b0qlk zAA0BAetC(RG-df7q;`55jTlEuA6*P>RC5L67dN;y4ni8I=I`TmFi{5qThTV)2` zNu6@HCn8RZ(8=!)gjZMJ&4E+F8|e$bwp~WO9FEH8Qm!~m3gJwv(MSXe<6z0}PxB4k zC2shTA^K8-+`g!#jV2eV0qp6#>gsBZ@&O;ARH^qxdU5D#^ALTCm1Z*kp%#H{K;!(h z{v}3aeYS^Bn-={k{C18bu|EuPL*3Tiw0Xz{3(42O8r!UmN&z#Xq+gCA8NEDSL`h>% zFb06wWzl0p)Ui;d?L(0J?d0^F$8y zSHexQfva);jTVae4$sETE~79uM*=?NKM`dRR2);E5wkU%HX6BOvPD+_a`%_C6Z9Q+uZhlTA>^0<@gy$a6+2Qr|_?C6)l zSIM1A5TUWqO>{C@x!}HR$QTK+3}Q>QD-?Bnx`yTzn-ZddKHeN5oF1wk-mYYP2#Yj- z^-_=sBoO|HWR!Pgyp-De|D)?2gENV{wcjKY+_7z&can*1+jcU^#LmRFZQHhOV`AHy z=w!cV*E!FwdiUr4&|THN{tJCwzjgm@+g+}vIHa}|CU=qu4597w7})OFyq120urDT< z|8rDfxruL6E8B}EfC0M_(L1;H!0YO&-?pBa3Ub7-;}YRKqrI(^SP;0CH(8NF<7;Hx z)mk%R*(b=fES2_iy0l2KSez(%aab5qj35L7-#-cDd03e= zHr^L8mRcrrOSc#{gd>%Qw@dfSUeKu|Pw7YFV%~A?LaD#x1;UF72?ab~6cd#gh0%C{ z0Ju&(RgzREI8?FF!LKoiyPyF#rUoKKY@ASmY(d;$>BKdwjvzVO`6nW_Ut-OZuSpZY zm_HY`$pqZ#Du^EUMos&Do)m;$8i)ORn%FZkyh4`MGCofDurWs3Sfosme|5i4cw^Vw z=Jo#_XVeM}4g-aVQSx!RGi2ZPRw5*6S1l)h@rvN7l!a%Ng~x6qe63QKc%5H7VN15e z$%yoaKYSlDnQ;M)!kN3LIa7opgR(>8*y3k?EzB9-ZJds6UKQNQ=d@ z{GpqYYO!o-zJe8h)DfEv0C;(mwq2?ewVjXxadoxj44Ccv*a&uc@mdoE`GrXJW1;^- z_jETwDJvLW?fAW7UIl*bbI20JGrL&}i)fpv6RWoeVNdE-_)BEmcuN~)l6xoFcUOr6 zsY;j|aU|%>gHkz$j?z2#-z4E8=SHb4Kt<}5lHeEr7t|EZBnD}xfU+$qzJjaj>)Wa&ty=3%$;6^B;LjFOd+|qU~1a8ZLcWmhW zxx@iv$&--1i^is=5b&b*nZ-AHCnE0LFFKCX)Q}Y6 z{^lZh8o@n`IL;c2yR8_m=1%K79o+Qo9m2d%zW^5~VBd2GX#s7v|9w9F7YzL2Z?c^5 z4Iv~U!=U!rOY%zDiNV>fQP0HKrFai4wsd=D0O73Lb{O3>&fj*LQ|y(6M%tjaPMQiW zu7CMxA5iX_zt8)F`mWbMtqpTFZ`4S6pLO%&7;?~U&jg`Pu|?J}&)!gLch8+o&isZK zqy#dPdMEAEc#{)HIt7D4Eu><3#M~uC@@86&2&7{wo`bqg!QoAsP6Ej;& zoc1VJr=Q-3oPKy0(!t?@S=wYVf{<|Z2C>Jvk^4HN7jv@0nKtAR+_CdQH)UsIXUacZ zVqw@>Xur|z|0#+(MSjT(;rhDSZuZ5!VpLTLxblm0B}~iRmu7Mw)3Api6l82ciB$)k z4^1*ipz_7?O3W=wXEv*c86~oY&H8;>Gp&;2CNLG2%96-@Lqwqg*}=%4 z@@V)QnuxQ#_ov+q142&mW53XCOgHzB9=a0{sKw_&Z2H#eAfTE+c4u;ca7p6ksJ?PMT?PQpeoECs4Evm9_ z%^jO1`i8~oKmvVdP-`M9J_dzo#^6$)H#sjgZ?#uQ<2tT-Sr0raU72rE)zr1GjyG6E zUat}THm$<}zy?}C-~o2aaQ}Nga3S}4UisPF44&>K+!tgD~c`E-5M+C9!j^e5UCIn$9p9eeXmGT7>&{2C#l)^QA~4;DqY z#$1LMH+`&kT=zEwf!KB800r8B@r0$MX=z5zfEbsGo7p$RgWW3dD~7C>n$F5t?sS>ZVTw@)aI3CP%e&`natKk-r1pTU!Crgp>3xXH*Y~{UwIh z5d|0oa-Qiy%VPh9FoUi47G>Y^sibm#w&0Y+X-`RjF5!- z=TN$Y&P$$}@{I31&nv0bdPiL8l!?zOJxljr94zXvV@r8Xt@LDJlI}pb$1A2s3s#(O z+37O@Ray|~=e*-Wf#F#m)368(DM&C%^w+46QrSayNpPXx$H(&NxYjR+&XWrsHx-!l zaY69BXTEqQ`P9Mgn|PK)D5yJteLRfuo$m~F;hhHu>`SakBuaQ6g9t=yij5r$Q#Z1P zb0LIJAdFhMTuE15+-piWZtj#ZP=oul%*wvrzPiH>oub6@53^0RBRuk9d^)ZoM*I2vMs6Hyk4=tqyf?_ng9msZPH>H6nn+WAbTAg%fnw|TF4bUD^K~ z*Q%`7Ljpx{*!8@Xk5Yy8Kh6QaP0?H?pmu6yI~T1g=iQ3%VV}DA-n7-25a&kAP`0JP z?uzA3{zM+-t^w!S4;8f&XKf0E(J;ceI?Zok@Y(gm9p|_~Oe#3L%g+InB*Oy&BHym( z%4IK|GtAC1s8z}`N_i@> z!|JsGQS9;-l3xeD2Hej6X~@T}R4pI)v8Q$J)>sAscfj0BoGru^1@*wcdtViK^25{b z>OU>Oen}F!6KL?^g=3|L2nI)@`V1nomc)Uc0{-Y$sY}bG$hm|oYEOHVyT1{56N~^&)pjY}pOIJ55ElpEf zTlwf+>vnC0g5RwtJ+!WHHv&CDR@Sy}bIxkGi~zMPKyEmnG?rZw@non)E+xmuv7Y5B zdm_~Vi`ykRAT*V6(!hUMyHU$+_N?ETa~v!^`lkR9bX#hWkx9M)1+f^-aT^Jof8U{N zcSOB9*s{MgQgv3Xggu*ildrEdBEid^`;{#|OaT_;sD)e?Z=vw$b0seal9AUQJ6bT57kEUfz1>zYZcaOTMuKb6^ z%1=>1phq+z+B+5Znf6PkTOq3#gJPk!ZR|sK*glxJ=;Nt6rdr3+=i~f}=u)fdrH?cS z_1cBET&)o2!k|3F;;gRiT40!UJOKED6=7ZN(T^xg>o|C+9d43>Q?Ct)hWos_ z7LpiM3H7TtzY&s<-qjrwtoGHdr)8W*>J`1l&&6hwC-=wlzmFBXOgJzbt(n%srUnvQ zNG5_pP&K72*l#feIk;0EEdhUaWDIQgDF2Os!(NEcL0@EAYj5Q*=lew z%EM3XG|$GubnC$=lAB#uSH5Q`dOBCYCpiTp2%ZiTWS>e`p$=Vv)3(DNu`;O1X`X7N z*RXvN+G@JgH{E>I$HqD`CgvA3QSRv1-F*UKt1WM5)bO6L*hs30Y|RLi`tIXKnumn5 zODI<`_H)daUHQp&rIP@sWMj`xK(QgzBuAqwO|J?MlfdlnA1vuG2n^0@3Rw0rV-hjG zJ(EY}w4kV=D7E6ZQMVDe)_j>Vbtf01T2&Ml`ZeA1M^gYvPN?{jqs8kumkEHdK`Szr zpfX~r?0ZDX0jzun;ztYQNkHDkds|G;z|(W8DOpe;MaYL12-b;m!p2-+L&$@B>&_2T^Eqk zj*H(hS@D0Cqu;J+J8rtH_P6Wk-+s6e=w)3bm!_w`8}?!%s&>H!qP^i`fp<<@ zJO0wD3nO;&p8eeqG67Hi11+R)59Zvl5djMHt&14Ew*GVvvWSBCaUZ2ND^qHCY7`hpW6lKKabXu#5H>Z(Tbs#~$gMpbc_mp17vmqwF7OP35>)u?T7ePK zwtV_dUhr%;adQVatJCD{U4LT8MekCee@dvNKvdO&Z-1#4XD&5HOGp`xE&41tR@Fs8@##@5Gc_r@vJ84W**gMSw0dR3uz&jwX5 z+DN%v@cLN4Q|Wap19(`M&)#T0%ltfQ|Af&84HeX~A#K0vhp!$VFcMru9aWQj%8%*2LCU$btm?}2p_cl%*9S_?BMwO|dA$&J{eKm>pd z?j0p!QYt1`jJZSox)cNaGob3aA!H}~vJgLqKiS;R|5v`-QgQh2l}D90Ib?hrK{FH- z+Ykr%)X>v0wru{(ocY#iSV;IQ=Z{y#DBmGS*9!s!OfSsO7e7yN(AeziO^Xz#u76rL zScT*UTxn$?`E~N4RSO2R$IU{Z&sw*M%dhU*v`zj034FuC29FQ3QlirU{rg5J zc~}d)qcRGZzgA?Q9_v@uG*3yc-G*Mjwrr=L{y?2y7doN)nOnD=geJ$cnshJO6#lh| zsb?p~cR#zB0GC5r=*Jb~`u1Y`M2g9)vt?CDRZ*jh=K42ahML!{r*O;a zc&DWBEM?iM%Z>*3Zy{GwnOzeP>2G|n{lkZCPx14Nl8hv&q4S1@=SH`w!Q69lz>-V> z`hhY?T`~w?2@Ev)w|0^&lvsfXBiLjz23W6G+&-!Ir#f&MLat!0ca61<#k)z-<8b~3 zQMTq0jRP#j5?+s&!C2_hB~vT0RDc(Kk;MI-+e z-8=nbH?N0ugwRQ(PL<=tDH9;sW~~MmxR*S5+YfN+QgV0fJJiJHW-zAgTAM}9iMZYgHs@L z4bB=C)V?TLqSS$KhK`AdmG>gsl2a8kXW$)wGlT>y`)PuW(#r94gix<(oz`8KVdc8? zLI&c^8lWjma)-X=?;GTKYV{<w~C_;Pyr>6K}NFLhzhX3C+tDL(CIYOh&zl6zz12e`{)8+!x-7=TRBhR z^V&DpJ*IT6@EPi(SbBlLWMbh~Tt zbU7KQd2jT3RKI%?3bOr;>%bwF=x>T5N6G!}bf&b>?$(#+oY`EX53b z0a#|Ifi7nqmLgusiSdLB#$@%rxA4l^+Z8~nLia!auYPx0_%Gd0#RN@`iWv=4Qh8bJ}`9 z;7!*nw3kmcc_Gz6g1&$<8p4z?s&2>x6z$NTqz>Rn4&lpYVR}r>&JHevQqr8x>1KM2 z$f25w%GctxVe79jd+NRfaW&T}D+`g{9tQM{U8!2QCipxIX;Sam(7fS-1_U7wayXcL ze=U-^oU|PEyz#f>5J(9IV(7Edb{sa1R->d#@|1sZrn~7F`+hEIyK#W7WABn9j}RMn zx23<-`@ItnviV;jbC@7Rf+;+4vjE__%0>`e2wqOU24Xn=Fg5ld4fwc;gsNuaiQ?sf zb#YhnK9TKICaZsyz0ccrG*E6i*4(ogwV&}~hi+D)B}-}}UJ3r#@dX89p!xzal)->5 z6=Y_2l-{D*ANo&|e3n1!*4r2|`vN!c%n5ecp`4f=v6k!#FbvuwL9pq5_dIocT4YGR z4$Z8-Dim;uyPRPj1<3uFHA8Dc)krq`4~j-F2+8at*Q}8$jU&mbz;)}_{dV%}wWP7$ z+5KgOxsvVMPKy<=1h5Lg@2$R2O0ZHldD2r?XOaB{8YgLv$AlQN!C;`B2F~vD&Aa-x zIf)D)4;KX~zH!mOA%momPri$>BLdM&S@t%EY2>^w`{P&ZB%`X!RCPeq+XX zV#eQ=%@4%HVfY1wEX@5&@#}SD;HARbR6CTyk>R}y$H2(s!h|GTdNg_~clrs=PAKl9 zCMB+*#^Ne&9~~5t=}oNrET_|mLi!uW4;89|(7W(HN*(8$Owiu#w*wL&paf6D`Gpeyauwb1rk@S#}6z+OFL7D-^d(21#W#K%jbPXlQM1ZD~pM>{=c7FoiKX zs<13%ae9L8H%6!RKsU@&ghB&_5--EVF+k4569nt+?+$Ztha~@7K;1Fpq@2vbuo%`_ zb`Q?p>i}66CzqsvFSdR@CKtBHOFBLaucXHq86`A#j7fqi^lcb9F*`dSyAM6EGAv<_ zCY8AwKhubqmo=%X8m)E}=^OA6ytVj43`M)@rvbko;|j7Zyh7$au4}7U=#Rf-xtU%6 z#<9a&eC{Xg9U}=$!R>xesGUdQo6*5>=ayWj)fwy!l4P)_Qq}skDgr|dGxfeMuDd?e zjDy@CO9PktE^asbG6O?d1Tq?0?-igVuhHg(GR2LC-C`+nI7$kHw2T1Mcdvn z>8Oh60gO+!c$bAOde7Tj`x9mt7+-}A_q~u_?wm;rf#T0zvhbV=_YmBVFUxHul9ur8 zV(aci5ZhUA3fXAywrPFh!6Uh!0&PX<{TB#PGQ6`^e=}wi`aVD|R_lFZHU)PnF1ZQ) z6F;sfz}ARdK1Tjc?-)M{DQ?{~L(p@+UN=xnoYm8?mVfCNeFbFx++U@yLZ{QG;D1jOVG|F+Z^0U9q?m`N7n+1|t_$*)k1OX8MkrWYB z0hc3_5)x}bf-V-4dCg73WKR9|bb*uGmyz!rDl{a7ZIoLx|~NP(LU z%zFH37T+VFzW}(FGN?#)zORR3&|b=m+SOITM_59TS&x1nNNesr-vk}Ic~B*KEU*?t zPz`H?`6uw!;?+KU2=vAr_x?4P-kA`{Nv~9@$0lQ~u}MuH2T zS#-P3=8nLuLpqW6MuI<+-m4>%u1*8lwS{b{PIw46Jc-ED70p3;A|PDScvL$X(LkO0 zZ&tTt1s!mtuq#f_GfO86evuSh^KBCd{!s1Yq7GL@OR{~d28K0-sHB>#avv9z7`>m} zv_TV%1Xu>l+XNbFb@&SFkRZ$NCBuR4SGR%9c)JRLIA(K=ehN8ztn?~JUW3$npG&;O z>wM%lViqae_S_1!H?AhEyc$rO6q6~UaD19YUY_l2kivd8a@eDz9}!%Qt0?h)KbK4Q z$D1Hg4|hQaH`)5NGtrGP$H1Zf9$tGiE&*XGb@q=`IF(q^Ft0(heV)0s{5B&#i}4Yo z^+t}QHC364bM2I5Bvd;1Dst2hq3^D1)%O@{`>3Xe$I z27#0tg}|A3?&E2H=(I!PtARf)vxcxzCA^Lo>Z~LTQVbO|1*<~?L`H5Ub!==vQ4C|$ z_lVpWV~B1?0VE}JBa*sc4Tz0)cqw8Z;TwP&v(r2~X7VKXc0><M&ytLD@67Oh9!>nxl&RfB#6tpg^q^ z%-;TGd7)x^W@sYPLfu$8htp609&ulsX^zWUu-#|^nc|9J%csUxTkGG+c3wSa*OM4`s)t3x=JXfH zsam7%TSTuGxHx^+pK5*7ImWcy-X}4hrGhS_D=s?MkNLiypnnP4$K#R`X~AmPp{`Qyz~SiP&&mqDG;VJEQAy`K!Cly;^}KbL^+#Fy z{lwMIoIhGUGN!Kf;+?pzm{PuSx_*K-9F$&pkzOlJRGn3C6(xHpR*-9P#|xmmnSryj zW3WRG7~nD*zpc#-&#V&M{JhED2C^H^+`NeGGtba%VPe>7K*E8Efz?T1H3=J3m$(GQ4`HQQrS89re85DzCmOZ%4n?HO=9%-y00`q0=09WZ65wgux{YmvgX` z%c$xhp@HFMpucbvI~o3y!`>ugCoiw+PK@an^(+0Sp6=U4OEDDWd=*iCj{wTgwrCiD z)Hoon!YoWI)h=*ssamYwI+`?BlU-j`Fcf#ITEg15z-Sz~7$%3y*=isd-nxb8eZNG? zm7nkKLwzh4y{xcE?YoB=yisDT&MxPhOs@8W1i?9fxVwMIb7I z4ineMGB|b!O4{M0TA|Fee+<7Kf0&3Nfw+Mf|X7b9rzTcH|OyT(WxzpkW9o``RWU! zHN%9Gm8(t&`qYnwb;p>yZi}JYr66Uk;L7Lw>vZd3bpo*U0}7@@aIBh~PLk z=yu*-2lXu`W)7Yr14UJR-RFVAuKzroE)AHKtnhgWwjkoXL%_kRt@R6!V{9X_&EdfpFU(PDI3W`ay& zXx1H(q|B_FS`Jw4UzZRRPl_z9My*OPGcE^ei4qNMg}7)Q=P;VqhDQa*2CCn{=V&GDRYmDXCR$h;Trx~u8k|WQ6=U3B3UfB-C35c zP{1ZB3(>|?mW4~DgPBgVOOrzV5$$y&SH-p?4;TSxjIVev=?=04G8XF(+^JqOU?b_% zd2O0_!|e`#@LP|S)l#jR>`;D7Y2k~@w745h?OEu0WZ6_;)0*8o(>8gA!^0KrYGcDg ze@p6kDm5b8)%)Ac$!F-AKSO)Nwrma8Y_ev+DYko3jBeDoj#wZw*P-{q`;V37KdA&h zS>=D>{9VuAJ6ga~v#Sy_M^OheuD}lkl?ec^Zmu5jV^j#~$(1F^@L-0Isg^v({al_@ zX$BS4m*MieVa-%XxToCPJ~kcFL`rsvfM#oIn=oClAW+A?jD`C1NX?x2e>K*feciar z6aFu&q)8Ici{iW}D<%SqipIgI!O{-v>46kR`fRXB^+KRDl&lTcvF3H zX)6_*a>2~!i!;GSC|pmK3e^M2mQDVDXSDK#69LKEYa(th)c0B3aP|a+(t5vx3yeqo zccTQ!;XO!s`nR~v%QB?xUbw$p24-WMeh*U2{h7DdF|=@%-VR%e9|EXgTU@%5!}OYAzSPtyznhPLNI$(tn)ux9()4lk>|Zw)rbTt}P% zQ6#M9dSQL1PUNx{8v(BdO4LOhb)^f6;&MLrN67IfCX1%peF6>#= zZ1?nsQW~ERap(n%ppu+HGXm_j=7P?17|Z>zPF^^!DbloS7iS_F{Z(ox$uwD;x0Pj( zOST8g$d()<$TMhZO+IgVV?!b<$K=$ zKX^m=B4};4tT|eOcq15JL>qR=nW?-uUUUU1d7P;#?_@jW!$E5PxDQRz+osvGioNgL z>^I4mT&q?0wAMayA}84VpyAH9Rx-^B6aGdZ*4(^1zmgh=b1-WU?&R{AXl~&kVk{&~ zK=_TGvaqf3)XpG-EXz|?h`0YN ztX7Y8$-*1~$V(4}M^whGqA2a6o%KSU#v!O}WfQ`R>xl*ZC}Ax1V(qPz;6{h57-~yUMcv;UdJ6bmQbx!+x~6e6&Tg@oBSzS;+Pnk9<*#SFTWQGdjxu- zXtH0345%As+P>kV|K2@OS};_(_4Kr{8peibym={fbP$ZPgy8Xl^y>vEXtj+?QbCpi zpdyxUGgA7ryc9#dcH!*W&l3gWDVPH9G6Xc>jB)oJ;}Im1mAT)8e6hF}1DXp;7DB%_ ziXR=4QLcnxj8mU9{C^p-RtkCN@k8OPC3`70dKqI|(6r!fnnjf6o&`8{^6YcD(mL(A zReD-=DUX5(&clvaYpBySOMjfl+@fudJ~%AaHP*Qk{uY>458RSAAmZB0O@61g#?+aH z*Rg31vlY|Yd>KA2%;-O}uv~yurV7Oh?J~N!++C;_C#qbES3pd-g7llZy`p=M@SLux z$of}1=5UZwh6!g{4)Sqq?~#8(5gLt7cS4L*Q5;o2Kaar4{w!qb>?xB6 zJa~K;S6}68RlNYH)3~pJo@Z(kh=kZ)C7SbFOXT1%Stouzo_uJxguSm8Qd*%sjoPHa5ZZ)UF3Msm zBQ^gRpXV3T&!V4Y@zrf#V|_6`fBv}FlF6LXwJlpUDV3RsTLbhVgSFsLqX*qj0J|6z z9lvrxLF0DIi-;PS1Y8d5%pyO1@Ca1Qi;OqhYyU#HJ9yvkapA0KR5nq zE+AdujQmLLa?)>v9-KNt?Xg*z&G%Fxfw=3i)tfS5s0DjqnbT@6UhK3kM$#2N3pX$C z{^;rAvG6!Wh)g+Fe6!+m?4U89Jb+4HZD%&t+cn}@JKcUyv9)BB z9eq_U!6Ywd;wGA#bpQE8GUM2+Y!Y@4g=NKzC~&cgTm{5b?Ta1g#(3?&wp^t!PE1_KAQOngI41bV+92MpzsMG% zMuyZGTjHMOP)Ukx8+UsFe` zkWi8?=#nYRzW9Urn(RR3uV^j_f&_oVwtgUsYW$$o^rk5Fl+%~$am8~<`|QcbdCvCB zJ)=xibo98Q=~)^E=&8b`+L$U~GYS9}-VaXBl{k}@rM!A!h-9So{T2VX^Iv&bpMwwG{u}`DJnE=SnRp|4@jR$b92R%&FV%q)lH*d;fmqq? z_0i3O5X0r;s>$xkrqqdo;OoS(+2^@A4cAWj22Y4K?}Jah%&hu&_j&8nH1!w^GY9wt zYF5T-Sig%^32jMPG`{2P%Ifs>nf5|)nMnC^@Yf~{)jzUsI;~RLEb|bYX)d|8Eu}FewFG-= z7Y&k*@}n9Yj*?1sBV1`#*{6j&SR(j6OcbrSYc91)H-CFKi_-kHbSo8L1b+!NB#}XV z$xG8`uTyJCCE6ilU6o?R+&4WOi?%s)h9pDAdLqQ4ds~wvOV8r(4IBej+gzwOGv1lE z<6J}kcMEp|sMG=n>kh~Li(I*8^TJ@~l){X7M_3=E`yuLVcb;$GTwDu3?Lwok};7&JZ<2 z+vqQ9aV1sDK9iRsK2LPt8kYRo?x2Ax0IWWT5+h!`F3f!+i9e48{z&WWBxN-G=HuvS z1S2PPx!Rqo7G6`X{X;2hq5IyL{~TKk{Ro*gGeWR-elbgW;kMa%AES@O05IW~R8i@# zJp$O(kRKh5*MZB?0gR2K8}W8z2SQ*hB1-90tm^e9SO9(DpATxoOzcE5@$E!N0;v^? z6X;rjMM@^Cd?r>_;R7+F;V>lu3EI1MNqY|Gvjabl%Ci(Tb9lf$LjF%?>$EW6c8qm4 z-#h3HIe0Pn-Ax`2s6%ae{q3y1nrD9>Tk7BbBB{GaRj;c&TDk)D6HyHrrl4P9Z@O+% zVphbs(RrQ&QsOe#=B>g0=3xK2H3)z)7f8USnksi57&gTLYjaEpVJRBJ{>!;UxHO9u zgXdPpm}d5NAZwXzPSz#=C7+Ta=(1FpziTG@D|!S|8Y^(_2+9&n#+x&%v;a1UBAxKrTgGV>`K&k_^I+jOvSTTrJGssygpd*vnbnbuM-+CXV{jvaTJ+cWuf1-44zzhFb z$_7KZEXN;l7m0j$yy^{R<^GpFw|I=VPR|%Uw-kT7cqeG!)gKupdbAjwcJgN6(W&|O zBj4`)wV20xReGm7CakXWOP$d7dW!tI*TO|i9~xMt1*ENv!gUn4+GvPe1I16&j=M&S zlgm7xl9Yb&nc)Jf;$-8LycT&}36-8rqEOWIK=vV%_jczs1%hlMxsEIzM{+j=Bl4Yf+AGFixd$ohvS*og0#no z8O_m?M~oCaJ4l2Ujbh@QUzA8Q=dUEI*=z0r6ih0#JXyu`pT(u#BjdLPr%`uK0N zXmGvjBuHonXcGcT-AN-+%QIZph%W44$vaC2-i%a!W zw?++4Yf$nnsc2wvA9)p~wKb>h8xj6e=i>?cHXetJMjpQQPkqwkNg+xuNL%k$m=MUnpVV(1pAY2ppg z0?jU@#zoHWZAWgO->0_6I*c(T0Y0TlQPr{7BL_I&&c^oA-eJzJkSBg+sqVteNFS|7 z2Af9xjo&WFfd20dNl!Kw0k%xb{?n5z-W79gIpXd%{Rb07V4^D+D&Lhm0!E!|KI+oY z>R4?h5LYz|g%t0aLyuP$5I~^rY_qPprbwR^oi&Lm8whVW+>hc>x>*KLbsKzTCbdo> z>vvzu z4T{?x%&o_ix4@>9yMV|FB7cg7^ocS+!lepL*jR?lNj6JSwoI`Sj_E4S^MfvG%kNAm zZzdMe8YH#|GIpfov4loh4Py44umD+)?yFew+ z;%TN_B;`=yvERqeO(fN~ZwZ00nQ@$E|3M&aYg$@IY0)qYx|tD4Ezr&Su9W_Jj9TlD zyhG<0cApCm-~Btqq^pklHY!&hRw%dJ?XLYf71{`DV~1kJ+T}?@iHEik0ZBfvH|@R>hDRZox&O(uDAu5JOjpjU#<@HzCw)Kkr*GR zS?$YNvL#S%gHE$RA;E)S;}=}T(=gSO1<@$Rdq8Btk(@v_uiqCa{+&YaXWPX{^kX()JT|HL+NTYqWEzUjR~QMRI~${ zz)_3j(6ZXnc(Sw77ff=|z_jPlaIy}Uhf1I;O_M*hG z0y43uj3flC)*|b^rh4cNfv368K2{g{*J~Uc8qFPW39abSPmJLB=J$EdPI0tgiK;k4 ziM@;7Eote$YsE!|?h3rhQLhmZC7pnWAQ%6q)sYOS+822$-(79OU9-13ac)Ji) zxHjt=5>n>Mx)y8@DBRAo^qO)u00uZAPvlQnWZ>;C0BW*@d#vG2Cl!Gvy|1&Rooo#^` zs`bPYz*JDC??a_Sb>l9Us1kWEVe9VPuq($Oc?cm{d)DVXf zGvPp9YQ0wic1lR`qHMbM6r(a^hG2hrHSFARe&H#I84LQGOE5Qx6oO3J(eO^@z{*i1 zzCu^cVrrg*UEe~58dc~wesPt!N?75Yjk_U<-Pt0w*Zr@R>Y=TezuoS|$uI0W&PA7R;s}|$hj^DdB{63@FBTWBq5!S{m^l+(|Wy#Kf^q7@}r~9dMRCnZY{}m zL?Ou1V=YsgiZ@+So2PHQ(GvYdN5XsetyD(I|5f5t58r(@78h5U$?ifQ0ph)v2_DQ5 zd?`9}g?#FIDyvwo-s_l75wI;b_7rMdm=(mEwTHE+Vt!4cJCaGCb#jC+Q*0cQEaiF15mcyW&HwG_NBsYH6+Q9!xz8*5dwlwO5HLyEgz6ymz#Ibsy8CsxFq zBW*lMkv80lzsVB{+3T<(T#ym2DMj4onZ#_clCz-wa5N!{mOGetw=)&U%qT6gTBG}8uI+pUE zzmd$KlFQHkF7EAFjhI0f2x5M}@riyauv?Z!imW(ravZny-Iyt_8I0rlkE>eVyQ4tI z^Xw7IrVbRCQGnGpO{mjczE2oodFtXnS#F-;Y^X_VWLOcnkJe5|*wA2cQ?5E8N0D_F zJfwdyMA+^7Y4<~Y71?OcObYIp>#e;H=S+s;Y8OMRr?Kb+#qJ56tL$NP11h|KOFF<3 zXFG&e)-s8%V&qn;kcp}U$auxAoDl_*_UlM`U`726?;T5^yj?&NfC^BjvDU}*3qfd{kE+t zSIO{Sg?O$llE$f_lk_$+haASyj;8PFYtBIQ)F!tGANaKjEN;T;*wf1TyIiAj*uKrY z(n~B?o4Xytnx16%sv=Q&A2D7Fs+4s|HECySi(CSx`fL8Lfr92xXxpn!G_Hb)x*N+d&lYoXI!4<(EY&mCEW!?SexK~y;7kr0llT#d=`7*KGD;0H@ zu}cV0b6~36Bh7Xi$9PC=D|ki%zme!XGf~B$TB>qKIHx?xiwj6#_@j`44`pK!2bkQ< zx^x1t*-^-35ew&pN`+i*qaj9JtVWmn&LxfxFg?B|ZC;j@{r`4m-z8u#jUW*gKE2Jh z8rN6nJg4^LE5Gsdhke8Dp_y9;b0>IA%k9k@DxDXV$aVcfV)tv+-BeMria@t?btL$& zm5?En>mc_GneZ){5lL7#qcLQ=&WzpNne_dZR8pT`a(~fn$?S@lJ;RT6)&6#t)q3k1 zZgP1fG#;3F{-_7+AkbkHWNGyWyoDWyK0T$n&7(-Sn3dhwG|Ep9_`T#NuZ}N+N}+%v z4ROK217Y{|w`E2S()OGpdAQwzQwr$(CZ5y4AZ95&? zw$ZWmX5MG!p82+Zz^d)4vuZ!~Dz#jn*J{2^eP)09@;vB?XGd%ZhJE*}a|N!ai~RiA znAqAfXneT|-9WJHI7=1}H?*HhfpaJOm5RVY_fJ^>bOWc@|O>y1euw2 z1LUA0=yzWdEV6Pp#te`fyTxs~XQlh)V7yP{5v z{&D*{;nl>!E&8Rq+&hVd8^ z1&6+_3U;0&f7eJ^_7fWp`Px&ULQum8Nv)?AMKrRhbzXu1{6thb51RwimQO4F4ePe8 z*a*5>uafz&9_aT3{ZC#?vtg|pNaS7wvEc_Z8S64050a>zAF@S;s$f<)A&zE*Z|B&t z-gUiyVd?OU>hBKB!rxXlv(*z7IvB;vL*w zl`i`qd5i1&t+jEK3PjXBi6DL63X%158#Bn^s1mRb^M6?Q*`^A-P@^JYbFtvimm;0~ zV>!_?_?e()Vme@!;E=!3bi7}h_de%;EnuEMQt=1J1%SRhfUC!@DrkWzk=AFxG7$>Co&eL7j}iylqnM$(#~24epOMCtoi>CcJaL zO9C)hUdLKrr2 z@X0I3fyj#$O6uS;F~sU4MHw5zk0zJ&xy^F)>dy*wL&9@J&geEs`i>)>Bp?$!j@};! zYXqz}R2q5jvi?UWT@TlDhFcmc1cz>^2|=H6_a;K=BlXpoInxJ)riq;?WUtm77uXv* zI+vv$xLLX6DIv0isD`B{+)vSk1hMs~m&rsF`e!xe@lh2+tVxi5O!^!WzfIZ#cJd{n zz(sjZ?~`MQ(=ZtJBN#ZJBi-J+w2^L@J~eH-qdG|hlQNm&AZ)LEJ^eInK8O~!E^B4W z^_3#6KUU$p717`upHYcN0~4B10IaWg?W(RkNpZ=UBN8Dw6iv;@;RXt(4-MROAHyLy9(us(h^DQ@fq&PU z+9vJQ=~?kAOaDSW?>pVUMT}+JQcP~iBIpXZ;+8@8@i-2GeM{ z;?=A3cNgmS*bY-fH}kx(=J4Q#oYe-dsQU=iyaSh(dFwH+wxQ+sb7!R4ElrqZ1l7S` zX55*PYLri7Y;fbjVLR(nC0!h4mvPfFa6T{}I_9&6} zWEV1C7tMQ~{lE0TVKuFU=-G#Tv1GM_=z;QqDVF9)2M%d`Db@EzO2m8&*F(@<`#s zaVS8PU$hh;15Pn}hW*Pj9NK;(NfL`}+#ZaWo0+N5gBAbLs~HbpCX=xfb!x_R(S=?|F!zkBm@m)3}?^jN8KAsnkl|6+vK|AIXT`kZ<~ z`v)E+nrLWA-V~uA+fJe~sh^O(2cp-t}0B#CJj##z& zF!jQBXB(6ZpXsE?rR%}ewdn8-y%`tPedM99QhXPV-X?cOdQ>-U)TXOTE=I4Yr) z!|g(3QGH*fTr3I}!h%A)X!$y=CLP%NbZs3svI^Pa;M;?nM`JlfcNMZu+hmF!U2<36 zf*?@3Hcl#_o)K#UgNrCwNO}G5F#!b@M-k-I?ZIyWc>O<+)F`j#YHCuX1R5bp6qx!? zX)c>6znge$5lA(4>LN8J&9k#CBZ#7;C#27A^jLgc!mL;~vT)Us?Z|zk!B-W>T6kdW zW6i3daYseC_WMH%GMD2_D-4#9?fo3D#w!NON;J^d>mY&cz!^-)q76aylN{PgVurA~Ly<^{RW2d(d753j#l}_} z@}8g`ph0xM>NHxaUGPpqymCw#K@c8yJ|rga=b@=CeXii=j$vLT-WUVhw-`RS-O5Jj z-KQ<i8nL-SD&j3~}7_v!h$781B*@TX*F^{tix+N`tSnrY$Z&qLZ{UVN+&mX1qj zz1>rn*$hM*VeV5v&#yTxxzAE z3t6h*O>VnWnTJ%S8SbS8W9nL8)#4LU&@EJobK_*58i=!oHRh2uRd&gnAoaI3D{@FM zYhDMWRSkROD>K@5mS|H|p*T%w+|x7Key#Y|I7x+ebl_VYa=a>25TuYm>x&_`3WMU{ z-6p~kC*9!Z{+5-BL;==$A*uB-v`Uj0M~D9{Vpq)VcsQY|8p*NwBt8->@cw2hd%qj6 zzjKR4+8K2uA3pM&&765R93%Ia=glEuv)!s)coE|la`ZD84#!}22LJ4wKKoJNsn!}2 z9EPkSZ@a2-p5)>*9y2Rya_PYLwf)a^!4U`uNJ!VI-x%c*Ji<{!zUZ;o*u+eKnQCU0 zLMmBYOR;%iCGq{Vq}ZHk@s)tsoIkZCP6gMf41m1|e74C!EsNfOg5 z&lO7?qQLLNPNue~wa9t*kWVqe)U3)NZ&6!{)?YoEp11qy4S9AQb#ElCS47HN-k(rc z16hL^tzQenD_?}yVce@tUtxEV-eTjMCWj^}wcU5|8Up{)ANn|4`k-ueg4Vi^rI}6y zfBakmO{D?1!DZ4CN3@^y z9gKZEL#!Il`c=^a1>6Kpz0TMlS9~`@Nj2ga#8L_nXTMDt=*QjiEvAK$$;i(Ve$x_! zW%+-c%Hl{FSR)%QWtBb_=Nv{F7uMXXZfss>tRLXZ3vkzs<@GDX~_&| zG)qjXKQzo7|Jk&9KQY&1eisl>C4&eu*0JaWblLVcPa*fTor7z1?Vh)%?+;)~QdcG< zfs1E4O{9jz=#Z;h82-)|%B}{N92&A^RE>z?z7q|gd)coJFH@@oTnoG$@u4ag=lh>6 zC^?ww7s*=BqlpnK{3+n23DGNh)uRD7zL>mW>U;+)+K}~>RlsKb_|)VVph6r;n#6Hj zZ}<#@NGMePiZ5`zETD!b;92xJAyn)An40hF%h4b#N4_yFPpkp+H^9`YnV*|ypC!8j zm(eJb0+DSVaX19Cey1w__i@jU)3a{BOztDRVGud>)+4m0%l8zFCmHN&|# z)tu|_;?;ZmB>@Sv?gMCB{y8ktt3;H=h-R+5?Z~v?2z%PuXnB*gn5v6)`_jO{B9+cj zzrK0_k!)&6fvmnq25;y5674i$(mEwZIn(CeZAmQOAzBYfE*CPy_wJ=y&srsf2+YeEb%*}rUR&yTA}JVOU1qWx_n6-s`43t z#X5_tK=wH5+4iwyF_+-b;z%digEJlQNNNy^g>srjQ0?CWMa>}7NpyFZWWX({npnxk@>H!wF0&NOD`_vpmJ|!W+s=% z`+D2S$gfxZvHUEs`NlKBY*)NFU2+nKe9!E>n&Rlo9$fDnrLKc|J;^-p@j&c+Qw|js z=yVo#k!+UQl0ER2K|!Iq&wB}RL72~!D))@AH`EVV;=jj95ibviG!tl6mkI?9t}}bg zL6iUQkQkr1RVi~m30#@YfjlzCViyA&J>k4<$u5J<7KU7MwG3mP;0a)>-C`rqZT{*o7;mEJ?yTAe9_=jWCK`D%kP z&#pLrYq$$O_T8ebOQD-u3jij8wqbjK!!*xNt`{aeJ!wFa!@$;qE784+AMh57I+{F5;-e^(@y0bO3 zh;-GD0!iT%yC=zT_gtuBJWDbpBJ+d(Y7H$D`5aLd4zy@373sMps$*AU z3Y(}PhS&zvN1}v?qGajH0Ok&qceXzkUv>$*zB+#$kxi&I^I8glZn$jTL5h9$yvuYG zaNzv4)>FXhCTi$XqQ2ZlMRxi5%x95Q``7f@e*VaLREq#$b9RC@2yC}1&QB(zwO*S@ z`s_XVy}IAGv`0Iy;q;;N4qeWgDxpTWs_AiH#|--Xu6zG^Dl zs04vuzY5U7TN>8GO8X;g`skT=x-XVk3vJ!IFvnY=PX;x4N#e*`>SoPZ{}5@vV;}7@ zH-GwoQ0EbE&<{cOw8X3)25y||Q4c4ExVxI1Lf%B1*YZK4WmM^uKvtRFJ{ujQD~*t=E9!0O+LGM> zKPTl~pSJA?;S(pk)O8A$%008J7c&BP;+e?4-H+YeVs>&HE3BPI08H2k6ElgS>B80} z{J*6G1t#p5J-A7h_;ph6JA{~nF{+*L&Omtm4@=i8YZ3Mx+rIK!UM(;9EldM|Kf z;I?S4kV{!y>8OibS})}%bd(~Pb@8p+0~I1WAv-Ji>&?Zbh5sVbtj5$6_dUB!D`H zV0DX5>I+pXgZwucFd}6Z(rET~?6$B1cp|&bi}!9xtlV?Q{Jiz6w^_cY)9->1%bAGZ z{j5yWJ#ftc4OA(Ao{#iE;or7_>TsWe=DFQ0bD^`RN1p`Wmp|~DC1pI1YJA#U9(oKEpE@}P)Do( z$2jVe%NtQs7wVOivXw>APt4Q5&6!XQv2;^P3aNIq-O16&p5{{^$YD8zeIbWq>frdL zb*hkOO1U-5*WbS974o=dhgsj({Jv$!*6$24`}srmC0Cw<@Wbb2h;tBhhs&q#Ev{GR zp69!Xem6b`FaYX-dUPwWT9UytDES5jTncp*GMM@YWY!{Km;{tq9UIHh7J6ZhsFj3K zGzB9W58e&kiuJu`l~fikSxU5Y-ej$58T{TfeFb8oS_l0;M7&@INu&HH^8*Tu5tn>$ zVjqVG$4B8KU{h&8NrH0MeL!-llK7ao%3YW^^OlL1nd&W#xynyqS#^c_+Y%?vfRpv& z-B3TRW^C?~%8~!Yjib*Y#n_5tc_dMDQ`^DeY3$^qVEgB7^?fXUtTE(pbtrJborEuN zgxCE=5gfobItIqqQDmKTHXBXbQCWdbxeNE$@|52!bUI`%(c8o>nJF`gyR-Cmw&-lO zsqd>OeTZyv;ak$GdPrwyYkH^N)gpR4;gY5k^&BL~$ikj+?OTTjGsr;?_Tg8SWLYU|_NQqalOJ5g$ zG-rxq{W|FJ=Ty0NvrPh~X>kASn}G?LMq^2xAE^6*pz)7C$=M9#+Igvz>?tA z&iOk%D}HmM?OOV=)4p23L*3WtH$T4~E+OZXn3j6w?{;HA@7GaAHZL-1x`UCPMs{2a zUIglfQL&h{Ae?qq{gQZ&RJHAK=J*{c>2?+5NR7xaSwrP{zJ6OhzeZJkEO7NQGD*lb z4UsL^J|?9!K^zHPjaTYQ)#)5|f1aBmP9<@Ymndb^c9h(ST1J^tk8FVuP4h((iH^Cs zc|4(j-}P5v>*p1^Ji&E1mG)1j?dcXKX{TeL#2N;(=TF_q(qHRslOLw)&a}j*m^voo z4YcHzZ^2`p*EyW)!PWW0kM*lAGt&LKplOLGXx020`)v%-=DXFql}UeB;zSA~19o5l zZL*jY2}u}CMafwe6pUpcy(XP*&zW4>Db#)^%4x6C5Gq2L8r(KsNs(5QhMGktq+@s} zV!jDoZb^v=J@N}Z6zP}geH!Kl@>5I759H|^+6RO1*w?&kQyS=foO(=;9OAZb8L5ge91fV0BKb<|Jsf`>?1beix>mhCP_IOrb^IIY1k^y#x?lAz#2ve8if}E=U{5YD=q8CigUU zrvjDreB%j{sToXY!wH<`%w-grgqm>~vv0uU9O;@i6k`k*USIzE1-&59>t-Hwx;{|x z*I-s8-z~S7PKN~rLeISB{gES{V9AYJWZB=Jd);ZAyV6b_46oKd?pUt@Xvfnb!2e4b z3-nSPr5S*e71&34!6ba5AJ$}5aX`3!ZDf(*&63bSK94nkj9$* z$I@*!5)~#H9{xv}?9u$+KE> z)I+t|@x~r%e8|DbV8tg%!{fT|T8nitZi#(hQJBm>R@Bx^)O>dF@9jlS?E4>v4vwRz z%H>~sF}-#a?s9e@@ZkxX=GoOX>ANGeNF<^aCB=Yp>2GB%IRd#2b8zWbsz9_9^jk)| zgT-kzN{r!Y*yT9z6Fc~p>s?w$UP&@Slys10-mjyNpz^chp|Rt_U$@vAw|f*vO1H%V ziatm3>3%Qju--NL1Ys>zqc2L@n$YZn(|FdhhS|{5wnt0XEXw|dCHz=&J_UXkwH!Tn z-)v8Q1&%xBS@D`_9))(9r2{naeM3V-J%hgl-pyA& z?zib#n^O-POd8t^44ANVQFD4r9rl_-`DPd|+hQ8EV>D5}{bn-=nT}KYOK_vrw^h0h zRe!c4nf=bIo5Ns#Pb(~`)_;>qo!yc%=U%#iB!v%0_dX;#``=%?5n$C?U=D#NMZ=-k zAwekZ36s+OJac}fF%`oe(tL=he<0p5g~r24vI|C|XcI^xE0jd7NwKN3iFnc5l8i}; z*_;)ED2X(rSf(qLkiI5Om@#Y`g`Z0H^m>84AqA#3*_rK)Ed3Xt))yPd2+yfUxr3;O z*P>)`!G7I=9E9cYSi==|=)V&mJap?hNxg~5>EUa$LmAgv!%u9rwIXLO``V8}rhm>X z`|zvw_BiH=>s;+CcA?`VG;!1C0Rtbg^j!mN6+Ft%GP`a{ zlaLJ%&^+x}Lz?64hNW8PVEKEGnadlX26ys zhPspojMf~CJ6^Gw>zy~1?(5WvfOEjzC_n{KWMdXdyKmt?wRq|c7F1X`a7wk23VAtS zRi5$BOkfdlhtaArO`zY~&`qX4azJ$(S)4;XKBF9RYSOsGZ*eh>yqXHGHA`88IXkM= zM(=ORk*Q7h4r5F%t_lsml)>Ma=%RQ|g0^nIXUd<4+2UeGz$Ii|Pu=_Z{Di(*$KKm~ z^Ge1ZafyR9Mr}seV`-ts?u&}Hn`zn3?a^?qzP-7APp8YlRPl<>pSpX2%)QpELPF-F6Y=>Z zKwj7{tAR|x8B+;owUgeq_ya?v*pTCG?ekXOAIa3zjGo#6<2R$vbOJe5DgKO$fmFZx<&{!UJV&812wHE z9wDz$lJ!Mk(c?fXy70!`ED6!yP_+^y8lvo9WgO&43FjfK{QQ1CKIfnL8=uqu9?Qui zRaj8f#%o9!xlKkE5e3EbN9m~yJ!LLykAG?PwYm;HLuJ9>8(ra%Zk3-aw@6G&e&VD} zfPr9opzOxRsm#pdMVAAWX3gy4nzPK~oh{~ah09N&%VLOa z784NLbf6%yvzI=_U8W+os04FTW(x%KqYoLa7su3ZrgegBID;zfi-05jbLHU>qqDj3 z{p6eoFQ@G?Wb{XjF|xU7%PtY?*I+KP^v2Z>$9 z?L3&tI1<4XFVj|N`sr^{)BdFDxP-IWPJ7!e5dx1LrSB6lT;!K=Nw? z1fpA4(b~X;=f^J2<0Gq&3xAcgy3o736%L{*aq~(_>Kw_4KzQnj-S36xp?XGEuO0l} z6L}tWQNDUSB*2?SFdy;x!rrCJ*?4RAoyDQ>+Gp3mzeB3Pw>eV7rL6dg{$o|!Uv5fS z$AOS=y?{`48OWn%X3O^RE`Q(5*vtn-vrP8l_lv&6a?Gnm6qP@;sLZ|~E!bdbB@2`r zswvCZU`O>2Hi^}knXom|l?Mwxl5b#jywpPHMMnS>v4fms>v<>3+r@*koA*5qaAvD$ zI~pW8JTyNA!`G!0g5#twXpyi_4|J}6skdm_8h!d+oQTJwJ;EN>r;;7kODm=nyZeLy zF3t{+k~phSY2pTFL++%cN){w7B*~) zD^|lt4G*i{@}()2REGE#^6cy^!<**tFae*9;Z8#1^fQUn065|nCtAsdzDyCeMktH4 zO(`Pqrp+W;Hgz89mw9C+*mkBlI`xdFAr(F?5%w}aaWQ*UL7IJx18j(9E!n32IXdK$ zDhC_k#|SepiFEtg-oyFR_Jd?`19l>V&%g$j>}c4%<>#izrvi2WhmC+{>C;}g;9wWZ zKf;X}vRkkhuA7DE%HRx?jbGOu5htoEQAqy|e}smM^2;s60b%~r5U8B!8#OmY1p&}q zakU7lO0#p3T?_0af<&SmhPe4g&n&_Xrt;yziKSdd^}M)RU_>^R1^>+Hz*IMLSm@fp z#fHfQB&h-q7P^p#SkAPaTh)Q(pKJ=`ulB5-gMLo|uHO$ufJT3WR#k{B>CYqD%BL+H|{K&j9B$7932CI*!!i_kP znapdq*HZ%o_m?>YU6qj@?ohYr1L?TvmEc{5lH_f(syHeQV^IBAh_GpF#f^Jzfkf5U zgLP6+LFTCybGN8Tmd|E_<)nCb{xgO5jTFR6gA)S1<9RYw7O=xnp8B<8MevblSoH3t z%O6m5#qVM;1|e8P&~11E{#LFm^to5ikgGm5XTOp?)yJ)j1((;cf%nbIEbo>Peta+e z4*#8m-P=K{W*>;M%SIP=dK~(02)Hpw2}Ec!40owa0rp6XN=XPE9|teS5{P`7QSqw zM(t@o>6BzRmEt!y#lX6X#~n87ZIh*g!4%rNW`^KL8`~DfvQlLVRAsW-#NTgS*3enF zE4KbJ>S}r&44(yo49$9qVeePJRRy{Q{|>2e{yxx-G~f_f@b#=V@!7!C+o_2Bw$q#$RAb5 zxNWnR@8xb^zR%e{WWMIJGo#nX$D{d}_6$iF@O&DRm zSzfevotoA4kKY}UBLRon>q9Og;>T+`2lC52l(zRoWN3lZ@3vit3@6xdas&#=LJS=2 zh?e#gbodJ8CojnDqzaoMeR)vRA!a=+xC4fh2NuyvZq?&WI zfgafj(eJNO_yy8nU12vH&mW708XE{L|03vvqxvq7IqWmI2fU-u9x3vQ$~AuGBda0? zqWJO{u>ObOlNnIAdXo~_E%faKM=vH}#^`Q}laidh5@yYEOS$bzQ|jgI#=jO*`Q)*P z?u*YvPDkJ#`SrLXi_wy*cWg#{P)437tQ)ZCx}8Y*dtso>^{}%5XSbV5Gj3YktfKZ$ zk)~K61CrL<36|Rpvs_}CL&-f6Zw1UPcO(6G?&6Wg1^9FhM}aj`gS+g(!z)us73Bm< zwxR9na5|qS+ZA{a7=7Z{#kD0PA5Ql0;tSIm><}~ zVAeFFYZ&E6aEMRn69|at0BbM~)aPXIwf>QoaORj>HeyQTr9wai)*al09Q5m@R0b-} zykz{z|N1`ck*Mr8v25k0y_aNXIC;K*&DV&3_1%yYT6*#3$ZbPa21jBR^7Ux`!%azR zA?^aCxsT{rdtW1)E7ke_arr8aG$h@KiFE(XpdH>$S3TGB1P9W!KXaoMLZ~&S?EGNZh8-dv$L_^?e^6(<#APT0)aZ|lNuhK2Ad8jqPA1Ch z`o5SDnKDb2ES9tO`h0Zk8a#f=Ne{b3A0@qjKH$;DsnHKY-GM+myF%g$h8sAV@8(+d^qdWISPl^ntZ(A*7^U33E{@@wy6`BovxjYAw$%o889G z{GPA!y*Fc+`aULCb^J?4c5ipV);~*)S_R$i`B7*=)Xh^N;o)M!egy+EX(%gX=Dof@ zjRsaVvxiX-^kpDQI@O`Ic*x7!Cu&nj%_jYG4J0$wzZ`yAOVpG8IeMk&)q=D#0^$%x zQ`O+{gigPqk6GuWX3^LG;>wsoaERI)HX>?|aIfQac5Q5CjekSwX-6G)a&ub_&ZHdN z%qsD{rK$KGq1g6rUV)Qj!AW&L4O%{y4`!O_h zC7Ua5&ghl~u=OSf5>Xu3f&0-e0b7YJSdk)D;YITpN zBj?3g&k*4w2C`#?71cpd0+%zu$f*(T}-GJ$2V7&Cy zyv;c)h_4-#|T7GVEuUUlA3f~@a`-Ow7*(#uR#GP)i+m8>bdLeKJeE*3v^Nr zkwSFgixUxl}GOKvXn;--68My=?=Ug4I;*Bk} zfJoe9{}%B+q>E|zctSzg-)+}ubs@~gJ`|u}O2QV$JfT$Kd+2AVFqt|t-8)yooFiCG z)}0a|_*`9+21rnT!X8hE5aARg+iHZ`>Z(_R;|dBrG?pAqidc=n`Q5XC8V&#yCU#KP zPUZ$&^5j^(>1g8>G045htU09WeDwUkO@48%a#2t+ljS%MX+Zei{b%f6AtpHUl<{{e zr{vB{*_XwJ?R9Kp=0%j!UZp60JI6i668rl)Q`mrEw<{)2pJZZtz4@$;1OIAFUlY@l zkVZRtWfMt7Ovdz&x0s2{*{t07K%t~KpYE+T#-qna(g zmMf}+%c+;u4E4P)jz%9!TLaf}O}0qNuW%e%ZbcHlJjBKWX(1x~z~`GX4ti(rBTI;Z z0n38#XWoMDe4*p!ZmX`M(+v$k4Y9H$fpPQo0d28qNBfNGEFG*KA#H+$$a3GJSnt5= zDSCU0dpRP^__{d>in8oDW`CfG3;xNsOZQAg0YLD^ljWXetQa< zww4px$2ME>Ja{t;ASfRDB}TBmk}lW+H#&kNbEIYSewxR*1Iy1bzdyr&Us%Rzuob|= z5wEW5GY#3d0>NR<23J-@?9)|4>{YtaJG4Dv+pUEno1~>)q^|`gvdDt@n89E;<=R_S zMuD3nuiz~+L*T0G{$xz^GF;?i$lAu%U7yr(%_+u}i)g2jkIdFTG;VLvKFv_2O6oTAN0W79QR7c1^r^|c7vaLZ%v8jiPuPw9q&G(d=( z2zs13O@sCa)592#yqtjw5%~mIclEwxpIjhs{f3zs2XS-7=cY%5#TS$S)3%#IKKjSR z!U9sQ{<)qVx-~R|D0`DtKmenipP^KZgcG^7gM)*C!R{JQMQ!`tE-eGsymMc; z)$emXW05FzJ=Ik=KNW8#i*fZ*GaEKB-e@)<_ZR@S8lsp#r&@eQCgh+Mdrn0Ixis2& zfBwr^4_!IL^Nw%0RDQ4hRB3PXS3T*k+i&C_XBUS>P=*spkrCDr4Nl>aT4-)o2&0U4 z>fKM@Bq$Lt@d2rRMKmXfY*HYZ1Ws%gfl@!T|C@f1j09`UMxpEyMY2$`-0;~E3?bQq}|R;6VHM#w7=hHOMAHL zEEgyoX2}(yvWw_#C&+%h&xHqal3!kPLAg+!5jX_{NtN89jlQaq*##+RlUgJ`SB}~; z7Byf#DN@DO3>h7UD|6SKhokKmRtClwGxHS*IFg!ybfpew#eZQLB3?yVZ#FF)p)SlS z3`;J|jy)cDZeud}&8(DTlf$#&p|!><&PKVoR9~LO!+SiwJ2nWh@N2DZ+|i^1Lv^@D zM5Zw42Tm&LBI+E-(oy|G&QxS-2G6`IMgMRgh8kal7k!d6rH!A9D+!AcsleH?)XL`o z3P;c_V>QXg$HvRnA4&HxzpqiXhmW_YD>i?an$!rOy-I#hFbrT|j*eE;ch47iG8;kO ztN&?u|Hl;m|Kgp#@q!myuT}qmW`sbq2hR;luew}P0l+o){=gSh_pRn&fesvNLF8X< z$-14dDb8dOcuJCG;XM`nq)Xn#_hLZuV%9KHXE(dSkJ|PWB0rTGz4EPQc;UPUX^aVG ztWI`LTeR2aHzaUP;~OX{UNF^^mCF)I8lwwTAsKs_`G zA}wi#q6a63)k?y^?AeT>u|P3$ssvX}q6-((`>WE6q@$``tyZa4sY4zi@`8pYeAJ1e z^^U6#xH{nN7&rodLj)!~pY!+a0Hfa@JnhZFJ-AuhcN8%>y8@*KVm`LKh^9qb9T6mmNlJB2@g7jf`CRe3Xw1X#>r!%sOc72 z70(I_HxY<@*nUmFEklH*oY-*_CptThM4kGK7x71v&84x)gNq8ZjLE(;Yus!8{o8|_ zhlvjqKaLQVuw7s&JD}IXn0%?z=DXWP`vBh_YUfiO_0qWC4#RD*P;>t<>Qi_%I`7ad zyF`j;$TmI(ErqTdzshHA^#^nMmPPiyixKeqf5c-kbz%w=7oej<6R>{LPEsEV%{9PH1M4!VmduVOuV z6gv9dgzv?1a|TT$MEyg>h?$uyJ%bl+L-qV5D7CNgUs1e0WKzMz>d=6|;Vr9l ziZjbs@g`HL&B`D`b#Kt%fhw^E)F(pINSJJe?L_Apf?^iIl@E!V4s76O(J+~pNYf%z zv!da6JST_8(lCLkD+j!?uC?oEAa#0waaZwd)~*Q(8%6)EL13B9j#aNO;f z8D)FpGLrY~|Ia7w|NOK1NN4q-MDj%S^6xY~3oXPL*>D*-{tB`B=$*?UNO5+pXHZ(Y z0Q`P$!#qahB=XY}f;I6tcE2L=S_GUFs~2Wj1t^ z{~e-+LXtxxI<3D_|9^bFWmFtokSz*L1C0cCcMA?df;H~$u0etX3GVLh?(XjH5S&2c z4#5c|xLm$FGw;pZcfZ$vdYxXYf1NtJs&?(F`uKP=$z1&WO73&4&e6L5>2WG_l-q7S zO|aEag$cA z{~h}k2p>}V-sBm~CN&3Xv#GocqLgc&&txz?k{N^5BnNUUNAe>Gw)zeF)j!Nqoaxb< zL^^x~41_M}=I>bJ1nqyGFpb}*&<+b{)wCIu%E1cqsFRE=QzsNN_(W&OE5c(k;Pr%> zjmOv=Qm;C+^)4yE`vLjBTdxo7?`_ueB6ZN+g} zMd`DTzH{L8boc5VJUw9<^`n2k*jJ0X$h4M?$Hsn!e+v&F_)DhewM$-?vIb;*{WXSm zS`c9M4Q+`nGFMQh|4)5@^o+gqG9+((Ntu@V*%<-N@-!W(a*L_Ym- zHVU7ZnXZ*+(~Xnkw7R46bi6M7lQ=E$kThPkYo;LR!Cnz#cy6f zcv*$a#G@}xfZrz)okSh%;J^2l$QPoWy$RA&=x+V1Q|2~KN+g_^k{ObPecA~OU&SqC zB)0S?i?3pR9UfsXi3mtZ4O{K9pXI2AqH z?Z$~>GOuRR7@YXs3SdAHK;+|Sk2(!HOcs>Lk3LsLY!VO0sou>-|F!~KLUR^~n)hb# z-tzfppUn;(wVk9ha;#+{jrT^)??4HgpxqX=(adJi5|4pJ^MT)z+C9iH&K?I@HX9A^&}zmxP~ZI#{(NIc_Kk3TnKb+CE|&`uyj_P*&plCDa1^R8Rd2; zS;X6d<36%`R5pk4XP{%gIR4a44nkw2rn5dmWEu`mImsKwn=8+Vr*im+U~Ct@IHyv9 z2A%IzlSHkF6@gc5;HZ5r`K>NBo(T56yJPkn=w2z-=X9=dfn=B8&VqEo&dI=^N|s(sxC!x>hs_yj5mF zb0NH>=~_chI~uU0V(RNpwNkl41H6vGZ9mjfUe&=W_jaOYRgVV(Q;IuVr?;0WN}ChR z;w220J8$o9H|z6rA@=7`(%fMd!Ox#7$N{@YDZL`lKoQG+$>SFL@Gd6$xC)YXaVP<< z52d#ACu%SzB9UEm%50!$@mUJ{yzDrDI>iTEfdMQXMl2lw2=wIlpwxUn=09P3SBnsE zo+(*cv#QPa&BkOj2*=+4$_I;kSz~3Uqd-(?ucl7ZU1aqex6T^4O#g)SL z$*uW**1x}05t*Mu(B90^XegG40kOzK-5@v)SMIML_ z@PB;uErFpDi|m)@-#nuj0-Ytxm6*0oHgQyy@qQ^=uB_MT(*ymTE7O>?6@dFeGID; zV#kM>iT3{K>1`TozjD5M;`)KTPDthN*aDSeMON0Ypua-uPtRv@S-_pWpa9PwV`=3V zEs#UXj!lgk7uha35-ykdD7^z`G((XY>YOe^#pdyPMdYQfic?emB#E9 z?Urw}Le`-#IRwE+Y}11`zr|egNh)*O7wwIC`F6gX7s>3sUeh(mL@7bFYa#I#S>;Ah(3|8(u@3t{=)M;JRq~T-8K48s zC(W!BQ4Cq)8w2w)r)bn-nAY|zLWHqiTQnGwl|J$F8`5)s<3ZDJtYuxQ`5jRz>+0?1j?mM=mX(10!5ILQg=d`RA2#ebRkPxLGLR{mC{b~sd%ySsMO;q z=h&_G(Zg!``4w2lzZ;d;+eRn433S^y6O~ZUvg4_%CU@_YDx+vSOLunod?`i_ z2?POha<+S>xY&D!9-c4fq(s>Q+_6^xD*R9O6vU2wz*Ukfbp`KuvE;Etmw7>Sx40@Z1B_i`jh^>8(k6pbuHKYfwF!boSPbie%8T&;VgX;l zTkbdO-2JgxYt5zmqA1ZefBY}h>T^f$qm)bh??{#!=GRQ^ zrT9ZFoxSt718)gc;N>`La#oNBFfmq3B=6R&Ao+F7iyEX5Sn}zSj}_E(V*XIHVeUfS2kmyxAIxg+x;DA}sKL@SDK#@B*8|C91S!$KHUdj{z5kqU4H1Pe@&9g!S zk&$353A}*Y9}5&~ytz(on%0{1=9q5cs2#|Ux+T-YR0!W&Je^59X%Xf~q{}3SkrmVC zlLLl_> zVX(b)S&k#)N|JAO z^!s6Qvr?GrzJO5kHI+Nn_jRyEqw;*U`Qx9d#MPZXka?uY;k~3}XzAfl0(nK;TVPRw z#%amL(}F)&4jhVPu%Ce;A1s5_IRmobRz&9tgySXS!--B*V7&)DNTlc@rih^R=_rD| zShazMmiAI_18XNwG@joM^P!8e{cU635y$2R#)~>6RA1-Sb))z|hOCkc8(JKUt_0*l zgXW(mdFkb@6R?$eKV$vJ&n@_X9V|1-4VFB-wg^>t3_<>8>>xiQu6A91d(W;*n$`g? zH9Ox6(IDVL68j$gP2(DJH4`V19K{~pe#v`VA^uJCmZC)c-P+Vxbqupc;$5Ald<2H$lE=#+B-eb`ZguanRE{?m zQ$Gr0BAMn?Xvw}W^SS)BcR=Acb6_`;ZKhWBU2Qs)JJq{eRNYt^m9HdOZcI+U>Pxn; zn{Rrx0RVXF_}iu%r*AtI1%hc=k41RBD^e=Vslu`Mpg$A@Q=kNaMCBO$Mm*yeL!Olk81FC& z0PZbPA`$tBwjm5<*i7+2_-+azvyc?4h-Q&c2BV2%T28}Z@{wPNR|KI9{vzK81u>1{`Hs=bbvHlMuNpZ7dqluLxK)}T&FL|5b z>#^cwCGj6B#0-6nbCyQZs0_Cm*wPsJpUPA#HSdDqb-%U4T*72v`4dO~S^FN1X!S0=JVP57w z2+NZ$D1McTDIegg%86p82-CO$3`FA6NkNuP!JI9xw@7!9J!GFuh7iwU>Fy6 zU4UR@oUqC$;W(U>J3oux3m)5CXR~^8qPy$$*?Ti>Q|@T8n%Z>wPZL99NwGbS!E9_u z7TRd%Gwv@q2!fo&Icrd89Jp%GF{+5VPz1SN}#aYu))->;sax z8Ur>mW**yUog-)D_R-K1zzF-b5;c?)TEF9}xVkRFdrX`b4CTcx-3VhMTu}sLl1PL@ zE+K+t6)LxHtSsk`K+r)&Rf-d7BAfw3Ds9ssjyE2i&Ay1}bhSbO8i||*L_&NegNhN@ zNL=7dlFUTM;>Qr2%A`icLR{!jjjh6f`=T^MbS%wOBKU|wMDq!QpdSq|oKhKpY7Hb| z63}0?$s}Q0Iyvlelfr>B>bm5^r(SD!M^5WjO$pwJJ_RsXRKR6Gd5MkT|BQYAGa&B! z0)}#mY4MvPi;HsqeV6X|Gl}-c?!w{X)`EwtL;nMs|VZU-cp%*Lf{Dz7B5%DP_v9MD+zrDu0ILplSF#2+%O z!}f*n0wSYM;(1NfWV$yzUV%>#u)Ia`>Z6*+pHupzf^T5Eg-kg;cF9hy}9lmyGYG=-0Wz z&+?y+Lq&O?06jYkVB)nNT^(o|$(9B6iXspKRp`;zl z5=`Hn78xHV!#s*vAC@$RF>^$c*bF%fgB$)x4o}!kUfMnyl>GZ{qke|N_KLcDeb=h4 zGtlPvCwc%MG4uewisx%>42QwuN&^3r~}x z^f|u_pbu;~0m#X^8(+;nKD9r_bUM~!1DCYsIsHJK3V2Q<@IQ<%sen4h0C2dZZ3Wnf@&Xf{*J3(H z2hL@;xPDC!qIQ0o*YlW7dpkrht@Lz=4s1ccU32VjU^Whp%~3*4li4bvYx2In^RYhf z^?u0k?3u6m`Ss^l>^Tx5-K|s!_V_&!kP{9pR=eB~7Oxt@a348G6BLSBS|kMzxjf}Q z>r8o&c*gE{9~i9+M1GWKSn$#*{>*3-2pTfMY&g`9j^uDdBE!#+9)J6Qwh0s_2`ArM7r zLQ(yHgM$BQ3ONFRelL^4!<0W@2H355Q-O2y#3}oE%foa)sblg6#K~o_9r6lO#ZwU*sY?Xp*>5=GqO0U^hSjj*lp7eejX6Z;gU|XZgYRA(fX=-`6#97ZEbFEy)quw1Pl`bwDX3dfk3dMHvpj?#U*v;!ttu0pi zZ2m4^eUqnLp?cGn4H@^{Uts~V_hVU+Tt}StTFft>dC_MM) znXwY$h^vZzmTIneuxb}aOSpxsOyso1piz{Z@xb5Ns~yaYsQFAjYlQ3?KId>;er~_p zKXwYcP0Pv}x+Xa~@6LJ-fCI5oUpDvYTuTpHpt@7BTE#VQ2Z`rPOEDo-h{g};4A=nJ z^YJXlIA*lbdQ_$ML?Fg8GNMOJ^J;W7Bf;S`j&kJye=3O}oES9L0G;FNSqdnCTv6O$ z$vCPL@8?C6X&N#bpcRNCPi#nPHgA>;q6e{zp&yt{u0w4JVBieGwybkT;%)LpaEBmT z`Q0IXt0Y~;b%r;&`L9_35*G#m#_Gzz7KDFHK^~JxE1rvPwr@<95{SKj{xf7BWe>pQ`^f zm$u~}-I_f=85VbV z!F%`(fk*1Z5RW>Un<;Uq8e$LE0lT3aMM%8yC_R&zSJm|HU_CpkuSV(O2<5EjdXyD# zbkc96fON;h(yi=Rh8()pVm@DaG&!DyUSTy$JGIEyGRoU_pMOY#9Zg(+j9wq@)zE_l=2QGC|H(Op65+ zJY-6f5-S4i!j$$Mj1Vt3Gd=VOdr>t6fN%Qq%23vG_!_n27r8IgnCUTzn4>tp8-?+-bta$zvp zOAY(6>{E`Avzqs`!iG-Q!Nz`y!FBeCXIiHu={bqKpw04Cpm8|VHk8O{psZg@6?!#it zP|pim3{*npf1<$MH~y#^JXqUb94byAcc6oLK0xsSa`pqS)i_k~29h$233^WvNTkA& z(sMKRs9@WA0NzPNUO z{Y^?j+}+COezDFg=4oV$D!Ac?t&BPAu_ZcYjN&S2N+VLO6bu)i7&k2pM}#FEXI`y# zpr)0igC=Ey){KP~gNHgis~bWFPD>!80>LEg%QBgP8>RS)MEADyWPT*T<#g*9{{SAW zz~>LY?;(YWB-MPr3C$WXCBV+jJm%f*Cs z6o^CP#J{f@p&Kt8WH?J4_SRJjrs}XppC4=nioEVv^SzzkaTb`&AJxfNi5po^Sh7 zNTF6J#jPjXuR|}_k3TDUhRouQ?OMLfxOWYLj-?c<{@}uVykz^^*bZHSYUuhHK3DA{ zb4GCftmr!ZvR_|WUo@J|VNsVT+pIIZNfWRvNvr2Ph z6W6*8zSmoPr%1LzuH9W|-MlBhx=1~K1a8R1c%p;X0HuA?m6z||e7_GZX>~k7CD33p z=bT;TF!%yrtQL*kRhju_mj=O5mfiA*Ni_PXE3g#2KA!kO#b7__a!mTt^16YJEhN3r z3F~4|0UmX0U->k;?Tr7&i8?7&2?)l=SQ$r}Qw3?6fq%pWWFo~Yz0j0GPX(`a^ z=bGz_OhuZ|M}8pzLe+exyQc`szq!vXPH#tBXRF@JT#g! zKZycicTaf9kujb9d7@@2cye_t%22s+`q%<0bWEfwjQ2(2-dSe^^6F5*Om8f4gfvRsa_P*L`Lh`&?XfN;Gev;_~ir`gHf*$j52J z;1#*k-f-Y~xBPUIT$%~jr%c}(mJ9}gcqfIh@`mN~Aep*bp2aT-SRAF{MX$(M04AcL z+Q-;Qw&N&Bw&u>{cfy^ddtbPU%vF2}s5fX9YP0}pJ&Q7Ud9YdQM4gifn z4D!TWp0Vc+Y}M9QR>r{}Q|&-AHFKiEV7l zu^pv^838T`XrpO<10rx!=#XplPTx@20`tZ54MN9;9KkHDi{w4CoAvdGbca6qg zV~dSAd@^jgif57I7tkG8C4r0w&yieT({H-&xFKW03#IL<;!5uhNfs?4Cc0=5vO5u} z1><;Fm&?}IeTy?=JIf5KPgx@CqXR0VXBI>QoCuWu zydNj+9#Nk%hKr9tfS2 zB;`NI{dje{{jbRV3{o4Bt@W{HfGh2JLu|)jn}+fFad7KF`ou0@NV2@spu_%G{C9S+nLhN3dZ960$OeZkgL-7|2{h^2&TTB~;fE0;cPc8q@V9-0 zg=%l68Uf)BZbNUqjo_7!g;`7yV0-%o-EUj*O$2bh=%#%0m}C`r&&>m$OxeG@dB9~( z-^B(+v$y<8Z?x#TvA*PafFbR0v9z>wbi|k=!NXd*h5G(|-t;@W+%A3DEz^6;7vfi^ zh$_T~0rUWdd}LjJKL`*WVR#c1QYSvK!0uR4C#64IM+OifTLh0>WXdQae511PFF{KJ zs~V4zg;N}iTf}d`<#x>DP>|b=SLpY>|{&jBIi!GuD*NO zvd6)MC-l{zv+w`B>Hpt6od*?A{k{AFJS}m5?e?-y!^IYknE!o#VFYz!%YECR0=uL) zHK_Vx2Dx7!x-__iDFCX##pcVRE0+`fiskoeI%pyCnDD=Xui;GWyS9+2wx12vIF1YN z?Llpi_ERpAtvlB?X%oz!9=>Vjz6mV&lC(1+Az%DeB9L1Yu}~$ z;ZEV1lvH1h*2l%Hg*Da7r%ig}k4ewG8Q|##9r-fUyq69CmIQ;Mh-?RY@G#!qfi2wr zvORIvYxAlo$Q@&eT5}FP`UZhObWDGGK!hH(<+w1fSj zwptgRw2%)xl}$}`+Mpt3fc(N|<4VZ7WC1Y6Ng2Qc?S`_=a}vUz>D*PM&r7uZ{j#TX zkA;Z`R@SvAf!*aK59#lfq*{{~eHUIJ0W~)ww6DbvyK3o1rmDE1Aa#L+{eT*kjx83H zgO0y1-;-LI0bS#~=)Tg`^n|VUt!5a2VU3A>IOZC)G6mODNx3f*64-0rSpJDFZag`; zmqbDeJ9e7?_dYRYRSf0T)vqfE}l9ZHOAlp+91gpDc`W31VXtFrPxNtWL` z2mj0J|DreePtFxg3bf(0xz&&T$!GIry$MGim@B+4@Yp=nAATKCCwQB>b>Lq`W8s zPaEA&iNZ;JlVeS)+_w@4O5T%EE}gDe7r=+Bq)oagh<=o|3{eEvMAvlHpX>B2l|Vlz zmmTR&|8Ai)lcD()0q(YFk%IV(dX{vmF0ftMRcLX;V`o2z^Q%>0TWY|FavFE)3Kj#53dtZE zmKseS!;lXrh#vw{^24xnB$O!#gHS2;eL5zjir10_@LCrmEM8j%1nTT3p`x;-Ydyc?8(BZ#>+rw<1>`~& z)z#-#zQcL)0HA(uBl-`96OyPAC;Z!6*MkGzo_*YStyo0yg0qW(boil4ryUgw@%%=V z6=&%mpJ1gZa$2svF*Va&(e1bqQW;htKis3A-67&VOnecuu2nyMJ1ebNa*i}lrpe2^mEMiz?@J% z&2mxb*xviM`=gamR zZ_bu~1Mx|-s3Z39Yd`z9>c{r-SmM`UCV^e0}Ma|PgDVMm7WawFce}ueLWVE${6g28pA0oRy z~O0VHMecREM5C-+e-@k7S!8O8V zl7CU0rcmRw(>j)#rUOQN1j4gkk>LPW26Hcg!~z{o`)p8VGMSM3u?}s$I%?=Z9X(jT;zD~7r05%=g4Xk`GTsM+q)E7#=ecZhEh-tfj zZhZ<~h|+$H;Pp(B;q#0PNvEabh-#+&{BjPgvgp6SuhdH3SOM5p58?&jzvxjYHAj74glRl zMmDgGwv&a9jwZ+yv{C3_uZ3L^hhL!-&#NQt&N&u)-kvIL9K7%ZDZ9+)o>_RPIpkf%LiGq!l%bD z$YYyD#2yMmgJA0mGQU=Q`0L1T{as)c?I%Jg;JzDh2SC&F#?2%sEm=02lbS~86Su)g z#BUO{<&cMN_db)$6!KgDm&+5-X!zq%0xXP|jU+&&Df3;=h5J{UVP`Gw#&|Ta<2Mu) z5^vQtt1)-zNzJP8%Hm9S`J!KrQ`V%kzZA#`!FhCoHJ;`=S1 zx3fLk&>qKirW6iN&L-<+W(iLtT3n#76xfec2V-;=SKc)ec^3oE01OlniB`hD$FBs7Z`?q~`-P4r#VSb0OlEVL;HNSy zphGN{NhVnfMl#9|!T7A5lEH?K2$pAFchyYPB#yx*jPrd8cUZl?RdzxXBWJ`f1YJ~J zf1KAl;W&5^0Xi@?0ctd;m!)5!hQ*Mi#rF?K^N~TNa*H>)S_wrQ`Fr|?k0bMMM&L(b z;i3{_?kW1JMX>E0ffJ)qvDZw{~gvIZl25jrndh0@qKNK&7rVq zPxMbN0{!l7$#*t2GX}hcmh1LlgMm2v{UexaJSH6y>~X(9|K;SekHXKH?;iR)-U(aR zOp`+Td>cMPTH!J7j=j=-Q2rkQQaG2ewQ|#|X^)wW6Sijis5&wrPP7)=Vdnbd=MuBR zCzG3EHRjH{5~3GxF3@&<3r$hw-ITBwc7ecE>#TqWDUPTJtK>Sr6#=at6?FiA18A~J zX!xj?kx9x8CuiW^NxZd1GB@b8?`KDa2(uPiHcHohWu@l$SL0L4S*etV-<19I@RC}S zSfTOvRm9wg}vT?+o|tz!c%{K zZSJV6^YcS(+kX!W9S#FyiE3-F;XaBlCB*7QP^CFRjBTgMhLi{;Xu~?Ra45;fsA!Y0 zj0wz=>15(f7z0Y|EioC8CBdnXtX~Z>-<6Ro#qdt@;*}zUCSIe#cFTqhgj@yJLko`S6pd1vT|F=4<5>T#PrEMn! z7}{oAwI(&Z8+pYU?u5?K%B!ft(6Cv{L&HYTR8!LCGof+o(QL$#dTpR8)SSaqO-KjK zU~0udnwM$t@Vne-tG}6E(d&=F$hGig^PCPUkU&67oSJq3>*4Me7c(zmTej}G^?YA& zI3gI*0eI$KzS@&oe)^Frl-Qz{;q(p#oNUE;Z zvqkl?o>%%4Rh=aNg(62_v;Fd$xEiS295&)yyp4mLSXsoVJ@vNxZMZ2_{#d{Sj5q?v4jBP>k;aN+!U{|>?5Pz7 z0Rm?SiI}&fS+hDdsEiSxaOh+6$p>Ig-J71PGvjV;<4+RqlF@0R8_92@|IGMaPPDFL zY~F~ABD`Px*gwpUyI51z|6LkN2jC;{ciHxe;QLO>v!$NG%0#aa9OYS$MdQYCNwrj| zn1BYE{8DRs##S5=KJhzUQactwY1*G+`F*5lll2A+-Sh=fJ|Rbu>5^K60OM*$-4& zyy2F>5iG2Wrnkos{%G4pG<;3GY<4X!1m9)fR(yvKD=*6_x03@TT5ShS)};(vu$nHhgktH{fqtba^1b_x*5xDw zo~15V2KnT2&5-MDcr;Y#b~qwyUuy=&;9+=p*rii|mpA;UpcxO@`{;S1^ebhmXnx61 zJf&>*{RKBV%6DOTCS!;6hiftmMs|rC8iWhHDZ}2m&F-Ho~hR$iaSDZehTmH zYu`$nXw%Jdhr(VB$Dnx!j~5|YaXuE-+IHVfdw94l&n+;#8-e}1NIf(M{(o}w|NR66 zac++?^}7cjzuo_sbMq0jTa@b#p;rbOzs~tG&`*xRN8n0$yb04F2GR{#D0KeZKb3Xp z*6tvVhqe_%NV0oVFx`}yTaxsp_~|df-kk0D$CU$pJKUe7uRlv1p-CYlOkrxV9*f+} zVzCMDo!GSJ4I^7@Z%dc7uWs3U)IMD@(N1REtjWvUOa)CZOYZ!ULS`Bt`Rr}++ynT7gx~R58AHF^n>Pqx4GUTB{&Gy1rcgdD6_c$4)f4p+RB`Vy+!Si<+d;NI-e_WwRbq1!+s zu{C-|=aUc1vA?L7o=0pEX(}p5j>mA8vr(4{{wbk=f1AScK0s}I8EmEaj%e@C` zM$v7$s2V@2qvTFp4E%Az%%drZ3h|)Q())!1?qVx`HlrWNHW6EO+ zgo}%jZ9YOqRjSXp|8|=b6}P|xcKNxQ6SG5wFqf@Mx>b0dqk|c820pYh{21fonHRY! zvZ8)E_)=@BixWIy{~WpHc_Hxj`vlVoqbT_0fCA|LV`heO)zroYxt}!ZOTSyZAGTvm z8gLGirh*RVnj@&22G%3mPxL9jYu4B)&J0LLkTFEm$Z63;lv5UeED{kUk?x0vL}et#2nr=G z>?nKpJ7+%w$WVhkjMPzo9WFZEKH&_jZRxOErBwIsh;JDBJnh=kZ#_6KHvgmTe{Kh)=5-~U>sM}B?z4s@i_3?)A1zc-Ar;3)!C<5!z9>^?! zgGq+fx9f*h!*sT`=xF>^TbEugTeRi8JCMZZ>UTvSU2j|3dT_{Manxa{niE}Tk15c7RXBj{ecL+zUJ#b_*3s9Etgz3ev74Q ztOUEPq)MH}u*=D{^R|UgQ`ifSB3>Re68BP_${ssTazTEmP0mA*wQ>V~_H41@Aw_(r zEV-)DMi1ZIPno-J-p-ff4KXPiwx0nj&d8)Lj*2|4T^vu}=Nn;`Gb#*!4%#-P(AXRf zD8Dp&JT{FBAesCww_#tMx4QOy14wbqAV-5MZZ89u0Zi_4h`;q+YZ*svAFc zmYY(FA+#x>V%jkK;s5P(01HoX6Zl_|$*iql0J8fiEfb>2w>fa6NxtJeWnf5Ca}oHP zO;T}2TG^AfnM&Be3PasB(tbDG0SzPUUt*zasuolYxe5OD2v%3jf=v%CA_h9k&K}HQK_quf1Sxj!k zbuZcCww0hp*W?f2<1mHLCV06_A0zQ*MWly6yjXKsJmR{GV z8~C_XL41Mt?GCvRhFaY%@6mZv+K|`nns9~3`G`so%=^X-9ILYBQ~Mn!_t^atnON$G zHc~{)LE5RVOK+75a2P+r;dZ1vdf&&ySv4$UoCT6Ey#t{|_R@ujM2F;|ayltl9gGcx z1LXc$5@4x9sx;YZx_}vmlYqlGa(c=yk!lD|AlZ2KeDCsN@53bA`eq4eHY+v8P@E!t zaCiYPJXT427-VxhOL6cYZ>J z>W}8X$$(tg0l^7t4c(k}HszjY`4{P?CEYgWxd|(Ba;^q0ZjY;H{8tWK`-Q+B%6v*5 zdi}Cc=@wXWLXM5B)e$*n-i&XYfV6=W8a8rf&Tt-GHK-^vedwC$1eyPcJNwAUQu##$ zK7UdT8f*){XTcO&KA>Tr+bUUO_+mZnTDRYa9Ro**=Lc6!Ih~z!s;cMvBaMXsW*NPp z%D^sai}0gJ5;(;zF;&-Fqh7Qeh#Hmi`)f|0EkpZUa!HAO2cOLdZ9P*ArQX0-Ej@a2 zT>;q6L%h9PVx+x-E>;fL%Rj9%XE-O>3I0+taCWmv*v});601SJ?_miK{`TUfkuoEu z5d6j`mnt_x5fvF`epm+*)Mp&nwWH}_+57_2Leo?349)@}U3lo6mEYl}7bNMAyl=x#g&OpZEIg$dVOq8qgb{UROVhIxqqhU-o^^?DH!q@YWl&reCvk` z(AqS$vx}MZ9PWyvm2NI<(B@dJm~EfcG7sfxql{C7{IEETWx2 zBWwh#$ZTlLl;J8obQFYrsU~_}ge&wN|97Lo+ujf0cZ4G+%R(ZDSQ?I>-VTwzzE>k_ zFaA`km%J0$Rk80yjH=k!rGFKUyGZ1@-PaM5x*Cvr&GJ5|pfo?t<_>WfQhV3mq~XHi z&ez;{^wTYo&$!3&d0lT?%AJW%! zihUNF4)-JkYNi%y5hkxBuVap4HGAPaGLQ?Ijr>oNOf>h>F*iJj`5K4*hRQwps0u}Q zTJKyD2Ol4K)*GAl^2XO*82<@BzK2cWUtTf$yUI%_;thFR-PPeh1CePUM5@+(+^vsM zBsu-TFK_O(kD&XG5-M%q6UCOyPy5HD!;pp+rq8x>kwuH|kG9w~8HY%F*1A8_EJya% zp|2@dYt%aq&d<-k$BQXXbn&{S1%k`^nE_O9Hsrfezqy zO+A(Q!onU|*FJB*Zk2u@?t5Uqe0J#UTBn19s}EtSI{Ow%D_3uWxB_Qkez9PFOuz7% zaQWz6@rpN*I06Sne}j=z#3ML;ckCU!VvKR*eK$_q=`+a4a?>`m@kw?dEjg+0+sOxd zb47RE?{cpGsS>**SypU_Vl_TzzY{F|e;)q{!h~H)CgKF{)9uck5&x?EjMtjMU;jMt zUfvlbUO6%7{6;`nLrz2`_{yUJoiFCHTkIfP!0R_;Pw(^Qx`cBw{B{l76H1kjamJ8x z7gk_tY%H8|7dLk>Lg5M{NU_WSu%{}Y!gt8$78I7K5ZQ@C^{+$Z+`-aLg`itPzW zC}rrtup)(D9UN;sXsiAW+KA|0lq9w(vcWr_iKA@x+D4a>P3eG4&8|;c9g}RvWHH0z z#H#XI$NV^N7fFm(_9# z<{qdX&@qRw1D$mi6_T0N@t#aM6PQp$Dz`8I4oSKABX4{Jz!TpHCCvLv*i7f`$GG0v zmbN-^Ii66s5OoIEh>P*45ALkJg3<9ZWL|XFE##Etw%u!O<2f?Va0HDj-l)?9`|08~ zf9_c@;KJ}6X~XEbx{^au^9D6})Q)Y<4%6zx+|7Nyi#K z<;J0FzAr1v&pKq$QiUTU(&Yz!2LfpmhtJQ?*VonHLq!?1?V2^AIa)xkP9K)o4 zI2f6EwhWb3WKMpV{HUSHMezBupabpX%Lr>WYxMu+KH#3tfQPgG2R-#4K_l>?0W`6J zEQ%?+wc&i!x=Dm_A@^$M6Pc+Gl>Ys0n@Q?XBFrcqLU=uZG!uQmbp(MsUU%+hh5p&Z zt;rnUb^Kn%Sh8rYhnTZ`s`JOhWTqkd2B)RapinFCh&8@}8N`w!`+im1z6T_v-U7M>@M)>p- zK4o$fjmYjgMHv@Nv1Jw7##6559L97@e9o73c%rnGut|LDt+yp0ET_4d|KJ&RCmed- zsSRYwYs}V-9NC+(TOtP~d)$mAe6s2E{&eACmdaX;0eOo4OLc zlg4INM5T$n&FRTBE4zfO{rZ)OhD8;Ktq^V1&6M_Ce)ulSKcDOnT&S7fvGM(-YWS7+ z2a+LlTN80F_?Tw~pKDBd3o->xGBSR-7N znG_Ha&di`#o?M8%$%eDQBagA!6bVvSxVdo@f&wCqa0MSLdm%t;y3~kopAmfdqw!JhQ79b+okW-Q2vplc#`zSg$gPvq+z!T~fo+6@p*>9f5j#Y3Sz;&NW@HC5DbpJnMLXbB%IAH?r7jZR2Q|q(q_45pr;pS9 zj#wu@DBCCpPYC}C?a~F{eI(os&3TJWKp=h%z4$&Xod;9Ob{ZhQ4-~s#(v0XmaKa*% z_3EIDM-D~ymSX?`FT_%EEZyG_poZk5emP#$G?>(whvi_hp8W z<9Ydy6s`*OlSx}Ch)2OC>?i+*v)vA$UEnb-3o&50+~a9{W!!q*BBl7;GbPhNbB(NW z4iqQL4cX2Hs-oBBp0y{Vh`-{ z$WI6#9qk?m^lVD7-OFB)yO^~LBzOrK1-#o$6%LopGj`{6>EfYVmO8g8^K6bxiMN`m zlvl5)HLbYymn&P_4k+-FG2zFKW|MCpKq;@<`Ds8*76;Tv_BRla&j?AMVSM-43Y`No z|IaiDUL+yxDG|9jP7z`G`0M&ulnFHPu$StKLIQ2pi!?afwC0t>N{JLx!`GMKlXULS z$D&Vuo85i;CB)08bV%6AuX|nl3C88oL>jg8{rXgFwu0ZeJ0oBB&|^aPS#Lxh#q!Q0 z=3r1Y?ULx?fal@`3&6v+1yOVHfdd)_01oYRziI^odWqIuDqc){dLF?#A}S?mH3Jhu zlftE#F2eA4tMUNpLJxWX7(0Lx^%psE-kJtwc`);g<7*EI8ZSE_4V1k%h>@q`mJ}R} zK^dfFdKLi?2H$AeBf$VT5Se^NavjpkB!=f>7av%7@RmXD6qcs#dTXfAf8H#(PkCY~ zrUxE|W@;dAwwJf9Z1`^{V;K`rzdAV)I^W-U&e-z6A95V{G?105!{jW^CSTS{d2LOh ztwlglZAI$B`^JxZ_iXRI2xsiUl}h~-gnp+oTVMW?B$3m_R-!f(!_aBYqY24YGxP_p zP^a<2SXnH=hzt5WC}9dz`G!3ngno^2G;TQUDni?9AHC`2Uup8_%Ij_=$3 zqc$byq9132@3HkF=)ynpx17s3CTcbi9B4b;=~c(jD-Ss_yrp;)Fib=`77vP{P`LSa9!2yfP%8lez#>Im%gI3lc z$bqE32xLrW%mPj;Fu6y`eesl2LqweLiyV&Q2p}5&RvduM5QKte1HBbZLr~tT|VV&D^tdk2tbblI#u@EbuWJP9efGCwK2K3W;6v_vqtT zlGAIh)sT^y{wz4NT>>lAz>IP%tmhU6Onb*5?)-v;rWcUzt!U=0y~YE#{-CBccJb*C z-c&EWS=sy4aWqR#(ejqzU-O@{(obha?srG8dZ@Adb#aO(=daf#=*eKnkuTsWL-f9# z`_z6k6H4@`;iLe)vKy!1lN@`Hl$7-QHwqA(m9#%mu$kYNUG{g<+ZO|CppVa~-Y*xG zM_k2_S4d7cBLI_1ghq)th=?PhqM|?DhHE#Hj0#Ipor&2;H$W^Lh6|0L4#@Gd`%4{E z4<;%X&JQpbg|Ef*vRVQn^!Os*{<(sf?fv3Z4sQ=zE)Syi!f!sWY&x&_P78WV^AphK z@_-PE4n0tkV_y?i(*AFRKr1x}nYSkj-Rxys7olXQ^-`owH)iNj>18Y0#QUao5rUX!L?c0&LQlkCrO=j>nZ+8|6vFlY#LTKLY0i;mvc*{?t6;*pM&pho{5*yfo_VvAb^=X9-0kInbQx{#^ z%Ip?M{8Q?qoVYPZQ%*4gV1!7yRhxo19iI3|8NRI5Ce;<^CN6Y~i4#K3^vIR|3bsN) z$4v9j$v3{M&zDDIHVSrs(p0PYq);xeTb84uOk-rF`&ItGnA-bL=MQrsKPg(@ep_aILhenPT3(;%M z;F*ne-d;z;s1gLazgeK)yX=cqRB`3M9TRFWZ4m$FjYbL~oPh8*c0;k~O^V~W(TSG} zJc?-n7ya4vQMHVQrvWD$Xt+PWaG4>vIfz_j+H(utIk#hfHy&7pyU8cBU47KEPpdif zq5PUhX7N*V+4ZPU6bRA;EuU0Q>Fi)$7<}cW#64Yqz_Rx?>}xAPc$5@oq(HuSyJY2N z4|`d@%bUI6Qpt6C%iOH8ZIvWCA@pwUO1hZT?dXT>dI;sJv_6eZeatYQ7-$&ct5ZmQ z{n7O%?eGTnSE}E%p~|uPT9l~3bJo!FQs=Gn?R&lrF2dX^9z<2nTqCPq>mBs$W?w^W z5d&(T=Bz7Jy2Rm)E-A*vM*$r^<;{l|w)PxdNydaI$kZ=)xji>~9`+2ni?=JY>u)=! zDg!4ce?5(>*dYnM`z?V^r8d^F>bP8uKl+5*Chp(qqtk#&a#HmYIQKB3HQ6@VGkXH+bOyF(zSIT*-AbPXy`jf2a>lzBG7duu7(d2jcg`$R9V zj}bytVJuPhzZ9CtQbpj5^0NQv2>!o%_<#N^djOuR;=G&EIli2Y`*r4da#G6I z*LN!B{F{AvkF|GQYLj4&3aEFhjt}ECyz>ac=vrC;+m43#1YV5mC+J#3(b|K?E9isY z-*Js4q6un~e520l&dClB<|cb>YeuL{RueKG;g)wm`ic`2{%kyFzZWg;=@TPAPHHq; z=Mn?Gr!bx;y&TRYeiciC4HCbbY_Vj!r8TK*!(8RLL2#Q@R9xZ&ZQ5uOSrr&n-zfgX z)lO(eYjzF|M|KGj%D8cq=92#~n{%LYFDy44y@w*)V8+mYn(t3BGr<;YeFEl)8cyBIKM#q`U zEQQ6YzZtI{ONgz`%FDJoc>Kh}Dsng4CM4)IVm3iCKX5eqOvuFkCI`Efgv(C9SYmj^ zxvTH8R&gzmGrw^VHUE)zg6|Arv}#IZ2Qe#yo8Fr@6)JNm)c!Qy_0_*``!S)(hhsnM zUQdzlN1txm4ZZj%+z#C#^~R{l;6*l&O;)r@n{|j16hnln5?Nt5B=NnGJ_9q zRxJS-`_Tk!k1kf7F&n}%&|jPEQwE9~9vzOHI_!C7Iit&(5b?IbJ8qgfRt)4KAdL@d zcxv8~lu;dwC%?5xNr5SkpwXYrHin?w{y`GtSDs@gm{@Tg&sFuu*UfEQIhCK|^R}{_%^j3w`2xd@ad==69h;(21>tlKhT{uVd+dtxn1kv<)FqZhWgq*ZGbSOf%SU z&UHv}5=V(VynRxT7zjOvEhd0Hn|LD-Z0RrfO(Dqo0HR4=$>qhK?#XL|VJdKWbWzz5 z_w0$d7>@3VxP4EpaC?^o{fAM3BrE7!F3lkL+|uxDo(`66MfP2e7X+P=v%M3@4iZ2Y(-M-VH_wY#OTb)kZ;+ z)8KQ8B*i)U-w)6#`{WsIe*HNha-VRhKZJ4fzbH%jrxg_XPb(-iX7OKJ%IcCJD1-$p zUWMm#!+*1Lh9Fq5inqW56T-EG&eF#hhUlJ_QJN3pD!C39O|S<{+)2##{)LZ=6FQnFGB@sEN;{-I(6AIve{_K6R8J+-PdTo7K3W=yN(R9l5$50N?wK}`_Iup$HBSq>1K5lqFMrK(ra2iqh!CPKB|XpYoOE69XG5O-y6J8f!RSBsq?}7i7K`VT>c^s5z7H&7OL+qCK zsK{uVYA?+Q?nH9s5hLE&<&SH%DavIJhMO{|Kvn+x5h#NF;B1m@j5Ghe#UmxHZ8yC0N`CCN>T#cVr?M+VYmF8#1_;7#?*npJb;nor*{*jq^haX`7_;-(fYV18T;gGC- zq#&kfiSP#`gGP(#iLhm&ycMoky2WF8%p$_5T>vM3yJgzU2RF~5@4xOrl2xoBw zeN?b!o-i_IwrOs&DDE+PoYo}gSq9yVM4hg(JTF%70!}dhPA(T64I|PIk z`CQCLixcZ8d>JqiXw}wdMP?=j@mZkGbV)RKaJsOC+wPt>HY6`MdxXy46Yb}=6H#ha-{_O)-3IAdCK$n}WE**L1y ze`gT-$s0*&lm5bX7(TS3=xPol8_SFM?3ow zb(a-b_2+Enq?_k`m8ioT7NYRL{%oYg1+O{eZbX@1c*!XoW*74hcJ({c7*}qA;ihuv zsU98POShAYc8sh2m1_{3LegY4ej061e7pvBl4jBi zCo4m#D;@dTMg!QM?k>4XlP6f?tej{{S4ffQV@R>T@?2r?+%706Iik2nmxupC2XHzX zF1)(WPCo~wVmBSsR-8AIZ5hzE)jVf7*L?G$6PC+u``J=|kAZdS&z{)9oN|utz>)mN zCD!?Kn@ZtpRkDnz)0165HX#LRx0_D%SBvnqQD8SBP*U9h(@)CoB?yE=&(k>=mv z=@>v*NV4OpG4h|W+NOMkZk2##lqN0D^Wj$DZTTwzFrDN zaOE;LBvN8hcDo(el(GkV^)(VWd-yTePW3Z>_bO3x7E|OnpmpVhJXebwZt=-~chAFB zTcVfO@P}wUbRWn1tl(f2$Z2mU)<9v{P))_Q{AU!6@lkW}-OJR|WjP7Ms2B-b`FseO z@E31-utFvkM1W-*od9U>-B94>j`FRU(pNE!j?85mED{T@XkPFx!V*?x$Kp(*Rfr7< zn;Th@0gwYNFW^4*U}o)7Q8=1>txXu=d)a0g`qboeBXniqjLq^#oEZf6gxP$@4+*y^ zU#1`cfK(||Q(a9Q>E$<)j?w?u*a!l@MotCTRZyeuqjeCq%$574_^Sp7wS2(eR4l3> z=ZCpGy~^)i5|v-7BNeD}!}-*MBZgwb1rev??s$?`&;a^GFme&%9`tkmbO6%oQOT%tZ04tEH-74r-@JcA_xFw(>`8zrV8coJbMvMvMY~O=>p-^4_7oX z{!yqFdu9eZx3mV!=t9hIF>bk%uzSJOA3&TXXx-{cv5}tAoyG!_`3ZsK%1_YPy(YDK zbMZw79O#s-9^I0JFOvbz8L`33==Qx#N4xzZle5=U+LIT_mtXLPqO{!irQe}saEF5q zZjhYh$EC8a7VFVuiaej5p1syFX(QmKEvWo-tpGDb=4MU5<{n{*W9v(@jnJLaE#m=u zKN_sXw@)WYQjkR0zb%@ciOKOdQu(z%?(}pXX?Z}L4sP!ETN30!h5fk1MG`qJ`Xg>t zbezRnnAIYXd7u&)wXZCk`@~zs#}$6vW{Wu~(%GP{}nJ z@>V<=$KqHu#}G`k*-V%r5+%%NLqKz#rJq?mb#^(`%~bqE`<|%xaiyuveakSI0Y$KM zv={m%S=y_KjKu`z#%>J@mIA!=Z5$W-pJDN#=~JkgDEa7vYyt&aM_272`lZo$zjlEQ zXs>`KCh6r73fGbsS*9V`f(KU>WZ`D;Pg1vI`v=2DuT>^*e*%TeT|}8?kibyL$}N8Z zua_clOnMfIb9iR~7Y}AAC3?60%>G_*`wy!(m97@VWp3F%M^A#0OcjbU3um*=tWGw5 zYdO@DpJi3op4K3-c1K`5q_w(;@|EplixnsV2(IyxVvnW)Z}78|B5vK1r%1v0)BDZD zz4;#{*WDh^gv zyH{g}8?PR3Q{n4DW%EPG;?Sn=>(;yZ1Jh;6c2eqZSZ)&O@`W@&Tz4iKP{`jNhyt&< z0}f;9No)t&)&UG9;l1^#o;!vZdKtr#D4alP_y&Lns09~(QPfP!!8G|s0CDx`rIrr_ zXyOOOV($Ib&S}j@1OI%6_8Nd;2K5qCfg+;vfiv7gv=qamlT3?Kyv^BKeco{~ASJza ztRt!xHLyi=KmJ3+ZM>>k`28;hH6IeFTr{TaK)>|EEYYJq;q&Ap4%?G3m_!{;6}N3` zwonp{D)LI=O?Phy&Gu&JKm!h|HATje^slo{mId}>KtICEuqVse*|d!$l0s`3#hvr5 z{pPF6QqpS{68fAM8uG6xoVy_Hw1N64fnBa$oFSn#aXlXLGbq|E92dDrWRAi4_`fU2 zBa{Dvz2cEhf5~7ZTjD05ly2t@9dgS7tNT&ME>Exe2}OGkTmA;C{MwRp&e#u>r+}03 zg;tJrVV%4poFM!kQ;SxP$k*vs*NP_^v24s;=iQh`)vFuZhJfT$I1k7;GF!h0GBJ!4e-Ah+w22X<+Cxc0 z`b7*t#{IL(%wD~!-WGnpO^uJ1pFZh5WqiE8nmMWd{Q2|XW~{t?>B0NKo7K-Olmo(f z2hvH z9pn`qes+KMiswlT@QpM;f$q3q5In+>qNhfGhZYOV%g=WkMrpjvz z7_O-N{Z3sq>v5IXVW#)-^_mYo*%FT!dsJe7LDb?-uw&zf@(2hizyGq-1N~6Fpf%7l z=trxg)!!SX5SYYhL(tCM+hI2$M3*C!K<`IaUJ2vfzFBWkyafEF>Oqo9-gpkcaJ7`| zZqLcioM6%os73}?<@*$f!tHEN_8!{b{yJYRnC!yomrBBV#S;@ZznHEB&Ui0-o_Zal zb$Y{?*;)HARup&S%hW%uYsT8kvFkIJ7Rs222HTV;^6-BmpRgm89N(}!P z7v0n#D_Ol{mkjCour)NBPn0XOy)N$sx=f=QvcU>q^=G07O%2S$boAJQ-H@cPBK-?< z(w^M9bmPrph>)#SA23r?K7p;Y$0h??fk<}Vgz8;%y#w1{?o{VwO{Lx7s?G0H$0c@+ z@yl(eGRVfJa_~`{D$Bn&RP8b~iMuXBUDJAVr=)i@vQ6M-?%wOSCK02m!1WkIkQBzH zpQwyJ>6O6Z=f>B`sL<#6ag~p`_9+%#xwsmASSUJHiA~u=JuOk8N^?I>y&o_=UJ&*9 z#lvk$#Qf|prFmvInzU_E^5pC})8t*b#ZNf@iA zY1ipLwJr`~tFwhI2#XjbNeJzAXhfO6p}5Q-YMRv$IrargTqzD$5?`NsXO)zR5f9HK zqi+Qre-wYGVW3K7x{@4%pev1k-=*ME?g;gf{!!-UchFmbT@3#Fa`5=DeCfx@Ln=q& zNIZ=ILPc$9yd?E3KwqQg0k8cy%ZfOkVQ_b1sdh>KM)zF?rKC%C-!L0M(vmR1EiRXC zMbDY4SX!J$7A2-hG|nRWLy1X%Eje_p6Qvqyi&_$rzZ27#Y7 zm6CCOLyehN-{$SqO=&L+qpP?YrG%nljKyW+{EyC%sfeD|&n+K^*AJ@IuV+_@DIL}> zg>n1`S;dxsXP*#n4m?yb`Q%GgUSvr>FbJOnu?uiep3DX$YA<4g+r1&>7tfJHNu}I+ zMO}^nodx)?Hgv196=W_*wMo*LRx1ihGioZGFaWEnf=DX3M(zh7%=oNzuTjdrpd}9& zSzL%`XX5#UoYdAWc$!w@vp+N+@22W6H?##AZ5t#GsX$Si+aQWh?Ook#*-?o>|6}=c zQ24nvx5eOgF$~&EtC)7t;pnv~{4A2k5kR_=S!!o;`QE>_%wc^-phmbku9X^>%ua4g zi_>t>S`m%7+h&+g;ny_gs!GA6#{p)@{vBcBjMZgYT@6JlYLjg4NN)GKTCZ3p+)Bb` z5!|2M&92+*-SOE2kH|&rk}&fbkO-y9pQzBDk^RQDG)uf&ve|W(i>6(N;Bi|~&J#=( z{5SG}>JtT1_7`B0@Ut3ytb{!K?Q0PnC+tSuCPdzW!ft7I@r!McJMQmF$=004)Cpz1 zng>*(`x8ZsfaU6RxZVCt-G{9DRSbSbDL8TYntVdI+0TyP^t5`BQp>lN1 zeOXrpmEHw4OlT)5qB>W)V1cTwun@i?WOvvy9-H~8`Bh}ad|~Nko#AnZJ^Y*<0ywk8 zo5iDOr=0{>5ryvborcM2ZB73l)pPiVlH@V>!j7hoSRc=Oq%Mx;xcih)gI#1E zZcr2%_@YvHUEan+*A|T|yH!-hcsoKpyIj7=in$lNQ6dp-FdQA>5kOd|Q6Gu2jxa1K zNoWh z7X=E1t}=up!7?SmF>>G$5CBtsXcn+(|F8FefdDGAtp;$&bl%Uqs589iiIqcQLMo#GLxtMj9QDs^9>nQ>jT04!)1nchYmqLsPog z2c4_O{vC^MozdC682$5uSTU&wL-@9Ci*`o%5ZAUYbWM!Zro(ynW3=*7eX#LOxc)6C z0-Bsq#h56eIrmRWTu<`NRNJGaKwEp3Jy~=u{_QN1#3| zZwD)nI{30=rpx`BP2Am6kbIYNEiYaaN$yl}@dRGPYwcl}y7ZK#f^Tfw{tJNJQA5g& zKq80q-lLox`78AqiB*VXB~Qm!yD(z>N1N`8z!99L!kf48%GbkE<=5s?=vV9(p8cV~ zG%ptqpQ%AgP36lD{h?);>l3_LpdfVZ&Js;PB=-fZP5?h3tT|)37XpAzv%Z+=jHAP^ zdW5PAvrwuV5;viSh1y4=6;NgsIX?K~N*DqMS*IrVv6IF{mCs@AX4>Z)Sb>GPl-HB@ z%hvP$E>ag&ZoFg?{2qC=JV0^5I1?TsT?C9=_&=6iG5}j7GbwStd<#>%6c>Lsa?(UV zZ#d1hpK--Yp@l`vmI1W+mp>K^wHLXP(><#d9CqjpG*J@x7F8gh>TF`u=bx)ece0DU z^(qWdDOSaYcj`^%x`Vj^$@fqIw zF3;bb_CfIm5-#=dN^C}#J{6%)=!?^424xZAD^=t){XzEInI-(}MF1=1IADAMKjJfA z+hv#dTt|+>!aa)^I6JVv+g|tm?Wvahfr&VgCPWM_=CMc(kt5-mJ7G?^H?XT>Ej-*U zl?_vDy~eDG&8jxE>*qNgjaYBB@ev07^lj#Ess@~p%;qHi?C&=G4MDCC_0l)TD{Fz5 zm;vAG^!%?&Jh7D6lpw>`78o2v-4aGIZnbFQB0lX3q5V)?=m5UpjDKSFJp;1;rDfZO z%SkgVC@<#l-tKa%EkwZVj2fPX)x@Q8Ax(Gee+W>{j2s`w_fe7!;okG>IU}0frPKF*bUS z`llN3@ck_Nc$LsQ9qkDc<*_!_4eACEaPG=9rP>b3BDW9){%H}eQ0(|senuVQ_xE(A zpa(GPM#wCk+EGG@nz**ZPKHh->rU90YS=@y&k?u6NK&mlXDWu&d3@UqLQcJhQQ%?q z)^HrW($AA^+0u6mP8Rr;0k#xG~WRSfkY|EFKG9PEN*KI=qI^^tuh7n>tJVnSp)l-+`Pl6!r?gHAA-- zA?qAopS3PKN}ZNi5z@S-<7s(Z}>3Z8nNXSTRKtsc)88^!sJ8zGL@}`Z=LuhqRPf54@O>H`A>Y+ zMS#W=`;XuX47Yaa5Eijs)A}$we;V9D>W&1rKVH7K4?MJR4Qy(1Nn=(g?YFYBnzj$9 zHw+0<*soFdvzyIg37+vrRACZi7*Lw1fGme)GRH%eRqY)JOql(I$0Y zCXF;9S9K;g?VVN8-r6rAfnf&|{y~irP2!qodN$dDxWeowuy2!xIX>jrs=WM}S%DPBw)Hk|^dlVyR<>Ittz6Q2l70SF)`g~87J z{c4o-p~%!l6r*R4f@M#N>?RkMvn#x_&pHAQ8@;VOtL zJZJH8O4zjYjw^VpI^#x!WipX=cKF)@MVyB(^+*N~z$2m!RH{E~=CxB?ARS(+yTke; zXn$$r=&{jh{B}z8Y_5;s)J6Px1-OPXQWI#+@>uYCgppeD#TY5==L?yxIPV~;Vm?)b z`eLI@j?3j!?jYYs3TH&EJeBI&*PnbxH0k%920nJ|co)H&)(@Ln z0t9&6w`I=z=UX3L*Aq~EvT1PQ`@NVg zT?Vs;WLJyn`)d3AC<2`25I&@M8`yzE7Z5EOSvS}&2@#Bx-Qs9_q>*Agrcgb3=C&>Z z(j=ctcEElIqE6sV?Qtw7xFxn2iyC9l47r(TRcy-!v;?8WJY>F4f9Ax;Srq!{Ib@4% z@Oc~S>$>J!!-_Y$4Au(`BinCW_=csAqr~Cckb$w=WG}rXqn(?_CxpQpGwe{XK>Dx~ zde`+bzWb&?X&+tI?~suq4|bL&{6c4^%assK_Me3#@QFVon1z+A(-)b9rJ+@Fznh48 zdHxZaS*;3FbGwqN;}w^NkNvvZ^`VU4irrljGd-;E*-v2z%H2@%$|aXew2op6j*jKY z!*U%*#|O{7$3ia}-xIk%jHi!z^`;iF8@BD7VKFiMs01q)9?5!MYE9870k`qdYZt)d z8WjL{Eb|DaPC~|^^fq_gEva*)3htWy-Rc~6BRFMC))3a*hI;r|IVR0;D3}hrLKoiDWgbv(5+_U>H1$15p!L+{vky{;x5S zOA;h|jL5y)jA5LRy4X7r^lEWJ+qC@;!yKnO{e68R-SNPb*tW5%z&zhK?`6=i!N=iU z@?GAGm(*vTHNVsTc!HXltnJZ<%b+gaPjnaiS_{g)L5Z4(yA5F@-hP><+3>K6<;l%6OGs zcNupZ`9)N-N1p=`x@Sr=5id>0BT2Ryw@PcJn;r~3SH(^un2d*PX5{84i-}o0RMkUs zHnLegm6PiEEta02cS7t>30JlsWna_JNkW7c47fiLs|PR*d2kuUhE^{7FB4;ATaj$t zU|6?HF;*9q4iVtahr4_bcf!v1Vo#^|JD%soV0Phw`;+bm+$_!>;##=>vRTz?Fiz4f z@L|p9K^mJ>OmC*{2{mxM4C-z=_gY+4#UTygxku%vkr(&dHbtkoQTN4cR_jg6nF1?u zL)hG8&UUq-dC+sVBg-gwPg}5LeUF)}AC1DXR1x>0B!4>He+-0})WzU+B(`IfQ!sJ29qkOX1)GU#MV*6RwnXm2eQ18*` zr_T|i#o~gp#ptRHUY=61K)o{TQqDe$H5-n0S*VbO<7U93H8qae?QNaI4cP55|5Q8S z@*-%1sKQgsPv5Jlsm~-NuCEs&tGDxHXy7!Oh{K3$GPZA`JR3ASs$ulWW-a#?(YbLI zX!cDnpP4iI&%$p^LP>;c$(t{ImS@w(3epB2XvOdBI$zO0;iUf?ur8G&+8rT$EsgtW z!RjrL{+wkqDZLuA-Lcsz83O9r?pCE!6Pzde7rnv&qLUQMYMm@n!vr}7#;D~rLoBdq zpK%-caTA#FJgm_f(554F%-C{RD4sdY)dcG>upj8s~bpzA0+a zFM?p!G)(F3HiUvQqkGwhsCBB>quLyds)JX}2+74ld(RLtshTIl!BbK6jE1h$=-Odb zZMx(_RX#WQk!P+t(FnPBcu4Pde0+_v(jm!#JByw4OeV3=2N4yChfD2_{^)E{Y*zv< zkjVhJ2+ZYm$f zpxT_QTGa84{?G_r3z;7xn(*ECK0)f@!YOuTq(3Vyv4V$*>%RCWN4&7#Q~NKUm@t^7 z1o3JU6R!_GQGeNv;f!%!R54lCtHbALlTJG6RfbP^YhPMJQx(P@q{lR>T~)49M^<~< z-rlylELG_zw;-HN`juiVKZ#`4;E%hAkEEmO8c;0A)I5c~&Mt^@{OUw6^rWUPDtGL( z*s$f;7HHbb2-P6lh_^N6#YO3yBAZnCSKtqTsgDCk}3EEhJFHC8x5<%wX82{nsRs;y=3bbKBVq|;iRm71nt zG9=l}^7$LGT8K%5P4#wqqvi%hwXf1I4ND8}KTl?R`BbwIetC?@|qNO}8ll1g_BDP>U=o~a`R;@LS;5GtcVnR6hac$-eJWBxbQ+-6K z0_2v@bx*n-iM1jnW!m41JXZchUu|aj9`4=wei+{|>4$wS5OI9&HJxdgPAK3;K~o9^ zL_!GC5rx2seWr&yC9d4Xr;ng9eybDn>JYzNA@IJvIZudf5V}>=s;by>spPV;LV~gS z26iC!i>xurn)1J;B+CI1P6F!r`JH>!{DzPPgNfcKrKgC3)@SEqTvG>By+=&@uR8wQ zzoorSEcb$cP50llSb#aA0Ne=h?_rR4)(m9}uF@UQy%$_D>qL(pi!=kAXn7K8P zz!+5AHww&OUJ^58_dK6+&eU!=HSirjtm&J_M)T2;4d~joFTvpVnSR)IkHl8tBfUG* zbuqNMXfv<+{mh|tbsS<#i%klJc-?TP zdJ^z;!L@Mkb+b5J$R>JDNI8L%E30rY#m<+~`iWlS5WyQcl7hF2A*U+c@${(6c)4G8 zKCT%#`v$cuku#d@E`MD~_VvoRnwLl!NJMd9fdD+LDz8jz|H4Wc&>~Z<{SYLba$&JG zYhUdo;6O!t$##{tqybM#0oW;0(yNwuBw`X1lTLq~VV;GvyEfVsio!0C?OuLWOVvNA zi!D_h`>GU{GP@ZBzsZzB0JXbLl;qEhvq*B&Nwu)y5RIh8?*iUo6CCp* zp^tdIAq3v$E%>U&*(Lz3&$VPf>#d zL1w$Aiv5Eu6;8UYoJU0{7?4t#oja9|Yy09rt0%ikMV?3j^G@gL(aehriqT}#O#`Av@ZArvRE`_T)W*27h2IgS3E^GC1$7n% z9*TWml#hI$z{Wo8JTBojqV(OUeO_9gmIA4d8|DBl$^f&nD-4H9AYJSSAGZ3+=g&cekd~3?pf>au^?>UNMpIv662W#Yx(X$957a-0yXG3{X4n3q1`ogcy?5wAb5C*NZAuV|l0DP;Zym%0%Au z*zoVKOE;RmeErpNPkU+;V6vrN>$)9Fq5Xcmhw<{@KMd2{5ngJO$~flVTfw|sqRuhH zFz|W-bHkLBt+h<1W6-PspG)Px=*o}q3R#n zsz-T~6ad>D`vjPSQmr~Fp8@q37RK`G57lBHVW-WOI&yq<0zB&NceS zkK%&~ya`^-&z?}nFNW0JAy)%ydhE14o7=1Ly0%aHt@JAo(rk2r58;BJE^M}JBiiVv z=f_HKmwY=5&?QTwA&9Et%&wK&7KF@e2|~x~WB7tZ((vUhP?+epu(iH8deg%OE_B03#5Lctmw z#c+5+RGfe>zuqe!BC}Nk1FIS0+OPVr7j9&Hp$&M{O`VIB_^#HRwkZY=4A%4CZ#z|@ z*CbVT9_IS1(5-n0QiRJ%!&`mO?BEm!911pkgu3-V^(>MliCMKO-zh{7r#!sbFrLst z3l1Xu%;KG_NX8SIJ2tg8Jtp(wI4*DViyjW>WSAtrwI zUE{iGSK6;>t>gv0L)VMuf!rXC4BJX1Bs&NDY1bx-j-&zO-=qTzMdFU_{L{46pRCoBC!a9<6ik)ba{8$@lFzW$f2 z;m>pmLE;k+lv35mrU4tM!0iA9ZouB_>FmK>{mtWZGfntpI-^Jm!Fu+_&*R3A=*510QZt&? z)Z{K=Hs{ZhxsCADvVElwIE@E?8Yr*CvU7Ipb7 zh}27shI3)n=j8ojzB#I-umt)( zlw&XgohLwb_V*4*IFzYd72AFHUK%b=!dfc@Zd|u+jh&X#iGihsl%D69vnJ=yqrUou zZjD;{enbnR3*Pzu4c`y4v73aulyM2htSW&Iht~?uyd|}*c8CO4y0*Cn24JeI)p?bx z)U6z~;2D-EbG1<>>wSI)d*0=Hx_WyW5?RWZxY-htYonp*2X@J7q=KrkNr#vCf1xhp zy3*0Y&f7U1@@kf=*J^_BY=7N$5q^5*_D}|C}-!P=@>^+sowlnkZ;)4J`<{{EsHx|W7 z>_>j=X9cio^;?OKpRg=CLj%J6MpD_kKET{leLozsf)26&fi#|GtN#b|lHc%%zP*Jx? zhrU(}pIl&pNH0UuWN$Ad7JcRQ@$j_`fhLe91S3v}y@65S!RY>Z!7IC(Q#Cjc0fjpJ zY+c`X+Zfmi2Zgq260DlCib*7Prj>PiWwqPbL`E|4Ujm=}=e znu-dsTRS+Sljuc0xyJD(=x2<6u4-|+&35GHU3EWYv6sZ#3F$HwH0#QB96JfB@fZ;5 z&eICc_LfEH9l^jHJt5I$zd!mWrpl06jY6O{;+A4^COk*hOq1YiRVO}ed6dC;a-#ae zuwO$3;7)tK7Va&ayEKPG^D|!>OU|~yR)}Etok_{P`B^gq;HT4+Hc&du5&)a3O|zo> zFfz#|W)N)eeVtTN|4Fwu zM&$-Bcv>zMwGxk(){Hn-KZ3V--U0n}tYkZVou6(c^mdBxxr>3@hnUwsmfxLerIn1R zP$YTpk~s@pa6kF(MGriE?dWU29%)JLyqI^c>h zQH^4UanGk6)h}ZF{D;*;SlbQZ)1kddX<(nO2G0Y(*S`af34B4Md^g#}a$aTH_2t%hW`^d`^ z%eS#3Af6gK`n0X+#lNNT9PCG(y8fh4BqZ>khK#ue$|0#ild_oCGUamKOkF8%zvPk0 zFLLR1^70|!yIX<;<6(L7Ux%L$8$}wrDhIOkQ0TZ#%6^J;uO>iKdpx)LTu3uC-iBIn zMS=n91kPNxWB#h>-KiGM$HY>Ai)HGjwylv~aT_@iT+R@XhD+z;oT)__`iMhTZOQ^k zptc&NHe`If!gA$4gjv9sl-)_Ja-=~iQqMEy=Nv84IwR7$$7ge!G9Taxx=i?$P>2ki zhv+LNMJe6qcoPo31eZKyTS}fvkx&tF+ytX;k-rQIX!1z}nP7W)}Px zG%g6rDMY;7PK#TuH-~pg?$FlMvq)nHAmmg8ucZ_DRMoJCXJHk1I3Sq?ry6@LtycfS zkF!Q`g`C;Ad!XmECses3Q?#R1QKpnEv78wrv0iNy-{o+Cg|j}%gp}1 z!4-*er0y#s-*%d=@I$72SJ6jxrIj775f@L+E!LW(bE5MZuW6~=I<_6yLMM@-5ri;5 ztIM`66=V;1q|)0o_qHeaKJeOz5`T$_L6>tm)%^yEuEr;9=?oew#gI5sTH9o-w1aYZ zbx4Pm3Nysoil5Ppf?llvm!cLLyRt&2;N6r$Ay{PnP3_w&Z2J>_X8qATIXZy_QVx1r zt&J=p#+~2LhC;o>x~fh|C!GWE%9s?3+`dx0)8~RpmDea7>@ab0@bOqkqxz5Dnj8M` zP}MJ_^H^EdN2S30oRKguw%`H*yl&*~bGuNAn@0jlR~9Hi%%VA0GcqZ^zvrK9rttvO zss1_-4MPAb7XN>xs(;1TPaJhw00|adP;5T(nS)cqxj|9)>|YsV$cL(CCu-!VE5La96C>Kw+aZ zd3$-#MyXHAC7vxtF^1eiiZs#*a99y6RbIcse%qfJ9t=Ui2&Lt>Xh7g8N~@7W+!)m3 zmRB7?U_&!MozbW#S^zC0FGp$QR`d7>; zDk2NJw`!m@XuGRqA^#o6#p*wyH4KeG0P2DNE3{*>pY*@Hd@80F=YU+Ge*~Qi1t@eE z+xsem6XP<|fT~q$1eWxNysjQ?XE zJ@IIFRhmfQiF#s%q>A*4VdL5mDcAs8y33JZR4>RhKYoEqio-vAAXs_#X}i?K*`AoZ zpVYmRpvL-+5>c{EdHW3Dk9Wzw(EobNsP4==-?CNi>xg#P&Y?ntmh~pTSx(BHj35Io zkDLNGgQsQ&DcadvE@|<5{1WB+Y4X#;T%iC1OBNp-EjvR8toB1LE5wGulBN1`-1txz z!%FIPN&$2op_!ATT%%S%r;a6+d%4kwItXOszt0_iC0bviOL6Jf-Is+J=VN>c)yg#liT+22~83$ zo>p@xd}ygtWMH&YF)0w)rkJakFyZDz?d$h08iLQvB@I~pbAU#ptpt5D=I zS>(8!DPP$_1`-u^IgYJ#1mhZn48f)TvPh21mV1{RLX_SP8l=QWW%rp3>z6IT&c|J+ z#$Y96Fk8%%4BOJ}#@<#C!?y7Rlym9~Lc^?bgK&;r50#1UfXD@>+ZvF>&trVoEA`%- zS+AZXR3vh7rZ(p2UG9>sN~x!{T`ZEJF`he$o@MGC!RHJ!yl$OCeL~iJ*Yjf}$2y*j z%ShPg9$HaInlYP@Tn?zL*2^5)mk#9NEJ-f@H-MGBFQza^WsjL(N8y{HXvf{u2M>CYsEET@hD_IRCf!?Lf!$M8&k8Ysi#CX4$0G=6B|3O(Vu z8lFNacJ4B+!$nr#wZ|drU_`o#R*Y2&v{51#@Dp9C>(wPBATHkb%+f72NSProW1$@o z>g=JE8G?XUcD&`Aoo4byfBAANAjg7Ns#v8%P(`I|E=%*rsD|Z9c?s3yyo*$HjI=Sj zUV_Swp9MaU2KkhcU?x4nIls1C~`D$wNEO zE{Ar~JkK#_KU~Zg9=tk@X3O{yrP{p1o|yJAINCS0&j$?f)2GLWuE|3?s$|F=uAJ;_ zX5M@l-2e=2fSbZLNV~Zg?c$H^=>x@zZNj*~b#cbE^yv$crXwahYZQFpyr?rhlrJO4 z^%Czj9f z7ORpT7VX-!aIf_xQ2}Tj>#KslU?NK<9GC zEnX~yN|Q)oBZ>yhhcO1fbfA?0Jj{!kbgf37?ugUJD{Ab6!%kgC;!Ai*WgfqY2_1 z%ldmsW5eLXtgxN{VXbQhqhO&7#K23QX$aA-Y{*pTc$mX`37#YS*ln=pRXsIej|@Y) zvw9FlJY8T|2v;dU4bP7v&1%wUaRL4nIN#qRu7cu6B`EpTc%KxNG0^#4eSgoD?pl}a zl8b-z(s-@PXbX!C;(un9iQb&F2nu3z>}VCts*6UiZflvN*>C!sN{k%J+F8wEY%@!B zsOFx)%Zy~i3FEeUmGD&Eb@g6bJ6f4~wu5Q;!(aH(s7$}PXSY9n9`zpFHga+^bHW!% zz%jh_4pszVUz=5jRgFco4&-liw^Ub`Vh+6I_uaE>c12g>y>~>l1tZ0PY6szxz@FN3 zz1Pmz0Ni!7B}F~r%sCCGTFSq(wW%yVyN2UmA#h)i@ja-rO1j})sPOfx7{^8t_6e4W z>-POnB$_JCbnjlOmohUOi*A!CX>d%VllknAhup=ot47-B+$>$ifVFYxq6=QdkR<$5 zV2h1LDo45c>}Ns`14=SoDH1GZhhP3yo@Ic8Ae0 zC&`cCllc1Txr%VF^Z4&3o@zymlF3431s)hX{|2emPk$7tH__Cdf0NVU#R{?o#s0L` zpc|De=|7KNh(=i7R_b>=_wqTmAsIiT$*GGN;{1t8JLhwZ3JvDmzYs}V6ldw@gXA1^2`qGK4Ns$Ou7Th(u< z%raCYDuU)DcdQ`QYouDmceR1@hLqoh9_clso67&;>4BOozyr$0J*uPIl8ci-$T4-K zg^^Oy&rpgq(x9t>jWQ4@6HT&Vxp!7gf>C+bUOd$` z{rC$>=?6Yf4Kj!s;6_5PKeJ=aZ{_*O!F#28!C2u5r^ zxdjfuT$!P6-4-`btfz-aO$nL!(-(YLvATy9OusRZcnN6KV?d>9oB?l}(9hxhbk-Kl z%wF8HXupYHQoo2PjSrX~gPFs|uqT6_L9x46OzB@RSzdFR#HT_BJ@hiW69+Vwv~p7z zzgQPq4{68K4{k&7y@>OB>rEHgFb<9ek;|^NDS1BrILr?GT#TFCU3^LrCPI2HgOb>* zYZ1`}9)Q$D5t)IB)fbnAG<@ljRDU;mhhZ~49DNG6oegdi{b@fdBXiE08Ru>n57?vV z7BTiz=sA5%nIFh0yI70%w{Mj&YqZ*v7GF2w!+T0TQXk-<`P@E%Hx8VNw->cM8^^-D z;?JE}?An)ZoYX?#aoa|0%9B&U=C3KDpW`}4`2V}SHGKM0-u#8WVg0SVd80A0RQR9u z)4Xq%2+p!QN=h8kcD)D#~=xGc2G)V%idwS2sYVs6?C#`nGQ`tFLx zA`7(I3v+9!ci8CneXc!}113k6PT-@KJ*fm@ZrMs`B7YjH>U+2teBr4C>qH=eu<#8^ypZf*r(00DRNk;&!dZ-aa z821=wamtPf(H|4uGU1rj=Y0i+vYw#LDN{&0MyOr#k>IwsJr_ zNMu^6OLu%IeZecWMnxgrhPfvl_898HYe{-Ia98+WeZk@_IF0;o*$s6UAPfB8x+ViY z6hE$?n7zLn>#6KscWU5>sv_&mcCWD_zab(@mVMt5mr)>hXtV$?Pb}Pwni3LJeQM;- z*-^eTQN(>YmVXmbcXv7!Ayp3R-4Eq|E0=~(CmsLPD!to)1kPkP4lAvyP?4d$bhN=} zK{VjT&5OJrLo3{l`tW`AA?;I0Igdr9%c1(yH#cVxGOD%OHoNt;hLN0yKKl)!t_lZ9 z_#QH#fYya>6D*84EmY1b$9@(HY=DxIM!UG1N+S>(f| z9!*2~CVjtETij*iziJ4?7gS`(re)86rBSFHmJXi9klLsI=MBjGfhK9<3Em`s>C_O! za}#;%Un!>)_e{kqP#HZT6+welC}LW%1A7GHKISZf)13Ic`)~=7A+AhtU_Ve`Z6L7c zLHv_~9b4R&8tpS;1)UAF@5F0F^kt!OaE^HW=gX^5QI*X-QbJjbCHY*ury1knyctS2G_1;n7#fc?I0J zm$#4^ux-eWJhDn_VIT+zS>t$c>*f5@B_)*p89QPxfz7~h7ZW;>_3>E+);g9gK}=@6 z^TeyAw3qTYR$wpEvs3l1E2{5ohti#mIBg2$$^xJNV!GWPHKh*#Nnes~QYyo5W))gc z`?SP)ch~p>Yb5K%wC0wF@W=n`;B+OEP2NNgCFge`{&g$oHb*e7Bn{BMIKBALFa6rr zFwSC(-}4OaZ%zVN)bp~TFmDdSB@`37wVM^#-`tfgB1NH8^|duiUXHXk{>L4bU1tcm z6I#tLIJNJeSehTS8i^5rdEDO^8jZ^&rgzz<9bR>)uW{N%JNI%bv%-6`AOH(VQXFYj zUEq>>q33lq@^Zv@=RL39`nkWHVA{wm0D8qn3}@|L98TsU6Cj}-f8_P-Io(FXG-ZF4 zskkYLs;Lw70zicHFci}7l3hTNGKE{q)CEeH`V%q9a}sz8b}oa0rDL?-Vh!2(b$s`W zqX3~W>Z1Fjgzw|y9=Z%vUgZVHhBdCC$N1YylVfHhMT;4rGqzt9V6&HHB5c_2+Oquj z2XPG0YAupLV)4vI^Br7gU8TR>z+Wil*G?}|D5zU>1#h_Ib1yH_UK#Ej_XSClR@N1b zdeu|0)3T*`tk;SWp8tasY5yqk)Nrlulm3!z<`Mjb8-Obk@E0t;Vdyz5(${AfTw_R0 zx>Z>Ftq|)w)B(o_hukFQp#>81uMN2PiMtW-S&6^oTkdBs1gO*O_d)q$UytW}IO3h} zNEL>yN3=h4(_ZIIyao+IZv(dddvdmY=wSqPyAZPVQYR+bx6|`7)H4C0s*_h^mQh1& zySdPX$A0XKlhi4H-Xn{D&pd?AFUdBMkOxU)dA0`qU4F|^V};urQnYHB+yk>3tn3q- zk+4o)R9m_To3UMWMoCBUc$LPE(iPe7y3zfRd1qkab7T>F>qIxEc@(WWI!QJuZI5j> zGTx81U~8;`2=HH%B`ZRf3Rk{1(g)=hE7jXwR?y zm8XN`lrRanteg=Xaom-}eH1K=rKX=1zohE;frhfafY>L^+z7Tb<|@-tw$HxSJ*YeU zLt$%Y0%ai$kKhIme<`xL8{ou*(5Rqqm-6n^pF7^^_>qFeJkFxL=zg#W#x?9VZJeze z-R*IAe7=D9I9E-=tEG*159JM8aOF}(+7a?I^hPxgwym1tU$q1tx}MYQXoN<}@#JAr zzFHRhdT5nf$f(@gf(pt(t`j9!7XlfUfkRBFpI(WH3}xF*?_04__;{*FPyC7xu1PSZ zwHRVp9a=o&SUndO7NKczcG|&L!+Nhq?46M(<~ht(esR6_^3dx~Vv*}Tsi$-noS%chYKMj*bfZC68DD%p($D5Q1i%`Bu(P_sbZ>F3{*|B%CE|7P1t zaGo0%i}Fv-9tH;>%~p*1d;ev+2ApfcfsR=kd7~xf*ydq8Cbzh^FXMiE69^M%6;+*E zjjAF9;Yu>sP>pSECRcfACUGy>MP9|}6G~<1n!Ln59 zc&3YP%pu#6*4oMwiex%*2)KxuKf}D5ZuY&~Xvf3{3Q!ucoh6djZ%XxIU;kQXIL4s( z!j*pXix?|X{NdJduhppxIw0oysde?xI^2m$a<5sl2*3)$THt0^5U$7MvziP}b+L^D zUO|Qi&?=bRvTM{P$2}_DrB8cp8P!dyE5s_U8CtOWX``khosu{L_Rs9npQ0t<_g~kX z1wnyZKHL7p^3xTTdetyTD8E0&>CRb%${l(K0`w%5o}+Eu?1h`4K|@q+$!QN|4Sr>D zW;~XwT|b$BaHCKmo3MBQ+s>5dk^u7S*_(Ias6U%qzrAx{48Ws|VNNkKj%qt?I_l&w z^U(y9c%Kerq_;iJb|oS|%j%yxu4w3Tf|NUJe%sCUnX1)HuZo0!8f_{bP4OJY@wqHr z-GKK`!X(##lT=zoX}~Wd+>(;n|7ie1#53)s7|+_W6ae&I`M%T8!vw+CKq2D7T5&YI zgDF#A{fSe9XC!)jU~eOF>FZYoYPze($;Y4O`0qN%1{su1Eq-mQM~>h#jDvpYD=BBZ z);_KN3B)Dp^LRjQwHsnO?c>bB1kZ-{$ZejNNy;8mLokffM1n;`D?88SVL@;ooOaWJ zvay0CG{sD?fjDY#d@b8W#ac|)R!M)%64!szf&!FE1IYfE( z>%Jh;M5KnB0B3sU8-v8MDAA3kgF}?e20w11^BKbCR27okQNUc>)>>XnxD}SEH{Q_q zvH?hS^bajgGnyq?6|wrHI&mI{jn$v3LoAwiJx2V@TZ~#pYXC_rNHZCX7a~+T%B^4F z21%Du_q&AoBAV*glN&#N@=acrAPHgpzJo?uIKC#CP6Z;ZZOGtK`%+`oyEWix6Z;!E_I#=!$yC|!yP>i!d*(?p zv1t&vhXxjaFz$`}CmFmnu@Ofcm?G%f#E(;Y-#*tl)2_))m$K5cm$_^{3p-?A@t;s3 z+B{a$i78C;`k=C`dK!?<>Ec%z({4~PvyVTY(LU0yoH3A0i}{Nw^%|@L?t%?wyB9ML zZABKGtqDU6l~&qU4sqv=aXbYH-t0GQ%z2w7kkIKm6v+`|B~t)UkH$hGA-RW}(i(=o zy;IPp>w=xbrSFIPnQ}#iPu9ja`P`+`5E>Uhf@wi>80GnQR_rBr_0U4W4OT1WxS%_j z;9an^8)iu`4u4fG6WZ&u6U?g>ua&`(S$_p*f(i)Ez`Mnq?;PGN zPN4C<`?@AoJ~|Q1LS+1(K#%-^8xAJG#kT)E`oI5FYk@n(mk7`GYM@_&#FLjD|0MS9 z;XHA>>l|B5!=l748BTr0Sgj%eX#)MR&(0~eypgsFOgt^-#KX@3Jo7aE85bHg&HDvb9<^t`5{;O*} zPqcPXlVwpQW#>z)7<(*1Y|N_hHdDCMrpXTtq;uVfAo@3NeJT9Q)rb8r`&&L}@8L}Y< z82Z{{zvmyb#*agvyS5XPT>>44;a-UPmqU4SPoR2)?K>_nrwJP@o5y&OM*{R|t$L?@f{)P+dYJ^{2A}c7nH$ z{La6(DP*_PnA=##ILlerWPe#>RJ97B88Itwcy~16W{wkAxv^0&gWfcWs zIf18wSSdW>;feARgcr4qFg6$L2Y%eUEi?F2+Z^^FD~=ocvS%K0PxME@tV{ZRT{f2c z6#MAv_jkP$U*$%Z=(tQ5scq*M=P6%}$2uhe(g07{*~_S9L{CW$yK0)qC<-MS(pmn? zh1o@r{9}?=@e3z7s`RMy<~I9N$M)K~-6631s>ir>Ef(Z+UsK4vSy5_)&~ za1pIOfyjkVCg%;RMH8EZ%2ae;#7rvunG>peORfU3IKQ*!&9(FYue6S{I4e zG-DVuh{*LlGm#|#Kc!b*Yip(Jx?843VJdR=1LDoowLG1>&V3dc0#|zgKqTj%ghWGd1-H2dcjQ#pT6&I(C<{r zR9z_1b6UV6%#OCWS1$O-OIsBd{Fp@*uAb{m&f#KJ6xrwTjiaXY(35mOyjG?F z>18e5fOt)u{wQIEc)CNN++bmE*)*-aXhyUV4e<@t>C3;5wZHZseT%kPKkZ*Jn@!dy zQBWI2A>5BZu3MpD;kY zCK;#w#sWz-46P@RsCPZ2(Y)2pUj&IOxXh-k^AAEkF_MGjGqw9wSj^qEJ?RjFj7yx( zr^;w(9@^B}hR7m+dC=2KS7vG0xUXfyr(h|`K;zMjI}-jF`UXwWO)aI$XcDM+y{6!C z?7_o|fPuZUanOg=+WJ%eTEUhJ(7|ml)ot?GafzY#rC`c$hGA}z;!dIrR~d&+cN5lo!$s263ps9_he(Y( z_XD?okHoZ;-npS|kq7rb%#0vtqmUnfun{CW<-cuufKPx$mCLfK&z{6?`6H0UqVuBd zS?m3|Q}-vdmz`CRH~|RtBQg#N;pF#YIdPPNtiF_PzItSy;ms`oGPM3x5yqUqTb0QI z#X1>mz?^Wui2FL=va?i}q@Mmfk%gDP)2#sCfMlwTRuW2{HW->J6PYOP~EakKkIUSS+_& zC?Y2?!t0a7klNMAYd@u#!fLa*?Qvk$+ciRhGqLPrij?r(H(9`oEJ$pJs=Vgfj$qWX zk?448rrTnLD{zcj=S}?P`==}d-C#AI9_F)BCQ$!+?Tkg(IH_dTnTD(_X|msdi`+^t;-@B57=+RMF`x%TW~-aaiGg1cTX`LKmKmrD|d1qFV>@F4t`kg-7iHF$ZkRptw!V*jH* zGqJr05yH8aje3%xbJB=hmV@)&wU*Onc#Maq`JnUe;%ul*2wno%%S9OhKee%ERKLvI8>PoSb@J6vq`RYBd;`#J;w57` zJ#pUzUAmxLZErH{%M97gtFBmEXKu!6Ms}mdo z1r5;Ng|B87uBCo} z>}JS6wQ`dInabC5Ex1Pm{GT`R|C${+Ay@Y_l8(JtC}ve^z$yyIJ(w`Q$Nb4KGepiP z>@JeKZQ%ofK+A-B3S<+9r(O1nw}qA=RRKXb)0=JUcohLm#t9~%+0!2O9RO9&jb;dW zRjXO|!ZZ4M0T$pR3i2gv4&~SDn}b%x27Se(FB+xl*bhfXL^Tbs^4aD?W1z1i28Hvc zk38fs>^VV`xwL`HAHKrl`r`q#7AtVHt zcVx`+zL>m~%iCRHXA1~wuvrnrh-DC4g(Se`W z?C(ezIc}2j@=fC4hV+QN2R*K}-gGC)(C95(O|(~`Rre$*(W+n%vqY^%R2uCRnPrJf zRkj)ul&0qhL(B1_!}qShcVYn#xSD$OXKV({L}GE)SjOXB(-PsYu_`wLsqmoOV?$L0 z;!GPki-NHUk=OEr0|T}`(~4srrxcus6+x8SZ8@Hr-;iK+dbMh(et^=QersE`@%f@ryF!l0nSLz z8RV12|JEu_eibD0Bw}Ng0c2z9Vq2**Wo(G_&$w4KQ>Cdtl^lwZ$peV$SPHh5+mX_z zAt9qq;#kdAO@(e3=;IC*84}JvgA|(>H#~3S=!Pa_HT-VPCu6!p%F1Yazx^=KX-TDK z`oaIeC_H93C=5&XMvDBqP>sDY9-@Pwspp&!|Hwj}MO{~hNtSzy^LlTF?G3mem= zM(M}-E|rO0V%F?Rn>RpmroyTdA6>OnyBn4qw5B43 z&2~*jvbmN1x_Qm*zK;mwB%+r`lcGaA9P1h!q0;Vkg?Fx;dB#AaQ{zwCfaQWZaCf-A z1DNuA&SlGv17af3JGWH}ZxHfXA z?`vzfRrs9lzQ@dgeIrCxKvog4adL|^}&1VJd-xq>c^2CVrFbpZrH@4#$Cc8@SMaVO!RE?STfiH-iWmK zIJ)|uaF%2GUt@h(%yl{ZXPEcD>th2Kh?^G9ie&-61#u?}bp@sjzo;f4e>-90vYY1` zoJ5)0ceoAgvF)1AUWLoCG=jB}YoGn-9kzxoOC{JhI63wScM)>XlzEZISx(Oh+l}|! zmF`Fz4HK_j3EPOe*9#>Y&*C=DzA?z(Que6Kw#kVMsqTU1a~G^*E?w*|RpL+9NckIn zaXm^9;K$hAqWzuv7GS6dgI(^;*WBv#l(U z*PIE(DUz#3>yxy#wYt+GSvCRvO6Vxi3-m^#!Cr-&@Yo-|tUdc?VM_SVIM1J#Sm8aQ zB~aLn`fn-x6AT@NLe)adI_+ILE^a)tmwAk>SCS3GH{WMU2K`4jrz7C)(N2#5u3oGz z2J-!p&C|G9aSB}Yrx5uIip8qFIeba(sz@*G z9gG1l9jH`ygf-zX{&?kd3GH{!?*kEPr|wnlQ=)|!C|2KFNj0nvE%Pr5SY)QE`EQX0 z0tMrxPS+hgF$yW}`dXG|zr*q>S$yg!R6-Av5OdQ4zxzRfb!FfV>gKgm(Ea#)a%5Tc z6xC;Rj&#PaiOyxl+^r48Y+p_(H$+zAL5$)7M%7T+PpA^w2(EfZ67*z-;yFB6?$aFmDN3`bwR`NwfHEc7F zl1{&L@m{=NOkGG>x_|&75zBBZ9AX0ch3n%Er-T&|s%2OXD@oc+j zg5C^VjZ15mr7=O@8j^Ccc7;*Xd_64;iW z$`A3-&v4E97@&sMLF^EmdI0BkrG#b#S@Xnkoq((mS#BNV*D~w`M?v&DZ3gXPlE@>@ zPGVLp^0X>`g1i#Qm(PguO%SUjjToSu297tigNV_}cTASh_=jEB5(Ny{vGhlYqNS&P zQaJFghSNTin&ApN0DeLf%mY{?MniUC>iqnEj>Vdv8tFXay~sbLyW0i#vJtrmLV@FM zA?M5L2q>8X`{`AEV+rzpCbt21^$yYn#x%GD75N?jGT1-IylWX5S|DS-$YcI*p(d}^ zggFcrV>dDVf-yilc|R#@mI*c;B)qFeq9BzTB{QBK%Eg+)*fBRhREPRd+VTSrgCxY; z2jJm`Ygt$2wneR-TU)MhXD-x$)e|j=V@3 zpW`7XqWej1wc3cyEK&=RC|vvs-LEs2pvE|-iiZpQ3g%nvKzr5-z;5Z=w1s%yPh8J} z4q06GvPdStH-@q_X`?&tX-)kfL%KnefM`#+$I8{DcKzcN%;av-I0TDoHQ!fi-)o;8 z+@YX|shIQ^if?MTInn>9T8aJH|1b&ce&aNM$?ZU6jY*vHHe0M$`uUsis>As@o5lk6 zXq7`d!PWQ!4CiPtMt54$&?z#Sw4`Sy6CaOj&r0$^=S*{`72@_oMVJJ& zB*FCXmpoqUWe?&}X)#0atw~DY@7s;61X{$XIpf>Z*m)YKw>@6#Rkl+pOiLA+uC%kj z9uR|BP?ZY2H__6x+L3fl(o1v>d8D4n!8lP_9q!lPW^|HNSWdTLu6^WB{UTz=_^ssI zc6l5Sdv(*e(J`a-;^ZBNzk>q2kt4L4f7azRtihJE)DF%e_mF_cOi8AzXIsQrC(&eHwvUE2K z2oi!c2upWL!%~0l`CYyDf6o2Bnltad&u7j&Q)h;TC&{O-_UgMh-@)~9;CYjAF(7XH zm`JY+8sejCFy&WY@%3iaRS${Jm%6SxFt2vqcu#uN-(mW#JBNR5TfnHKAN|q%llix@ zvKs44N)U(cUNNXX^lXU|3+mrkub5mna%yt*1cfbL^kCg*iz7m&drPTaU2lJ!a-bQ9 zb@^JkhAeThtCzplX_k*>Hd4p&wI*>_@}S2$t7<5cgU<ebBxxl*gp-Resg4g!OKR@Hs$q$MdsZUm9W*X-&CIFuImT z%wN9Qjys{3w%chPmI(44t;q(FdSH3T{Wv&C=BoOBj4Vm6HBGQlXePvIVMLul}`a)10#kKDq$p>8k(S*6z}G?5E{R|;4x))T15 zq+vKUb!tyPt*%*l+o3VvnKjF&l02ZFj{QCn79_{HGW3q~C@;fndUIsh>&u1NKITx5 zqKSi6<^HCSsf1fOpeYyg3GUyl|F0(AL<$ZGcdJ_?r75AgOPm<;aZOGukD<6?1=|+a z9{K!!-*qDD^|QBu{NgeZjpc`)<6R|Y&8O_FE|0J6u<_$NPB%(`YbyC_M!1xF&woePe$ zv|qOpRHq&EEcu4%p&-?ORVfaf(7JEJlnN)E2TqUKWQwDee@n3}OQnNo+W5 z3knpvxe5|r`BR8vguq_BV^ypgNr{;mCqH3#KO8aB-k)YEzccD7U6q^Qk=9lOiiRlG zT{wB1Jds0gJ(imvp$^e!`3>C!8CJZf-5poK|6-4ZxYjSKqDiaM3T<|3;(F)sUB3aF z>As{u*gMl?6=VLUu=QyUSt(9g-0a~+tX_mpc&{2Q7j*^0)LZGC?s==}t zsi4@I!H~^0Z%TTi-CZUbK1IA_wuib@hT zct6mbN2H48m-9|KDa&TW_o2^b-_Fn;UU+$~j5Z5yluPMnKdRDs3Bpi&MxQCi{%WkPSSE&FfW*U>l2tH0qF z@d2~2P))tLW1zaak#<9n3vRf0esvgnb~2!vXA`Otx>V=Dq9GB%&${m@ym`HM*lA;f zmWBX+mC_~sNr3g_{nXz-2^z@#FD9uW<>@3Lc+N^JZze5ESci#NyT5MuiixS-RJjUQfDKNN2m-p7nvor(1-`n&0rEx+lt7&ZtSd@d_JS2d8$j@}dM?aHyQ$%6pYcDd}1{xAy6~SDGReaSdmYs%aYfWl# z@Hn2?2t}ZJ(l$&HXO(V8U*M~mIhQYhGZqi@E{Th}J5jR$+G-I%g?fvnDM41xv59GI zkQuT!g4cQmpPS)}kc0jQ0qW(mgWN;|=g;o?$4J}N`@A?b+SRLHmB1TsG*cP1N~fe* zv$vhb3BU`ne^=6W-eQez_JfH7@_x^4{dt?egwi)yrH?cbe29yXRw`ljbH2KLawDrO z!jsZyEn~->nwG;Ej2!fSfFE8Ht0Je*7y5=MX(?MPUoM$VAMc6PsQ5_>0<+?|Aay=}Y|YC^_8XILmjZj{9>CN}E32 zoe;d7RJ89EECn_Uff&}`9oP8$bIL$VsPD=xeyYeU>$o9MC}Wy{%f4J&WL%lPv48U2 zG7XN9=X^cV8Mo{pDx*kb)sf_1hAnqv*hOXoiT`ETLS#Q8DOIN3vYi`6T0W4jYa%8J z_osT%Keh4#FNd^Nu1l~pes$JEnEbVvk)Fd*RlOZ;r5}13NNc~wth+9gVEKUc18Xg# zx~}-+v@~22dvV=ad9pP4vQ6NN0@?F*SvJPFK|kB^XZ_jvla~OrT`}xIGTODeh_e(b z#2i=KN*S4V4#-jb0Xa^Ahkk+829%@bAq@yF;X(|_KKGotmvPp-qtDo zXYPVtq5z-!&+OK3@BUY7%D;i7v`38+c8i%RpnAD~l;X7dzyrPup5Z0>b zKPxpt&UhLGR?6^H)%+|g*VCKiwc1}7hl~<*^BNNMxx_iND&f=~tsl=hilI48z3*+l zUIH7A{uIx*+EX*T;9iumi>9S&d07+p^@75|XFMPL>1^U!*>nHB{?U53(Fw|pD}69; zwz)yj<51*I2kML7r%2yxPUuIGQ+*NmnMG`>*amh(r46HKjs4UGwK$H(xy3-GjS5G8 zWI4IbM%deSV~ibIKoaOWKVaZ{w1q@upao%8ayyBBRIoK~$D(4wTC+%G>|;T-i(k7? zFW@^lFoM5Jxp;#7gues_`!RiK_=G$Qli;E1Q&t5H^fko{4ao+$WTT9`LcNAW+y8npVRJ|z1Z0)uk6A;Du(6D`})oi1~A((4hD$mgP)~$OW z1!+mm6PwsU@4vpXCmn;yh7C@WJGcK z#x*w;i>&*EH;?HA2b(+gHeQrV;?`7haeJ%ZY`A17n_)Y0#Hz*IEus~;K-%_Ge;&-; z^#x=~q{UtW@>))%ULO^rUeaMJhnZ`{4w&KNvPmd6gxv}V4C?(X!a1!VwJ(Y4v(bzX zv9B)We7W)A#UT~Bs7n-84c%F+jpQSo6P`yXJwlL>qAYPQ<&`G=k>Aq%ugowaeC)}! z=R5B3G`$$l4(eUzz({mPD_*D=)wEi=5r_RLBIs(O!f$8n+1MAAoXU9~iHGmlta@O7 zyi0XRtDo;P2Nk&qj^A1FzZ)X0FIi)}*R6$zO08}MW?mYOJq%%U0e%pUF&>Dt#5R9p zji|(*-m*&g$hegq$v9$IvB#gAKJo${6+&Ccvaw#n0ZB^%lKH>3(S;Zd9zc~SqYus6 z@+Mqe%43P=93SRy$roLxhTr3HI>*rh=qFcf*N?Pcwk#x@pYl)Vjmib9bJc|1>YMs( zAol>N${)jbgR+Rj=}Sq~2i8UHX5`2tGhb*-AVIRObO&ZMKH1^QDkdE3PJCfZfo=XD zF1Ko)Q%|8lx#jpNDJ;;%q=*; z>BBF7cZTmTh8`w4t9NQGWoZ-#`;domuI}cNNl4H=j5UUA^s!+b-MU-f8%sm-?D5lL z*}c&t-;OKCZ;TO7x+ip2R+0TvnZBmtk)gR8`T0pdSS%W4F1{xo!r{fNBsdOxtajO; zYYQ-yv0QRZi|KJFGdD0a1KT`{_U8(|cG&kTV6thbt-bR!n1g$x!-Q&Uc-gww$ zM5)L-l|)7N?(488?cEy7@J4dOSnab)qu#jS(epezTjc2$<$oCZ)+4O? zd%J5q{&QZNgZph%r_k|j8Hlq)Q07@#jn#s_HZO*6#AlF0Vr|p18PV{qfdr)}Uo!uE3YtkiWKg#zj^6rQ3dc-m}mnnZncY)$(qFY)>l{o`+ovx&$8-IF4l zIZO*?bS7Zf1NpP({vWt$Wp3c670};${2y@JablH1MSuD25k~)bvd;TqagDZ*tx4#5 z%!NGn5(6E7vEgNL`u3PiQ_nDM*mG<=qa^Hv6>F75aGp>9f(q5;w{*w|$-#Ct8FVC& zPD{UJoE^7jmYkt5NFtstfqo_AeU5MOzT2tsZt%UA*bI731?O~MZ5sP7Hk2Ng2%D?H z5ACf`mLxoj%Tw!`+uPz_hSYg>R;swts2pLlE#SLN#ZHM+BCAVD=c8SSvRXv8@|DHD zKHPPSi*>Ah<@~jPnuSTBa5A~GZlcmkH}(Gx~@l$wn~Mmrbhc-?Ss_$-|@J- zF(1JVUsA4rq_lwTN{u$DN@F zHk5L6q^|ZQ6>S7~Mq6pj#9{KAMuXeN*jWVGs>`R+Tvk4t?pM;O-&lZg-gPGjNjK*& z5`o-E;$DTmrgjf)t1nhoq#klVNnSo-1BjWae70Dun{B^PFM@eqRV-As5ZFT&?<>|$ z-^DsEUcm)n`kptf1d(bMSS|+by$gy*T-*Z&Vf8eAU1+7*5km)A9(N^3WG#aV2 zO(3E9bGsU*i72c(L`H=nWMLRt+BvHQPL_#6$noQ+76x4)39fo4C#Mda+eV%ijZiyaLT zK~)~2U+FNmru3!0(mc7yYC9M=<6jxEVH+ zWn)G&fk)5h@aw^xGHh$2NQbxENP6HV>wjrZ`Ak^IinGa0Eg4 zkiUd!T%v3CMOepPfYEJnLqpJ#$RhG}X&hv6bX-X&_ifmDb%n7zP9smA*5{Nh$o>IQ zH2BNYG@yBpegzRURN45`&D9^4gH`ws$q#YxWJhS2jR{#U*_%8rGop}7vr6hP8-KaZ zW+OEnrK(&R*sBrAP5RqDrZbNB67#NQ1`tNWwWA)%y~t~I{R%dy!l#VZRHEmGGRyml zb&XpmzMJRR#9Pjq!~K*7ME>T?v{wv}=Qu2nRCCHybyXFHDArUmd<gWvT$vTw4O zTevx$;@-TlUt?ry%oEx>(9M;Qs(J$Uc4m literal 0 HcmV?d00001 diff --git a/src/components/Banner/CrmBanner.tsx b/src/components/Banner/CrmBanner.tsx new file mode 100644 index 00000000..8551f7c0 --- /dev/null +++ b/src/components/Banner/CrmBanner.tsx @@ -0,0 +1,5 @@ +import styles from "./banner.module.css"; + +export const CrmBanner = () => { + return

; +}; diff --git a/src/components/Banner/banner.module.css b/src/components/Banner/banner.module.css new file mode 100644 index 00000000..916dad81 --- /dev/null +++ b/src/components/Banner/banner.module.css @@ -0,0 +1,3 @@ +.crmbanner { + width: 100%; +} \ No newline at end of file diff --git a/src/components/Banner/index.ts b/src/components/Banner/index.ts new file mode 100644 index 00000000..dc745a1b --- /dev/null +++ b/src/components/Banner/index.ts @@ -0,0 +1,2 @@ +import { CrmBanner } from "./CrmBanner"; +export { CrmBanner }; diff --git a/src/components/CarmineStaking/StakeCRM.tsx b/src/components/CarmineStaking/StakeCRM.tsx index e48a9cb8..e38ecac3 100644 --- a/src/components/CarmineStaking/StakeCRM.tsx +++ b/src/components/CarmineStaking/StakeCRM.tsx @@ -37,7 +37,7 @@ const stake = async ( const stakeCall = { contractAddress: GOVERNANCE_ADDRESS, entrypoint: "stake", - calldata: [length, amount], + calldata: [length.toString(10), amount.toString(10)], }; const res = await account diff --git a/src/components/CarmineStaking/Staking.tsx b/src/components/CarmineStaking/Staking.tsx index 45fd9ebe..695b2a45 100644 --- a/src/components/CarmineStaking/Staking.tsx +++ b/src/components/CarmineStaking/Staking.tsx @@ -27,8 +27,8 @@ export const StakeWithAccount = ({ return
Something went wrong, please try again later
; } - const { veCarmBalance, carmBalance, stakes } = data; - + const { veCarmBalance: _, carmBalance, stakes } = data; + const veCarmBalance = 12345n * 10n ** 16n; const humanReadableVeCarmBalance = shortInteger(veCarmBalance, 18); const humanReadableCarmBalance = shortInteger(carmBalance, 18); diff --git a/src/components/CarmineStaking/StakingModal.tsx b/src/components/CarmineStaking/StakingModal.tsx index 86d5a9e5..40cb3e28 100644 --- a/src/components/CarmineStaking/StakingModal.tsx +++ b/src/components/CarmineStaking/StakingModal.tsx @@ -38,7 +38,7 @@ export const unstakeAndStake = async ( const stakeCall = { contractAddress: GOVERNANCE_ADDRESS, entrypoint: "stake", - calldata: [length, amount], + calldata: [length.toString(10), amount.toString(10)], }; const res = await account From 3242a2434f71045705d88c6023cd802ff2f9c1d8 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 15:20:04 +0200 Subject: [PATCH 08/20] fix: delete mock value --- src/components/CarmineStaking/Staking.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/CarmineStaking/Staking.tsx b/src/components/CarmineStaking/Staking.tsx index 695b2a45..05ee8686 100644 --- a/src/components/CarmineStaking/Staking.tsx +++ b/src/components/CarmineStaking/Staking.tsx @@ -27,8 +27,7 @@ export const StakeWithAccount = ({ return
Something went wrong, please try again later
; } - const { veCarmBalance: _, carmBalance, stakes } = data; - const veCarmBalance = 12345n * 10n ** 16n; + const { veCarmBalance, carmBalance, stakes } = data; const humanReadableVeCarmBalance = shortInteger(veCarmBalance, 18); const humanReadableCarmBalance = shortInteger(carmBalance, 18); From 32f00c133b30ebc4ed89f5c5f5a76843847c21e1 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 15:32:16 +0200 Subject: [PATCH 09/20] fix: staking length --- src/components/Airdrop/AirdropModal.tsx | 10 +++++++--- src/components/CarmineStaking/StakeCRM.tsx | 16 +++++++++------- src/components/CarmineStaking/StakingModal.tsx | 8 ++++++-- src/constants/amm.ts | 1 + src/network/account.ts | 3 ++- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/components/Airdrop/AirdropModal.tsx b/src/components/Airdrop/AirdropModal.tsx index ffc464a4..7208dc88 100644 --- a/src/components/Airdrop/AirdropModal.tsx +++ b/src/components/Airdrop/AirdropModal.tsx @@ -3,7 +3,11 @@ import { AccountInterface } from "starknet"; import { Eligible } from "./getProof"; import { shortInteger } from "../../utils/computations"; -import { CARMINE_STAKING_MONTH, GOVERNANCE_ADDRESS } from "../../constants/amm"; +import { + CARMINE_STAKING_MONTH, + CARMINE_STAKING_YEAR, + GOVERNANCE_ADDRESS, +} from "../../constants/amm"; import GovernanceABI from "../../abi/governance_abi.json"; import { @@ -194,7 +198,7 @@ export const AirdropModal = ({ account, data, open, setOpen }: Props) => { account, data.proof, data.claimable, - CARMINE_STAKING_MONTH, + CARMINE_STAKING_YEAR, setYearState ).then(() => { setMonthState(TransactionState.Initial); @@ -214,7 +218,7 @@ export const AirdropModal = ({ account, data, open, setOpen }: Props) => {

Claim Airdrop

Congratulations! You are eligible to claim{" "} - {shortInteger(data.claimable, 18)} CRM! + {shortInteger(data.claimable, 18)} veCRM!

You can claim and stake for any of these periods:

diff --git a/src/components/CarmineStaking/StakeCRM.tsx b/src/components/CarmineStaking/StakeCRM.tsx index e38ecac3..4f29e310 100644 --- a/src/components/CarmineStaking/StakeCRM.tsx +++ b/src/components/CarmineStaking/StakeCRM.tsx @@ -1,7 +1,11 @@ import { AccountInterface } from "starknet"; import { useState } from "react"; import { longInteger, shortInteger } from "../../utils/computations"; -import { CARMINE_STAKING_MONTH, GOVERNANCE_ADDRESS } from "../../constants/amm"; +import { + CARMINE_STAKING_MONTH, + CARMINE_STAKING_YEAR, + GOVERNANCE_ADDRESS, +} from "../../constants/amm"; import { TransactionState, TxTracking } from "../../types/network"; import { stateToClassName } from "./StakingModal"; import { LoadingAnimation } from "../Loading/Loading"; @@ -102,12 +106,10 @@ export const StakeCrm = ({ account, carmBalance }: Props) => { const handleYear = () => { setMonthState(TransactionState.Processing); setSixMonthsState(TransactionState.Processing); - stake(account, amount, 12 * CARMINE_STAKING_MONTH, setYearState).then( - () => { - setMonthState(TransactionState.Initial); - setSixMonthsState(TransactionState.Initial); - } - ); + stake(account, amount, CARMINE_STAKING_YEAR, setYearState).then(() => { + setMonthState(TransactionState.Initial); + setSixMonthsState(TransactionState.Initial); + }); }; const handleInputChange = (value: string) => { diff --git a/src/components/CarmineStaking/StakingModal.tsx b/src/components/CarmineStaking/StakingModal.tsx index 40cb3e28..223d8423 100644 --- a/src/components/CarmineStaking/StakingModal.tsx +++ b/src/components/CarmineStaking/StakingModal.tsx @@ -2,7 +2,11 @@ import { Dialog } from "@mui/material"; import { AccountInterface } from "starknet"; import { longInteger, shortInteger } from "../../utils/computations"; -import { CARMINE_STAKING_MONTH, GOVERNANCE_ADDRESS } from "../../constants/amm"; +import { + CARMINE_STAKING_MONTH, + CARMINE_STAKING_YEAR, + GOVERNANCE_ADDRESS, +} from "../../constants/amm"; import GovernanceABI from "../../abi/governance_abi.json"; import { addTx, @@ -142,7 +146,7 @@ export const StakingModal = ({ account, amount, open, setOpen }: Props) => { unstakeAndStake( account, selectedAmount, - 12 * CARMINE_STAKING_MONTH, + CARMINE_STAKING_YEAR, setYearState ).then(() => { setMonthState(TransactionState.Initial); diff --git a/src/constants/amm.ts b/src/constants/amm.ts index 4b32a24f..a4ac9cff 100644 --- a/src/constants/amm.ts +++ b/src/constants/amm.ts @@ -76,3 +76,4 @@ export const BASE_MATH_64 = BigInt(2) ** BigInt(64); export const USDC_PRECISSION = 1000; export const CARMINE_STAKING_MONTH = 2629743; +export const CARMINE_STAKING_YEAR = 31536000; diff --git a/src/network/account.ts b/src/network/account.ts index f637c6da..eb68f28e 100644 --- a/src/network/account.ts +++ b/src/network/account.ts @@ -97,7 +97,8 @@ export const connect = ( // do not open the dialog if the page is loading/just loaded return; } - openNetworkMismatchDialog(); + // TODO: fix this + // openNetworkMismatchDialog(); } addWalletEventHandlers(wallet); From c56ee274d4fbf1665d76ccd71a1e24b2e788e7f5 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 15:42:06 +0200 Subject: [PATCH 10/20] fix: add approve --- src/components/Airdrop/AirdropModal.tsx | 17 ++++++++++++----- src/components/CarmineStaking/StakeCRM.tsx | 17 +++++++++++++---- src/components/CarmineStaking/StakingModal.tsx | 15 +++++++++++++-- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/components/Airdrop/AirdropModal.tsx b/src/components/Airdrop/AirdropModal.tsx index 7208dc88..092a87af 100644 --- a/src/components/Airdrop/AirdropModal.tsx +++ b/src/components/Airdrop/AirdropModal.tsx @@ -7,9 +7,8 @@ import { CARMINE_STAKING_MONTH, CARMINE_STAKING_YEAR, GOVERNANCE_ADDRESS, + VE_CRM_ADDRESS, } from "../../constants/amm"; - -import GovernanceABI from "../../abi/governance_abi.json"; import { addTx, markTxAsDone, @@ -26,6 +25,9 @@ import { LoadingAnimation } from "../Loading/Loading"; import styles from "./airdrop.module.css"; import buttonStyles from "../../style/button.module.css"; +import GovernanceABI from "../../abi/governance_abi.json"; +import TokenABI from "../../abi/lptoken_abi.json"; + export const claim = async ( account: AccountInterface, data: string[], @@ -89,16 +91,21 @@ export const claimAndStake = async ( entrypoint: "unstake_airdrop", calldata: [], }; + const approveCall = { + contractAddress: VE_CRM_ADDRESS, + entrypoint: "approve", + calldata: [GOVERNANCE_ADDRESS, airdropAmount.toString(10)], + }; const stakeCall = { contractAddress: GOVERNANCE_ADDRESS, entrypoint: "stake", - calldata: [length, airdropAmount], + calldata: [length.toString(10), airdropAmount.toString(10)], }; const res = await account .execute( - [claimCall, unstakeAirdropCall, stakeCall], - [GovernanceABI, GovernanceABI, GovernanceABI] + [claimCall, unstakeAirdropCall, approveCall, stakeCall], + [GovernanceABI, GovernanceABI, TokenABI, GovernanceABI] ) .catch(() => null); diff --git a/src/components/CarmineStaking/StakeCRM.tsx b/src/components/CarmineStaking/StakeCRM.tsx index 4f29e310..0ca66098 100644 --- a/src/components/CarmineStaking/StakeCRM.tsx +++ b/src/components/CarmineStaking/StakeCRM.tsx @@ -5,11 +5,11 @@ import { CARMINE_STAKING_MONTH, CARMINE_STAKING_YEAR, GOVERNANCE_ADDRESS, + VE_CRM_ADDRESS, } from "../../constants/amm"; import { TransactionState, TxTracking } from "../../types/network"; import { stateToClassName } from "./StakingModal"; import { LoadingAnimation } from "../Loading/Loading"; -import GovernanceABI from "../../abi/governance_abi.json"; import { TransactionAction } from "../../redux/reducers/transactions"; import { addTx, @@ -19,11 +19,14 @@ import { } from "../../redux/actions"; import { afterTransaction } from "../../utils/blockchain"; import { ToastType } from "../../redux/reducers/ui"; +import { invalidateKey } from "../../queries/client"; +import { QueryKeys } from "../../queries/keys"; import styles from "./vest.module.css"; import inputStyles from "../../style/input.module.css"; -import { invalidateKey } from "../../queries/client"; -import { QueryKeys } from "../../queries/keys"; + +import GovernanceABI from "../../abi/governance_abi.json"; +import TokenABI from "../../abi/lptoken_abi.json"; type Props = { account: AccountInterface; @@ -38,6 +41,12 @@ const stake = async ( ) => { setTxState(TransactionState.Processing); + const approveCall = { + contractAddress: VE_CRM_ADDRESS, + entrypoint: "approve", + calldata: [GOVERNANCE_ADDRESS, amount.toString(10)], + }; + const stakeCall = { contractAddress: GOVERNANCE_ADDRESS, entrypoint: "stake", @@ -45,7 +54,7 @@ const stake = async ( }; const res = await account - .execute(stakeCall, [GovernanceABI]) + .execute([approveCall, stakeCall], [TokenABI, GovernanceABI]) .catch(() => null); if (res?.transaction_hash) { diff --git a/src/components/CarmineStaking/StakingModal.tsx b/src/components/CarmineStaking/StakingModal.tsx index 223d8423..2ab649e5 100644 --- a/src/components/CarmineStaking/StakingModal.tsx +++ b/src/components/CarmineStaking/StakingModal.tsx @@ -6,8 +6,8 @@ import { CARMINE_STAKING_MONTH, CARMINE_STAKING_YEAR, GOVERNANCE_ADDRESS, + VE_CRM_ADDRESS, } from "../../constants/amm"; -import GovernanceABI from "../../abi/governance_abi.json"; import { addTx, markTxAsDone, @@ -26,6 +26,9 @@ import styles from "./modal.module.css"; import buttonStyles from "../../style/button.module.css"; import inputStyles from "../../style/input.module.css"; +import GovernanceABI from "../../abi/governance_abi.json"; +import TokenABI from "../../abi/lptoken_abi.json"; + export const unstakeAndStake = async ( account: AccountInterface, amount: bigint, @@ -39,6 +42,11 @@ export const unstakeAndStake = async ( entrypoint: "unstake_airdrop", calldata: [], }; + const approveCall = { + contractAddress: VE_CRM_ADDRESS, + entrypoint: "approve", + calldata: [GOVERNANCE_ADDRESS, amount.toString(10)], + }; const stakeCall = { contractAddress: GOVERNANCE_ADDRESS, entrypoint: "stake", @@ -46,7 +54,10 @@ export const unstakeAndStake = async ( }; const res = await account - .execute([unstakeCall, stakeCall], [GovernanceABI, GovernanceABI]) + .execute( + [unstakeCall, approveCall, stakeCall], + [GovernanceABI, TokenABI, GovernanceABI] + ) .catch(() => null); if (res?.transaction_hash) { From f8781634766fc11ddf9585ecf865409eeb7a66a4 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 15:59:17 +0200 Subject: [PATCH 11/20] fix: approve not a number --- src/components/Airdrop/Airdrop.tsx | 2 +- src/components/Airdrop/AirdropModal.tsx | 4 ++-- src/components/CarmineStaking/StakeCRM.tsx | 4 ++-- src/components/CarmineStaking/StakingModal.tsx | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/Airdrop/Airdrop.tsx b/src/components/Airdrop/Airdrop.tsx index d43975d1..e140bd08 100644 --- a/src/components/Airdrop/Airdrop.tsx +++ b/src/components/Airdrop/Airdrop.tsx @@ -27,7 +27,7 @@ const ClaimAndStake = ({

Airdrop

- You are eligible to claim {amountHumanReadable} CRM! + You are eligible to claim {amountHumanReadable} veCRM!
-
+
- - + + + + + + + + +

Alternatively you can claim without staking:

diff --git a/src/components/CarmineStaking/StakeCRM.tsx b/src/components/CarmineStaking/StakeCRM.tsx index 98437f5a..246d457d 100644 --- a/src/components/CarmineStaking/StakeCRM.tsx +++ b/src/components/CarmineStaking/StakeCRM.tsx @@ -27,6 +27,7 @@ import inputStyles from "../../style/input.module.css"; import GovernanceABI from "../../abi/governance_abi.json"; import TokenABI from "../../abi/lptoken_abi.json"; +import { Tooltip } from "@mui/material"; type Props = { account: AccountInterface; @@ -156,38 +157,48 @@ export const StakeCrm = ({ account, carmBalance }: Props) => {
- - - + + + + + + + + +
diff --git a/src/components/CarmineStaking/StakingModal.tsx b/src/components/CarmineStaking/StakingModal.tsx index 481cc915..1bfa66f6 100644 --- a/src/components/CarmineStaking/StakingModal.tsx +++ b/src/components/CarmineStaking/StakingModal.tsx @@ -1,4 +1,4 @@ -import { Dialog } from "@mui/material"; +import { Dialog, Tooltip } from "@mui/material"; import { AccountInterface } from "starknet"; import { longInteger, shortInteger } from "../../utils/computations"; @@ -208,42 +208,48 @@ export const StakingModal = ({ account, amount, open, setOpen }: Props) => {
- - - + + + + + + + + +

From 412dd48ba3faa4a56c6c5cacaeb055a7b24c8b8a Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 27 Jun 2024 18:17:27 +0200 Subject: [PATCH 20/20] fix: use user address instead of hardcoded value --- src/components/WithdrawCapital/WithdrawParent.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/WithdrawCapital/WithdrawParent.tsx b/src/components/WithdrawCapital/WithdrawParent.tsx index 38b44fcc..238c24bb 100644 --- a/src/components/WithdrawCapital/WithdrawParent.tsx +++ b/src/components/WithdrawCapital/WithdrawParent.tsx @@ -21,10 +21,7 @@ type Props = { address: string; account: AccountInterface }; const WithdrawParentWithAccount = ({ address, account }: Props) => { const { isLoading, isError, isFetching, data } = useQuery( - [ - QueryKeys.stake, - "0x718505b87b5a448205ae22ac84a21b9e568b532ed95285c4c03973f8b1a73e8", - ], + [QueryKeys.stake, address], fetchCapital );