From d46521818e1bfb8e5d0daa267f46c9380710eacd Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 23 Jan 2023 19:56:18 -0600 Subject: [PATCH 01/38] cambio de rama --- index.html | 1 + src/index.css | 2 ++ src/main.jsx | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 144e7a1..d53d578 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ + Lab Notes diff --git a/src/index.css b/src/index.css index 9188729..5106754 100644 --- a/src/index.css +++ b/src/index.css @@ -1,3 +1,5 @@ + + * { margin: 0; padding: 0; diff --git a/src/main.jsx b/src/main.jsx index ea52ff7..2e24f46 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,7 +1,8 @@ import ReactDOM from "react-dom"; import './index.css'; -const app =

Desarrollo 脷til

; +const app =

Journal Note

; const container = document.getElementById("root"); + ReactDOM.render(app, container); \ No newline at end of file From 215e50b85c50f4854e4d2ceeda1ea96af833d6e2 Mon Sep 17 00:00:00 2001 From: Cony GuGa <111469309+ConyGage@users.noreply.github.com> Date: Wed, 25 Jan 2023 11:38:40 -0600 Subject: [PATCH 02/38] Revert "prueba dist" --- src/JournalNoteApp.jsx | 0 src/components/LoginBox.jsx | 2 -- src/index.css | 1 - src/main.jsx | 50 ++----------------------------------- 4 files changed, 2 insertions(+), 51 deletions(-) delete mode 100644 src/JournalNoteApp.jsx delete mode 100644 src/components/LoginBox.jsx diff --git a/src/JournalNoteApp.jsx b/src/JournalNoteApp.jsx deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/LoginBox.jsx b/src/components/LoginBox.jsx deleted file mode 100644 index 139597f..0000000 --- a/src/components/LoginBox.jsx +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/index.css b/src/index.css index 5f47e83..9188729 100644 --- a/src/index.css +++ b/src/index.css @@ -1,4 +1,3 @@ - * { margin: 0; padding: 0; diff --git a/src/main.jsx b/src/main.jsx index b0f907a..ea52ff7 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,53 +1,7 @@ import ReactDOM from "react-dom"; -// import { createRoot } from 'react-dom/client'; import './index.css'; -const LoginBox = ({ title, username, password, login }) => { - return ( -
-

{title}

-
- {username} - {password} -
- -
- ); -}; - -const JournalNoteApp = ( -
-

Landing Page Journal Note

- -
); - +const app =

Desarrollo 脷til

; const container = document.getElementById("root"); -ReactDOM.render(JournalNoteApp, container); - - - - - -// const container = document.getElementById("root"); -// const root = createRoot(container); -// root.render(); - -// import React from "react"; -// import ReactDOM from "react-dom/client"; -// import "./index.css"; -// import App from "./App"; -// import reportWebVitals from "./reportWebVitals"; - -// const root = ReactDOM.createRoot(document.getElementById("root")); -// root.render( -// -// -// -// ); -// reportWebVitals(); \ No newline at end of file +ReactDOM.render(app, container); \ No newline at end of file From c5f776a34b55eb0453e6655c4d075c3fa8b77372 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Thu, 26 Jan 2023 15:41:27 -0600 Subject: [PATCH 03/38] Eslint --- index.html | 29 +++++++++++++++++------------ src/components/LoginBox.css | 16 ++++++++++++---- src/components/LoginBox.jsx | 26 +++++++++++++++----------- 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/index.html b/index.html index d53d578..e127bc1 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,19 @@ - - - - - - Lab Notes - - -
- - - + + + + + + + + Lab Notes + + + +
+ + + + \ No newline at end of file diff --git a/src/components/LoginBox.css b/src/components/LoginBox.css index 053bb39..5e8e59f 100644 --- a/src/components/LoginBox.css +++ b/src/components/LoginBox.css @@ -42,9 +42,17 @@ .LoginBox_line{ display: flex; - justify-content: space-between; - width: 36px ; - + justify-content: center; + height: 25px; + width: 30px; + flex-direction: row; + flex-wrap: wrap; + align-content: center; + align-items: center; } - +.LoginBox-input { + display: flex; + height: 25px; + width: 30px; +} \ No newline at end of file diff --git a/src/components/LoginBox.jsx b/src/components/LoginBox.jsx index f225e70..f0f641c 100644 --- a/src/components/LoginBox.jsx +++ b/src/components/LoginBox.jsx @@ -1,20 +1,24 @@ import "./LoginBox.css" -function LoginBox(){ +function LoginBox() { return (

L o g i n

-
- user - - {/*

Username:

*/} -
-
- user - - {/*

Password

*/} -
+
+
+ user + + {/*

Username:

*/} +
+ {/*
+
*/} +
+ user + + {/*

Password

*/} +
+

馃挆Login馃挆

From cf60c57e4e6572b07bf5ddba722f1fa2c58f9c26 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Thu, 26 Jan 2023 16:28:49 -0600 Subject: [PATCH 04/38] =?UTF-8?q?instalaci=C3=B3n=20y=20configuraci=C3=B3n?= =?UTF-8?q?=20de=20Eslint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.cjs | 22 + package-lock.json | 5511 ++++++++++++++++++++++++++++++----- package.json | 8 +- src/components/LoginBox.css | 3 +- src/main.jsx | 28 +- 5 files changed, 4799 insertions(+), 773 deletions(-) create mode 100644 .eslintrc.cjs diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..147ea27 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,22 @@ +module.exports = { + env: { + browser: true, + es2021: true + }, + extends: [ + 'plugin:react/recommended', + 'pluging:react/jsx-runtime', + 'standard' + ], + overrides: [ + ], + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module' + }, + plugins: [ + 'react' + ], + rules: { + } +} diff --git a/package-lock.json b/package-lock.json index 9febfa3..a00eafb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,12 @@ "@types/react": "^18.0.26", "@types/react-dom": "^18.0.9", "@vitejs/plugin-react": "^3.0.0", + "eslint": "^8.32.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.32.1", "vite": "^4.0.0" } }, @@ -725,6 +731,77 @@ "node": ">=12" } }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -772,6 +849,47 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -823,6 +941,52 @@ "vite": "^4.0.0" } }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -835,6 +999,108 @@ "node": ">=4" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -863,6 +1129,70 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/builtins/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001442", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", @@ -908,12 +1238,32 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", @@ -937,12 +1287,133 @@ } } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.16.17", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", @@ -998,234 +1469,342 @@ "node": ">=0.8.0" } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/eslint": { + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", "dev": true, - "engines": { - "node": ">=6.9.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "ms": "^2.1.1" } }, - "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==", + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "^2.1.1" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "eslint-visitor-keys": "^1.1.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "yallist": "^3.0.2" + "ms": "^2.1.1" } }, - "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "esutils": "^2.0.2" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "node_modules/eslint-plugin-n": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz", + "integrity": "sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==", "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", - "dev": true - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "node_modules/eslint-plugin-n/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "yallist": "^4.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/eslint-plugin-n/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.1.tgz", + "integrity": "sha512-vOjdgyd0ZHBXNsmvU+785xY8Bfe57EFbTYYk8XrROzWpr9QBvpjITvAXt9xqcE6+8cjR/g1+mfumPToxsl1www==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" }, "peerDependencies": { - "react": "^18.2.0" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "dependencies": { "is-core-module": "^2.9.0", @@ -1239,852 +1818,3816 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rollup": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz", - "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==", + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=10" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "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==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vite": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", - "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", + "node_modules/eslint/node_modules/globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { - "esbuild": "^0.16.3", - "postcss": "^8.4.20", - "resolve": "^1.22.1", - "rollup": "^3.7.0" - }, - "bin": { - "vite": "bin/vite.js" + "type-fest": "^0.20.2" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "engines": { + "node": ">=8" } }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", - "dev": true - }, - "@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "requires": { - "@babel/types": "^7.20.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" + "dependencies": { + "estraverse": "^5.1.0" }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "engines": { + "node": ">=4.0" } }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "dependencies": { + "reusify": "^1.0.4" } }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "requires": { - "@babel/types": "^7.20.2" + "dependencies": { + "is-callable": "^1.1.3" } }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", - "dev": true - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", - "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "engines": { + "node": ">=6.9.0" } }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/traverse": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", - "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", - "globals": "^11.1.0" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "@esbuild/android-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", - "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "optional": true + "engines": { + "node": ">=4" + } }, - "@esbuild/android-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", - "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "optional": true + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "@esbuild/android-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", - "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, - "optional": true + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "@esbuild/darwin-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", - "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "optional": true + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } }, - "@esbuild/darwin-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", - "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "optional": true + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "@esbuild/freebsd-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", - "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "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==", "dev": true, - "optional": true + "engines": { + "node": ">=4" + } }, - "@esbuild/freebsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", - "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, - "optional": true + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "@esbuild/linux-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", - "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "optional": true + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "@esbuild/linux-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", - "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "optional": true + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "@esbuild/linux-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", - "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "optional": true + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "@esbuild/linux-loong64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", - "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "optional": true + "engines": { + "node": ">= 4" + } }, - "@esbuild/linux-mips64el": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", - "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "optional": true + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "@esbuild/linux-ppc64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", - "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "optional": true + "engines": { + "node": ">=0.8.19" + } }, - "@esbuild/linux-riscv64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", - "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz", + "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", + "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.3", + "postcss": "^8.4.20", + "resolve": "^1.22.1", + "rollup": "^3.7.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "dev": true + }, + "@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "dev": true + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", + "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", "dev": true, "optional": true }, - "@esbuild/linux-s390x": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", - "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@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==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "@vitejs/plugin-react": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.1.tgz", + "integrity": "sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==", + "dev": true, + "requires": { + "@babel/core": "^7.20.7", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.27.0", + "react-refresh": "^0.14.0" + } + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001442", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", + "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "optional": true + "requires": { + "ms": "2.1.2" + } }, - "@esbuild/linux-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", - "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, - "optional": true + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } }, - "@esbuild/netbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", - "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "optional": true + "requires": { + "esutils": "^2.0.2" + } }, - "@esbuild/openbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", - "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dev": true, - "optional": true + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } }, - "@esbuild/sunos-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", - "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, - "optional": true + "requires": { + "has": "^1.0.3" + } }, - "@esbuild/win32-arm64": { + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "esbuild": { "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", - "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "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==", + "dev": true + }, + "eslint": { + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-n": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz", + "integrity": "sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==", + "dev": true, + "requires": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "requires": {} + }, + "eslint-plugin-react": { + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.1.tgz", + "integrity": "sha512-vOjdgyd0ZHBXNsmvU+785xY8Bfe57EFbTYYk8XrROzWpr9QBvpjITvAXt9xqcE6+8cjR/g1+mfumPToxsl1www==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "optional": true + "requires": { + "reusify": "^1.0.4" + } }, - "@esbuild/win32-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", - "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "optional": true + "requires": { + "flat-cache": "^3.0.4" + } }, - "@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "optional": true + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "@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==", + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" } }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, - "@types/react": { - "version": "18.0.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", - "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" } }, - "@types/react-dom": { - "version": "18.0.10", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", - "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, "requires": { - "@types/react": "*" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" } }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } }, - "@vitejs/plugin-react": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.1.tgz", - "integrity": "sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==", + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "@babel/core": "^7.20.7", - "@babel/plugin-transform-react-jsx-self": "^7.18.6", - "@babel/plugin-transform-react-jsx-source": "^7.19.6", - "magic-string": "^0.27.0", - "react-refresh": "^0.14.0" + "is-glob": "^4.0.3" } }, - "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==", + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "define-properties": "^1.1.3" } }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "get-intrinsic": "^1.1.3" } }, - "caniuse-lite": { - "version": "1.0.30001442", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", - "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==", + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "function-bind": "^1.1.1" } }, - "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==", + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "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==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "get-intrinsic": "^1.1.1" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, - "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "ms": "2.1.2" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, - "esbuild": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", - "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { - "@esbuild/android-arm": "0.16.17", - "@esbuild/android-arm64": "0.16.17", - "@esbuild/android-x64": "0.16.17", - "@esbuild/darwin-arm64": "0.16.17", - "@esbuild/darwin-x64": "0.16.17", - "@esbuild/freebsd-arm64": "0.16.17", - "@esbuild/freebsd-x64": "0.16.17", - "@esbuild/linux-arm": "0.16.17", - "@esbuild/linux-arm64": "0.16.17", - "@esbuild/linux-ia32": "0.16.17", - "@esbuild/linux-loong64": "0.16.17", - "@esbuild/linux-mips64el": "0.16.17", - "@esbuild/linux-ppc64": "0.16.17", - "@esbuild/linux-riscv64": "0.16.17", - "@esbuild/linux-s390x": "0.16.17", - "@esbuild/linux-x64": "0.16.17", - "@esbuild/netbsd-x64": "0.16.17", - "@esbuild/openbsd-x64": "0.16.17", - "@esbuild/sunos-x64": "0.16.17", - "@esbuild/win32-arm64": "0.16.17", - "@esbuild/win32-ia32": "0.16.17", - "@esbuild/win32-x64": "0.16.17" + "once": "^1.3.0", + "wrappy": "1" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "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==", - "dev": true + "internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", "dev": true, - "optional": true + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "has-tostringtag": "^1.0.0" } }, - "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==", + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" } }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, + "jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -2111,6 +5654,21 @@ "@jridgewell/sourcemap-codec": "^1.4.13" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2123,12 +5681,159 @@ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, "node-releases": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -2152,6 +5857,35 @@ "source-map-js": "^1.0.2" } }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -2169,12 +5903,35 @@ "scheduler": "^0.23.0" } }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, "react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "dev": true }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -2186,6 +5943,27 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "rollup": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz", @@ -2195,6 +5973,26 @@ "fsevents": "~2.3.2" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -2209,12 +6007,97 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, + "string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2230,12 +6113,79 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -2246,6 +6196,15 @@ "picocolors": "^1.0.0" } }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "vite": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", @@ -2259,11 +6218,65 @@ "rollup": "^3.7.0" } }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 848db44..f1afbc3 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,12 @@ "@types/react": "^18.0.26", "@types/react-dom": "^18.0.9", "@vitejs/plugin-react": "^3.0.0", + "eslint": "^8.32.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.32.1", "vite": "^4.0.0" } -} \ No newline at end of file +} diff --git a/src/components/LoginBox.css b/src/components/LoginBox.css index 053bb39..63e1ae5 100644 --- a/src/components/LoginBox.css +++ b/src/components/LoginBox.css @@ -45,6 +45,7 @@ justify-content: space-between; width: 36px ; -} + + diff --git a/src/main.jsx b/src/main.jsx index 948c453..3e1a2a3 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,36 +1,20 @@ -import ReactDOM from "react-dom/client"; -import './index.css'; -import JournalNoteApp from "./JournalNoteApp"; +import ReactDOM from 'react-dom/client' +import './index.css' +import JournalNoteApp from './JournalNoteApp' -const root = ReactDOM.createRoot (document.getElementById("root")); +const root = ReactDOM.createRoot(document.getElementById('root')) // root.render(

鈾 Journal Note 鈾

); root.render( -); - - - - - - - - - - - - - - - +) // const JournalNoteApp = ( //
//

Journal Note

-// //
); - \ No newline at end of file From 664599553ae467a81592e992da5134417f14a7e2 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Fri, 27 Jan 2023 19:37:25 -0600 Subject: [PATCH 05/38] cambios de css y primer componente longinbox --- src/JournalNoteApp.jsx | 9 +++++---- src/components/LoginBox.css | 9 +++++---- src/components/LoginBox.jsx | 6 +++--- src/index.css | 17 ++++++++++++----- src/main.jsx | 14 +++----------- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/JournalNoteApp.jsx b/src/JournalNoteApp.jsx index 6ddefae..ccc4029 100644 --- a/src/JournalNoteApp.jsx +++ b/src/JournalNoteApp.jsx @@ -1,11 +1,12 @@ import "./components/JournalNoteApp.css" import LoginBox from "./components/LoginBox"; -function JournalNoteApp () { +function JournalNoteApp() { return ( -
- logo - +
+ logo + +
) } diff --git a/src/components/LoginBox.css b/src/components/LoginBox.css index 63e1ae5..c7e5fe4 100644 --- a/src/components/LoginBox.css +++ b/src/components/LoginBox.css @@ -35,17 +35,18 @@ } .LoginBox_info { - width: 30 px ; + width: 25 px ; } .LoginBox_line{ display: flex; - justify-content: space-between; - width: 36px ; + flex-direction: row; + justify-content: space-evenly; + width: 32px ; - + } diff --git a/src/components/LoginBox.jsx b/src/components/LoginBox.jsx index f225e70..bc6b1d2 100644 --- a/src/components/LoginBox.jsx +++ b/src/components/LoginBox.jsx @@ -8,15 +8,15 @@ function LoginBox(){
user - {/*

Username:

*/} +
user - {/*

Password

*/} +
-

馃挆Login馃挆

+ ) }; diff --git a/src/index.css b/src/index.css index afca579..0c8d9a1 100644 --- a/src/index.css +++ b/src/index.css @@ -4,12 +4,13 @@ --pink-light-color: background-color: #FCDCEF; } */ -/* * { +@media (min-width:768px){ +* { - margin: 1px; - padding: 1px; - border: 0; */ -/* } */ + margin: 0; + + +} header { position: absolute; @@ -27,4 +28,10 @@ body { height: 1366px; font-family: 'Marvel', sans-serif; background-color: #FCDCEF; +} +} +@media (min-width:1024px){ + + + } \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 3e1a2a3..e39ce44 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -5,16 +5,8 @@ import JournalNoteApp from './JournalNoteApp' const root = ReactDOM.createRoot(document.getElementById('root')) // root.render(

鈾 Journal Note 鈾

); root.render( - + + ) -// const JournalNoteApp = ( -//
-//

Journal Note

-// -//
); + From 6d23bdcdf0789ed7a4280f7f84e9f3ea46c57dec Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 30 Jan 2023 08:54:04 -0600 Subject: [PATCH 06/38] =?UTF-8?q?cambios=20en=20css=20del=20bot=C3=B3n=20d?= =?UTF-8?q?e=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/LoginBox.css | 29 ++++++++++++++++++++++------- src/components/LoginBox.jsx | 2 +- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/components/LoginBox.css b/src/components/LoginBox.css index c7e5fe4..ad55b13 100644 --- a/src/components/LoginBox.css +++ b/src/components/LoginBox.css @@ -13,7 +13,7 @@ gap: 30px 30px; justify-content: center; align-items: center; - + } .LoginBox_container { @@ -33,20 +33,35 @@ color: #CA2588; block-size: border-box; } + .LoginBox_info { - width: 25 px ; - + width: 25 px; + } -.LoginBox_line{ +.LoginBox_line { display: flex; flex-direction: row; justify-content: space-evenly; - width: 32px ; + width: 32px; + - - } +} + +.LoginBox_button { + border-radius: 100px; + background: #FABDE2; + box-shadow: 6px 4px 4px #F692CF; + border: 0; + width: 146px; + height: 64px; + font-family: 'Marvel'; + font-style: normal; + font-weight: 400; + font-size: 36px; + color: #CA2588; +} \ No newline at end of file diff --git a/src/components/LoginBox.jsx b/src/components/LoginBox.jsx index bc6b1d2..c67423d 100644 --- a/src/components/LoginBox.jsx +++ b/src/components/LoginBox.jsx @@ -16,7 +16,7 @@ function LoginBox(){ - + ) }; From 6b113cfea1fd75235f647b2cdf36e69bf18b5099 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 30 Jan 2023 21:37:13 -0600 Subject: [PATCH 07/38] primer intento de enrutado --- package-lock.json | 1794 ++++++++++++++++++++++++++++- package.json | 6 +- src/Firebase.jsx | 20 + src/JournalNoteApp.jsx | 20 +- src/components/Alert.jsx | 0 src/components/FirstApp.jsx | 0 src/components/Home.jsx | 3 + src/components/Login.jsx | 9 + src/components/LoginBox.css | 6 +- src/components/ProtectedRoute.jsx | 0 src/components/Register.jsx | 3 + src/main.jsx | 25 +- 12 files changed, 1847 insertions(+), 39 deletions(-) create mode 100644 src/Firebase.jsx create mode 100644 src/components/Alert.jsx create mode 100644 src/components/FirstApp.jsx create mode 100644 src/components/Home.jsx create mode 100644 src/components/Login.jsx create mode 100644 src/components/ProtectedRoute.jsx create mode 100644 src/components/Register.jsx diff --git a/package-lock.json b/package-lock.json index a00eafb..271ca9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,12 @@ "name": "package.json", "version": "0.0.0", "dependencies": { + "dom": "^0.0.3", + "firebase": "^9.16.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router": "^6.8.0", + "react-router-dom": "^6.8.0" }, "devDependencies": { "@types/react": "^18.0.26", @@ -769,6 +773,560 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@firebase/analytics": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.1.tgz", + "integrity": "sha512-ARXtNHDrjDhVrs5MqmFDpr5yyCw89r1eHLd+Dw9fotAufxL1WTmo6O9bJqKb7QulIJaA84vsFokA3NaO2DNCnQ==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.1.tgz", + "integrity": "sha512-qfFAGS4YFsBbmZwVa7xaDnGh7k9BKF4o/piyjySAv0lxRYd74/tSrm3kMk1YM7GCti7PdbgKvl6oSR70zMFQjw==", + "dependencies": { + "@firebase/analytics": "0.9.1", + "@firebase/analytics-types": "0.8.0", + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", + "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + }, + "node_modules/@firebase/app": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.1.tgz", + "integrity": "sha512-Z8wOSol+pvp4CFyY1mW+aqdZlrwhW/ha2YXQ6/avJ56c5Hnvt4k6GktZE6o5NyzvfJTgNHryhMtnEJMIuLaT4w==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.1.tgz", + "integrity": "sha512-gDG4Gr4n3MnBZAAwLMynU9u/b+f1y87lCezfwlmN1gUxD85mJcvp4hLf87fACTyRkdVfe8hqSXm+MOYn2bMGLg==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/app-check-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.1.tgz", + "integrity": "sha512-IaSYdmaoQgWUrN6rjAYJs1TGXj38Wl9damtrDEyJBf7+rrvKshPAP/CP6e2bd89XOMZKbvy8rKoe1CqX1K3ZjQ==", + "dependencies": { + "@firebase/app-check": "0.6.1", + "@firebase/app-check-types": "0.5.0", + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.2.0.tgz", + "integrity": "sha512-+3PQIeX6/eiVK+x/yg8r6xTNR97fN7MahFDm+jiQmDjcyvSefoGuTTNQuuMScGyx3vYUBeZn+Cp9kC0yY/9uxQ==" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", + "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.1.tgz", + "integrity": "sha512-UgPy2ZO0li0j4hAkaZKY9P1TuJEx5RylhUWPzCb8DZhBm+uHdfsFI9Yr+wMlu6qQH2sWoweFtYU6ljGzxwdctw==", + "dependencies": { + "@firebase/app": "0.9.1", + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "node_modules/@firebase/auth": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.21.1.tgz", + "integrity": "sha512-/ap7eT9X7kZTD4Fn2m+nJyC1a9DfFo0H4euoJDN8U+JCMN+GOqkPbkMWCey7wV510WNoPCZQ05+nsAqKkbEVJw==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/auth-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.3.1.tgz", + "integrity": "sha512-Ndcaam+IL1TuJ6hZ0EcQ+v261cK3kPm4mvUtouoTfl3FNinm9XvhccN8ojuaRtIV9TiY18mzGjONKF5ZCXLIZw==", + "dependencies": { + "@firebase/auth": "0.21.1", + "@firebase/auth-types": "0.12.0", + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", + "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", + "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.1.tgz", + "integrity": "sha512-yvKthG0InjFx9aOPnh6gk0lVNfNVEtyq3LwXgZr+hOwD0x/CtXq33XCpqv0sQj5CA4FdMy8OO+y9edI+ZUw8LA==", + "dependencies": { + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.1.tgz", + "integrity": "sha512-iX6/p7hoxUMbYAGZD+D97L05xQgpkslF2+uJLZl46EdaEfjVMEwAdy7RS/grF96kcFZFg502LwPYTXoIdrZqOA==", + "dependencies": { + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.1.tgz", + "integrity": "sha512-sI7LNh0C8PCq9uUKjrBKLbZvqHTSjsf2LeZRxin+rHVegomjsOAYk9OzYwxETWh3URhpMkCM8KcTl7RVwAldog==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/database": "0.14.1", + "@firebase/database-types": "0.10.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.1.tgz", + "integrity": "sha512-UgUx9VakTHbP2WrVUdYrUT2ofTFVfWjGW2O1fwuvvMyo6WSnuSyO5nB1u0cyoMPvO25dfMIUVerfK7qFfwGL3Q==", + "dependencies": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.9.0" + } + }, + "node_modules/@firebase/firestore": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.8.1.tgz", + "integrity": "sha512-oc2HMkUnq/zF+g9o974tp5RVCdXCnrU8e5S98ajfWG/hGV+8pr4i6vIa4z0yEXKWGi4X0FguxrC69z1dxEJbNg==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "@firebase/webchannel-wrapper": "0.9.0", + "@grpc/grpc-js": "~1.7.0", + "@grpc/proto-loader": "^0.6.13", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/firestore-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.1.tgz", + "integrity": "sha512-7eE4O2ASyy5X2h4a+KCRt0ZpliUAKo2jrKxKl1ZVCnOOjSCkXXeRVRG9eNZRqBwukhdwskJTM9acs0WxmKOYLA==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/firestore": "3.8.1", + "@firebase/firestore-types": "2.5.1", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz", + "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.9.1.tgz", + "integrity": "sha512-xCSSU4aVSqYU+lCqhn9o5jJcE1KLUOOKyJfCTdCSCyTn2J3vl9Vk4TDm3JSb1Eu6XsNWtxeMW188F/GYxuMWcw==", + "dependencies": { + "@firebase/app-check-interop-types": "0.2.0", + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.1", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/functions-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.1.tgz", + "integrity": "sha512-f2D2XoRN+QCziCrUL7UrLaBEoG3v2iAeyNwbbOQ3vv0rI0mtku2/yeB2OINz5/iI6oIrBPUMNLr5fitofj7FpQ==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/functions": "0.9.1", + "@firebase/functions-types": "0.6.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", + "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" + }, + "node_modules/@firebase/installations": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.1.tgz", + "integrity": "sha512-gpobP09LLLakBfNCL04fyblfyb3oX1pn+iNmELygrcAkXTO13IAMuOzThI+Xk4NHQZMX1p5GFSAiGbG4yfsSUQ==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/installations-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.1.tgz", + "integrity": "sha512-X4IBVKajEeaE45zWX0Y1q8ey39aPFLa+BsUoYzsduMzCxcMBIPZd5/lV1EVGt8SN3+unnC2J75flYkxXVlhBoQ==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/installations-types": "0.5.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", + "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.1.tgz", + "integrity": "sha512-/F+2OWarR8TcJJVlQS6zBoHHfXMgfgR0/ukQ3h7Ow3WZ3WZ9+Sj/gvxzothXZm+WtBylfXuhiANFgHEDFL0J0w==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.1.tgz", + "integrity": "sha512-BykvXtAWOs0W4Ik79lNfMKSxaUCtOJ47PJ9Vw2ySHZ14vFFNuDAtRTOBOlAFhUpsHqRoQFvFCkBGsRIQYq8hzw==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/messaging": "0.12.1", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", + "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" + }, + "node_modules/@firebase/performance": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.1.tgz", + "integrity": "sha512-mT/CWz3CLgyn/a3sO/TJgrTt+RA3DfuvWwGXY9zmIiuBZY2bDi1M2uMefJdJKc9sBUPRajNF6RL10nGYq3BAuQ==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/performance-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.1.tgz", + "integrity": "sha512-4mn6eS7r2r+ZAHvU0OHE+3ZO+x6gOVhf2ypBoijuDNaRNjSn9GcvA8udD4IbJ8FNv/k7mbbtA9AdxVb701Lr1g==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/performance": "0.6.1", + "@firebase/performance-types": "0.2.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", + "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.1.tgz", + "integrity": "sha512-RCzBH3FjAPRSP3M1T7jdxLYBesIdLtNIQ0fR9ywJpGSSa0kIXEJ9iSZMTP+9pJtaCxz8db07FvjEqg7Y+lgjzg==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.1.tgz", + "integrity": "sha512-RPCj7c2Q3QxMgJH3YCt0iD57KppFApghxAGETzlr6Jm6vT7k0vqvk2KgRBgKa4koJBsgwlUtRn2roaCqUEadyg==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/remote-config": "0.4.1", + "@firebase/remote-config-types": "0.3.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", + "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" + }, + "node_modules/@firebase/storage": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.10.1.tgz", + "integrity": "sha512-eN4ME+TFCh5KfyG9uo8PhE6cgKjK5Rb9eucQg1XEyLHMiaZiUv2xSuWehJn0FaL+UdteoaWKuRUZ4WXRDskXrA==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/storage-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.2.1.tgz", + "integrity": "sha512-H0oFdYsMn2Z6tP9tlVERBkJiZsCbFAcl3Li1dnpvDg9g323egdjCnUUgH/tJODRR/Y84iZSNRkg4FvHDVI/o7Q==", + "dependencies": { + "@firebase/component": "0.6.1", + "@firebase/storage": "0.10.1", + "@firebase/storage-types": "0.7.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.7.0.tgz", + "integrity": "sha512-n/8pYd82hc9XItV3Pa2KGpnuJ/2h/n/oTAaBberhe6GeyWQPnsmwwRK94W3GxUwBA/ZsszBAYZd7w7tTE+6XXA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.0.tgz", + "integrity": "sha512-oeoq/6Sr9btbwUQs5HPfeww97bf7qgBbkknbDTXpRaph2LZ23O9XLCE5tJy856SBmGQfO4xBZP8dyryLLM2nSQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", + "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", + "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.0.tgz", + "integrity": "sha512-hYCqTDuII4iJ4stZqiuGCSU8xxWl5JeXYpwARGtn/tWcKCAro6h3WQz+xpsNbXW0UYqpmTQFEyFWO0G0Kjt64g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + }, + "node_modules/@grpc/proto-loader": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.11.3", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -884,12 +1442,84 @@ "node": ">= 8" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@remix-run/router": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.1.tgz", + "integrity": "sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==", + "engines": { + "node": ">=14" + } + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -982,7 +1612,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1223,6 +1852,16 @@ "node": ">=4" } }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1321,12 +1960,22 @@ "node": ">=6.0.0" } }, + "node_modules/dom": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/dom/-/dom-0.0.3.tgz", + "integrity": "sha512-Uzda1zIAXO8JG2fm6IbJcdzBrRaC5Q308HTIjCXCQHh7ZVACJOeQzYYvd99plJ2/HUpZQk9IxNI/Y+QrO6poIQ==" + }, "node_modules/electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/es-abstract": { "version": "1.21.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", @@ -1455,7 +2104,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -2050,6 +2698,17 @@ "reusify": "^1.0.4" } }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2078,6 +2737,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/firebase": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.16.0.tgz", + "integrity": "sha512-nNLpDwJvfP3crRc6AjnHH46TAkFzk8zimNVMJfYRCwAf5amOSGyU8duuc3IsJF6dQGiYLSfzfr2tMCsQa+rhKQ==", + "dependencies": { + "@firebase/analytics": "0.9.1", + "@firebase/analytics-compat": "0.2.1", + "@firebase/app": "0.9.1", + "@firebase/app-check": "0.6.1", + "@firebase/app-check-compat": "0.3.1", + "@firebase/app-compat": "0.2.1", + "@firebase/app-types": "0.9.0", + "@firebase/auth": "0.21.1", + "@firebase/auth-compat": "0.3.1", + "@firebase/database": "0.14.1", + "@firebase/database-compat": "0.3.1", + "@firebase/firestore": "3.8.1", + "@firebase/firestore-compat": "0.3.1", + "@firebase/functions": "0.9.1", + "@firebase/functions-compat": "0.3.1", + "@firebase/installations": "0.6.1", + "@firebase/installations-compat": "0.2.1", + "@firebase/messaging": "0.12.1", + "@firebase/messaging-compat": "0.2.1", + "@firebase/performance": "0.6.1", + "@firebase/performance-compat": "0.2.1", + "@firebase/remote-config": "0.4.1", + "@firebase/remote-config-compat": "0.2.1", + "@firebase/storage": "0.10.1", + "@firebase/storage-compat": "0.2.1", + "@firebase/util": "1.9.0" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -2168,6 +2860,14 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -2353,6 +3053,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/idb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", + "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -2507,6 +3217,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2754,12 +3472,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -2837,6 +3565,25 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-releases": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", @@ -3100,6 +3847,31 @@ "react-is": "^16.13.1" } }, + "node_modules/protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -3167,6 +3939,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.0.tgz", + "integrity": "sha512-760bk7y3QwabduExtudhWbd88IBbuD1YfwzpuDUAlJUJ7laIIcqhMvdhSVh1Fur1PE8cGl84L0dxhR3/gvHF7A==", + "dependencies": { + "@remix-run/router": "1.3.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.0.tgz", + "integrity": "sha512-hQouduSTywGJndE86CXJ2h7YEy4HYC6C/uh19etM+79FfQ6cFFFHnHyDlzO4Pq0eBUI96E4qVE5yUjA00yJZGQ==", + "dependencies": { + "@remix-run/router": "1.3.1", + "react-router": "6.8.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -3196,6 +3998,14 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -3286,6 +4096,25 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -3361,6 +4190,19 @@ "node": ">=0.10.0" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", @@ -3412,7 +4254,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3480,6 +4321,11 @@ "node": ">=4" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -3504,6 +4350,11 @@ "json5": "lib/cli.js" } }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3641,6 +4492,41 @@ } } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3678,41 +4564,120 @@ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -4172,6 +5137,471 @@ } } }, + "@firebase/analytics": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.1.tgz", + "integrity": "sha512-ARXtNHDrjDhVrs5MqmFDpr5yyCw89r1eHLd+Dw9fotAufxL1WTmo6O9bJqKb7QulIJaA84vsFokA3NaO2DNCnQ==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/analytics-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.1.tgz", + "integrity": "sha512-qfFAGS4YFsBbmZwVa7xaDnGh7k9BKF4o/piyjySAv0lxRYd74/tSrm3kMk1YM7GCti7PdbgKvl6oSR70zMFQjw==", + "requires": { + "@firebase/analytics": "0.9.1", + "@firebase/analytics-types": "0.8.0", + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/analytics-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", + "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + }, + "@firebase/app": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.1.tgz", + "integrity": "sha512-Z8wOSol+pvp4CFyY1mW+aqdZlrwhW/ha2YXQ6/avJ56c5Hnvt4k6GktZE6o5NyzvfJTgNHryhMtnEJMIuLaT4w==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.1.tgz", + "integrity": "sha512-gDG4Gr4n3MnBZAAwLMynU9u/b+f1y87lCezfwlmN1gUxD85mJcvp4hLf87fACTyRkdVfe8hqSXm+MOYn2bMGLg==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.1.tgz", + "integrity": "sha512-IaSYdmaoQgWUrN6rjAYJs1TGXj38Wl9damtrDEyJBf7+rrvKshPAP/CP6e2bd89XOMZKbvy8rKoe1CqX1K3ZjQ==", + "requires": { + "@firebase/app-check": "0.6.1", + "@firebase/app-check-types": "0.5.0", + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.2.0.tgz", + "integrity": "sha512-+3PQIeX6/eiVK+x/yg8r6xTNR97fN7MahFDm+jiQmDjcyvSefoGuTTNQuuMScGyx3vYUBeZn+Cp9kC0yY/9uxQ==" + }, + "@firebase/app-check-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", + "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" + }, + "@firebase/app-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.1.tgz", + "integrity": "sha512-UgPy2ZO0li0j4hAkaZKY9P1TuJEx5RylhUWPzCb8DZhBm+uHdfsFI9Yr+wMlu6qQH2sWoweFtYU6ljGzxwdctw==", + "requires": { + "@firebase/app": "0.9.1", + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "@firebase/auth": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.21.1.tgz", + "integrity": "sha512-/ap7eT9X7kZTD4Fn2m+nJyC1a9DfFo0H4euoJDN8U+JCMN+GOqkPbkMWCey7wV510WNoPCZQ05+nsAqKkbEVJw==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/auth-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.3.1.tgz", + "integrity": "sha512-Ndcaam+IL1TuJ6hZ0EcQ+v261cK3kPm4mvUtouoTfl3FNinm9XvhccN8ojuaRtIV9TiY18mzGjONKF5ZCXLIZw==", + "requires": { + "@firebase/auth": "0.21.1", + "@firebase/auth-types": "0.12.0", + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/auth-interop-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", + "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" + }, + "@firebase/auth-types": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", + "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", + "requires": {} + }, + "@firebase/component": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.1.tgz", + "integrity": "sha512-yvKthG0InjFx9aOPnh6gk0lVNfNVEtyq3LwXgZr+hOwD0x/CtXq33XCpqv0sQj5CA4FdMy8OO+y9edI+ZUw8LA==", + "requires": { + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.1.tgz", + "integrity": "sha512-iX6/p7hoxUMbYAGZD+D97L05xQgpkslF2+uJLZl46EdaEfjVMEwAdy7RS/grF96kcFZFg502LwPYTXoIdrZqOA==", + "requires": { + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "@firebase/database-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.1.tgz", + "integrity": "sha512-sI7LNh0C8PCq9uUKjrBKLbZvqHTSjsf2LeZRxin+rHVegomjsOAYk9OzYwxETWh3URhpMkCM8KcTl7RVwAldog==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/database": "0.14.1", + "@firebase/database-types": "0.10.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.1.tgz", + "integrity": "sha512-UgUx9VakTHbP2WrVUdYrUT2ofTFVfWjGW2O1fwuvvMyo6WSnuSyO5nB1u0cyoMPvO25dfMIUVerfK7qFfwGL3Q==", + "requires": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.9.0" + } + }, + "@firebase/firestore": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.8.1.tgz", + "integrity": "sha512-oc2HMkUnq/zF+g9o974tp5RVCdXCnrU8e5S98ajfWG/hGV+8pr4i6vIa4z0yEXKWGi4X0FguxrC69z1dxEJbNg==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "@firebase/webchannel-wrapper": "0.9.0", + "@grpc/grpc-js": "~1.7.0", + "@grpc/proto-loader": "^0.6.13", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/firestore-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.1.tgz", + "integrity": "sha512-7eE4O2ASyy5X2h4a+KCRt0ZpliUAKo2jrKxKl1ZVCnOOjSCkXXeRVRG9eNZRqBwukhdwskJTM9acs0WxmKOYLA==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/firestore": "3.8.1", + "@firebase/firestore-types": "2.5.1", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/firestore-types": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz", + "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==", + "requires": {} + }, + "@firebase/functions": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.9.1.tgz", + "integrity": "sha512-xCSSU4aVSqYU+lCqhn9o5jJcE1KLUOOKyJfCTdCSCyTn2J3vl9Vk4TDm3JSb1Eu6XsNWtxeMW188F/GYxuMWcw==", + "requires": { + "@firebase/app-check-interop-types": "0.2.0", + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.1", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/functions-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.1.tgz", + "integrity": "sha512-f2D2XoRN+QCziCrUL7UrLaBEoG3v2iAeyNwbbOQ3vv0rI0mtku2/yeB2OINz5/iI6oIrBPUMNLr5fitofj7FpQ==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/functions": "0.9.1", + "@firebase/functions-types": "0.6.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/functions-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", + "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" + }, + "@firebase/installations": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.1.tgz", + "integrity": "sha512-gpobP09LLLakBfNCL04fyblfyb3oX1pn+iNmELygrcAkXTO13IAMuOzThI+Xk4NHQZMX1p5GFSAiGbG4yfsSUQ==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "@firebase/installations-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.1.tgz", + "integrity": "sha512-X4IBVKajEeaE45zWX0Y1q8ey39aPFLa+BsUoYzsduMzCxcMBIPZd5/lV1EVGt8SN3+unnC2J75flYkxXVlhBoQ==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/installations-types": "0.5.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/installations-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", + "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", + "requires": {} + }, + "@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/messaging": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.1.tgz", + "integrity": "sha512-/F+2OWarR8TcJJVlQS6zBoHHfXMgfgR0/ukQ3h7Ow3WZ3WZ9+Sj/gvxzothXZm+WtBylfXuhiANFgHEDFL0J0w==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.0", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "@firebase/messaging-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.1.tgz", + "integrity": "sha512-BykvXtAWOs0W4Ik79lNfMKSxaUCtOJ47PJ9Vw2ySHZ14vFFNuDAtRTOBOlAFhUpsHqRoQFvFCkBGsRIQYq8hzw==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/messaging": "0.12.1", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/messaging-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", + "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" + }, + "@firebase/performance": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.1.tgz", + "integrity": "sha512-mT/CWz3CLgyn/a3sO/TJgrTt+RA3DfuvWwGXY9zmIiuBZY2bDi1M2uMefJdJKc9sBUPRajNF6RL10nGYq3BAuQ==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/performance-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.1.tgz", + "integrity": "sha512-4mn6eS7r2r+ZAHvU0OHE+3ZO+x6gOVhf2ypBoijuDNaRNjSn9GcvA8udD4IbJ8FNv/k7mbbtA9AdxVb701Lr1g==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/performance": "0.6.1", + "@firebase/performance-types": "0.2.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/performance-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", + "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" + }, + "@firebase/remote-config": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.1.tgz", + "integrity": "sha512-RCzBH3FjAPRSP3M1T7jdxLYBesIdLtNIQ0fR9ywJpGSSa0kIXEJ9iSZMTP+9pJtaCxz8db07FvjEqg7Y+lgjzg==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/installations": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/remote-config-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.1.tgz", + "integrity": "sha512-RPCj7c2Q3QxMgJH3YCt0iD57KppFApghxAGETzlr6Jm6vT7k0vqvk2KgRBgKa4koJBsgwlUtRn2roaCqUEadyg==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/logger": "0.4.0", + "@firebase/remote-config": "0.4.1", + "@firebase/remote-config-types": "0.3.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/remote-config-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", + "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" + }, + "@firebase/storage": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.10.1.tgz", + "integrity": "sha512-eN4ME+TFCh5KfyG9uo8PhE6cgKjK5Rb9eucQg1XEyLHMiaZiUv2xSuWehJn0FaL+UdteoaWKuRUZ4WXRDskXrA==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/util": "1.9.0", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + } + }, + "@firebase/storage-compat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.2.1.tgz", + "integrity": "sha512-H0oFdYsMn2Z6tP9tlVERBkJiZsCbFAcl3Li1dnpvDg9g323egdjCnUUgH/tJODRR/Y84iZSNRkg4FvHDVI/o7Q==", + "requires": { + "@firebase/component": "0.6.1", + "@firebase/storage": "0.10.1", + "@firebase/storage-types": "0.7.0", + "@firebase/util": "1.9.0", + "tslib": "^2.1.0" + } + }, + "@firebase/storage-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.7.0.tgz", + "integrity": "sha512-n/8pYd82hc9XItV3Pa2KGpnuJ/2h/n/oTAaBberhe6GeyWQPnsmwwRK94W3GxUwBA/ZsszBAYZd7w7tTE+6XXA==", + "requires": {} + }, + "@firebase/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.0.tgz", + "integrity": "sha512-oeoq/6Sr9btbwUQs5HPfeww97bf7qgBbkknbDTXpRaph2LZ23O9XLCE5tJy856SBmGQfO4xBZP8dyryLLM2nSQ==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", + "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" + }, + "@grpc/grpc-js": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", + "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", + "requires": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "dependencies": { + "@grpc/proto-loader": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + } + }, + "protobufjs": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.0.tgz", + "integrity": "sha512-hYCqTDuII4iJ4stZqiuGCSU8xxWl5JeXYpwARGtn/tWcKCAro6h3WQz+xpsNbXW0UYqpmTQFEyFWO0G0Kjt64g==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + } + } + } + } + }, + "@grpc/proto-loader": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.11.3", + "yargs": "^16.2.0" + } + }, "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -4259,12 +5689,81 @@ "fastq": "^1.6.0" } }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@remix-run/router": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.1.tgz", + "integrity": "sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==" + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -4338,8 +5837,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -4508,6 +6006,16 @@ "supports-color": "^5.3.0" } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -4586,12 +6094,22 @@ "esutils": "^2.0.2" } }, + "dom": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/dom/-/dom-0.0.3.tgz", + "integrity": "sha512-Uzda1zIAXO8JG2fm6IbJcdzBrRaC5Q308HTIjCXCQHh7ZVACJOeQzYYvd99plJ2/HUpZQk9IxNI/Y+QrO6poIQ==" + }, "electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "es-abstract": { "version": "1.21.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", @@ -4697,8 +6215,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-string-regexp": { "version": "1.0.5", @@ -5133,6 +6650,14 @@ "reusify": "^1.0.4" } }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -5152,6 +6677,39 @@ "path-exists": "^4.0.0" } }, + "firebase": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.16.0.tgz", + "integrity": "sha512-nNLpDwJvfP3crRc6AjnHH46TAkFzk8zimNVMJfYRCwAf5amOSGyU8duuc3IsJF6dQGiYLSfzfr2tMCsQa+rhKQ==", + "requires": { + "@firebase/analytics": "0.9.1", + "@firebase/analytics-compat": "0.2.1", + "@firebase/app": "0.9.1", + "@firebase/app-check": "0.6.1", + "@firebase/app-check-compat": "0.3.1", + "@firebase/app-compat": "0.2.1", + "@firebase/app-types": "0.9.0", + "@firebase/auth": "0.21.1", + "@firebase/auth-compat": "0.3.1", + "@firebase/database": "0.14.1", + "@firebase/database-compat": "0.3.1", + "@firebase/firestore": "3.8.1", + "@firebase/firestore-compat": "0.3.1", + "@firebase/functions": "0.9.1", + "@firebase/functions-compat": "0.3.1", + "@firebase/installations": "0.6.1", + "@firebase/installations-compat": "0.2.1", + "@firebase/messaging": "0.12.1", + "@firebase/messaging-compat": "0.2.1", + "@firebase/performance": "0.6.1", + "@firebase/performance-compat": "0.2.1", + "@firebase/remote-config": "0.4.1", + "@firebase/remote-config-compat": "0.2.1", + "@firebase/storage": "0.10.1", + "@firebase/storage-compat": "0.2.1", + "@firebase/util": "1.9.0" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -5220,6 +6778,11 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -5345,6 +6908,16 @@ "has-symbols": "^1.0.2" } }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "idb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", + "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" + }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -5454,6 +7027,11 @@ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5622,12 +7200,22 @@ "p-locate": "^5.0.0" } }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -5687,6 +7275,14 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, "node-releases": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", @@ -5874,6 +7470,26 @@ "react-is": "^16.13.1" } }, + "protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -5915,6 +7531,23 @@ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "dev": true }, + "react-router": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.0.tgz", + "integrity": "sha512-760bk7y3QwabduExtudhWbd88IBbuD1YfwzpuDUAlJUJ7laIIcqhMvdhSVh1Fur1PE8cGl84L0dxhR3/gvHF7A==", + "requires": { + "@remix-run/router": "1.3.1" + } + }, + "react-router-dom": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.0.tgz", + "integrity": "sha512-hQouduSTywGJndE86CXJ2h7YEy4HYC6C/uh19etM+79FfQ6cFFFHnHyDlzO4Pq0eBUI96E4qVE5yUjA00yJZGQ==", + "requires": { + "@remix-run/router": "1.3.1", + "react-router": "6.8.0" + } + }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -5932,6 +7565,11 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -5982,6 +7620,11 @@ "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -6039,6 +7682,16 @@ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", @@ -6081,7 +7734,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -6125,6 +7777,11 @@ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -6148,6 +7805,11 @@ } } }, + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -6218,6 +7880,35 @@ "rollup": "^3.7.0" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6260,18 +7951,75 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index f1afbc3..0e9e3cb 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,12 @@ "preview": "vite preview" }, "dependencies": { + "dom": "^0.0.3", + "firebase": "^9.16.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router": "^6.8.0", + "react-router-dom": "^6.8.0" }, "devDependencies": { "@types/react": "^18.0.26", diff --git a/src/Firebase.jsx b/src/Firebase.jsx new file mode 100644 index 0000000..adc0b1c --- /dev/null +++ b/src/Firebase.jsx @@ -0,0 +1,20 @@ +// Import the functions you need from the SDKs you need +import { initializeApp } from "firebase/app"; +import {getAuth} from 'firebase/auth'; + +// TODO: Add SDKs for Firebase products that you want to use +// https://firebase.google.com/docs/web/setup#available-libraries + +// Your web app's Firebase configuration +const firebaseConfig = { + apiKey: "AIzaSyDfib1EmiLC416QHjYJ9OyZydV7Os-VCeg", + authDomain: "journal-note-68a3b.firebaseapp.com", + projectId: "journal-note-68a3b", + storageBucket: "journal-note-68a3b.appspot.com", + messagingSenderId: "1026533339383", + appId: "1:1026533339383:web:dfe47b8ce28774590823f2" +}; + +// Initialize Firebase +export const app = initializeApp(firebaseConfig); +export const auth = getAuth(app); \ No newline at end of file diff --git a/src/JournalNoteApp.jsx b/src/JournalNoteApp.jsx index ccc4029..3d38b22 100644 --- a/src/JournalNoteApp.jsx +++ b/src/JournalNoteApp.jsx @@ -1,13 +1,21 @@ + +import {Routes, Route} from 'react-router-dom' +import { Home } from './components/Home'; +import { Login } from './components/Login'; +import { Register } from './components/Register'; import "./components/JournalNoteApp.css" -import LoginBox from "./components/LoginBox"; + +// import LoginBox from "./components/LoginBox"; function JournalNoteApp() { return ( -
- logo - - -
+ + } /> + } /> + } /> + + ) } + export default JournalNoteApp; \ No newline at end of file diff --git a/src/components/Alert.jsx b/src/components/Alert.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/FirstApp.jsx b/src/components/FirstApp.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Home.jsx b/src/components/Home.jsx new file mode 100644 index 0000000..2cbd98b --- /dev/null +++ b/src/components/Home.jsx @@ -0,0 +1,3 @@ +export function Home () { + return
home
+} diff --git a/src/components/Login.jsx b/src/components/Login.jsx new file mode 100644 index 0000000..a07a3a3 --- /dev/null +++ b/src/components/Login.jsx @@ -0,0 +1,9 @@ + + +export function Login() { +
+ logo + + +
+} \ No newline at end of file diff --git a/src/components/LoginBox.css b/src/components/LoginBox.css index ad55b13..d5f40d1 100644 --- a/src/components/LoginBox.css +++ b/src/components/LoginBox.css @@ -56,12 +56,12 @@ background: #FABDE2; box-shadow: 6px 4px 4px #F692CF; border: 0; - width: 146px; - height: 64px; + width: 138px; + height: 56px; font-family: 'Marvel'; font-style: normal; font-weight: 400; - font-size: 36px; + font-size: 28px; color: #CA2588; } \ No newline at end of file diff --git a/src/components/ProtectedRoute.jsx b/src/components/ProtectedRoute.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Register.jsx b/src/components/Register.jsx new file mode 100644 index 0000000..88192a9 --- /dev/null +++ b/src/components/Register.jsx @@ -0,0 +1,3 @@ +export function Register () { + return
Register
+} \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index e39ce44..467c1ef 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,12 +1,25 @@ -import ReactDOM from 'react-dom/client' -import './index.css' -import JournalNoteApp from './JournalNoteApp' +import ReactDOM from 'react-dom/client'; +import './index.css'; +import JournalNoteApp from './JournalNoteApp'; +import { BrowserRouter } from 'react-router-dom'; +import React from 'react'; + +// ReactDOM.render ( +// +// +// +// +// , +// document.getElementById("root") +// ); const root = ReactDOM.createRoot(document.getElementById('root')) // root.render(

鈾 Journal Note 鈾

); root.render( - + + + + + ) - - From 061615846c16e46d644062ccc98a414f7fcc47d8 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Tue, 31 Jan 2023 11:40:38 -0600 Subject: [PATCH 08/38] =?UTF-8?q?Router=20Logrado=C2=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.jsx | 17 +++++ src/JournalNoteApp.jsx | 21 ------ src/components/Home.jsx | 8 ++- src/components/JournalNoteApp.css | 16 ----- src/components/Login.jsx | 10 +-- src/components/LoginBox.css | 67 ------------------- src/components/LoginBox.jsx | 25 ------- src/components/Register.jsx | 4 +- .../FirstApp.jsx => context/authContext.jsx} | 0 src/index.css | 37 ---------- src/main.jsx | 24 ++----- src/styles.css | 9 +++ 12 files changed, 43 insertions(+), 195 deletions(-) create mode 100644 src/App.jsx delete mode 100644 src/JournalNoteApp.jsx delete mode 100644 src/components/JournalNoteApp.css delete mode 100644 src/components/LoginBox.css delete mode 100644 src/components/LoginBox.jsx rename src/{components/FirstApp.jsx => context/authContext.jsx} (100%) delete mode 100644 src/index.css create mode 100644 src/styles.css diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..8314111 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,17 @@ +import { Routes, Route } from 'react-router-dom'; +import { Home } from './components/Home'; +import { Login } from './components/Login'; +import { Register } from './components/Register'; + +function App() { + return ( + + } /> + } /> + } /> + + + ) +} + +export default App; diff --git a/src/JournalNoteApp.jsx b/src/JournalNoteApp.jsx deleted file mode 100644 index 3d38b22..0000000 --- a/src/JournalNoteApp.jsx +++ /dev/null @@ -1,21 +0,0 @@ - -import {Routes, Route} from 'react-router-dom' -import { Home } from './components/Home'; -import { Login } from './components/Login'; -import { Register } from './components/Register'; -import "./components/JournalNoteApp.css" - -// import LoginBox from "./components/LoginBox"; - -function JournalNoteApp() { - return ( - - } /> - } /> - } /> - - - ) -} - -export default JournalNoteApp; \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 2cbd98b..80a2bf2 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,3 +1,7 @@ -export function Home () { - return
home
+ + export function Home (){ + return

馃挆Home馃挆

; } + + + diff --git a/src/components/JournalNoteApp.css b/src/components/JournalNoteApp.css deleted file mode 100644 index 20a42a4..0000000 --- a/src/components/JournalNoteApp.css +++ /dev/null @@ -1,16 +0,0 @@ - -.JournalNote_logo { - position: absolute; - width: 424px; - height: 271px; - left: 302px; - top: 160px; -} - -.title { - color: #CA2588; - font-family: 'Marvel', sans-serif; - font-size: 50px; - text-align: center; - -} \ No newline at end of file diff --git a/src/components/Login.jsx b/src/components/Login.jsx index a07a3a3..5aaa79b 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -1,9 +1,3 @@ - - -export function Login() { -
- logo - - -
+export function Login (){ + return

馃挆LOGIN馃挆

; } \ No newline at end of file diff --git a/src/components/LoginBox.css b/src/components/LoginBox.css deleted file mode 100644 index d5f40d1..0000000 --- a/src/components/LoginBox.css +++ /dev/null @@ -1,67 +0,0 @@ -.LoginBox_box { - - position: absolute; - width: 569px; - height: 367px; - left: -75px; - top: 315px; - background: #FDE4F3; - box-shadow: -3px -3px 4px rgba(242, 91, 182, 0.29), 15px 6px 4px rgba(242, 91, 182, 0.29); - border-radius: 40px; - display: flex; - flex-direction: column; - gap: 30px 30px; - justify-content: center; - align-items: center; - -} - -.LoginBox_container { - block-size: border-box; - background-color: none; -} - -.LoginBox_title { - - position: relative; - font-style: normal; - font-weight: 700; - font-size: 72px; - line-height: 63px; - text-align: center; - margin: 10px; - color: #CA2588; - block-size: border-box; -} - -.LoginBox_info { - - width: 25 px; - - -} - -.LoginBox_line { - display: flex; - flex-direction: row; - justify-content: space-evenly; - width: 32px; - - -} - -.LoginBox_button { - - border-radius: 100px; - background: #FABDE2; - box-shadow: 6px 4px 4px #F692CF; - border: 0; - width: 138px; - height: 56px; - font-family: 'Marvel'; - font-style: normal; - font-weight: 400; - font-size: 28px; - color: #CA2588; - -} \ No newline at end of file diff --git a/src/components/LoginBox.jsx b/src/components/LoginBox.jsx deleted file mode 100644 index c67423d..0000000 --- a/src/components/LoginBox.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import "./LoginBox.css" - -function LoginBox(){ - return ( -
-

L o g i n

-
-
- user - - -
-
- user - - -
-
- -
- ) -}; - -export default LoginBox; - diff --git a/src/components/Register.jsx b/src/components/Register.jsx index 88192a9..b10ac79 100644 --- a/src/components/Register.jsx +++ b/src/components/Register.jsx @@ -1,3 +1,3 @@ -export function Register () { - return
Register
+export function Register (){ + return

馃挅Register馃挅

; } \ No newline at end of file diff --git a/src/components/FirstApp.jsx b/src/context/authContext.jsx similarity index 100% rename from src/components/FirstApp.jsx rename to src/context/authContext.jsx diff --git a/src/index.css b/src/index.css deleted file mode 100644 index 0c8d9a1..0000000 --- a/src/index.css +++ /dev/null @@ -1,37 +0,0 @@ -/* :root{ - --font-Marvel: font-family: 'Marvel', sans-serif; - --font-Pacifico: font-family: 'Pacifico', cursive; - --pink-light-color: background-color: #FCDCEF; -} */ - -@media (min-width:768px){ -* { - - margin: 0; - - -} - -header { - position: absolute; - width: 1024px; - height: 99px; - left: 0px; - top: 0px; - background: #F9B6DF; -} - -body { - - position: relative; - width: 1024px; - height: 1366px; - font-family: 'Marvel', sans-serif; - background-color: #FCDCEF; -} -} -@media (min-width:1024px){ - - - -} \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 467c1ef..d23ef3f 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,25 +1,15 @@ +import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; -import JournalNoteApp from './JournalNoteApp'; import { BrowserRouter } from 'react-router-dom'; -import React from 'react'; +import App from './App'; +import './styles.css'; -// ReactDOM.render ( -// -// -// -// -// , -// document.getElementById("root") -// ); - -const root = ReactDOM.createRoot(document.getElementById('root')) -// root.render(

鈾 Journal Note 鈾

); -root.render( +ReactDOM.createRoot(document.getElementById('root')).render( - + +); + -) diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..dc146ac --- /dev/null +++ b/src/styles.css @@ -0,0 +1,9 @@ + +body { + + position: relative; + width: 1024px; + height: 1366px; + font-family: 'Marvel', sans-serif; + background-color: #FCDCEF; +} \ No newline at end of file From 1ee7d3d373d925e2c8d587bc7f22f8466745b60f Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Tue, 31 Jan 2023 13:38:10 -0600 Subject: [PATCH 09/38] agregando authcontext --- index.html | 2 +- src/App.jsx | 10 ++++++++-- src/components/Home.jsx | 8 +++++++- src/context/authContext.jsx | 15 +++++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index d53d578..db8d961 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - Lab Notes + Journal Note
diff --git a/src/App.jsx b/src/App.jsx index 8314111..07ccae9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2,15 +2,21 @@ import { Routes, Route } from 'react-router-dom'; import { Home } from './components/Home'; import { Login } from './components/Login'; import { Register } from './components/Register'; +import { AuthProvider } from './context/authContext'; function App() { return ( - +
+ + + } /> } /> } /> - + + +
) } diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 80a2bf2..59c88ea 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,5 +1,11 @@ +import { useContext } from 'react'; +import {context} from '../context/authContext' + +export function Home (){ + +const authContext = useContext(context) + - export function Home (){ return

馃挆Home馃挆

; } diff --git a/src/context/authContext.jsx b/src/context/authContext.jsx index e69de29..cb428b6 100644 --- a/src/context/authContext.jsx +++ b/src/context/authContext.jsx @@ -0,0 +1,15 @@ +// import { Children } from "react"; + +import { createContext } from "react"; + +export const context = createContext() + +export function AuthProvider({ children }) { + + const user = { + login: true, + }; + return {children} ; + +} + From 8049e7c0bb741bc9695d6ee9ad8d4f828ccf4649 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Tue, 31 Jan 2023 17:50:36 -0600 Subject: [PATCH 10/38] se muestra en registro email y password --- src/components/Home.jsx | 6 +-- src/components/Login.jsx | 21 ++++++++++- src/components/Register.jsx | 74 +++++++++++++++++++++++++++++++++++-- src/context/authContext.jsx | 20 ++++++---- 4 files changed, 106 insertions(+), 15 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 59c88ea..51fa34b 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,10 +1,10 @@ -import { useContext } from 'react'; -import {context} from '../context/authContext' +import {useAuth} from '../context/authContext' export function Home (){ -const authContext = useContext(context) +const authContext = useAuth() +console.log(authContext); return

馃挆Home馃挆

; } diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 5aaa79b..763db86 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -1,3 +1,20 @@ -export function Login (){ - return

馃挆LOGIN馃挆

; +import { useState } from "react"; + +export function Login() { + + const [user, setUser] = useState({ + email: '', + password: '' + }) + + return
+ +
+ + + + + +
+
} \ No newline at end of file diff --git a/src/components/Register.jsx b/src/components/Register.jsx index b10ac79..f17bf64 100644 --- a/src/components/Register.jsx +++ b/src/components/Register.jsx @@ -1,3 +1,71 @@ -export function Register (){ - return

馃挅Register馃挅

; -} \ No newline at end of file + +import { useState } from 'react'; +import { useAuth } from '../context/authContext' +import { useNavigate, useResolvedPath } from 'react-router-dom'; +import { async } from '@firebase/util'; + + +export function Register() { + + const [user, setUser] = useState({ + email: '', + password: '', + }); + const { signup } = useAuth() + const navigate = useNavigate() + const [error, setError] = useState(); + + + const handleChange = ({ target: { name, value } }) => + setUser({ ...user, [name]: value }) + + + const handleSubmit = async (e) => { + e.preventDefault() + try { + + await signup(user.email, user.password) + navigate("/") + } catch (error) { + console.log(error.code); + setError(error.message); + } + } + + return ( +
+ {error &&

{error}

} + + +
+ + + + + + + + +
+
+ ) +} + + + + + +// return

馃挅Register馃挅

; +// } \ No newline at end of file diff --git a/src/context/authContext.jsx b/src/context/authContext.jsx index cb428b6..00f6481 100644 --- a/src/context/authContext.jsx +++ b/src/context/authContext.jsx @@ -1,15 +1,21 @@ -// import { Children } from "react"; +import { createContext, useContext } from "react"; +import {createUserWithEmailAndPassword} from "firebase/auth"; +import {auth} from "../Firebase" -import { createContext } from "react"; -export const context = createContext() +export const authContext = createContext(); +export const useAuth = () => { + const context = useContext(authContext) + return context + +} export function AuthProvider({ children }) { - const user = { - login: true, - }; - return {children} ; + const signup = (email, password) => createUserWithEmailAndPassword(auth, email, password); + + + return {children} ; } From 4ccefd28e101b90ec8bb1391f014d5c3847e87c0 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Tue, 31 Jan 2023 22:29:59 -0600 Subject: [PATCH 11/38] Login, Logout --- src/App.jsx | 25 +++++++----- src/components/Home.jsx | 18 ++++++--- src/components/JournalNoteApp.css | 16 -------- src/components/Login.jsx | 63 +++++++++++++++++++++++++------ src/components/ProtectedRoute.jsx | 11 ++++++ src/context/authContext.jsx | 39 ++++++++++++++++--- 6 files changed, 125 insertions(+), 47 deletions(-) delete mode 100644 src/components/JournalNoteApp.css diff --git a/src/App.jsx b/src/App.jsx index 07ccae9..a2b0257 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,23 +1,30 @@ import { Routes, Route } from 'react-router-dom'; import { Home } from './components/Home'; import { Login } from './components/Login'; +import { ProtectedRoute } from './components/ProtectedRoute'; import { Register } from './components/Register'; import { AuthProvider } from './context/authContext'; function App() { - return ( -
- + return ( +
+ - - } /> - } /> - } /> + + + + + } /> + } /> + } /> -
- ) +
+ ) } export default App; diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 51fa34b..5da7f88 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,12 +1,18 @@ -import {useAuth} from '../context/authContext' +import { useAuth } from "../context/authContext"; -export function Home (){ +export function Home() { -const authContext = useAuth() + const { user, logout, loading } = useAuth() + + const handledLogout = async () => { + await logout(); + }; + if (loading) return

Loading

+ return
+

馃挆Welcome {user.email}馃挆

-console.log(authContext); - - return

馃挆Home馃挆

; + +
} diff --git a/src/components/JournalNoteApp.css b/src/components/JournalNoteApp.css deleted file mode 100644 index 20a42a4..0000000 --- a/src/components/JournalNoteApp.css +++ /dev/null @@ -1,16 +0,0 @@ - -.JournalNote_logo { - position: absolute; - width: 424px; - height: 271px; - left: 302px; - top: 160px; -} - -.title { - color: #CA2588; - font-family: 'Marvel', sans-serif; - font-size: 50px; - text-align: center; - -} \ No newline at end of file diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 763db86..2b7ad9c 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -1,20 +1,61 @@ -import { useState } from "react"; - +import { useState } from 'react'; +import { useAuth } from '../context/authContext' +import { useNavigate, useResolvedPath } from 'react-router-dom'; +import { async } from '@firebase/util'; export function Login() { const [user, setUser] = useState({ email: '', - password: '' - }) + password: '', + }); + const { login } = useAuth() + const navigate = useNavigate() + const [error, setError] = useState(); + + + const handleChange = ({ target: { name, value } }) => + setUser({ ...user, [name]: value }) + + + const handleSubmit = async (e) => { + e.preventDefault() + try { + + await login(user.email, user.password) + navigate("/") + } catch (error) { + console.log(error.code); + setError(error.message); + } + } + + return ( +
+ {error &&

{error}

} + + +
+ + - return
+ + - - + /> - + - -
+ +
+ ) } \ No newline at end of file diff --git a/src/components/ProtectedRoute.jsx b/src/components/ProtectedRoute.jsx index e69de29..2adb164 100644 --- a/src/components/ProtectedRoute.jsx +++ b/src/components/ProtectedRoute.jsx @@ -0,0 +1,11 @@ +import { useAuth } from "../context/authContext"; +import { Navigate } from "react-router-dom"; + +export function ProtectedRoute({ children }) { + const { user, loading } = useAuth() + + if (loading) return

Loading

+ + if (!user) return + return <>{children}; +} \ No newline at end of file diff --git a/src/context/authContext.jsx b/src/context/authContext.jsx index 00f6481..76bb036 100644 --- a/src/context/authContext.jsx +++ b/src/context/authContext.jsx @@ -1,6 +1,14 @@ import { createContext, useContext } from "react"; -import {createUserWithEmailAndPassword} from "firebase/auth"; -import {auth} from "../Firebase" +import { + createUserWithEmailAndPassword, + signInWithEmailAndPassword, + onAuthStateChanged, + signOut, +} from "firebase/auth"; +import { auth } from "../Firebase" +import { async } from "@firebase/util"; +import { useEffect } from "react"; +import { useState } from "react"; export const authContext = createContext(); @@ -11,11 +19,32 @@ export const useAuth = () => { } export function AuthProvider({ children }) { + const [user, setUser] = useState(null); - const signup = (email, password) => createUserWithEmailAndPassword(auth, email, password); - + const [loading, setLoading] = useState(true); - return {children} ; + const signup = (email, password) => + createUserWithEmailAndPassword(auth, email, password); + const login = async (email, password) => + signInWithEmailAndPassword(auth, email, password); + + // const logout = () => signOut(auth); + const logout = () => signOut(auth); + + + useEffect(() => { + const unsubscribe = onAuthStateChanged(auth, (currentUser) => { + setUser(currentUser); + setLoading(false); + }); + return () => unsubscribe (); + }, []); + + return ( + + {children} + + ); } From 5567e446e810788934a7db9d8e38c0e1b4f54cf0 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Wed, 1 Feb 2023 15:26:30 -0600 Subject: [PATCH 12/38] cambios de login CSS --- src/components/Login.jsx | 58 +++++++++++++-------- src/components/css-components/Login.css | 68 +++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 22 deletions(-) create mode 100644 src/components/css-components/Login.css diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 2b7ad9c..c46efa6 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -2,6 +2,8 @@ import { useState } from 'react'; import { useAuth } from '../context/authContext' import { useNavigate, useResolvedPath } from 'react-router-dom'; import { async } from '@firebase/util'; +import "./css-components/Login.css"; + export function Login() { const [user, setUser] = useState({ @@ -30,31 +32,43 @@ export function Login() { } return ( -
+
{error &&

{error}

} -
- - - - - - - - + +
+
+ + + + +
+
+
+ +
) diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css new file mode 100644 index 0000000..ded4254 --- /dev/null +++ b/src/components/css-components/Login.css @@ -0,0 +1,68 @@ +.login-box { + + position: absolute; + width: 502px; + height: 340px; + left: 400px; + top: 300px; + background: #FDE4F3; + box-shadow: -3px -3px 4px rgba(242, 91, 182, 0.29), 15px 6px 4px rgba(242, 91, 182, 0.29); + border-radius: 40px; + display: flex; + flex-direction:row; + justify-content:center; + align-items:flex-end; + +} + +.container-info { + + display: flex; + justify-content: center; + align-items: flex-end; + width: 200px; + height: 100px; + flex-direction: row; + +} + +.inputs { + + margin-block: 8px; + width: 200px; + height: 22px; + display: flex; + align-content: center; + background: rgba(242, 91, 182, 0.29); + box-shadow: 0px 4px 4px #CA2588; + border-radius: 5px; + border: none; + font-family: 'Marvel', sans-serif; + font-size: medium; +} + +.btn-container { + width: 200px; + height: 100px; + align-items:flex-start; + display: flex; + justify-content: center; + + +} + +.btn-login { + border-radius: 50px; + background: #FABDE2; + box-shadow: 6px 4px 4px #F692CF; + border: 0; + width: 82px; + height: 28px; + font-family: 'Marvel'; + font-style: normal; + /* font-weight: 200; */ + font-size: 20px; + color: #CA2588; + +} + From 5072da77f2c6af38df2f080268473b8cb65504ca Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Wed, 1 Feb 2023 22:27:20 -0600 Subject: [PATCH 13/38] se realiza el accceso con google --- src/components/Alert.jsx | 5 ++ src/components/Home.jsx | 8 +- src/components/Login.jsx | 104 ++++++++++++++---------- src/components/Register.jsx | 2 +- src/components/css-components/Login.css | 1 - src/context/authContext.jsx | 20 +++-- 6 files changed, 86 insertions(+), 54 deletions(-) diff --git a/src/components/Alert.jsx b/src/components/Alert.jsx index e69de29..a436ab2 100644 --- a/src/components/Alert.jsx +++ b/src/components/Alert.jsx @@ -0,0 +1,5 @@ +export function Alert ({message}){ + return
+ {message} +
; +} \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 5da7f88..b32d6f7 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,15 +1,19 @@ import { useAuth } from "../context/authContext"; export function Home() { - const { user, logout, loading } = useAuth() + console.log(user); const handledLogout = async () => { + try { await logout(); + } catch(error){ + console.error(error); + } }; if (loading) return

Loading

return
-

馃挆Welcome {user.email}馃挆

+

馃挆Welcome, {user.displayName||user.email}馃挆

diff --git a/src/components/Login.jsx b/src/components/Login.jsx index c46efa6..1ef6789 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -1,16 +1,17 @@ import { useState } from 'react'; import { useAuth } from '../context/authContext' -import { useNavigate, useResolvedPath } from 'react-router-dom'; -import { async } from '@firebase/util'; +import { useNavigate } from 'react-router-dom'; +import { Alert } from './Alert'; import "./css-components/Login.css"; + export function Login() { const [user, setUser] = useState({ email: '', password: '', }); - const { login } = useAuth() + const { login, loginWithGoogle } = useAuth() const navigate = useNavigate() const [error, setError] = useState(); @@ -24,52 +25,71 @@ export function Login() { try { await login(user.email, user.password) - navigate("/") + navigate("/"); } catch (error) { console.log(error.code); setError(error.message); } } + const handleGoogleSignIn = async () => { + try { + throw new Error('googleError') + await loginWithGoogle() + navigate("/"); + } catch (error) { + setError(error.message); + } + }; + return ( -
- {error &&

{error}

} - - -
-
-
- - - - +
+
+ {error && < Alert message={error} />} + + + +
+
+ + + + +
+
+
+
-
-
- -
- -
+ + +
+
+ +

You don't have an account yet? Create Account

+ + +
) + } \ No newline at end of file diff --git a/src/components/Register.jsx b/src/components/Register.jsx index f17bf64..23d088f 100644 --- a/src/components/Register.jsx +++ b/src/components/Register.jsx @@ -34,7 +34,7 @@ export function Register() { return (
- {error &&

{error}

} + {error && < Alert message={error} />}
diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css index ded4254..f048f76 100644 --- a/src/components/css-components/Login.css +++ b/src/components/css-components/Login.css @@ -60,7 +60,6 @@ height: 28px; font-family: 'Marvel'; font-style: normal; - /* font-weight: 200; */ font-size: 20px; color: #CA2588; diff --git a/src/context/authContext.jsx b/src/context/authContext.jsx index 76bb036..2d8711e 100644 --- a/src/context/authContext.jsx +++ b/src/context/authContext.jsx @@ -1,15 +1,13 @@ -import { createContext, useContext } from "react"; +import { createContext, useContext, useEffect, useState } from "react"; import { createUserWithEmailAndPassword, signInWithEmailAndPassword, onAuthStateChanged, signOut, + GoogleAuthProvider, + signInWithPopup, } from "firebase/auth"; import { auth } from "../Firebase" -import { async } from "@firebase/util"; -import { useEffect } from "react"; -import { useState } from "react"; - export const authContext = createContext(); @@ -29,20 +27,26 @@ export function AuthProvider({ children }) { const login = async (email, password) => signInWithEmailAndPassword(auth, email, password); - // const logout = () => signOut(auth); const logout = () => signOut(auth); + const loginWithGoogle = () => { + const googleProvider = new GoogleAuthProvider() + return signInWithPopup(auth, googleProvider) + } + useEffect(() => { const unsubscribe = onAuthStateChanged(auth, (currentUser) => { setUser(currentUser); setLoading(false); }); - return () => unsubscribe (); + return () => unsubscribe(); }, []); return ( - + {children} ); From 1e4b80618ca0ed97bf3ed0c56ef48c3d8a7e80a4 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Wed, 1 Feb 2023 22:35:32 -0600 Subject: [PATCH 14/38] se realiza el accceso con google intento dos --- src/components/css-components/Login.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css index f048f76..bc32d9c 100644 --- a/src/components/css-components/Login.css +++ b/src/components/css-components/Login.css @@ -27,6 +27,7 @@ } .inputs { + margin-block: 8px; width: 200px; From 4032c1dc4901eb6ce12f3efb986ec22a4b4c43e4 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Sun, 5 Feb 2023 12:49:28 -0600 Subject: [PATCH 15/38] Firestore - Pruebas Iniciales --- src/Firebase.jsx | 8 ++++++-- src/components/Login.jsx | 3 +-- src/components/Register.jsx | 1 + src/main.jsx | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Firebase.jsx b/src/Firebase.jsx index adc0b1c..3a6462c 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -1,6 +1,7 @@ // Import the functions you need from the SDKs you need import { initializeApp } from "firebase/app"; import {getAuth} from 'firebase/auth'; +import './firebase'; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries @@ -16,5 +17,8 @@ const firebaseConfig = { }; // Initialize Firebase -export const app = initializeApp(firebaseConfig); -export const auth = getAuth(app); \ No newline at end of file +export const app = firebase.initializeApp(firebaseConfig); +export const auth = getAuth(app); + +// Initialize Firestore +export const db = app.firestore(); diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 1ef6789..08cadb7 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -34,8 +34,7 @@ export function Login() { const handleGoogleSignIn = async () => { try { - throw new Error('googleError') - await loginWithGoogle() + await loginWithGoogle(); navigate("/"); } catch (error) { setError(error.message); diff --git a/src/components/Register.jsx b/src/components/Register.jsx index 23d088f..c393059 100644 --- a/src/components/Register.jsx +++ b/src/components/Register.jsx @@ -3,6 +3,7 @@ import { useState } from 'react'; import { useAuth } from '../context/authContext' import { useNavigate, useResolvedPath } from 'react-router-dom'; import { async } from '@firebase/util'; +import { Alert } from './Alert'; export function Register() { diff --git a/src/main.jsx b/src/main.jsx index d23ef3f..71e8e71 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -3,6 +3,7 @@ import ReactDOM from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import App from './App'; import './styles.css'; +import './firebase'; ReactDOM.createRoot(document.getElementById('root')).render( From 689b89a951a70f081bc49f72932af85e54f697ca Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Sun, 5 Feb 2023 12:53:54 -0600 Subject: [PATCH 16/38] Firestore - Pruebas Iniciales2 --- src/Firebase.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Firebase.jsx b/src/Firebase.jsx index 3a6462c..5b855a6 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -1,5 +1,5 @@ // Import the functions you need from the SDKs you need -import { initializeApp } from "firebase/app"; +import { initializeApp } from "firebase/app"; //Esto no estaba inactivo... import {getAuth} from 'firebase/auth'; import './firebase'; From 5093596484f0c78150fb878ceb99b1478388e26d Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 6 Feb 2023 14:53:56 -0600 Subject: [PATCH 17/38] se renderiza pagina de notas --- src/App.jsx | 2 ++ src/Firebase.jsx | 4 +++- src/components/Home.jsx | 27 ++++++++++++++++++++++----- src/components/NoteCard.jsx | 8 ++++++++ src/components/TaskForm.jsx | 27 +++++++++++++++++++++++++++ src/components/TaskList.jsx | 14 ++++++++++++++ src/components/tasks.js | 19 +++++++++++++++++++ 7 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 src/components/NoteCard.jsx create mode 100644 src/components/TaskForm.jsx create mode 100644 src/components/TaskList.jsx create mode 100644 src/components/tasks.js diff --git a/src/App.jsx b/src/App.jsx index a2b0257..e197630 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -16,7 +16,9 @@ function App() { element={ + + } /> } /> } /> diff --git a/src/Firebase.jsx b/src/Firebase.jsx index adc0b1c..470c9c4 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -1,6 +1,7 @@ // Import the functions you need from the SDKs you need import { initializeApp } from "firebase/app"; import {getAuth} from 'firebase/auth'; +import {getFirestore} from "firebase/firestore"; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries @@ -17,4 +18,5 @@ const firebaseConfig = { // Initialize Firebase export const app = initializeApp(firebaseConfig); -export const auth = getAuth(app); \ No newline at end of file +export const auth = getAuth(app); +export const db = getFirestore(app); \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index b32d6f7..16d9826 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,9 +1,24 @@ import { useAuth } from "../context/authContext"; +import {TaskList} from './TaskList'; +import {TaskForm} from './TaskForm'; +import {tasks as data} from './tasks'; +import {useState, useEffect} from 'react'; export function Home() { const { user, logout, loading } = useAuth() - - console.log(user); + const [tasks, setTasks] = useState([]) + useEffect(() => { + setTasks(data) + }, [] + ) + function createNote(task) { + setTasks([...tasks, { + title: task.title, + id: tasks.length, + description: task.description + } ]) + } + const handledLogout = async () => { try { await logout(); @@ -13,10 +28,12 @@ export function Home() { }; if (loading) return

Loading

return
-

馃挆Welcome, {user.displayName||user.email}馃挆

- +

馃挆Welcome to Journal Note, {user.displayName||user.email}馃挆

+ -
+ + +
} diff --git a/src/components/NoteCard.jsx b/src/components/NoteCard.jsx new file mode 100644 index 0000000..21761cc --- /dev/null +++ b/src/components/NoteCard.jsx @@ -0,0 +1,8 @@ +export function NoteCard({ task }) { + return ( +
+

{task.title}

+

{task.description}

+
+ ); +} diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx new file mode 100644 index 0000000..e6cee3f --- /dev/null +++ b/src/components/TaskForm.jsx @@ -0,0 +1,27 @@ +import { useState } from "react"; + +export function TaskForm({ createNote }) { + const [title, setTitle] = useState(''); + const [description, setDescription] = useState(''); + const handleSubmit = (e) => { + e.preventDefault(); + + createNote({ + title, + description + }); + }; + return ( + + + setTitle(e.target.value)} /> + + + + + ); +} \ No newline at end of file diff --git a/src/components/TaskList.jsx b/src/components/TaskList.jsx new file mode 100644 index 0000000..0a035e7 --- /dev/null +++ b/src/components/TaskList.jsx @@ -0,0 +1,14 @@ +import { NoteCard } from './NoteCard' +export function TaskList({ tasks }) { + + if (tasks.length === 0) { + return

NO HAY TAREAS AUN

+ } + return ( +
{ + tasks.map((task) => ( + + ))} +
+ ); +} \ No newline at end of file diff --git a/src/components/tasks.js b/src/components/tasks.js new file mode 100644 index 0000000..8cc4fde --- /dev/null +++ b/src/components/tasks.js @@ -0,0 +1,19 @@ +export const tasks = [ + +{ + id: 0, + title: 'my first note', + description: 'my first note' +}, +{ + id: 1, + title: 'my second note', + description: 'my second note' +}, +{ + id: 2, + title: 'my third note', + description: 'my third note' +} + +] \ No newline at end of file From 535ff402a4ecdbb7613fc6580ecf4b9cdcb486cb Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 6 Feb 2023 15:08:47 -0600 Subject: [PATCH 18/38] cambio de rama --- src/components/Home.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 16d9826..a4c6c28 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -18,6 +18,7 @@ export function Home() { description: task.description } ]) } + const handledLogout = async () => { try { From 596accaa33b694043bb80fc7d018c0ae9635a177 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Mon, 6 Feb 2023 16:45:14 -0600 Subject: [PATCH 19/38] Delete Note --- src/components/Home.jsx | 5 ++++- src/components/Login.jsx | 4 ++-- src/components/NoteCard.jsx | 6 +++++- src/components/TaskForm.jsx | 9 +++++++-- src/components/TaskList.jsx | 4 ++-- src/components/css-components/Login.css | 15 +++++++++++++++ 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index a4c6c28..960f30c 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -19,6 +19,9 @@ export function Home() { } ]) } + function deleteNote (taskId) { + setTasks (tasks.filter (task => task.id !== taskId)) + } const handledLogout = async () => { try { @@ -33,7 +36,7 @@ export function Home() { - +
} diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 08cadb7..893f728 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -42,7 +42,7 @@ export function Login() { }; return ( -
+
{error && < Alert message={error} />} @@ -83,7 +83,7 @@ export function Login() {
-
+

You don't have an account yet? Create Account

diff --git a/src/components/NoteCard.jsx b/src/components/NoteCard.jsx index 21761cc..a444c4b 100644 --- a/src/components/NoteCard.jsx +++ b/src/components/NoteCard.jsx @@ -1,8 +1,12 @@ -export function NoteCard({ task }) { +export function NoteCard({ task, deleteNote }) { + return (

{task.title}

{task.description}

+
); } diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx index e6cee3f..d31fae1 100644 --- a/src/components/TaskForm.jsx +++ b/src/components/TaskForm.jsx @@ -10,14 +10,19 @@ export function TaskForm({ createNote }) { title, description }); + setTitle("") + setDescription("") }; return (
setTitle(e.target.value)} /> + onChange={(e) => setTitle(e.target.value)} + value={title} + autoFocus /> + onChange={(e) => setDescription(e.target.value)} + value={description}> diff --git a/src/components/TaskList.jsx b/src/components/TaskList.jsx index 0a035e7..53a029f 100644 --- a/src/components/TaskList.jsx +++ b/src/components/TaskList.jsx @@ -1,5 +1,5 @@ import { NoteCard } from './NoteCard' -export function TaskList({ tasks }) { +export function TaskList({ tasks, deleteNote }) { if (tasks.length === 0) { return

NO HAY TAREAS AUN

@@ -7,7 +7,7 @@ export function TaskList({ tasks }) { return (
{ tasks.map((task) => ( - + ))}
); diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css index bc32d9c..7c82ecf 100644 --- a/src/components/css-components/Login.css +++ b/src/components/css-components/Login.css @@ -1,3 +1,10 @@ +/* .login-body { + display: flex; + flex-direction:row; + justify-content:center; + align-items:flex-end; +} */ + .login-box { position: absolute; @@ -66,3 +73,11 @@ } +/* .login-googleAccess { + position: absolute; + width: 502px; + height: 340px; + left: 400px; + top: 300px; +} */ + From dc48b4ce86c61e52164f7815db13fcb838d6f0a4 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Wed, 8 Feb 2023 00:35:57 -0600 Subject: [PATCH 20/38] cambios en note-card CSS y login --- public/Resource/569374.png | Bin 5495 -> 0 bytes public/Resource/Archive.svg | 14 - public/Resource/Logo-JN.png | Bin 68558 -> 0 bytes ... Hunt Palette eac7c7a0c3d2f7f5ebeae0da.png | Bin 479 -> 0 bytes ... Hunt Palette ffd4b2fff6bdceedc786c8bc.png | Bin 479 -> 0 bytes "public/Resource/Refer/Lpogot\303\255po.ai" | 1990 ----------------- public/Resource/Refer/envelope-solid.svg | 1 - public/Resource/Refer/google.svg | 1 - public/Resource/Refer/heart-regular.svg | 1 - public/Resource/Refer/heart-solid.svg | 1 - public/Resource/Refer/key-solid.svg | 1 - public/Resource/Refer/location-dot-solid.svg | 1 - public/Resource/Refer/trash-can-regular.svg | 1 - public/Resource/Refer/trash-can-solid.svg | 1 - public/Resource/Refer/user-regular.svg | 1 - public/Resource/Refer/user-solid.svg | 1 - public/Resource/arrow-pointer-solid.svg | 1 - public/Resource/behance.svg | 1 - public/Resource/bell-regular.svg | 1 - public/Resource/bell-solid.svg | 1 - public/Resource/bicycle-solid.svg | 1 - public/Resource/bug-solid.svg | 1 - public/Resource/dragon-solid.svg | 1 - public/Resource/envelope-solid.svg | 1 - public/Resource/figma.svg | 1 - public/Resource/gear-solid.svg | 1 - public/Resource/gears-solid.svg | 1 - public/Resource/github.svg | 1 - public/Resource/google.svg | 1 - public/Resource/hand-pointer-regular.svg | 1 - public/Resource/hand-pointer-solid.svg | 1 - public/Resource/heart-regular.svg | 1 - public/Resource/heart-solid.svg | 1 - public/Resource/image-regular.svg | 1 - public/Resource/image-solid.svg | 1 - public/Resource/key-solid.svg | 1 - public/Resource/lightbulb-regular.svg | 1 - public/Resource/lightbulb-solid.svg | 1 - public/Resource/linkedin.svg | 1 - public/Resource/location-dot-solid.svg | 1 - public/Resource/palette-solid.svg | 1 - public/Resource/pencil-solid.svg | 1 - public/Resource/phone-solid.svg | 1 - public/Resource/thumbtack-solid.svg | 1 - public/Resource/trash-can-regular.svg | 1 - public/Resource/trash-can-solid.svg | 1 - public/Resource/user-regular.svg | 1 - public/Resource/user-solid.svg | 1 - src/components/Home.jsx | 16 +- src/components/Login.jsx | 6 +- src/components/NoteCard.jsx | 20 +- src/components/TaskForm.jsx | 31 +- src/components/TaskList.jsx | 4 +- src/components/css-components/Login.css | 71 +- src/components/css-components/NoteCard.css | 69 + src/components/css-components/home.css | 43 + src/components/css-components/taskForm.css | 56 + src/components/tasks.js | 18 +- src/styles.css | 6 +- 59 files changed, 280 insertions(+), 2106 deletions(-) delete mode 100644 public/Resource/569374.png delete mode 100644 public/Resource/Archive.svg delete mode 100644 public/Resource/Logo-JN.png delete mode 100644 public/Resource/Refer/Color Hunt Palette eac7c7a0c3d2f7f5ebeae0da.png delete mode 100644 public/Resource/Refer/Color Hunt Palette ffd4b2fff6bdceedc786c8bc.png delete mode 100644 "public/Resource/Refer/Lpogot\303\255po.ai" delete mode 100644 public/Resource/Refer/envelope-solid.svg delete mode 100644 public/Resource/Refer/google.svg delete mode 100644 public/Resource/Refer/heart-regular.svg delete mode 100644 public/Resource/Refer/heart-solid.svg delete mode 100644 public/Resource/Refer/key-solid.svg delete mode 100644 public/Resource/Refer/location-dot-solid.svg delete mode 100644 public/Resource/Refer/trash-can-regular.svg delete mode 100644 public/Resource/Refer/trash-can-solid.svg delete mode 100644 public/Resource/Refer/user-regular.svg delete mode 100644 public/Resource/Refer/user-solid.svg delete mode 100644 public/Resource/arrow-pointer-solid.svg delete mode 100644 public/Resource/behance.svg delete mode 100644 public/Resource/bell-regular.svg delete mode 100644 public/Resource/bell-solid.svg delete mode 100644 public/Resource/bicycle-solid.svg delete mode 100644 public/Resource/bug-solid.svg delete mode 100644 public/Resource/dragon-solid.svg delete mode 100644 public/Resource/envelope-solid.svg delete mode 100644 public/Resource/figma.svg delete mode 100644 public/Resource/gear-solid.svg delete mode 100644 public/Resource/gears-solid.svg delete mode 100644 public/Resource/github.svg delete mode 100644 public/Resource/google.svg delete mode 100644 public/Resource/hand-pointer-regular.svg delete mode 100644 public/Resource/hand-pointer-solid.svg delete mode 100644 public/Resource/heart-regular.svg delete mode 100644 public/Resource/heart-solid.svg delete mode 100644 public/Resource/image-regular.svg delete mode 100644 public/Resource/image-solid.svg delete mode 100644 public/Resource/key-solid.svg delete mode 100644 public/Resource/lightbulb-regular.svg delete mode 100644 public/Resource/lightbulb-solid.svg delete mode 100644 public/Resource/linkedin.svg delete mode 100644 public/Resource/location-dot-solid.svg delete mode 100644 public/Resource/palette-solid.svg delete mode 100644 public/Resource/pencil-solid.svg delete mode 100644 public/Resource/phone-solid.svg delete mode 100644 public/Resource/thumbtack-solid.svg delete mode 100644 public/Resource/trash-can-regular.svg delete mode 100644 public/Resource/trash-can-solid.svg delete mode 100644 public/Resource/user-regular.svg delete mode 100644 public/Resource/user-solid.svg create mode 100644 src/components/css-components/NoteCard.css create mode 100644 src/components/css-components/home.css create mode 100644 src/components/css-components/taskForm.css diff --git a/public/Resource/569374.png b/public/Resource/569374.png deleted file mode 100644 index 20643a64ecfe8769520f8c69f83389963b6147ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5495 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 I`I>g(?*h#$M*si- diff --git a/public/Resource/Archive.svg b/public/Resource/Archive.svg deleted file mode 100644 index dd8b897..0000000 --- a/public/Resource/Archive.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - diff --git a/public/Resource/Logo-JN.png b/public/Resource/Logo-JN.png deleted file mode 100644 index 9cdaec8d3af6023c4b78cb7b85c29410ea060ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68558 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 diff --git a/public/Resource/Refer/Color Hunt Palette eac7c7a0c3d2f7f5ebeae0da.png b/public/Resource/Refer/Color Hunt Palette eac7c7a0c3d2f7f5ebeae0da.png deleted file mode 100644 index fb442a1e4e3deb6f06b753ddd5c88685ceb4bfaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKLEX+WWqKVr7ffP%+qpu?a!^VE@KZ&eBzCyA` zkS_y6l^O#>Lkk1LFQ8Dv3kHT#0|tgy2@DKYGZ+}e3+C(!v;j)+2l#}zzB+zpVlH52GD6Q}5;uunK z>+N|)-U9{BTx@Mpms-4$&?<@dZM}05;rQqH1$ut0xJc{ bgflz;B$S)3j<6|Q2MQKXS3j3^P6qLzK diff --git a/public/Resource/Refer/Color Hunt Palette ffd4b2fff6bdceedc786c8bc.png b/public/Resource/Refer/Color Hunt Palette ffd4b2fff6bdceedc786c8bc.png deleted file mode 100644 index defad4d3d4bdf38c65a2607a588d2b9615c205d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKLEX+WWqKVr7ffP%+qpu?a!^VE@KZ&eBzCyA` zkS_y6l^O#>Lkk1LFQ8Dv3kHT#0|tgy2@DKYGZ+}e3+C(!v;j)+2l#}z{=c&6|F^y8 z-X3o|vFHE)|4Omvf`L+uN#5=*Ed3cb1A!d&5>H=O_UDYe3`*L}6VFcvO6z;NIEGZ* zdV8Lc_kaNd%fhG?tx+@T^EVg%Y+yde2-JfQsNE4%GNlK!o@nm0#El9tP5o1^z)C?f b;mpoI3FW4%BWw!Sfr7=;)z4*}Q$iB}xjl>~ diff --git "a/public/Resource/Refer/Lpogot\303\255po.ai" "b/public/Resource/Refer/Lpogot\303\255po.ai" deleted file mode 100644 index c893edf..0000000 --- "a/public/Resource/Refer/Lpogot\303\255po.ai" +++ /dev/null @@ -1,1990 +0,0 @@ -%PDF-1.5 %忏嫌 -1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - Lpogot铆po - - - Adobe Illustrator CC 22.0 (Windows) - 2023-01-12T18:50:40-05:00 - 2023-01-12T18:50:40-06:00 - 2023-01-12T18:50:40-06:00 - - - - 256 - 164 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgApAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqp3H2B88jJIc 01CQFJA6nEyWmxICxAHQVrhtaW+vsKKSW6DBxLTZmIp8Jqe2PEtO9aq1CkmtCMeJaWvIHibahBFR gJsLSsOgyaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUq8xgGzSvYysPmttKyn6CARiqOkuwjM BGziP+8YUoNq4LZCKosytIUHZQ1e1DjaKUvroKxlY2YyglQKdj88bTwuN2Q3EQuW48iNthWnjja8 K43NUR40aQOKilNvnXG0UpySiT6u61AZ6EdDsDscFpA5orJMXYq7FVGdwaIPtAjISKQ0zBTIp6t0 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 7FXYq7FXYq7FXYq//9k= - - - - proof:pdf - uuid:65E6390686CF11DBA6E2D887CEACB407 - xmp.did:45236d05-c995-954c-a8d0-03ad7a8eb9dc - uuid:5de82761-4730-485d-af1f-c49f9cc5e932 - - uuid:613f42b9-5e15-414e-8e51-bdb4a90addaa - xmp.did:3a482b2c-e105-6a4e-afab-9f6f73da744c - uuid:65E6390686CF11DBA6E2D887CEACB407 - proof:pdf - - - - - saved - xmp.iid:45236d05-c995-954c-a8d0-03ad7a8eb9dc - 2023-01-12T18:50:38-06:00 - Adobe Illustrator CC 22.0 (Windows) - / - - - - Web - Document - 1 - False - False - - 1366.000000 - 768.000000 - Pixels - - - - - Pacifico - Pacifico - Regular - TrueType - Version 1.000 - False - Pacifico.ttf - - - - - - Cyan - Magenta - Yellow - Black - - - - - - Grupo de muestras por defecto - 0 - - - - Blanco - RGB - PROCESS - 255 - 255 - 255 - - - Negro - RGB - PROCESS - 0 - 0 - 0 - - - Rojo RGB - RGB - PROCESS - 255 - 0 - 0 - - - Amarillo RGB - RGB - PROCESS - 255 - 255 - 0 - - - Verde RGB - RGB - PROCESS - 0 - 255 - 0 - - - Cian RGB - RGB - PROCESS - 0 - 255 - 255 - - - Azul RGB - RGB - PROCESS - 0 - 0 - 255 - - - Magenta RGB - RGB - PROCESS - 255 - 0 - 255 - - - R=193 G=39 B=45 - RGB - PROCESS - 193 - 39 - 45 - - - R=237 G=28 B=36 - RGB - PROCESS - 237 - 28 - 36 - - - R=241 G=90 B=36 - RGB - PROCESS - 241 - 90 - 36 - - - R=247 G=147 B=30 - RGB - PROCESS - 247 - 147 - 30 - - - R=251 G=176 B=59 - RGB - PROCESS - 251 - 176 - 59 - - - R=252 G=238 B=33 - RGB - PROCESS - 252 - 238 - 33 - - - R=217 G=224 B=33 - RGB - PROCESS - 217 - 224 - 33 - - - R=140 G=198 B=63 - RGB - PROCESS - 140 - 198 - 63 - - - R=57 G=181 B=74 - RGB - PROCESS - 57 - 181 - 74 - - - R=0 G=146 B=69 - RGB - PROCESS - 0 - 146 - 69 - - - R=0 G=104 B=55 - RGB - PROCESS - 0 - 104 - 55 - - - R=34 G=181 B=115 - RGB - PROCESS - 34 - 181 - 115 - - - R=0 G=169 B=157 - RGB - PROCESS - 0 - 169 - 157 - - - R=41 G=171 B=226 - RGB - PROCESS - 41 - 171 - 226 - - - R=0 G=113 B=188 - RGB - PROCESS - 0 - 113 - 188 - - - R=46 G=49 B=146 - RGB - PROCESS - 46 - 49 - 146 - - - R=27 G=20 B=100 - RGB - PROCESS - 27 - 20 - 100 - - - R=102 G=45 B=145 - RGB - PROCESS - 102 - 45 - 145 - - - R=147 G=39 B=143 - RGB - PROCESS - 147 - 39 - 143 - - - R=158 G=0 B=93 - RGB - PROCESS - 158 - 0 - 93 - - - R=212 G=20 B=90 - RGB - PROCESS - 212 - 20 - 90 - - - R=237 G=30 B=121 - RGB - PROCESS - 237 - 30 - 121 - - - R=199 G=178 B=153 - RGB - PROCESS - 199 - 178 - 153 - - - R=153 G=134 B=117 - RGB - PROCESS - 153 - 134 - 117 - - - R=115 G=99 B=87 - RGB - PROCESS - 115 - 99 - 87 - - - R=83 G=71 B=65 - RGB - PROCESS - 83 - 71 - 65 - - - R=198 G=156 B=109 - RGB - PROCESS - 198 - 156 - 109 - - - R=166 G=124 B=82 - RGB - PROCESS - 166 - 124 - 82 - - - R=140 G=98 B=57 - RGB - PROCESS - 140 - 98 - 57 - - - R=117 G=76 B=36 - RGB - PROCESS - 117 - 76 - 36 - - - R=96 G=56 B=19 - RGB - PROCESS - 96 - 56 - 19 - - - R=66 G=33 B=11 - RGB - PROCESS - 66 - 33 - 11 - - - - - - Grises - 1 - - - - R=0 G=0 B=0 - RGB - PROCESS - 0 - 0 - 0 - - - R=26 G=26 B=26 - RGB - PROCESS - 26 - 26 - 26 - - - R=51 G=51 B=51 - RGB - PROCESS - 51 - 51 - 51 - - - R=77 G=77 B=77 - RGB - PROCESS - 77 - 77 - 77 - - - R=102 G=102 B=102 - RGB - PROCESS - 102 - 102 - 102 - - - R=128 G=128 B=128 - RGB - PROCESS - 128 - 128 - 128 - - - R=153 G=153 B=153 - RGB - PROCESS - 153 - 153 - 153 - - - R=179 G=179 B=179 - RGB - PROCESS - 179 - 179 - 179 - - - R=204 G=204 B=204 - RGB - PROCESS - 204 - 204 - 204 - - - R=230 G=230 B=230 - RGB - PROCESS - 230 - 230 - 230 - - - R=242 G=242 B=242 - RGB - PROCESS - 242 - 242 - 242 - - - - - - Grupo de colores Web - 1 - - - - R=63 G=169 B=245 - RGB - PROCESS - 63 - 169 - 245 - - - R=122 G=201 B=67 - RGB - PROCESS - 122 - 201 - 67 - - - R=255 G=147 B=30 - RGB - PROCESS - 255 - 147 - 30 - - - R=255 G=29 B=37 - RGB - PROCESS - 255 - 29 - 37 - - - R=255 G=123 B=172 - RGB - PROCESS - 255 - 123 - 172 - - - R=189 G=204 B=212 - RGB - PROCESS - 189 - 204 - 212 - - - R=247 G=245 B=235 1 - RGB - PROCESS - 247 - 245 - 235 - - - R=160 G=195 B=210 1 - RGB - PROCESS - 160 - 195 - 210 - - - - - - - Adobe PDF library 15.00 - 21.0.0 - - - - - - - - - - - - - - - - - - - - - - - - - -endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 1366.0 768.0]/Type/Page>> endobj 8 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 1366.0 768.0]/Type/Page>> endobj 9 0 obj <>/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 1366.0 768.0]/Type/Page>> endobj 15 0 obj <>stream -H夓W薾蓣W2^L缶[訂Wrl園制P嶮嗜铵9u嚖瞫剚 NUwu輟淸彌窟7on摸7符銮鲛sk 糟忼讽骣m叵O{8Z牿贩jG*t蹲??烇痃O蛍&遇鱜鈄Z=r(}/#槑篼 鲾廯G澛憇貽酲)隈G尴)4{攷汃2@$fc孎歍慣LxS慁埿 -5`(6嶯f S鵞ě懧夞TVòS&S睪JV?謑罽彼w娪e镚婃ホe$?脋β笥褜僼sMt(uw< _ 捹虬S蘧|/,'%k芴懣夲S/擬矷狙狜[;m効Y:韞lNh屴!.籺Rt霫刨葧吞9e挄.1⺁(吃$婝wτ.z$鍕2鐷敐- 鄿攙!d垹翤搸G憟戹稾8脜鷈{俘▼ps犴眵洢溥{龠霿靇錪h xk7氐厣m1Cp^D恆4∪! `M檨汫&LF~/遲r萘墶谟A0&舏q=沸M率縄暟r}舼>蛝(矶淙/称NOr]5嚎t}H1yI侊Aヵa睄禚 .晍k\w -7非4嚷*8-_陳w礜8Clz悮ビ"讉DRg{D墍<蟪0u彍/噵亚?老吵罆G!党狒劵郜pM蝛蟥810=$亟蓒弉cO~藬蓖}&﹔啺鐼獥/x嫍秎/鏧z骵別r>攐ⅴ(,~8盤广4sUT8玼!b@霦%囹:覷怽臝u侜岍,蜒(}9罃U骯]KV +标3鼸鎠滽'H撀o龏:<(鹣锝g櫞簳宜咽髋.晀嵍貣?栈倻/a%0F陰姙wJ暿糕{幤它镈fV柆淿鄗鎼q-弊.眐 趉↓?-O惩罒C2-橀q%.</4ls!W繯礇=濅+r庰絡BUp青V銢蔪}蕼艻#猃聺J攆覴眅頙v*C7砤~薲}r.H+9鷃q)/⊿籼辈7叨簾咛朸匇e{锫︻Vh塙D%V積蒝*金栏.殁{k ^玑玚 r>.屩 q鞬统`l$鈷T%磖N検蝫逨N垐;3d饨粋 - 4玒井7=X -褮1薯k$V詟閸q怍錠%祶@礨旻佳務T謨篠Fi>Mg9RYチ/z僎;H瓁hL,6¢抲M=,擝簹辦69鷍3 -f0K:Qp廷夗杧TH8B驛G72鐪L -ǚ!噸F=$dX#峍#s奿秔S掘帢呎/隚IST;t?tM6.雫d7猥淗!焙3瓋M5f豁塪嗫廤+np髊fw櫭)p氄摩嶹嶜U蘜 i (妙乨娦 -缩軉Z趫YM塖丵G-zE侈猬1偝%そI夓fQy.垀鷮~5p舐祘靺+j<WG丁)瘶*OA壜!Y灭劔緌拵摒v蟃 -t弔靎a)f)-娬払1=陽d烏故p惋棖逴n0&9蔨 喠娳珤8%4蓀頫*0鑙駄枠M 厲 謎魴t啶Fk嵩35$羓?VGM睎)乊SF7榱堷灮(A蚄瀧gr輽H3M欰N匒绒昊3p缏繫)7浜,Av旒宷$瓮堉Ub#KG"236YKB.p -7玅3歟"G滔vw迡獧1V於toK檈沵c#o6 衠`璯硗f+l`檣煖型u貣F鰚尙 t湵畫偁7 ( -膘b&抰\著?沂瑮<壏蝹脒胆尳k喦 -%0Q0K>n觅挤镃R荭瞓 OjC弤~跧(礐蹁顅MF9焒&睪抑僴|%T劧\ bR呇枹f蘅栜:肠qbt-獷0恱gp睱f)呢<俚W {+揢碁mD6瓅苭+籮矛n魞宩\3睩A*>瀈4&甂J:&惿颲皴3弘ocYp5u[,漗 5s#3沊 淛 >p度E1恀8*zH\宗|通 1 Qf 萷沪襏e烣吜鮖牄$O佃b ='_,婻〥w!裇I9魊荄g鮦娙莭 榣Q褗麣 眨譁n7Xok8z.ge猅睅釜k,蟣:_a钉*g\9饲闩爹|Y箋付爇 憾爇 鶮稜U>賱ε-蘟i-葌鲕孭Q鞽-傿:8ZZ;朗咉鵝L諡jM/dQ(氘姱闩羻瓘犁妙藷VC'蝃q炅櫰%z阐泠踺vs*礚粖:遁黳x?=鞆縩7邫煜O弁鈚鱪K!0h-灭弁8衳C埏辭_羁蝴琏磔鲰涆}麖乍u -endstream endobj 5 0 obj <> endobj 17 0 obj [/View/Design] endobj 18 0 obj <>>> endobj 16 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <>stream -H墧VipS>WzZ皙 #K^lc#蓲w巳F6`c埍p, 溹晹- K詥)厭%ekRH飺亐i圛2d拻锤詳4$窑u﹂dR)'嗶_咛谨渟蟫匡灖'  [@ -u弜旃/額-鈎n轹鱘W~6qH抁鷞)綊@昱 珃诨鉕購>嘂m韂C. /箩X萱o絳J媟L;瓼C鵎ǹz陉钷A阗ekP繄9u璳襁朦O 蕪5呛齼=扻&Zw蹔痆扨鱜綆瀠雥't鱷o9p壓xHd7de榿+癑鈽|冂躁铍kz 魩$狐撸彦襝堏峽R)穀)H$@圏 8鋚邎雡塑7bN&W(E悄婆璶j4}⒘様湌JMf>-=czf 嬚杕w滗驽;Kf篔薴顾+f蠙[Y5䝼厪-,nx囱隱泊i衮蛜x觊;w飡蟔<鼖#莮y桹+,( >u铎腮腚ZZW癸gk;?Y埚C廓奕橹 裂W7唚6|(蔹鋸辺笫伉?\=.卬~赳}?葚柪<浑鹻焹=?9x圊wp佭[" %`渶W LrH?$浫^邵TG 4厷iu:圅&砓sGG8>剄 闶I=i聘wIr漥&Q塻>G箩'嵫痣醈嵬釣pkxa&\t徎袇轩蠬鑌鐻鑔鑘瑙☆P崆?擙%ra?RX - -m -赼5t@'瑏.杈[ D:蝭`Q勦o圿焐/$哖b'Fx烡慙#绅)渷s0"*扝碊 w;d'軅釳8 像<椸5x 頯髜'q餋8览蔃[薴詙YM繌?K箱o/b坭裦雖孹,芺ckm絯.3贅在¨蘛51废8j釳7岋鶎桤絢g銶Lf癫蕕_d苗脇2kl揫3賶臻桅&#L0 -i擕両i炸┯ncS瑃-LC4綒栓aP 黅妽&撓坔鯎歑0j騮*J-t,'艼鞮ai騌Z臰;懂淟!姇4 歇@)菋蓹=焗`6Q翗窰ヒq缴dゃ儶4 飨f姼臶y:~8O降7O/L唸媿┠k朽拐"Q悬葛鎳憟+i玦 -F爰.(铊&願 -R{V-橢8讃鶗xz韭 +恲w7坥莒枈 6'.尪澳钉okM2"/8賭勄米0,佮<朻N侫9Tp(笖)椆TB廱b5K〈鰟5 }?7刎e喥)支"h'唻垑綠,0Rf齬 ⑩X潑yF!髆60:R鐾璵cqlpTh鄌 u%簩旐齤頔c膒}滸k檿黪D拟Q /4h-滦 獑鸔霿!震嘈#^8冭麫鲾:穹`p(嚰=dbn諝峁暟!m歋(r5体dZ5S8Y寙e9A0蘏k劰 淣知>撡憦咎9+Z訃#j胜y)挬8n.吽- -ε蓌s6W悘r~秳7巧qM拏2Y憢d'y`-z怑 镂菥uh龤軖6蓽FiM9f菤鰁UY.Z考c砗率眽i执D.6I熧郲鈑\4邤Tm3鋎$(晧柎d紽!弿9Kg憨8S脢曵*克悙酘斳綥熳瀁楻祉蘳=w渥'徸鑗枛d'9猻萿K命r囇Q呓a犹?x g|n豆鲩覹:q车袞`檿9c扈q:%)Q1{I~|琙o寲s徑喾ZtUT8b.鄿0?= !bC -aEv&2c&X)u48婸屳g四+cR偯ㄖ淩栓)3r廵S愌2I4*E ?)缛仳g椲g劓,}lnqsU姊畗嶑)&璳郐為[-枛罹媔 諘&渐4+涯蚘窟S`''蒠vp恚zc歂闃讗眪ieJ壨H朴KVR[ +o.P甝:⿶F8﹍"qq孥Y`彤g釲穋汩瘠jRvE榜壱T胐邾贬&{"b灕葨N'湋嶤R$捪挀 9UK籎胍+甗ql掀B┙5磙沠#9.蓺歎SLU鎎快WmLSW~=鬓栚5)/璙:皞\Fビ娯 - X莃b楅稑-3佴戩呔矕-硕杕㘚(榚&2,贻sJ它妷圻輷'稃渟抻<鐬觭玘h^筌修 6>誸酎x髿螕烋⒅顔燠搖給UI&渀_窑"尜堳,蘶訊鲜珨B3R椆6鞷Z$W鹏籚-"u8D蛛.驻'峮陕ISi巠d暆搸燕p\末矦獯^〝琘沿.顶#=膊TH炸`/Se*-bi寯垡'矹軙蒑鹴攀=鲷I唬暐e派<7 捼佥[r舅纬勬ja~23塛J+6粵捧6資謟危緭w?=瞴%蔀_\*{Z瞡cm%gK象滴W微覛ⅳen}myZF#鸑(w3Ib嬢櫿-蛵;Qn蓔baE3=艦j)/榐莺zQ7遈鸍璴2橴灃 )#勇$&絴C}UeF*--\钬敺~鞡*W妾茣叆曊鵿f^Nvj鹝5K\z蛐p嘴8=篌雥R筑Ay尕嚪橨X脅*Y杻氥梖&钒~脅[盝s7肽s潩忂猘鞁 屟,M櫑╛鶗%?M(c琕毖:箓4厮挓錻蘖t+"鮅/致;煛m細JJ>谌驣C]e:铥y鴿*魿龈be峭hHm2f羿7}扒0畮\B欫豝轪2潗t :/^s燅节d\龛稴!o;赠恛^R- ゞ u呷茝#,O踊罢r 頄0G l攆HG*貪u^饍褺騛>*|溏聕u鋠V'i茦@.鳦璺皴b|溺蕊裃y歁!濢 hp搰0譳扢墥nb碮f琝铃Wf.顑:xT幰45H譎鑯橭S1轴)溥涂期,B幮X瀈螶Qr<q闡r葝 呣B雵! _t1齧瘪 纯驘%纯 -1焤=&鰾淓 ;4殙a=X@箑/諱G鹻亡疝X麪s8[屆 疶m淣拹[骒{#.駷埖R ->07←膯8諭茥縅5矎鮿w{"?D!@搣屧<佨泚O剥W>1缤wh贒暹龋k嫃~X鉩晄蓵(<蜩;儻欒}扞溕5酚 ms'蹶賡癥_嗊鱑饩@O&c嵡}Fv%Jf9q煋-嶜2鼏腐翺宑&鯾磬蠿胺g邎骅\J耸唇c趆 p挎矧 梙5Z 偅伄o笾謟彸蛇氽蒇9鴋毎Z锇孀F傼?丕 v啕KTK儤zh嵿怂並蜶X昍奆{袰堌妲.`啯瑔鶴椿幈瑘盷栝j+礡=y菼M軥'苖A:垜鼒yt襷?譧嘽s覑y06&茶C z>j䙡 3貉!8f沅 洓vD{-R:w鋰S奂釋8《馨阬逜aE s'琷u撌b#&A娿 b*姄$砿柊%lC_rFx(枣櫍驚璄s4Y,G 毇IA囦9 -氣湥i牘9 蝡-a -endstream endobj 13 0 obj <> endobj 12 0 obj [/ICCBased 21 0 R] endobj 21 0 obj <>stream -H塨``2ptqre``韧+) -rwR垐孯`?侠评壣> v^~^*鴙崄D_檯)p%?@l敀Z溙览hdg棗"I賎($>d螗C豔@$ 圿慅>蘤a藔% {滙 *23J ---S驌R+婯Rs<髵髬 -驄KRSj!A圔P坕5Zh掕o昼@p2姖A!@riQ斏萪L槒0cR?1揯: 黃bj  榔O -endstream endobj 11 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <>stream -%!PS-Adobe-3.0 -%%Creator: Adobe Illustrator(R) 17.0 -%%AI8_CreatorVersion: 22.0.1 -%%For: (Cony Sinner) () -%%Title: (Sin t铆tulo-1) -%%CreationDate: 1/12/2023 6:50 PM -%%Canvassize: 16383 -%%BoundingBox: 186 -1705 2595 -193 -%%HiResBoundingBox: 186 -1704.2197265625 2594.0986328125 -193.796875 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%AI5_FileFormat 13.0 -%AI12_BuildNumber: 249 -%AI3_ColorUsage: Color -%AI7_ImageSettings: 0 -%%RGBProcessColor: 0 0 0 ([Registro]) -%AI3_Cropmarks: 0 -1800 1366 -1032 -%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 -%AI3_TileBox: 261.980010986328 -1713.48001098633 1103.89999389648 -1118.52005004883 -%AI3_DocumentPreview: None -%AI5_ArtSize: 14400 14400 -%AI5_RulerUnits: 6 -%AI9_ColorModel: 1 -%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 -%AI5_TargetResolution: 800 -%AI5_NumLayers: 1 -%AI17_Begin_Content_if_version_gt:17 1 -%AI9_OpenToView: -490 -503 0.5 1581 914 18 0 0 46 121 0 0 0 1 1 0 1 1 0 1 -%AI17_Alternate_Content -%AI9_OpenToView: -490 -503 0.5 1581 914 18 0 0 46 121 0 0 0 1 1 0 1 1 0 1 -%AI17_End_Versioned_Content -%AI5_OpenViewLayers: 7 -%%PageOrigin:283 -684 -%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 -%AI9_Flatten: 1 -%AI12_CMSettings: 00.MS -%%EndComments - -endstream endobj 24 0 obj <>stream -%%BoundingBox: 186 -1705 2595 -193 -%%HiResBoundingBox: 186 -1704.2197265625 2594.0986328125 -193.796875 -%AI7_Thumbnail: 128 80 8 -%%BeginData: 3214 Hex Bytes -%0000330000660000990000CC0033000033330033660033990033CC0033FF -%0066000066330066660066990066CC0066FF009900009933009966009999 -%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 -%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 -%3333663333993333CC3333FF3366003366333366663366993366CC3366FF -%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 -%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 -%6600666600996600CC6600FF6633006633336633666633996633CC6633FF -%6666006666336666666666996666CC6666FF669900669933669966669999 -%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 -%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF -%9933009933339933669933999933CC9933FF996600996633996666996699 -%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 -%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF -%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 -%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 -%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF -%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC -%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 -%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 -%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 -%000011111111220000002200000022222222440000004400000044444444 -%550000005500000055555555770000007700000077777777880000008800 -%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB -%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF -%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF -%524C45FD0FFFCFFD17FFCFFD3FFFA8FD7EFFA8A8A8FD15FFCAFD12FFCFFF -%FFFFCFFD51FFA8FFCFFFFFFFCFFD05FFCFFFCFFFCAFFFFFFCAFD12FFA8FF -%CFFFA8FFCFFFA8FFCAFFA8FFCFFFA8FFCAFFA8FFCAFFA8FD3FFFA8A8A8FF -%A8FFCAFFA8FFA8FFA8FFFFFFA8FFA8FFA8FFA8FFA8FD12FFCFFD0FFFCFFF -%FFFFCFFD41FFA8FFCFFFFFFFCFFD07FFCFFD05FFCAFD12FFCFFD05FFCFFF -%CFFFCFFFA8FFFFFFA8FFFFFFA8FFFFFFCFFD3FFFA8A9A8FFFFFFCAFFCAFF -%A8FFA8FFFFFFA8FFCAFFA8FFCAFFA8FD10FFCFFFFFFFCFFD0FFFCFFFFFFF -%CFFD3FFFA8FFCAFFCAFD13FFCAFD0CFFCFFFCAFFFFFFCAFFFFFFCAFFA8FF -%CAFFFFFFCAFFA8FFFFFFA8FFFFFFA8FD3BFFA8A8A8FFFFFFA8FFFFFFA8FF -%A8FFCAFFFFFFCFFFA8FFCAFFA8FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFC -%FFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFC -%FFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDE9FFA8AFFD16FFAFAFFD -%66FFAF60FD17FF60FD66FF8484FFFF84AFFFAFA9FFA8FFA8A9A8FFA8A9A8 -%FFA8A984FFA984A8FD65FFAF84FF848584FF84AFAF85A98484A9A9848485 -%A9AF848584FF84FD66FFA884A884FF848485A8FF84AF84FFFFFF84FF8484 -%AFA98484A884A8FD65FFAF84AF84FFA8AF84FFAF85A885FFFFAF85FFAF84 -%AF84A984FF84FD66FF8484A884FF858484A8FF84AF5AFFFFFF5AFFA88484 -%A9AF84A884A8FD64FF848584FF848584FFA8858485A885FFFFAF85FFAF84 -%AF848460FF8485FD64FFAFA8FFFFFF84FFFFFFA8AFA8FFA8FFFFFFA8FFAF -%AFFFAFA8AFAFFFA8FDFCFFFDEBFFCACACAFFCACACAFD08FFCAA8FD6FFFCA -%CACAFFCAFFCAFD08FFCAFD72FFA8CACAFFA8FD07FFA8FFCAFD71FFCACAFF -%FFCAFD06FFFD05CAFD70FFA1FFFFCAA8FFFFFFA8CACACAA8FFCAFFA8CACA -%FD6CFFCACAFFFFCACAFFFFCAFFCAFFCACAFFFFCACACAFD6DFFCACAFFFFCA -%CAFFA8CAFFCAA8FFCAFFFFFD04CAFFCAFD6AFFCAFFFFFFCACACAFFCAFFCA -%FFFFCACAFFCACACAFFCAFD70FFCACACAFFCAFFFFFFCACACAFFCACACAFDFC -%FFFDFCFFFDFCFFFD66FFFF -%%EndData - -endstream endobj 25 0 obj <>stream -%AI12_CompressedDatax滌巾r$菚%鵁f|囓m&崓P徇钰5kI4Q觏揞2 -0]8(攝革4O1/剁滊橦T乨懺.眬笩鏭眢/~祡}鳔隷叧i箝'鱳琪譝w骺掼蜴7o藿}哥W&薜眷w觚蹧慧_o?浳k//物n抠|qs{{}送/~蓨?<脊F畁x麈頦顥愕h驸7慰饟淈4m>峮购折7/o取^茌交}}s铑酷j蜎_2O-嶙涍_=yc<螽烻鰖&濵喃篥鳼i箹腣.頭禁犏鲠篼籛護邽呓够往7W窙運}墯?_縴s黠涊洬W秪骝铞鱺~蹶嫦7諹拷緙} 巯宜藳7睡6.h喾9r黝嫱脒钧闛f洰嚄暄撷+柞蝌朝p閶雵|=蕖镏邅*盔椷_y凒钧峡淸娇銚:M鐺骛M流{䅟護0q踈/詧7悖tO瞵=浊3傁屻R8间6鼊趓-握充)MS琙lt櫆肟轡7拷唤睿附M岇=郢~钔觚oo8鯵讱 鉶頭_苛K梠4z*n鵲裤W鱛^?`澼統鳡鞵荹0Up跬5W5枋迄锖}@痏撄_m近蜥桩酐谒遾}}麌'*6藹毬f聵篢荭箞惮文紂迧蹇+穙o1M髃w靜_快狷趿{掁梅蘡Q?勤 阕締童r峿冼碗e咯 K鐨煔o辖音S2,\閮勯婪/弛S淤o距玎锞釰|+昴Y艶{s鱡痌⺁歺黪匂饪净{竳運oZ~皴_1圊毗蔟v荽恒OWo痏+蹑之峻揮葫 ^怩諚_^喵P庹=渡熯\__?钶郢圩/緓uuwK谍纡/~非NI6/=龓国嗣x蔼?矫諊追撖迮鮓膪雓4鲻瑗鲳蒗嬜w 骕}砼?烤咕枯紉+ G/^交靠緘 /⺶鱫追祍咕橈耜铍oz涽|晚-/嬲諞刍肟\呔衙儻_|u鯅萋癰抆| 鎳'呓}耩飛o遖衝铑_<z黸蹶菝鯆a搫忽鎋簙}箧Z聗O燙_]絵躅峼T++牖珄<胈r蹑霄巭耥+VMm韻壅lnm|枫敕鼆埤嬻迏{=㧏瘒咽~貘~<鳈蒗櫧獬=煃{y馵忘鴿=鸹砍>齨<髡77_岿媾镛踞汎泓A磭竮鴱悌妒?甜K眄+{裾=W誛+ 钦鯆W髉\坫字0毢陷豜7v淄7銥k 黔金蝞繘鹴穤喈2瀧}笞^傲xg従7;柘获7V隣柳f军'峂殄迋_0V晨}uG耒讻棾惐6鸥鷅T螬Z須圬均zf捌损葡19魁Zu蹂鏾蕖蝻镲迃頍癃_榎鶑庄 ;-哭O@D<縵冏揪捃Pb古晀踪胀卓麫 痒锄s9蟔\仓襽㘎唼躅蚠供唑O輲靵4洬郢麔*枛?莌交口軔Z\絲根胝簓>tO蟡D怆k0纗oXU=鏤@阅g#己悆F寃゜hg睑Cm駉蜥猪緊唼鏦乸拄v檯藈扸f0v遱膂 )抛箉蒂菘{麠铑L臬70荟!:懑整->淲裢W簕s篥+4蚺繂旞巛练|r箨王還=o礡怨魁莪嵶劮|忽變o伂lO~)9烔利葎g{d:搋[寅豗驥氙飓f$ 吟辿绝+悞根v:'嘞7矾駗_蓟yc緔u髡罪>掝qK矷谘奙W飃.ov冯["晚茂駇c頿轭悆 袙蔲鱖毰代煕7鱮欩厘√?~ -(^)黲滘T乖Q试P饵/Z鋙踚嚶/P蜺v觺]艽*%  *轊椥銊璬敘騙柂6T{俟s暆 -籶h懣]糊\钜霌#/+/?qU蠫烣)>疛胚s娍U Z荛U筙晑/固> %j䦅0貔蕵#9[驮N衬.梇聏M6笧%螐驮<;Is禐洓襣з軤彭jN8?*%g莊筲fb=a學骤/鉵]F3菛c=忣㤘\/"5豓复 鲢命揃DI絛暍B%KS芽泽e媟幝呦U.z俪p事e镐惍嬖aⅥg霣s阍}4/彂醁澗庍聻晨}a煻|1s蔈芮=枍隅艛SI5m.潷嫶O N3Z5芳;攱/Xt圶R)V秂W.示\b9LJ鎆jn氘^运z賖 -对衎=f孜示]b檙忖6m硕n粉箜舦拷牟u樖癒xy莸輛w净仨w{嚿 玳<煟朋z尬风惑篌嬻K,t.7!"_T捐b{亣/..椂 $cS﹞th彆虠燶鳁椮:\碶<淒暏挱hN'M脲_晪U9_曒猯J Zl梪U湿鋬扸%甁X|Z艚竷2-e甍玮牅[翋襁莳lWキJ=(eU颡黚bJX*nUV\i鯫?榭?`齭*;+骎=樝肶<溁yg阷v0#h1甮d5囥8陖磸FX銑:>cx8n5h齐p\lL督hbsY)*箺訩T)!譂鳿&Gi6縧﹍{i*禇⑼_@$曍Kt濪檈5豌N骎5OI舐贅4憝謒裩F崬觴5:;岶抛};繕_9楂.[趸Q紹_皃殷沫伻惡*@=艗赾跋;騒2傐x疖 Km廼8A輦VZ檷 測"躢z蜛姺 设#坰憥郼${买躢晡A确 =兗G恲N?a犷1ョ`[皞 C 聝Q爮X襸L9X650繸x穬攜墔w)倥-楶(-0''陡球8[#%&[vd誦溏煔/ -Q聸9]壚3骃AO9{`旙阼,濤*#胗n碠$嵉缔駋靣7终~扃yui绠栒苟焣珻~;封鲞塖鞩.去. .峅炧 ,鈷鋺珞髵滿陥]瞑C蚋璨e$I荢乤5咎-k$徬W浦妅>昴n羑幺4 岡 -ff'胙 -桠搲P矵猴祙X煻8}噼钤呚E样螡 :"l譋繩~7⒗唆>厠氨锫;6V偲zx枀:籜日B挼&Z"['堎!)!觪磿?蔉?覐娌;笑害辗搴t -:[Y晍犽鍟h%0禃壪<.固幍牺鳜汮?Z$悾J=衭缀誺U} 莨胗h莪v]n瓀纭峓I]塍Co+?h 齝 痩嘨9K?甭>興冺zY⺪Ge謡z巢g舫l磋(唏geQ鸀?+鲫D郇汥:K壋頻tw[檗VL/фkz祰/?硚?/鎦豨M钀鹅Eyf6厖毺-枅逛a8!鈡鼄a"儈#:镰e黗)墟u1l,玢鲖A%)穷^碪欓槟蝼\見^銩挳R崊R剡2C,$ 縨("y$!涭唗B$w2t呉傻2K)+籞3U.*\T共原畃I7呺 -窄$u6哗[{觸M辁T篖恝5 烹B姉T/黀鮖+_v! *丕焧5琀 "pP灭齈舦]kP迁扱)$P踭欹榿NH3轎A玆楔╤Q湟苄SW嘱R.d/茆Mj)nT莅#8?愿薔羐:n詛∽OQ2⊙eA媿)"Jh&弲.uy蓯+u椩`E<媽deM氍K -@坏詰 -宠:^a-鎏jツ>r◤k騋佮鬄Z籧吤I*y鰾\帟爆嵹W钱{h. -愫襣1}挞鷝旁羱祅W鋮Cq}q綖纝r -獇]d!]4_!夈ZA>g'卬 >粯l -譡褛胗治,B酆i玼3番瑝洽騜0A玣Y7f|xo9&矏笏8\箋跂1S寱&躶=R埚颵 籒Af瞆 &﹐刘癙暻+"51 -敻 Vh`S肾澆笗:f籁vd饁袡異I%s冣p菽*裒@%0礚鸸薾唚G蔣霻iV绚ぉ碪胁睇肆汎?摲个T喚Sl蝁麀榛浓竐,僟ze伧(T>1锬負w隢;9f澺a=_ -諡e|谹灠rV駝 -K锽\廡隦隔岝得姾 -"絗] -侐骂橋HQp郥-胊Y,L^* 艥p)溣KM馮Y灍A?瘔熥南k鈟kbm輡榡K鋠N hㄨP喖V繴⿻C)鱕箻j枼 -\嵐򶲨/m帆觴邮<饍解=j!漱) 瓟x脽岱6d酆儧腵*禺獹E暄n簶 访V轨.*乿9B5C咤_Y俠鱙昉k囀瑐 >; 1@F薅肇X3腥`F3(-7檧F桶焰繜| 怦L襮 -_%Nz3噅/懸3公UB4%鏸*GT岞R"铡釓闾 5齥05;u0脥@涤峭0#+PN, m櫓薆_q=鰓03峐ㄌ飝&女希#pt鞍辩-噠]鬚9腒=+ .座义n凮3k嵌敫划鰄譏P毙Q|(8sWn祒/钌94/^Sk鰫O韜穆识妞lZ伴羏1 璴fg沵%车dvR 蟴饋蚫eo冎 芎9[M|窔ぎ硕頹糥YLf樓4;耱 6胧u8*喫; {^; 譶5翎隊煴嵚jk膬寇陊开Y濇蓎 蓢巾敱c.:礠嫏颴 :锭l[/锤;m卾潯砜碉A鲟_C 跱艙%否魐8炱貔铙窬笱媒"⺻宀幯靐琵陭足f(n換韄Ee寗嶳rM菭_Z茀亠{萒1, -礕矸Bu1豛Y暭u\鰧cd:2dk囊垿F銌漹隃c蒚16=聗岹R迠<帮%焮竃n叁l馵续⑥}+fDe縭9g硏斞b炅l++c曛踹;菅 r2,o`動a濍=O體砽崇=J"榲n鸥"{w'"{K忛]鈟q+傋貈d H6v4fHw懠a頭噍3纚')刋$w I拡"423Fc3s靟>_伨; 繶鍤Y錤9TpU湣鋩I宣X蛓J褃彧鮢Qv維馂潸Tq|鵾怙鬪锋B勜斶a贴觪绔润^Vq鏷颀辩O趒怗Q鏧貹荠:陓k霾Ca煦槐z份鑜fh, 襇訠飶z專Q筅搠!;飇躒鵙弗啎m焮C磿/荀8!6=鑑邇s)祚q秹鉹犰澹8櫁0G拢X噺2U錚8澂8g湃[q"寺丬氍 蔩亇黡嫇Y,>皣.纝r'鞻柝e/觠W=6;  @+≦sS赖阠R-ga颣 MkgTre婙Q_k8 'D鷁jJG楔丗紦# )稖<+茹旣+鉩x坒亞3謃鷆径i3鴺澦9r(羅牘`$"铅躎菳2峭+紘^薎9$,屠蘈'et襄鯒斴皯56=jSfS蘳敟\銽0鶖痥h捧 -4q挹咽腼lg)╃藯ǒ龞娉咻譿憧烤劲 m鵦崙u唦aI厗譈p聓57(5稤uX﹪)^k彌歝l{ {8苸`囖辖>铛伳姤柂4wW,D俓汼'xA殅k懈S -暒W裰|餝瀠 ?贠Rl;算鹊vp駕吁i:M賟艇C陬暕t+z頔W歭C梤We; f,3Y,I姩33W菫夫\4偕V熀嶠价婷@ :PikLZG簙篮>閦寀h桩╣)飖 ^g焘y着:綥薝萫蟭PF廋.匸.蠯lI鳕栶䝼P斚,殚逽3芯叨鈴这A钴耲R猊粿QV鴐+S=鋾\财邨.婬nb畈yp+w顴G晌箁聂'7 绡耙 -哿>')=鼅s"Z靾飠迲畻5韼瓠K虾[h溃 Dw姼剝/∴錛(: -?溉婫e哐挫 &1]{(躀}蕼佤#枱[Z<(筭鉃)JQ鳄Zc"g蚓F15堡+j液v鼓a鏋篹芹w待瀻E檘鱿@贌蕾恴vm?瘀s鬇蓰{熀霠鬜椑h楔鞞阆堻.狊{Y"GE*'h椠箘(镼3-'Kyv㎏椴耷+瓏尿s?V撈|8F8Jc膇鬝 螘霍r膉萄F-/ ^',;3a遖v^Y挪纕礳笭渌:n蒜謑;S溈旜鐉3戕QZ婔$晊E|$裃!2;*檽8鏌N釬緳%>t 9棽*踀9?(荴襏篫A6(鶋肄[vh馛罧K箈NA嬒猴鸣熸b[滁馐$wQ絔,鹥轹楙 堬m_ 浫]\*O㈠G屫r搑"頳^󆎁櫿hTk睶X﨏氂hJ蹗瑖哊jx :宣豅 '囹濑1v狑X帅燈虆.虙滄虆\.{温洳9 G諦羃O枧蚲铂蛳'柑y *遂抇6/匂甘*{惽p3s.侃珞倴"T焴Og鐭屮g昷u呪:*2 糍觘雒妩9ed峻P=齉 --^﨤Q~(?S敓)蔊k駁婒3E鶛ⅫLQ>^婫娠辿栝w!档レCf鄈#柄孝 %xg癞烧豃櫚K=43狟葤WF遍夰+D罟|: -鱫366蓾M牭競*衲Yf柪煳k ,籙⒕鬈r訠A蒙覻瓠渏狲枼匯NA!肿??亞餌C剚<幃禟嵴俇芖#g骅剈dB{棸&蜒 9榡} 蟫绕投4洱杳|.'彻彭熖漯Q铢艁嶡)呧袔埗鋯馳W>n秬忂%價>鄟Z鶜2G玛5唠K>罾汪'乍 y住& 權F'騨焵萱么WUS`狴 =鵖疸檔萎汅U踫脨G锟-撒Y跋%=砚6氟篙羊 粋I懞hNp糬瞣焜蝤$孢^陪f謝鶿蠏 疕絤 鄿傪俇f:*KunRろ愧 吮.晵+★ 掛:荏惙d y潄u~爗烨};q漤 6鈮#娮1臹gM俽蘱烹肉*&損萄#靖7c3r,q偏ak*叻L5u"陴;苒?+{燧孕D嵄&U螚懋zpK<^篽罉秛\W|"g褿j飡摢z歏浙鬕Od=欫w^狾d囧>zv涑y*{鑹堋#虚鞉'sK蜗<慤靿@駲U灉帯]愋揰h_玷賺=U嚡玳YB7>2漬囕*祂u鰍狚A牺r恇j$XVWi"zPL?囈瘍桤 t~j嶸h眓/n}粩潥6j襼J2B驼捓&L襈琦9鹪 t标>莤⒊ t螻){4=潛<鰦;帓{領蕨#鍌N;< 8穞趸W{m齵?楜苢/-爦飸壽0汨菀渿{.`U縚N鑣阴牯蚧f噢綩vb&V灊&瀧肺騙Z鏊O?>Ч腺/钶黛輥p\栄話嚢$〇詮桊uOS4糮T4皻\瓂 (7聅,93闥p朊侢逗eB6迒堿彍 UE蓙綻SM|Y茷D棕a偣=j嫢6(qt瑣| #N畬e-`} 线P;鉕閔毣浒J鶝u薋*3"鴌 ⒂9 n>癷N莫n礞駏狌书憇 敡2)7<:U杳WNj}#jc<5菣彩JP/' JHx爔Cc%揜'赝'踪檜s"J随詥漧m柋'N雧驍轔?Y歄熛{<蔜鼫髚忥<惭}鹕oYZ鼱祻V*{溬盟l籣)]=癅t*II縈刐抧iC秙▊>K娰鶊砯*,+s( 舘9_阾糮锻逛Q杸唞豟泞螣(-灱:稽[朞?蟸噥讬骭%襕 嬶昆!KsZ蜑rSd酈J鐍:;l()╡|帿fc/au靯 o齉捽Z癁I优罳魢鍇攠"緮愍:二扃睸论邕寕矿 ㈦r嬐 唹1aS#h xYeB肪Y*偷鋙姬$曥?嬀恖 諡gv0薲 -9m{継 -,/饞0僴]e垌邽V%甁xTN,燌獱E鬓10唏幺8Q?椊异旫筞籑异懰i颩x'#鼹拀?r:猽+HYW悰嗓3E'活Z硦禸$讼耼 X楕▌'?]锈鱙 Z蟸G2芘}秜犕.促拷)pw#Ag蒻gk浆舨+鶴u贲訅晱资v逽灼戱aN`籒c;楅皽<噠# *摺锈⺮诉B嬊v銦^慆AZ|B鵣婳);V<7M〾隓腒横uZ醡w曌8嵞縏F'脻 T藋唏觿莪]M蘼]k渆~zA带斒馜$ 憎Xu1^礦u暊粹Y gZ鬁Y鴻6飻q1S熟'J鷆$頔6┴U>f% .Z剣Ew$蘡w!覸抋=x扗h騚$h6鄐禸&^嚵luケ%? Z鼥獔 -蒘!^〩臸Dv ]6昹>?c}^D桕墁芡蔨A嫳+乿bOl灰x.彃7g躷+5T@漖誝u靛Z啔[翰V*西汷-ヅ+囧憐$噀牎 卛薘^"Y#誱!-嵏#旂r怘 AK爣-溺樲л仉D锋662 !殦汏炥-'YUC詴AJ~zA鷞跌勈馜閵 -Z鸖室聛爢MGi;P怕QR靖R擉)C组硯S呂p1H朇縑莮Al莪廄Z廃Z+e頔)t榨臧!裥G5呧h臽v=常9&6ё薁枏<羍鶕蕞顣*曃麓)裉`?龌gWt!N.S辦v~A鈶|,鰭:餇O瘽翥喊夊 <憷伏媒e>銍縕6>灂鸔_鹽輽椁;3鲧L#O` 鷔迹篇9'绷`笹{柪]x:K 啬Z2鑶伔6euG鱍N踩>_dH羁鬟桗S垮Ugf0噿鲃酖槁旵p9vgx|坐WG - 鞻趡[i黣uP<悬褤錪熣A>笋W薃=齢蹁8b9т閞(X@Z绬脔D8埯yz囱W缱栾C8鯁~轏ㄘ倀媝 Y隗iBB敧)魞N艆#hp邲2湈錓?簏腆s0舷<S<節$V更8R)N禠s騞痗dKH[洫!l -a3煻m沒竫甶黤鱹钱栊諯裓;橈紘ゎz嫫ΨT僵瑴k8A醊^繰q*鸖7|哒[NK徨甧茨y?閙q訃嘜nl9~ -掍GC祪橃弥G{蟜嗾QK8奸裱MK旝盰b炥Os惂y葒⒌梞鱘昔1馐焨@雪c/虏R80 窝&$ ▊Z)毒U帣茹腕渖剣惑'昀冼徸鱓穡軚7眸0羍3z﹩f;<9楜瑅7*燒(璯燸'&牝4靑淓唎d鰡鋐[火vn贋-筽臁(脄R桧v奩摍}垌q礆]鯨講撻=D麘嫲[帿$閒g柴T秐顺-仆骮顪0@j@6gKRm)х鞑*Θg穷坝Iv%视儰zi教丧睋棇(城磗T}lt燅@硻|`塚犝鋈4綸鵼梥濷罰軷 9疪陨`囐|)yU]骗置屵hq;蔭婠驡eT.Z\N80%姬墓(^顃蛇篽衎(庇湠募皬匐a矒阖蛓蠆廉\_隴:;口a霰絟沨変靏奱顊<缂遙遟髾?冻.d怨\恁3姈撡鉻鏊E匪M}?勵2诗U宽雥O-o8{堚初逛炃瀆鵿廔刼9幔H蓥S勚'z1z躟'钠帆3$IR脠M#*尧@譯浬!宰醂B䙡}绍雪f憿隭样魺缨w农堊tpr詫+:啺專熵P9鲥<>旇鷛p窌qT)\妒{襐 -肆忝铠瀁fa=V~蜧6濫)C頇暈e刀瑅U荍[V*Ta泘师zC_@_剈&w布+蜮賆5襯嵃<@V蝞;y挏]懟烇朗⿲e渁摪椞q湏3'v漇l涡疱鵗瀷U迌C=縷鵜N梄劁侣棑)(玸,衎X曞 wPV袧s2霁-n.'m<>ゅ鴢孲?-諫)~>:NA嬮夠簣验涫廝緭 颀zU渍巪9弇墖帜C{恸貇 l?縤9 -v耥剔澟3{x簭gxy簾遣Fk濳'Wa顊辇蔨踷.2瘀'm跟:$4騿o焭堕紿褱qz珔S{揲淪廜:缙[旡華3;鸑[瓖\訣惧#'礝;宒櫓#;鮵'枴簎1z蜶=绌巗甹;悾鎩諚漚,9珬郾桕Q铌渺1`U.9?2X謼儱绫~溕zKs荢彶Y?澫(5Z|暓俥Nd殿e舷s鼶yd8al篚󪁈f夏5i4M;舞Q.IP,S粠橭G +钹鰩癠嗍诉掭~~s鹥s瘇刀a琸>穇.X葭W作房撄b粂竰}饭縴鳭F巸繅丿鐺;藖:伩銣襓m嶀肇觟鉣;5馢夡飧l頍5}g>k魨燄琳撬6抠6?沼跨 sO巁殆Jtgьz鬠皛欲kO酷y苯父y鮬sw{u玩譮亃被粄凂忼她霙嚮麠猾Wz鶉7/釛'䎱母釢祕a譣0m -ず6h甉庬渻抸yej)簮 -痺煂d{罋根+1こ)$&繮p笵Z訡謧n瞻) -悀=朢维`BUhQ嵊T囃+霗%65叙芞_裹騞轄鼒鑊C%鶌薒丰75燅s5椵#9&*輽`8.娉纝嬃 -耽{ 饺+L桌騍ImS脵f酆嘮6蕎Um善翐*皞葿F緂仗訪蝯 4ygow硅憝:V镴筠*俖F 遵vj魊 - 愆a釽bl>>嚦奱肱荓n<&况!K0駲D -*:a,裆祜虘rE343癥啾x竪砟]1皇籬V3A鳲.C罾蹽蒮盘Aq`烤抪鉚C幩麉ZjK罰雹L幹闾鰘玛紆∝e靘19|o譄°*钴磫馎'0N碫y式'$謆迪]舐61ex媲*儳姙耑@鳰渃迿眾C(xS沚幔@ɡ鞧 2v檊骡蒀膍曡憨IW#0渒,)灒m>b鸺儰菨鍢軈萫i#笿2Qめ占4h笉嚁豰○U(U ij辟6割葠5S A 鹬 =畵:篰瓄 Rh草犭;槜墂ば鬬瀸Z翔m 场賬SO边@!&炠2剗m2M"帼氷榀Bg舆fy饐棂<锧穢ac?55 s褁%A>侤Q@囱鑖適(嫜&f鳴E)zl:oX"d趾N -".顇漰赨k了 M.m}^o壺V崿酬2#/余m足<[ 沑嫗ELF脪od & >) D梆佳嵁3廵)ca绨6蠳潮Gr0胻H剿P )苁Y撧Z;諦耟%vU誗|,7 -V1*B$R匹3&c霪欳玜n帥 -w鈆d!霿^n|M*衏Up}皊衅缰"l篇H$鋺b :萍罼#%L8佇 藉窊汪蟁ys霷$预FNug豚6琱DSs>1聣ws功蔜妲ZQs鈙Pj偍/壓NQ1罡鑭e0萪Y暋72M\ $偿 -N8褶夀啁j^`膘剸BN忖劀@偹9當<佣qп藱<顰0彊虢EnX顏D8qKh魔Pd8#!nq]2VfPU-i"k!喜1J枿 A_LAV{n蒈z蚃珹=5i 竳訡 pTTyT=旚 --3f,qL&諦fe′涸囁瓷駔(魯z竖臥(蒠I1箰栈"峑#.葮'Ao濅wO矀?䴙樌睷艼j%6(坞,敘VB.] 槣剏奥8VPO衐H!w/s{`f昩4v)W)0V=&贒点軡痷- 淃鯏F{奴#4冐I釢gH潝7>慪鉋 .: -响B遐Mぺ-m稥蜓F炟6冓╗BG菧Yp*遮佅sygPB誦瑠- -/伊iSi崪4X沋噀4G%E)諕 ";衞喾哨阙伧瑦嘧G_崭`f4昫胵E"5蛓叾7O氏a发$篢 Bⅷp,1Z狈菕6h 躠貴宭b*阿錫Yb瓖鍓6摟 瞪9 ]摂AT`=驂F0*嘃衱殢喳羙寱`赴3筝崓\惹D|掵f孋嫖8煃+帗ut"uM2琿 礠qId1窰v苋l皩 OE*(es{ 蕘螜⿳b0r漞蕚@E<斟P;9 aχ]媾L*缗翧眠垧媛^樘=T0>璊汽菀蔜96>SrG*铂o ZdEal憵n玩薲冎濍鞙藞l0洯(J惹u令&5%j692v,゜ 冇a')凭a茍J~le耇祛衬赛 -9WX顯{!苼$Q蘩:廇.彅 -晞! ~kG蟖T呀祾I9d^牿t妋盀D匟)(b!a旁?G!' 鈃| F% m偟xMb鞤F祅/轏婧B咑蠥胑|鋂bZ桍j#9jm澆*牳m49攏"こ絁1;⺷ 獅EC,鑘f1'闽4x獇H管垜9匯 -詯M 縞)6氽K覢澃洧,脴毂 -3紿: 僂昳 6橺难s儉:垬ゆZ)[y谘藨t虌Z柑崫$萩騌扣珎|<车蠝菣xOouL&丿88C儾&ND+)Wh1+旟皔,<1亲彬髳G+k窇鎷(爺搱諨孵+!苵筼Q$Ⅲ31 ,辋Da 3:泚(劢Y>xRCR犌{42!y櫓竷B劳6拱Y+諯纱岩c兘┫x嘲U -f戳戄r"竛 :馅喔i7kr}1O悽%g&圊9錶巣>歬I帴5f絙%驰洅泡舗r7d -碝:V3/t鬽I}g&u鸃rOe洊 c,勓J抪.?/澨q5烚94v躹蒘Z㧏栏`qO俶qY剐)D喕"跿; 憾綪6O.D佴泻雝Gよ*m謫I蝌**劶 k鰤WA-#塓ㄋ蘸寀仫嗲锘 -% *崼)Η >0墱鸏 Pf.( 寜r鬱颐B F鸋尛S鬽6鎳j6孈恵胾婳淞 d椩澭蟕N2坥X% 懭z汝苶9撋`膓/!p禿閏雖l)8镨蕗蹳R;琰笑;鬑軄!*郇辰.Uq2{徣椛)戦t倃Dz05?!8蛷 V純f掎,r嬲莤戥搚)X蔮 揔攺 釵觴6,O ;D)O T乌R!G:p<絉 *鬘:a鱐dl侠 觕餤/6K-蔜D睌9C迋陀">罙'巹4)漝P& 鈋魛Oぅ掠盪缉co*A36檄E⊙榍膝;昩c3 -,G:GIuqG,鏍跴`时2?B恅鹕,卥鬌5:F閩gD1%3鵋B}$熰躆野樼i9桉&釩j悕$慳盉槒D纾7悝;樝UwY>旁嶸6pV 婾 伾ZG塅鴦@邠静2sZ 畅=骳R殸禫6m2}TbI*湈F)鹿< 灃R@婬5eH*@2滦kAt慠0n8" &?椯姜畻aV-mm"鴲步綒\缙晹銯E(S_91z9E!鈳樓 肄耎.D/60剓8 5潧BL哷O-戳F 'M鮽油窧犐i剫R镺t彧[鍦p 呹闄Bt1AY侁ωn犞镬M&8軸v唥冊褌;R扜"bb'垾郎'沀圣1袍"调纒俷簩圶5鸅B戮4C - :廞钞怯pR -K7'M崰>撻舎拸7[y鮢 u氐BCQ35N潵#傝h┦75鰀碐N:o嗣C+P!騽 8<榏紇粁,操L趹E8勍\T许鍻om /1霞 汔mk7姏乫L裳q+C5$PL^{@鉳1;qh夭a賔te鬮o费S娵▼!矴\o阮`葔罾迊絚m敱u圄|臵 ";w()# cJ,令xlees揧璋Gy急欃Aヌ篎u儕tX3FA |3LdH>N)輼 I钬螛錐_.u╕靲柢$$I凈魵餋7犮cX!A.`y-Ya 瞪h桤覟:4眰&耙u烟(`這a'鑈衭)*>冫#[撦帳8河(仼瓕{=M袘&JY片鑍GX<峊yv卙  fE.{匧篝餛櫒脾 `铰t堦 罧Cx珼~E0蒟K b爞 .N]":{YI眽!C湰4I吴u糩I!e:A$骮:EE]熷zVJ孧#侀Ι麠Q!弆b鴊)骃侴2搊R繤折剐zs(晵h Kz-(9訔"讍軜<$壊賃甡ぎ@鑭o#o宼6∵彙灟懤hb狐 駽/&d觱垾П|OT梃摾濙軹▲锗賂灠B喦嫸帖a%捧b! -幕2鼖歺璅R彪%曍,+)轴錣6箱pECY鸗"V挡rt睎]h蔟V{. aG4+垂!nL%X眬<*魔J糘`$=  薈塱蜞gJ5[xH鋐)e 禥fg+歏沆7R興H9VfN/,Bエa∶ g④ M敥#2jA洺敞(尀l!j哲褕 +喡芞亊}晼 G8碘dЪ孰俢硶i,4>夐 "3e8 V 宦'訬u邴8紆v犷ㄅ溊靐 -孢#7 \ 逼%F=愲 跔J+ !泄歝D#>k&sH2kLm諟RbPSAU圿b吚愆L尣酑僧2p胡3S |l熟B1Hv:頠嗞H\冰詹劈B假D贄髠XN旙!副炪c輛z%订岱辻1市\鄊|狿)5Ht]6<$Z[x灨狱眩銾x:漷U冡ok磝&夠9+1獱mD鮂m襵闑芽h\31y崚`oLL4(4圅醒y揕gF錶a冹c栀l笃蜪A8汖2Q鑿狄韤-@Fy 鹒m(覣\鴤?歺5屖&BQ1h業!韔ǖ$芝旲8']梏头`锜呐ē 隚綗rD1濶O,0q阺2嬙嘲掣Rk6e梕 甔埻l謴++肍w\賨蜡,a魗Q 隗[,SD臨j麾毘檪睏抬馐*!╥葨紷禗惹4魛 t'Y繮 -C,鎓&侚藤? 釷`%@9)f歉?T0'燴0W姏奫屾瓟yjZ2墑TAz -鶡=o 鷸<濨 (gY8v$U{7-c)-婡堵O司N躺鑨窎兊&鵗 Q岈9侾礑撷6潘Z岵塁ьLu麰5>)$鮿6 zC"茎牳碗桡:U鷀1& q偖",6巗k tsI蚫屵相<2訞l鞩葩|釓猷}鬘燤Zd插箔嫩0珓賷'&活W墳3驰鍡皑}鍒>确 //坶濂栢M=掉醭杊栖卿櫣\1瑯膆!(p4P嗩么 -玷;摰滔狙缩蒟靌碐薙麪R遲D墥@蟅X譵關B縃舭軍&唁蚡J >:h邛挄塘Ja%F-砎7V2 %Y-蔨O呀,闶) 伶HvQ)棘:錢C騌2灏酢{0皯FMU詀6鉤1齁醲巔8 眮C [澝鸅や團YF颒ゥㄎ徱%_困釔O理 D<ar '=U脲L&&情红鐚0圌D砤U)杀4糩殦~勞D髵飵V阮 -篺U琉 U8韢Z+|5霤誧 1怈).摠DN|嶁q⑤殠O膴at鍻!嚻u&3yH1l螖fo$諓+CTl2蚔1,5衒'_$ 踖剣 -,#_3崜廷u馐UTdB漓kOM鶎4 -酫8(oO"LC睅$y諏|= 櫈榝6P`* aVo蘾P曐a_讛侒璜璄yitQ|8B{v| 儸撊J:+蒧荑!咃允:w4褷㈠"塬塲嶃Ff ND⿲K#觸P出玤󺲦曮热 琤;仁jH&搱d -巉屖 -h遠 Z3佡c鈊纳茍醥 -暉屉%U舃9K{C7闐 Z4鈊袸 $壎n睎jK(__辅`葘挣X鉮響候F*恚C酧鲰瑫矞ㄔ泼呸肌y]鵤&ff <崔TfF<蜒馍 -)TQ(i觠M3‖t -eJ膉)鎂拇a虆*)G  -[h炬&厹10慭`鹉事耑B钂鈾Xix劫u篰Xa: 宷栐5巸3U7 * J狒樇mN岖I軰蝩{0 -|(h=XB3-1R贁H勞苐≯8括掞!"c#aMW'揕#齶6峏槸楉E蠖*`Z9*$/7贔%漰櫴 薧換3GAM2|綒I+顕h挗洉孉5(l4+4繏h伳(礵蒂5CA椥dV榚7 I[F賫m泗 \)I;鎽OP鰺j)萲S3藌9;&*繍B濆p%_ ;:z硡:+izP/^d)s鈵$%TH=覦% 崿 砇匬9 #d舙設 hnd掯挄YrZ矏=T0)侈#葏險B乭氞l(H1膭n①l趫 fr兾犴1KU崒) 員1t蹼f,2裒崈碭Χ_S詎圠昬&朚t,F -筝9=N姀k赭rEP蝲5鉚 Zh;>忽X卛$^v銏>錏OY) -Jb祾丳!7(* -e|n瓆!豗QjO鞈栨魩啼UY 鐚4^ZN8欞E{f睝⿴宍<猉k 蘣财w' -Q絀k艏1Z鸂.知赞⑩馾*~R譡躢铸釽 靪X】芗狺骣送/v豁玏锞菝o~湯頱壬孎埬YG#藞\5sb3NjQ粛!Bt 73 扸)蔡鮿 #Y葾 謈f箲蓶楨$蝘"溱〥 豰镇^9閹#魓簽*d褰r]擴<輈唾5l8D)"墿 J12鼳≡@髣>姌)&蛡3oB+幉I忤.砱媤y<}蜇S媕B吷)BI]笁G枡Hn▎欐* G旯讱霗蘸涧(X挼剷衿h梲幅EiJ$撗QB 壡糒A﹫F癓稩;P1嗝CG蕣W枧n鍮UF睱h<駟﹥蹊妯ヤ萤猡偌#Y-蠔輯鎷祙Gお;zC&S15茍秊)8垔F J2'S唬胩 B3打日{裋2垢d払,醨蒣啝R晱喒P +k*蕅兗輮叡睟q菭+揟戁H-J*(zBF曆烉倌05X+嗂Se5%&\*婒X呩婄莇涋墄\旅 Z0wB峀)0@9鋮辡:Z%稒FF=eR温S鞩C淳- 笴Ua)(V,n )6*(瓲,*视H\#朊dx#8D@YE鵷旯: -!処pC起0zI6鈎'濔^򌜛#)钞Qb☆@莾6△O)}V鍮 P\X些cA壍"(=羑臫{层榿I( 8泌膸&颟A&bm櫫寀茊㎝z萌b鴲溊3 - 駁E艓\宔蕯冓Hu犂#J餈J -頙孳 熸{{湘鼧潔Yo幠燊h蘍.捞: -(0  -扑Jw堬ёCE鱡8DN,*&6惆J嶿谋汚節茻睹 YBΒ7S<1螻閌Wj< 澰溫'嬜汋F桑Bm"`εV駹D テC6J鄯愧俌Di``灉Zz^4獅4ν"襝$痛鄰姦蟆庼<肗=`璉彫 >*=!摻刖=&摡凫(吱唷@JP猇/>F螾E哺;鎄"C|b1縍鋒尹j3)躛楦饯?> ?,牂喞敯W抃虞:UPj萌C颺 宠PB擋Hb晾棘`咞4d9謗nU - nO 蔳V灎00J櫲鮻,杲礵IG侼毼d5N^X蝻┿扂咝@镺鲖ч廣郷荡迸Y&瘎D1芳彛E阷曕Z惼\椙-TQjJdu;恨,觬o戆&胣x酙&{@&“滺xK魃櫢螧Y矻棇"D}蛦jΣ昭騜>俰厤Sc纖貺$$.;裂Z蠸r Ⅵ93糸亼TdA89﹪I先ね<騸RcT u葙闥i*al絹Fgr銱 -yc潣24 係; r 鑞皩iX"殀-6鮕!(uq灈3df*/v%^凘,困Bc畍s3D"v 疜7W>2!q韑--餛猟J*⿲鷽鐲躄.P8疽揧髮梘E\ '^Wbs玴 -v%&幈pAI慚V<摩$M\暃3>7$ZY( 謻e玥8乊O&0+訣羑搮厷旑扚_E.騴a簊&㈧bT栄q婠疚=凘=E壛B寎t虰嫪)J>籩蟅婁L:LXY -蠈dp镄R℡"蹓巠:华湰倘2+0鮕!勭Xr鯂@)唭枮鼦^ivA罘诜s8k孺3傆y詷滚W鵘圈Et惨uk灘l笽⑽[3嗰-X儙h舃圣Ezh&;忦啠J聖玚肆-(#(鼨g坲 55栤u顣M筗$0EC -F C;7/鏄Cvz揲lk'KZ -XL(L -Ⅴ0uX;蚵'x1;gf(L,P撲FZN愬槞Y仐涠:8;剼x7喦Z c 3a藭褞t 撡訧衭2S+b塇{z0J稪(4刏 %x T壟夋7c9訦/浲Oμ ~e蝣筨褚瓐锎<6鐕-9嵆3 kr'顮Y埩x凧鶃|[<自1Jw/F歜檣缆匰遼丶蝰-;J cl*A>Y綛,艟8P cs:2%趉&W敤"t弳Qf JV獑#gK霳5Y6(f#皘$ +开=籙)鱥鱯D#9闪f瞿#場M,m,誩衏G_S(矀9萒A3]揳>"庁v6.G璯4蛞瀸p态募瞴t*抁鬢uK檓虜c"W漨巡W耆S=hh矜 囱b倰*鞆虳嵝懱(腿簦疛 脯 寇痋婔:a跶6訩蟰塉廽cdq輎N焼ir瞿騫t積爽樯倐蘥Y绿+ 阝l蕁5僫ez4IUvt=俗UC}擓摤 -娫3雹0y鵄槂:延'2褊貱"V\儑WG+葒蝲,刴禐DJ\墏@G蒳搚,3c($恃0殝檬膓 *螮UEP傾L蘜8 殧PE4G槽崫 0休盋3貯騣2辫y侤{摔 襆疉М捳 煩}麔!TB挜~Q,7袹琁qIdHo_P扽骆阪W駫寥al -妯鬒薘h仈錮9摇訏侦%r T)uX+?# 1Z登`z>b8D瞚 'S!孀兎银謟淘,M 3i)玡"!fJ勭,'(BwL m琒崑R=眰 # -c喘Vy.停諼!T払#vd吿魦鄞 -絃軧X キ|敪:跻O 朶I藗9Bs葸N4q 姀稠硯Y6溪昍情:睓C聦祩I)聛.kf3'>G攧烓VL烉荁4s5氵钑R嵫峿マ蝅嚗k嚒垤鬌+:搫凌JU孙X冢d撒h{O隣纨怡"磘盉恲f鍹蕶奱&N麻tr硌诋Q揊(=B *5 3]嬱%嫰陭驏聒惗P巭唄确稪= 8H过倵hsT兑A境嵛匢W剱e硦!p絩w%吜 暘E褜V嶦bJ/ 穰?昩R/譨idR/栓D獡杇yO遨6T敵欣锉 "墚Z磢_efe闝>柏 -)睷y習&堤 - -只 R塸)z啒嫙$:嵐闤$) r壱/muc撡 睠P3哑f顤L9 硿槄/读襢S儲y.劋\叻R#闧c茫; 獙*)羇B仙o璔閽熞+|2┖濲vVM"W堟$]∷$Zs:眬姂u楺斊f黡:(R6+r抲轆(5W丹榝芺HG5h緍1`\.ys钪&猙急䲠棧2Xayg槪2Y逝炠γV訏鶶)w鋾鲿I\暆.[韟T寡倹z*x*1!rF7皤嬮Y挗Ey 酩勑籁卣b敶=u=+鳝眳4楅uu鐖鞰Z嬌掔yC溅E#(93"O!IG鑲yY眮瞼E`偾')档fC_瘋舽:[J7蒜觴&`衭X^粼(趆E狇拢#竚%Q圲降咍擡0>怑;檰2飃>b+0'怂a;>钞$吮瑃夿n淇r*媩&庸x峟t*齪,垫 ,8G藥瑒珮慓ar鎩栘iHH4 &n駂P=逡\!A:犎昭絶刌湐搐3譐3iA1棶煼晊oR^E!#a蚵djp ,鬜/姃彦蔮(lR栔4*:鴑8拼- f觮D2*7憱m韸捵嫂U g4rd5宇]梊x稲_塶!H,/3{勜cB羖p=,k&+FIo3'傄炟咨徢T!渞;絞累 #+恭m姃旻e悜槁蓻I砣釺FE椸噏7跾D7u#,a!r W詘刑Q-:n澄+称!D洳巂Kf琇<棙YE琢x%=惚F &1残舔臛*坞Qm蚞*樠撋!枞*iD<)Gho{:z甜髿U QU[ 鳼壄M 3鏌QO琔豟菍NdO=笻 =濒qa)菽眼+朥U腽Qo羮孰F<軋8sg %]饴J鼐洎L滻~g鑃k妉:笥蘨J菶佄1彨0 K\噅-鯴播%u紮梧涳P}GY庳zf 扎^賰C琅愑lq(RM$8蕉,R贓皳N匿﹚v槣c鯟螵q奸UsS'忾ㄦ[R岘挌;筄6朐(湏Ax!@绗Lp:騙"*渹 墙俏t[謷斨.螵=="M墸BЖK#憺桺叔褳牴L e-沌D羵魳騂蠛2斣艪葝潵8K賿奆zd蘣%-喑B囆'7(]2wzcX磀笾-峔=艡奈W-c偯C(1祌lc盫*L璠箘襏鹤b@}?bOTB;M幑f6"R}8朶6蹖袯沂,,阺椌(祑(硏m鳰=iy僁\妾uY#丣6/2憢=赐e:4R:踮蚁*曖刁F檻y旹U6~Σc嶧KUZz4珮+活"<闸⿰/p<^躌e,炛GS1冄嶍StN漼;7%> v$C^獀,摐煹's爼嶋蜋胩S6珣馉/>J#,ct廁R镰槳呍乎,歳A垆鞺醳惻r 疪*TB滜|覣5Q驩蹚軒(M珞cJ@軳状薳:+,&'n刼_B奧溒b蟢誓慳恒蟤EJ=),dv梯 <+o篟鍐鯘Lo镨V0#襺婸z嬱s輶蹳~戄埠梓瓊睋闐漋Y?个闹t馁飩/娊抬4鶂譿猾龍' -B]'▇棒轶痖,^7Tz5埤 AYJ逜/z賓ゾ狍卅嵒}3缳0镞℃Ylw-??髢j!祣錑祘鈨'蠆濨韻憻騙弾X忓鈖⿴ 诌w欗0怡;'烇 "<:H,E愇<蟾鳚 U鹌絪瞑攚姤(柽pww瀵謑△w自&$瀾 '茌搕夯f$M厔8 桟ww礨妀;?轭*肔dm瓧藲暕,礐u走棡著鮅u酌/H負;凤/忌?; 棕 qw?' 邃@5柯媷备妮[5G暖j:,泖:\E谐 -羪}熊鯓猱籡М/Odx;L6媣t諑G嫚!催x,宦9亩'劃6{龓#9v騈ZG踇Z輤u藓戈敼U[*滫]黤n尯Uz佑櫫 瓁@恿9镗v綴-pDz 嗢F柰7oV0 zS:逘is轩彰凁園c簙N豷9$诖s琤!鏐^劓矼4'+N李A4棁fdN 页mP锚鋪-G穡&.嘔Pq袖7璡勀>煇r5截鋁怪?9釐肠 嬿cS瑏 褁阔慚6硽6@3U-v*v物刯間痾涝═ ш D觵?0誀+IblVk潌7獥6M96-奾{1[];[:3慘 コ#$蛍B揆靴j4:f]姱蕛&;珖d糘蜌*雙4I7j4B_7鳄覔P>qHC1陷#駚;c0L鶏閷C/敵屲螚K虩鄁鸭茓滋%z4_掰lfM▁蒤崼x!櫕朆3豥茘胈&骫 粅浾瘠-邽簃2(鯛曮阏4If糀TV#q潏$曠憔駬圎▋M -擎岾?0甥脥G 1\U蜁辢9&6籌,Y6<n1~.祺庛憑p峯檰謨3.幮1﹑翕#e咴釱 彋R衲'鱑廛)6Y釱巪<聊E晵闩#f七!V订'}禡^蠉V4 喿凼毖赂鵒6R鴴:J"v啚鑲欈-紦k螗hS~僊盜/P极 &bV鎿 L搂隍P 蛘师~pX祅/灣 6 葍袼ASfz饪壘=遻 埃移"2e了7!城皸塠/{乖.O祲8Dx摭幡颌T6.詝襏盵铽~-7復f"裕s荑] 擌庌-周妮磱NMB7 亚丫^衃毌鎨0]' .=岚颓m2;DW擙蝥P偐7堫=D1t;鱯汒揑P+U氏萛:H莢?截笽抋2 M]d穈${KyBtJ铹跇5_&辊 彦鸼;瓍'x)绊kZDW(Q黼絫嗿僱K [冕!巡+8h$w粑滿R)⿶悲?躖g鷑yo瑝衹呆浿qI涂衘,唕$)郘Z=U樵醺1鎓)漅%紏h5匄G謵@衘肬擭l0h6乂瞨譎鎿@<:恥Z鞥爑{&g#嵮kぜq -$S> 葈O)a短/谢薃惺K2lAF倴K%緒,=囋)Z鍶铕致A昌Wu[0m 5嶖D裫+嶥艽bX(蕄eM+ 癠瑦 聿2駷=P磍賤H淯奦槓X<6(崐Zn'奦:薽IE爃縼呇3f&-肊拄j2W烲ZM(毆/*'驨騐A:'&vE\灃璝"烏衖]j錹i裲:m1a<〈|<耸垦 フ.Ylκ顯i礱H鎶n髢ND朵ě 譴:-鷝摬:-.忓摹譕|衖*'.峰i搙毺PW/я4璐诶匚唡'χ[櫠涔7*rTi7献躉煼<鎿R螑藆樶mJ瓆 饞@鏟应圆 -橸恕胆I⿻狡錃Sz[&c志蝡 @R浤訡讓k'%瘶3加佌蚬z婖y朰欇#鮵优= V珝5Hi矵墄d鷤躁浒檁-pI3ぶ暣蓵碶/H-素~o嘡脞+奵? 礪<没阞a誶鳉朳.;誖1.|痐阇饈鉰i閫f欸}醞i7h罶麔玌嬆聎礖3W玣⒃缘$呵䦛━黤膐梗嬖r7e銢S碫岧蚙u<0娗獣癬s@-;NEトko蓳爾[:2RGu邕j╄7)暜jy玒兂岆",jaF/允)D +t釤ZZx撙7@H2%地 P洭朴鞒,>礿1m|jf犼-ε,怛凷Up@-圦sa0_Z稡)k,in@9fS約樯дFVK餴9 蔏n鶓\躔i 偖R -俭i>碎j盗覫頵:刏o@鞻{j9空#UN#`蹌Zu學9`ZfZ阻3 嶭U筢袹礵悂嗖 愑 姈Q_BG梓剜傥樁悟醗 --(䲠聏Y3眗z鰆A袉"aYm鳶詢wtl'.蜊蔾繽Gw+婈槛g->忐麧{> >煸荟zVJ亝蚘苡HX鎡 胞飛鲭,惎朦跕疚KI箇蝎瑰z潓V+sQXW4峚UJdw覾'損闀j]縂 埻nQM笐璛螔9怹吋/@N鮬Y 鞘嚰浡蔬 綣覙x鋬笿襒狻`畳&就}kUi銣瀳U/滬&奟B股狢ojUA宼9:灰 詞皓潉yj> \) 緝hp3R%4揤O, 6齉2 -W,'U+E昹倃;7s (V鏬踞v H匤e滯b}xo-厱溱琌菇J>Z鑚鷵跎VY -G恡焟支桛Lv忠_eS铷Où脌8闟2uhC;頎> H]卣 跎榶K拪_fI跎犂&|犮賧= 伆V踐O澓蛀艓飑I攂敇粗{jル枅㈠鲈躨╞孶Y=`O6 -瞵)P{z簲c捍岙LT謪輎愆 濷V恸O揣嬖MF珒闽9, =f玏樓H[窕i贌g骣9锭扨S謺U#醿愆璊AK7苡)潰B O%敤"?貫奺棪8胪闽1.gf=o|>夢2 擩;H席幸Fz捯戓3斟/Η抁註琯&窓炡燺/躑:LOmP鰌]*#i灹櫭fz:盌秵鮊飮)贋(O"魩瓹h 敡bV萲氽覣y*8 4$孇Dy~M濠桾a穭S聥彘E覉E鼠噸!$)舯艜A驍-m--食萐5+訰3 *k)挛閫<s?A灙Ci*絜緼炂吩婪鋞H<奞0L4|<).i<聃纏 濼W軴n'Jq塇By罿刄t*c缞t@BOHБ瘦羉[W0k:怠'びV挥x 觶*x莅N潝VRL[:旴j尹WjmjF$h!堚訬P奂c; 愃(h#d)怤暦[曾bs獯Q顲HTF:DNp舫-邳6蒈G韦涪%ǎH掙<""盎6盀D齹;騵I #隺炢峳腖j"}'8奚(讘z^#鮞L糉> 捖 *伎_tF -嗳0緾U)宗a1廾麦峘滹}爟`T牿襷a蚥 俼鏥7y踵<亱试.扬肶紘^憒矞X饂 X躻~/擬O5区獨趐怄+j氪犲_1夓&G p掎+*┡錼~P^燛禕GR玻%T肳j庎徦>6川 -褤祵始c愸u .册B溑9/悑*%D冂乗d鲨闍$d帞u!e2 溻棊顏\攒欎p'Ve稰烣炂澂 皽{穹s馱澉锾^讥狮週幁貑|蒁鞡鉾锯2駸眾詿J竖ISd ?!婌忚邢霥y鐢悏:絣e貎tɡ4L藙餑Rs鍥B帬 癦箬9睰饶o ;;Q+*I鈿鄩 -钄熖DE)d&飋﨑4Tl=罿yH郹f.Aq戧暔EU0i觖 &">P壆鰺飦k|0誦tn鲝槈诒< 嬮蚅皂c6欨儤2G埅 71褳aL^蒳旵L斺F蕮槰'0619g9腄6d敮廠郹缫0ek樔9>缐reEB幃嶺'ZZ萯\*,E野16?2昱# O蠷_E6Xm9-]E悍弭/劉母燩噤7BQが me#祷z?蓧Hd$t苤儨(xM<疔A' 轁萿邽鐳粭椒6:QuIp|4DTr#昞{酹#Ad飔d獐1e栢2ㄏ(挋A楏Qdk叝肿|SΙ(b.mribA G\8(葒bQ璋g;0E6\t`,Y-Θ  澼(gt゜A扁0E[劉雎[暑d^扭"N:日<E 鲉9鸄( -郉iI%+柼'7 .N2盁昴s臊'舱'E莮湗d淄o:'j兇k-3訐浫篇攵p⒕ 季5R>郉潃择騋/Or"2!峵d/餜掬D炍淌爟x熴 6怏胮邡鞝 胛O敷;Cv&w8mu跄釫E嘙3y況H稍nH穸:q 稍恦墼楷驃馜蜥C襃讒[H>WH》,蚍,7.8“抶 搻Rvv敽)訓_干@礎"P圇隥3且&(儏-,偾& -F垢A侤p?偉X焥竵詴Sit鴢作 銼*X娒X曭A,逢D輩?1梃>Uo羮授苠堬*岡#dn姛s+WXU寨_>虖薧4颔[^祽轘;>-氾⒉鳓9纗`*4>礋銿6剰/鐑紾忷晬蹸J7杕 !鹚鮜貘槠轳灺N]p撦愔IUS鮠2漫毲從錫瞅z"盕迡慓波茡蠣<墎zX>0x]豉|鑧鄞lC飠">Xw E 妮q -瞉 淮賻 -①h 痈嘭態び}嚯 -4,曾m邌5U'q踙:?1藏D:帞y佽猨姿嵯1嬑V+鮺骆$/6G椼*饇=榬|H{充@%9Bn埏nrc_8㩳Y 苢IX璴P\! @\ s拓h-噛 树@谎I賐>7$F}<o9& 鹌遡雒u鉶\,<穃m妚0n5 盂:狘ざ懍邻Tp躝6 g{①謬 -l;櫐溎8$6"銊$禰~v`|zq阻翁1|铆5gje-艠p甸2[庭涕 咋炴vHj寶5LQxnn趖iu幸ε4雲m勈7坔9孏濪磶/鑭佇T2跗?搧`C,鮁;笕rg尹镹硷6趯鏥< 欼(\>@f懦 01zon橪芞}馐P襓橮"汳喠菚>賒詚恉?畍HdZ42莤.9O弐萩dL$,奕盞瀃瀫緲c侄鵖=|`lr0凭ζ7}牮馀C肚#磻b蹍{撃衑╲ Fh)宙哸牌tv懵Z<(atP M陇饚鸹 鴞X琐x0/7鳮ń>y_-湏v 縧z膷槁4/ㄗLG澹 囪:9 O_Rrj.﨨朚懻鄡K謨覧聫裶愎0* A+駙q烷暳唓5_ .渞硧沖3vb軱G鰢}篎f扶兄䅟蟮F屆洀E駣奷遡Z敒HN87lv柱櫟?埭,伮鎪YI 砩泞䥺轥惆鹚飗IP輮s~炉鳳獧`^ iS!Z瘿闀&飫儹3Tozt1eY嚵锡歸d%u$秖U蟭pUDk<(U 詛萤$1釰">閪皑馞P蚷;/蛟7骻浯T -噯B~悭洼*S90E胰!E;3:J^b攑a齹趽r綹X(I叐>iP3V?C牔]翱蠴鱚}熶S咽oPO鈾褍鹉o竅;Qk.飽罭5Hf]颷 肙層k?褯磇V鬯m$宇R&jM0&邞/犚ㄡ8# >窉W9,_^旪 ]翨絷闆$o仰bi.駻V2唊―倜e炅QZ  熢昐I啉鈸焧6擽殸悦 a锚YqyI挓阫$姽7+擳o慌GQ&o焁$U/Fl喣-oJ塋穄>Hun"N鱯?廧虬:BF嘘媜$]鸢]7A k脥5也3Zx$dHGf壟@ 鷢誰弩膱E#?皨*q庺( %.酀TT辰垻嘚Q鋎鲖L97>蒁/拤炔侻':迨莤囇\#謂僓柽hf 雎蟆誳kRW"r屎T-n爮绷芌赑t4覜歟=` fW桰i啴kM$SヘI衄9$[喜L橠K ^ -挊眺譚鐨G 論漢u0@p熔剼&va`勒榖 P8\壺6B拡7棑姹牂h誔苷o-畻479 -:y睺沩WWRrK@H#べ@齭2G瓦讄孲曊郙湚 *軔33霻-烬邟H版g:泿4L褒1剅椴┏H红E朗S堃贂覓t7!秜魦煍,)=劼(狀馍5幆煞梽`獝桸@碷N悡i昊 -:]颳笲紈);粚 瘙瘌g9s齃jE苲/侇d怖)6綼诃!淗8+Q 槓 缭_> lK沇&鶜蓆→^罚` F7J照_銴6頸 C*聐岊责际x 9[Y緼排"烀宂蛒+5鉅耂D櫞 ∠y辭峕熥脣阎┉骳懂踌<覒戉s鋳3Ea脏V魴~L(G;R軅e*-诒傟J1pΜ榟6xP+!Z輪"烶oXk悛*m.c硲褄赗嵾1轴齲k9<1醓"玌3 逯誢3*畍藸舟Z*)曷牶皘╨嵉B緈@濎SQ庬辵书旰捛箈纴襑穏Y潽.L Y;渞鰛趀破鱼譎F~=/筕脞勷惐 !煤M赚b闝K3鮁 磈憈裵z摊w跹Ky7淺玽膞H嬈 E釶1螧iA 村脆恭$篣^鏟D*縵遼锡欵@o黬p[熓|湆60 *亯T檽)k 妔d$2e薹g倒T0蔰R州▁`j4敪拈;:k,qhF(}=唽鄑赡陰裃E8x哉,_裬K}繗本袔$X-.苌)0 #晴4塈〗暑缾Z義フP&4騷腠擎#o#I/nJモ谺幛l纗蟦x粎+9茗Qz?騒Jo3港吞逭K壹D婥诡S廫-.; a8s椇}Kaα鯡蕻4{喽GE~uu6g']:籸塰C27畐挑G惇羑拰q针虴v玊,k々龍蒃 毑 -V *M<-埦&逾d匏)tS#YS8繜y鹯矣>!7Fq猬耸 -Oi櫨4熾ロidl樤*崭@{W吴氜OE?|沐竛|须v,,B>佭4觹:鬇啢槤~2E缯o q=i悬眬嘃檛讬嗤譶赁螗~{疞朐Jy點q靂荈(踮-vL1坏镉B嵬X齓t鰲;{\}戭笯T&缕^ Lx㈨`“8^魣?郶髒剠喩併夎_@磮Qx輵*眮#郰馬祒└I劘 砖蟅穗莌|绳5 5Yot浴辱\y\笭*t2k宅E嗜.]X-趒ⅵ賲鷼%iケ歶*=5唈懫&>礃3箙L繖cR芥d⒍玶夆!ⅥZ$!" -)v%兤7盡牫覺Tl肛姈{翦鶱%>榯d;Lr1d瘾@憵丮+捺 QP仓坘捂i'娴73鮮瓄Z靄_幼!S,秺=圚揳 P幌锑~瞆P衡 推:歶馆b照Lt乶厅kmX削坹'^3緵e貧馝F6[S汝字8Qv皋澺z博%?3O祁遲L鲓邯t镬?5w毄M,澽zuUYN鉨苍b1;o尪5;T*纽3 YD;劘鈄 漙& 羅\漍翅 -x輈屾q2诅幷3zvgU噂稛9韭嵧宵灸蔽.蒇忩 #壕煟2T鰌<TK@1%1!%x4n3,8Q -i9袲鳙(%N极咞踱z7t軝]g膤彉攜P9Xo 邴悉亝稼t]{,B杉0Mヅ'N碹B?/涨婙N辋靣歡{烩s;閾证换"$ ^癗H瑅幤徼挗礛駃伱1孹湰穼YUZ2I v曓巎^-Y12j=ㄍ>紱i嵈歒z@3I;碵+P0H蓑1&酉&\堞椞]峺瓭oA呠;娾# 潳吷X$愤E/-X也 -R.}3q2K%靤*僕8w俀湞lPG貭_J>墺迺H樱鐨\櫝嵬覛"筬! 晼Sㄆ祠浫)A,%<:}.wU4Oq縕a6C“k[$崅 浈褋.>.?b諤珢栿J5鞧u愦H(,阣煪濼轉.%;眶,K藵-4鉢7 -州)1t/蝂3YV時竀H︻詁Z棙茐掏B俓顏dN笽E岯5ァ圔葆念h鮯窞l,OF鏴b毶J;_qVt壶壂殯E料 T)N(Q訞遁e刃XV塘&~3:唋2);睖兄﹝>渲鱫奤W嬚 蛋}saVW}鯝>掔[kд:]簫F,糺縺* 旬鐁;.蓻俀 i"& -8$Q(1]7蘘殄昄30傹乀矴Z9#訝㎡#淧訞u"鹨R長e蚸AT_-cnぉN筗3\:扉E_麝rv%)qf鬤濥 ^紊fx k 蟔唴V[劉蹪-匮Zl譑N,*烘掝:ks玧/ 瀡$=bd:$?*撝\裃N港.霈釰$虤煃魲|銀%鯫)].駐Wh価循燿:ogkG9v$蓫饮BXts>湎H遛>跫纚D 挃R,:码救 ]N 穟獷熣U -砇>#鶎0鮁6壗b爼k滦盝媹蒄癌|"zw昋a边_ =xn/逶訆m<顾!)W枿`甐< -鱲n供dkF9厕+植毄璱~9覉X亨 M1kZi4#m3璠$y琲m 邦lX'绲勓k襆F糘赠$(\c摿v%x斘!.穎耼q{罬樹獅$K.筏.~.~宠LNY鞭四断.裺>[腿橨;+酓鵂膈2萘L:摔淐^+婋{{魶a亐錵/祜-爓$氜9e新#q檄x钜(cd毼 v軙涵?tfx吵X襘( 瘁謭+^尾噶颐玃\B問"M仩2W昔#^F=Y踜斗殨滭G;$9欜;U|晸nT r撵炀鑁琕s躛g鍯婷盹矍釖/慬T伬謂鯉v蟘圧HE?!2^i栜=兾Z舝?戝(0P張埪CZX#ORU寑漏茤w欈 sfv酝A圖 -aw*婎蔢F<好`} _4k8蒊Da`%),4嗱謰叾谁lYO綐Z佢y [咮銳癔o,g%穜SK4c/擺殣栰磄j~&E h稉0T*0簒9W餽n髂矢胛雈∟惻85雸<嫕z笎(驓_/%鲓但 Kw =O7棃呋嶾新赝乃笢(暮=x c1艀s骅睠璤潅L霻盟tm=5递殨3a 櫸\tj}?[moY骑bk紓燪0莦訩 K憇2∮P*杣蠐薙 71[秘Hr青膠鞏!:$繽U褞,T!忥 'g犚盹嘉岍{*]饟绣,轺V刾躪$:覻嶻ゼY~L宪忇谙 +獨话#-P1晤R志p籶85c*qM7执邡伬@ef,穚} b瀢峡诇点U艴薜5(dd鴓澥E鮒8$*k?荨N,ˊ22煨鮍欄愇j缾Z&楖8盪c矊蘢|谈諼峋7*胖豱c焯 -紇"︸U瀗饨初d毉鎜 ぶj仦裧樷s 匐s0Y 嬲"'兾 产鯩Gp 伆K档K鋃Tj8宴姼髆豉L^*Y$朓Qn ∧2裚蹹玝鷀GsnX-6?路块 {Bk枓EE⿳润旮反焒rC_蛨S钮-:2鞨Vj1T⺈猥I碢鞫倠歒 EuO9T鬈4+=潙擃7 [ i+孈詑.瀗罝樳棹疝=m/ 抴"褐X絟?Z堉K 芨l&战蜩?詈M 礯{溦擳o[綜'唌昫<橜{痀 軭苽弝zU|;簛諅k>@o罘z鐘p5馝屠惈 詋LJ渂,墦*LP庝.k/=U"羟鍥1{奆by畂 鲝2矖娪^稊z,曉聖}@>H -v嬱﨤塡Q$碌缔!F%V唸烆uC莈迷8rm澔宨沍(覼5>j喥G黁嫻j* o睢蠹;$z貆 -6P>GBAwd玥P璭#t!AT婣9T凡v詯34Cd剑<p"`墰,刈>/q絔澤觋:EY鳜S9叉蟯酜跃$蠃奺亇hu藦R殺甎Z;k红]┾dn#秷n迶A$-: u怈戌榥駓緶氾q踎"痶YG@;:)x"8n 1蔣 职=Z鋒qT~!癣V| 糗1'5!Y蔦舔B涪簾M魴諌!嬰*镩兆-R匊,T椇.l余统僚bt 7oO%YYaJ8(毈*姎飍os= W摂柏vzM挦闊-$秌愇n黧r栾[<臰厍惦 iF?B3g実滨9g勆s柀I謳,磬-z衁k0磴R,p栃_扸[骒胧\(Q{e肠奣酛Rz+姫塜譴7U0f%宑腱忣鎣.i蜋妘琟 -^謓堧'2T%!邌玨(危U傌\nV-膧S转〨6﹌ 4揫d0pΥaNV畭}3擀;V砫S fy澝e h夁盀ULA"y兾em笌M藕曘棄Hq灢綫D[ #,醳w齲3Y名熞I虰餙畧蟱杅似S$eKh朿G缷hA噘刈L囋々卭脯 -橦鮙Б璍峪~n>翫琔Ib0sZ諸寙沍pu樋蛋4儦#TG銱6鷃<讚: 荆P/S鳹Z#饹j番剨覍\县艕_mD&@x墣5,+<!敳讄詗P.E封3Ne%e1潗<壎抟&絕曱}暒If恝亜銾 ([SKso婥F閛 譎驰]lD槞Ub Q譲0糿cV 芺礟Z龜.焞oU>R柴魖y拄螄峦Y {;\~舤 -=徯>璀h'憈ゎ垜J俄褮靿;蘧!#砧D'関湿BjZ9=p\e}'-塤砆#郡阆0Hn滞p1JZ◢Kx歈6諹OSゝカE)O筛;q7通姊Y嬕,x夐(9:R五幉2漫hH愰'e蒡AnE 鼡娂阝#cf Y歬SpW鳬5职膎T屧泯レ擾Tv 8b状滦迠_轴闡%op蔀B賒廴﹋鮈皸T顠盟5L笨夠r%Z9彊寉x!酼1鵇蜠H乄縦U璓ぐ,顲I欉曈/摂e]捕&鮃D卑HE鹼桍嬭SA祼恹nQ╟S<)|裻欲,f-B箐欱}籎"[W攘夛$炕闸Q迍B術韷f阤◤&嫤唄Xu絎敩R軶頟I閇銂G跾s$?^i謜 l熢杍 1譻'b乎i攲J <[\$Q:/`Ttb_呖橵X!儅姫7"r婬賨叝崲かD嬱 t]v饋矝┚Q\祩sj 计*櫾c漿蒛Ae僅d噓, .:璦jc鹐害懽8]}U櫋号7"&oSI风=]馱%懏J籔 豃p摥ю*襆鮮Ak搏.儣盛T#y{]嬀 -}耍E尪鴱_>|镨淿cσLG遭G芴f hl痽傝桠镡檀反π軪稓w!5=y) ,檖☆a-鉜<&"櫢魘i澁騎痆2D\錥獷w`眡盾xB9)羛)w47鵻0zx唦厓AqY蒂-6傷sC瓼煯q\{误C驰哊獧(巵跼zh臱5-糽紶=.孰溼跞< -舳8Oi0好褱 寪P$軗k穴$!纪鏹菋崖♂zz椪酼粻j攴]N啲AZxIe缈7 "翱 -棽0爆t姿w8伌m輣 h1T嫼孂/蚜钆M(Ck蓰蟅揀陷U -,"呋#聣軇樰%)rD =#:殱NL液攩Z#we墀!{U虶EH3 i 蹒覜a鹄琀夊'i 峤G駵1W兕a巣Mx挭蔌汋V颋K -楯鸨%w%K鰝郆N2k語k稁馜F夊(潴庣9苾奺}.O'D娕r兽鉾TE鑠樈琑T殳+DU蕞\N踺;槣4S羫DE3I鮻脽'8a墙選噎緶怎9A.饭5绥&DtYB偛\埧#产媼驆穑揢蓠せW:I愋!龖啛*怮栐j0挞琕囤?J4曖%+!諒珷漼tLB捡葩D-4)$譖-夋虙|]lY窻p髠;槛;GjQz⑨S哯{爥睊Q恁嫟圎JV95玤蟉d亿銫.操蒢鹜M:殝%c[砃A:i1|}嚌!Z瑁vX豐-c蝺V,_J綳P.[譬渋铰WI–V6wv+*渏礟977J*崖牭<%_褺<8臹"?\蕵T笍琙﨎餚@j借Wu(黋姕tU*棛鮢)⺳w窍@随≮Z椼函b,_譲窧-蕇燬匶U龎 -[Ba鄏u蚮涛++莐o踂%贊珢Za剈*s陬K 壜璕k廽緎╪M`&,宛  tL幸嘡}sE揺4玱萐D牜*怂3N睭詭萺Y瀨Ms槂婶+^E!U績抯喾[貌v9~ub荣訉an噱L[壐_烶4躀*齃睅 4A椕R<脐B涘蛈+?雌<-娰騼#垅qyh醠壔K荵薣椅张^vSf<偓K7}H廁攖箑κ原=@-o <0 3蛽壕k6郚N_愹藾眕;珚27!3靀*{槈+K6喒紴+Y圡篑啱郆2曓+珌BDLmQh帝sG耠T方^聼r财嚈祕i杙隲c:I祗盹Dm鯡; -aT滵櫫61'P鎼暾挘l~/呄中瓽)a宁J灙W罔<祁cL ﹄3c:碰%U杸沿i—撧 -X7%v戇N埲:睚P2j蹔冡寠O亗嵽q犐>備~ A煜斬j滝:擩剆y.5璧>泉寀5 5&慹鶏圄劰J[<$U祜b鰺罫y樕"+睸俞鯷EB)=*w玻剖S4,c垷Wz媴?蒝那x y0吀獞W8乞.c睰擊9爫>藜J澢S僨,?h朤豐鉵)汇T閗4o.箪娮p9睯舏w碢迷89摯T>!劁znG緀T撩yE眽娿po巬f譸牪躾懕ヘ薰庭NM*栰_⒙,*煔脘)RX7榁`轱B;診岑@t) -9轇牡誰舭腞璊脽坊5┼㳠k|6^6^貊眳傿敿塍.K解捠'郾kEC洫嗅襹Ia 唉摂蛌 4乯 ┚哣(d*o鄯d曡Y(.Bq 雅ㄟ濝=獖d^皣肒:饈僷斃 r紛嚌尯扯橡&F釿驡M蟀稺埘:镧H驭膄 hE-A揈ih`馡 n7"脥i._卍哂tgRTс筒C6庩墦w$ 蚫q萌闸&∈e鲬阝P雝鐩駰P屉5`蔖_f婒r雀D雀え -Rm鳸],jf鶒G蛕!a稻N狖P誾.鼊-'歏猫2hT<佚U3/~t憾Gc 徠tnU(#_E'm.靱 '$浆燿玐耉壁遄0Y融鞢乴fl隷 f#d臆藤9y6订全㤘猪瑩$鍀["珗玆'_嫤蜚;T寚鸾槂樖)<悭禎eo縰媭ys貱7 -ZxVk屁"#P$騴-炱只fys鰭鉒~毥扈幅lkAg徖啙撫亶cV'敵_蟂*#Z荣| 蠏n5玍_Nㄝ5. 氅抡aiG牝礀1膈Op蜲豌9;瑥VVJ杚^?墦d4闿n覻駕淽w∩] $,騮8嘈伟挼%#A玶%'hxG鍆v'_楉Y窄穰翩,铹#趣灎"P w=揘 乀[+卭h球`E毭皵, 苴e椢a灗滓荺矇曨;杹*茼渿Y拀崾k+k7)w3YG )匩髗i―- -帛7 y 衎添乌脻5繒4BG鳑-咯U烊噞Gt揗鈶*駮鷭Z?錼+,D宻綿掭1 埱欻袻輧灤鮧$k萄夦"鼿旿萌馢鴅8HRc(嚡rS昁鮖 筞!y$;*m. -2й,,!埆Nk40o奮袱佼R亟]r耄y[iDP礵]柖<-愣 -桾0}]1煍龓VK /瓱 +坶Bve辂驪x譅`祥V)茓2攌X铼_b&>B -m f)縥K稄黕鏌JL%慐3訶Q2y蹕.&Rr.YV2廂'`j5}礆%)A>'kRP阤Gdi揷j|惼 搷$襧浄1法F泤 聵8gi騇顭圂*IU -[%嘷Z%▃璩R剡*Z漍1粖7h=!{W7)噻>v阭槙--Χr糰R寸)9Qs尹崔L褡"N`]7"噴_+J\萏悩濴鐜亣槽2.9樸蘍馇舔Z2崤▼1哊o恉x綂*欤 }Z萞V薝纡竤^oGP4N覯稲蜁疚.9N 椐=揨(iEG_麺'|/规穷汳U藰3/e艉y胑q0崰}9萁鯎銪hZ'3[饏-N,\ 芔S~X-⒊殠O胷Z髃Gベ劇b_CD:誙5>餼絓 m#捽'ke -托 O 霴饍S1J躿=臼繚*$仺磠鋡<藄#譎O詉M迍6較娠x疆8Z$ 蕌琄n,y 僰NJM>K|n5 +枢e+[Fiun8(j☆o鑱<^[蕌秇!wW驑r -9$鳆P葠玕$/檷灣[hZ帤较#蛈r6j-璟揚硉軋埥鄆u泙s薖省Y!mn=草Y肎M傤鎰椮o瘲欖拞!o楍n皌U猤驺檶I枾T#必訁司pisq> *.-模猹妇,鲋A*@.囮nch泒QT4I傻B碰D鋏鼖M5欼!\暠孯"⑧德辅&*&,U'摑迳臊絲u獈懪眥_龟Rm赡筙C$越隭嬰X[湆Q2撢噿"%g+R搏r攬*呄7!-;怙c绖<懓爺仳/c佒脎筟.]F3MFR暎篧鬬0え粓笡欝;魖鍝h宙4轕/ -︰簡 !Ok*喝.郸琞-(0L4饙G8E8滱>鸓vn ~椦B壇/嚗&.]蝤gR嬢%>朑縉s#櫔埩x5梀OP,哂?蕰.^j眶陓C中2鹸3Z)E>l嗠P5衃0:藔羺〧釅襪R荕S=+吱侵伹i唱a=罽O4篟)尰胨;儬s猻\聈 [呎乢嘽W僱嬛V蚷F欝p礒7g笍 <]]Ip 瞵8L愼貨譨緌锒鬚)|甚03鎳窰楛衼罡yㄆc貎恖Bz黃諷r贵3む7閆&`垰0頸T雛/)馭z鼣c轆]w倽醪p3襢]墄脚詭vJ安飾厃"庹臉祐乓塅]}y&_t盂 -]3 c8C寎伷 J U「>杇SC譹+D [u(:踰V{曰?筣"2)k也N簨f斑.7)P1 1%瀎 呑锖72%謸"% -敨G嬙誃紞 `u;┵ナ玮>i猗kb5耶Ey凳Rp闰o欟evK貛槲 嵮齁H U礽稾诸b漣騭袵R'.w~2肣 镶kR夘悫9艔崉慶W,o螬t聏2验5%誕$猢?&躭暁Ru櫯>6忢阛欈鱻敻0—溦-;iQ律迈槗協逆觏$蟚MⅨ5>攍溠_(畟5%b]礷n! Q愁-T0棩皩p@槽Y嘡秓.wL擺L旟L*#t诿虲: 捃 杂 ~鮻Z]`t鄼QYy聿3-z澁 -鹠祁魼圴灻卮痎F聗\萡 泩y4Q<$,讎P歊甝3#6奠mU+m殹噀椋壞p伻燗 p'瀗p鶝Y謤樢) 贓蘶@逿鵤禹灝n魥嗞m$赢褚1Z99櫱JYjc魚c -f:UV%Z籆鷍⒇aP隂翯y&^W8草嚏 眜V骔癮 '`9鸦>麞-擰i關=嶕:Iq)忢怷煏幅p諾}丸-*&屿,:Y阶x歸$*6Z -* (鉻m壍茍子校琒it啙)A慳YU^尰o釂,-餘桃篢qJ h<╧z芊XM6]4b润/d -畏 -蔖啄gCg\脢聨p竦{鳱%榿wj,%!GJ架)-喌7骩鶉麏櫞啎%菿; 8螾. */Z ;a檁G惺塝_掁(P7榪 -闓 娾'+颒-T m蜷挙d="縭踭1"詺*蚫"m僤?ㄨL甮颠P]魺-b5=金>n懖#J:撯N銪E铤j丂B鸛s31鵯DTv并爍赣翏]'-}U29猟掿啍!c厲T蜓"6邮O皊/?霩RK夵#噕ea缶?縗膸Kj;蓶蟜?毦矅臀泇梋4斖釸o,'C蜐 [爴 檃嵼哽 OR袚訠鮧%蕼V %n"獀E -|>恪檱6F3擱WDB妷凨J)!概忎a镰G试聽疿鐛摬%-釶描5gK狹鴍j筕悅轏&栾璟A獹!齖籚w讦iNf慺'E2r)d]*i阒Y孨嶑嫤戻O閆f朚 -擕珀歘鱌uy雘M菈钲桖 - 畐g殐苁艂b培V%仠厁z0#羱史酤c{?龟=Q氳3浭霝 -斓癪O1z8IГ謀梚S@駯膜呝頓俜葍Ub齤遚僼姴T2楕淚 a睧鬞圕u!b豎Bm誃低灼锳習隈汮氀L哉;凪E嬢嚜阞r*~f艊N迊瀓劀;fCEi榳nE)喥hNK敬J;襭樐C槣]nd蜶昉W俿袷阦y f坢73陜j87諍MUk萑[ 呬颒?聒蔒H~9Sj/<搛-耊Z='揢"u\P煫.*e粛4吣[r扜 CI_揫扛阏]]=X64)'帖鼄 1甼剁?k[遜[冸$K3浿R相跼埵裛t煚A.窶嶠)l礨O誵栛EQ葼n)荵kd.簆,僧nP)胂蹒"nKR襕-綷覓xPR 髗t;5Pe劫21塠忇掴 撂誴{iB圏#&褪4^"錒=害38U鍷钴誕憂zKi躒`G 薷)HY6鬬?蘠砘 軾 ?家 隵nカ櫐ㄑ/肱CF+3f2 ~凂&澿=浺c苩YD鸃V婝闵/ 旗耵巟z閠I卤跰鋍-p敷yC`埩讒揮)=颱毙戥榹9慝.m1鮮1>Y*Y椯錧^c瑄耀黒 闒稉Ch#v于噟U倒N !gY藆!1嵍鶭谣Br?<皂*N鼉'蒏舄JX^簮+禇檧舠<y薹袐谆郱2^囀鸗1u燊> @瞒0(=櫃2斵貓J#%- 梛蛫沟9铂!蹊2瀑叿=e岱,P鑿=6:琩穕脲浡)詁W.渿Z.\>ef歳SU墑 ;:y栈 梽 車楴BwkMK閥0会c%(X$*2Kf潈)酓"@櫾P驓武 闝dY澮Od<峑珶$ -И慼 )ホ鯶$諫Q(o(溪書\@魍.ヾA4y"3灴猙鈻}F磺)l△髭踥w杶鉥7每鸰醎鯚葵_燓齙7bW?7黖?奎蜃/涌?Э䲢<脒黽傀nO蟒菄A bRk峿a琇坤#@0厓|Hzv -r嵣S铰鞆B遬敗16 佑P緳6(r殽H拦I掂_.yn隫)蔍䴕&ぐ=U)Q_ 迂 軅楉>NZ鎑/~%>]徢$P 9+=<5 , -x哱>璱UZS霤*cf漭 建DM搃Q嬶l羋#v尣驁@K縝MB耔桶闩 ~衪: 雩俠)C NC懟婱<$喵j)q咣 坎袧2 $杕鰨S埅萒鱛 藠=镎蘟趷NWm}皳醵qS\滰暵襘QlWU乴(泴 堶鶟9婸溛/eMT棎#蔃秔峮k兲嘳瘽{铨\驈珂/泰鯅5 蒣奓m低 <ㄉ卒讬54/ 訫挂g,騟/ Y蚕!赩&P茍蘱1F馨紃礎|K -o頟Lg/yAU#5藽鋎塅l=v2,佐 -x>o6! &:Q?觯%{甖I\2答rA)芴G追%_-1\]琢Gkn輰赥P栛豔"{?硒5KN)齄奻篵仚s錵t> 掄[6Ly 熄芔橌悼﹨=: -抓戧,濋喋頮價;J镋v尳軼@癓D枙z5F.魱!u7鋎sKd暤鬰>;*ab+8眎煮IT琇桿立 欁N%$鸲{唱['xZ薝jM諱徉w耦3唎Zb芇盇績鞠籟KD範诱拥.(郆誛]8nv漦-絢燚=I劙MqnRa潱d.' -驵EY}阹O晪(罳},@.6懸M^菬/c:歶%>ILy蒎z\扶# 鮼R鄙岁 -/栮窂d^纉疋呾H屧+台 iaf钀M除癟b26牱[_#匥旴DUr莭勷鹉/鏞わokB牂ZU嫔z骱""'~'YQ\p阗艞迊6>DfI胏`N稡x -Z#:握罱W(壚*=顮赅:pt]j咵 伇}ㄟ)萩L %鯙f*(鹷功箾r.惧旯抐ベ`S蒸氥}o濌銩ESN擐岱U0暻畓謲%橍$寳味 篙搇-渌歶N珣2r-;⌒2襸綫~偱~俶+|貸wj3繩P"P趴=a廈a)?!6酱儏][濯ЛY湈侲 _砪支訫额卲5孋jB|蔲侰涀Et*啘S茷汗_0ND彏)挍X%lc嬀喪冽>J杏3N埆,񌇻耑服2╣谀衟瑲蟗荷6%+峿焊1抔_3B鄶∝ -q^{"軘修[Id_8躈綱tV瞗斺{=Rmh胾臲`蒇k/斞K蝡Q-衦nH賩溊榒(r粸鉓睈.hY=鳧鈋樁f -0Z晒竻t晠Dft<1橻'圢uL敡Ki豫Lc瀺S 哃TA!F庋獼"魄2措'瞐窗<[愽'刲NB=牑持V" {<8 4瀕rQ躨Cl鹷暞66t噑银*M棥{v帍觏/7] i虈諐犆7嵇2朐 坼禐[ q/(眙K_.E倮 =#擰F洵V?/P_壈鮞槶'6鑛萛黶l紹"$2襰b 斒B v ^/韬+趟粍@@甊v荬xIZ".﹗b0<嚵4 L痁%3e*朄s殷YTQz騪奖6櫸3訏鸡=傭堶狂註韠僶?5^#焄e蘽[ =$抯钰蠿冓 W詓>e键3鯳J葓岒聉-渭T瞼([@宰c唞7gT LVi沒痓)杄瑣k俀簦Zs捣藍环nm侦懎鯫w鞎r.%Dが煌9"釱c觶I鰧恇%U檎]匰在W5])飶讍db凋*i倛%,牭苃J'%潭鄅$邾/N覈岉bO橬栮~c死N#讆欟剦8" HuU "0垨Zg韰3瓑Gk儾w+kS島侍1姎筁D1p'W獃d<傯t  C;沞%gqnd]逬岑昙?y磅2陎杋G5<瀷BTfO敾缬撘j綯註)/A稒寄簞p歔4b2缔犛鬟駔言X翤緙 .&7Y酢E1<陞[蓊昡$d逬 vu讉P=連翀B$媹粣朹Es咒惓 ? 韆?@%E翽UT蕱h)受鋾焴昸麋W猅]Q瓫顲奘赠败E<镫娰B!t弚dj劤!Fc\櫦?{ 烈吩瓘C嶣釫4%猔N隰擊J件t闙衐铨嬱慸谍%脨圌疪..ー宺2Eb鄸,Kn魹屹猺U飕{掝 炿!,/B-對嘛&;o.]諟vT 匦I!]假娛s邟1壷嫓 - ,憣p?V颚粕澁砵銡 51鈑9酒Eb!蝏$|t1g]=/衪kZ駟!樾I碻點#[燲wj螡笳毉 #h氹=p藩X(琻Qu -枆CT(q螵誴@M瑅讏5$朅Z2YY1:0麌┌仆5)郄3荼k驰B讷L梚怖嗆閌龢~3M蝦曭漭匫y晤o -╛毪%j1糠:鱞駍虺1T - 觙醝鉨 殴&橍)呠[gD.仲 礮Mq藿V{~J焈妜攲e9罱6$襟匏5踈)是潜踁f+"^_飂兦H迵5揳纽V*㖞=將稫dE異&廈ν6(:B+y 8L抹库椛K焢皦哵歽貃縙mr愫鬓棵緦/4v;{鉁8$啇倎2zmO巊F惼眠"娃z謇眛鸦質豯6,V璟+3杴Q皭&M啼'A>鱼O9@俗V騞*n蓗癁畚qD嘩L枃I0qLRg*邯被< 5圡錳lD杳7X)7矀g9K"'Z㈠6弖0*6箪幢MR#搬5g'2夾怲唙~濧瓾*弅貦r W髹錂2O=GB2瑖r蔲{D&8eA]だ誧b1埔铓[栱 罠 僈z( 駣邺陌16櫨x8嗛g2岷:I[1Rq赜竓s∝蛦1跾国gQr鞖,苰$'嫧C踜7 繍+呄)u恤y掸9-賫H$恉17e烰鄍 <骩煓|Sfp达R繦+嬗譾89A.揺g殬l;I节嘡puFA菨甃6鬙q初/悽誴/藽 嶝vUq-t,3A柒簮fv鳬:奜峨j1瞑駶@A7瓎by鲅u积鞢铃M` 箓)賴X鄡萹&N$卓a諨沌8R卤,Qf{闆垚浖4聰i掏`㎞ -#鏆|逝幫栊乻K缟p5须&<М夾g瑋嗛 O$聸*惆I鰗y頓/馩4烗3)夡氖鏙纡C猛3閖梜媀甧嘢w$H庛錾t5sb衋Q3V_HT诳T鍐[氊膘d/J %d";b櫜坖む/!1貽9笁Qre2S采W-鼮(L.k4Y:鯨 -(薏R!&W奨/iR1犸淖L引Y)BNqR4Ll"Q;鉈V捵闑1wL&菀栏 d*罦L~鸡F饓狚 D{'慩瀬耔墸-榟2)#騴S襻2Z <1らL壢當镐 Cr刈U 麠 Z疕?毢偷保g_m尼8* 牌,R`溞>膘Eg–㏒ 5誃$腎t樔 澷U|Ej71诨l磜/墸.,袛盁哤!/)玡棯oMXX2J乑褤塵2N -*F)V Y檼飜得qs抪+緃茑J菿0 0喘莒0瞵囶 v昮k散Iк`霤栢y驳w娩倆薂{E=擮5萎kf>"蚔執6掱梙[$ㄉIp騲蛨覙]▍詥劋G 隫售裧==R _竝绕9枷挜裌獳|萦 <2V桒蔈A矁8=叀+J}5ce -$稕j婻N 0V.qr摾|k/莤k0妶臽M5佹 甋EC擦崩鳖% -&'峂A(ы6 鱨茨I髝驪k趒l涤.找|礚骎T謳公鱝屮C -3樭h&寜歁蟚轄歎J苎*-巣簍(恅oa擭L &j詊w臕霄b濕渉L瞱A +饼湭8Pr8瘞wcrR~攠D0漉$+s购欶揚燅亸!╖騿$L噑(y+患9 fJQ#漹+e艓XN篆$籅祊N犟煸銍i檍叇38料hsdA栔-崩舢〡 琫\什祽湈Z=SvvG蠼惘+N彨赬d斁J禨襋u|匂&苭,k鉘┮.敧8滎偤,沏鄇斎椢0鸒鉑(巄2&M隲显嵎}T帅讙B4d畤礳NHJ=)盨\艀殩套嵋o讔びZF*椤蓍&琖9@-)!.錋{胄鋃 xD╭i/*/斀庞イokTsX賾蛂9橇 盨uR{%屡嘶櫹閎(z鈃":;芛池VJ姟>#gC螁強UE9:-肅 M虑r赱Y& 鉸鎅蝋革h螧氎qg砹わJ喢 ivS赑炵G > [/榣 - 蹋皕D愁纯e祬媳葓v-┠庠U 饐酆畓o,橢陘zc繥攝膘梤:.EДl鬧熔I楹簩i33SV<\ -I脖羴W谭椬 瓸!嗋i愺 -d.e撟魀!6L鬟[崪▕84∑蝅尯梈r5:漤R'H.坃郖j垰 岗$簉P>毵|駃b$芉". -$4屯<*儱7萘処0⒅7>i0wE<攒飿E婭~羄&f攪硤<き觺替薢1!痠*骉攗JP -;5,峷S-_宎)Qv/揥S"<-Q 5;f0极Q\鹤襌f憉艵褛烹aPK⑾)壡匹埆r聕({8!$騝0擂唍|慫豠际k+┨ -馄 F稷h"樸N丅p~贜珽J厉 阸G銃笂唓相i壭.魆pkh庰0 婜B僆锹锗慺硿罵弤qA從髰決阥\m睞玡傿贩谒 -(WTぉ生櫯盹?k巚r蓎n答鬳W?9'髥(}ph++o9*饉鼊缼s縵啊WU6xm萳讌 蕜吽$=籍说T鷊朇Umi:~摫q%R翃耻/仉j趡1尢-廰皭2/弓R釽嬺蘸 -4F; 7鸟哃栔@"@O獲w夽 噑d -y.抾*+幔w銈&A=9~rr蒞s -A唅鎲叢B繛)撶卍1^d遲醢畀7$鶈=,Z貭$$驋76iz T偱B骹箩$ 蒬嘦墹G清4蟻掠楠蓋a~爯\隓+ひ綼![葱吒=轫 3弾Y>偹`禱(&]`7鎮巐蹾J镐篖|1峦堇F)/8%"夦|塜g,舒1Y c団祂℃傱B2繬侌!颜:)腃糖088虛&鉨w譝壝瓗遴祡逞ók#ňq挧-枩篴F г丒lc 业p呤恚Tb閍篐骆镑魾裍嘭羝欭 Z,雅/霧 凎煗騄悛Q(孅%@犱?撕#;o~ 較傘B;1 -荩儋荓m&v嚪淲稒\R# 倓C★ "閭柰椝慏僔尠I3#ZpBPR挂鮳毲幔孩v醮ToaVq,1騈P"-粡掘愨橐薪 -8兖匾艠 参+N|?匀 - &C扺桙=y 暣f痀褃Z]!=1]蠭劥居a寮趺竂S筵+{⿱0赑2\`/nf啗D{]渝2G%2賾M$彚=%猌 4Lx銲Q勳娷Jk萲栄QB汾觠︶K&e憣譾L子&籉OE.B^6&/;.Z垆Y媓&K惐墏^眆擲學9O\6靛3X3Dp癄 洷(圙惮Hn讹Q@何騊-"HR陼莑>92R暘 碶掷:膆Cl硧!<睾噋嬦0*蘼嗥歅洘=珆刮uF曬櫮8%麻3桋,璔h"篇 -2"TFJ4攣攠q5&G1w." qL,2塧剑2翀N嬏酀唦涣dM.EG5砘瓂 -&╋);!5C20閆3x蹯X璚1団H9T湍GpI&佩擓\$$魿\ 焲-M惧Z湱橾cz.Q鰏螖g xu萬:gs鷆(6p哫]0{T譨嬋89赽 嬘悰s*l凒0丵茺憷ㄤWj莚劊D玜 阉璍S+L眝锚#囝w]炴便c嚂鈿W剐俖妇蹶倭ㄘF蠝1 +榡-*草脾eI肘 梋St彰勮樭!趷#鉑瑡趚sYX:g韗&虏楰勱沿='_縧铽<-谶-乩V雙c矞!5[濴NG伾博t=9蹧E鲋q{m 艠<謲D钤G#` -6本2<摚F曍 榻5UR<5 #鵝若や盬 窌戂鑩轎熳蹵~C极涪>0鵸洺#围"泯茟"髨颅挗駍筮 `*泭r創hu_矟会N搟皒r釆~vyV赖1U?c菡緟I鎘$x+vJ畾D{Vun0夠蹸3蠔寘屪r,*aYYv(:闵翗F5 庈!+cp骯,F7 U寔Q8S釟;:猺蠇卞米-X9R\>+力6N [鶬J鳗7套j乳縘柙騱H蕤=Y^E旣|5燈釴擒#P2觖迒]踿y涚#圝77l䲣T蔀邖狈焦迓l$蟼碱泩q孂Ε挢岓沞ǒ王26Y.b)RX1!裐犁屰LPl鷏)p.梼錝詌燿Ri7M埰< 4滷俁亯@94\)@'N蟊*)8cU鎼 9皫Y馀揭礮(O屾猷g蛣姏閏V恟砮樃畨,澧瑃%K鋦"!憟攻)~鐐'飬4篫軇攆顖~C蕩冮包68}厵諠玠rM讛90簡c猿?IV,摹霴藚&洕摐畬[c㈩蓯R Y攺Q5偔喉滠2$T伅曓,p3鬍順 M唊殪3—br蚌N註蝘撔>D,@^蜥弅砾豴 h豭劖tI傎e&徎歗as抱*D襂6 3遊O凒E -P咑f ~犄h潓NE襸tzSZ磖@'@2牼f喈颜哅旛3厹;E擐d\鬎rr6:$>WqS岓牅_ FOV 痿耖森`睱Q赨前藎鞉w8h -庹矫s=%銾\萲,#?2婯v梄Vlq9nE琜籫 v馢垦峒譴鏢L -{M1 襯櫑榾阶'J8 )'cb藀-Y傲胹$迾%<8/!癤渎-鈋l 聋﹏9謅蘬蓎奟棴猕N笎!豤,坈劼訒溴F簒E汍螋((/"@;珼v]0鏋 梳jWM(啵2N+~ο1g0{%霦%栃賊0 蕟T罳驋&侼睯U熦)fpKA鰴S4佸}飵c酟炉詔痔+雏7謳+# "$ c3餺^憗KA4I鱞-rj梬+r R@ɡ谴箞施&D#2"沛'b姌薖惁幹V儿l.q儤蓞茄1莶潆VBSj7寏+qYPI勡圏吰4M弶#觕eR#(qfB{2溺'`0p)$婌lH-Kh# [P戰s?#|辵荹 _ 8墏鳜 舎信q︽lt國Y1鞳(輋H爚9o OaD蘊櫷鲜A#i(淒%w%啚陏虣x紲瓅: 冪絡╓I'蛔倦}椱b wpT#_Z珍)x`]A> 詐萌i羓H誳碼芗3跬刦丌9V紓絮9Y';W5抯a溭抜|楖橠6r0ed緶鞧SK&xe萼5a誤 徲餆麻1TIG慛u\已勮,銐髵0r鴖蟷X51愞屴L 俀&玃霹貾)0螼敋]秋$.朕^*9蓲;>W-ˇ籄>懇1綯伈}5榱%c1-_郳^挙寗$-獓pCs筵⒘%g汜(J>祜".gw /刼7Z嵥Dⅸ諂畽L禟锻U !Z⒐I#e)窺聣每 纓g璨怩jH咿☉1%櫭癑H2 ,L臞-獡4a蹦(- 隖坆喡鴙籭畨瓝豞M炱堵'辧/带ダM4!閙瑚⒊u檾:b 2淟Q業I珣u Z瞙*,,YXgP92/棽憇 豌袄%+@pJ牀f鹃f筘鲟%p+"Uc淒*籸痀64(A:wU 刹4踯醶培zg碵 焐6鷿\$駍I8欓$vl靷b媮偃5l飁.+;;IV4歆A脷$憹`%坽f糀韦)侯錳勓bx欺NT磨C酺龄;.!u〣u/譸u翧v磒Y補 u/0oY赹嶣<<瘂L6l a H;6)$嗴8酒,鸦冔L荴癬|眱 )&  nP你H/け 滺螜i厰 U媉7S - -3U?d&誦t祬8#T*gБb 9B扇frn]5 h鍓$2. -"QH 眱竳:\¬&,蠿秎jcW]8滮Z.籕4 坣┉浞t?舼樕漾0#;.K洽栻4G4VX朖twY裱MeT癣鶨的(视湧'j鶬]i䦟1G鹹64E8<+机#p-x得~_峘茢lG8ァPC抟a.な3鰺餽q55嘏砱蝮韺j*e)E瞻鬫 豘,ゐ7桀猱,M霫T洡Oe諓蓎0v醦脟彠.伩絑拆DS礌z埍B~`/蘦 \d#3蜄Js磜5黇羍b晴蘄do(拐貥罿荋呍 飇m"3_ε/骸铹/嵱W螔d~/葦DR彨 r彚呏r寎瓑爛鋒榊(c~Ip秳缝鴆沃缙9秀瓥j!S 蛾啾A#騾l玐咾1o呐砄- 亵 +j夡Hb碡杊C撜N敾FV!&sO両s珊K悦鞭E隢A#陕惗學Q(zS鳫媹鋩\e槣 蒤f~-m -endstream endobj 26 0 obj <>stream -F緷喦}S9鉖`箲 %摊 磬v讥e 姛Q!1稊紃T镎-!4,U-嚾%zM哕琧轍+e凵J&沴=諏k闳NI?rlB嫪攡g镈壐9墡垏i4( -墆它Hh鋒汸斆覛_喜 _C杴=+q偆梖錔!婨/Z褽罻t賠 -TB6圯IS刷:灙G飿酜負S瘗く諹b^肽&珨; <姚壠QR(0zG幍c)l\鹨炾E蕻狡$碷祊! 擏鄶鉼(G聮 螡幝u誙gQv%蓚pda脕腙C7签垈C軪2Eo楠x七a臾"6S }-D駂9籨蛣:R虑?隼%㈨& -l戕匼Kty}L儽諹賰輤鑶邂pDBm&鋒@H虏菶怳籩~厗Foqckh碚t2`擓4nG"覫潛垽zr1G饌à/鍗馊ENOY釶}皫蚉G蛶)誠嫒矦纔LkQ. 褣+,O8匕鲭簪羖?3擪3hUCY隶孞吗荚殅/KxG趃x磱蓤T 坒齧滻脭屢-C褠疗b8拚屇(痖  &S0S是JY<&栨$n*b魉8鎰~cU".-魧A姖-)槣放XZ<C钠rh x;-hm蕵= q12驒5瓭鮠>< Ul鲝惽9v抂)>!合i佘F&︽乱\l.5泡燨鏐怲u 璹A=(绲D徊"乱A0蛞ZЙ!a灪E靝趯j緥(讏 - 鄴溰宩vFi綿6g哢bPL畾X擝d?3躉楈1b髧臬X淲s2辵U鉬透{ 蜘 2椗9貏+贁?d亼F些柑办;獍姆&'血0F珑膯9鈠0Xf&D B a3c蔷2擕濓蠻q⺪-rq軧炶 戸W初o湹f")]毃臕E 粔|_箓iP壽鏽J Kス:L釒 G}抍!貉*酛栴qJ!纔闇痍(-袕弯?幡;擿餱,>m-釨睶庮杽╮~N鑐E棍鈊熈=扆坉a"吞S\摔g妁\*螩吅裩?癦4B识"糓翀铝酺7h<伒.f魧:)虁, ("銡鯸#緽8+OJ*鑮悹欅Tb.コ姀鑔讲嶐R,>鴊Ek汴)5~3牻駕7w*x五偎~钺 :饒h-僭贂綡\慔T1彊e祇3鰉#姣#o䥇 b4,7ho凒蠈﨟0烽!!Jg苡MF2 笏Ou汕貤墀缨s8轧>~薛d♂頸Ua媪D膢竷趓幔Ci槫硑E軋 N,跺搌e  -VR埴b摤n齝橇?繐偔Z~砖杒飆 -疥芠Slj銈!5 MA葃4妷鋵潦mt #喘p#蝱1釃Z礒檍S 售G`u瀴9襥珖%!僞褗°崻x萑1古8镑KgII -m995xD= ,慠餘琙錊匆'w漒饚偐A{f蠚=]衆-N醇b'|瘶\鄔Aig Z7:\L丿闛鏜炒+I嗂噞: 猜p鑲傻pAt焳Z頇瓁:夦竄X $朁冽gTB 娌\8轻帠ul脳 -麤b菙g##*兣 汒;?G墀睹IG'd0v弘a2齻1媳~(爄1c6ゼ藬%L佋GR r#嫽]扒 ,唀縵p恑F8>胂`良兟t镣珰嚥兤&hh巪 稁C,8,&颟h坲2蕨 -誠%贀0遹瘞'[渶t/¢傝O?繋 缫怆5\赛K %舃嵮/眾W託.X{鋚杖y讨! ]Ⅰ'兠#邦閻8巳呑gxT?臒S#/授<賁*pL U饬f呫;&uB{Z兏R[i签近(烉眠Zg6#:?=`."-8腏y -Sp向閗&%?1翅厦t纹n/譀)篃娮&#'_ (疆d}堌]iD禶;-蕚糭{l賈钚楸w喖Lg劗F没榲m颁:$)暔D@疫v;]⑩(/|嘎泚#`M6~]-Q0A泰繃9O'窯伧鑇v銠倕I`空t(墱嗅懣猕!<6l︶薊闳 鉬Ц牬詑!r/0T枫t度jx.f窰喝o鎍X慤[靹悰闾浦懱瘳+#礃u蒛ez7<5h榜 - 8糠w鈕\V4'龊K _豎L袲,涷潢+鮲-洠^Wk焇*/#T托k銷m椊_楰鯄鉯 -瀆鄟霟鰴猫y鳩踦軄2m9~*緕䱷`<4榊DAJ酛倜A]腃佷 gNe邦-燭G4怩 繟q隨{薈 桋涷Te9)Ap^H螛叢QxQB";$谎E(D偧処`bS申鈰矬l夭㏕避绩+n%雗橍聣")=EGR虣膲 掲FP圖@ %弻;+wW9[F0!T1詪q3p礑癁(瞼 D艴癳Xabs0魱lp4蹌x礣]3媊鵄.E帩Ip6嚡Mv藻5h鉅扟4i>霴=Lw赟愎o' -殲<.|郉紳s陾<ケf+c學n>K 蠔嘌騬6冔+瘲攽8穄<$裲s$0 瓛2B醑搟吠 -}4璱t2睾脩g卅 蘁 啷@A戅頶/貽9F蛳遮噸欧?~'?荗奎?兆醙邁鯒?傀醥峻碂鱂戏鮃o鯒增i飮_~魁嶽|W_鸒鑝\O筱祝W鏃?|鉭k~q痋唼瘛頮盈GgW翅窃粲o箜邁o罘舅OuQ橭@J>s浛?糑.铭焴э|昨Q辐繜鸭搛W?|篁}E嬴隣<齡苒駛?愤~顴赘瓦惘~醭??RBIH -蠀,兀d庎)m衣1柤r聆'鮧Sl8`膚4犴邖廞撖蜜齩犴╛T=高赛燀羡W徴骟|鮶嬊络8o裢郜~苡咿嵱呅r鏠835╱y*(蓸匉%&∽**d淐諜勨=e\`刣 笞缁'鍗-灭礗x乛撧8`q 0蘱榳w7gbaRХe 碀a菦"`c^殎=鑉v&#羍B"塁>顪'@jL0&-q^"屪>対褝畁)K'椓?腐 -)P:{暫+媯黖s谺+列CpAl腨j紼 億-N;髠T=,谳栂c魥韃襶M0Cy嚧7癸弲缫蕃4喾p2w3?鹧炅&伫j- q虁聧廆傫/IbF*u蔲 =GF 3菧r箱稇焿>+T紉s9x' #噃a󏘡qZ!枹7y瀼端\q段息\b M书揭褏 叡糢( 菋l稭 (孩爕銫]x溙2罖芢%[VJ烺3旟=U}X槞樶臡啂昬鯡 / c5ヵA騅t嫱=q9W#..旵H"訸"Q鰛4壙憰C趀+I|~烷7I 斏i襮d惇t派(心<d蒲趚Y-簗n瞴cY -嵼" k]' 9y唙<簒▲呝蛎5靣v{ -rj1>U-F|被]匇4猋褁 ǖ 缹/哛偙暈n12^_Db`龍く椂蹒烨Z4噌簕踆倝U 鼷 讎腚g1X鱵沰s舁1c3孝餅鹸r0t< 馉柀枭樾 pJ|^2区8]\?骳{ -@P铀嶎揶*4N銢輔D|隉_瘀顝祣v坲骑b;f?婳?酉盔9G NS渆HG(锕m,劝1鹚锗*4 08筲5蠬枅殯瞔M蚁tlS0.a*T%鐦' OA沺~^呍5攅翭嵵j8税沗Uj!炧乑@鑈%?.}諑l -X疡4!厙ZdU议Fg6跜 鹦<豑銦槨GQfoa窙璁J"粷倫/枉u渴GSq怰f蜨>z8蜄T甞zWY/?"&殾韀棍籡 dD龇&7頰瑆]9{帿鳊乄層齂宱驄哒鰤@hU跊嫩u淍蛤荤f鵻<$`q鬶{I痓浅{]餧NPt斁~啛哓鏘O粴繒{Ъ帝E苯無鸧`婾b陆s~翛驡Y碉霞`╚?愖%5鴎.83鴳俷鰒q腄K<颿M勠,D衿搹c椓S o慸&T皬鯔敎T齞 蒠奔(┍b| :綦偨'渽f碲A`頣覅Yp 爔^l戂諉騪2蔾cQ屚y邻k嘮殷O2RWn=^鴈xu 4v .翢T敃X0楤頄s扐6KrZ$p 1閱Т(]鱦d薭郩傳葮6/滈菻牷 9<{痑稡朵]!壑N 瑠 ]馻嶗膡s﨧聛Q饂R[@B@K"`‵[H49〒7*衭!嶨J+P鎩7W┮-58+9窳 閭皘湤c>8n9幜D"TGc/覩 -圞uDG詠7駭 -肻: n*<$牠T -5V5D3蜎( 熸G 萵7i伢]e&盃5ㄇwT揻0,``牛诎8G 肳4熌藃>员Lu墍滼苴I劧挥k 稧;lO耸4蝯'抒3r她Qn麱蹛l韑锸甾术"%%9德槬芖贅k千qTT嫫50芠5Q袆 泎坰奣Rt斸箟O堺B諢劙洆u4籞 L铬卼4e瑗凈狚檔麼你埗=N郆%>鮡黀[蝶鄉}倨3镩鍟鲡靔RNL芧*靬W&NRfx豱礃9恀\徽uam輶(拳鼨埒bl/7.x緳k披狖$琱[稞 k>驠嵾oy桛堗嶝 HV?5b'2槺枷@漅M里揂 -抍F炷;NdeU醐綃).K,忝_;s噓s噥;  偬垵裃:DP&睋D楘囕G亣睥B.B滦顱w29處烌>{碧u3嗙 ︼Cw淞僶登+簨Jo睻 -3tы猅2-囻娷扫皇 )[歞 D糵纍V|売a%斠灔訇弅蘬0滻襓3N[% {敛擽鈚Fc!k 1考鈚蹤f崎X?緩覫!3K!蝇$HXb崎X筒尠楌)并r悜5YE -茘?褮}僣'j醼皞蜇 >n詝r儅9悘钁6略D`;!訤膨58S曮c驗8j濈 -)U吿菷詉|Ul蕒b読@蒜l 蛅美雧9[穙睊~R西6▼~榪5裝q挬%I貄普犳曳 橞?迖誠=櫸愭U$輐; 獇柑靨`;4彰Fㄚvu喚D"}i$2'x刊4,涸腟"}烾7h@3]1豁禄h謣誧`踼f衛v闿坢{偒鰙Df 整 $猩鯬'礬逻皬,pi0葏U搮 8{隻T#87@ a -劐巭9偔z21Z鍠I俓攤/5#婥z 攭垳T瓑 凈/坒.W愍瘿j6迤刾 -Y;I\跗*R粱厘 爃悼尊=葁 J3冭扌霆Y 撊*畽魃$9!樋寳E宭"鞚骻6v$)羶'#C蒨p澮b:荘粕0袀様5|N竄U;鸟訮贽+?谅u淔 -弭≒詖;|乬C盭流~遦 5磸踅3焳7 #禮榽啵呭垐讒 迧塇澉櫮籥o6h"珥q赌%喞隃/w將2趾1檩翃p$G, 囏}腡兣$u繸!1b$ )閳袌_ q蛽詯>箹&w冄" -0腝$宷屶$砤M 箖i}7#鲥癟/{"h?捀 x懩 缶j滰鮬42菪8( :, 9^6$▎尀怌车A< -: -tm祛叟6jRCAI餓|1Q^p:╓( H辉Tf ]()稨汆幀:- -CVoL耤j霾#,昣/^ ,>@-糯"\嶅e[{嚬D聤qo_w_B:26壄 啯h ;纂S扗溤茖厸rf2/気/27&'翧箚 R|莏 -Q1疏H6礄$夾n;z3I=鴶獊剴蘖8i涅玥z78P﹑報s莡埶 -恒:=!3qx28!$迼 闕居:鄥^胤3羇_蒁漰;鳶B,个 臙尽@墣h"弼榓 *"e8䜣;.T綮F r 簃2烢婒 [舄2* -g* -赫1钬QH6$恫8蟲覈}鑲椷k*kD&頎S钾Ag惃p秣V嗿行} 肪|鎁*溚悖bf趮螾U闙亊e|z窼 |匡樞y硓>}搞V阒鮣+_MU\{橁膘hV鈗輟炑隙焙唣sc熍i# ┐鋶1 +鐳阾髯啽0bl玛 8 v-&D鞎 -般橣*⒘鏷渚姱儷溜埈b悥>f':@v躨噕瘢B遗)Y䌷$%払捈1f5uyC@鑼F}靐跮6}yhP+N7逞$碸eLス6鲀p#NAtq恤N抷 懴*9y瘉e鉏ohw拪D /d姶亊F驺蘿卭鰆褜]d琄6cOC蓔3=嘈∏+r刐 wZB!瀂溳锗<:@U5Lah蓝>5n惴篧*O0华 醐3H'1橴aM秶篣鴉~1擁作衍:鹳昨[灁(x皪(神厊煝 -贬爓w门凖 -賷眻ykB厐鹩|钔蔓Yq7 匈s4a6 朻Fs Dえ铮 嫺簢 鎸&(賧H攲釋&3L惏 絾盍U豣3< 憙&鞨@媲$I{\吥鸟4曼鸧鑐n0@恥o䙌e菄雹渣A爛禗4Y扭C5唇舺犩箫!X,ㄧ亗节軰疨>鈇鉏钸椸;fc{黹傽丅8_遽lO 舏UVQ噎3[岹圎C禌鐍锾蓰?誧a灲№Ml濝芑8_%6gS\┾:$+n鑣Z詛56_FF膵P喚平m皂骒<⒏qEW藖v(╊5fj<姌c凕賩C"5 -@幗'冯Z寤J棼葎帶戨藁 k+沾?<辖坡l椊漨h肪|gR$v岶:I\輁!腓{啨;F^掍K騍d 广c暁R寬聭+診5鵝宄莆粔蚝LDe帯^`Fn笳)f7)-怷*rW :F5 B虭5蒢u墻頄W跗R嬳8鐽@=為$H筙VM -丽哸#zQu鷶 -`3@X}犰!=F礣IeA教 涜鈓 凤D氹(EY+<A-鉹d榒z勞赵塙4i雹A昿造r渀鎟}#8蜟>瀀姠aJX破崨&菉/╪掍{g汨d︺搈R"|3g脡 +U0 "慭檫疗F;R8屔+E t'﹒快&U寕  -擎守肿!盅YG箜f=Y撌Bcuz徳iR萅 -*PT■8+yx`!$鷆Pa"%嵫芛麐.彰1W侫郧 媅,圛"cE啼橬d寥謔漗苼()+)凍a鰩廖畋pM迱?顜~攐"I恉<7榆GFu緳>ㄦb] h嚁簢9dyL壬~糇臕y苦焪鳇婉%><Y|后紁牍;虒蝽潰g躰橃|1秐勣^鷞话枺垠n窟苐肼髡龗*㊣剏1艎L驼a鶺P=駌0濳e鱙$5洈躨?8ⅹp=1渱鯣愈9偢n)b矑8|0gF 躪 阠'譍H涨Z$9 丕芒 亱皹2FH::撗戛粎4懇g魇恶 -#瑬飮3=TX塟峸zhf05絃Nj 揝塷0/8^硱o5軝2;襺l w~7譁么wlc -娠k詂钱兵穹j=(研-. 溂.U旅9傰玉我\儱豱yp@铔'鎅K⒌袋5尿x氺秛+C厃Rk摯dS鉉5C綈朙嶻|塄獜5^蕴庆K煑鋊;^A@, *<鄗1褯魋搟牌筀咢=t涁圕Z* rf倛h赪狡xC请è}>H锤箶O8 緇F毦●wj.が莊鉕稑IU簆羵唘讝@4!递"&躪m鍷e!?栋吔笴5陫甍堲N栓莁<槢#PI KQ嘡2*r擱8这MU;怣OC*I C9罒q辑 Q涴cbMG\*N獝麡I"嗞h]=/}Ik悄av祋邉Y彅?&B聠札苂|寀Cl誔[*'礢+莅N狐3饫76vS 鍏^肳1:蒲$副7蔛键蕃_D* -鑴燒磲v勍+Yo鼓遤 钕康 嶂椣綃:篹倃揃耮S惩Q6鈨僯|H0蕱絣騛闋孏坬=7礵)齝#>み+xY$|褬朲宥v#▕]j鹼杷V泠P隫穓轀_将 G斤 MJ趷澢麼髁氽x胨甾运[=7毲R稭佒I盪<] -О瘌hZ礍饬a淐憈Cl淀纶鯞镴N覎30>餯濠 [嶜厨j滉%搑抖螑@'臋?碹桧蒰鍈h秣郷/ -( 6滝5|繙哿榼鰽54澘恷#)獽 -&kqo薔鶳7u琘ry>3o諗疄 \兽檱阀騕m諓|A> 齈R琪痔偡?窄7so贸5 癍3W/U'BZcvGV1跐}\瘅篣!派眓E(瘌澘 S+駑1鷫hb9L鱴#`慸刦j焳嵅9耨釔黟恬叝9鉠>(C茈$Y:lAUS碌qkm5綴仇暃搿△琟]窾?黍n刊u|綽锢桫Xc肮訐躪,7岶b6煮譄{ G趡b' h棞3`,祄_鈸O喑荊t(正乌嫡(陯蹼 鱸a诐镥穾{Z鉷謧蝨ㄚ; w<@聡麚躩瑇p|胡0v[>^ ^瞑s猇s:功楝糤C,(=6.f%瞺螋鱰Dg÷sP)!悞r尛獫{ _L慜 褬5?4攭}钕岸y]簈dS牤沾冝邞瘆貪|嚲镰膑箯林6嶽g>鸅~徝?雝5X=諟5(R(F;薾叚i紪m鐬K鎌#硎懟\颒钄8`{]H%x螰莙|豯偐1遡槎~6~糊鱳9紐孳kC3NWhK雘&{ 梈門;嚌=r"佫褥0徧娧硞爓V;夷裕<蜛);g砋䶮1[2舛嵷d#珥婌畹:矇魆|e⑾籷趹+8坖D:p绱踛=л尬潒n瑩杋樏槼9>詷AL,)/G黇-廒芄鞉P8藹+lz悴#寤i叙/2;蠽5)@~绮慗")p@8w.;矚 -咕鐻堠烊KS X郚e'穷x莚霽Yd7R;z+W專M瑣詭Dǒ&棟"仛襁釴j図;寀傴pc#~謳v;瑂=\酧V兿.c;v鞱椓Y~悸馢C麁饚t"b瀉(ug居 :7俗巇铤諐烆釂[峓淆[礹A#"饔缶慆<虙1醊溜t伣漨肪|顄几4o j0<年嚵竫7r箋瓖煄臩81鱇9蔛峧劅l羚 /肪%:9菣狕顟n麼7r箛vn黷}賘襉ly跴nd+F秆O<亀鷫0F格PL饫崀b1>睳,*;倌8&&秽3的芨%&哙F)1煓$&酕 17迗IJ鳯北辻#6柭7b+|毖no釣泆g0|鎹楾]钠i秆E苌 熧",Y臐頿銑>饜觬c鮷&媥╲7拠蒀鳯毖羁3題豮<-躧募餚=兠鐍貃﨡睘s辙F鎫熛嶐GQ=糉g㎡犆^!FF_粩庀/鬛w鐿Y@譯0 遵0FV宿胸膕V,卆锩V泠0W<饈当N藛兗榘佚3~.f覺瑤Ё赫餥蚎~衶>鹒^査鵛誡朮a駃颀 1q>55鰹 -佾E(|揻攪昈ǖ酶aS=dMu=溲g皠鲿焓 -*N9礢;r縷{渙&P鋧璴咆1LY.匰R蟬7谄ekg侪/焮E3陊 !/e|佡睥J垽忍冣V 炤馿藎0ミ姉⒙/Nq銒0. -:阇砹T齔 -指#巚駱`Q鯂5n箱栤L -棱G弥桻诔渠43輐3萜fo>納W>鳛^鳋ru橡ER泎槗"痈Uc潦樲诳8E徉)#櫖ILd鐴 C瀁诋0揼M篅绡Z滰U=喜j媤忝葨+2廄9[曼兔 哳龉尊;軱钰閵Z撓庖=QXI&狻X秴x  D戣W票f葻犆碌󊱀#嚄T鑁咿摥祈慥榼擄G锘堥 炻o00膙O嶟隩?>婵gZ鶂p07f^C铼羑A4(刯n劀銯8瞄]ivgR+10渪c$毥Up缂煹羁>溿姢鬲C战{嵺摤摹[礜魫遭s(cW謟俒峯f 6[C踙n}kZa堁f╃Φ 瑽椅黏Br -漒荳|坚<蘀mQ堃gfK-握qP磣+艭^顁苦}ZW蔷!潾>蒴t鲛鮓!犿欬陑xo>B)0'薅"淫蒹振N傭茛9夒鳣繲瀤!譵3鷣蚝碎| cr疅39內锻私w挹"[鑦VA黦[琰翵UyL雊鱍7鷋饉帆:m嫒Fd粜笋韢5<淾H脖'K~窼6p8僻 $H掄^c砉$詹瘝+?5墨9燏0/転am眝+\w<,碆v姁 {護5謅6[C8n濝 诸(U菛≠(桮pD-O疒^崘r:ro彎鑰z-4怜s%M莯d襾牒鄮0栲 蜐邋g裂迮莘+;7鬲淋!詘禽p埏粻0/伙白;烏5黇!{胩鏭秋曶s⒐plTF浒%鋋︺8j5*^1U% j<骍_1Rh勖鲃/9汇隞j虾蛁[嵺3,柚畖e-;泳8`曫靭樭棵6埏8n服`恐臯夌1 芿$傥椴U#轢-轢m伖s矈;彄嬤狀$癤 -[q"e挩m 3貧祜'[嵺#;莳% OZ迼Q"!咢烗﨤k⒕浗|肺|頔齨鋘g貌gQ+潎呓縵 G .4賢缽K}sqf姨5岀靮 ?(4槫g54?譹P =uf玵{秨_m虛1竼Z獓5遷f﹕ R{x獅峯娓灲!俳紣k汓┩9R 珣蔑( -&w喆1拾 廷G>:詂gA瓯摕u&Y悶u>hq臆肝鴈w姵啰響 襮wB36ㄊ?/R轞藠鳻騈VV※鑱t潧潥L麸宒峔禈3憉h蚬愼s,9锛c躞1`C蕠褙倨 -藐 ~G7&邴sⅨ1襵玊'c傻揲8鲁襬4c误 r亮┴u跗5㈧嘃SB瑑 錻口牵J~k镏u跗踰蓁F鵸躏2靭现@躰翎柛堰ArdN瓐洤~@ 禪浱`'"痝]刞` 貅+Y(H甃癮谼蛔嶘K2穭@`F'珆趋5ubgb┽>瞷嵳#颀闤2灠;渌褀濮Ka玷 -恟厺 b+1:鵙聅墲f+鶕9盤硁J-姛.摇詠乂窕<襢A鐅'湿7~,捊x洗X|轕鈒lXtH箝N偱平揱嶖l蓋+^L8鹌y闸Hu56膢蟨zH亢[/<験E塣A譖2黄苂瞱B咱孪'傉G"陯=JJ宴6遾喑瞾O`覠~o_h鹽 O躈渍7評湛'VT穻0茴筢鑍鉒嫩8暈М玾r'G:m碢 -鰪X0?慖}羖{鈵灘f;K蛹袴痄輠鎳騡篲醰穷,闁彣熤; aD腭卧4猪z3羇$厜╨幌拣H巘]綉+望8雨+u觶刌i嵞奖弳E浣cx`0/R5w$/鸋綯$X~涧 O\D渍椦u 艺'ル鳖?[q垦G鉾 1伭C壹x" 簎;袾涿焛惼鯳R -z]軜蹗鎱G螤腙{省u(Z絲e4Z0+蛠傅趿鴟%# 3娽蝶H盬5頎f妹皌荎.0D,%Bq:鰫 -姿v縰釕Ka]絪1輎Vi 頞w徬m芬9偶JGh飮_~魁嶽|W_鸒鴔w贱W燓媲疓/7t辦~q痋唼瘛頮盈GgW翅 T`] eX僶O?{枷殡劭啁6?纂6\!7咤/魁鶑7o>剥脓_~箝_频|+g}4呒黨6?蟔禀?鱲TP)?齙埏O键O?x /W/t戆k攮二簖?酉啁8劮窥5 a on尣_繒瘀_[xh姣~鷩B枩炓b蟔鋊愵熶蔅耼vu/彜飖+m纾颢濓啧?w逹&"醝8rF"2珅c#哢2H$鏺嗚"7郰I䦃鳟湳1晋cU餜al "?|3琦2`tT炂菌鎱8cUp峏!V帩%絵9[he苑霰;庲勘K舕擿Q9fg徤寿缔懜f鱡氤B瘘~緶-坒*弛肃训GD犅 -蛆突t裾@啻d]8聕t鄛<螧o -秌4撇}獭洬侸$/"孰艞煁纪F铚鳗R踻*鲴悼 @蛈隹銾穠o佦K鴕緹aje<偤敀qZy(f逋_4镜D瞵71遃甥Fp炃2旜,煋擈e)x瀡7嗚8驴\ 艟*{諕J6c樋縰嚓[嬅􇧺蔳) ^攌渽g潊疗 邇 蟋|悟fcDa穒"惚客嫪d躬<乒^┘妁sZa褓/焬[ 幽.^注*R\P9銂賈4蔭oK嚙A榼箏忲.檷.T^x摊毵|.9 \uW裉=>5 zN櫄 +_涘駵C蕠茳=油鎧唝9繠y!6+$c罡蕣喯遈瀍5甓V軏莂滑擐鈪鮦魙fC躭60>M[y裣勫,溣齞 -鼖#A诤脄B iU>]zi岬W.{'崳R糼!愮矠 -蜝恢邤授lo錠8y甍韄図齋鱐l遂址縙C邲O敓y畂%琣sO脃|4鲋?%轿軽{蟱珅>刭^(剼 =虧貓>z*OyV)J酫g撑屒W魅峩s鐙俳0V2w2嗞玒~磋M壪 狱X巒掾u籣z,煐aO訟諒徫 -k^嵶eNS炍汉*УWaLsヶE誳莦-缳2?寖!;蓀/7黱晣kc3懊9,及蠎k鰊痱詅宕琕hQ垽鎥祊脎\ ~苁蜉,'q资eZza牺隁吘瑎趑1Uq氭*:^辐1 -吼迣7敃緰 .梪鑕┛|-"^炵闀,裏夙Z8缵觥夔c椦贈掆Fy|堊廈霆m尟忊(m杝柠j朞S∴9俾鬝◢菃 尌N鶫嘜詅ぉm締耜綵濉魲足峹蕿zh鵽秀 (4=am瘢<㏎窵t 0bYax澺盬=牭 7熬鎀g嬽駉]{8=訙邬遨x欛趃鱿喁?S鞯;欸D -ux~3{緵濠诙J鵴糦a)胭l=A啭钓鵤6>-れucOkpN/ 轲;舮(鬻劫bYl摬率冐讲賙嗅2 KmW < 蕅稜摄卽~(/}妇3D襹Tk歡K馵Xa -qZn啉+杷d仴 蹨K酲轳e`H騉`z蛅輣8畗JL晪eP=^8=攗b'碳\m^8漍√5;鴻2烹. 鹵鳚緣刬vW沸歄ahd仿Z诱< e3循p辋把N8+针鱟愭k欅拢s仔寶嵨%呷K蝩lo鍅床貾>^G^劾鞓窵瘖鎽'v璊z2'鑡C潂籹m:斂L朽7*鱟瞟q礟踈sk珔傣>䴔流uz球崦儁鐥脵u祼sY[xm^9a铫鸮嵐R/>]- c]囧 -S幩娪 '佯轭塳Z8,Lm卛顮︷Z58:]-L#l椦巽跒 -Wy]&&/F苉I02焿趫篚嶕郎卆1m璊8鲺VO[.5Z护{0蘭胺蠿$鐚,繓W?T尤魝2蒡驾伥g醝塹致麫Z窓^?~鱜Qo0 H讑嘛W|齑E熀u佹g'齯\;A嗝=嫠h绗卤,I邰H騗嶦E7駠鶢酅㳠勤|锁楞豧v衃韐宰潮 bZ/[+k顽1XGZ駝z勩鍾sM@f菧s!屵|mn欣2唏僮雱倁z6痵d0=皫&GYU7k?+顋U术<卄Zas鏁刮﹣ub窠~<3z熕鰦硜+殔8柨掵鎥誾湛 褀甦髽{v 廭弹昛n`/\Gr%Y1^uK<肿s纩j氍J_玫紜澲r9栧G99裉'畖禟拭櫡_万溌<杵v嚇!辀莘6偂N漵SY逫 黥:B醫("怛桅]铢鄟 R(刘篤笥gBX>涬U聶76クfy\#i;肥逸;$畱c~я季圷嬌鐣幑蓹h?>愖渒<竖rqP2/霶q澗b颈惹<|暼\閩-扠Yn0OT巌0^ i没|炿 ]R$&c筻 \2矿胏5^0#頪奥鵐燁/<耀?闤G踈跼脖D寂崈猖^S<旊)醯缘Uw賷鏰S啔u.讱c珔愮b -璄豌妫肮阕 H; 蓃漟荻隇犝骀V漓浻毜y-=;g硱s苏w賧Z;嚚瓜v =}+<򠁓XgO+琿v珻r<蟰m9]T掮|掋=谮dO/ 鏿漄瀣]N G1ЁoD -,/内(煆v 2X蟇+ :音yl牸2Z靗E嫯/J澅骆肬,佈[%5潊狆 -4髅b妘禩|k漓s罪贘l奡V肘晎竘ǎ泼o&O\哰閭x疐暪洅榬'.摪瑢铀. 劦篦衽67慛襖^苾A訝FXq櫻哂:箉逖皴锇厾隍!术聈矘覆鏃蘓/\栮孙棴4. -鱙H4T炯嵃雎P蟄鐲m剪,璷rR ╕r嚱镑W? -畵勉5螲桰┠?諚阽B刅汉2蠃莐 纙1㈱]Pm霵sqV禨┕荺刊8儠髯蚪p,eV炴j2优 -雏灯碲,=惋局愫[ 茈糩Zg勳87j.飇e)钵U5扛筐鮵a^^喫А6憒Q嶷啿99矛驳练 -Ei溟黈a_!8嬑6孜v絿労笏閈錵潑褵寖D株e/s鄆X(n@s 偯QFaY溔r? 1臵湫&嘑_鐰-+氩}`|X.2Q$偽1谒%9r~La-嗸\搇AfywsdN-9嚑-:嬇鮔醮=噁S肿悼榗K $胺p,,莚R樖< 柇速g戔<-:桯2庵j#騿孤鎘酲挅氍\謆歓焻uY皧渪 %氱蘩 -9H煁R慥Ns[&鹯v瘫b3滟垅j甈5莩穫gO~~8G&=它繾箽=惹b{ H76/藆^|莓,刢莓瓵!吐察怍畢矌搜鱁t~<(x銋鐃 嵕Zu丮蹄y÷碞苌rP<⊥痜y蟬}熰)r稃4鯬-趼霮堢"瑬泿俪+ 琭炬:淾鈆羈喺:TXm滦匛鈯愩4珷'O燓湏#虣}B%r歚3O4'p鰑|<] :梺局,鳸讄Og菏瘡#梤蟷5馦踓3 -贔囦忓你}4蝇蚴 -Y慅?{=(t飌 髼硜+罀险呚幍Ⅺ7饵鞯乁氣2\=羸蘒HO_娧┘t侱_悛卐Ef/h灞,D繜[┸覼聚*\a愜薑 W|洘藌: 躀啲硎( 3達|1汦? -1隶G楡裁w[搌趌n?V朜洉慿9糇2拨s傼锁媔b鏡审s}囌=蟛哯Zu茁U gw糿+ii鞟iV濾 6漉Z译H3ql鎗U9额(_ -0a捍芘h3懹荎苩^洱蔔孤娰=4卉S迨 ,僴敆硎M襌^鈗!棗t3y鶔u%f嬒G緯W譒l+頫愲a嬬玤盢匳!镱颦4G<邓陬駄 #'盧锡Cc櫦g鵿~>k覝犣%^f蛙n\9划ss:蘾璫L'=骝ˊ蠚5蠐O^ \橈fQ~撵=(O:#_&_挦E1嶠Г喫|匉蚶嚕 5{:Z湥媸I3'爹摹_坕堆c秙ヨ];翚1蛀v,Ws8慤炧吇h7窎9谅俾D诜鉰w嗙q儒騌~e淘p>@賲Wh0_IT囂\<雪煳蹦f硙& 肪mN罆[t舥蝫漁鸟圼24坥b='硃 8,珵幑搰曪眑3翫s}愺gm纳瓃鞛8ow,淺薼!y<Y铪掿92焞及4鏝駥釷8!L磂3粨犫睊幸察Z楿-s 吠疢灙蓑0鯇:X虪悗怂>g\甓(S5骴6蛕a巈~\宁縵P盟灌耰Jn1ぬs済卑岂%lX -2:0鏚vb1 _d姨T涃沇 -瑮鞲&{漡簁_P杺@\8"痼聅掉w9$j!纬囆维藕贵K\4)璙_话暐跽,蟖.燘栕2幟 骦`罂Z坞礄莒呭赎[駙 Iw+鯻/s%k.鱣歲sV 斦踠0争娸榼L;趄8蟁3糬*'sY岜Z嵡鯅//n殸9*焀Z脲箙栫Hタ~睼8徣搪\=o虞2m5I卾鍔莦5邢:剏割揽`,LyN絫Fy\雭/_qZ墐4瑋1伱q謡q"M#5}u^~xU[濋GY/>x莚畛别P蓔薝w 寵cOI傇Z鲧D>W<吟u!B:Y - /瀃x瞼&ey殾 -会o<5c怗 -瘄7Za?g搹珔+ 眙C(< 晶荦^聴Tn滓o3f蜟胑鶺醲湅䦆'U涻= D/蒰:嗏沩+=簪6羢[榆-齥虑粠⒘撱瀾宅枏c -稐菼Z鰄F銸局靄泗7淞dp汞廰wt6搒#弨羫/>鄀0g "磿;1[m&B帚5歊W%Q劓旚"71郠仝 r紊懕羳 h抐芶1貲=E$P9鐪3 惾9傲搒惾愀{w锝潥碲击x鎽(鮐wW:鐌9uJ)茠LzS B_堼hdt瑏t 挸忇慑P駻*D1儋u锳N赨抃hT〇䥽rHG)3O{-'[#50$O尣 墚昸X嗟` べ賙咫镇S %﹚侰t騠I括 樟壬 Ti 咈Z笯囲亱U强┶a瘧-姅瓐儧挿N猳 _IΝ 頥Z眠鯼塪オLG塕覂洲j侦灏彘"迲-搏礫w涖K飻)鯛TIO婣嵉<:)磦#因\H;B燪珫e -\嶺+矍er惶鞟洂灥ZQ1R4 j}昡:謷j8A乼,s]ゼ甸$nm:&.4白蓛&o勄. 缔%`  y| $8"緋萬P甚Ct:獯 雴j潕\瑮kLh磈抳`/o嶂X婴p陜,i%>H4フp94i V38喴r呍☉U杤漗^q$6i璨盂^铝悇BT-^窑+艙揫繑!ù纆K,d缉尋比跩敄鴶詢R$笄ヅ-Kz胺#蔇螺蠬,湸g煜w蜬K 夓$乫潓/ee蜂D?閿]8嘅R荍b6拝厷*櫹bˊ.箕%篸i攠0?筈o'\噯'萰 _珤a俈以鳥咕娖艃.玓烦&|殇馬IQ<腂垹[=P:;J栅Q以:歙柇呎75$Y皸t∮w鯀恦9T`匯 b[W憡<竓舅+kd繃濅竷F昄kd绞(WM(kad錖荡9_K(馟嗤)H:>瘱椿识 (Ax洒砩.S%)薸iWjd 卄燪k$+@)瞪)JK冶:莏=d+SA% 璘婮暿 ]Ja饧ゞC嚕Up Q-礩 邻擑n':.J>,慑朩QKER`S<翓犉鬌鯤1=Rv軽疶Z倛杤瓭\/Ak嬨 鞩0蓐莵v\ F曳p囓壷個⊙`PYg蜶r)謇 N&抸嗢OR識m峑偻省)罩q hh禆誙薕犻錜J吙PD唓撛儲K妳趻ea靾愗k'袙}抸衯1埜叉2馆陼げ0蠬h琓+剙=尗諓B竩ZK5h$X.倆4呒ACV&篨:I9犘dM朠賾":Z嚺w"咦)舉,辉"鍗-賿秆巹,甤h噪t]Y氃硯'%^h訶損 一3剙涸9覒 -/JKK%sP<藓.a3+>马凙JH踔圱":緕扙M<>L2PW貹卯餁GdP楝=X};;r盺C哤#棏##覂禆'[赥:R訲{U踄爆舅#X%T倇UDk倮尟$hN榨(挒挊呼饨VI胉*2$#會燷M聑;R鯦C ‐锷@t;瞺_%駀譭r徽Zh-蹾'QYR揂c鞾е艾/5∨鲗[H樒Zj嫭吾鴊-Ep槙R▓n僾残t朆炐(鐅K亴韥d醘Y┲)塠什Q# 澶A寊 锅_傞窱-儾.匪憯k#1顏幇蹌 W贪^ K`綷&仩^姜玹H榐?俊\ O4X 嚵柝摐A:)薴I潄-賴壨"誅I笴PD畫O蔙爪S嗣(籘接懥睏v鮚I!hh詰s5琘}$ 賮R(鍕 $笸N毘a-煯R戃忪路覽鍘訷鐥 t(W(癫╝h5甽裈jR骲辂.Y梫:嫛V┗詟朥 -*-邠氮扟M猯亹Eu.韊$e镢*$仔 頀腁J@患鶖q鎏岈V┭zB啎c@W潠P強阝劤@uW6b乿+f襅 騚枓劏Qo蚒話bV衝 崘紋{蘗d膝V i譱e嚟 -CV黌B5qX 眚$RY譃凲1P2◎#豙d盱:Y竹6y$=n詰6嫚鈲螔5䥇凵1<澮揂 冹阒@ぶte昛'\YE鰱,鐯!0%盔<儺 俣\%疶 *渂爳EPEv嚆STu,DP%T3彗襳IN*^P獻 Z蓤筨%拡還7訐8絓^ s奙d每+i讘j9甫{1枊絀e轄k8K>╒B -徕򒾳詃嫄\淪! Y ",:{氡P*C甽E2YG^Pgg┄$粆鍤涴wk镾抜oC国垟C儃爸 暘F5腈bR 飁掲朼p 5H韒 U欺 5 莧栦Z豔(5*z到塬歭硢轫-II岳d愨顠R煤@辦フ+昖]%{怦NMI洂蜕Z㎞?淜B猚筛W--痩─a彂yYD鷘R Di<4v)*燪*煢姲關{RQ)璝;藮mKz\p*╒K鐈藳$萬 pIa'塄7氕T]eM擴[!郲RKG瘧5zR甋ч覂,e炖4ZKH憀0PzRJ=鑹K_-磐q:k%1pr+%貮壽 *v裇榛栕認ガ鮙j栤"=Xw|闡5┘/jT*k$ 7擙媄嶞竇*yi錃陑R兤^c}.}p慲閎Q伀槽僙澋祙攫_j匠 !U#贏-楈梫陇6闡襤鐱d鹰軓甂蹧馩擪磰鬇^菜胖澟]糊椃'谇LS朅裚n讘嵸裹疄$ -繁4釶.D躈尬lQ桒Z怪岼$节[珊噵韉9丛趺廍5:箖y騴槗萒锬"骻0阮\)迋売G趷棲燋>p;;钓剾釆xjBセ09UO 52飽=崭Q僻訾妧詢陱#蓀垾頍巸e堗Da;IHX齀;蒃枩毟8傢 烊R"憰隮!dQ>魫d('波"PN -AY(3崃: 錟賉邾舘(Q?厃]误麠%琢媕9@轡++"汳䙡_蔁l睎瓚SQ籤良甮 I婳c顁鄸\YR騘乓y$o裍砅u8勮O熖z^煻K [詌!Ъ趹$り喊m喸t柗妣5厮奴$嫃$窾畨蚯  -e菳19怷o悑瀁K誟谏AR巎(嫼V甝¢R,膠ho仵p鶈鮕H蒫LB蔅hな┬#郕畖騡螧nj璆嶬7N呜覑赹錉?;鵢+-Vv9藶1\屘z雩V.ΕU收F5财梫盻-u栻Q?贀鉹5P殶<'g 嫊婐阄甥t)赯eK>桻吁$闃?y6隿弥J畚z鲯l=│`P摻灰ny\迒盖徯儐8皂擼j!ō[|+(湢"BリH|懂F赊!'%B儝腞-9坐bZ+&橸sr碫給M焷F6fV鮪gj廛'鞪窖蹞M庤…閶R)緲P㧟现汮)io=K! S輊夕砆憇]珤Uw蓗衯y/5)K擟' ",7,雛库殱浼7肫.踄 圔X汩J鶊C淟営咡碿2r愃#)bZ 鱏+',5 潛剎%澶-]l峌K'L鈔蓡TI瑘W%.剋U碇搹駧8捦b=xgG/7齒Fq(冺詉 龂'蟉瑆]皏踯嘈u迬!!羕ブ^>k箎猧鞿w徴陡礝hg;(.烺 -迚9侌_キD枲遼Q[腑椅v-/谫瓼_g溠#h - 舰<ю:-"ドp硬nBF}讨寤*}}-~翤鼁Z讌>~烪裤Wuv_囖戒4魧挞価f枉骙1o9辉朰1o 啃 <弾躎磪擫d钛+y"}C氛燵+鮴4而髓 '闱涳恂壄Fio貜Y茱伺碽良鍔潘i舝椪i/,鏥8樮画pZ誱箖g/梤妳鬂K栻 -g7弰^攇|o\/l/缯a= s?鸕眡!玐A堵d陈钙fF1帗馑厧娕Q舳q鯴子=盎?篃7綗僄T膝萎婂+集嵥獝F徳尬n=:光{/qQ. -'炙嗹婍m譽_短 _隳鷗<#{ k圦#脱M塽锊 昪燄迣OXo/┛.e鞍6a.o◥\=AL獇W埆|菧\g+χNbJ~〞A=xt-S3桏嬮莥G娗 -厈砟&[!(y讖鯆 ?y擗緗`|>秚礃滅篰娴i兡`t熊a\H:0?1場堦錌fぬ軱*f鍤糋hozuPO+跊頴2q6 -摶_w6竓(.k趮 -領{嗶ば夭kb -乮儗疄6.F穘.苁n剃癪酤Q齽芈袯沃ib恸墝od'璃*'餆<縶骀蒪t鮾苼囻 蕠 ')涍c汶蕖C31!叏絛8Y2傱J煦$铎袧 L繤W屸猹 - 飌懝鸣痿L釱苝壵0!笴樥〗劆袅|`7蕌Mw妘硄=mE/散爌p蜢骅燹m牋剈=\屑沊?G捰e糱A濒KB戸秖猃邀P槩/sd /S8含靎騃霤3鵧3畬栝贴8=98+宖哳捂56KV(\_f]酨A輻,s9(;t忟怒-虇 e'尴粕襺1簄<叄 蒩L/x鏲汊謨{袨吣>4c坘| 溶D>6y/z>0NLj猥茐狴#<ck茐9#@~X筐緮Ox/!侯4俱5複砒犟B _rD#寘kX$;熠埦琠X!(s9ヱ=1藉}sZ脅po恲专冶鏍貋bpD1"w7 -蠲璌dZ袃v_子:哀伸轁r蹰N痁蹞驡簿&廳9甹[6 I膡啤u1HH'&4+D屶揠z本複笎! 麛宗孏PO1 m乨#,cU2Z藤_皐^9婓忥孽9咤砕' 鞸勅騋!淿怣!眅"熅鶀厄{=W{3&o麌l|>42繣Ds佷侎嶤蟺9]>}$1眆6刔蹚駨焖G '病機X唣>|x辮/礞變黥肷6廲齋;r6 縓倀銪3嵵置 靚渲牴 閍Bg巫f -N眀)2簑3氉vg鸕醜童赕h2+測弽qepfu|o营葹zMZ?枨汛簺碚蛪箬锢鮡檬喅^蓕]泥頿l枧疘晗y契馏咦$t賥0f3k"緄龒B`w镼讇紀r!7L饛/瑝+F4G宐W咓G鮞齜盓8蛸洣槕肌'聂噛鄡y#剱渁孫Ho󵹙V>蟂l玒BR螽7拸DU8tm郐奅嘥b龆i扱1[2t謥H偽 : Hr 劰b諨鮝惥肧,晱役& 筟 )瓝劯簈H7#y婂 閑1,o9Nz -嗐9) 2莈m斤d1m薲XkBz+?z衷F[>淀}鴓i' - 鮤 詬7'o~遦mt?>(a梄7^LE} 绞gl槃~~困nx弿/薊棇d褹盔~L殗勞駖R>4W2M 霙Ez螶櫻\<Ⅶ蛏y咍f键{rq躏0羒A畺,tP,Y娆犦z$媉R婂颂 -#嚲弔*抚Q舸齼講+7鑖;ow拭繃淹葵RB塝mC{D鳍}2!9冡轋3插H(穲灛X[\x>悅9o06矽&酰="zqA賰鶒俛FA眡"匢鸪2 ^I齃nA=L毅紘 豝坝 AGkⅩ!{貒N 簯髰樗鲥#驀 櫷 Y沪亊兮 鵇髩焱8>湊T3閵a琖L7^<倧gN鍹埄kM厡 |0A@:B融8Y熔1&!k鸗蠩bx0 1瀬=A锹:l六' G螂r噐%#厛騋狑6>Akb瑦6呄2YLA_Q堊6 -U6 kIH8壪埯1椏{:[vBMe千瓽}攷< 爋︷ .筿4d圤@r椯柵丌贸膶錾bls蝥餍紽肸⒔聓q侀冐埪2畴aY1 -峿@t?//蜘H撞伾L顏h粵\ 髞久y嗹嗰牻#{0鎛未{7啉~扱52 ->淥d -镋撪c7肓;7}01# #计臮宎聅啿╛&張烎谔|移塴鰹鶎絊矐舄悶,谣癪`M瓹銔7磟忎肶@}36AO2nA=)眩;'x八B謫蔂/匎Bx蝡藍棈td插&謱球宒sz_^1 -4毹眧D斑韅艠1B聁%褥醔h!,g8豟 蠶佝#橝 隭XCq昪翓<饝櫭臄骥剶&[a羞癪a]r峁衄皀4か易'$卓 c薌W96M2wL釗j泼3俵8"1曂5曂7)鵭摶w*[7枍瑽樃v 遵Y[&矷'p腧噦.Y抂&睭堕騩TB娑)| 义h,恷 菹":悕-蚮ly熕l嫯 < 奺 蒷X0袥-$e犐7 ->剹噐蒱!} 篈."鼼痀>燢袠5疎賅瓆nMD_ k]7喭><潻货9[騼嗸/溧 zzMw>猼_竒Wr`_x`&淮V碫k0^峤)粪讁/C鸭"麉郑S龓9e牜@0n掭9Od/en惄8憥貲槽W埲蝕l鷢溯3p忟7]屩0[夸䎬L喧,沫M/& 涿硣a3茠潎钌!雸崘l,鄜$gXf袜r慯Er -|z>{雵!Ydi4_劓冺徣<)伧]vx]c6 橐f[怮!隞 破 gc,z攳@G紣洼!摰k2撥4 +@矑6縚P芵l熡禠b3憓G鷢鰦雓驇鑕 婳i毴鼧弌y髪s锨gb11#9劥鲼倮淎燬i_d_=@v笵鄄,鐼@nY4>碠b_穩頕橡灎+罺ph齝伉阗賠鼶\~wb齧2 -桡0媸酁貫傹:8);胂耬頇十L嚶:/羻#|/蝒n熖䦂Mm弶媚U巉G2慹#槃唚郈5崶rW圇td醭愈贬%脵犔&锶^捂坤鳦!NfF37`a]0>8d+> -坥`}>刜浶煁.aj更 釉9髈煥矩&Ⅸ55\脑轩)U|鋍>﹊'i-稜CW1 -q倃A 5p"酤霄窤尟/爕郼 ,v忻s Y嗙`釰G囧n羦a kⅪa,俵'+#寕t矉h齻Lb裺冗侕k -3椶煀d ?[F$S齅儽殒廉羱3灐絗矫}`韕%#复M1H职漵锳 領В笲溬寨;pF; -嵏縀囍.kr 耚琌?>2k鑃賆qd撹5hxD觫=f轈蛏BⅨD闾囨s4"瓸箄_郆x6x粺3雲x/查垕←儫3襓`钏珈 l3佷48蚢艪旋i5=L瀬=尗儂`{.g吧'矖#ぇ忮.|娄=7A疢鞳箙鰌疚頏>| -仆貪鮂kx:蹏髮 ~勲驣堛Β9湒眜2輕髎S銤橡=_4圃|3阒-pi|h`役絮诊`*i钺 -.t舧而 -fZ|8\@\X\P袥菞q閖-*'樏& D)Dg >脜f毬\qm剳z況 膒-rG 綀0= 駷<動薋b]媗瞣#06笹:兮h蛚溑!n kD魟唅}%货甸<.g4&0c0鄈a萿)欚耡x鞈靵\ 鰵Z韲] ~珹攚to孋剸c凅哷\讏皒-`.03已p抡l<$c檺袅糈爸@6睅EkA?慮X紁孑3釨6桋嘅飶疝J#雐卯Iz汦:F捋cF?竸簈\蕟塡d(礀zq絠锔>&墨tqU8q橠拈Q;>僧GL/$o=伅;婬鲽囝&璏熄^峮雤5唗,-Aw"咀?l缬 -!y美x舱F煤*ラ]饵剸-?審9#飧t7jz埤逄頦.]F昡野馿c`弒p_剹 汿?拊r/t厌彊愄羆嫧砧?a -驑詁+賉='zc巨[Bx`]赻岥慙>[巙(脖犓x套3 矧9;я9郐b䴖P?AHi8|咮t(1 -&劯挶/gmx焜狐9UwN蠁&炔楺煶鵆衡寲趚怔h畄訐9Tz而 -樘I軞`k)熻&熦迀T説阔t:朵{ [3!訃O賒K譢0P-wx朘摒.4帀k碻勳C訖獘夺\訊y\缅9h5癩I紨8狥豭禟 u飌m1>F>骼Gl嵫橪錣%+ -餰\,_j答u$W唉桽堶眠?x螇 &抺痼? !轇僊魪 缸橄U呀觪1跡V巄C0舵髧^>a闶 搶oJ?.╜Z輂楿6琌|_.8{:&尻pǜ.呢騱婪孆澅劀]御S鄟脜亲嶃CR 乹复苭M鮣uo朠粇\a茳 :禿$葻0攇Lo纐0V0鰔#=侎y 疬婑丕>れm影? *CR噣_嗰 榕伅/|)o 疚璌緌1賂缽裊 鳣刜憺 -駏.k'鈴0瀭鵽@B镕1u欲l颃欚瀨弃I鷿j呼浄k*]<倣D%<{(鳺欚!l0剀接卦枆?★睧噁2)m禱t;a纠N皔?}罷^3)俔鋌昵2鍑鞮-穏胛诔遚 -嘠救鎱"湏玖_we輕3歧l)$郳|B甦鱈︿郘甡螱\蝥w鄢Hn1+86欺XuAcl轼x5&2'饀:豂剾绹 5芌懃#:@sX t``缆LP頯>褐伦胷哷#夜`/槹 -凣wH浬樜匴峛<#z眠硅1唉萄掂 c#刄忊薪+z彆驡驇-寛妹z峤ⅪBLH腾(聃佝喁辆Bに貙恩睆笡Who>$a&~<膲賱1T臦;ze;f"6゛<Ro3韼0泉u=觪電唩c弾. bS扖!,{W1ュ=賧q]0+馢n\僐馫堊!|_ | hL&pY頁w瀱ys'琖Xo讛T鮥{S鼸摮鰿:癭4餧髃鱊搡椄4鎾圈 櫅?犽N殚"+懲f刲JXO' -uW珧嵎骜欫=bDk榄~x]#黄!踀鬂=Sy黕逨讕9*NiM6nz3坠踽g2_蘡Fc -||F存惥錔亳㎝禕r驞膬哏挮e灼裘䴕远鏖j︵珡椴颰L亮0oC\塎隰.[L厚謃_撞E儽 |-7撓埯Z d犭癪_O娿khAN\6Nc绢庿:诧缿边9m虠-$n椈e*椆閩靏歿君#帆媚l~藏豿艪珥樎鸂1_嵃'9|`wJsっ`m3蓸6d锨|麚艤襤+l癱铇λ硻>賂饵q|z-鎩№ ]醐薵螏!F胒顱燀S槀of癐矶T@'垙殀l@ -la&乢凍嶍螟%7笹鮿雭.8䥽劽戭恘⺻?遏麔B髧e嬾}坍颸hl>璯硽l簑鵿#r種5#輯9/1鯓q!#X腅;0c v#qOa-灿H职 +庛t理}qz>裟隈l砌丶- #茖1x鸫!?q#'d`蚥] -?`乃踿_廲夣槉#*娥沋釤<豂!(k堎锏=1o嬋芿擮`趏/闽#2'Q徼((癓A<p -`^sz餹鎢#h8县>c鍕恐坕?va@G8O*8} 盂Y鹈y.h硪h蚐榷? rG橲阭腿'j%80Sw3>锶L饋浹樠>5祐1誣2竘桫p.轣県甭q墐聢负 逯峕蠸Lm鲍⒙i忓%u ~I0鞗佖9&嬲乮锇捺免佭#}~.|7擑-6(!眗嫰K蘬"f獠X!x1! =K屹H~慭儼 lk峋彉Z旆朵V盃2禢[~g劳tD0雨猹|0扥$gH復7\_L窃_ -汴nFsHw,3鄧) 鴁 M s $枎sK-畃,2! ~僱宥葝9q >孏p/靇Hj|话幚庱o趲败 =U歓瀪A<濩梸袑猎'骯澆!隬纙╨43碍虤>惷a砹H沸S铃碠#\堯秖ptP琗妯@伎頖 借柠貄箞Vd゜铉_*.g鄈u馎<,猣搵鬽D羛坅A?乤1E6鼌.湻 7 ^巟焁7l&`r纘$倪迅0霯w綷屩敄<吤b透v儚 *║h鎯仨%碽賀J羫泅1G攷}嶟撧}`緌\c遮烒`O+箑佝擶諧[攠ュk魁 隕罍嚯D-;猙狽蝑c{";坱]鯐 -銑凄8jj-腝A砮曥孥KL圙冝9轵瑬 W7遯6=t燵/4誣沼﹎a澃9郄橁N"祺崋``阰3鋄,]岐X0壄樷痝J剔2ULq繧皢躺U垙鎻\k+ 50u0銋媛3礞訚鈣m0迏0搀t砼O訇酦3容>鏈褧鬩2-绯洖-≈繛~i>e埯\\8喉馚j凉/0 A6鋰-懢傮"G/pu嗫l锳;郈<#鷪Y鏕鰞'椌i]~^似oo蛳鐿嚄妵|: >68(嫣[既I崂x(郚葫鷏裥垔戉胷 -陞鵇!鋦亴肄〗X磨彷厲媼槻锏瞞伧U0 #眤餔S蟮腺觤O1>1q+m刚=葉俉`o7W?A(9+齁%刣 邭 ZO錇 )普! -pDo鸬9汥骋瘒^┢ 矯鶸庻r夣鉞`~L5遦欜瘮B治〣T5鯝r幪i5飰&孂fAN4O谰w卐 >龈獁廲Fh蜳处Od0饍僶E秬9鞴叧# 户'兿 婍o塁 1-:嵸vc9魍嫡#装9-]碙徼,(p.埴 笈+窶讞槡N闍0;g砉渲塡 z鸸荲廍s8(垕歫7E8\貇2mz0秦r篽鸗&m肈K|bj]:擉鮰.螳閔<*骉饄 羏bL鯨征z癮嘞CHn.<+9瑒砍蚖绨雘,傈ぅc腖槖槵軸úSu7 L螒閘|藊羞﹃f脫愾陈橵4N!頮x`&_{ ~Et)% "N 盩噼郖{8矿鍉溘耩嫡蝃熛伒@熒D6峟芝 | 莵 梁8眖偐幛瀆o塞椞_0 -g賥d鐓祋`GNg謩.玢糱>祃<.;傑2腮Av懰焮#1= L肁+h.!W ts矎A﹥悲;/Z巟舳#jB毀恤!k1?躤<.晪717荥扐罅7N(洒q(4X埳舋o瀭l鑊榌S[莬蟆 n邿巄鲛3B渏l鎘噗Ik})7qz5结f沲t鬂賚鰘鰹i|z埯爮q?簂4榾磥8浄}*U{ZG7邼M!䦅鉈i崍O|耎wA%o饱黃麢2#悉餅忑8涄窲趸鄃鍕;鵻呕f姓遠羏嬮頁㑳蘨s6Oa蜗.錄7弈+鸠5<鼈圳酓oz綡X+L蟓9 鋋5#$穧lrw!飷-=猟 -鯪g臃9\X裵6禸4俢3垢鎞 1瓭嬝糾r 嶃櫞頁榙.#+GPqe#磷0tt錒徯3銗-舘蓟擟X|O&嗡騛鱽|踩蜵頺' - 﨤v 鄰 典猘xL惰 歆@鷤K9檵/充|O處x窝匼泣3攸]觩~ 幉2'末 !餛@畟愙l嬻򲷑;a湨侽夦閸sd=^z鄬饓'" -綵1筨倫籱:澉2暻43儸n级勠u2>湇s枝C萉羱曲+焵蟿Kk蹬81添鉁?宣纆慙a+5泷ZE|釲窳|蕑;%o|);哟嶷_Ltt鰩蓆T錒葔`盟G皺58䲟\.鋚 -)呙}# 21 勚Tu\夶&欗@鴳AN讣3踹*鎙煄s ra韉須Lm|6熪黵9椌C淿>梕礝F淎骚坟慢F璄-6 -xwL鮤滯R刼"%4寖'狞痟l鱝巌繄>85緔<膆侞P!iq 4(s牫圳罾摐]絣LK'蒂rE4;父 惚mH堛瘼_w屆制=}e蓷H毗^|喹郖挖!>偧'X蠣 6嶓(佭 {!T騳f儡Bb鮈 ZC嗲匄% !'a腖戭疟|餫流蝋#2嘼=仦b E囲怣!螘蓌K巋齁鄎b軩j脥筁% 迟=S赴耡L@|xf刢>鏩.胬晫里 -飪.餸SH煔Z -~鬺y沪睧H~示牙5l狺廞4鄉FWgO忿沷j7|讦塴闒[瘸_彥釖+8∧~i6 _6乒;詜鮏恗仫"◤徆8_ 溷袝4t牌.(凳鏙侽b装薰S苢|H0!簗 鴬槍鉆q廄G擝LcGS带6}犁l*溋枱睬pXT賖yr?8萟b綈贼. [r\M诪6`%抺4甋}#=牐[n巍JQ -寃韶'1!;傁8絜"芆葹Q-楟B讄Eq珋孉bd(報驟{g?)=j衼恣jO儆5L;兴T矣刂!樰唋鲻i" 9焅铑i伥o~滨頻&s髙p-峂潫AL.>㧏f6遊Ao~%誼3,鱁噁艺g飑扑"沞z猕k犁艇o!g逩l椤Y湖浸羂镜c9誼鞸靜剗]繟 x)沴!葂脅U挾O6N2埢#>$.[闹﹌f觗L餕嘬U4ft辬$撹Sx處m;霞遛~檁贯采}鼸g决靗怉1磆91餔鷊酂釈綫C^誸3$:9秅-c跓/e6糪4? q ?脄nC鏻乎泮幙榡.b4[粽,袩枣 @0M漘 ^1無坏銵荣9鸕q捐瀒犌'洷}2]zt]u揶扎h.怠c.焦鉑窘脕踻g骄s琊屶縼g75\錃Z 》<_蚂靦骣哚樈廘.^XS 檆蟎徶抱 :綐n'鸂k=7\佥F~w}喈 C昞PR%?貦j铊澺濵|聤莕^_XF躾肈o~矩豽p%0{r薉﹃珹h2熪焎w?32礧?六0檓S樻{sg歙犾伬婚嫖佼畍輘輧n齯!]|趲O?0曄齴&鄊︶謑邮c扒剡 [zl(!U魘螒b辮藨唣l1鵂樚}SC'礛燬禠4滀XwK楦镯惚繅τ錘洤顸瑃裹v}梄钯,孓O耵曠A飑梸0v嫠S+7夤o^x褿^篝盬傪蚼?笱淊畕2忿p氙-沶}纱t蘂虹S榃枨L育/凪漀n沶Q|觾厊扪櫪軷&塹Ec葜e sM<+冐駋-`3$o8谿f鸆f+'隼=p廲=\藉嗌o{HQmR嵎?5>鶄蔺袡蓰a汌緑0睐u炽电荤!M飣曷厩篼:襦嵳n窍]uc6>\hl郭檌阌9梵S鼭%介葿堊rA6W樂軤;畃L雿呍鷰/@鞅慆k陿 1 訂G矼洘蟯羸銃z怂鹏帶薓籣/綴N韣憷|跏{侓3桗鎹葉?鴇% 姐w鸲Y8怨=tO狑>q乘㥮聇鋑=藊軱唿蕅飮 -簘鸆樭謯{畾-澦櫠鐙豳夭禺 |D#r瀴禚W Y Vn;缙6=樼家炕营麬 ut胨侟辡fa鏑^l縊塠n榆單%|鄢戽gK剀>bF辟{?+钨軸 鴧螧爰錅栠鴓 酷裝zy.砜1挚28os琏蘶<滠駐嶑G痭p癁d沶@u杉|揓奎-Y\殃琨*|歙^*錈=3?綸漩銻咓冦 猸h_Wr'燍 -鏽G汷 骥突o腹间框纳H髅鐐剗淄Χ_耺{鈈>x脹甍翫誢7|芢劢H97]7猴宏岷愫&结d□"z=g酅痻鼛縬线棛b2sq'燏2荿橀/Y铍嚝仫2'驙O框b.< b慰d吸霤濟踺o縫冤熫橩O撑囩s梑櫙褂{轹洑|nj齣>f遚=鬚v赋癓ウ蛷鐀m虈痻亅洀^Z庙厩谢:眼/鐅?爡齱莨c堠.1韞硿甍繢x鑒:鼣4'鮜x萟z紟94跪(劰8橔娴|蕗m⒕y罶M嘷箎齷莏骣絇領G嗠e聫w -崫o漮减ゎ栖~蛗髀冓b傩橁1浪 u9楼`繽錦z}嗴澢x,姧/噞~u<\箰):宋檝詘鈍苩5硪9茪.嵖}7肛躹箱诀毌(讒g揥?濌v駼岎 ?qW戏?t耎e計E烙hd缲嵂#Lh/膎歚3i躱?' -?/~糚例(楜胗瞌;轨/硺/觿媩锓Wtnㄊ竆PWv)称*牾% /;娂懑u{v綛x~疈|貞G遼幤3慁頖O瞿贫哏6件B<~7许豫骔鱸筼焮邀狳軭穥 -厠澅躻濥某WD 租莓}熒燂 O 湎 N fO<訾縶睷8~摄覃 A漏獳H绻:>%od缵*巛o侒逊N再梌鼉妲棅/驩飂s/;硡gw箝麖b\.鼜凰v3]я/>簦7避弚r臒畷x>=T#QH_yL焫ff犊p0暈保嬁滶U薮Ф結 -mw<]O\3h>p臗躶钦*=总櫭鋈#抽豐=q蠐﨨pZ崛}嚝L{~_n:糈橝鰲=q逽竢%柨y=绍q5埤橘r逩{ok魚部毋鍓徂 岺梟禊鸄l珲$穏g蔠8^芥廖喞 u》肼n諹適甝s拷术跎b媲鏸鮯>赭遴謺 7O挺芳^耼zt.c易[挢3魐{x諆7O鍄<>V晋穹哲祹阗咻W;%I潍cz-_猹爄O>a莧聛[玍=廉π7;澡z鸤5vW'舘闺@泗甍0穂's瓦^Y莕雙w葶A习铴=h疉2W觩>*鰾^5葼浅綍?~_*⺶簒阵C狈*癓禵H{!眗泫元牢杍森怯>v謭 :骔?9Q跑y鍇痦2鱁破2iGπ泘龛袢c渔瀘*:?庸L阕1纣譺=]琮餒诫媖e芙;)聯圪+燒P)>箹蠝{靜<鯎Ww4{F1?荀c5搌蜎yz+ 鎑鯎#U嫳N取鹾诒淼a啪蘜q蝽R鐜葵踈箕rJM脮院 7C:[=燁筊*鼃繍A>埤U跼飡k曽睡蔦蜜q鬟1q蹽v".缧Gl馳5`W賀ls鬏鬼m籫r輡(6?X6\ U齼=靛"崮}+S膵W#陷峬沰,?7薚tz唖霹YΓ?毮Sk饅鷘靳衽 /枃輒lL縔袛v碃冰Zrm仆傰饨sY舡!畀~℉維覓u;缓霳J蹑k7馑v\I(G颷檜9*|ne䲡飒堐5+*g?O/ -`緙.汇'灨(灳.汇妙恧夙漀鼪还.?緧b}掑吖>竤Ss`鐤&螡外汶刽篃8_褁>Λ腚p姝泸鉶:lx猽荇䥽鸻+煙玓xs飝,s钌Z媛 劅}勚Gf耄ef顕肆nw舅鮵盎n趺#暰7唙ls发6銁^e茼Ⅱ芦鍥/'U炀W~騠d膳会Eg疎棡Sz酕d裾霊/_*絧!鹅嗯+ /嬖拶P泮贳b嵓UO廡榥齱愃懛卧缏忐蛥9魝?^蒻y闳袋篅仳刦鳊Fs噳/: -'2'徱腤7K劅.椥療??5亢P牿鈐s颕溗錬:鋈孟躴>K|u碚檴E往烦讎t秏Z*衽廹_讀?軸珲tgu越驓怆iU{U溄Uz闚d煞w#KN'oE暅Ur靂l搭謃Mx)躬鵵JU普驩9\|9朸樻插n遦^8鴍ジ镩*醫g佰卻﹏w?靼#脇齔&鼾崧虷滺狎鮔X2慭鏤錨苇N絓R泃堕\ZM糉$э藓8遾腚嶔S幞滫诔夕U泡狣蛘訲r%簧=斛悄錱.w韗c顼A蟹葺雼l-竈5瘙蜼';棧顾桞Ro杔唝傁壂1;梠紲T诀Fl;懃腼腤{=跾CY层蠓>N/熆箫o肕旇鲫HQ蜈5R+7烳珜絑Yt还2鴙K祇g{咘蠋U埾嫃垵鱯姑]M眸撺茏鮔誵2福m}@g{冏=5+_|S国j钔胠芋縀1/灔鹂]+魖极j账N弋q挈褘~t=齐窬阡坼[\o澨t硪m縤W櫢"猧楥|訄J绌O庾<賀[r7刀顉J曠訚N{颤蒣譭线 -K_椌|-y鯑Y踀N烤 v跴龇k殪镒襇奎挵[aYe菄廂.⑽點祊3陧遻{惘W禩^蝚軀)6鷑韟褓諀铞$鲋誨衽潰;璏壸/󩜎昛u鳯by漤:こ慨5亢\蛾侃j惜j:浿巛蔧焧,扬A[ 骭O3榍忋筭w戭糪纟靈凍喊乌跉)夫笩:s┃?荝媞均v諍硂W,蓣YI順[/>鱲庴撨昨絑榰%痜霉 -d*v淢┤笜_钸裐铢x{9箨u{鹹4箜O葞{眞'<躍焩桨q镩玢淣}&}7光铏膴?{-逆sA籇※/ -{肻吺~幝N蠊b嘄 -;{舕S|盙.h麩i o絔H01醔iYU;綤,;昜U{2茅磰掞螳3v港V私x炪J欦=諚\蘨X&泫敧7T_N滅r赘9Y厚JR み庉,輢?瞕髅2w矖o齀Y1d轗^裱x[扭餇-鷠z焪侈櫖;梂,bm橲瓨2t糱渂,簀琤`鱍!6(启癠岋3Ea;|襵峛诖 -璫燽n鰰慱~篥渝邹r'J漼粴;髎犤*谙ふ:_v鎈|禀cJ怇_辴9ズ鷅Fm终敨 Mg2jv9M┄貃习⊕u锘圝T "奲纮E13軲w載P$奌挏Q$(9 -L`v 9svttL3銊谨靰蝯.渟鎰<鸤左~sq4 莓ZUu嘮uWK沰k -}{z鮗*箢m~驺氭{OR7=|柌稀6犄w>盬遫3疾wo顭s刑夫O擐Y迖e炏Q裂$'i歚=i儸&6孈H#灭O嫒Yk孈LL4窮)酩緎跥+'偋鋼'齅Hzj撯黼r荁艙7%7遃D杰踈zР淀rIC鲄Ⅹ] -氡]l貇备褙禍鷖壮j穄+h丽羹浈茭ssk/^袭砗Y胸0P寅鬷rヰ:→計魩咿坹誝+韛I樼Zt蝑2]m叮+<M烦E!綃{蛗 -窙篏8 G唄(偞&马依_jH蠚}躩]黈邙' 驓>c0蜌嬭ru俘4暵-'/斦7](kh篫谛rq]c吓鈫m/h8u!葏己cg箅喙Z^+ 楙3k走甴銅~U舭岤砬鼣gM蚲焍<ズ镮n撟kA$h%驳芭阈?溮|V辘7zg獑鏑澊畝効"muC4襤:1/箷1搤纞悖悆mT勻萦婅g籞v/j竫!穠聠漌 皪=}%沪h牚%潲阏77堵攸鶵N輥-讑靐{V笼躐啘[锛\潮鰅n濜疊琜愎裺楕!k C声k3勭窶鉭餦砜存?jn䝼居艧7吓iKc愑嗙#荀SE塬颣拷]鲮d]猿酒詛--i浵炁,撔-椫5B?>[詘鎎.7哎.5<簴郁阥V濖噆屮"齘 滀#鸘H骶.x8"睢碤>_3!养"4#-涂3听掂Ex3c蛵帊浵lh槟吋沏 殢_蒻=t5烽魠Kg -毼炏o豻惮>牶ycYS窄u嵺p辵+粇On]GQtga嵡Ya緖>S缛店3g蘂#諊1–吴?9ur58咃 #Q~檣凅P<囎嗏/=lU 蠬d5Y毣!跡裩~H泛荂羶混7_W鯹莎丁1尜葒u5B\y%幗署鞯殺^粽秒}左阯針酱毩X7齸~K鼗悯8綪:辈y5胥蟤5h邕 禰沑]|卼褡02{-隊 银躒2虇螦SF#菚<v7BZ某o4誣^O芶畣{ 6_繕佐麽+y洘\*仳鋤铈{7硾蝆蝛裸绸蚖J}? -薚h剚 橻漖大;燤:燐T %喛癘4禛&搜4W佼禿籤駂锖嶴e嶜N7>W衦鵅 -:鍁溂樳r鋌^C缗恸靃u (╦俐骄関a}}泑遡撶1h 59kO>NV⿳D#4053躉&&Yb?檋MD4' C d34驜S楀!绱/3狗rp躌忼鴦喖[誐+>湲妝驳蹣豓vb7b騧囟^紪U鬒j渟=璳U堭鑯9i憦 -嵲0 /~_<5繴 赿>t"i82uD& 慁df<藼f"c炿蜦f锾溠9崛!h[焋+~%DE>轜{g[5膄O7l凭稆ヂ灖姺~{5侩碚哌踢v^羡{9漁ogm铒蟟嚰隋0樒匂A齟甧崒4婉O胮/傜渠S蹝県劍-22欒!S9h鋒74莮筯稥m撺鲸鈲'!s.у虇啹)m絲>垮媾紪[楎7吆懹r鮞n衰Ky-5\丽籼諟Fx今zq诫 羪闘u[沗#t塭蝙鵓bGt>?廂裓k<咞梢6矴"藟钊蔉,ld萣橻海慵谚,搀璅嫴8]f*_炇=U誁鈻K嶿太潜Yc蟮g6A畋巁p,v齴v谬K 棶46蛀".屴╪3t焕N%朅<磥僺P桪#眯鯌菳Y虳#棦塿*4yAo讶rY帶讶I9V孎樆<蕊fJ浶鉁/O;!"祚烈刐]暃)o竡波踽孤妥.l>惧軙禚7r? d5靠椦蜥~V9!&貔]P偬 鴂0 =<榹兛3揽5Bf萊o"残煀虓g`<籴Y/F&嫅┥R叶讯羑磵崯嫤鴶! 76r:,睾\鎷~/衃1枭覧-w/7?凝t?EN坦o飃w扛撚a鏂她98(玵/,8望=6蹔H?3V稝8C麦9S嵄比麽00b僃鐿莔泝,驺耖屒崥尙'爍.賖ⅷM嶷;【x觃F,f3o懿╄Rm韱K晆譹靧讽桴溒c厍鮛薾|褵蔹鶹v藡伂栿梤洅疃展_Y 鮋髹 =x*S sd=穒彟鴘毂 >欕豣{堺No&稕鋈襩);濨6sQぅih侴>氳殗.KGV頺 d+瑿硞丢/,{>涕0E黕X量緮锄跂事髐5]邁鏳駯鐘{螣蟢劀a阃矕5徾Z.<後蚅酟┯~a盘跅k扻 bD旖4/映贫檏幥v~,#蓉4羅﹃f竲阈H=d7跢>櫃b鹢銉B愼孒4nv 毎$M铡q>.r熀C蓕渐麆癞'仟=U穥c踬蕟}捂7>膍籷>扶膷梬耀紵仰㱮茤泈弛;n&貼戹沓 坡:阜麴\3舽hAc慁皺く汰\鬍p83G吰蘠盡! >葇32鐏蘥1巟T94鎚zd嘭+X,8挓w}贂蜈 豽6熍4O飀o^V芹Y[~z愘矜vn绔乴XK~&坢黃'8h? q[p簟?Y弎F悻絨;湊臱Wl+!硲貇宼63<譌[,F枺"+s'4zYMf续9Q戎=蛺w+帹)9tv鮏]莄聵泡繌r(恬|-堝?=zq搐鳿m砥覷醴鱘箻踭黒A,譖馡'/.蕔 鄷雚CX甏願壒柳盷兙M嘍嘸%uIz2慢d6l:材䎬忪H4# MtC养盞稐柶v>o.=j)舎躷崨摐 Q%毩 遠泰~タ鄈a旙{a欕K罞鬛⒐镞/悍&隽帵痫张>拶襲v]K枪-qOz7噟!飤]淄沰7H痭籚脏鮊爂郐M赾@|髉dN靽夰跞w圓繼歫Yd4瀼嫒X 秩孕Y岓E6藀|缄旀掙w#栰.鸉皡xr1a蜮-皃k瞏觡y7篸-##符俿缽BG!t$漭氛C>99臍 w綐讀騤v]嵦'壮> 鋠芑炗J}z掑歿l伧fl陓鲥0>!26b塅虭悃";蟄葨NG#k恤#歷e椀鏻府3疯蛐櫓5gf熤歐rSw^鵖齳e蹒e_:?睃洽梒倽藑a癫=倣S誗3>a茬}劣鳌 鱷!(鼮检歳饭bh譔;甾甶3漤飩@OC蝶 O$祵OQ硻间楆は喇0邱餒'd6欅J衐桿hU偊SΒ蛵蕙酨u蟨q痐奠4顭勐<椲翨*蛷凇1SQ庫祁襔捵o复鞕塻笙] sp|忮麤,c2鏖J★侘a遄鹉V查-}痫$派_V宣.掲欕叛_C?咅囘忀峈^x麧DW'e厗┢祺`=f汃衠8譄兤XK迅i寥!M騂Gv襜4輐 毐$ -M厂唁轭戎M熛yT呞偆cC㈦引/=>稡蹰诇萶髟(~篫*4鵒縢>8欘冲鮰咻偨 閫"!瀧|?媨y7?7Ma4*~偣!Mz]P蒾緬yQ釢M齥7 T5箆|7込?1.!k帽瀏笣&z惀鍇4qn氥"磹蜝媌5謂5ZvI橁窕 W+~<慓齟 #郷^-圯t檫煠夻&鳸{$H}T~? 犰彲孅_ 羄F珠xFVi鸧|d7卲Q哌Hrw崝榃矬靚]㳠K毅-堰頾I譁毉靮H'*%?误X赢7a"挧齱!罘1h挐 枪霅C靁5t恬豙圊揁E鼷]堭鵘P<漮 -s葸铪Vみ锘橻2PP焪藩N耨L辩qFp<*貃<腛閗a朁眠3暱墉>絓TpE;蟏|<訯>FS{v"c雋e\焮膯蠃7_ z荗濴徂q矊婢憰Cο K e-柽铅幊p5M樓#麪跖U/L俐过D鍷ㄤW!V驔 鶴堭}刴羮(侩偪洹& d|'膱o -滆斷%a'):`%顉c/鳾箢<B汈碜鼢鶔裁忠枉缪?y1_鋎7fS乍恣3(嶾U猲^ yx?⺌遵褝p`+/蚫湲儃茺gE听w)翦_"ǔU瞁>)?.T?湾巪PRk;蘾潁懛鉈氖X掋)i:S毢隊逋珑P;遻0呱渫w缟sZGr臶(7tO鈀韝^簯8鹪8稪撅箶隈誶c灛|蟲撙}高f猧@䙡@_ 焸芁uE觹锈劷C芫/08縗kt>物道K 窿徼懎屙尲\e(@8*X=4:C?,縮遲c Wq訬'E鉌! 杊1<B.坖9o8鸴%s'k0汵*F鰺鹘#{ⅲ硊槹4m袙宸紃;_{5х0]痌晎瀙鞚譳W$R闒諟祿嚲1倅6Y鼭1 8/[脁狎+vj.^盨9簅圙暄a铢荕紇莬黀{qr镏l䴗HX&i~=K殷i侙愢宣擵E嫕蠰隥h帴%抺y⑿窾簯k矴刧晭:眬儫軝/Y帛撌#垠wy拧I颥rc獄$zc1伲y犒皜w棔煓D)酥枀%k桑礖菟巫忄惴V怋濟繨扸(铪8_轧n朞3e,4 Q訓●!>碏蛓=s倽9a╃y8勴~作< -鳉x&5鑺蚍lP裡%┷7A軁過茺剑*$澻l楼w宒瞱Y1籊3q^葈馬$趿﨡*AJU埡<0D)h禂5_-k0G儿=蔹鮘s蟥韔]貱/8<賅咕m浛艎铨喋:qweP@~丨sA7遌#埘*ㄌ:Sq:=熉#<譄禭V1}匜X#摗8纘,1r谓8荦夃骟嚼覠~(犨%WzN`v 螔淰觻鳽&萲NL:衐鈯魽S羞y蘳@顖g褞+豬淰;藧䙌La踙Uu臇賞`2活郿E蟂煱wT\S#椆q訿0{'虞痋樁{嬮3溘pU鮹(靠[fy罏qtZ授R'>睞O畷竆淆鷋冹w!]!8颳鍈XX酀7躀<+渣Mg縔诉|暵厯'5-驠i"5e哓R迩m}d*碻4磘闬$rqF潦0嶐闳撔U姑3狥>_胉耆稲'O槲譑濂軻Ty 橱稣蕎!m~1W搡禁_M抽鎀\換7B瞩h雏征罜10OZsn姼|罜rPp觚拘o骺眺%貃\= "熯ョG吝纭噻wU| 滧脆敕駝|(,A# 4^们-:88 厌)趌b>hhG"倚$MlV%叝-]秛)霝な.7g 糍处蛭麐-蠔0%郜欆V &B巑£舡樞鑃)濂26优&(? W菥U 痎蚡隹椛:.dJv廹衷+N贘. -R赉垕糘=矌'煸鮈9<#iЬ!a烎!鲵Io a⒓f^続容飞.\哱.B騽 v 喵HBU^4籴_.䴘蚩峜猳匬+!鳑亏>a茋 -礀-#O -塗忆嗎罹 -茨鵽⿶7r歯<椄 瞙鴛uOr^靷驾EH&"0L#$10笭kBHQ R詫G卂葋+_*e?故硾惕c=?8呻歀dmwR毮x藧Z椀浲橺縶 s;铤⿴ )? 瓮恎t楺鯒gKw紈鲘V桪岜8"Ty鄼娹觯;\G麹蹔N遜庐霙趤匝#抗=噜痭}煐适鲘肀抏秿惽楄A盔LP洀呛]vd郸=U<詴蔞雠q槒X呬 &瘂4蔸袘m{嘿爂D魟<″贿{@m6皥邛貦隈昱ilS樇幯l&:凳坁[o*o纞~'Y禽晦;綏Pg_2'_3o児筮.紬I鼾預焫瘣铪 [蠀↖俉i@襟'o諌+僴]嫁熗渵珤⺈僮侶\yy偋l9歯>M3嬁廎~,扚柇\禞搳H諙trqGK饼\:邞鹭àrC&!WO緜廜裊&fTT铅鑰V啕H④H.*iM藌82踍{偖!揨a膅m2gz釜巁 籸"?晡W盗摌m=+7灘跨繲毬杤Y5gf1U8a姶鲹摯褛虁ciQ拪6菠#Ww//B嬬"gG// W:KiL墡$;d&槧槊G%8䜣*(o8纽3&O叠譺{IPI>8^S*璉亝慣<\QPk5澦t^^*X刢i;Y雖{賮熂过哂瞞蠔G両0 t蛪枣嫧嬝璷饺\o爽:巎隉穷}纜鮘}藴}耝xA{蚡熻H畲捙陥閔uOy8墤t睿騿覊泦覻=7妿"f韴S岜0)膹 3爊呴藮楲配鑀塃鶯^鲧鹮<豩皮谌莹帥嫎围.填W眷灄bzw⒎斤祱 4錆O穗N買;A洳扮9>P鄂i輊;i飨嬥粹a蝤,郿鶐卧稄.牄IU鞜D晑5Q^u柎麔鳢薲)-茷4w,dg:9L槈蜌冘苘惙箉a邌鉩鶊溴!F^>$ 嬜惂凍 ㄑ璄喧c0uJ妋鴔M珂s]O荑瞌螤費%溟1;'盎瀳T{0v俨6\n(心鈝邨+口.遞#踻諡禀6?"\恩癁沂3厄漱閽]e%磺J鲁$*uy笟$4U揓豥(]櫓絧9fZ4y.竺vS唨 陴蕌籰UW=7w t鐯疨*Dbfn扎冾 縜$#舿` 揮o禰;,Ⅶ|籁鷡馉眂锥3z駆J1┥薾E鉀篕硥甡)T茅Yt韷LI8簂俣WK邒o$灾O簝6牀! L3+豫灵歍t橿pxl -魼SO湲:{H蔲o眃跼M麋螟蚠W宎+喲 樨\]*&s(hG睧{m錄-$5日_凵奋X禃⿴?R堢=XA>@迀}.媫縷阕S6曜榮邌I麀v杄w標抝囁 zF藇$雧.矟焅@ Lrb醉癮s隖R鱺&邓寝(䦷髱{sd)礔TJ1挣~┘巛2横|昧塼N粎衳yj硥吵9贪GKp<侕%撫镓魅#詨鍳駐⒀赡 蚑2.陛dk1;觉ず麠)E霉 =鲸賷;1撦t|]哭躤劭[棋礨2k玀光}礎g詷嶆'佘f ⅸ鐑8/6柾i Z掗u#桫 :綪忚韑東O辒D-Z箴*賷 m〒=n脩)|73鑴B*\M$ B0灘=.鎷W俎鳛增7.詭铗围K竨&伓;0=/\Ac 磭桄A k'枫?{鄼=鯸舼龑搈锾l鼁栉佭7_欿鏞睚裑辮m曒e雑虼F厶K 啝陬.匉q畜鞨系蠿 j&X恮縓B譥橩-/赉摄<驁K0淸3)孤灡鳽歲﹗峞1YCeAk4q漓犤佌欯妸蕞\7s@[>壠u^鱔%Z谪W萙/螘u?^岀#觴l6踨a蒉繄遺譍調_契荇d掇vgv~顴稃N6埧s7#鹳凋利棆狛>潼4钊#豛&籷$灮鎏罘~P婯稆軼栞k犷I%藧<禱熼呡駶7鑻Qy]de'葥泴!鮬fk}Y瞫1Fd 醀U '瑖吊f)\%噌伅 py佂Clr0衟a鰘肭}琓|ㄢ鲕桝氀皏B4勈w鄄珹雺?;磄 B<夘M鮹魯u=[s48嘞$骊smV稰坜副舺ms壬臇mc44ǜl慣6A4咤+S村9C辄1xn;qNI聬鸕O#*,Y/<t腁垑擞2 踩d-O_Qj鳽X侖h阂!墯%6DK警霛臈鮈+鯫#Z)鯫N&L懎<暬颯a_]垔LP礁.渑鵭〞寰,藻廇^ 9蜛錄;群縚"89Y翰xǐ-灦y銣4潏運UわH檭焏抦欌6燼蟃鄻馋沋lr礗2B b=禿 鳼全e殸鞳璣g佋毆岵l3 糌Xl隦6鬆7欈2R癬馉欻鹕2ZFR+挻$R躖ǐ渢y喍Х乚$2皺肇х洆巿]L芦你 4∧21⊙殀"c蒃觅D<梤Z-丟贓妽靾.3帯傩-UuxΣr鑢硦崐:跺駼緍󓎕骅+ ^75桷k巐鱩W埻@3攑硈,AS"瘌潟妢X乎樏&狆n*h2榈l墳<|2镐Z仑1驲聟猀+哟 Kè託Y]b( 岂 秝狚肃\忴驍j衵W糈轑a薶>+-爼.累bV皮謿咥^嚂瞭-褤倁魏#3弼{艝l龎90.y鼆{驵蠙骟 -7!T靫.⒑/悴Z駏5箭袯j鏞9!離簮^;幭i硠s髒罄髩ELt2O'@ES1p-R醇蝭\懨h≥|漕 簻拹 :テ榊縢揬i:駹8)e剖琷`蟎,R 衹"|6效脉觯m!+h1蹟槬/锔镠N a廄赹8s孖(7膕C鏭41H娡榇$駔丈苕gN| OU?U?f谁ダBT歳匽cAt鬬?3y=V$尕pd*踦m>唏覎飤幔昃+罟-Ul姐 鷫x.螾磶Q錠廟灻v^s巅鸧褙t 1巑槖m惆瘺B趑馐 亯Iw漡H呪 -强劷報 笑WuO_z佁鷥撹 -葅_(󸒆.KwM哫4婬瘪郥竼0禿\:p鵣+7遳l飙,;2鈅9@嚚17y鞐櫄$镝6兤%巨诶5T躲氲禅 蠶噞H嗲(>J YゥL*F48O蘏u荏佹.<飯炅霈釟="duX倂0蔺| ]sy6SrhSu鏣l 9⿴鱃啙:暚:芽B蝴+]}j绸釲vm;北罍凔tl~麸萘v?w顗坊騮莢U梳84X逌*±悏屪縃竃*寑腼刟暕驨檾7尟膥4VA棝俺褒旰悌杞' >v荎y'巆澋W柆 lY9!gUA廩_d▕视 褦 M焰垿m>裈^縞纮H)n嗵n癸6N(1$苈马倰+F清SE本{Z軍岔摠掮瀬钱.緑6;魷1沣&A儨︽懤"Z鯪&Wl闛豗砒邺廖*v庯 旟M3V晛gvS'舚翱裓:WPZ薼 +a糣>鯿dM$ヾ礡鳯犻MtO#Z芾俾~A癀脕W擸=J咕讝;縺- 綋ボ~W 12芩b2qWでG jq⺁雬#褭3鑌脃W矸蚙貜F眐u讈 #0:W豎束L紸vV惑/r)牢 -D1餖R 罨/ 鼝26U3;k$俺坁飕執Y[(狾鬗RbFt鳺骐nWF(翽特` -KU^h楂2-凝獔*#慊|x?鰢邿7.+鞋嗰推惚歓j3)ǎ'd蓻猴鼪<龂铧';t徚迡 -餴佬Tfm+_灙 k驎k噋k獙燎7KD叒夐`59p -w兖57@溗gtl?:| V揓M耡]]4尠豐妽敼蚔獢闍^贴2輳輤K雼2[8鏱_9騭",3莆kD泞@$r梑蘒>TB輄.R rGX蓴権l貔K蝰滹 ?1佀5T錰丒浨騬6縎鹤 秚螪邪=惓R豢麈j咸<俺D癢 Rv枩,<屏>v7仫5&输傖A1iz罳纇涿促饃-E鰺李6/霗 D`☉祍鄽 ,遐-精"滴,0匪|鏜w報>腡犕M鴦脎3梧[#y汫s└嵗彖緟悱~椑禚血鑌洁:嫚L溩o豠qK鸽濨饼檮礓舟劃E&Q;媘贯H豗-牢茵吂▽W鐁穀乂7aSI豗*';玚悵3;+vV&(J僢qn┠q;募缼陷l肋X`獢R9&k夺铚A>荌{聧)i硢摺W遽Y*s6Y-V利C4伩渰踧 肿=w` 鎁c踇?R橳mJ1鶆u樳n蜅u倮 r梷)甫lI5潯#c#藻A彡;I 汘闀, -悊ak礥饱啇擢26 豥n泾i暑D頤 -6烱,5_H┾5$睵5 禊辆b)餭1腉b縁8话鎵6責毳凕6苔c牠9SwlpT # ,д -麼PI+蕣C38W琽2+9T貒B淶s豲& -0xp,bM豾,`_Pc蘞皋括8劖?<媜父bE腐靫啖鐕9:搶M`薲_4塷婚銚雫麟斴鱸Cv苕9l?並'~b:酅m睡.黥橒,]/旁灉M7_,U#F觉俺貚{W約<椨5船叉|j -ag+殖蜀,砥m马vV ;媜鴝踨n厕妢*娔氊鈇﹂=_嵺]9/GX笈;&*霂香毼. \[哥扵b槂`鴷踮r|鏼w撼 V蔗i莱馂幬P7[0懕Z|諡i唉≤}梿笀琺J靊A觝`V:棜嬻/(絺0PUi# 摹| 鲔8G儀焢l .*畲f竦'餻觪;8t76k暘乴譵.(NS.芸"寶苴Q勸7埫b 跎z聼豗l蓍$o薿蚖 窀箭蜝冗鍛橼r愠┉f繨S攡fq饧香避飕q6鈆N5"寀e6浟享銇鋫馈9櫕>h嵌渜纁l!Ww毮,d酮 -|a脮鄎?坢灒l%五活,S旖C觷_鶵龓扒罟+藦 &觬囻{锸B巀Yy鋢B鼐藨佦槥[.8r唖[ぬn仿}壽侯壈讔[3TQ瞱蓹[8*襨蚫+S唘~5p稾<~`屗(u<菃2$"&2}那.﹂殟手4仯 餍%&> -棺 L崩Y兊m%惬O勖=+<5L*媣M*o5炜彡 茤d順*=閗XoWAX绘伙鵣=僈3啵2t匦D-EJ刈妙~!R韠≒l{(f[f!铘醂l%\埘ナu;'90oq蘂b謯}S`!E^%0柏s閙O\〇梭帼.躱&祹1Ez'曪 -vb)EZ塖F -郗=!l唛3蟥哻3狷g騳"V劑傹 -眣%戆噀2A籷麳|烑l[晴8o 駝斆 恰舔!p薨鲗蔺 4琜o镜槶?;/vC 诲 祯T顈劝5珈壄诬d1+|.1/a%馂`_駕皏yg癌滢tH浣郼狍檲x-負k崂)b僕k嗓A僉膶茟繲6两1&rウ繌7巌坃嵡躢N輍23z啟|XC厈3*  鹔垜嘬T%綋uф铭將?|~室僑复'倣椭U>丿Q'啦徬覂鮇决<`~岸 椦4騦r9/0葊梂竭颅f{馰湥>;[NX<碜乚!洫x蹷  恒蒖z鬂E`8扈问漺d缐亄鮿鯐\fL鰹繸#*踓藭喔3'.w軾"o烤?3囓覫啪瀋億鉜Kr#`飌f兣`屲:P項I炷楊楡叆i蒛5 n绖c36a?So毋鴵圐Ve;'*箅-山产#迟巏K国p煘 艘s+炸貤m郸Z/;犁擕5Yx<涠[銑{M{l⿴珟T伺鵗觵{‥ec2u徤痞(謒滺鴓皣$鐇~%觥冰z蚀Fs`*鉗産+丁{Я樐9>躿)EB缓訮慠atc>毈筢湁鴠p崁/-鰰 巻騗割'笼V廦..]噷m`L鉱({yL]%篶 ^鋬癵KY躢{7`^羪例bEj湮`!$荇5屔#`璃n4舿虜鴜嘟b浡プ訖饎a縝v+av+!--3!&b兛濵8f傘P樸堞丕仄癰a1E -緑x溼"8毸詽 1!觶r>_?窊鹉 -黙X鐏u蛟R#r荄纆Sl}utL*幏a/m 緉臌&嫀鹗>]S葥]s沑M#麃7鞛鸧仜 B/髬偨R宥!~┾a傘6s敕'愦l 今4衡6滴􏍬伧襳al-ON复髹ヲ痎姼迼巊総諡商m侙鬏D圄`?0吿G`茥掦&篾萀崴皴鴕|9_/菞闼皴鴕|9_/菞闼皴鴕|9_/菞闼皴鴕|9_/菞闼皴鴕|9_/菞鏲釪鞲p窅]炙@w⒊骷 鼕4duRD491-*,)*>.$1挖懠弃鸔辬謳侄~!i堿硞M盺dm腱={V~腴鸱砯瘫窞)壉黗k鼂kqb则8,,$&怏. t)r* 郥\赚^! I耾孄K~|輺妺 墠&/[阕M1榚韑;藲M# t桌撡殖?g+駅)殖gY鸞+T超民Y﹣疂眉Y 蘲皫厽扃;虡?苦0>|鼷贩鼦>%?*2渚棦n:擹蓝x?縛7\櫐 ) 樭:树〖朒卿锳5)]n%璓 蹪TU2蔥]ォ抣怸壣9ZR諽up攤B洢Kd/饂攀tE娶詷儎慍伩嚥〤遮乹E啰D` 2(LB慶圚讝A3‵)略A 橉UZPナ\D6萻K)Q!1\釬#(帷Vh铀塴 葉q褭:P 箔2y皻UcA ?>]W橸e,霙⑹ 逑(5&l9惗梟煥傄鴖甮鈠#"洈輓(>幩n努)1d摢痣&\Z)n酷鹭徕Ru爩伻磽尹A勚0鎯襨,WeS鮐LA&伻@7 -&dH傯 チ勁i)疏]61[J8GCi1烼`▓桃!睤 朠妤L4錭瞭A -寯啾O/徲d#Vi佁"弽#(覹曧櫐<8C曇`魄f氡馳0巍t$悹鼊φ檻見楤}浭芪盌j茎1擭r賰酞} -ぼ9 廹(- !棭K蔥覌孶y韈5ッ箷)CI -斱鈤#%1Z\K.禓O翯▄8鵣閬 瀘猟M)煚!纾q_&iR!錡媥$騟9乹D&"嚣05 園$b兖!P蛎臇鑳|巹 -W `柅閒(撴択M稿:2U e蠆<=悽 斯AKlt赑攀"=2ACδv4(^S2_O櫤i*避X洨N觼蜃吏J3. +业〈査蹾视@鼠q" 擹n狶*3唕G"邨\7傯Sf鼿掘豅(瘎騩(Uめ -伥B墛猟棴j阊9沪(墊闹I狶(孟'6巯罵al摫蛣W>J輆台R -崰\枖畩彇鸰Y*蚓鏆戌愓>R樈I驨_ tMTy盙謆@J疗u"霒芹k邔E8FGQ\㈢嘲0H啛t彮j凹q鈢8:G l=)Y繳凎J娧XB<! 堿请@釰CU椥2 @6奊m&CuMY笌)] i1F_菋an帘,|旉'z螦Sh妇愚鐑gH鶂虇郳萾T?饏'epT鐦鹸颈虷烈(鱞 剠BK 85銶N汔ゐR阞8* 迸ZⅧD銐廧蛊) 8滤s%.勩c卋煬e鴛67。t0/HY 敉\傴羭1鷈.軾$艋癏t羙:萶焰郑餛14[g抢qX,临纈琞,烈g IG輺羜I'%8 G腰羠sX (9悜俴偣GaAw奏c綫608G珋蟕y驻o僤9s喔≯D+;8"辫wy 華媩s枈淩婷舴鋋.帘*众g2H帚c 鱷謌2伍vy+)t颫;寚銇S謧T吣嵾q,E X囘7鄅:怽7づ#乐伓@y釀藊惔螎d庁)'愥#.騾2繽喔$Hq溶備<0x钓潏%抽 余5q嫞⊿&傑g估黝 -,5gzn儼GEsx>B剖翍y恀蔪9創幢(RttX -] 鋏8:庡N^`朶B咉3p0鎼s|$.My.z(聭a|t蚖槜 m Ga迉鋴KH$K$6奀愗们%葶鹧H垗 傅A鰥蓟じAn>耊繪|?骇蠂-&5惈箁恲朡CX庮姱 ;K燅殑m8|.8 p彽鰳Gq 淎1{>x:杋勭蝭N鉄pK"橽8骑佹耤|d蔔{M=eyv x枲{:M| - 擾 絞yq莛盨B灝莝 峹尽 郯A徸Qq;轲g氡渜饍U鋓可孋耹*:/駈 c2Yp赗V`)'匠枍萚茄窠缶廃僼朩薑+/m迅冖鼌妫1v笫*邙,.a総 %^n 寖倲霦 祱弡剰舰駟Y |庩=AK .臑rG^秉`屪檧﹑/yX恻襠楪膛9x?I厴9F恷Bq鷹|\qH -矽慃/L: 癲e佚5 艒徤趨c A菭`8 -2+豝 瘀r癘=R$锷l|о}uH,熸涆K鄼瞼 }<觛续s c8,X渶┬;g1c00鄌郼頽pod繫T@軅7e6,/瑒\立鶑阌7s>m>錼]!鷬j鴁煴1@O8l5俥:鱜#祣wVU刃徙?七囃`/]_J胵y=猆H蠯^飴2偤s !'d@R瑓p3,壬 躚 r3任2gIT匌)藨|s霊<3洃8 樎钒 2 漢牝a)A蹜袥燦yM 峬G闍.8%獽櫳@=7瀾,菷b橺T3NcA侓;猶叫O笸] -6 =x~幑勍妲朱〕5x箍&w鵐l1h=媤籼H}F8l(蓻-Lx&6d:哽(栳制e"&畤]"俲閄._@溊趇襞窭?~3牉怲9卥Tk#4$@闦tqK *癇a珽9 lQ07窯=,樈 盀膨限S郠浍-翦蠲Ln>y K慴9k)蜡眛鞾螴` 侊==坘郵潗j $鷠繨 嬴M&;屃<8乵鋞皵兰9y>柗F鋂0F蔑!^ v -X鰷陻鹸榢c裓B_Q^PW$`躽苬~+坩鵶~X51梐,萜n3S2儤3"黗A:+欷rh.9@旮骕>鮍MhD璩#皵%z皬>巄鳕鉮惈剒溴鶄3 瞾す齢槆<愠#C }K繬T飴涅鐈颕`}嗳Pw燶 p4孶 齤+朧YQ 缘vm!姣ZdT膀y u湲[ H蚎a徶戌.M乗D殹 ,繹!萦令J堯-魹膎 ~<1m帻 k嶐r9芇悡賋\Ny\l_pm] =弲灐!TNd9,彖1骵繉興J錨l穞!p3变刼麭A@謗J騰+欃~惣稊穬  dYK邏恔罺噊4瑦疪憋3[Ц倮) 潜 uN艜$託鱝W磅rI橤;'s嚝hi鵑&〢塎;&U*僁拾L"+ -P梑 惿劶+^檴 0o5鷗S糓C嘒@/釨[7\競9叚?P輳e隣\ |C5'獰@n 螹餍鐏~c7橢u Hx/翺S囇P觼1禥榌持罶梺顯Oも!&A:灥 -v雴穿 c2=?U` -endstream endobj 27 0 obj <>stream -2b$%亣娢^菴Co;"g n K園h8躽栗癨9)X:;~b駐洵!^V1 釵Oh)}Y -似[瑗 緛陁>傓溉錞鄰屹G埧"溎5H 轡?厉爆噪'@V译蔮,墕e愐丏$H秲l2>摫C跛i衉/鳯閝lxw%X(泮 $?!m.pA/L袃誘陒%:韞葖琧:~Z銅 c|3溢C'P纬E<'C鎭 橨Cυ韊$呟蹦)烮尊賚捻u`RFX 溻@j笎g豚~螭e[xi-槐寵ニx耆镼PP疌濪 zI阠.e9 46赖C鈬膈Sqa. 惎f/較N?[洵b/H録髬c鄒le佫涁!~X狴X9愊[淪 I"紖震0_屏殣/骻筋45竁埌岏蚟寋凱蜻,赳~赑悞漐傷Mb2麅褥㧐C翗粠1=;j:鰈豻萚"惵憞枝(眑H9~z-賅, 竉IX殷к遜=寂襓悯$ū嘟a貶鲃_蜶T;u 縜佾盖5`M袓UP映羪k渗忭t鮰0p坕$桡鯿癟艬'瘫骳狞!^ 珿俐抴邈兯漿讈髨=厇踄X9o0Kw"糴#nx( -=R:x19 x墀+よW涢惽k缞q輪j%怗!*筧2︵圄?雞&:癠傼餿槴纴嗠u/@81r蟎$t婾栗 翃-;鹒/刘2丁萗师Ur牾豙-|:玔潡黺'丁癅鬈 qqs膕植ゐ岇败*喠軇Pr杄,鑗@? 騢 瘊JTA膈P\瘍,糋\疌 C凊"%},訝}J\!^妅u愸僞僄 6K 射蔧`gGΧ頖渄貑q2槯竒{襪_|跴l+胯驫'(洘6緭缅羻B`08q锁81i 6lC!H琒fSZ迈,9銹齷蹱 u瞇玚iB&;>罟b:躤=﨏` V訠郉p霞/{&+姮&Cl妨矆曳坶斒齮禄軽3mfe"M?$蘮試{CI_o榴pc90朿y窅kE虼螪}X錥 -=2a!'A_:4dl&觯`ma$B痺<趫!幇K埌p私▲6嬓7=S`蚍貑/E駸6乣C2l 鹋1`C翣Z腹編s 30!7楔IV5寭鏑f鄒:O8帙剓鑞 -岋%L旋U螟咡>洒gt 95X?54獚喁X蝠蝚槼K;!G@uql^凓>^KL2璍鑻醺a:<秗榜*>夋礼S輪m(㈢9峑8\ -¨'$pL羫%葝;O?m(鎬 \涾/ -sП肦毾穲集/ 盥谻誅畜羰^-`俿W価昑稕巪lR鄔Ar |笂W%禨鍯 -1颋|痔>h~#虅,柨雃;兼#戾&u22峧[,Y孁H 鞎>渣鬷I撸z榳翕(]C*–@騐錈馴拐p疜t轵2,憓1|职瘩9禗淔駤釸t趙2顭An 絿鞼p唼甜 -p -,TP畤3禯<漮f=鰡`泭碁aC慥sP怮玁9粕eC煋1}H菒Y里羻艪桷6^6(莂 7b;TsK=3躍@韴<傼;婵7栢;0p靁鵬=JTZ2鵽#铟埴N!痶倅守篛傰'樋B孋Q蜇錠隍黊孛55乜伣H挀礘XvdT"徦桕:ZzG@PC鞧M\艘胘qh&q`颽l[∽jh鯽qr` }3X脗80柍咜錖俇洱^ 藻` -6(g'嚰5/Hd聖罵騨霁9l噶咮W$葝F烂恇皚匉d Ehis躨>^泾漶媍a捡簡椹Q辊(竁倱(u頸 浔0穲z糢z艵鄿须[皑h楂m3A皝>4,q6z%*:*杽寊皯蒵續XC!,鱇["权:,蔶2^樵.w玾` -4O榾胨 唫/蹓m(P -4u羒癰kB鐲a+n熌卄飩m(<唌(jCa龡 呿h守B湊羭謩Q灖馑w3迸;;q 瘊 -\s:娜 }n-в:1Wz5若Ae鐺 <-f潛鍽賋猔駟k^愛唞 鰢剁<=飲皬u9魪燰圍lCAMh~q催吧偟O惔アK2.W鳹@:<>庥@h!&(T#哉 ]^轎ブ塠怢! 朑6=鷓禊蹘fP- .L+W# - -Qn媒w麗檟鰎竵Tl"?礷/撡⿴m(麦諤甜iCa饔嗏躕丁腹d鼌琰o'鰹 )r帥'偨P廬6緢爮)> 诉脼 锼K ^1佷j焖漧T眥"'暨廉0E铔d攜qO6凶[u+-0綻g叡6(бM:腍_nl爏4@z梮?H娈:阰X雏藛偲6觖厮=傡v]2g@壒斀謝茹.cx琼F驩x嶜藛侸l#Du鄶,#BoyF(帱巖~c 鵯0鹬j虄犥侘 紘雹拪靼蒛櫞騼TZ/魹┄侻皏#Km煕锁I嵒扇 籁糴T璩5瞽汯:疒2鄑槢:饈癶鹗Z履曪a挭暊妗P7纙==x~棁}{(&X閶傇好tN嚘鑞瓑鐵+K<]M'蒘御g&劇H}趚>奡ˋh衸Y钙Ⅸ (X/艺 =l鍌x(帼:毕暐樝 5篮B怽q 线岟3罋X淊\;O癶咇崆lィo -,預@壗.e,绛=脺&u>罱C杓4躢w栁厇0@桏溝计c7衃%渊釰嘴(;俐庅獶緳K--:t衪m$毣捑V鲸1?)跦M5-l囻^遏睠⑺u:鞎Z ~Jl 6輶鈓 蜇x=,G皍"鋊]噅S拿呑汬䲡e啊雜;c琉鶧鎩騦豑癵灟6!3p湹z^B貑聓貑B } &癓?恂"[Tx)b7Tc:揨ぷ┼$璄諰*权肑O釤Vz*帮G莯+躯 `_鼄恈彲T7玅>@爨5!绑伒Tㄑ誋倹uど撟廽 r?(肻犅^鞷銩njM:鹳惄嬢掔億;曓v鈃馎岰Z匾訞;鼠耂膼G蓝砸v 嗷鐻0轜,饖R贪v{薫蕥,7>X-r考謩b7X4柊W 0X m鸡郶q梣踙TG_["; 3財→58薈C2鰜腐}qR鉧霋4j鐴羱狎6頢剮ArXv$-?诲慀a貿銈"{鷑蜘5x&\疉ol#C瞽+\*=┰Lt6潟熿咆贮G燊瀯譧艈侱+^騈^栭PO识儠i5蛞# -聪恁`A嶍旖扨 麠  貜~k-鸼+鋖慜蜶鄜鮓qM惖孨*/L甐2i齟邰_斄J鯽9#媂>溱Jl7咈?;#l弯s}1薆艻"忋?滟:9u詅翦V5&柃rl閩}XT搗13I绋Y衚伣0擟,茫叮`蛯Ex 砓揈\zO|鰳 靽迖m"Q 5癝唦&c壐翥!&m圇8貚=\孄/绬晆摅u -pvTg=喊18o-帻A稗(G.寕u*X邇!鑁繼"轜鰀圙] 滱Y凎葼|u 朏 仛 罄nz"蓔a嗟U翱跦嗵珯5`故卉颭85躻L=惤秦51摊K讞=鸓蠁]=`飱[灚`e馺X3 <訃#s!yw??眑;c)e3 鯠 [ 盓运-禺9B潸窨 >袩 汲拰{禃/}鱉蓝甏d#ck藸鹝纻\p}抻a"縖K商轈lV6雜9轤朷浪黵枹歛#X莁墌繾TW牴 皫 -5%暂幈蝠纚# ;甀骮贮鑓8锩S'/幣{[]R`j-K(汯摾.$5鍩@\=[ +純u蜳拦$/:)媦) B=/釁@ -絋繘藂挿邾x>p4白 -錣╫谰艊0袅FAP轟[X硢祕lW}LX縿~!祚>縒"5S劷x-zX!灹\4 (2罿3膆 丌拔鍧[^G<"埣旮醻b盀辦3Z鰞m${>t:}趀糶腸鰝, 9韡腖|璸=6|佫6夝敓V*鴼苄{所0?Q/禶腠宣k衧+凖a`塁]n;南n;絇邴+S鯵A瘒烼睋 y鳐衍齴Poc|ccKw; 夺A诛/ 拔 = 貜Cnz誽蓇;賡!親S 糤z姲v 鬂趸紹鄶<哿8D蠁^K:恠$>7傋/F文鲅邉WW廛忞廌プ鎰~=钽a/ -粞xF'嗺詻 %CS残3鏌r?f?卶O汷G鋙+睹\3T姿"^ {s表瑮9吷仢霮a耞n1s р {悅煯$曐廉左[!產煥慦阞\T 瑔5裴~罆%`% |皷.軉9+0(y畀<(_b\pO鈪墄炜p=函+罀瑋l通'涴 -茱嗵ジ'kB邦=c煷?F欤鈄l烹V'兘 骂畤~鵵3馗B' 穉死杓 薲耰滊P粝F9J蘨邻,o?0飏髜鶵諦鴀騌Z骼^~b蚇6玀囀=L&7砹ql娑懮暬Q乌8 毹>=o佅%?恠鱒3足(X[_k#*wQ嫲舄N咉仄dt 觷曡炔璸a+鵹3u1f&順<涶蕉楯8 杠 栰高绾5O嗝/鸺雬魆婝鮁B滋皣 -霫 虲<赓9<+2^7蚜y+鵕魒伋谇笋m#))徿|I鵩O嚛:喿惊痱~钀戼廝觋'M~雩Cd譅 -sP鍢鑥儘餗)鶴棎拒慕踡t)e┴蕅%疝Ut侠f陀錶璩 LZ驛裾$p$o抆n /迯-憁胒奭掟=喓扡A貗桶/僉┹vC告D転蓗疎鐋肖3鶸柙皀癏8椦簾音杴r軛f$:U[钄V%皷k3a劳U笚婘嬣Y 8_唠K┤щ)i6葘TV薬AN.浾謷平餄烼 鈿L颰偨#哉敉V哀︼剧f繇%讹忡|W 娺焑姾瑒蟌徰髹i&z犨荸3bn佛穂孜53骰i2#駈?甶嘇午僴F衄蜶魻笇(穾Oe}P鏴+C鯧白&Ub锓程韃_絢刳4{澸v'y粊瘩u7曏哼鑎禉褲冢藻Tx稗>_噈邟鲢5-莐 銅鏠P2懪 嘼"-!x隹3疥袃/輀嗞з攞鰘鼠鞠僂z 躅q*糶?x浍o"~扬&T7s^檫Vr'恩蓥蓞`鰺剓',V展/'曩P瘠鴌綍演ZS皴:Qb崐(メ0澲ra蟦W2:Ix啉J)H镻=]耽眊"憇愠居嵓矕睶皏[D乽(A~くw暌7魴喩kc檊滸O幈/;:I2{P昄n芡卉\4`顅4CA]䴘:魨忷錆A}鍺'E蓓1d 鱖參uf/K -V訖潽即=e鬚倶C遧竸.t椲5`綎烷勜_#7猉鷕*欈厍d 麷ik鼘鼷鵜霁S7z殆等瞪u榍b鎅聛^唡馫募䅟\馉麍浩;$麪Q,|貁剏&ゎv@徺瘙Wm^轜䲟锲_Y都軻X^韉輞悃颪夘T嬮趖uxoLT8 ~D军(b髗EL鷢*儼嗳c&ャ犃+Y}S蹜`{ kEv忡曋偦紽l^焁x砈 蔵'EW)6C愝d鮦0亸W儘w9%)賳璌ryQ睻愘!葂疦4贴⑻K豬慁m疉螐齴E郀叧鋧>桷缱}9M秪保?zQh1a51tN&? 涊+~Tu 鈁聮捷FS穤舂k]陟Jx抠剗謅B搌矿Q浌倭': 鶑zH騟繕z攜譳蚑t潵K{N覷锵颜]g傿鶤 箟|' 锝珩躞貃,U衎F7顿草-綟隆^+gmP菣揗熛訊]魶荆d'u*錚秦貾椓&苧腒!?@渴 瞯悼d蠛Dⅱ 鎻_^%肢襛徶撄旷M擏32H纥μ嬰踗橖m uH]溳7筟sB\TloT^靟ご人8刻Q瞍鑆婡愑⿵故>5ㄓ(旂樚u 澁嚏%詍=鳸廮蛲旉&黅"* a?d~ `?52_枇~o醏y貕砷 ﹐eHBT钮搞]7ヤ囡盥䱷癱镲鳀J贐D-AT}t?7C嫣<祜僇椭茀莔'刈嶲鲊H鷌廝X趌g躒*,oub叽Z J谙妸Ee5.5キ盯W踔偡踔曼3太.s闙崴F廢V2aa <#= 冾/5埊踕p*O9}哺槧QW躍.畀 4捩`剑a龠L 塔4鏃齤潍鷅A枘5>誅橑<~j オ逕鯅殡}狐确纂蓸鷐涞彋饻鄖摴勋鼠鈼肘吉";MF恹5wjL鐶B嫔{1Y眉j34緇8%|襫!x躨士骫p衻F鶙y課.r宰簨[Mz姡O伎搇諂-鵻鼾劊兊露*_Ay鹾邩)m穉Zk輱{逨涻綄奠笝d輾慲蹣減>Az95薏=Gj4N}疰正z亦谛瀺!p薢@逴]訿 h禔钼?_牀鰍]8t芨髆竔G灸ぞ0鑘壮X钞妆lM#粔蝳N傩琦"3茄FE櫵\o,5槡v綎Zu躂眒翁磆{榣訶y嵐認 -6 蛐}zSz薷!?P,s璄Ot玀8胻6{烄葔C1桾# , 妳<趝7苃 R舂(荇肅塖莇N檣梯2窐蘎/﹗kZ彭褳嫀泀0酅k癥+)4ho饊"s精駫{v愚O朡W6~ZwN簸藗燉!~X:冭歶肩遠q{M爕左勩漁嶛j⒇&Oaw戅w1㈩歚氦藠W瑞z糶$$]課双鹶滎ip11雫"詵;殓箆砠鲟N漿?鲭鋝-湴j藠O孠JO颡 K>讱杔辳?N籁*R=旪,l蛀0鎙sZ鈮鯸㊣(泌酋nq惥﨓W樧庲鼱餻5^+澯珘s罱6{窨km|,(礐僆G凭跢^&|課eTU)*痳e焲0醗v]矠V粗@R簽t//:Y冶炵夆聋:_!蜩笸缮>!)搋!嫂5窬!棰?銣衫;塆SD歘lT揼lV崨$%闒昸4恨渴@ipi`Lp暱鬮c\鞈缉瞾郁驛殉M症② 耮M梯V姽蕺/h8馁3_积琙s洗^I祅綒b誾3U訳H晐4(麤圵髅俖簅9=項湭nF蟅+w 薜?颉Dj蛀RJ穧p篛裡6?[/疯压锏麟撵皇3芃o-:n'榰>9裶?俣%#颖Y颷丬Z漊.筣漘oQ迀!!舶1铂.己.齖YmYV鯛%:#&< 藓)#蝖鄒竊.却鐗勥皈嶀蝷C7C鷄烜皎{酰濚UEx禌}X虍螈緰P痘蜅閪-◤~獙?x矡;e懫}涵圪瘗飭黦稆倐簱鈻R?袬M格繹塯]Xjp朱+f菹ア锯=香庽躀8謘3志-:.贾[z菲YR\oY豥窈.}蚾皬券窂xV潎鎉z祰4陈C歓)醐*-鏧饺矔哤9e鲛燖鴃鄨鑎彥皑鯇qY墬qSq圛gI脆m /g rAaN O悒è邃W_LEu>罸A閚祾t擌b 涍n煽哸r鉽拚/>垡靑蹨歷昌f妐_1侣黊泾抙嶙苝侈<〤49┺=>+俸-;U4P蝨5xXt軮鬸 I騨 奜╳椳╭巶菨j玷莌淾U8I^柛?+q曓)s暷梴菧杼|l f;[|诺5椮+aY綕牬蒒XYsCRr 舥𑖈0肢2"藿&">ツ;.2(欔34h鍺GZ_沋-un圓駮Q鍩r7rp萂-Л麊渔祣穪郦鵹zxMHnHmh畊随輞盠S[Yq潍>" 院DgV篏攮s.n矉Lor=謠'廃底Cg∵+冿OnO耚j€儷思b矈絚湭cbmSc4ε瀐蛻?厵>搱>4噵7噲Z貵繗7>酲iKy虣栰粲9I寝邏;吟"旗贸X鯿?胦鰐_郲M璞甗R誉G齆蜶縰蹙竹X捉x徠璜F 鶙t_s:龠蛾=Y燾2]%ej薋?d_穻e髡鴪f刏O﹜螹夻o9韓蜨'郉汖1姥贑湬⺈顚螙鵙忝| 礲Z栯葭匀?虅%频5'陬&辉皮臫%gUx;4千媧珒倨fwΑ観蠵!阫 -;觮9怒&:佟:>镕粞[穐黄勝香昋叡=yq鏪S覂虞擘扥vd茄亏\⒑篭剞f劃昋娼猬:r畏魄5z汽6%睙Z蔀螻d7G儂蜹友7碨+"~秄X畟z 旋龜嘧關开牳O 蕒艦唑鄅珫搜鎉祝閬Ao︸観斍1蚞漺絢C擄筀^:GyHo旷@瘒溟[7I;镓](泅GA~ -URP檭0>|ㄥB鐶(FX巛躯悖泎g澇=謢Szド5錬膿&GI^揷LX媜{E堗{u0銫摗"夅纎5焥J:蝍S詭[2>'匙PH8燗l俚徹扼眎2盿薧b6%b6]b?遝剨訐i*[┶扩抇:輁#3_鵌o捡帀* 斊H3 -%帘w8轀霄}0戛:辯'瘼膱騹肪駲襖b+}鈦6菀鑓~df暬路g蛌懛垌"nw贓1?汓祍?m盏揕=) V+(婩 9B仒A蘀E酏s夣su寶豐v奨6M仒G藺5嚇$+GL暀K〩(宂F(蝀G,R谺琝篃鬲gM鸠歶穂粏cy趻o93鲰gk惝w挏忿q卭]⑥柛D;F>}漅[颳滌Y灁蛑7SOI禄KqQ盙鸀J鴀縙<湚#汴Z.7禲Cs(_S=滬牒.拽k豞灙韟WN3錆顥 陏擢駩邾装L衫俋⒏瀀4{1(],b1仒H#疲魮<1揚敐E,櫋H甇3帞U壶|庑|NM w枢W无h郋笭'坢呆 -{;-捱尰T拹7&@[rK俻1&G腢颚9闖塯 耤审"7蓻B法翿棬 -OiL昽Bk膣:釱噠石齡僌v辄蝁*舛魚3c~钠]夊5kW*&62>W4疾f猉8.]燞L%&c1(b$叜K} d~<=3]鮴鬧QO缠箟梵桰+ 膎2H嫘mn5踎%y,#)惸哪净_',魤筊s73鍱伝銩亄翥褀熊糫.筥蠖)士:8戼纞n 鉈[l茈V攦/D亩概钺t V蘗佲p:z疝茽w%儻苀z;A件?d鹫纎楧1 }滾寲檶~欵虨秵X氛8鋄#g0堯鐘0戗翱5夭鞿|N緒La乕T諿瘶渨1c籇zW吰泑x酳冰ㄈ5;7I|塐宔Gv 鹝[0髙s爇sXB蛖郯╒穐葸9獵7 -涽jg嬤h猁I铓f泿緝颎鼦#鹫u廆0v阊7 团整NJ來砊np玹广L_qgu╥垠h嫸\榕壶x粃i茈讏刷槃1/驌8娼鰱*t勉X=Ι5东9Z$齵鎆]W蠞4佾梤t虊ih匎_5庶#疬Q?餀軜ツ::諎>彋)*=躠騍叄mYJX耀@轫7薇O 堀O=銥%#惰昰祀|彉饂彧埜膀匦J?iV*]$7瘦式_9[兆6遊3曂d织跢號檪cp~g躺帑/嬨峻鏺幠谚1x 厦鴞xn,鷾Pu1洏6j 1O眀%蓖$CF祽S顅1閩抂Z(=贃醢uSx詴坽牤u1x>吩=q銎:蝗a甼慭o跓'A麭▅1b厅9稞H豇譳9竈贌 _鱤|g疲;4}N脸wQ1H鲧祹皿On&b誑Kb讐[opky綔菅秢g3c%o齫瀗J彥索L*-t弇@c豖鞛訰錂赗陽TW瓄,奜閾BiR悲Tsm/"fM殎缰 蹚慨罂麁k鱯LGO兵燨!.+.泤#鰂q蟮?s鍳沶愞z峠彜洗窋鐓 -輈 -}$.曆1痧 -岮鵠[%1牍甉蝘甞鹃}胔(嬤踌繉閳煰岹疦@熡F&f晌'怌4a<斻3F-%\BL朷LL穯-w榅颠澵u(n=覹鄪x 1顣甭忓罠/CO禱 寜y姲2 噤W8KZ[.F這5k碩;wT5泯草"b鹅素+徵框逃I曕氫.%fO轑虧箣3c!?k;!7}+1sb鏄跄 雸轲崉蹹魗r誓扢f膙貱管 -.温践V圲蜁鄁w_$≤譤鋾賈鄐贵滸z;+*<.T籫稣功礦;'晽&C輚爳6E >䥇僷}繱`间G)覨剩煢燪勌忩<% 圷#W3片!f孾K虦笁槶p圶q?U7b:b+.;竪汌螖韢*0孓矺 矧=+ -葶+<*薥氵号骨遾S痿;W)s-鄨({岲筶"漫艅E爤渽cs鷾)#嚠o!1{耣b苿裞*Bn&勨ZBq9眕鉏b蒦7b塏4盤#榅k~Kf籵齽}犯E8%膬璂/|N譮凟壒趼[R踮C趫,-阨檚酐麍O鯉瓗滴)e^漾?z席佚_莑窍a0嘑k歬3瘟彊部騍帚睊艩&1裴/汥/h):募%匋\eB~*!苛榅 9b撳侪酠搗]彐殳6)Wq埘峻y壹@qPTb%)挛缸圞峬璹I戤sN閗pN鄶襕頄諹$墇ЩXq强5n倧螟1] bW娍( 昭u(sDX睙悰嶐c鰒剻h灐功0g1o>b炯“H棙繙"m V▁離i您d6yV屳:~譪顥=?(6p杭檄嶧}}轉E吔 昑纣d号>y)5,~D9А呥0濏烔]湑j稯莎x嘃鉼 缍qJ幥, 2鬨b')k坹(/輍N琑#杗7%柈4 -豄蘂x9o鶽魛湻橮樆qJ]b奨窤@,S>C !諵衲栥蟙7EtM荞垱<理?鵀;3臋膂q柼噡焎7#瞔秃颎[5缒Э鰦Oyj捝噿鼹梏 -囸*麍飿谬筈随级养z&彳<晲区1s +p浪櫍#妫<1}<墮撟sj嬿#~l骲滢堽Y{痲 ?鉜熫榌'鮫svI鷉餀队絙馕嫃穷 瑴[yS臐邀臐f麣? -;訙(亃jr鄽彙v-t>]^誖3X鍠RW隁意|协t`帑涖~鎟圤`乞c -又媀kk誰=避<扻泓`溱罚7枎垤齰禚婳F畐y9j玱砒瑼4N荜騨6稽1患&x汰=P享僛*w0梉甐烯i6r<N犝卤咰芘 祋牙Y嗪rwv珟層ヴu鑙埉钒d灝鳝果 #/啕?磨 3栗Y驁蟅"+魣l坲|_b 盺Al都&=磏驗/养Ts[Ts;v7L踗-籢Dl菍豬um証黩甥趂(莭U8魳蹌a蚠9cC鐧/臹毥{8竘綱L -金漭?踟厕s傜邘摲醗﨧櫳龂距醱骈g6疧$~\k!,h;麧t9}%a办L9顰?f隰 走Dh@,\mL,迆扻O5!%猪 Vo!夊kT+T5踃b?x膸s徢靦( 泔婽k竷 溇vg蜉占驠む蠡K嗊举>p詌銟觅凯袶鞾澺伍闁q擜g耴<4;3飇=铁炁汌紥 ->vS鮾v圵虞铐U瀄U頬{0eh"舖F\蔃諉歡:gLXB虥穽X篩熦El鐊;Igb魃鋺;^M踎沫R鑡Cg煘后玶亲臣?j 庇鶅;→澯Uh~鏒Z_93鶶彿vg|8A*z湚y鑘瑽N冒3由齭嚍鄣賳9}猭垒层z卤耒3R-;o'腓i礄(:蚺Fan#I?阤|讵j&鸈~;眑!夤~膙vN迺粕X踧3Gj檌巎|鐒Z竇躥昢NE罡}}$仿-:臼S鈄-z = {疙j-+8U文爣翅 $黇蕓y铵龕S1矓Q藜冃PU!%靋鋑4+QQ7 -/+OENc,d 戀熣(瘺 冲5虲片伽G虥翠眶傼#6e螧k -b蒝栘b"'碿噙∠x邀蝁辇蔣雦鈳j6!,ㄧ:_珨又k銵y儨7wR穫ct^p圂$k跫锾譓镙bX跚Q兓酖挝爟吃数s沕@灑AR齎蜿缑裕!0甽#?馀~蛩m暂:}羶wBQE睋IcA0蹌I:DGUm娭Zh摉W立迠輗庌笡黲痥<屡) -脑斌夐:z+眕&盺蹫貇蜴软~鬈/輍>~彭=祗BU鷛-鼷騔9U亥已螨鮀馪A=仂烹飐)鋞uc鋟O﹞講串浵d-閮臵艤塾烀49隴后嫼亐9b7R镖喏癔齈鏨嘚qEG5靈飗 劘[瑯q隝ai郎羮糼逿]+U'飶慁_巋距澩櫚p>\g肭t3脂;櫪./4?rb岬P錧蛩7O蜊悧u嚝觱(踲n$t嵰窟wX悬瓮-;莓%>宅飦旤8琛[疟Y譱紮圫襺烷瑜wm覌z篖镅徝涑N痏焪鹷u䥇咶gd5鮵_|R$侢緖趞*眎7}頉庿Mqa么≥加~繇潐櫢G 眕湥eq?}南EL旹ym鰂b鵹盋酾丶N!涆n老>膹/踛tc戞箻壈6s$;K供+塤V$謍Z{琽9t廩仯P}yztU帽zu湵霏宽:2J]藰8|袗70&颈K菈i素夭絃鹈:Z啮卻塢K{啾r.`;翉线"x輕倆谂l$M聋蟬馂hK梣敥輍袙eS籘卮U:蝈&*界狆F C佐 -奫勿硚?膹|街痤W 瞤(肇w^窙3S旝麠M遹,Sv邱湋{庣孯短襻'3鐋]K z耝汾$~遅'睇軂礁 z檁v柁鏣舣!a跒=J膠殴摩y轪5馊)涶.程/蛥sb鷚卡Po;,刄U螁弤50见珕釐逿x流楍渻#矕懛泆L鮫゜鬸閻9沢2谛酎(炁橯KN彯駬J| 兇伌t傾疸ズC踭掻7h?; t撡$&枴祙舾弍?2U瘺3晕艑遵"~up鷟借[Kt3攴鑎0翦J綾鷏騶 >e6錼m>鍃]:4轲AuBe>翤+=B(2戓塎d(蟿y唓 6&l!m%劫氏;H唢`如,轜闊笎鯤漁^T==aT^錫Z&亘M擾kkxmH蜺饾隇鳑犪=K鍦}瞜v髩YcQ=晷t e仿*-!M~If饐u痵蕑 3鯊y辡/蜷*;m>聛懺)焿)ō╪軳桁W!X纶q9媿恝f澈喣a艉> +Q_緯鷃xg9韜w 砋4籉哪栵b溌f *r2k昘穱寈簬楑駹(窊~ 稵檫23m瀉b鵩!讪$纗瓠匇h鴥7鴯;忩).幆炃鞵繕;UI&<>B;眎 蒈肜Vt]牉|cx鏱诏N鴮F莱鼱'+4 E膸カ墋6: c々y组骁\g眖*v 滿韱}眷鉌c䞍N~頶5儨瀩糑簌A箣]喊瘱w龥狝\莊^虑礓蹩k腣m$R澌芉幯 記vS跌箖)U[ "攥酝栎S栈疑S膪叻i]愣p辉8峗9≮Л讶ii姐4u^q汑%{捰 -{}趍磶┑懹阩奈U 鄯:iva4}苖"hh倧鴭97饌vN熐G鳀 讣雭d,捎='襳背xi趸m{)+姅[蔧:噰癙舨蜾懖句媙!镆鞥啂嵊I燐K凮谔D諘灠R#u{佬0璾'鍆}e5鼃區!g糎)稧争4霚駄颚藱▇熪j饝{ 9S鱨姑欶剨6&忄锡膩澔 烏寝{Gum扏"內9E蔙wVKB 鍊r E 蔣"'l1N0艱ы大9甾w苇愤焳胫珃_7篔栐R鱖c4瑛瞝某啉萭齇w騧 &f阴棘3佩屌,8=帱'*歪:C8餿'Wsv焧臑8 註[婛f3O|7?W?汛kJC縵磉l7v}籑禧>滪T>*I钭鱹硡乖佤2玫篁嗫8稃,鰺}g籵揞刮左絺嫭v铘展鵬:-虰焤l>OE穧濈M缍薦穔箣蝝g具虶绾m肺}煆梧穗S癊Pb杴`Q稂爳覭05卫專t癄索)W維 肚榹聣/渆.c'k冈 q5c寖礙{颵抶鵪乫]2;&c灆;rn.W1/鞕a<席鐟嬤茔;町熡仂s嶅尹?鷂⒆k玱猷T唿3齏蘅跖:快崣搶 P砞66.X緕兾嫮;>"o4f贍ェN;譼{鎻钍kW瞭鶛 _xbN5軽!碠2&I=訁靨鎜郄r鮣菝}狉噰q軑块鮣m廰/; 綶格 }"A~顴瘁炜6&U 丧鯸晾 }缱呟?櫞g#~秆!ㄐ镯践蟷>Y顫w}騨潎恅顡5? 捣 纡,+c`殽i詈艜U簼,酳p藕駪虪輇馺讥)テQ瓄s澻w遻w棻锪q帙h@.> g~苊棢r騈LK鷊c 篑覒亂戌 頊厍й u"e辨聭跭噶? -o|/z_l3w鵊o决">Я懰o潰祥氫Wyi秓闱媩訃&簺姨鱯眆瀓枀/焍铄bfL9顮?躟锖覩7w訢$V7璻槬鄢u痭蠔m:oO_!5歲Zqq*+⊙V<{繕b遂』%谒 9c03, 楗]琟zn遌i剃r鈀>\⺷_zq.X]~j9莑U哈虯躜s>\G経BQ週>qf>窥鸮弣䲢毕士秕?篦嗞媠%鏶槽'闶靝_<骃t樛g额腤^_%W勖罟睰s1Wj8攊砩0_MgTR-剛|圩[啮g粻 =#狐7烕u?f粍鰗[沽'鸪=鐧O -篺坕 |f嫞嬻此絮&晨2^弡鐝&岘?j鼭 绠j衉璤睕)刁杺厅,0颗燏浕v隥d>經+箭虫w辭x裏>镜蝫3勲朞灟[6v6?wl谺<6.┶^埾酚厵#V萹┒jJ1"2lむ8K9&Z 蜷莮辚仟pm焇隸碋t 叴 rN齞礞莂*寈餤S囗籌锣痭楢搳.Znj.藍濝;珔篕KX灠D霍?Y鍩u藺_84童骓y啢 {霰z羍玭蹎=:-t搡3蘗辏薼\统u酝;Q穦 輛 -(铻T_Y厵<砣R臊eg柸乹杬,MQ枻EFR閤エi簍炱:$茷{[Y.鬟衯吲p鵲钜x绵箜(塙憷]o:m搴m~>@k筋襜`w忸z衤 岬F躘釢飪镊_勻o黁`1q W|j!贺茥2w/桷矧争B>4焁?炏闊(>,o敮羭G9竔硡YB1{%鎂動+//猗髄改1BA/嬬梄>x躀萮駪u讝q]無z烅蝳)螚?蹉>役绝G岬 樣0<輋l窘B孀]B-3呗[繗 蕻o䅟吘[聱襮聘→"沭焅沽?飭n&Wsi!Wc饲}?n;黠; ┉n>A簎媀隫8握m溈J穟鮖蒉絳u頭>航Xlc嚳んt鳆x鼈,岄M翆6□'蛄鏈烓.詼鴔'掭 >菟=s協7_`'T煔/瀩辏]抚纕攀醳R~4hb社2*i虻绐p'_n/Sw肔喏錰\C拱a*_=8闲癖媝駁7! 覯_{g北鲱r哭7臥vn禵H帟煖`頰 1;榝膳综#抄7╗5k膪:窛^蘯t`DB^8籜膪x縭蝮喈Az厇顼+鑸嚈4楚衹懌b帞艁YBn薲「sΡ腴V=3傧7脊B蘬,枧嫨54摋:嶒涙?!]陵kK竎稺驧稸 -eg骛窟羃G更7瘅=\艜y兴袥-|匔纡 K.欩瑛b;h3瑺鼼⺁醜1穥篨ym1w猥 /h糱枑X3嶰ù鏲騧硅煅袔K.3v<轑3 0v硶,h罪嚾kΨ锱娠>:腳選蛴u"孆疲/羖"孀剋 譄鶉!穔!﹊急哸vN惩輪S -0cxz緅9榇崔]э鵭#熥7?0輗6O荻鍥u{`v┳x滱 67啿2緋 焑O儝4^BR鬴G鎟h鶣渍斱浃啩习Qs-<萜T7Wl换ZO衅鄐ON+O湾zO=骼湯Tsv1'箛嵋S结韵弁狂嫚|$V过魫x顝締S弚皿狞)\脮テ vз7~T崡嬚R&p┩\锆;岧快鋸}靊瞼想渏(:讟vr珡n鉐蔺韃:p<龙2豨{ s尹("峃!:u4S.欉.喛u泮頽桽K芀馳vr缮檤蟓Ub晐 鹻蚕0裘Nu簮汆(昢熣(f煂8)鏌淛:櫖Lc箈襦l1镤T覓蘦災莈兖q舦しS斛b鷾R? 瓂<s2什茰4赧お隟錃7W蝰與3C鎏買y]颖^ g莗醀7n枨蒈馃{瀖*..劧;t -匎o鯜c 贑 k铘鱪茵 o耱sx MxdU82栉!nOwo盥_輱>Y隋鯪E_蜆~|"_脇f锍砣!个/7c~z4╨尡2'7`禧f;唑:.紉磭浱隊:/OY'%U崡*B汻*顭彤斨靾kl埼mH对荶倭愤V4仈氂K7譈[z煠q]7冢ぅ蚥叀韮u喚'圬z"c嵷&倔頥y郖眙Ws7a帼>嵩O鴭?鳫7 |檈z蘒甸K0艮坶阴 -|異{| -[.鹿熃0嬎OOC铋躼輲;u茦1B慌堋/鬘3V^沷L9醼\tn0[t蟹!萑睸 壡3JNO瑖'h蕛b濋狎厙杪觅姿艭?麐嘺鑗Wh泀'm凝B4+薯厒铋B嫵櫙瞇湦專嶣1'畝誈)G')Br9秇 烶:杇1\\pC殝閸帢o妃u妃抠┄{眾闤澯F鹋狼l&h )%銧"諯抉DU瘄璉缈2燜f4z'!T}n盭揄 '惧澋袨刧u鍻钴?z無艢亞﨤b┄}&n鹎絙閰y囝Z5@b逍\(44肛\焋蛍cd1*o4_xf[刍+媩鼈u鹶搁键e渂%w虃8t勜;0盃O(臈5劌X箉J:o1聦]嫏偊+攈 -戶硣鎽 ->W淾(W/恔.-#瓟狵嫺co!θ厉n旯嘧迯籷;)枋АRcw遥`鱖胡TP?:^硦爋辦垃碕詪_姌徚仳鍶#獳焠4酏摧X笾"}d殍=畘簃6檐YMM'姏 %c祭#肘听&Yz3冇=寅瓽@踸{I;-ZQ鄸@C_Lop#SF!nk瘆a:x跤(嵳啸儲:狎燈聲綞(<鯞 )涋\-4L鬢C蛺雺e珑!微6尩劧?w竍,4逛厚嗀<3嬱骐Rd鐼f碞1啩Zy{h攖蠭&'p{錉%拟愦m8Rj89硆"t窬繟穃yn絷X s讶 ;p婬3*ブ:喰0鰙|b羵и|g.槭s|bc`=耺勂2嫊茙{浤幘J尮咳|j&唀孊 s[)曘b!m墶鏅`9閘跷D孈庘'滕 V:臝蝟 -&98瑋L 鷇~r9虒!Y諦r!8墒绹涹[砷u嶣鯀E饋衜鈴}瞊;暚潁&鹊-'砺掱冱亠=7^鸱﨏蚩粝齶耪w'薺澛J豺蛴肜澟\=p,k7w~8e,XL铣洆嵍.&*檥A首 雱僎杛"潮敀馼"[Kym恿#v憆趄 -襡f9磝0迠舄戤璕k/畝.楿bD5t昴7说鐥A遬刼7FM^7|'[木鹻悰A3敻蠃'S刽X1輡‐|$騧o泙c躎h -M嶣L櫇1$ - )洶1琄?闋檔M,g醦櫧>愬'踢A鸚`膨詥壭zW婲#轑q p焾閵飨h誩`1-狃憅BZ覦bt蚑/,&=)9洴瘨鞼)輄[n瓍]熟{鎴缏慎6壿煿T哶鴓}OvJ9m:59)c靯紮;醴0t=厶W湠#绲O莐s呋煭'Q'D曏q6﨡9杗虴鉠果J伲鄹p絥髪 簘連?搌1!沮灜 sOV{y: |彵J鳬77n_xWtR翝"樚 s鹲 4嚃7iD莈彂庥l笭d+覕g⺁j`浿n哈鮑発!, -鷃鈮6媇熿勵棓[鏒怪6=焠嘇+h湲杢@Z噟浾S_犍軇缅銎冄柲9/霕= 蹵q鴊狒蠟臌熀S儋鵥D櫗昰吮酾g阂R硗|mr爿嵭G 4h塁吖髷1殬3濖鹾稸J蟱=吒i=O酱濭^B;繠T襨モ拶2剮3@遆(锜I9G挣モ監6萞唔曽抉喧爵 炜疻xB?懎鍟JQ,-縜氁xm笊n贵f)'c箥P68嚺%ぇ[i&&啧x8鷊o-'碢;涒~"笥g?#錆檈尛般S给毐堋 k_1忍u鸮荻;u蜥峦纑樞齞t|焙諳/犋+0*云7-蛊佖磍濄Z骷你n掦廜儙紨TbO杦+q鹅叱H/韭諢y宽碴∩璜D藏69択艭']霥枰Ka盫骨f橋粶Mg聫榶zy雽R7》-n 蟆 V?Yqz乺廨璕'劾e呮(1唷駻┎g4 濓瑮.=嵩釃~2锤MQ拇a%痿g⒁邇-B=夜模讞)與♂/&蹆u屜b\rsもgh>#濦gL(93G天沠 舜c徟岏绣銂r?芴l禑溦5澊膪1v哌倸,襞W:<6痷~Zob锍輇;>e←鬂掐C'=蚩肝錱 澫vh輄 竭韊线Sf韉)=zNj5B=Wu鴣_鲤梻襲喏閒0[テ++爑'暅汫塬蜃(?x失矿忞齠嘥vi鯊薕#}3/|M拙U_{雷糠掱1苨cP膪躸_閻tヤ枆2# f ;n顄繞z莁獲縋囤T:窹J疄犇W峎瞇w=垗酣Y鯎I z讎 砹8搤cgq'X^v?跗襎+鞛鶔潊<奧3c!臗S磎2薤栛5KKk TS顗櫺僂%嫹信'^F归脥j敲<斨换堝漃fo:6M尟$06襩垉蚟棖>⑴-譄^"]Oy鏭勯鞳鉅彭铌◇疋G锤钭喚餡zsm%-n詳=Owz-4Q彣 旃,穊/Y澚硏mzo>b=#W1Uc 俩V▄/Q娢蘍 -挝!芿E燳Dy难+Kq a[)\>乜隈>Sw凋鷕淇F)蕴27兰珌舉●=r襋h\搽m 谏甒O凋鍶瑷c q寭#膛+5﹛ip康^雤衧毣衴飯雊'.腅乳韅倔舦抉5B僬匓VS]^,V]Y >蕙菁|鹶妚腩!?镝n巭癑天$ 鲩穆畽桦亸;;木{=q哏矍^byh犢K逌_d/勁Y!.7+X)杩 "隢M*'撞8峌鑢;孂n书噝h饓眠y{Xv帧b[Cp%夭F)诼(F機廩+弊" -炖8!M賰┲i!M#皿e鑣慫6npfL輄y儽Bl泺2{H沢r﨣-nh!w鷧涢崗?y'W胡B蛒祯訊p歂N埓斧.,"637縺怜 R飛鸇澟b6q啿[漞訠垵 ;藊/{Pb饲嫞\i劃UJb$鍗泜仞? 敖楈,谍虢r鞒絛莑嶋s#-版瑔毯I颧暍炠xMRx瀺= -|y醊圭舿p鴓W啚y;珨]蹢飕j俺X~_0V-<1毐Z媨勘衬鑂;=藘谨ub.j靜磹俢瑺,殬mF耝k垙氢鮀捠苢憱3A記t瘡拷灤噶賐qq邈莲 萵槮9絏n~o-瞠計揽R嚲鬍帉,!涘L%vr膱7駠陬m!漎0煛s嵶]wi4kq嶘򚲺#} b|槩蚯テe蹗俺歠姧y?(漞淫鶄g: -.旎8てべ螝v闀綿g協6錿蟁n粯娢,TY<#B[鈜e礛#哹V#8朲A薒h閗偬阐狣蹜}7冀蟝駊苋 F灍;氄皁1庂jZ鞨聙A|╪陒鸹K諙暎W(抄磎0鴃?无燱 --n)ノA`|3+rR晥|[5:鏔垗U7b骢拸屻傘,夊腷&湃楈诲/牀驋潊x$譕=薡5庎晛^2jfg嵃矻尪D|1ピM扖Rv♂畊@煫潨E<程柀NA鞇3F{=? 酲锦}>陎荡{.4穳賴\e萃Z谆{氏.U瞜潬 3盽+../ Y癱疗g池喧rdpw=珼臑7'雦錚so儮髶绿P;韈Pu`bK蘥 锃A.)菚忰 襶{ :/絅0匸hY誑9酄.')釴鶇盆 饵h劂LjV钴O頡訚u嗤儩鍍硳R9豗FA `g1"v;鹻靪-箊R4> :.0,峳H嫉gツ缠 v笊re|0罰^9竑眵vH頍l遀Ikv2鬻:僎!鱸y>9怱A洓鴦G: -=鱘[垜P悟巶R{忇r魙硫籑-3川|焕翩佻^ a4潁(C淆xh'份逪,夥焆鹊絆,滨-奈蕀;寺kQ3楎gB珱卦GN;K?飕v桍楈瑪QB@'糙Rey;r^般;fB $`乮╁l}6O[仦详9=?0覀鉉汤蜙<挎2S冨%#:荂骍v-晿|;鈸E$骩>9?鳋:裉=嵼O秱哰鄚9>P玅< -娥rWtz炚洹9p3>~溛`:h.g:堷凓 = pЧ錅*站 -肮=u烆F騧1"曺闫﹋诈臽鵕^赦 R羭.玡漪b7鹪U|鍱,hй~gg莆J1;朦Jメ枊歍>轥 2胟o{V殿祢挒IE姆<胴襝o鹔 -X梿挫+ 6y9碁錨g#妋o摶镯:?蘖肪 x陞醸2菸x_R記k%弒廽逭遴挭}鋿7N儯-M慪冬^!濣dr0壵#|v朄飕;鋪=曈宵q0 起a梗翎iV\D谚楈,魲 綬E钓 -蛋~:坯6g2ラ-騬+書18+5幘塚绣,槐v勏駯 qc授濕硤 -x\底VkG.-U箨+xK鸱拦梈om痪趨砉%X欣|o5┝窝吥7v:藭襟!爒锅5噆*桋:婹Y61攒b庁I/43j=鲖:鼳318覼)稧}玡誒>Y:zi欄鲿7 cP蝖鴟)避睈逾, 忘p鎳銻坈Zn,姂,g=OV丰|#鼟醳B兄邎欿h~c58Z票)薻泬P諪嗀篔a*8鑟0卥F8T,"Om奸b撩r 錃8w0 3`銁僎隽f鋳豔;\p~钠6翓搔X碢n|霺犒熳﹠=儐锼鬅嘁鵽儫fN钂钯蜥騫赜=鈘l/%4降?俺3憷媇`g塆/撂嘥zj當;Z鯗o/!vX!鑗U3,颿飰絖俺奊豗虮鬃嫮飊B尃~+孂Z^隠5欉p鈻嬡擂wy勾w辨Kㄍ7譑'拶D\[旃$昅0灞 渴計ギ划r淆}|陷韡鸧u讝乬xOj諐昛粕〣X寱\w~z旯/y銭咱簨k駶X岴礔照錼矍;溷lA炰荫K)(=5⌒T5*軻K璻敽?宣眃2湊 瓞蝼c鹾戀稜槔0B<5(#蝘董栛:.詜r~譒07湟」1>S验y"竆[9! 0b0[Rj..脋1辌 菉!i旓#S./O|=ゴo.樳堖"髊` 岷%縓tb樥4缫zeUK癁D fvo悋蕧,n >ql曵8嬱赟mn{熖Nc簭晭^Y帪唞鵮U粅$鲛-腪醪鸚抹蒾欶/p迱嚺彙~驴俺逆纷Q軻:Cn副斌羏燥瓢 k#笋糯6'耙旘遆湰頲離遏挐U5l# k赇mb艃驠~o,諅郟诇Z$5\Y!掇偃ll吃6,猿9績豴e填龠C.@ )禙臵V索>丞\x荔倔浜頽;旃7V夜婶黴騾/ A7> 粇3>嘺Α{﨎籝=鋳 _ゆv蝑鲯v+喱7Z)话恓嬷;[攲&')襖`951 麧凛欭榔峛劰纑C兾7閯皩Q葟窬X従'G8蛯X烄o)}罄仿%b哲\t=#`恃玡褘茫诼鮐阇_%志 絴膆1"讍,罳篟vq馫hL汆穽Y2贯m靁=L谽鶏少郟k菸8#弟-i /元_[户{崀x\Em承粬z0絉J,+Gd賵瓟云I8#烕艷圾耽 ~+掇跩;}m地vj农E4髺鍇敵謀\傮咅J翂閌`壡n燁醃?\忼]7蝇ct扭牦K徵慘)%(O96M+顃=!孢;牍cog跫A1總*,異+肽朎 蔓f#额炮髬E枱澈e 侥薈咅霶x8{&=; 従u勰杦謅- ~塙念腔q諷= 6倦B:晦 9+~/v/q' 牳囖掰螐\酳io:(u/b,~g3鑵僑$2F槇Y千﹤鲃1!,乙勖濆磰N>天{蘨G'庰蘝_㏕焄* 3*塃瞿腷19^沄vz懸|{3J?鳅则+K8!其*猷X策曈> qR>.齂归`?-搬睳LA滿轨䝼A^^氓菺圼 f{槔Oゝ窲埖G/{煾缐羄=本R*桁 z8Ty~盩乞Z饙餙.>豱禳t遰g-黹け踑kl刼6濚褟蕾犰cSGr涠Y8G纔~H箵\>< N2j-PK[厹L81珵艡柹2?e湻<礍-l橬{e-鬃圿熿怹拶坿z!8勤W4盭V2嗵祡繜鰇r=鋡N揓麧髬巩彿pl郚肩俌T1:|L1&軫X@|8!)<5W巇14πNM?>珺,m枏J5虈^X沝5旖量7ツg貕囁頃詺塺Q驫3ㄏ莏&7伢p嵗楒踉朦 y4j曰割葥斑*1洉b3l榷翗f譒)隁叧e>8W`泞衔謽捠甝3V / h澬蹽鋭B踇:;佧$O>yZ+e9鴏世#o萄 i,咂Y2v輲淵袷癘桿鍒: :琺G.s繳珂慵+笁`饧 熠耞i鶟(.誠^ALp鰹#輘蒒+囨馟o.鉱n,託懴褅霉楒O穈=c+< -減ow_G:凉4摨;縃O灯|?v用饫Z廯茣塾毽u}}?_=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=^=~,X/6doPR蠿[窭X豔鬉嚀B勤/瑀ML敇罴吘&z{q顊澐8/ -JM X.`夡V缗kV癵帮.q^師]絩瓔*}hP大鈶_焯撅鞗司hg封?cmWlt侔i遐5;o芨q驤椀7:切7痏筺跗 蝓hφ?|} ~忮}齙~稀倍耎圬倍㧟m7;/^,]盱:6岱?":t薿兽了k舿z嵆6講辙袛堗=迴С犬犫稼櫘寥甙a鍐M螝鲞 k賥臗熈~溴硚少吔5涁V鈾+]@/7y嫵藲 6眥韓{繻许坫璼t迒3?!掾As_.忍?靥7天К劭W餞tz!3Ch5& 峚9制發k}H姇煔`鞠誛穝濢~I缑G欩蘿孮纣=D較W輥齸:ǎ鵬囂酢嚟鼉-笜B[cd┉oh啎>@珥{PE(Cp挜1磝>0鸵?嚳苸嘇穙;座K徭槇篱u/疈)聦K穯蕢朡3 jF禮槻,)鳩豠殾^WO冷)&噏*摎Zq雔LR?榒ーrj(裏禤崶樗+1眽29&菛)豨%2肍墖zI鉪(M慾 ~覫囈F薬嚟M%鯶"蒛P+鈙霩5!4泌ic辒)伶P*傟抈卛CLK諴阎s拵 姸廚坤 憀蛧'捄 怨えlLRB]誤 43虳L闓摈梐玣譓V+,羊{gcJ賍0倱瓲篅锝|h亞 蹸祺`b3袢R7薯湬 蛻r郐 蒭鯾R鹺肈)搅Q懑臵@裊娤Cj9'σ qR)滰S' '腴$;T剡,x)蕢~Z9丁徐f妲2篝SuPc2`jA&o/E 伊摜%坡绒坍)╠钲毳娩)_厛R[.④謝0 -綪6 MP鹏10Y-疀渀後-雟基昙1攏-侵帗拵NcJ8s麺I铎畿鰼7 *FxP+2 -Z讥杅璅孥i1yc斾柴 肮貸VN冫e\I玾Ts:=蜳9蠷k≤HJW闀幇):諉廐礦3郐彪;]乥E顗j藵蚃肕-穠*~Fb#纽賎趢TK:i倊D瓲m6l> )!{瑬榝ДU9B蛝贑MB:leB(酿Bp)FF遒妷筩0ii9>纑R懡朿C闍KM玼敚sl匔嚟∝ES:迢XK14 -jJ硩敳 槮*/Sj訰91箆b\-~P*聰M馥7;Dt卅氝3睅娇In交 嶳顖妱怭4茽眥领仸挀=c2反o.T堲沵KS(%ZA鏻)箌:殾L0祟M陞E[I佥鹰";?9詜.#麟[oZ姤^幏0蔘靆&Yr霤/G歿:Oq刵c姷 5櫺T舵兺8J瑇}PrCrGa2G)u>?.奶_7#卐0,4M斅 m Z+0潿D谹1傤O$FΞ >Z,3曺褉8K%残NM珶%V;1賤jT M礜R0 21+e)2╥`姙[胞@=i諑jRIe/荮鞏)r0)mL*殪築潅鵡L抙egkGo帨]拭繠-域鵦292阉|2髾槩乚涯*籛bT苃Lっf丛 榡ドdL 膛M&桵 {c~YK&昈P笄孪醱慴顈V-M曇鴳Z砷Xkj槔|╛峀 希杀掁賘^  -囨堰傗AB9縨πh含o畟i?L屼6O3&20斀m(C*捻31&4LV 莂}C~猔x壿K#&y樝}B笲 彵#`W鹽u^z詽"撑嘉鬯3熟'窳塚F-䥽 掠F羱鄾岮|h%Β=}:1腬痛"騦爔嬁 鍄榝)`-LO涯S\{驼鉊伎笒1JJ虳(AqjJR荀洪85赲罝Mx-榒 RHe睏"/剰P2l$弮o -檓僫E导{&氠`[r砄v?i"*镤t(鯼襐 -M蔮4齡*ZHS造京Y千庝]痴猖,? !耽乑}y9|揨qn1|憱Z,1,迠&贺:@n!G叐U5砵抮竕倻0 -!拿L-腡膌 硺8d雵T酘亶谻F詾馂皷0豹T_YN痈Mw謅R 揺榾B>C*:y3窕,巌T1S侚c曺Z(:pA耢"臽:z莞9 酋2篈4檨 F案檏 錣! 蒖:榓 %ㄥ裉/rj9L5B1 -MP2>(11麔/C -9-S脑 槉鎄.绤 卞c燡%辜H)徊醾摤$鍷ij敪鋟Pg匌&焢耫 -ib90?)&X馴鑸b7{/埶橉Ι4諛<; 蒌D9 |d嬪,'?9冹1禧各饍舫-N葏6B>*隳Td!┇浒<.搅壴殥K偏)I壻|胚Df3剰96暒场L昢顮u螿嫼1貹巐絙]B}X7PfQH椤}^')@箽!旔h$M06~焇娛P,哹6TA0橡4m)艂迿楡ドJfkP晙8訶F晕/g讉僮D鴡妷與墫Qvz訷0)壾~O/嬌C瞾Df)5う埊%嶅"sF 撂鰽遇卨1LS鳳+ u<烓?!牮(\|罈発:蒜嫰 -颌襩F賙ń祳i奖锪 窇X)滭t砐*R緮&*欹潭)覒讞妋彾K 籋1钓緕( %QI┗糂n付 -S鉻鞪鎌2 -s2e /撡}Mf駤璆5肽4S燕|*1饜詰(_*嫩驺`*_訋L""Me阐<垿S冽啀@}&1Q媖轮)\H幫访d*$繥醻%V幥礣囿H壖際J-"锴(l獕Pfbv鷕b瘏Y)兵/胞E1?uT HY蜩斟P苔iVfz=鵍鶫璿惒'倂? -5T]Z蕘X5償;K扉%攳x\rz.攇)g.,乯,エk禩w}9&撆Dv聅G圊AS 慇5T-95O姱磭O匓Mg阙6M栢7Y 粎 -憃cu", -盉f霟斐灴f避We焂瓊鸎1鎧V"%紲P4鵝qy1P嫞)鏣涌廚斔-k__5k1玟緻記偶巌s害倰舠P ! j頱B鵛<籀8s浃袅硽棠黽X(P酫掙'癤侙úz凕%札b箪涮:GRy鑪鍶鮳D 臘v箮/稝e煰抗 -鸢O%=勿!全囓娬赤kX鸇濰 -硱#o矉暑藻(尾"厨?L9砮4:褦7薣(俆2昳K嫕襬_'(滨 泟膺瀮鮽5,楒!%+=zmesA█9_{q7陨稗駑皏燸戀9(i$[a潙麤P7啺9 5H -︻蓢禡E-$P璆娱l}恸)D0`1V奰5婭B[¢<嬊 n>ッ5鉇暲u芓粺懻*|zI 褛皂焰z)溦!戞P堹认p煓螧Lf拱峈ye)b3詀ツ猶蕓?駽!(蕭 嫹4$XR<8\9帇H穯.醅.Q麷禗oB-躲-齈+綛91許竛苺x ;挌,煅P#Zb -X峓填虼3 @K:ou?杮t -`8鼖囻豨椟v3T2I6樠<歨/ゝ牷 -锖H躏瓡択笎D+魀燲5 '鋷佭8=VK煒匒S* 獬迁qi度?仗妷╣@S侐9 -f95燞曹*A轷NP眲,託&懐e1  `魈g( 蠗戬瘨Iスd5辯~8 漼嵯>'臥R}/圏f絹==5.鳱膋P+P[鸯玑+Jòe帰<9Ar鋞$j栥@E厊4~庡諣怰kR8!独k 禝>柇>>掣嗑逽圎n L稡 忪鳃I!j覨)蘚娛穮邧極Aj32!C -榍澵Z>酨蝖幷政3椟錪3R渄_囷1 筒啰$陁ɡsJT麪钋噀Xc[c>}K鳱V颵R8_24=#n`眤r4騏P﹉境悹䜩殤崭Pg尉/齤.鼑唪 X迁銃 &"渹E8徼胨扭騫圗|POA -{,鑡旿e'S~鹟洧疬Pf斛(5佸PbA鮥松嘊旮T瘲9@艝(昰S龥>S-陿<=C5澄I薶Q\蘨楯鵵E<倦嬳DEJ瓪~&)C數蜵* -鸰灬聚M淝謴7I鮳諦鞵*僗 = -"浍聣7J 锘H' ?"睩C慭8f剧R[}+穔簶9#贡T<~w吃駂椳鮬徿駞+擫F Y\)h泚簲T}爁壐:Jq3迩霤┖禠礡<鲅 貐阀qgv5EV鲹簗d阧 -jNV?A嵵&硔魕蠴愨+靍V稝};浣蹵?3璔覣 闐Rr逯r|蛒鴈; C6 厀9<ㄨ1豛娙祽弻WBrG6↑J*y鮏鋯K+A聙)獳 -醞運夒m<䴔嫳玳VR嬍芛Q#N布 =鼦树擪7N李 r-淅葏艅猶Jf際綖R9瀦屘"^@eZ.看Hsymz躀 K咃q偨6Sf雸.6j 'ㄜ俕k 欩[羧尙喦zQ3m'V痝邸_C紹嫠げ醳#D< -*莅M}歼h|谁章筼綌珡MOnP脈I嫄买F A, >l墯N>|qK>艢扫媳72;$u+(.跆:+﹖險谹蕸咯蛸+c-)\嵲隿Qc岬懞cA跮光V;/『9椵u獕詂@_S}~)jz规趓鳧觉b;濑伴怦<腃驯)2徨eX充K;#昂苣rR韌逤}N?O{夗3ˇ*蛰^E龍<;潴D\Ho奻k郟誱D媓)烔趮釭h毼螼諔Ma?' -Y6萐@b鷯17覭ZDX鲨潘穃磼s柣H钁矚=镶峁Dj92°抄b沲U牂鄃,U軽蕽|D%飚欒W騨柉c >J+e霙鵏鬴I勪爐趕Dx煳鱺*糙枖eY>EO2pV}"渣b軕痹揽Y=l M瞅5剻y畜4-洀b刳貧$淵@#▔衏`_穯/j 阢@掑Tb劢mJ跬旸&`譒hl+7鹛昸|场镩v鋓鑍|矍蜐hFVi勿 鼗蝰誸⺗ -'Q熜 K∞ 鑫a汿WC)驪(舭憎踢爮=!Pφ帨ZEU+閡i I:瓇覉q蔴=齇%庂/矺-烔g埈u%咜鰤#g+$)怤X珿邫堣i5\H%螁M鈖"z霶t睳N~I0殥,萬袊酞潉5_i#銏隼炱斘j狆萄bh5 -篻$"[G杩S㘚r~>賋\=(猏w =呋 -嶏~r8~饑絏r罼?a鋰&箚臯1*e4勿牔 ,(圀}_"ut欫陓键t7C潈悦鴦j{鳨怑 航[ 偆?冤!杓*)76]_# }厏鴐臁樢/櫙糨; =6▋啁 -唢缵飋"Z['R骞匼踸DZ?跮V?慵収O蜧31 A簟垬]>幮"目$[ iN.鰟YZ飊昇|碮by' -3筘d掉"辩劢亦|餆\褩V娢螕s: 眠墠j^╞蛮0鯝湍採t."阹魪PzhjX趆-産hV佧勻z)wpSf厀>﹡<霺疐樆眢展顀庸基雦E)tJ碢6G死僉擿M鮀輱8%[K瑬苳W{詈塎锆WYl^{F#,G>]麥诡邾䁖輭Qm9l嘂扊-"i碏磮 +《&UL@o屠彸',自rNN譸 -ycx(糈魷F[鯎Hg.J婷W羄A跄蹧濡6 -z渜?U>E-霘 礳闵洬舠蟶辶缚燦懐m换S;鯀^罹稺:裨#3I鏏爐Zuf 赃爻{I裾y鄰署 _痭茑揮R|祚饑rGs懪6/iB麚m*唰4.fP|g盠?縗n|覧笇騚,v匈骘q瘎帍渡濛鯤=w=燂慢E颵hz-鰊惎K/,:巨7~癦,慷P▄s9曜杸F)V漖垳巖s霤 Ih総蝾6┿.T琲?)#?B竊5[f鯡箵6ey竮1 ~ -Z錬I哽扆夻欬幔鉇Q+遉J磮屭塗G -F螷-n烳磮Z剅 B悮>她礵V8檷诈6叹/u遷晍睿绌+鯨@駧o坵3~'搋鐍|袈埅83铚\>T覽控ヴ>q>X冸邸=!Pw皸4腃V#)駻7邏觀?髶+謧p繇昩z譫ㄢVD紻噆菗/物 晆△鼗=鰖yT饧沜gB]4*y朮C鐘曗尳#-脵e,W]_ 塘騙"碼+靆猬|愼詣鈗噪?攌$7:|:?0V玙k畱3lW狮⒕:&\/鐅LGM俕嘻ふOL(U;:䁖tG躘n^訊螧C唜骞鸗Fb誯桧頧Rk吘o鰜)t?)5靠A9ry塕:<廻回笙l殞W2桍`脸鷷鰠J:g僱巣仑鲑F瑛榖[.很庂 濒悽:_芰j充棿 溓窧8q{=b禫zjr織齍猧+燁T;镲W侯鷿x'$逎y箓x噑槾菩?b禜蜀礸娕;潏Jョ驷葌Rv薲7W9萦aㄍ膩gnR踬EDw,97$i>龢#熡4 渽2廙2&[a螸fy斠腟f"zOn庴叭麍嫒Hg)E避齲豥蛉Y5陙 -z羝 -闟0Z獪4ru -rvVg]渆4:匌欤L德>鲼7*ㄅ菸td炝"V沈ù簤BL(:#免!R0A蛨彍堕犅短T.霹^tG涮罢 据Igb嬊鄬!唯P弑鬖燦O51諻Et~鮨-蕾朁3h瓊8賞}%蔎Q锶{*鞜#6^Y甚=亓禥8r~亹ql蜠寪娯砷m -4L啰>齨恦袩┖紕?yg=w57]*顖=D牞竞躌:訃s8粓礢qq鉤yo刽":_虿奡 X桶R覈fu[嬰懣汹>*jJ暂Y'&銉昔7颤.8y颖飰=?1<撯>畋6毼舵v侠-j> T溷NBB鵛P絈'>蔈瞈篳豗>鷫 9沛涪贝疎[P沞РxHJ駎^魒P发梈qa底栅缋冽?偝V,微e囐嘮w}峈}m-霈盬OT 1墌!硒⑾_<4楘B3e緱鲵衙麦X!O ? -z鰵au7VI齮靤曯#r黸肕ヱ詑#顿 膵Ь筻鸀軶N﹕鉹眇歒DX1-チ戅+ `火/鑝筇焤=鱳B)熃6愥2鹖喉B勳韩速讝爁鸣0恔剚鐊贯鐊 KgK琵8g區遵鵩滚闗车侒zǚ)檄9{臘n秫x3|l8/聗莚光<潡毗鰕延纘嶝.漏輱7薎:+墳"霎鞭鍔K嫊煳镈m蒷瀭^[ h(鍲h?(咸咯暓桺歆}}?N,:Q`嫵(瑁"G卧荵⒎d埑@蠘嬐靛3珹罝*铏)6挤V8聩F惿X]on`>y1捂鹐貵滰}鹿5#奏豑腡z8僒skバ蚺FPegv峴泡蟥.E"珘#讞aOq08,店 - 敵"薶歀tN铌2蕛f駫麭A,貗责:P酣伸瀅着 噦Z 鑓B笸荡噦隴涌z傌戮#z匹=)b駥稆|噋蝣z诜+ 恃+O過*殃[?谸d挎k楖6妲)直xd樑靤K($—KK(}8餯>4?孇”胭6霫 珹?,=唦<纖>轋vhp/恫樀~>vA蟍)==1G瓅m櫾xc魼A>忥鴅媝dh.Q 蝎妼耽x篕基w墠煭莡V瘪胾B1G1玸奣vv炐ne喋7乳詏腬j靬"F繝h麁狻b[歎)87W碗煃3dDg掅冸<馔諗s漵枈舷k-釒晨嫓5U塊n溊鐃M -咸鎆町阄p觅3^鸒䴘 噙A狷瘨p炣餩黩C']A锦4\{鏠傶泌[艜劯搫鸽L蹸w棣粭滇DI圓HpO俴#岾偱鈯ww辐Hf蟐穓e;麨{緎鱵炢棣2込ブ魁,_H姚b沑O 秖渷%榹Wa!5H8O7駜_欷R谡刨-竃V<3K蕦r皴bQ]'6A3倫W{衹xR -脑0阀2 痊a}2mT揕頠C譓衼攲?椫㎜ 敌詭cXl5.M<輥'炑珘| 櫾﹤ 憘3∵裏樀T鎫鸭-葟树""簉?v玂 O隤#2:tY,~FR膾[彚sD7柢眲z%d'犬裨^t=珿揎 i2悝闩w+aY叽C&偛緥Ti繊餎鐀騋7煽⒓&*穬'软讔 -贛〨$V +邏哦鋎}R& -(褘τ⒙F 斔坮0"cX棗侪妀%勵5 K 4鴱葫T彅+齈 蛙H&w$飛忡o蜝u7戃﹍虬抟$姼鮁-輭r/3阬 -侍5瓫O发x态wZ]潓闍*糽?姟L]uP圜lE溨 棰5(蝥脥皛ZL竒 <砏a>卥賟-回iM迡<WV鷽Q歐sn-mAtv踺 >u苗⿸3牡諡潞&k赓竴x1&緅=#~辧c掃h!菊7h姃Zt葦 鑬臗無%摵U劮;峂o粪偆-A荔悫V4鮈X+rYbz褀緣W~簐鼩QrB -熻:姀漭^yo虡*琛▊.>酡譢鸺8u彽郚/巊巏釅瓏yTɑ*繃$b,,飲y飪17nL艴D 梲%< -,M_W\<7%觷祒)虶棒AUx #C唔Dv塴尭=犈空瓏虺z憁壋沺窠:>y獻 O鞵A緩J凗/〤]忱寅敱宎5n蝿=狵4膔 瘥 褴,蜷槝z1吙 ⑥ 6骢帱耉别q9醺KHp3餮C^#熨'*鷓淲)鲫 焈輢YX]飀芪魕鵜Q^綐填4$3噓压QE{Q,` -虖鹱D鼈!:A_`~擩闝鐦廴[\瀯)训P撯R袼Z[A 縛D,歼+eu恽霽偀蜘'22嗶(?#+阥&BR睙Q(趪 8厦* 襸i}篋陳:7氤*/~'QN謜ev)峲:栌坚?菤凐c7宝乡鹞滂/b臬噃"膔銽辖X醲K癭/@苓b:P#9洋:A訰鸔H见b/:%琱&~觱A愖%6櫄重樋)r0{Rq^Q宔~咒%v+耧 p艆M'#.m<勚袣1?乘!而v#响A綍山F17壌^M -俾瓇m"穻#,0糿>%z輋盟{驒G<驥{误O/F哪換沧*9E}"J菐揢C缟[螨x娠V&7燍x蒅3瞗蠽許}S訹'ǒq"_鰴y<"kBK9娸佹煚 -厖f悦6娞曛2鶛,駬恒染畔kN髎籋饬1qн悷跜禌馹魳狩捐ay =^兴艦 怿隥1Q襞*播j/挄冪群綤d}笎,$Ql耞饑}<焐(皳OwX挱]楖&c聣禶^'m薸穸Ovdk5蜉烍Q11f15M茥眉碸 o芷贵:繝_$*穨^攥E<偈M{餟燋='竃开騜G鰏* 't艡]榊~)qi賃撽2笫R/英*G岖3AV1摣袴u> s慢Bй+xqMx吙氨姱娜'7崆 酓Uc?跛c?鮡9>-9諠%9讬韀Qs=鯠齢|7w醜G锐綠R印J塸+H咱@4髹摸%進XSo&瑇欉园磓央v[訏W裼甋们塆8鵿P(琹w0愍Vw:襁u*/娛戬姫\L姱 *;/嬣4 -7 -嬟/Po墂媛篆雔D臮鐓%蹒∠315 x磥#m谕升&9m寳舸鷬kB牛 瘤淈盐浡■@⒒蠎[3n/旨合'壘N鼔6?亚0肓潜聫罝]馔悩;侣逻$B哳溃汍鉾>瑁/郜M拊趬_棕 戡Dym&釭 &y f鋼!醅O尳え7]謧舛s伦-g呄篛 -烐Z`y 鼻芲闙返爱蜪熊.瞑縤6Xy//薛鸑鈮丟qVb銔~庐:_Au駐詳>Ou6簺綇ys虹~俶gZ苠帜8绘歌 砩矣軾&鉋′陌73溓Ⅴ崤0乕*<櫲祝n忛!邌b淆*v蕠齞赡 愚鳌=E虫1桚oc 幖瞣fF廻U说K巧唞& 琫 Z,,F埕歱燓捂律蝾3d]鱡^幼鋊;藖g褌苆'銈_礩靼3=lTD雜:~?e訒!M孧 l簷嗾抶3%褄餛s]葛Sw0cO犩kw犲秀▼)瘰簊⑼F烣p繜`琬甆摭t8?鱷3Z瀹d謵>sv夬wa䎱 3蒱釅抺舁労cxL鶁<麅娥M穽I]掸ê螘l貙楖/瞓R簫#┸=熇D驼^'鷁$|/畀5鶜LTG诘'&4%y7%&7xH}泝RE]7垨濳fc彾皵7c"8&螒/峭D/谖堔促奐韰/贜R鶟u酚X稹轃;A_ゾ 馨樘壙衴;俣3;搔髜波垦煥鴗歋鸌蟂4垧5J芮君AIP辪g>\m9:氺v"+螔U界a䙡Rx珒M骠5夰宓L坜鶡焐嵆靰uQ忮幋t莢壴1 使5$2皋72V]捽Y造V輓R謕-激1吉!淳!㘎[5吉)%2Z#*岗Oj蹡k26T0`1鳯偟黴烕屾鄰%s縭汕#翐~s~6欜ES=@~;袶G0犓梵5 ?謫忝烖O浸獗猵討z 5嗵}{褔 姏螆;*o埰BM寝K<汢[o晏糾92Z4R鎔52瞿`^荞聋1W"cC剑%e蚖肒罗;剷伦玜E蚖胇48E纘梈漗漒韀+⺋陋祓-躭Zp\ ,3=杤^02m+ 2氕紀?纤W莕崻 :x'=V⒁v;a 屔o>[垰殅R%ゝ輊~Q鱥祛oz苣检蟌涑浚蒹r{r蕶铥I#e艠嶸D -看哯D_雸NLhv椘6{%趘e&嬈*C彄齳馸A 蕲腋fw山t湔;G>呫籀艻蚝翸5:U":諞%蕊眇76\髫珰昺纶F'47$住]Dx諉I陇I薇伒壞腊获;毸i潃)钙/^Z揯碥+))f)xn剾醷趷鯉6鋟~;怇m涼茉袉牅犉垲 -bǘ趉欿^蚢h溞瘭1騘dz瓄d~揝dY汣xj汯恬〖X鼦!0}襵魺6渙=鲰樨梿Hi`伉*2(蟓蒕ZSbNufI拿!C/$⑨鯬Q_{惃驰K燏鼦縓YtTG]枞L=讬昿//謡銾斿饗䥽逈仞疻蓱!O磷嗋泯-F烪寋橛茲菈綟倾瓚&-E譟oi}L灜2簹4熷挻(筩梣盹|d厘鬇4K阻m=x_b+}蓀61鷆碒旀雿绚ma鼌綻鼭綥}m稹5鴃?v袯儴嶮霨6互阿髿ic冞┊麯椘〝ㄚ5炓k硪T裀} 康轁j閡丛{團贐.摧Jrk圠糣/M竁絒k糍/モ壁嫛肓俋晃ぴT鳓埬3=櫛鋙冏夻~⺁;魸諧叡6=Yqv漅il苑% 庇匃u4Fe磻塁a遗!9藆+hU卫烦俖陜o摩UxJ`軗+髷鳹F趖軍搭I帊{S兹璥?N调粸焱嬿n N/u椉﹖,(鯃蝳諧螯經$杰;苆曝巡_は薦%吾Y術U誣 濊2桦糩byp禹9七杷頖遪s-敫霈蚎R墟裔,鳹$鳹堚≠D﹦;霁濥KZ湃9d庼 [9 覭睪笲pPM霼:R击珎漿弬m鸘牢,爩谷h:=洤欩-Z-淄:<2嶈{锛"J~裪%迴扳罉0w8诪)鍙 麢 諩滆蓳录(>/!踅4揭3: 1>R旂q頲9H妾 老薟兊乁`X繰x瑔毢靀ī IV[)-死鳾K,笶`R皒襧皘闒癦a;X粅/夭E靋禌u u^褔 h>o鄰锁{趻䲟璱$虢wl蓒棃.耪庒纤]"搄=cb獇7=隒掁>`圃SW~=6ⅡF岡萻 bt拿=<订鉐hk梷淐褙鱍O6殽擉藇椈篚歬铓縃?▅礮午澓钣{L+榕秎T釡隬k瓏mXf`&γc麵,傰 -凄榠笢蕰3U'Vhu汹煜鬥/鬠摫W懥~麆棤c萕8x诧~祯啝给骶Qi呸;2J|V窲轚:G墚饘傼X虿訫虍-ⅳ%"灯3:7. s5闂褘乬鶶"寏k斠竭)^曎イ6m\ 秐 4臀岁鷇/殷蔢爕驓軉U\0LS<樐<錫讳郤叁躞$L仃轲&脽錁蟜络蔣[牢p愓去鎻杫I^J/$舿挊b卡橋隥覓验%>Q穻剑驄<籏 -嬢#熅鯃虄s3仿]颞-陖礢耐x闗S鏊G権窛0w蹏舤概 褾GMN佂K6C;澺xV睱+胸虁:S酏~2瑼繅z`"3疚揺g脽偱蠖傢,亞o"8+鬛V卵卫覿wE轖%舗锝⒉=弶x]頬,5~鍿噇驣﹌d^箾DZu'3KW 鮗豢k{H\C咤悎N稨謔磵F艋鍆36Le2丌雃渖疁+MR〤st燠0梾6壠PZz#峜羀镨7%n谈!_=59R"䓖4ハp垦Wu+i-%#k0幮jl_=傼+W-毑琞k秌]<鎕:撬UI! os遹R=}x蓽龈=邜縂慾仠"P溂秈)辞痼Y0b晓駶靣8m3魢p靎靲~s/X惰X膂9鮖`兒;XVj:偼淗坝鋿!款9*翔-1霸鮞Er怶Qd鴭7^$芳驣/*r廎5CH崯魊{即 5N:む脹*刽%Kv眧搆F疘0柾X }:8i-趔珷E.dlS>.傢[蟈f瑏s@縉fVokv霃簛鮂慲峖 豧鼲鰛o髮c璧阭 -虄mD蒋|5劷 妟鹗[R髦#董-鈟晄d_谜皬蛶馽潕5嵨塈U^懫邍於 c#䦶%?r醝p磃拦庒鎄 (钨翆曗 -uh凓`)疵暬E`錘#發P\ -議艥渟艫`鏖<箎硵查%蕌鬾:g硂鷷D_弳3-胎苩6$ 49'嵈8'jqJ獁K榀sAkI.毜n趿k茕?砤[`1s X絉琘 邸柆R嚲B,Z 術聐缵%G啦デ -E皘- D祷O偼`;/8Q(慧砯戤拔镴O闀G揖/U+k,蕨NG摓蔷>""B^Kj媩宜J躡灲髮鎂3g饯鯇龙9折韎躉踙U亚Tn)(蝂峨Gl浧d嚾KNg,倅p唾 -柫x糰5鳬l8`6l醼但巶衉.浛 (骓藯9% J5;`j拜(l'飰r幻鷊|B/U整h5 跉5B煢咷}巜穒蓪xi訛%M}{C汈瞀鬺Gv傎pE攞sdjM偷醒韩a轖:4舅帱鄱蒐{f1眣.Pd &鐭良+`蜧E0_傎劾5鷃2虖峡歵4lt嵫;*鬴擮*?7I%蓤铝辛y囓kf候t闝趛獏峟Z狰#}価>\鎘6$銪{誷&G规ST粬窯,w壃畆婅╰痵Kj猼嵜>w8U* 侟c浻䦅迦>Qf8eX>o;X>卅}l漂侻轴`玸幛m~'秭瘻肚W濵卺騔~無汪}3鼯滴茜R>u緾%锖YjO閙j汪鍆:曕蜤9&韋Z[繒粜毾潬7艶+ 嫖n踽, t 鈏堫v瘃傁<桏儱蕓{檜泿7v)藢螂 a>糥,Z 7沉&刁`; 禸琢A豷鷰軄唳貵查石狲杂觊Cl櫡dA+帓9dsG{蹯c~] -_杒<命DG跀髛聨鶿妤?D髐玍Dulf嚃m企`螳. ^~=?垪U*鐭苽沁台鐭跳#"裼茡骡 鑯'2赬E(稝羁弡h=痛鵖桌\7X箽贮l -86j]8>`e褒鐸痼^l讵 6o[黧羱,P驵ェS]+洰桍鏩Z]瘏66⊥跋運瓄飬 >昣鐍利糨Q繈2莳<窾.阶皻f唱h係G涶谄螿硗蜹_迦嬃7褌絹D蟾耜繜航B氇瘏z迁'M琘粃縜棽╦児済皾 -3謨e琐 {屃nmp噋gp鳯猡C弩擪闊淳6=qQ瘃;鰇潱?縗潺辺曮G噧扬)璷4K脱F 拘栦茿o肁赥'▁咕M4m豚%穯4戍 垌蝏頲跇s?輘7顇R{Z蜷捃D#! -O藫岑v sZq蝙垚濚q熤迥敕f甏1庅J`6.蘳o6o蜼J№赠D恳遡+給碢瓋VR鱤褮喛'6GJrj"髌郒聊O磫mO }@1絎謆u衒淎ulR?R4xKk祹钇'奀锐v/掼5毰驈Rd;1塽耱d枦蟣冭聈e拜噅飏f_蟍┧#s嘔;8嗇顺 炌3w'#Z蝮路6噪 髮安谵8k镂WM,砡魁A/鷏奦迅5c挺cL濤瘡0fl萘(U椬s4阨簇}羆6侢Z葐q:醗}冾奠yU戳﨏粈戫%y鉍#:傱r敷]櫓襠藨耯珟骐e|禺秣n呩Z咍62J磉蛶x緫椖髍优靋&漪峺煈c8I埧餅矀坥;L搦j$~譶/.i茬鏉1秘!n玖叏橤 /5K21Z嶻O楖.辶\9鹄Aq爩J粜R誛鬡鮒鷺薤礃鹘 G孃遧黸$忽G島y停鲽V刿邉d倌Yas粭ê訊*b讙楂]鋻螇藒鯫mv|賖4/秇75鋸ry睄鹸畄)熶旴磵敶鷪If !.jZ]#~諀朹+溏ts疤 LZ祻poエ欒z蹅I硺祪}牨\4w X鶕:鬲o 庁逕Ⅰ慆Yw&`}y閸訑 蚲7薛d`"痥` -t怨罉c -(蘐贮淬L 彅嶞槳嚆mFp`蚏牬~8値-K仏I嬾 -薅"烑S軜鈃9听9=学]K枱墀蒓"胈&R諈:(瞐鸩牞栺7^2aE磶乇hK:ZU鵩拯C怯炄歵銬柤觊)ZW涎魓擋e11顗钆qk O繤8>俦;匍褮瀑邚矍;rD靀靆 餿磥笥,磘揪3琁硷9)s>鶇猛E弡颳M^啵<鐎鵛X艶<窛跑yj芈8Mn罌嶘掉< 椛\ ;y奚 蛱緱珹栭弛&E-鲐玵]箵鴗+mb縌忤N=髀EjB7贊*b奇?+兊猣`痽笇jH摙V組}L彔逴蕤鍀_A鸕詔#徾媽C匙Ξ`G>X螶k匏V哭9.祈bǐI ;+腔藟硉評佹慶 "3Y炟L栶孾茘-倥镦&锱c熿%价噀尐搹z(黣/煿f#y=-z辺胜何芒鯹營U厸è2魑&赪9E.`佥槨鐣筆腈%,|宥评耏珌耇X:t驨Pu+櫕貯k $'>霁M撺U佼q 孫谰大櫯 顫鷣I腨煓)há 傣F蕷O瀎 -18犀u孂,.衼C緼x/扦整班峦&騀&AzEf儓姪VB=D帻MxZ遲{緷楍A]斢K5器⺄鍄,闫W锪濷&~︺%苑6顆*鏦瞥澈4@越3W卐磪'd 阚稈鞢坐5某颮< e]梨f弳邒蚗莱蛕\8羔gp歆=繦M --,韁鏪_rU0?6WO*=岊箦?m5 -{9X'mN粥1搋X@:鈤? 軼嘶鸘鄢麽~鱋NL.黌"v謎箰涄v樃;n鍖kq掙鰍逻ma 韌襔靯Z(琨!兓7窩镎*辞h#絖h■mㄗJ斢鶩oh} -歜溅 B灟6<6偃耉呜鼫湠68粲*爒衏芤~2y羗&bh"/򪑌 9u骰祮醽m(掔 -簵廠O[筭.已7*啺M欯龕2P;t餷wz岠9ml<紺厀辪:+hO:9鏨h/y籈卒^厫賴霑10x:斞溍飈/轀峕 橭鼊鰺圧蹖修*%zQs\P.礃SczD|螿^R2mB蒹)(o灸y饹'璆 }/馍宪偗%`嗸0шネ嶛i38n喓=! ,<鍟昚@-F+r花箽p魛:凶m]牪u/>C媶NVKQ簹F寺丂l!gv羜订g陑3镬-ho惾3|9阢He樺諢澉 官熢y.1媝镗+yTx拪]榼鱘郘揄?TDE潡燃傎雛-A韌苙轢媦&,=R栿直SZ霾缶啭W綋uk|縌鰲CF0-苪楜4x酐a栂%,穐霏瘒鹇1躕诮図粬皭g6復窉Q匕莨纘嚐t潑霾!枮绒O必眻W;饻A]撩&Q3熓$酃D吱.駒繉睈rIYF8臗粦 -虲螡1u逿P趖{鼔霉骍潧鵄櫅齓峹镽姑8鱲譗ぃ@\馃僼痧幺眲柮XR薬蛑3變s77nb戺粛墖<4赌踾3哺 -:H罉▌ye烋毱翺薺k@KX坰襺*~!t.顪qk),$ge駤鬆-$监\韀!睬鮅考M譱餀剓*岀0宆D\朁饝?cI5噳擭5鈔>y瘡単 i2柬僃拿!.讧罧8聥|祶3蒹MsoM錎具艻鹯?钹3噖蝭惪墬9畩轂PC躄,0w#骥pOR緭6つ钧M檏/澂md鰈 -X 镘 444畞行伇 媲z3" 梃垅!b>b"傱h#"b龖竻,苼硳e翥b揄;4鸫NU撵苐輌Y肷;FⅪud护_:蔒1兵w泍偮繝KHfa4爆馅hO讀!#l p{7/馺臉记抺7mN袥图犼詰譬\呋栁騦⺻Y=灔 埸$6t6鐢愉C+7偯恫魶\4"^x阄fQR箹 舵襗C:+漯睦楨F-b 陔徃/|[>RV.E+q/┿0~oB所爡嚱谾^婼$鄟x瘠}鄚fO瀷t)撨D栴b競[皑W;駡幺 邷5高凊苒凹a#"o垗蔸瑤萑_噚9qB朿zuv趏1襪郈l51醺gSI椾e羏,?/狞厃臞釨遧芷m:v苅*bG掁髯1{惷瀕%WB{+a3諿 贒庾u瑛颶N鄖闷钾=$岧紣'[修D峹譳辽蕌IR鋇姌梭L_瓮峦SC碝5n謌5 徶4XBKY営"肐i>沪-56u槫vD賨h謥vF\p<+X[趜棠m巁槃4(茓ソ<箑 -x1}譛l盚x躠瘾敟该4盙赯20b=!6珗鹐亿)M*dV阽J拶寈倄Z华鄋椚磬p矲T9>┽OG AI鸜莲漭A7玀吋懝巘媆寘幕?∷靅~:$溴霂\麍y榼鋦,u/}T*咚笙還&.醊礀w%VAU鼐h5Hi}q桂J朼~鴇0孨鈱腖e鶰2"o戀珝遨{膝lg鸾cW鄳蟱悺隙塔犐Pニ坘a (霊線t孷Dq抰媇0uz -膛絥"]c0,色 駍幱餾^3迬撏太]<旄臍G凍#F鲃鉪碠聆(-踧[瘷茦 {莆z螤\摉※峦鶢谓?e ゛欍毤斘Tq -堲u腦C!<祟爪2 杉.[D<棰c狣葥w ^l,wQUsI]傊誼 -x 魴GQ伵7B#笲8滋m浒k -hm椫s棓砹巤M沼婷:H 梵u.u#}-bSR^楂`_.D.@}=<昸ry氢异楞霐怴b ⒙^霧l柠d最i{攁i肵翇+倜Mk?纾齮)->'V孢je7sm釼&5瑑?0鯕臸怄鬓h結裬M|.屋侥亏]熾捊DS(濵繪"e@嵦蠩|1=u)席`=.f>蔈翟恌 @|闆祽裞磖灺?8椦z&Y剺騂W 獒'.,?慰吣E\曼8w.b€wF醺#獔m喤@銒XtH硛8胧笞g钌Oga}AB_A8IQWCNQ0wX賲#霣椕骜蟴文消搪a F焊H7勓灂%狚璛鷺*栟8攇騄F(9因H_ 殂!]^ねC膒!铛 咘"阇3嵵N哖垒弯蹁請鮿K揞F 偯: 着r&垂囇淎 3 -橄\p汭y漂@y v{H凈箍轭肸誨H堲薠媗14俺.訉8"d鬂w蕕2锎隩#g%溮*詬麺Fl 爕Lfa'削JX8鈭D渦焷4煇敖>媖m'OC颏 鞁=剺賲I%C2寀 K睫绒洒K呃听檃鏽垄^颾4En鮧 6c婳Z?~u,恳奐o觘xpG劙ふV許u矛( 頃C醿F硭Gz <蓩taM楴L<=嬑刹/M襣Y@縤H 嚿=e)}Wち坝N{虭(C鼣稥k沛*OS酧w".b*a曳{埣q櫵君Y夝蒣鯠 )#^$砺寘V2(#}锃Cq照\蟪粁cbb梼鐁虾B熼9兇伨无>&疛髱鬯龋$3k袨悗Z{K啤藨e9蚈qQ粣*bq簖頽B:肨0瞡疎;0l !b}鹨Z!}F 椹F举凃.*繈鼈荓為I9挑軫腦啽挆Pw惔廦厝撔7V2)(啇.%笣秹 !偷碼i洖抏8灘+P孈9p篌騂)孁n酜&婄H穛殕稚攸硬0G愥Y:N&.#;N酭N匵.姅唔醢nWF蹹騐慠獴E<夼0顱nC殱H籓xg輊玏/L钫6d溘=h庲わ觫X賗/:圅椤q\ S3杷N0>&/'.虯kU竎"T#,dTCMeC辣"偈槁赨] si楥 -N2l灆 br#4鈼"?nqI瀷椗/鼠7!埜MxT>呀f捐N'z笗az钳嘛綦鬅v涏si- L蹵鷇幰咆塊l@撼h_=襽w湰/2:e0 澛`Lw潕9q3撗珓鰠楶,.妲'/@丑濳^s5n#@"AH6喫 sh臆V炨U=貑竆H硦憖83;>蚗pV硋槍滱}a/停lm4U椨\唌vF烵芗窞 殗8駡ナ埯:!砭yH蠝e$堺蔫!>舣鑯[圝iPG,f7]p炆K猀b?疐虉X|#lf霉!k/Cc 挠辉y憃#?┉::,舢1^t'ど,6揈糲cL竱sY尿f宴渇R禬f楀<魢T|Q鈁5~钃犬 隟驁F茢"*鲖r ^匿Z%駭#H嘇綥铦蚨"!WrH樥攘3磯嬜g筇螸bt蝳 -BF簝d鎴=⑾您U喤鋥g=y襴:y趗:釰SA隙狁mG+楱1Cki圡Df鬷3毀羞愇塊I讛eL黵;曅ヂO檠圧Z 堜赾H Q磤騄]匵唸頶@|c=}搒﨑FU扃'鮥鹩z鬌i,郁z庎V>'鹿糫稲禩^皼L㏄'V獵<冷d0!|o瘉眓 糜;7ib釯mG商1}*{璠爑R膬&|SW1q粲7頻@3刱蜫拶3p粓鶚m,炷丈,襆F酲8rX爇BF豵ゅ嶺`Dr -怿2}隯6笗<舀喛>纇燷溝h勇y廁B榐g@F?葁媈8蛟%镔蘻袒躦 蝅忒dx}梗,庋喂驣漰 ]槍,)踾"N:y#o H;q)氤&.Q伺nIn+P 啗#?n"`x敥 1⒏墄[埮峹酶誽y?y#{ 孑aJZq椴"(徹0R!&7耥>*f6冰埮->-莌诶q1彤"轷z携*-暂f6R3n5 1K^硲1z%瞎蜙9Z{牸n璅蘥Og岎蝁C^K[食6i炝1q詀U2洪础炸鲢;&-c豼-昙鋤%T",.片鸣d瓵6/Jl諦72礢崒=喆'湨"]?5C$(笠洀"N(Za/赙雡墲荄森篋j鼂u膤_ R,.剩y徶渼粓:Uaf$硲$誯鈗晣恌+灴 鳖(锘莴豉賫l庵GM,电鍥粊Y?緸綆巅錿衬礦聡&xh裿:茀肮橅崣ㄖ55 襗gQ'd懞,Q嗝熱H"hw蚋瑏椺#m/轍]'磅+p.!洈) :d紹荘E唴屸+鈃_魳4唯看嘲槜=鑑 稾2L5忎kg< -^匎蠪幉EL8E証慘襃褧pE腀荒珸D杜ノ"]>d聞FMqb划携p+y敃1n&C牳4瘣V屗DxS黟/吿G孠剡搼0鯳B痪酗賤腝G讗P螟'eI丑蚵K^sg趔}ⅳ&]摂:#能E済劌CU睏袳pNZ嗀義b鱍<.瞒袴" 6據鵞佰m*罩痎賶濿熰軡P敲^m'BJv愖4缧u:#iZ證嚧;却n 5錚05曺[oNd9洶>'忊"u>p襃A腼寙罥h /瓜8珗送hgA曏-萵 欃K亂 椅:5漦a7 i蓑3r<虼,鈗嬑y漷焷4NΜ过d奱诤蟙樖73左i@佧蜤:蹾gF溰l4Vmc[哔宯苲焕叇g]g#M镣歹掣~膘nm裼蜚o]℅= 61,n麤=lnuj髎谫&穂筎j& c4c63$]姶硏"KF;K/赮紲戗>D追 0&W濆胔06梊g!m -F炨姚疍黦d{kg 鉡59!mdy卸愔<!襧逵蠑U铚ㄣ(+)H_^驻罯橹B鴔赭gd工 _4谬6"胮價~"燂$5h".曋瓖廌b2寉 w 吒笏?顋鷢枿犛垄鋶0E葸卢"飳U竇鴟f]1╜+齰Z 鏧]瀯X莬槜8.Jka1G鱗撗+F:窰Qh-Z2面>q~2褽b鬸村ドh7W 龉 S愌悟亇vV椅債澀,蘲膶9赂鳁vy苂媪ig 噕+漞許\䦛榶v:r壞3拭u嬀妬IC燾)噆F並_"緪尗諞趙婀x=墖^搋蔘喱唥s钅V} &X曊跀4櫺缉O辻3稂6鐫俭貃馠DL儐\2R 6Z殍5 @;mb徉丢u%t塒_$󴜧75R*织ZK党,yIK绳-jD垑&j吷* _焏{灢c`/偕瘲h镙Cp痫  -n狾汅^0 -䲟s黠厁O.冉弩/勂濮鱊*琌Isr緊簶紈 -誰)蚽oZ嵔7〞倠涍6% }3敬i0)j槥鸉6Vt辗ǚP磉歇Q瑆B暛{7Db&崙煹呈洊 U髦験; 馰粑 {S咢 赮蠯Fn鲞赮慮赮j掞[籿C|QoM*豰韼 is ` 鳿9侧猤A|鄍林辙"騃浊肓服席G/艛6侦中\\$梋\a穔敧辡=S-伉}仨oV 弹L# 鞽h阊讚貕[xz灅皚B楊篧7h%B魼瑈叐`痬l)*蘹-鋷╣沊J -hb竽gp櫁fK -顀}屯l齐Y舲 玽詰擋昭%連y96E軌; 穏<8毂9玧鳙u|鳄剐泧v 鯦騐谛蜶布倕v眖'獫祹|y@鸧鯪,m`尻综)/4;忣湞划笁腛hw,$n Dhㄑ9t蛫~鈰o}W7G_Vi -♀*鄚瑂S仜涥&攷a+!禤崉8;翶F蚓∷Qu椸尻虷%礯 捵'誑択*栈欵宝脤wrQ鉈獫E踣wMP]Y\犴臫;+赮:F構捇6秨负6uB瘴挕 憩.,鶡党?kgm砹Z9楱8抂J驜;>琩】L-0'幪蠝瑻_O翍嫁赮G咆iA -榿掰圊)Gσ45.殁9'憑)簠酽鷇N=狔-宍r/襄v0R柗~鼵暤鰲3鋪\嶆 n=[濙隓Crr3暵R紸[H:"7/j袧V?侽=4z墟6Z璗璖*9'鈴矲HIu摖錕q%壽麵<窆$2╂鯷┆蹡 圹譙,pせ颤S;索搗杦/5瘴3C<5O7繰is囖6諮謇灬R诋iV悻禗R}k殢霦S嚑KC轨@瞪s {8蔌A(oX艝搌)及鸫嘄94)7纔褓хKツ糜燢*mo64х[ 鎙]哗鮄6/根0Or.}.,杍g5$T?3w礇c2獏迖q閍徼r婌鵜; %hP}婑R贽镽D谱4綠户娰g嫔籖閮絙樸柔e\畋9]g鍽輼豣-b=#充匌Sば鹋"^苛舴爏瀂葧輄婜]s嚃`x&窠氠覗!T觅5俲莴#J 勀时X縛懟靮=錬+ 8椑^枩蕉沂N睋鈅p1Z)-6hq輊犯~萶謇屷<丱嬗鱋暘Sd琔l 熛{捧C,T深:f刺扮嚹`)19#I\:花y捈 P/硪/薴服B鋅l螇Y!慅s嘢}靶;V盓?H)噂$W隂]毬﹥簍℉ N:9趏T<K?kb 磤a_璞f074陘C8蛻YB顣E缞XW乿Zk=X隦l鰴貺镣形抴栋赎GK钮餀尀> Z9\,9煗L党倆V2毕*rM鋤榨%熛^1傊[I虠C GQ琁>4[囐黃髣Lr輖 -1曔R樬馬紊鵿䥇铷-謀赌T噿~;&馿跛剨芔LE龔L y#S=II莊叁#X7]!m蟃4ぽ"Z圬侄TU|y誻"95O妌$鋆Y 渄ja訹获6据Q髴<#鶤Ur裼搣拞疱稺XU52欪 蓢掏H井$锻 -h =5(:zrH酘hw!率FAsC埄Zg娷1杻舰~'x嗸0臇臄}S睘A57E翦靯)cL潋o,FMD尒蚾膐庿8h 峋"12$4玦烱謺鵗/?卝犑~蒀3郟!嬆m挘颯啖 -庈{A谉\'庇O氼}冇P訍<斾 jq9o旦浺BP`龏j詣eE5緺諊蘒;嬎97楁m#吿c硜菚嫄++ 歧|嬼&苶意$y櫱y馅Y裡連蹐菧*8K5芝c晦夫漅7懴<8+<繍刎">,磃暡c2迌j门',@}t錜I._俅D苒0{┦c周ヤc3杈I堪辿6钱;;=閍伙殐害翜輛w9蓢栣溼嫟愐Qd,5恵_5{輝切瀊燹 4g.<縓粝址T;kSS 雸m休鈭茣湏禦iE啊ヂ褺璥鼂愫攸Q 鵧K暚E<蒰夞Uc咠KT(邃 &镏|h嶡S庼9怽(窝UZ[笩b隈橽辍┄#FsN!絋瞘7(c ]屳7戧P礮hR弳j坭%2贤脷謜鞭L{]訕敿g -<皵=愨斷墀洙R&D;Sx~*髂L璎#煼荽A5UH\>/{X&R \7翉4F恲膝顧|N驏估<馩嚥嶢=p挢{普疮 兒u奢8蛥箻 坃\叶盶y藃祯旜CL=5T珹3奮扆&壯繦879v荄1珈詆腦b潼じ儞y快∝凉呰墌斜$\猡-{鬣蕤_ -賕鍯髨Ak 趐侚脩g觰2拘 僞^纩槔#T氻1誧I嶣9皏_N祒Jo.唙^C=洫膎亖翑谍臄4}'&,]%内訖手eR]%tb癡O稻&OPk犇=擑X俴専釤牷\亵2糁w屾害鉑bl囂.}恽: ;; #}儅k; q点T秪篔yr 鑆s@ qF3L 鳶纞厚R勬k篤9:+基媵琺pwS轞K祽牟鑚U训厁篰L!k1>f摫g挭炱bU釙K笮嬍鮽>&珂譑尟O踽皣$屶Lb╗Do/o -Ehi<失T簑*l掍\}蚌)衙򢷡疅钃2X埇">猼$憸夋鋟窯袟65睵榌姥萂愶饩'a綍'6薿蝻Em愉瀴慹違/彴)HOB<91xzZ眊K娰6{70痯X/}篚;GR輙铯At脆}訃86勂y杞熉鐲訖 c縝H侦杸}爏m@鈆D}瘃賂5侰1蛆宑]讧那Q+h泞蜰鏄鐲頬$3挓I4椡93L漎  譏跄 -齛詙P'鲘H譐 &>沊}t/鳞豄K頪挛 孝eX L< 趗樭>?濲'圐M! b~Q孈-鼤V 岾)Mpr蛗Bj5c欞揝檾c9邷!纒糈帮謆'彖 漰O~Rzj嘛xj套v1i{&矌>菅麲苙絛涌抉黡 珴\鸀^遟 wd乏虝鯷漧鞼驠憸鴗:鑍摕桧3诬 f摀X0缀 p_>借訔 鎽橗絤 鸩Y<怯搫I/67{羵飯e[粠U琙a琗g*-泶蘕Gm<寘 讦*-s[-cSF俠鮆 叀懆癙n圆韼~OpwPw 画篺挧霆e%?琔琜+L-掸秹褽{!固\眝禉\pf騀m 烘6:*=尀┙慨憛暵豻黈柖[)恚zXX鹶32发焟h.擏癟琙矌|礟橌広繼氕檫橌NZ寖_wp喝)C凛+棂女峤邀M{|6'D-}﹔T醜糗/斮噘MD8竉\趵慘{M蜝*z穈=逝A緤牺紻p礵 録吝kO羇sw酽鑯鵿铯A鄁a=倇S{顤璀f訸*裋糒郮`よ+;%<9橑:嗸47閫繓鞢笴傮G旋饠'f '琛 -=]#狖隽YA>嚤r補xkm餌毶広旦箖枡厤枒櫎鲾%z4xW蔾i糬TC譨璕>ZK袽GI畤%鲾 N蠻++術 ~[)FOЁ茑 sS鸶氌(攋gp歑*蠫蝝Nhn氅ch,(柉1UO灼)?%} 軬晒kC\紼gu+繯l&笝,vce弉瑑ow9贕魩` -f阠呓抃/9m7c\虻^aN'ex*)瘲_镪計q蜷.}E铒"9B騁J汅嬆虛箐愒炟可z+(GKd) 桠f( 浄蛳■ +{杴搯粊rSl庤 謋.x羾肵9榘稕t)?}リ嗉戣w禗倇Q败{&\凊貚浕儫岞$踘7u沆=u羮!圬;r鉃゜炅睴覜s謨潱糒鑹↓妦9呙5lS -Mr/'~N>3凊岇c)摫 鯜{胺{FrLpJP]籑Az寸?z^:汍;=5%鉌\u鶢虔y啡辠偨鲫腉甐X癲旧[籝:J羺屽杗*虬湹峂厜抓澹蓼C箂靰葴氛2S酀霹伔柍 閬>$->f*;-s諵嬺I搆@65{0阉R鲆羐截xo餭旭qF蟗W9x7←墓潱{+%K夬Q+鱪Do7cBX袶糗丫镓1"z3BJy惲c鮯(鐁(綮 翙肈飯䴓哙穮_螘Q摫=夬 'x:8G7]酎ve岗Ta皋B.+%Glq-0^疺(騴鈸[/]レ C}{纞鄾6:尳[7魛*鏈6k袧u -~_|6x鯽c尩.z1沸+F#9'麋p}钛}沫)兞~!p圼R佭p菔5 -曚-1\Oe碣 <%柲^蕠A|!|勪獐+?|#8W9鐮^柰斺是%$鉏B ?鷬y抢灁G'凍:猚j&袨q2nR`迗.\P6Z娸6庎僎郪掆穽棐L僶掆wO/拀宻鹦kd[N泏燝W -H*nN(鴈 -錭鈇齱忻)G[B0+牲x攐帨 炝?[躒&%翮娚а捭祗s褩>:魗螾螤袙Qxo皎w栿DdX1斬`嬹浙繯-侵崡兪F亀|0%魖 1{罙9嶉~歛+&r镙粜矵}*竦喁P賦愸跦鶓犭鑩c<萲/忹xKN 螇=痨睼[厚僟 -軃 駤*蒊=溹竪:jb眪(B癴8鐡8=*T鼍红Ω>噜LcNⅫw禰ty釱i,檽V纔啖匌z珉|p溄6錢 ~挸鲈ed.~rr-埶鑗Jn〗i,筋l}#}I,!0琡$礸p鋹遚灬檫鷋魜吚瑽} I7茞r鐥㎡供迹H[S(b餛4䏝汚$|,鍼p趮.扛ArdRd鷺i?'櫙槜噗D" xhD蔾Q 螕%!xhgx碜刴珱竜僚%~pp牋_3io)z2+G∵桍[8粤=优鞦|9木明 楏婈K礎bw 鶥-圜張捐长6郋lvk 夌禗鯱9鱠m夛w/"#䴓r;=/X椡=po饊/!鱰爖$緤t耥照 K!踉L:稨逪|皪恷b[pk梣z&錢N9:咑q呵縻妴 千pE~3o蹄軷麢Z繭昏堽Y鷅趤锽鎽欒懅.胡[O弐>B囉嵿Ko2$~戼(> -~嚦蕤.(姉饫wqn瓾|lS凯o耟?T2幚A棇7l\疮'd~P倕凪a窖嘖9!啵0^^p/E<驶髨鼾c侞' G$x▓潂'拦n!yY2^4#鳆&B剩檦xi.盦/凓JI&喍(竉ㄦA隐壭t"蔉R~酊凍迖徂f汜7I8炙>吼晥>c穽5,H,7暼W挮鄘s轒蹅鋉J㎏剅C|钋?:糯7$7忲t|L縊,捻膝 -頽.竊8敉犌鸣e酈K韭 .M(鸹Cc翏鋋蠧w=%jwm`R鷃HN&!08嚹-儵怷侙(憒凓Kpn -- e硭h溥嬈D2惊抺嫛)纃湝緖'!勒嗉"9򩊇$n鯂}'荫.塝傈 啾懭8K徠Y__鄧) 禠礪偝鬷O;-4 A9A]I捺燝墲) 8H鼌M艳镺|翜b*茎糫鋡糗b@L昃増哙b脇晴`顎|A5缋n绛媦F9%萭B烜iGrf+W鋵墂 鬳1@}h洳*+O氹裗|2?qD盔AT瘉腦迚$&.d佧ugH<喚鞊邷2赶栳7S抃叡諦- 缙Z!ow斩I猬 ?:茩,膁倕{墘~!6 楓J闛yZ夛>dm\憨<)<谎x9笨噬;羚hA蝌.~C飊∕皼3洲萏惎嫑tLY;m鋍颧p邤V:嗖ぼ$O鐫倆俒恓#'滀窺d寑觔w巼6劒村:苦荁覈泘鄇*w㧐昬閾Eズ癆湣J{痭婕-;Vsq焣i餄:He绁90蠍>饹4葿 呬淫#璃!樌#◤漕)F>鸺cN裓佷#ue-翂錀>-璩P轓哽≡讙 `髂gw謳3幬('ut蕬攗~W齶-矿9辰凃徹讛Owsd_hU衶Olv 邏x +鵾鳭詤<沱1zPL酀5:棊銆3嗿h琳衳牸碵b浡0譧浽菕 !咔W汁6R`軙謣喝煛5蛾B苴J轆泈 觾哝塐A車3!|~y鷇.G!1抚婁真$1炒R 禯擾<咔m$秌毴琢y絫繯.C -endstream endobj 28 0 obj <>stream -屏;妗襷s7:菆廍緭鋥輍q>/QFF轆b7纇訵亾#琰|树鋵$浑1j霗;鬆/倅<卧RM鮘;64nK\"茙|6竍[a忈朽扝糆鞩V<X溕$_!y<鄜pm圶N}(8nL篚谹囔 -壔&腰7磝Y285C) M_鱿赈 A駌|誜顝T'i 隀#娥[1眆"6熧鰄S齮9展,捡焣~椮>埖喧Q9鮻>*c!焬yT0鴲u - ⺷多"Β'- 惒嘁.寪pl -梂繄/y癟(k^!斳]迻.頕W聥F"/F囝D\L6姀蒀L:2昈;5兯骄佬D〡-valれ首塢aNQ=掲S.}g煘"rN?幬Mb鳕鬆灷{镊H~v皂{U 鑾躒郻饨)v鄯苤碅3墆缒T`圗 素掓槻y蜁厰wf#Ο1\溶?郬溭B荥塴崎B鈶)侽>玎咖滠匽\落轍[篚灵瓰M:郔埧E峀Irx1謩澍m燆鯛蕤仔Z!馿|l鞽Z#D铈栎滀癕u糘屾,v鲹踱5S鹙 ?kc=Y侫l7wCN'lN劯%鍍焔騭琈I)?#+-$E+驅~ '鷵紟鳾淑諘E巺s栣E$w濴箧2~]\\僫9|M驗)乳厰#余櫬 箤 3`豻嗕蹻斂2宏[辯k1L凶Nd=R!Αv-n"箇奈o叞堄4$1|n衹c覫^Ib68鋽挧床牕%5.K瑎f -0t礼N5塳\6塢p箺(!欧吤0f蠧&麌誒~鴾蟥=E綨56\葴w 校|⒛ -櫱f塓eRD鵫$0(x閕鶯9珑r'4o#8臇>鴫潆髖黥/櫙噁@ 7鄑蘒`牣|%7xG貕U1RX﨟毌蹛|dli9秜蜅褴栢~B規I旂 u&獚Q7^╤X%州7龅└氱霐プQm 'r享w 8G粜a$/.X掻喒塻騯`*鋸+ -糫╣牉D霢H=>]L=Y娙)襹=嶆豚九9襹5D润郈$泈~t躊[G潚鎗椧\軅5D嶄狚D|!Szw14鰳蝣%搕icL唝Jk懂a経j{獚!䲟6瘁磉槴H甽猂6灍1b麏弈f 6嗚s囮畡U}L蘕茂uic埮退劜>p#唕潴綋 \`皤衁a奌帩z樦\)梌挛 T祇VB0頨纛 耆R#l貑r5鎉[葧輂蔌烌q:羚檚|.Ou1 (昍鞢s6锫猺覇" 0巿I╧拔A=镰褡炮B梌I>]颪=>洖['綤"~憆趶侘徹籼郎K1馑 艸6Fj桸?麷`1爫翐\剀蹹M1 #bGrO鹉轮軞:槷!穡狊壷忻 -G虮磺裆嚙t/蝙f LhMr#`鷷0槉9K})|'?0伤跴;溏麸閆b(p球igg襷刐ho鄖/?@鞪胬芃4oZ98簢雐6啲03驭盀衾^)袧16鮣m 嚑瀅鼮g嫔鸦'火憭5熄1T&eh脖%房绮幬剉 <衸冶)獋邢赈.厇]c&xkf餛r 欉膅6K9鶢m鉍总爡"T番c*.鉎nKyt )| -碅癢u"潼渰B_Z厉$V邴隁Z:h産Q笤68`I.K<4,QO聻(hYB9j 澌钹8FD8P$槉+j鳤L>9冴0恵唼^U菥LU|g慹U蹚纈╙糾瞗掌P抃輶鵖kW&Σ聕紿烢5甈梩豃k3X;噈壹紶扶@ KD~O ( D^9"鴆閆筟W璌帿濦y粆3唙-o鞩檆蠮B齋t'鯧霷v忢G雊埈i嚚& {u憝噌隑b=晡T7e愂危鰡P韺蛻瓖Q汛B穾 ,鯵C┺mu壤浴厉衅Ha瑣榨岮b斩 vv#9恈@O无;/剹廎頗屲忨L盏kX攀臚婂?甎@K礦K'h鐲u3琣醹).騑3Q/剘"A-y9鬕Ab&09r^饁饩P~雨式o謶95卩衅0]^t+-<,Y^-J噔啲b`7鮐C儎鴎Z熫枸鉓5l7橐焊W+?畜u晖8n坆嬱笈 ?P虊Z'词睴歪蛭/_$緛;1w5}8]G*6:*濠>:洴yh=鴐/彲'V5瑫kZ,ロOL訇g玌艒逹m 2OTE棬6[x{掌 3鯷橷)LDwm鐲A/u(S-4g6FD6嗶馅煹1蓟持N:岃琈.謩I済 肟珞/ 瞍5儰輷郍h;L娰7懌x矑唼覑﹟ ui1r譞!镐k饿賘栉褱嗳棸?<╢╓/?k(騬詮惈#厲)jh拑oO=?椿蚌 瀅6缰|>d鸋昜lo鹳3[2>-$'5獿薞琎琜c0鍧閦(p'[~o xw零%&项4烪;6{綻lF镱<丧q鞷E.|壞6Z{鱋B皸# U鵰O諵m寣#觍3?1>icl)Sm尳3- m堏%橭 鰹)|-c/p#o在,T矀坂贛蛏J9"簔|鞎!鹄鏌[$d_Z0纗 )秎 笣'gq慧M呿mF_hlQ_[T緿k!7笪-o嚓倠礙籍I;'#@䦛5幌掌揚P瑌d试絔Z藓攺5fcH錐款*绋^煹1剽$挆罯尚盚;C幪I;塭B茷iB珠yR揖愗A黯彵bK 6+闣w朾|Q{f/狭趰濓樈T%縢伯题鈳L`覰O>*dhorI&観l巙鄛鐵D諏 郖"鏰螋7`y莉胤GlB;麧X藜柅{l$糶#飅卦SSY抋瑆 昗r?珹X趜t3绗堤墲" 骵 鼩@7jQX/25d;/Cpxx:f鹸奼6' 膥 鑙垾wV楁引 X硟揸У^h孊7悖*<熕91>瑼=G觇俹甯r蕬欂友卛蔊掩;闌[{p轜惹i \羀b5盔A▋6"5 n暢擑缺燮Ou6:t 爀骚頊添j66侃O只@艘h蛕磹閊妒+尻fa=CU佶铷%疵5@#溳t=:[#狛撺鏏r秬L}瑡 -HnJp复粎Qm 衏纰獸w璒l舕N蛒.裉獚釤:樻Q)5揚髵GSm岃.m 1秫鑏P傹eoDTP:挧Rne騵炯q_偌婃'm税f"棼17騉}开绔帮悄傢釶 JG嬝讇G|彷e6笫l]偲諶懀唜Hr$qo3cs騻粅忌蝏绔e l淿0h 譊綝讈7牼8瑃8遒蕩皐C W:"夛$蜬泜{G牓赈⺌鯦←娕憯kG豙=?$. -鄶N::UkB揽Tk擷_!c壗b9<z覼茞^桑w3N螀衒唙蒧S嶱蝚.餆D腙↘葂!%_#'A- -鹽瑋3哬{嗺擋'-K尛m豰{胨WJ琒*圡4_CmZ柀嚘@煑瓃 -zy>珧1崂d1,茪@0澡8麒総 鰺1捒襲¤已衠G>,航鷝孾敒󄄕睉慭烃裥臚頽):岢6鲢e鞗捂煗彉-窃鳆\_9mb┐q礨指捿vO}?龀具6作{ 鷡貒I闓)O~戤蒚嬆;諎娰={牐i哘鸒==C.v軐玭_'餁H,弫n6銞; 奪 雎笴-斫u眆&怷%nk5VD鞩%8jc?,p债$q簄衳F=搘!鮴丐w譤5Zj榇NA碼厫飚=萐買濧麒b/c蕬樾^狖儼迉u >篨謫P@^)+噹粥牂朒p攐赻謒K篏喣C5敮>9#罞_C礪9B3JJ5鹻9hY3肰5BVY齞 荩)b -;7,F\#'泣娵=戭鶅逩> - 抺`颙X罤:W’檡t簪湃十k娯-梪p啰'U耥卨聻瘳頟靿枰e"?S莳s蟥哛p0h绪啴3I&3珑瓮hi'鬋欔m&]t9q骇眞s'~選f鬯旴c!骛D嚎:b纄駏鉏0z6T7>樹d.~毹)憌脙铋"XZ@%_ck~渃嶜c终'蒇R>k慈}-衻斡g=泮By碫UK囎7w罸#ilv忟K足eW娒6鰱H<ぜ鴗緿蚁A迠Zj4逪=2昷窪`8斓"q 4厛}HiGg嬌Gl眆嵉z:&/Q/_赠菩諰夛a醬g鹁q匳謿a莊Q杂蔽]9栮戳_g灉'f瀺<瀀4毄j^握=5TU-仏グ5m鏛p虖锌佣f∽婋!l祄嗻SUE訳5厬sK7塐'鰮}vO;<<79鰢AX┆鞽乑(絵4低P隥曑Y$烳胍dn`騧妔S鯨耑1诈/贡秿~!1M堖C魉b}爰╥`?泏e[鱮澆磞懓%u c隓鱆ⅵ埖k蘷!~$1k猀3"2朴u犩,7B}硢PMk膺つ搃歆鵊馠鷞棬藜s }=闚醶貗:氁使kO江{7詵,uP3Vm -裇9鷚嚍:鬦奞\妤9l䴘厴 衋#y蕉%癖琅貨K跌癪敭+霮3瓮詈#S9cR施頑h枰|烒V5鰤ZE晱)?鬙HN,&潑5女z丽q搾嶯鐂,牁8?{}衹r嚙R労0墬/剹}{3贤&璤'鱱tR/mh9'缧5茱攎鉯MkBXwD84臤$1w~b 挝щV畋隣鶈u~1L杂脯ss-嬝^Y@u s幪俖f妶煢睅睦刏硍Oz蠱J?櫰䴕gk曊璌父歰穹*粟罋泀e6Uq"ˇ脛瓂箹)m鶃趠1h-`J飤Ob鴄掽xj辀處q?9R狻﹟直櫞 -巾]-fL奢舕B獃乑曮&]餇eS鮸9S鵵)梪{>##霭rY祖簿笴咐裔|飚眑邈錬u1t鈏}]華版 <寊A鋠rth疛1R瓒沿CF5悹U=绅羒G8=媌幦|詾1\蕬瑟<蚬垃䥇*铿丩p賞6b鏷暒~甹浊奠7&柣~]<騱媛oV胎兀oyv荊#U砬昄突U栆6GO閎&铠3壂~箚/格経\賦礫`o%柁Ur蠣}I骈D!眙,劲u厇痞町浮戤师厕B,季勱4{Q嚁衶尲)谨3b关椓斴H4$貫瘆簽珄e腢結艜?^巙<犤D齖U讪昺? -阨]歄?1䲟﹜ -緟+k_ -終廖つ絊h-曨=0~ _葶佻S3偌[ T誒3Um速毝礲]洨P硬z棯驀?Q苛公J肗`譒鍝ヘ;骂xe软m穩f6w皓什牾O殊G婾u刊鍺看?萏_}&漬w?鈩戒A㑇>衛棚oS婝廴┠#搚{6搚c柂犲;嫼煑癎燇蜷f=[`yg硦瓂礜Y鹔r%hBa梬}慣野R8麳圜縏r厤嫽鬡k'p藭歬蟿救毁蝣%V憩艹g]蚮\=`1樘 狤W騚 ]覬81 駱;睚#涑/@ 8$秭wb馍樨z`&V絓wh蔁喅岬X1G菢=榤v╯曭暨曁d照口皸sP搡 杦;m貵 /熎sC貑W烖7w昊鯌RCs坧龅{驖葹~+Ig邯O輜:x蟅]輑!7瓛*赩唧=茣85+{碩谵nn烬#=^-&煔乗:瞕>聑s 汃B6謳螿*铏b駪埤臄垠譁?驑鐝t'腟卻腯O輏︳狩赎鏚O,鴥9帉£;S諄_M=虣锾OX鲟 K䎬(j椾Mv昼nn5Zs蹫琕VA淀2騒 -涖2.蝹]缕仨蟇 諒 盺+=乵毃w43= W菁毄l[ -咔WW侄kT5瘱[顋繏蓠f荤叡j货剔铺壏jk^蛱2嵴F耔 >r3卵噅閄⺋嚹|n冲醎崟G~5Q濣欏/}pT^龂店殳侾萚猳 簿pc涗峧nG1W鹙螎暇4眬倧榮d崛K櫙|粴'綻卯浿|巽躷蘭交Ak棷宪敬幖VK{焾r#F揆 炮&|蚄C>槟Th{ '矚 j謦/b<欑7鐙蹫奤O妆/WX铸睱Y黺懪哆~川倡*嫸N瀚饡揶O>OP5馕馇靳啪-B~3蓊!嶓=一i馑阦迎熯裭||瓺~C睿腲黸僷楗硉骯鷟嫍x燙V飋抖9z莔鸣K~6莖zJ囶︰悼琑>Z,靭n>诩戇鸝轠匉j艬m 馛f觏鲾6憝鲕S#遜珵a 障职;,#m肘果悟7鍋凯WE蔀z>.絧鍺縑城唣聶'饵迩诬鲮辗庈項炣艿煗+砱.<嬂\鵫幂y!?甇悷躂qg炡^)俸麟T鍙TU\夰z乞菫H已6⺁ 险=2R<[!>2Uop剗玂輖鰓p炀骒甮坡瑃刚F8嗁螳£c~颿s鋲リ 9鱂蚟灴褚兛髄3w雲;尊t 坐虌9鸑鈳距洏朝E嫘Sリ╙`/焚q;紖鏼盫ooeK颷覕頋蜐L讼[箛笅櫇妆Y$G^5M晁 .E|@绞"朕t媇X!y&薟嵇88#達庭焒棍5獇)泰N綾-膻睱Y饅乪閛嬇蝼朐*泝M侮戬Gl竨5竖翼@閘倡集M霝楽鋓,塻冯&\ m,j^<鷩欔鎜鹅霟盲彿R稴厪O擑?^$ -[掵_吣s镛DK镪訚読苒b铴e邏+伉lo箢覜秚千 璤抟H:R'm伸齡>鋨zp;痃咣+k_z稵>钻a}錘D嚦p釙#{=脻z!I穁;n蹴A屡v7矜M蝓F鵹S坲渝8馰环|噚砭噒┱?虂进|僼!鼻7mO镴'駓V嬲/[&oQ<莃8読蝄(>~珇q'C)C|褮 糹O恀鼎皬Z撖O僳a龂儾'鲩 醹KⅫ)俞疟閏[垧詪=R晚~m6嬐0撋娇脔蠅gZ咻>w荂}ち^>衎>躣ku犐;⺋釵>U玁苦忮w檐僊疑GN鈮'丢珟匠郒?r偰抡m 6/8?=P牿hW槠鐕嬱邷/咻K:b批f?雎k#O君^铬薻9v寤<轠庋^U潺按h臊<駼桮uyV.ep颻E+p򄤑cね檭虐氀L庞%鞄w嘃龇嗮m圿署3M*>,喈歼hZ嗧鉑淃W掜煗畏{v!_hj T^萜鋚2藰3c,Z)X諥[ 蒹璽鋪 yn忳晊穘坻詑赆虳5~_;#頷5彁鹴裰V棐6蠡谔鋧" 5阴q]惫倰[1yI窊骯凍/鎆娇%細a&鑱嗂d蓓疖兎胷份娛骽棄葳8掚魓o侟1]z蹫b鼽|昨芜鈎鐉︻5室遱''佰Yk}獃媩驒摢?Vo桶萯殹<詳漯霯哑''嫮^7e -懸髧 ^奕暉77煿)瘄床<73彘 w銘+尊萚冱跢钆僷寜蒹搚饨 #YcZ}o甕砘E&圑灸銻E圻溳:j -+颋4D4'擠5ni(uxq窣!KQ氿駋婙郏粭莚7稸;?跈g箧D跺娇o4茴_L#廐稦H<6曄>貢珄iDc睢Y豈疬昒/i鴫煽眬亳a峵沀C}*渱e,re瓮櫔臬-4穎狽絎慎耄6>=]怿釲柄Y}9株}}沃忠覙e痒SK藳" -c铵V7阗彿丶健塰涩槓熭檁Ιk赊欳77⺪R^虱ぼ攩<邍^酸_綂fo縰缥汲慜犯淑[<浍鱸び-Nv栠輓.~hM瞸唛<蕲}g盬r忲en韠隋g鲯貨?籜荥OY冱w'U?淢痷熾\mZ鮞举嬇彾nxu3项骞<Uw簌&铞O偀潳63n缬踱醘祊惝梪伺$麐鞛溙u~|冈画j[`0鯺rn鹈魷雌販毣釟僺.蓣爽o鮅哭恥!0雟砡F=繉z蝮軫穬矎謬湓訥洇'z碩X浇!緆N秨qR灃';-樏e身蛼;鯶? 禅`芔J隈滃 -跸妒覄秉螫羊埯櫼腔欖籛懧螼捲oogY縩詐蟽-宵誖uJ架飒n/縨拾~{M贉^烌0K{韛荤g蜾鬃韄)伉釦戙嫿9鳍6k飨阂鈼y≌/*鵽閬妤櫑泜r帎yW懛鞱D^燃仄跚碎︴潅Y猪蓶;: 囖壱逊銫/lカ韃址oFY穃O祔r3G贾戛瑊稡U齠匱爪攷?稐n暜悩|[郭~LJCre=Mネk嵋#疹Z>\ㄜ袼j钿kQhk嶔n-痯}捶铁鮱 /錥抗#0妙鍛紑都覓鳎J=:j隋贩2鴊"湠(巎K-墌榎Xt?\厂)8嵙9'8澘9w3敉屑稢5咍压蜲v鎶:R'm标{Mq洛莕翼麀猸?轭 屯8b咨yIw擈nf7e栞.H箾\>n~庇尧涤y#馩iw 鎜 椮WYYfCB397孑0鉱澠;崟砜{饨軿鱓f4ヮL綏队阊辥囩G蝙柣螺;[㈩g謄滒8槼鏭H味会9泝r鴈U秳;沰麝t攫酙傟誣/#胚氁燀顺}s\c优箭#^犮矯svX=gz∮趣龇&'G涾 2 )bR6埸钸D骢楃; -3[ -嬵E9钾1K沌漋隷uJFo;e7潅巅N硒}Л漗雉k娽o奞K╭GТ>穖①嵛5痰扣I75%:w, 箺[憑7敬鍺da@ka1Ex?x(>h寪_筏{礣梾5鍞4栰晈黌X庍"獬尥秨y%哚艖偔韊暽*脹矺]p}>{"糽%倔n睹耍n忞姸<,寎怽"|lOb^<-锈~Л甚N,n斁s浜洕,綢1-!範阥=蜑霊氊鷶范噂籹阜铫鶉 鞩w鋄焻:=9P}/嗾p往[9G瓼漤A^9u-L稠Ft君sc運螰|MjH.>PHpQqf}bI宓芈m"髒軔78喜.V.emk;O閂楷龔2?袼迴`俭銃S?蛝F闔艠n鷬 -}臜臽臰鋋@緹殷+盘+/毪 5闔澟?皧 G*綱 5B裌G_1@+硼n姂='( 螾9O1y舼3膨剢蟰~o茉)(7sN个硣醭毢kW畢d_拀>0朐崘湶粦醣咇)%e譩 鲅1嵲輬+染熆狨)嶊眷涀A璝蚼;|疑*VMKч跐蘕瞷悺阈凓F7 w2k輵7<止匕嗔劌N妐3c啅U鑿#0T裌裑袵袺OC:C(f.4W黡潵吃鱈焑棚G璶隲c鯧&?:逓_縃Z逩塵/cOR湠-坘J-*沎u9Z畴j攩軞+1y'n唈. -无~32楕c蜋玜殝W虏 -僧櫁[赞5刁匞/忼塔x9捧YE渡_;]V^頊"%媁(&N0PL>I笔芐{]}猫!珳t茝6P P鬝鬞鬚*貉轰簍?-咑粦g鷲#諠C熾C䙌觲瞓Q=摤絩鏣嵬(凸M釞鋅湾DM能q箙W怏禲壣輣9:鬣ト艹椕5G/囩湼憇掏75嚡囧^蔔hL)}(0Q跚煄鼈 $?蛏蘯 薩愉G+g扭搱"鐝s階蜫沕痞7y郘}圜笮兛璜琛5恷恣璁輳4T1|4艑鵹姇盡颒躼J|斀籀=钮cWa荪柢+椕瞜瓻逯輬%>&鯋喆B沇'3c瞍6廮 9p#LSx3&族qmGG -字ば拄ⅵм橘韆9韙[檞q滠+ %仔摓wr嗻/功!拟戯鸾挚]<磋正髐k;=騸C蒤滫摣bi遥~鰐N1y坠*V1投鉒嶴俏<哝翨葵y.,KlcXx5>鉿銪t搦+at茑KO\蟤霳p庺醘2y?圂:y7澁柨w徽箊眽僢 \v;u?3c茦(fU言諎蔚糖;佫匪襅'屙阹x奚K'瘒顁D髴.E鋐蹾訢4dぷ'妲輱汐i y纵蜑湶<媉;絎_鑌*v邜e3g,P 最Om=9mzu怆紗.K霳~邇谓畒‥壳s=煽弈U W z豃扭颹 lW?靄鵼埻算;疓浃軱蕇悫蒃>煅R\喖抈D597唛馧 炦y+<.领淉埠爱_f辇圔7G4_H藎3{1x锘懬?_腌鏿:焴譽葺闈#wH忺隣go桮眚A:煯(,rQ,v蕨粃O鐃逅N?麕C橿嵺5悍T6_,箄%<脟酌K诋F柗 -+i醃x>毕紦W"騄斤攇/C䁖徬座;pM>峣w虔'浸墘冩)緷═L^辏+昷齒9束鏝麞今eg篥潒?w1拆阱垝;#+阰啎澒Qx鬔xn艜M容淺<"襯I|卒7Fi靆焖04:q鮱tyCz:4焴~蹧5\1Tg敘繓>Я'}Mb黨臽蓠婠萜)孶 5M1\璪蕭p赔u梋顪煽Jp媶膭莛粰圍玾缫\郦5那錇"静倓`蝽姆^琲o笸貱rN况<氵;鞼W=濔健al+耋鐇亂跅x%\影炪名蚒|5d眀泥脝.T毌襴朾H彊夾絞(醷呸{荱um{邠Q 奲羵E癚軻邊"橐;J暜*b譞&vc锝&颇ㄩ$甾1I=乡>飣象畖v {匙歝2匡Bdn宪 M[仠倃i絍荄==PoG#鋐嘜椃m帽镥/杘騤q郢e;窘U箭葺⒘ -鸀咄踲骹A7註罘誎莏魞p~惂纗Y柝"cm 眡!蜚i厎蒬4^檸殝L悪"4羫 歜弒?疊磮镎X"鬹.8'u葛往値痴m焲V賧魾q黔KE房(辷鸉A钦K_|Q詑鴍Q跡霴蟐-蟧筤揸馢6{聚豕7罣>陱颎?Ⅶ趋沭8Z鐻E8Y:"ksGdi -YM鱀6vbdi'C栍娜率崯鈰琯r攘-1契瞶锯艇脎H掾纽棅Zqn顶齔Y+3稡韖"蝊p.v齴~勖/ -劬窻袉媳5u榮靎M慌.8稁 h瓷#>pd険ld,9Y贳#K泫萰*4軦塮.K@Sp#Y蜄# 0僃&嬓x O4q|閂储噌席赞A擤#脽甃狠_讽硽煑u>>_喉谂抦8苭溈掃崅鲼w蜈=乳x0翇俶悡-扅_|$G鸊8骮顛黮 12椎DV討メlda2Y溶?gdiY槷@fΛ裙Y蹏 k;:?万獴嚨𷎁v=w喀^艚::p錉煙)敫备17筅^,鑲9麇命乄 -鷁=雾絴UM+颀慷蛻sEd 灆hZ"-\!醳e婄湙謉dd勄p,~槑睠 玮s[勌-梑鹴6&. -A6K撔鱸4=外恍,- ?ス⑨W逿/d過颂冈跴鯡ssu-譹顄熪耠[Nw骦䱷W7筵哕物xu'匸S飛祒^V/;襁?鴞圱fZ菳w ->宛骳p6鶛5残城彎羭7憰*4y*嶌洽4痓4荩M^潔l<7營9萟趥o譼畓9瞩栬漽鎷傰讂隞/4}v|S鹘纤{/紁 沷Uu=黻竸雱欠r:暜沼--郾\涗Z#忤c檨-鳊v菳{*鲶摫E'秈34晴7M0癈S皁膹q硲v~戎!傥婤S啤i+ 汛4暖9D衪獂h瓣z+蝺銜_.O?肮馶]蹃觘瓀oy屜砥吢鍿7騔竞椵脺畐蟬zo菹腩筈"泃y霕嶄躏?}蒆.瑖G53<問鋋5 Y対O剖缕蹱?殘韕"%毚>%YM驝輴/d Mv羢NR襔茵d屗摆r";j'裣壳E=轙uウ闺b;巯醆坭昼黩穧 恚嫁弼|s钒秕潀XKj鮹儋.芃隷0络偝肶葀歜雼厦YN隼綽52焵'3<胹挖r矚 -賆"氅"d3揈S {蟗4応C笞覾Trk袈歧.'該V 6妖抸戺祱yN皤彗洓7煩o絵鹗ヂ'蠗l戄5L艄贠r梸 憧|Y"y瓗骱搴駣┡槱銀嵞6=倵'YD鑹彄谷 -倾 Pl,4)M%ES'疍6豞Z8募湃z2淪娦敼,毑@巉弗爕Auh蹃讆Φ滇睴蒉¦{|鸂経球邁W齶S…_i韩芷帪鬀: o Z[衙桛[64|w'槐隯Y浵wjfa@xn轰|茞<Ya@r~r饤f:68逼笱欒烂9 )n5螐揙k痩黱=晟?S跜>国剒鎶X捍5]逐曝硅枴s鎵+玱S蟌驪&鵄"嗀(黷"艋O7<韏厇jr5O@韟﹉绥W骩n奕m~v=凉聻 :闊炲y^7弑M?b9'd,惖<4u?r餘F鯨6談骀觱ê恨獠耍鏶炘灍FgI-%5 桾=6\u粢 暑宷?p╚眤熩蔚骨n鮈飮jo莏*鄷Z餖->33罘稝绲 缥厀涄E#杏P題&0Ge&24靎霷搶8炧娞'{" {1氶瀸嫜h.]夋砚=ZN孷 玬V熈鉺W侥蜈G芀c喆嫠k悾狹9~徫盛汧^樅l芥剒蜲|扊!镴7j璃鰡M@3{q{骛颾崞7Y=鼑葵?%蜚繂颛~ 幘U狽軓Q\|麧偖%畩Z-39盍z4撗SpM矔)sB悵S氠晬ゅh甇毞2蛁d刑篂绒 蚞*牓t苍7\褀鴱髟~徳捓逢P_ ⒕茏$駄レ梍波笋℃}嘅:庄魍\絡抢沯辫啔曓Q嘡O'騉骜_/巟逐7g啡矕}>Kz]铪稁鷈Y榻嗩;774斴┻暄骯蔜邾哴jB諉s<橡yLCVVK阳慈;9裡葯蒀算旱潧B=垭7礣癪"wr$z觑鞒タ? -z澴痡戺廽痡e老顕7e乷!>u鉡艏ju.d吩A_&.3Av\-a_+妢捣3翈鸳奖_"."V噆:絇丙1脻z+`诂澶N?Fx&Y82滅nDN耒t朥i湟Ф蓝诽鏕5餡uD纎闔縚 -鱣j穂昱炦=甞淉哎u鳝聳;%璄麟[螙=j'镢jG焄j/3u:檢{楙觞O_m <畍 -幷t[ 鵼y"瑁剗岕繱W儿蹷y蝪kEB摫Px處蒗w嶝鸴f鐶o秚Y螑T莰箣娜j檀鬫订咉,渃嵉G訓1窯sE+Sk~$%L:^uR闔'庵W獠C6oew蓗鱩戩{u桇:6`黠K臮Gmホ.a鬭?粟o,O膝幌,e?惾廬U(o] }|盫8鵸(唧a 讄菈b>wl沎ujn醨x^/幷睩鉌 )笌^偊迢G硲S軂m W廔w账駖鶞U)?m忒Pt"鄿趮{v;'霁絔7s餆朢呓tI-U穀譲嬛ч -藣 涪<-鐭救W氫+暎牥,m駷鼽鍷%Qa9:\螅e箩妔镶3+香護fHv絖E睐艙z砹禅轘8鵘s岌0觠5雡L櫣娫z樴1w>厹鵭 伏3c总U机疺I~T糞c愀它鬕 笏囈|7 /s鮂K蓱>颛W 揰 鮣=腓峹{l 簖鸼掂敷鹹㑳鏼?U粖惟儌鷂/7煔!7娉/9鷵$粤岿恙侧- 卙U袸>峨蓃n/AO3Td鳃>,7H:MR W)枎$Fk戸t?霷嵱聁m耣4訅B薚甗緳鑦Z=足眤曔_*攴痳欉_曭{\L 茺氵(c~椓\%>7w錍傗嵊R逋鐓 -zC徆繘?騯qF湆C]趗観|?脚]W鏚3珝歫堪堔跷=鼭宩靠*铚罈鱊RT锑;nz莫靖r驤龟裘徼 -a鱇)=趱恒Y途﹎唒客L{ Y;埔|,4i氹焺V$垫遫,/茁澾{5餏-–% 2_7 鵻葠D倄:D3,60几o啺跗J决窩P9M檲\饦5y;!恒偅飑准l肱匧j蚗|鱳dOtl灔 Z睟飇O★譼f艭憋陷{&框,呣5t9籴燒楰"偾o覧_#碱ㄝVo篴=ǖl.kw楦蓬鍟y|琯馡S焆?;迼繼溌鸐坭?Q房Y 黫欒堏S2*IFя甴卷D慈 -Q>(,!Y?jC埣蕢'&9鼡'{鵘屸螡<侑懯臤讹癁T響T^ 莞ss皓堨<齧镐囡灢毘3 |]Yx摙C鷁v厹紳|酫}='輗}伌瞿t牙嚗A葸-+:f町(診嗒B3pl8g5氷脷46?梆:>痎鍈?巂窟 蕞m鶤;% 肧$谍6鈻覦E眠喝晗挞s'0轫v6 洺讱M沣釈促剅C t鮀^K淧衘O$p堡W坔菚觳 蒵 坉\傹[趀Mw躙B砱弯6)|>tO蒾介络n=l睨櫶纊w峨 -︸琟贷7鐎4`徻央②披:蕊/j咓u犨cu@繳衁悼錃漄l>e榅灓% K则篚F纬'#w''' -BLD.桼h毨緢4,U椬oE鉱薚m烞鬇f(髃,改C.k離醨瑚臞禸-[豬m堡/T灩v鉻s鷎Uyp,Я)?2Mq駿勻铐┖z5=鳱&雥钐V鞚师5汸禑蹕/━魢燆!/=釙w邑3i椌w蒲盺┗ }彣桯縒g耝>閉uxP褠箯0騮 溺鋲<淲#w珏圝恃泠 -v?3兿\╀B}盠厾']H晿7z迅弢凎]S>芤~[欣牰?[ s幃3滻載Dgo6a霃螁e =鄔?)?-?鯰<(屵忢z祾犍r7鹆鰘石>L鴽梩鄷 輕r6拯傺_$梸镡滉KuX衚u(稝昱仜O /裏絑劶臞ぬ話Ψ嶓魲N冗G壖]}戨\G浣r婩H贼Bn+軕痝拤$W卥叇厰鬙 -紸蕭&k鑡鋰_夯V~+卨鳪*9S禼5+誾m!澅誘朮kH眸軺y醳*w-Kz]6l硛~fz愚﹖啥塋q5Uu萅荀萉|7蔀焀K:o.m4h鴊鐮8椊I铧C)跪.嗳邨嬍wX -窐姺馓{荋:^.缍汻秿2嵟B隦g4璡鄖悄寙^6幸SfT檪;輡z>雏嵂鼡r崛C?魷?暠痪螗洀;癊]V|v髕>肯娡砺藪88妗t;殂?J~駩 }縕6鼡;{黐柨2Y葛2N剁Ww*第圡+7禰K;抱縐)熯珜6G赔3jQ術j蠣-咄 ,8f凕豥蜖虨q挘joY荸A奷Mix挬-f謎汗羔7揯= 鍹燵虆%ik鯚-铠07]﹣{/|@Bu酁R尔-[皍W68z綘?炦摧魕驴8潡餯+螢発J; 鈐?熕n:=嬣褶=馴愼縗A睇褯>鬗 Swh&撟hFvL愭鯇W,j:S數釉W暕镋'h+r碊L篺8B僇遙"]遠涠:Me娖愫i旧$浔| 騪Y鼸D嘪D卙惺X-屡I8N鄐䦆*÷t窋)臚Br! 驝斍顒+綪袽珑Q9=鎡脲呉甃鶃├+4ilc嘵(?x聈/蘥Kl橃Sn泐iH'麐т邢瀿每畱忐i暚胬Ti>Yn讀*甭婆鴆b9傓|l腈L毡tZ=]qp*魰手n絮莥槦H(y[4`蛅>v岷灮俷6=j;/桧b活,C勧'b帕' -鲂孩託瑟3 >raw捡]C6持X萲癭y(O^ -縭8孓'!Σ;辻C_r`*埴缐;2嫬旆e毼.`温y,轲O-祖Kr贚づ;'妅县蒖;=&堼鬷P}蟅P-せ吖B圆扮淉鼭J洱肑i薳槔纤狍3Y錭┠<=舵餖j杞姐;鑖业g蠻烲.|"摞雑YF噳wP(Z^"溷'F怵D-*量@6h-傊莿k襌靮鐷M聫踷~)l 3疖 4婚"秄4n铣 妣;r癩甹葞/鞓歑罗嚁#魠傒瓐撧鯎7魟1濛濁 -艒朙;俣珟靵嵩冼縴K胛赟u7鐘:Is慤鞚,幦 蓺~T剢8,S汵j0挳苏u^鑴鍻殎/qG瞢斑!`D6糱{e蟄/yU繻:+擱*$眻0 -∽t_勱3爮莵Il~[趍C<[戊O稔迡i佦衖菱枧s&'/縞"蒾Z綳Htk幬③N/`歄蚦+vOaL擁x綂>鬽{1烬'z鉧;兴惇R碊靂MiH6[e n儉齭Rh晟B瞮@g櫟牛裹^+=锦酭/悬舮$6,揬e哪暧q梗A;+踥Gm{釲z?u爖o8Co%潦cw#劊O敧3w咉徶2嚲昉碜s8鯯?綁锌茷2\蝴g7Y~弲,祔U2h-U6l涱瞉?箖潰k"E&裪楦筙邝袎)( 梢v_釓V蘵Fk桘`粩 僤妏M*讝I艈LR幘4:E擠%"C嚿j1鉱NM衭Ue4+⒊FGg肷Met枮獂`*讁s9h=6撨n罷須JW緑= 2O蒌{蓉兿げ]o荬麀tgN|鞘/=M悷~稏埯F$埘臅8d禠夕%剿'綫P噡莡莾E矊fc:E勵穵黱5觱諔><)瓒擴橨e稕汗!幦ke'熬d2*R揾~旓$漧\(蠰%v夶&讄葋腹R('e6L拴鵟蒙yL+䓖眠{蕍~綒/臧b74汃k兩i2鉹禭@滀 --墻\f鈂紅莇疇輶hIf穼gs魳腞⒎S=鶜轥LG鐜瓂x 翎僃昹m.鬒冝_}l朠<&┰PBGh蓚3漃b鬤羭戫C7襟wz杞'征|%狂 衯v饡h瑏>M况鎳^r嘵P軌桱鲇糽;7v螫s@w政舃w侓|┒k嬭鼅KXW2稑2地g?_ 9輚A#e -<茁獾 Π6@ 糧纱^YLG棊鲶p鋮魔V忋7NmJ総p2緰鎩f\cY\辢Yp毝4}c燴?汫勞v軮6痦J髾襲澹=苣h艤e犻D鈌r檃饒晧氣癟mQ8鰶釄 弦愆垘髜翝泶豏袏n h鑣Y峟毯鬛窌熫V7漍簍牘Dw淸z/e$秫蓞-?d鰈-)?[昆7欽愲q 蜝]- Kmz1Hд彄%`焂b琅c_桻m"辒v*:C'0茾奊爴Lk貫ck4h 848泶烸2V豍e -簩p^繟-n風蝎1蘭D#k荰泻n褜J3C喧aO靛靊然/80)艈TH7耺峞+﹎w杚[虳騲M 噠#┝Ee弬洛wX2閁c帕駝!-媹'榞拹u欴g¥b(Ab1a:/聈姽P豥 L,堢繿e鈙鮜滾,膉A儕妊e雨屬铚Q2>栬駹暉遧罻順嗠稣牄萴杳鲚v鍥/$歸?qf'胞{Pa煙O<齓V鹁;* 賠n1蘍#膔狍鏰聲壭5<韪!∝棴觔3歲|斓fS昶耑撚n5B"9蟎t洏秌K旣 -=蟉☆摴D话琸2崇悼p鈋0s/间犣嬞xd:;'碎楡疢 Kpg’p诣]o_)縃8e8鄏qL/6' 簶刉夗 42盿壁B -侗舨q\ -濳漋#"CD缧\X勋?:_Qwt箑Y排$陚N譹資ㄛ7 G鴨唺攳銆 |  7pr3 %莒颅V爟)?鳧:yo濣#庨己 0 h|-仜 -毄lv_a@Eら+僌o&孧1槜b>L僞棩KXBe}鹅 -#i蜲翱韄讂$杇4殏只貛餱J;瑏鸇槷pn璽`u蓀粇覺6迟0 妟l曽韷瑂/ 荞R靯 桏搠鈀O-顧C>鑃a -鸔 鎭遷礃塷J3n裏觨C?乳甒.c搄岎苄羟礧爠A`兲 <饟揶蝰!郵1权78揧 zZ乨B&hy嶈腬C>)SM!汄騗梀(幌 熚籪u@屰z艡牍t盔鼁s択礯Z启]_eQ摃w -p5囨傊!觵蒠彪緮沒_iD吪i蝭哦兔s; 锦c囘鷵X?峢1U鞕婆T鑣4R<+妥漷`簽歯:乂p訿蘞- 磯笣_y)7\^鱀疇蠆潆鯚香方p鷁y+麨(敖稺 Q濽g茥鯫-C醒凖 爋 趷湥l赗$5吕+?謇}Q揉]﹟=蠴膕y灱挷皅⒓殍"毣衹郐缮pn肰鞓俢,ⅶ桺eLL︾蒍n铦??6-`魻賷$瞌`?絨蟭X焌 vO60橥&tRzm懂 誴[璛= :ZX顮砌>u_r峱]+杛垑屪F參閷a牓諝6-炵p-僿-棗 匸&値<焃fD;K丰极菻灅瓘繜D酊~'b徏e~鬬s藹換$_嘽鐞M:檐艭37;t轾澿6kUa彮猵 訿L` @D!犌q舳@魡櫲d?筿x簗膣鍇堑纄蚎聙鞼騏}v牓)>穭?鴶V = 犈瓓"L<.!78]?霿]亓Gk跑鎐s橍1犪膝緍悰泌_狠4!瀫[秢 -穉`"礎{8f]>[7nglC禤 9=VD籲饝調j^`f梁Y+6~Zo\sw*`ksGX3l锃赵嗝暊 -k"聈c莢?_レ}焖哭tT,:0颽虸裵t!荕1tO贰涾X`瘟}:瞩鷚李^顗蝣膥U抒<4D鉕逌2┠垗J詠窰竃傻评J侕w0埳諆y-+葬8珷薓豗踹髺?悅7魰諊`g-諚収k[栤愦(.V舾晧eF蕵"`M侔 ]瀐M錗C戌DF8鄍gF整0+刴淭aD竻;ёI(0|永?蹈錟;g忻/経'瓼嘰;椣y蓚网NS-铌3 鲧蘼瞌忄廵|W幯劃卌6 鍁Lv ,趴俺ㄝ遻@}鞣h+嵃呈 +癿R 泜搬.磬$埯摑ヨz糉鑮締1炪R.^撀瑈xX 昵C>-/闆 焿.秀#sG_^蠃`嵭饕 L4>NS艵h~ 0毛vCt雟厢[N9蕒顈偖.?鹨4兕Йq#后t;o鮋甍怜綌G焽嘷:[ㄘ鵋恼頍E 侒P秙2撧dB霂蝒窚[k嵋4m:p^q]9餒c $糱噜Q)SD怽廻s疢.嵴:"UW忢&侈 聪;vV9径渤j潊蠡あ1娾羜vWn 舮p -1|&+8L徸璭N卪s豮 徙8F諨R+埔1氪佅氜D鱶藱%D8[8N#8眗痍俿'*6 -栺犈]=<鳺姖鱁#媒,6鏛 eB虉7u辯!:忱|漦@觯~o綉u鄉馒P;J憳k0挛j夺v=驀魽>豗*$$cp亨鹇 )3`gMv+龘;Z曌;I辺赒U瞷3⒚慨X焢籸:'哹Np,旹6牓啪彨<υ豾銠ヰz菐季h漉y6燳 鐾%b[同4Vn躶/t劢 R7 茺ь<螫铧瀏;t鏤'`锱K94`h*蚨Y藡'S褭喊&A0奜7墁 :LC膭hP繯+輈'4軿y異7褒槇 26DC*#l'趧煤緇,a眊+ -踡#6橌蟜灝./蕄l鄿孅)嚅C豗2^dgM5"垑  -驍怿 馡=Z潱梢揋⒉G儚7酳碙T帝初 径砃励!i&惙*p畯lE隝'驓 抄約2汇旖伒R锈嬗隡X鼮7慊锕AN -k驑B}E\!l)稗B乜6l讦眛x6a9針Ib錈飕辿盥纝XK鶕馰炛` -,湓 豗繩嗂炜豗%#,C獯!鲸译 楹0wA胈本r 鸸蕭鯥刧丁誖曌`墋Bx(罗炉呜l锦}=择婒蕞牴M榼恔礊wV鰷3[瀃g合纚&,貚f;倔喚亷,癱亶G^廲'񁅵順1耛OV"`=顈 憵29驫P;聑v怢亐壨c熈5^X工怷9F"E, -"V泰1W昺tㄋ 釴鍉{X; ,厥}覣@蚃稞謼o>x罄 -偨抾&俺(朑,俺皪",_仫蚀SEz筛喔,儛樢1纇"抰箞Dy師李>Y D`☉祍鄽u軾舧][ |Wyf嫻B-O润>銽犕M鴦浐Р}w FB%;姸Y髾佀1p鏪7軺质谺儛肃\\譝+噉S=潋/ h'w辵",耾3冾糎豗\ 挛曙v枛?蘀E&_该春 泎.挛R?豗%#,蹇渤dgb僣磆讝 -湻C 禅耺6狅 菼μ蟪 - -漉割Ⅰ隒謎袻p g x}硌9L 湕岃餃識_h@鴇1i-蟤穌..鎣狂.!鼆Z嵲 駃衟_92&徧$L)l3僽D?P苛pч鋗典> -`s鹻Q冗桞恛s17Y*獁藯鋾8n 郞6b煁k!珣0`烬櫅般yag丗z\枮鞜飕?豗iz*挛7O辺蔘慫9NF卝纆6+U4OP燥\7-8祫瓠I=炗6佽眞^q!噣KC挫乄@劁- 8髭= 讁u呅{菗砭簥8餯- 鲧怹ψ螊oh擅綠E諔估%U靫$磣$8\ 徲V亚鯕5邁m鋊<甧G鴴#,柊犊鰲?椑d #┤悏%嵨浴cJF晌傰%`疽凭閵糊娾+邒;m鶈絪渫;*v<)鰥噓eQ-譾|熴sG聧╄矃邊!W菅蔒g+ -,酸鮝1诶=遯蕢難 -雓錇;憋m潬Hm4# 绺b潞Ww -U齰p倕阱纁)W裲伺骅筛HM*8Bb'A?晃踢婥i続W_i醐20O'鬀蜵 < $:萷痓m辢瘗|J腂Z櫒%枀i坅=怟AS鎤O"15沦5O\妨4X/釛 俦 '@[ j.跺(驰&>XA 臐鄪N礕嫠q - Xa -讬宲╬ <甸#斑  L`疣\錃帮X繾_衏蘞皋括<刱=篅h讳 "躓v_`g晭俺劧O梡鐥A 氕8+ :lH畨>0[ f窞r駓W鯩墅謡tE松%s罟 -p} 开a{剧衱讚榛箳賳攉噘xO婈泱斮頄lT紟P縪琲(鲛g /"k兿\楫婯 譞ぶ>2W杓篔豶$41猼m>4S謡膳F繟U膄+3笼放%场r證1)l郜謲丟$#溣\}e~5盎犳 -{l!旓 -=&d潻d貛{咍四|}!剐0聙炼$=0頶苳B."撲麗兩+弯禴u5yT`~C皬\W℅塤,賘 蘪溢襱i e2玣Ol0萸饹蠀5 拧 -濉;*;湢MI鳢&皔"a| 虬鳵C矠/,蘠RwX 嵡B>Nu遱嗿潑手幭ev+M^讅xOdg曱Ls4a+Jw貚紀$R 嚭v譒抉譹 蹣3遰嗕,d酮vxa肬`磺r廑;呯(W噆{1烃闉.扒罟+j幭#& - -薆廮Yu靌R鴣薗獫w$爨mw\沽g_と锒羉壪_麔觓]0Z^;魏瘸浲e猽,惟 煤x竅皅妺绚╜蕫L狟lT(葟峒丨_,乽 \O帓袹 买K緌鳹0塲O蝐禱_`蕬>\寺Z-笧蝥O鐂u熖伒|堁\L璍2蹸梂業(鋇/0┖&g 侄Lh<鳜0.*徬V旐jeQ-炜醄蠋鋿d 蚉謡vO譀荱9 之厑~香S娖19z\X妿<<祀狯 -Rx,楋x,:,'XC 荛 割+氆w$Ls`掴湉洮f窿B颌璙览廒N-fv<鬆;./侞籶繖:茣悩T硂6鴜去鋂e$O蒶洦,矶%鲃g:.≯N虈渦ㄧe騲M郬 -+溺Ut枡鐛驡#鸺珀鲑s8?莡薭'<鯫8eG羚喗g芪>d`輟垌\牍0 ~q諆v\w仉┴鳂鍤;_澺`9+/1x,a%馂`_墈皏u7皓滢th越c猃偃D負k崂)釨蛛趣#L臏-髌亘u趤~8#a= 盖湽賢刧__K嗫蚝&B湐>1/呮蠗髨饍l笢犖&鲬篑 xy !躩`稐o访5 -醩澜s疱勁觹谽R顰瓓r `@0=蟅1垲-'p 謓>淅?uS旌'N 塬'*谗aP>{绲7顁綍T黪eL胭E錇N&`;x帊饙;}@X弨矫筸#9r$谿@w_&箵P94弦氲爾n绖鉹p渋p)纞]怒V鋇Y氡匼系U|9'窸蠁玳婙u鬦耸钝覞棟帻升!)5UX嘽h|眮"k -謇移(_齭&q蚭鬓揽oJ灁m拉4抔詺 -%谿u[搖>\3憐馥E$懷騢∕犧呺y躱灞万 賨亩1嵂櫦戾r蟍N,亅xZP聻-E鶢燧y3窔C 騂翸O6!{巰煿 13鐏鲓} -熭bLg嘄婛潉侪8钒F弧蕯皻⺶!峒職 蜟a庴 荊癘睆#+`怕:;瀋 |鞪皾狷"癆\-f[>_9!垸鵕>O~(饑a稚3+嵣絉烳君Q 粞睓8邌酱m=Xt刉鏖r燦v蘭r?l>2囲; 龌7劙_鸬,鞛D釸!晴蘯隄J齑j躇,.撑 9rn帮ル '仑奛N竧U'_衩_駽/鼨鷠3勹 ]侟忀t圄80嬏G`&V懴M骢冰陱乔沣耨鴛|<>弿乔沣耨鴛|<>弿乔沣耨鴛|<>弿乔沣耨鴛|<>弿乔沣耨鴛|<>煆橛="謩幯鐋畦Ow骫専憜甇峀劅 -烇枓&&<5&1!4%酥<芯kl]lB"S;喜]nk镦籶A0~,酃鸹 -r礉/ 嵆yc[黶[QJLtL~R.嵮wpr\禶辀Kl潠-X:蟩B埒齳'g莥嫋,ZhG瀢^傜潨7|煾圇窍O幯O/olk?藮\`9F?鶑轵趋顟 V趓辌翮瘔L 忯潺m9|宥 -,9愶湒,X鱿贺Vi籶2邾嬸/pk嚐?,硊~2鳾騬)靊敫p橐ex渳鮹|Y溟坾Y(嬓逞氿4Et‵$\#Pメ/ 5R溏/GRj瓎,睝┄<]**WW懏#V$kz簤嘘>茸婫AL現*Y3垔蒸蜚7 蝰#PF+譲J#纂HB摯桫b}j]咕(2[莀Ea誀d岍赥d(iHΧ$橖m?繃 y臺翯kB7靄!#醕4槰,]P8Qf讕%#Ua$璋X⑥Wd澬ゃe}1t滲0霩.Mei莇鐯.I&,Y[]訝棧姳ん猖柚勎2!>O(S喁騯賨$P.i)滻k3G Q雞U eF营M@﹦M3 戀򒄒fT<\T夽q岺謥NC&#StAA[J髨嵱釹6C 摝薉eP驸cs鯛擴eT垎L余燢?b毒"忿BQ祘柌2t(K1lx(.恠9] 莘k覃@(\蠑M艱(扣F^瞫 -熯9慚0釸腭髰V]8Z5W>├(i鋗$幻墥M1&蠶P竨"t8廉z矉疬a俢>DT攀hMPuf$JC, 震+(1蔂c亸#*弫r -AW㎜疎狍a埋5匧5篘A頃)拽c*酴癓P仾(Q猽Z爤$C蠻铜7杽'k -容[‰54KWH帅n6驸 ).Q U獤/=_P #燭$ N譮旾趌TΞb]2纠P濾1.8ln<аv鴟駁袛g6)蚨Y)孃lA酅橯k獚D* 靽徦衏b2t:'怆k%祳謯殖悟茡幨:K煇D堡t蠌(tN蝞睺%鐜Q(3@蓘(5/6% 6t: E'等}.%,Uy[鸚H-1扜彘鍫6+枘Rd謾 qy邗籂諩:t绊3 赲d(A3眒C'讲jy葆y蕦6s!>還K逃;囶>P)医椪bN釰 6厎搲V叟eB峭休如(H吧%2% l#93t鍠LByK日'(賓&盛钌|Z8~]苃襛莅x蹾梌T熪k徘垍HM/W?#綈斉驧櫘-挻(!廵6Ra漟`悁傸矋*A(蒁f9!TX狍亰+? -簉伉 -CP鎯6Z儴+鉺Nf>劫攺.謸)S脆oZt&薱 @-倢:栲楦J q盰e胧 (E挅L価hp⒍|]眮"砤2テD焝爤鸵UUv9俸旋淑n&d牑魓| 1Q砩1S橜G"Q豄oO)穟侾wb>t@B6tㄊ仇ue -靮DY鼻^郭"濡=D醓 e.t堼鏗7/錾豨B 閂與排f弳nteF1t磼甦8)>:~H譲Z17鞐曢5訨cyJ餾館D- <t敀铒M;+藛\S攐蔠#]Cv并犓xT;砣祪C“:蠬t爬T9t鶤稨~嫢啊qA祩嫀讈8P或!)e'娒惰脿鼁鞊橉J 䥽Dg週叜觔"愕#赺D! ∩Fn衑c -鬇6ㄎ儘1!: s :稴b 5c98磕2Cyz)佢(a萐隠@硐w7q歳瑕.咬C挼A祪ǎ庳K!/椭yJ閄饙燖虱苏僋EEet3b眪怦$軵鞻犞]秥t蝖*栄@:T;gj 洉沪+s{l - 楰轩$$仾<閯E搋錐$礪繺a鸬O軤|魔b_ jth康D-|05=T裡淛 \ 腧魽u N真貌uAm 旘iE&/醒j犖J礌掚ò&Uu贾 \F1tD8#3u貏JCPも7)8lO脏耂ux霮I(灀翋讈2#豲赩s鑚梻:㊣盁銪抲e鋱Z7>埶休M:2I▓/0 荩浼浲I>2球|禰{黶{饍鋡3Z!猓卜Z捨@!穬1$*y8徦j4'JMie閁 (S巴@ 鳻楥ym枻3T┎*M%絊%=缎誎駖厃 険型TY銬濉k|NA弔4祿頔皪v甐5eP︹蹆Z6(侤w"|烮:-报篛IW%5PEqPbQ:镁_ l_︵鸄朘)CH胿犔]拹[拪茾!眮l抽&DI濳-C蛦cJ缎i_岀銮斈K莯2凖粇\x/磷訶晙幆rP菋驮 艧☆詜2穚 緫󋁥愛5'姹碜澒喯裴赾矷Wc釬#~C~缨彻蜧+珟||潙H -~:VK炤d.? 4沅跁m]鶢.G丣忬4<甶8~狴ㄈ:QU瞔*;\萙-PF"鵕%?淵,>lSj瘷汱A 憈d鈗<坱︹ 襡 荽pM瘘 j*8 - +($弬馢識>彣怶<3埍愾C( (&*队?货岢悗f淐8x糎虈責Yeu(U赏G鎮Z6閐6j 緬<2jL鴾S ]%B>8\q5Q鞨)3"鐥\1柲绮岍:訿∶檸J&5柤2_l.t%s)x驡犁鑈 - (*蕍亳IUF郤A镈/刱踠羶吣5-(p1厇2 NDe鑰瘎X!帙O斐b蠳翬iHq,)餡\>^S婋/J1B!J v<6{I纂艭鯜38裔渷骳螨fS飔9燿湾礝衖脯f3甡跠x0y=朄H祍 萷t0Pr鐠+蒀狫詣湐<\摡広0 -rP鄳6;辣猓腳偛_B亖啊迣(<(氤y5(繟n卥侷鄈p y"燭鄻9? 犼⒗蕆$吴"帏~樹貣 $渢x慵吥!淐吿8\7膎'帩PP麦l$50_`N墅+3蛸*禣:3ufBe2橈饂`顎rㄧp刂H韴4榞DaMP毵"p5#囥韪'>从jY:8櫾z3螼竳颥&刕c,僰撠X<"硉弫錾D 肝醒.刪繸鋮鹳豟ㄛ44瓹謎傟:鋑0呜gAL乒盀缄餷榑汚朞KTK憋圏 嵳Γ挻﹫dm諻崶c瞭A  ジ.Q鸎訂 6≡ IC.O歅廇=讔 -NeG$嬰t>&宾`Q%圳p 鏈1鄨9g, 挕粀坆巆"鐮3M -99奌 蘊p9U虦{緖縮熺儳鑖转缔wU眵 -J{)詀0酋膕8'{8%P夣[鳃<<匤耭埐&秏匧⑩1h1I寸腀sN:溳樔梜箰颊堠礼灶儬j那滸B$|9 z(楰G珎籂 GJ彏鳶j~pR誷XS+`畭1襚P95j-A!6d2↘乕 Q<>変Z\忱箘`坽湷鸘2鐁!+腄≠k Q |鰘-{眂'椵bN_j&j皴樝雷D]鰃廞嘬@==坘繻;僣p 䙌葧:~~4较~! N厤 gj宷@A呬h=尗榴ù烎qk b撲Xだ麽+ 鎉di;3竿霪熡兝敠E湇w衭8鋗 翆8圓%l擇Z妢>А嬲鏄訕 -惞貁Q浤螩頲麽剌0%伅<%9 妢犾G圬 唘(颤y Yc8荁r'鎨I#u辦8锳02\孎r(TD<_G詮@8#娓犔繺i1fo -╇厌羗󧺚S笡侹 1流棽'蠉乑D锲擲稡<亥▉#譡=蒥鉭咟 -聵莤TX鲀4螄P薎P%|輌<(+ u墴!鮄 8z哛麪2话~礒/烵汣'昺%嶩gA?摠B螔鴉,`"_覽撮嬶浊7笎绔A镻|術$訸p尽;"阔L魶鮘h㖞1f -郈f棵PP#gb7) 蹐*8o9'Mg1聟{媃E蒄.S淭-N(搤%C\W茆T仐EP矂(為j銍/g 鬶9U╪`"B兴06躞uW唉;纨DY櫋7$91E46q蹸 鼙螅艠穩Z9繇鱎籶 敒@檲;N暗鳻繶人w' j摖.>8褏愤y橒膮睊菸C!6Apgo耀g桧拁╋崀鄟1;9Q491啫鹺%﨑畘4爋|0e鬶2帯 暊/ J輤汔ZewX8O|闝n應ぇ= W憕DM杷z}梻骐燦絨)\S?+︳a鼕$酨鏏 瘊p糘旓u!錑螷s坖Q*J *帬势瑌菵髼3艫==粤夒嵾鞥鄏L≒遊N|b麛ia緺NpK樹w歭T帚釵P馭賵+⿺: p踱|襣抱兤p;卶巜I\揚絽N蔈'*,G >糋I\BCo. P"猨犺犏泪/囯-R4n&Jc潎3粠疚_:塹麴R'X6lYxnkA X=7Fb巯譕麕%=F渟麓L茹錬邷赔3娚!:q浝颩n郫瑡瘝魌鬱P鐨#薁$迄zd"提a紿鲒=!蠃?枳恀!蝒淥#疃髟P鑶C颫:蜓J鎗洃鋘綔蝲J9Ep6.C+孉淣黶饃╗2莌P玅~{SR嘍 -詵!zぬeV⑿ 竈 Du驩E狙;屉0䜣|K原(郮疝埐 聩瑈;/"假蟔2襝蛊赽圄鈥湧樨迈l葖l`坕媳4>!D脱+mn镩!I抽鑇赅6铭轣  5 z讙#榹籫籪獳&\譼P74&驤\矨QM$= 蜵.%崼.I怗繣仙浩u 堑+妤:旼 镜廢9wp]]p眒薩|0_S嚯膓 ^髧韲uM渙拧鱒J<撛ゎ31妺AA鬹拉(怡6鹆RpK穏论0WCpbk穉揪;<嗶%G勺箰;肆鷒觓赙氚^\Fj=賍皿qb釚>[璊骐佺桇潁2 蠞t-龌紣A焿8Ed際瞛棠7)6_旞z#q娯彲鵱屌m0螒SΕ'旣Q1髑9 &P -#*V邢~q帻e揩嫟 -U 犭A劘,糋伦|x銹渿慟<_ 甪衃>%醞J{衚p廠e 鏐:眑8窝蒑擊;E`L霐鬺箮犱{圫勪_")漵紧9吂):E鴮挏聐!D"$庆G磊!.$甶?&-!;EH猥的I嵹0>P授嗫<☉2銾p°0糑z瓺Y頑鰘*眗 曎躿-Z -畽渍鵵廌51涎泙m坮♀鮶6㎜儘{硻⊿8A2恂幐D&呄錃姨:s6屸臵熅 w崞⒗鴗鐤i詞%券R45楪↖凶`8适n-艋w凬&侘W戺龂囥%殴"Qd民G*x8 j塖涅$:E鴣SD`縥?/駝丼嚬(`ss9罖Pg`=Bm`1誘5'ON 鹴理負鮀z璁豹溝展菖 }P惕8蟕ph虓惎D曫X$桞顒髍96D鼫>貹専J猏杏q豦鄖舛pX!Dxq妶樍f扂q"d忍L奌L羱蜛Pw8\橚t姌 -N06鵢N6嶤.煬晊]] 霖叧)鍰畜籼淢\Z僀揚紮 薦N&鸹爦贴輀L臫7﹡欷携"{ 1^=3萉2o季q蝿,Qwd+[茬 鈰斛t;-s[*嬹▂BN 8+}"帱煅 厩|X寸 S⊥z濲鄶M飛np@堊.冏<8:B? ,gGp-N=`PD81W綞p9q%雷寜/轑]l尧釱7 -N冝欺&z)B劰簮S鼗21!s# 塐鳾鸟 鷴6o鑫!6 曁}@K瑁P]萙j猟p疜v钼|}6dR窥痖5蜛篷嬨Rv詆4闊Am 篊RH唼D -笢郱}g鈫~6`<蝶谸8B$~鲽擩mIZ>r桽凥~R櫮 !'╇:Ex;EGp苋m1趉?斴sb0/%頗:傼;量^祖捀;;8≧)潥LJ鯾轺燆C_曦霐;6 -鰺`齁I -W!5付O3<扩痢 癅5淣$疏爐 -\堔jf奓屘纨缋餫鄜魆褠罸t僾l2D鄯頓喱 -絍醻p鴬 n拘7=,鴚臲喁竑B莒3仐儧'85鄽 p^P眲隑>/6k嫯麒5湶)耇T-繡萷25q0`悜!嵏}嶤遴葋5镺;;鏇靕XD沮譐rp=8傓{氫!-瑩木谺"`N鑥俿W宅夤:郘PO9呠(W! 濨鯭=阏`暔6嗙2 @6臁萴q.?2W扸維朡/擽j3e.峨R圫^'滐争T\q奰b7虩峒叀2U$p>q琐師,)陆)BN渠r85槺墀LK( {赂3%浌杪茲鄔u!9恚Tま7)m;窴]tj籁%W鎴3欗亨翭8/(b_傮a鳤4Ox%"炻&/圑pu嗫囔 zhR洺CeG蠌'+佧誝&忭:矽*u豨ɑ'C艬| -曯tL憱易3G -笓IZP5枑W€ 悍蝲A2鸑 0梿盞SJ糌瘘uR\跦镙.p"兂疇鏆%Wn逡埕塖DH蜶隉N:E*#N讞円爵澌q衃怩D觅5eN1觘p -p戕矯犠&燿堓uh狋L$g..螀\馢áF?(蟍/wKQ凒匎;8J@N扂$Q堂曥&S癀FC榑p"6瓺C朥&'楋显!7癥犔 終rTN {v9E澳)涾b$撑斘暾.5hr2缏较y坔燀`陘绨繙"橒-R趟 O衫!楮r橤*╋笘塁-=^+趸眲郹竩惓=8呙\1 匸膲遐\J6揜 絞&<5燧H栗邴鷟*3V皰=3 z紨(;嬂墥趸20伶x\<3鎟1%[竸 -M<尳b2丿轈`y8穱cB瑇篈抃綋蚸5斴抅k3亸0v *泰旭 寻!>6袦`庛8媞^/!瘔聱哵~徃璥\(蠼籠題i3?麔凅.!I,囦!`蹽茈荕pQ咘蜃V丼勗.汈 g庝^1砫缫嫔rV罊巭L<凈蕖t8襝wRL>Nz牅{襸 巽=?衃懪U闔b姸鰏v\宽醸峭2燈y谐'畵d<蕾 蔨腲6?-Xr 鯇8摮l┡;d玀臈 à 馁湸# 誂1~窷a~w 藤霤'镁(児)漆耀4u︰ "罎滜J涃?>凗9x,8ǔ綩焕 凣d,劄椩3~&q婐陊姁(瞰Q仪豞v -5馐唝*Q漂sZ\j')峑癵n>鄓Gnwt籏胄乻?&Q湝3H)乻 瘅A1=禠S捼犌瑐盋鰟纐鯮仯C/ !鍴掚沾彰Ge+w 策k罿`偀-gm揟@&%黶郮拫]g:撢 駈駹#:*愢鷰爰魣9p=xj鋡賶r甔甁T抋螙翙\艩办椈D鎣q %頻癎 +x.岈嗒'=9嗶9摐娎<\I让58;亾姣9Db棾#}u铔陃俴截9a:p鐴羪嫵!*柷萜H'e?an┨騵舺,骭俦窙E癘el BP_冝8;轞 n礚Z竜2甚\D竞渎璄锾9膇鳇砻U燝E鯼)偲鼤 y%Ws⒏怩6GN:7菆*雧s窪莥蘒u毋呠X艱?]5[鏉5斑_齍耰}3娉 o5簰Lz?蓊樋茴]篙9L财刢懆^YD龂s囙LD軗集蝸3*9F獝|糪鞌<p3鯾eqv艉:\郇壌S$璧繷>j抪烯A癵&频p$搅P尡"魹(馸%8 笍89:.g鄕 齃 袕嚇<V嶔懒42咬砾淩盼猃g>f<儨褏硨9死墍傹谿賣f霺窿 A*H=撜裙rpu=8p笈8阬骛!鋵 畤纊坺9鄬餻姏巔蝎暪G螑鷀Y 鐊Ypv 睔^im鋵蠎p唯惥c|&铏2=身缐a}澔簚滪兗|6-0鱻+1猟瓊踕h顁pO杧徤=}v{9昖箥/^蟎6彵嫐g"鷀婐夏砰賈(婜溥柘ZD<_G)灜"}p:za4魬夳荪.蠼簶滈僺鄍v治箬舢鈱c摈鋦 竕.;5s哢囝BT!c^佔:/dm>*pJ噍* g0 8. 觓鳇亟訾蠲3囄%g[潛Ua}摍沌F仯7$p`,頄&.Z 窩鞌j驫廞d?^vH權##じ晉r^聯魗蛇 -皆笞槼8毟9p<喱纎繿菄4(w暷?g-靁胇=q攢>&靇B硒B熯3c6 翞)谓d/zXa溋=7庝QpN偨f堁恵+墜粲a熕+uq-億鷓$祛*鄎母權蟜3犚5蕾Q|:h<{詙糶宑秱j陂袎d0 v!緻o浧鶖J┬ -+~o -屻'Z鈳tw)~np685膛Tf6鬊Y疜39蟭58g*8瘗*覘苉坞&87嘹B+& o6Bn貑=嗉7枈蟔#鏴a鰕¨鐀槰偟LV椌(眤xd8趜?9+ =E鼗嗸.>s∧1q:ql睆"鎽} 0r冫?68<泓&踅紙詞?釻呻=Gp忌儨Q唢6微@MdqL锦褋衃ZU啚1u膟8底n0笅儃 鐤2 蚚虳棶嚨甦樧+ q\ gs3鞐9O'8椔<[ ⅵBM% []夈_讌 -n;郥蝐L拿誨畐@<=!豾劄眞蔐偀p=J11O讘}>A 鳄%练W@? {淰塖}l:q鯆萗 y檸脃氃:\/d鈿}u链>.B~7戁熝維t盇=1 ~鷩ⅳ-'艅﨎臰ng40];槟-$顑飦:漍,u让皬婛馴鑩K/蠀5G陒g vo閬傷魰z3:s!c6q^諄#僅g棿庬tj&V#銰8檬喗^脺崥:$N醸aR[稫.6僰:7聖]繟`0 <.┝> 幌s8筗彭阬㎏鶯8CF伬$C柿8怦J9<q炞f9(Y韇'S蒲NIS黛橳d晔痰釙:&魦ot耷]Ln/荺㩳He~贏g糸p7:呉G峽e/j廗_6a锓K賸]z\虥鐠嫔;寑9粖8A鈛篅魓%椧-縗K[e旾vQV%Ilq->;$Ts剽v暤黚礍_#K搔4罾筭3+騢)浽)皆dny〇$店J-甴閼0[<镇g燅竽岚w鼘8伝'煊A}d櫜讂凸淰幩is徾vI疹?k祽\ii>]:眓宠b&w礛垒neY<囋>S曛W鲒Gs鶹9w珝anw -果蓾&,穤峰尝%*,亵6]QJ*絊 ?4!尕悧+!.!茦K衡-癬+蝚冐4慱遄逝炫j]:礠r梿骭R靁Pi4▽髹呝v0梴魴k澠酝>#GcGS鯝瘻{軑驚G?(鉤歼'身%箒莤珪缰丧鳉vq鳉ヌ魳厀媟練P?3\耷舰W筏瀪婯ZNIK*-_9m侪 -9{股樛|飴 蟍 祤審鑗e鉁.椱醆半J%椩-豼X佘@p絇孅W厄'e$坊,9輗轷6,珔朷甤膇M捥..K髙湲 0慐昴]4飤'駺氲i_m悿霛考.夭4r_氤Ym7編R驽譣饧尧:{抂2jK颐粸缳Z/:.絊%2胯[6壇t骞整鸽[3g6涏唊–鄀哀Ir9匹P燺%玓&蛤wmqN籐霆鞂蛢ggd5簂瘕ヂ脒酲 E?吃>F橎珫(]橒m$鶅<硻埠]y@形ⅳ衹综W灃y咬諊d7%挰6s俇.uOcp濄襸1&T:^!姭^/数艑*鷉蛅v晘z(齈(螐覹迯s烅腭掱h蓨<跀︷) /=朝傤M谟槛葺X水窇吟蛠捕FΖ 緸秦l哥鰣2縪б4e嶻敽4縳織果乫uJl-泲偆%M庘桵%E-? -+靌艜螙曺$o汵蔀摷9&蚹8=o穉^v鞉>馲~X朹|\ZPq< 髬潧匎w b玏 n﨏G饒7 {鯦Z雦錆!驗IgqOiWC域蜛X7+a朤/6Ⅱ/麢w陖e*Cm:锱H?51屣N0匣潇課S*祯J&渑 -:狥澗蜓灀<┓眡^vZ魳<忟V絽黱サ怒J+鰚珨{鳱N=钿哥6掽襣礕[鯧碮S肪S鼹,荏iy梗う蔒轝q联0饫籟墖[$铍阀鐈尋W赲#)┒e^鬤ro[巗MUn朷#vw?>貁=醁SZ堠耗赣5q 杀[}y!靽鱚㈥_ 铨n 橄$3閿w体>頡6╙"'3蚏>鯵督眓蛬椽)疬誉8zw麐hqe粫蒥^K椠d禶访`c 06J梜长9抵猪/嘯o$漥HO哌|/癣w朶n0椾嚯趄韎粟Y黱&z蹺硂Z卞-者霰澋n0';*$U%庢9筷橿琙c栙费湮 <轕续麃猛暴e1 鍨q<珒O6$趖迧憓)搤n j 恷k 剌u/赙啍- -珵崧n蚟齜*蚷羥綩O靮o R+浾eHj顫f欨*W)媽Z,拐K(逨G縌/該>o9lQ^!+)w?|o%庶u(黬 蝽 -暄JVS夤镙銊綕O忮%亽w>J"N7$&z&y&&W呵κ殝3淡'瓃逥鹤嚘湳^漄橴~%7陓櫉"喹_T@刨簶鑍镲Ep镞{1沤G'}V睬鯂d想徤^U潙>陷nb斧M鎾 ~鞯泓幡禅M棐5]N:躷=Y謂迩}>((䴖LT齝?U聍Οy3鉭籍iZ:矺7I薮溵蹙H被霗俶~锶ua嬠巆_z毖屚~g$筟-);aY襬胪篙m崔M<諛栴隨錞T慟y称)"6搐酟paXA笴Xq祄HE昺H .1<纺9"D=*7鯴}Z孍飲I_悼u缑H忋聡紑钧!{鬀惤-戃o%军褜M#杰涟w1鈷鲇差 qG遵蜬諿*齌属谨n髶嘫vWD餐N' ┣(I~!y阚蟛奘宿讘樟uRO6e^谳馜!.糨吁$f_绛附澴m#bB+" k炻 -阭C_4貑韭_骿鞡骿霣W:F溧u梈岙H/uW$梱(|*b錈騼MKx盰X"醗^K|"晚%挥i-}誸虏溉硬0歇(B蚝岣(玂浐兀-蚸I锓顟絡8--5kYu峸@猭Ud猆Ka8 u7ab輟彦/红胣壐绷鉚Cr省栯I栞8鍱[EH恐呾钍Q7*j躡cj<5g&藌邌p淼铥踥舺6&x争瞧崭E^玹 -嚽 -x灋:F>+r峿\洧窾[u-;J虮9@苤#<'蝟=,-暭晼U9纶,:囥赺醀鞾隫汿P鏌萾紈3  鼇}8?曻魄鶧z)渏|%%厲_H:蓣琳5ol鷴75}?鲠啗!晛賮UA偾Z甠撮葔骊遂舉'=kB3`炧窦!鈀晄Dz橻捻j菆聑郯詚玷絔穊鑏很娃篼蛖⺮X饾?C}鋔冫0毓2"6犫BL|眊TF攃ET赳轰u)毑"屣_[w=帞給懡k5跌夛矝决wC駬_鯴7朌漢蘈=跀暟鬏瓨]軴-v亃圯!鵙捶龁潞鐍屑槊^鎉暶搛;鳖u-j笪櫨 M2凯38幽.i缉s褼撲芔鎒縆桀鐑梒CQ1傻2"丫"6醃仹恂k酆8湷熌蕒寺 -:sbN7%ズU'j蛯a<谴;嫽p, 烽蕧9軞w)66ξ#支?A蓮铧霩s责&吋夅岯cg馴値颎$縏/鲝I+驁膗/騔I@尼茓6鞼#剞>/=\趋r .n舺U%迆璖D+w磐最u弢糈52龒W魹\c{ -谩菌曽>z檁枀sVq匽葒3A瘢:痁扬]鯖y侚w迬電K.1厤gC;D嬖;D7$K緱J網@=代*R佧雐'鸡塖絵菙wX濼*敘 汹M蹛韍岛Z箆+ZΞ塚獩" 蕐庛胵:[穗襙赲]J"覠焀\{^唰埻骍xE嗘D熋蒯hCf疎gy諿艊桒&ぞ鰤M搿绕!禾;p灠犸->鎱)炪噶6靎媘柰6踦頖沆O隠m#莏JU54{郿4MF猦殕j臗А渔№%H_戗'鱌薮匒笄閔*﹉旘d4Vi2P 潖&,G砋注E4:砪h麉騃;燆泹+y报銖S鬹~辐蹒c栱o"砠{紇]瀇鲨峴DR橤tt塐禊妧D強悇ぷ>17葴zD平9|舢頖慣/g櫈nw菃皹昶!u蚲傫姧~魓泽;Y居x粙c峕nO6 |慅e芜茔7脑巫霨s誚犢S 瞪s&h墕♂1&"5錓h5碽9趂Μy錾H3ty=//紳E镉IwЭ羔儳け薌谡蒗榮晛q癔}⒁蚪"驅膟1*@[駹%蝈[юKEQ8G>y5监璼xj﹪"'閠 遹,鬕玗/=?jO 7鶏?搞縉垭鍎璕6i笳幸e 憥誵%}锼 <3&觎稺7S 岴QP4 B社 <.e9)驚H<赆銦斏s#耒O%h3懑淬&緿躍, 2鰤Td緊dt緊T魶sQ轖楎舰n鐈D=蛍嬏蛍媥鹇=^7嬡"篎.q 縋蟷m~9:鍱-gB]v&[-爡S8忂?挤!鴀)慟儡尷x|离鵆墝~(4d8黸444 M-_眇,杳u飩siOS懒+盰y^Q=2辺D9太<(株P镆8埻\"n絨崒-驇:貧%9料!8荸囵&舆;/U譴5Bj#'1 %0~囸(<8馄泔帑e4鵦菘巤⻊絀x-.賤iL夜/6殂鱭盹}鋗A滞O"7g+蜼瞧谥(b^祭X$蘟飓 -樓^婄甦 >葁嫪/r塶/u姁~,蚯瀺Q;蠙躔噭遹;碱&4闲R焀;柘k6y<4{ Z畕msS娠?:*N -Nx瞌根+鶴緵鈇濭堂B赘籵\寤G縵"=*鋶oyhLp塷tP賧EF9鎉e螒譐\#扟偗)己幭崏Z6鯦+柅)JcH #镡9%r龝I溌<嘅H宊B謂:@緡鐔庀8珟BS懈As裻h徭僅*MI穾抓>w8[u.t*騍j螆>|>U x%芧Q绝珆uT酤朱Hx>[D旗u斩a齒64逼=趾'' ┲傩!3仅胥_曲譻0^?_鱜re嗐+4!?v ?:尙可cWEn 医/u穸{氾劄℉弾|}伳嵫<弰n训x -_y$7緐M.u巭褛-千鈇伝"⌒Ga鴣棴覑&惖踹鍏砬_泓>`L摸溣柳s(鼔k怿礹Z瓚&貧料0垤┛~>椹3镨g/=b_缁'旀{&=)p復-p婮)饚t.媹倗GyP懷瀾;o旔咾_彛?*擏/s:嘞讍鉝G嘞qI3袠擇)0_*冊懈*1x◎泮4鐠檋依卙聬掳eh馊説婈4k!苸寒h5<`8Uis@8/嫉鸽靤卡;徬沤蓅--p-{鍨PV5稣+坟踥堍騫>}E+込Gj夫Z媁h球W迍1渄!~?斾慳~?希薁賖灖"丈k裈誱h<4c:G垿5C*觰肖Y鶫u嫋啟臀停4_+わ灪? "稿諈n)b娂"1螌顀3屌蘧u帾y酹% -1诣縦懔`9k6嶷:鲞渖$3 $喵缋58湢1h捯4u鳥4u -4}64o -豴蚟k阳4}6崷抬袛櫐h拪6m'ym mqン幾3獒鱔7>w,50岜T簵 E 钙蔷,t巪W覹覽踂銛X]鞉樤/洺吸5g瘙6鍻糌_骮眭6 -:M<M1M⿲_巗"4y2件6ⅸ惴 [心 廴豑Z"9R4{臿慈}[ycp8~狯"^蒌#縲o韊_罓O瀥臯寤窃醳*q妀-q墖5譜銣諾閽襔鐦s 0~爰%胴+"鮨家T4^3$籍&57Qy&~n&嶇p ~L2M弇5m殹Tg洟 4{鮺碢-鹯昖{]4|-i?/郬雞颚⑾M|糭唶? ,梭N/,p崀C!,唆 o`~髬傦桓髒n1縈髚昋莙踝禷BNPT鑙h灖蒫枹楦蟍e脍氕鸭E4{鎂4缢殂椺约5Hu)M熏 毜R傛k滰薓裷&鱔yuh 鼯iZ郊嗹;~簧奁礇?冉锺捋t=靝mf纛幓瞓S_湉Mzy!鯤沐EQn5━ヶ!=鍁●E^Q;{xz曆ql兩xF戁<⿶1俙+`葪屠D疓4~<孕难诵訷唄魄菬3i~ζc~!郔鼈-浐)瞷聠愇q軯Gn<鸴鑆坎qZ裹5紪'⻊'鳮U淆 駪犁謡艿繫皲峴DI眂x鉡Ж緍驻攴.q詶F'm追 G@~wbs責惐蕫镠u躵4{!Z-ろ0丛)w2咦僕镀膈g\狳l:熞犭鼪F刮Pu奂!浖蔊m/踍胦迅葡 j毈澩/蝎狨 離慟+/1j渑3U1Y`\Y;籚勁2fH選;= 僬F1濗Ed陁c殕9 二q〥 蝥$寚⑸3u愂B3碻鹮礈駻K﹕h$9xEy}P蹊-楖橡黅痣禬!mЬ?Sy吥瓡G 豿牠n%76O袏恒銚潌筐杺Ns_ -= 粁裎FQ 虰 -曳0w潝<従駠(齩Z\?%骶[q>[塻篹U'嗉揑!o) P灗?=鑷繨?t弃Oj4k%毘毌k嚃 佳覞颦挼4Z癟-\▼柂嫅:0`蒙C6邽鲼俸暭禔-on芡[Q_净卮] 搢~sN洯梵胒炢欩隦冧违哤%紮i1蕐+Q}逹茐{W寰畸q磚鐂呬c[S觛+x怂D?p-^灂!夊%!^錋掩If蚔S7釸 Xx濁qN1M煯庢1Gu贖;⊥n 3N縓/0?,葝芰_齘e'阎鋡䜣顆轙3/0藢掘毁O漗茲煎卫|U妹敏l翿~稩蘚疞捭蜋鯺穬璚泠哆=賽東绊f1bw膯=]%彤YG軷炒O雝O%帢籬3醝萸hJ8荋5h2/VI.狫弰绘蝍瞺7琏Y袡燉想硠*6丆柈6C覩妄/綘圡e尦0蚞'Fk-挃礜3Y/惶倔囃~釓檤怊帚\P肧&恥殩痨;8/嶲VEc囄@鉍下陥聚E鐌賓鴶总駍謭Y 烗鉸蚗築6r~礈煃貿羕~溴鏌F郊巫R3\w/<鑟<峱n蟹w觬^l愸q埂锼器yM級Ij鹙仇G笸豂?nc;=姊浛镾gb&-N(殝%?t扏-e_繖津虳釋紶鷮0迕f蜒#蘭闫潏古5u-┭胜>嘞勂*愫6e Z癪6h*害i=鍡j遵 ~邋?Z=惯挈濫擂综炫贼湣_跜进M~8"璱饠4箁箎R>i病!疫盉六wA|蒢硣3矪p謔4-娚[Me蹶2穥劉槳u"椄)渨騉R看鵟l嬏ZF匚菠衃鎴8*蝞P;ㄘ鈛Bk OF崉G戅量~繺NX-5<喍>d~夻{灹黵翳 鷛唯沀髺7蒱忬 }#K碨[執枅,晇ti頌2_]紩 阜棠H窒殕6蜐幎纁4せ}=笾J^`祍妈黆鬒1潼yv9}衴cm;磀派:鈹N]6熨j&礢[z瓚c+;OI -OP宽犅^,撖j@|孛評6磬w霒骦娗o軟a_掷-i鲛鲊vf}]苵梵8甎a T鱓G慊紗YL鏙臭/L矧:鏃l3?7nM碆mZ=}:碓C粠nc}娙趛靶 瑶內}/Y潶藥[湔灐烐袍晜驦>$霈4p藵糫戟碦S庢阙=伲%孱謊/,妺\eyUW>枥}攃腄佑鏕xfN医餷6k濂)4i0藽4EZcu飝桛蜓冾U饞g童騔f.q枉醟y趝(煅b+e##AS蠿S楫[廘4t悩=H"趒Ys,m莽圡卙'~ 3^晩-YG.d黱-`线^ Io2拔瑪q%8青Ipp}澲緷壇轇>Z.束-薾cわ鋶孀%騂./YC=Z4鵝鼋庝咀 饁俖笧裲)~凗凫睔悶t泺lC椊复 箴':=n噯>2X!r弳镢厰脜B0o 诙x 2佼,ブ驶O粚򊿦a譹妆r嚑)t耀蚿蜽鼱螔蕀P贌Y澺D缫fPs橂恙p甐t鯖 (钽z邖彦玥$陥0!b0祣3s迪埵钣$暞劷\d氈査霘萱w榙豩t躏闒W葫&絕弈^76ㄣ崒摒&蟳C"3}?R3>:啬鷺铲鷝h汊檋跞涝鸦 fO笌 M廉!_癗┯)|mi邒硤坥趞櫝 -{詂$k=I擱硻Jn奘鳿Rc\悝2n姪" e鲜*~闏?韾娢轀-tO{邼+}丶[VQ 錹807{吢敠崒险偬瘼' -x踽3"鼼]鉻巈 ;3F鱠諬:罣,滃T鹬&n檽wZ Mc<&そQm吒墡9 c殘畴丸鬎M裶揍fB9倇蓮:崅{沿K碟讑や>\蟃5欣]l詟5G\橤熂0毑 ,嘂Od&p椵`*{\篧捽 撳灶2z 橒汁ⅳ-l8)ySsRp7]AZ&*溽bQ%聹oFPS雕籐趛+A頶.\滿y$L]STE痉鏄ピ5货C埸蔠 蟾挄M.輍拑眑!oj^7檡徇X;縪6蹙4赵U1领夥峵n/m鄄铺1f側>a掕L83駷氷漾y 阎曣;z克P笚 呆dg|';⺶澼/筍-攮s窔聃!撜呥[聘臤珈'q)莤渙悃R缬g:\檎︱-%廟> W緄 3?j/傥躿蟨-桥y-噭W緊濘蜏M筣T$汁g灳椝*享锔椑u院=鉓M:&姙テ.*跰#娓捝伽辨9紴0鹧|閝%伒 戝賮f%璏Zx@徯茒2;碻輼p@3t嬞]蔕L=^#N+逫h娨*繁泈匋F樰熕Rc\ⅶ癪3醊/?灮pq梵X縵阾r唽Ey拰6嗌R媛覧豫>-鍭籜樬睧t沓u嫉v -滺蛊N8%M2蠼94焱S蹖 矹涸哛eS拺兕⒂婑偀CGki槧貱&營7肄io趥 M暴萺%;↙|q師+賡h嵡 -/#>wKv聖带赣H竒標2掑朳Ko6拴皸薊I摡茸櫧毚鲘汆誩&=醁曚额掁j栄>槔uぢ骎0i3h粣 禊旃H蓦57妄E屈諻筵遷榞&艨1[鄒m喰1~掕ㄏC3 7曲d7w>u4=錽s6躓*躦?0SI(3ni猼\&6綢t矨蠄 輏W{u徂.&緗3u〢嬍l覇i淪$U鰈鷏8>r( -座>MaR+綒⒒絝詪N9螭SF?锒潋邛R菇B翇呼夃戬郓棉#9f柷曖-:氤眷Q嫴最蚍%翁硁橸?t咓y永譻鮿{裄暪h扫欨*5b慲魁`嬷R{蔕 攒畠夺M}馽鷱f幑X(A=3\zx颠ng}t狓饳a爼 綷o&結/enu楽>qm鄕az&鍾2g茐滲T橍Zm倜76謪徿鱓 穦Zr捁垣鳡q7f3懻霗阑嬝s﹋t伢昄型E',\)P0w/p蠘f餷庰d8m謓F[缘懼萖皗躦)83l睃eh勿塰瞑 h閄U繵n沙$!稺=y 鳀q[-|-怇旖y|TU?T@igQPS80R髳"﹦侸U$@d怸斞擸D渿V[韛鑞輛;蟴畸鰐窟{亏y飶w煛N%暏*I*囋Yu>{鲒k豨瑼暜@懐z 枊0Z譁\过 -摭镙溱谣1屋嬑⺧z渿炕u忌峠☆俫V鳎_Lp稞b傦笨菔助}蠌癞 -鰿J緂繜鍈閧嬷熉綺窦鰋^腔W=1[5ぼ3o嘣)蔻)窋#蟷t砰炰柍=wy<跛N+鱂Ivz毞烠紁檞齱忒瓁o舺暨6紁;秎;国 飱礋?O冪{鞹e鋧/_甾 摭逳>榫g⺋顈/揧卷琬mタ8駷唊77竩糦\?n羬@癳q孥麐T;崟;+<&`鼮5gw 褶5#^>壢涢摁 /峷韡遃y/+烚縩v.豼钤欋"[Q駡+嬱W+歚銒&M歍4璴f绚[io#禮踗z媙漅^t雖E祲S\m巯E預迹峔嬋蹒笤tW掛qG产q齊鴉掔喾%荣韓Z1蘽W鶠鷉f粘粱 GF鶙锖9O -掘EU噱顱辡Z>撦OT尜钷z戠廾従/z燐郜?9燒n~{宬髧譝鴽}謥繌w畗姾Wx洬n@澎厓躆[维溁銽叧嵒礻 夷ⅸ7棏躷$r脟?5稃S&註C:+瑃U*眤標穇剋龖%榜鲍)梱楊祭籮螲邹o&x烓鐃鲹1懦蹒啪;w_啷/薹`庸鞚讥.f醁^羬_雫郙沢V镖'lx*玑?蒌~岑3/慢椇卓8 -2*珦{ } 骷 胒C鋝营a醛缂}裛滟C礼蠝籓-輜塷盟c}.兛愺楐娝忌Mgy钬pΗq鵓wl砷閇(祝_)洵?+v睇潅w+iz邈豪薩UU旷Q"鹚/鎥^,酌|戴活賆紱堶准奎宗'W塻檗 -巯v襁 陶 烣y╪ 擞搽C鐅喜虾絤心輕絉4i颅臈旹3潪"g╲+B秂虞gx璴HB J栥羆O蹘䓖_9}愖祕瘤驝 mё4,糇 琷hR}髁+}?渶\O葝醂 O\>M摭熭鈡饣垧灚覵c怬衧痣掄訜9较S閨鈕%曄D蟢啐:|鬀9晶W辐錥俱B髦痷=i燧遄r金戄颸褒鱾绾&住窟靬鄛训衽褳e{.r闀畢焀R2橙n嫤躕V:灗蹂t襙趝溦憗,缜毲Y嶯ol羒葯束掍 呸#:諁鹈 V燀oZ<,苞釕o岓my蓐買;摑鵩奭梮镘:驴婀玃k贸x哜/>閇E,漝.$]|蔗藑緢鍜\淬'災!災猘,呶茻峚鏾9禽颁4錃G紘U9婳舺胰风啉守捆焄=M樺0覻S~v荳/踸 謰笊(u>麖╊2複溥'祸{齭W#;x齈k=鋣X蚢>#呦鸾饾索邝U逕}鐆>䦶稞?y绨o笼g笩i>噍K\繗馏<汬fF頖>U瘙8蝙#w3Dkmv);窚還豚7zv﨔p7:矁昅鵞6烅_鐹洇舣:t9羊|#@cg飚訚5瓋*k悃爁囩憦疲Vr7街旷江觇鏝∵O>鲴d秸筌焔鷂讱'.顑{?o5蘅戥6+_!s終紣之鑮鷒ex左;莨翳E摟z妌策\鋔槛 稔?O4s8p眐盟W规?t.t)Q车鵰X奕礝\完1F:-p铅砓瓏;w瀼滘ǐ剒x仉猒y!痨gN鋮裎n 硲蒹赃os>6s?鼌髬\t╕鄭慮y呛3+鯹鈃I,>%;削/剋缁W恾4⺳俭窚雖輟N 掘 k唟hF]\ au@C駚径m#饉?J車~y<+鱙苆軬v萎黜/嗿xㄋ嬟L1錄窥,鋚>蟑e乄區嚏N !t镉c|膂Y愲沙筭P腃v掔熸~驘S緵5f~詿I.?每驊懶[車2煞尜Qɑ;媗豥溘瘌曕Q湫p菞橸Y09遌s滉毞靦陷O^Fk瘷YQ[4〦eE钰鶅 y膽_1 5皭熜鄞n赋~┯鼸3|D嫅=劀疄prr渗X荊盶*諄 嘑6=藭柴鵮寂睔"忼ij栝陷/:Z隂-鷍薌As7扌籣6U货~锸!WI韫O}x/\;nu 鈠舴v缌哭柃魦k*绠9酱あ鑶E尤&@N'秓薇鷮2#甁 瑯2hzy-赏"_m郓=U冯椃侦$;m蕺a吅%取飇:3w㱮胤玘鶦蹯燓v踜6浈CN%鳟w ^閩窨{紈 棉粔t薯?幅鎜=oV(2簽o30下畍螏Bnw篾崛鑞斤lg|商暶|$l<7|搵v]鑚X0x ]"銲f5謭烶 -綠7r >ぶ8輢)<+p鐔髳x*rq6<} 蛘V㈡:|%r荨n51D琢/oB}V 鮐w-@矧盔O蝾3\稧OqS6"2頃瓽?r<4<8p枏d72繵胯4!茎.蛱遬VEM#!憩kdt@统Y废闰l<0{t敊"响;)杘5卑煟q*拵0繳辐To腈s 婳s *镶囅噸P妾p eE5帰7([8豗誸4瞉Ko ]歵萡斦弋p '7騉#)r{j[;= =硾陬峤髻k 懛审R3獮攸阴,w彡G.<酾閬拙捡鹓=?S<:氻;∣秞讌9-兯**婸w镎\e免S,俓du蔋-貸{〃烷壞!/&玏I鼌淧逦@憌黾A$褙g麙礀栱惢(x ,/3樾举M僘惊鸮邳\1騬/8y陓晦S洘 怔喫%谉峼莰袤義吡廗!g(珱近3W陵?| 焔鼷琣&p-Q79S綃稄6妾k孼踄峂謊鬈禨Y-≌-捩礸V轓 ;濑鯍鲵[螩惺#X綑U.E'V鴵輦\楱斟=醵纪鳒錧庚拥~揍P嚒j哦KB]:U骶p=rzv揩劄襰湎S酵胛t蛶 bu巫>ze瘙W☆狅冗nt蹲勫bZU捐凇緔藛篿齍襹 箅艦G竞!绊C;r拧 4&=┈)遌{.- 幼稃呎鑧0礿7eU(箢M▍l<驴昀迦e >錾t銸さl }Y镇方帖01扮肦釳;由H否=|韚cY>进3Q映鳙}G1鬿3喾鶢絢\析$砷鮋崋苹焐薥聃<蠓熾n4=g雪寰饊'0徭"膭f爾;r亂鱹} 蝤2慮[Q+駾Eh踇vV璾庸6-璼"t瑁2邇9y潺-dU彃薜馓`b裀鷡俗鼽咚?龥*.29藘sioSz[7潔<榫/\賭趬菿锆甕フ索Z獥?86榞6鋢蛝閑3奬 #鯩溘B.n鯠舔O?::/'鴚}p瓴"(徿7匼毼=颒縱噹|V@.铌yО64/凉/x桡跦畮鷅橄+|骺r漡崛犸kYu&j惘/眑ts 3螽~ -邼/v者y*j煅瀜6蝌y镊鄃 -駩禵`褶KX詈C_敽鰙<6/jf/泣pk嶾灟隗鋤鴙?軇9KNG]?詺耦彤C熯<○0 :瘂j攚戏7U睇r汍'Q鸕鋧ňs媪X黟9叾继y|T:騃E蛻O搅O鲮倸m/#诐跤莴u/ 衾?Vx深?茕_h?^wt薿麂麇/!z殡蠔_YY#辊lw愈3`胛"u姿齭 ⒖u鐈隉鍛D饣J_美瞇,1j a咋梞誯_韔谨渀悠硟Kv]溘筚汀裏荜埚Z煎 +騗7遾&j滪第Y顕H/{顕娦玙员渏w┳蝹 5瞠年3+啞 );{俩~栍v,=G - ?7j@,X{6阷NL蹙蟝犉 -玬艽鯨V穚浙W仗唪撣闼蜠M曕=sq7<~蝶梓S玙{酷轞轺^鹛m*娫:M_埡@,髌g痑醢!鹶j嗌+j轸d硌瑅碣袙]柅獛瘴 -檍g篂鼜R貒坥,s3]I瓭祮 -`祄Z Gm -V炲=t?凎糈Y緶伧$魄雌+}]腫񛙮!詊阁緹@9其oX6Yr晁W睨lR`鱏P骼觻霰丯_V57> V;k 裋瘽u/jg憕状bx桀.E呜达i党|5*I1蒛漶 鬠殉jf熲痬孿司j馔灌譓绮鷛磸1烪粟耻压働 9結揠邟X.n再$譂峼u5K禴虹铇缼_9沤耔5zr枞坋y棎_=,Usq锄C?向挞3騖c荀=_寽8徠犄69D/b5>-?担B%迷赮跥鸀鴅:鼉U]TQ巣& NC.妮P/ 鸓╭酨璿謪膨曣党"KNk遝镰o娬+熂:D嗣?黝‖n租妺7嶡霜;G"梸拝4瑾a尶肪%=韲g╉W:09呔耜聈鏣輘桕毥~魮櫶n:鴫憌蓿鐫隂蕩y缈湀俭寨犰坯A靑ā弘袺+]頹Xx*|w炴o斤\祚5={@圭.訯[踉ɡ哆;犵锟j鹹觐<臻絵@ee皥鴇诩,V媫翚sBY礰玓 k䴙鼁量$礶P缂|韩╨颦瑅栍囹党畝{b辎檽+i堼*茶舄喤CmC倯钟鯆N噷F-nV焭賻婥+ K,傹炚 邡z蹘?,?}肫s》咹'9pmh珉鲟飣鯶V砿皖私?檪7饡"䙌鐉㎡7箫:)|凌颉∝瞐87耲c>x-锊#江鳒瀹M b禍h蟙{;k'?絭鲔`霒罄蟻艣F燸jg2l砊憩昷憩j谗o 漫R=緹赕煀祴嫱鏐偺璟e瑸贊;/k薊$/霓╙tE韐>#吆=禅袣}W"6]c/暘娇,璝髟盗%浵G辡詛f礰?w调疬廃ydQ;雕X{;痤肩鹫j蒗 訨D髿"g8僂嵯為 &稛d唎氙8钂伳横*翬3始Ee3+嫾 -诀諒^:璋薡mS;霝活櫻萢3癥軴u晖諰湑糇 D,椬_銭,鈗'V;k=怇C眵{ 蚠yvM琺仨裊肣1P譼.18祷H&6 -5QC嶚蜵嘴憦n?蛄崹\搞,≦畜鐎N呠墁>={{ 珣皫魩廭阓H8.橇?惥踽年;/瓪穦仨m;.猋Bv#c獛Ug拎氵Ux;y髑vV;嬚o阩黝_弛Y綸蟡g-輩赮荶 %鷹塡莠6=O摆YU屭Y+遮YU孚Y 絭贮蛹5裇>-CしC鏓眸鍙嶥~o赃N俍`U 盅q j+蚌dw韘Oq{.tV7絴55H/Q?~U坔l\>屨'嫸瀱氝%_鋣嘧傦涱邝?t咿p -螚{?豭蘊hl==Z皑褻6y洚觩咸 -w懗z隼罎汫缽堼鷧uлu荃蠩/]媧ㄍ=}姭h4W鬽_t摄m6>1祙橿I鹶騞=蒤瞖m[Y?湻r?鯩I囵積瑅rで趩8嵹Y 第Y瑿猋憩g璷垺杣g;];阭#VZ祒麉←灪緁觜玧ZV产痔_,邔g -hB]査 -Xm钴B鹤揥a繇~喞緩&{骷揼;2j3_午0[fx淕.y渰 m酲K:汤螣K5 譁绔 獮粁(賙楘鑐~瞖怔抝,/珴踬M伹4=x糅Y8 麁章hZq啩~閕 唬+O譳g量剼寅C洘-萁犊呓垅唑魎另6紁=jW洊瀬砨X沭汿k=*瑛吶昶瑌膫{眞Q弅笏丢{灴6磍薊惻A礋匉[╯镞鯁莘黧[郷c1w\睍d镂 C-[G伪籝昊鱔孊 坼/轄﹐媜掴!N_d牜 鯪"⑼#酮=繵{绌U嶋蝿}[祒藚▂欖B?熈 #V1绠!簖蓇gb/tW%N﹑P3?戴@椔>V祎蟚l彜}嵳賲蠐6淥兛T璤rd攚薻拳o囃遢駳 u=p!秎鱄;5kw3隰觪A睻Q﨧郸疰s:T磭BO蓥簣趏XM脏!]&螡0 颴爁0鑽u蠧|;_xW伄埜 -j牵. -挈:庱&j,a{颜丟~ 疬nE.t鸪獒#$?Q棶|'du燱锘<屑,聂1'弈]C楎n鐈党獮雤禧[P;藈3c裎W鷹宫教琰鎄V; 礏嘞簵鴖軦聣餎憩Uj憩?搢粇槔咙鏦-5掗$鱍鳌7睦V聓蔺+k\羓童92:淬u;V1棖电T/#56氵鸻I`菗=?佳(鮱咚住陓犧Sh惬知E_洵o革欕嘤=z髆#繓Y}'脖槶瘪ёvS嗔w荂O* y驀 -烵鑾幌D孕级 6庰稃]i蛠?T癦2wn=簚囲d埛経E╝1暄蜡羣0V鐃尚.E.貄佸{G㈡F`豌W鎔Zyt -eb樾讼苆/7=w{峋簠L邍\5緡烪p土+Q廳j 伄癎橽\エY娃s裒-谀j燰递V儥zh`碹d遟ulo頇m剒笅O釹鹥/^烣鑵/CU/|T;瘃DM|惈2P匄玅硘昙Ak\u'榡g鵹%0豁頬毒蔄w睐D価瞠_t獘t|呗葭Zp漋嫇>Z菞赮^佢F~囘d5諧廟=p鴣賯–介塳黐_,鲰z跱<w寂t娉趖t,鷃滇哂鬆 0賳篠碏}浬?鹕土g?駒烗鉻鬓倾b睢{_挡s搈讼 -<3o嬷框zS韘镎W?,铩?L${c, --3掓抪 诏?8g蔹 薔畗鰆f3飠{|p仰鬂誷zI5>dA-x苠t筳H7t9+珛减婲儈 技龐贀9軺X-OzVpQ╫咉K&薛篆+℃j时葨/首孼[爂鹁煃髆~:盙K嚫:蕡>w 珡耣建I跞濞6% l}KD虋<|鳖誯C珶:訳+鯵p矿mU穌腓日U骶T 緂s 阸}|讈儫軫蜊闛.鉀\绊'8足{鷩橴蟷 芊耄 琭|羲6邽咿浞7呏?q 玦帤筏1漸觭cq2 糕P索傜7ヮ]颕堬"尢辵尛砌煿r篢癿9LO闺亱玍肀皹蓋袭%瘝}Pg黾38+XM赪樚[gX產u儉7閺l彔u镗殓d'*$烪6,9 闫3咩咿 緷X 乜|嶒睇j"蝯啚脎鯧懮%[螄螉~檶」馁K詛鹿讹羨蟧J SYl:9v/鯴麸$鉒|屺S浠統俺睩瓑给 QS8!6姝;h苖親 殙/c^xyj=鬅Y凎>=>T 3+蟙5県弳巹盪=zMp菦23恋4拘曲鄱g"|岾跴菕鷩霊嫳OQ>q0/!℃刏[ 辐 ag8騌歘 C郊Cau玅硙蚦HFa9;,g祒鰘0祴袉賩癠塷刧77y齞d^館%PW {睚/{|]z'昴 V蟡}瓦p.;{_#mxf-榈╫宬'註>鹕嵁=縰xv就硺蜝;;雌扎苹/aq@#pvx:蝾藀幚界=;故]6豒諀 -l 原偽仛p九[h熧yA粝蝃mxbt桀潡癤傥W8咿n蝻|菐8椒霎S她s哥衈耳1媨鱷v粝5w?,遱 謽!媑3c躿镛醍靱鑇"轊跖 A}L_c蹛帔荈锄p8CrW嬉趚靼P蹆燰a荡I鮫z宒璩讈'涉:7詻 -6-鎘^wfp力+拰趕)篌懲撵 j【t盛YNw鬶&皐Aw鐸埛鷫gECoF4,竢飁8/聗俱5 -阨臋欳v -鉆8葛◇a;C~C廳u覽7炈鸊>6傢蟥鱆2趴h蛆ㄩ剃 慵庖莠fw贶翯{鐔骕&&票:檺5钸颡*廝麛d玸匷别秤 . 诃$>#zx恖 粱:/淅}嵘陦(孟?u绨X)镈ㄏ|鞁x徫粣鬽湧]Kt荤色Q嫀+C渘衿皳Pk浹蜥䶮^俏o|*渨E軩 膟A/#m!栵箤鞬沕(f5 g=d|横馫烕_课抽毡緟;F@焎羔芩#忰膉l54 F濔剩z撾?昔 戯顊o脗S駘?毣穴覥XQ{0鳖L6n懂_?匫酳>匫酳>匫酳>匫酳>匫酳>匫酳>匫酳>匫酳>匫酳>匫酳>蛆3z翡x荬pKx鳳攮脟.&2苘I:揁5鉐-摙-袲<渓硨g0邔2鞔I栺1e岫H财V谜尩L皩)櫰賘:謗=畹Yy󘫔嶻屁[鑧Ky2衁嶦磠'脟跡賏$I簇韸h%灣42该f旒d偳\憄竇:<誒gpS?s>t逐e蘕嫃.蓍邏F衕b驳yNE竻饓(W33疕F-褁Cq!L涂e涁oD+觯3uJ4苃>硒R冃3u=}壶夋aac,N?撗侪-慺Fb毺d庚=祍⒈篸$晤-悝臶R?-mM 阳謹年5躕8w获5gM杧kcymKx~$賑n觡蘬礗Y#9;檼屲壸胬陧汋劤%赗 髿衜f坊⒈\&5璔o≮覛溳#rG睩Vm-柶 浆KF歔c9鞐Y姮0嗪 -f謊",4舢ВWf*蟴M慸%懱~-z潐謉mdj24'Z浗 Q襎駒,砲紱2+咀Xi⒈)m蒳}Я0#$雚寷┓L跿,卅鄞`涼9 -秈~郐偎拯礛橱kL<1M霌a猥靥D垂`層俼Z0N 苅V0N徎q:1m;[I)▂m爦@-桗泤Z溗t鍓嵤l蕴敥嬈螺韆鼴*5 ;+{寏忧1c{~秙諎[?g威癇2\m蚢熥镲eF"4'K4d-鬉$悏齇廚乾 挵稾/O腄q鯝櫤l浐^4nfg兩;褩惚d_o蕠蝥H3eC鰢R7簷6曔淹\諽鶥蓝lg鐮.孥=jy睹鯊t?攲B"Q}4kah紭阽桼O⑼絻T龀晈/{则疟Q拀墁tN8從湋X6'鏰菛絽me鰜c郾e/ok摙蚆眕m1on孰-'{浲c轲昁麣5觎k&亊o憼1L輊$鞚wy骧NX"9# 懵2 a櫧i榆R7)2?瓢rq帢[踮适轖檞B#{詭撔鑛4a蔣謉 渍E[⑤05'闸穎>,批h,栍佈X铩O膕樆谮制诸廽ね灘Mㄝ(撴r]MPo-膜玨土d7R賙覊翳D颽-積?U瓷祫摴韸j冝B0岹螺饤 邻p瑅伈0闸稰蘜!3 L} 3.Y颂鬴}_[璒&s伛剌絡$呫哑\侗霃譆#S铆屯裵|b, 偷~g;丧邺{r)则虩'椄鞚岿{t椁I標JQ_8辉b谍黛Rㄥ?.魿蓸淿g梤YJysv┒瀅德佶沦ヂ佶轡y卜us`﹑v)宽䓖v)则'g梤櫊<'琴ペ䓖v)则LhZ>攀e俿:򝖧"蓡铏蟵B.g 觭搂绺&枭毁9畠椐 \'E#聱灅8N臚騫兲荋呁Gエ班~靷渾_鰯(,嘎偹n!Ud8Y揷8/矒 yf.蹛C婿dJ蚗悑=憢rA.鋌悑俪rA.鋌'rqr2烟U 睤拤罴霖cAa,芻( *cA0罼 傫 奇柗龃J荅, -V絓1穫撯曊珁徽轝菁:xc貘:韐松0/iL銹C簮0瘡%屉梱錶朱彛銴f筯.R%E;{$ 稬蔱贚Mz 袯 -絫1區6D可媿U娶譻荴覞駲缥鐪rn鋰蕹R='覜^缫DcS⒐[%`t瞟簃矵倩UT驸15榄匯2吨HCbRも #盚sM  鰚錪? 渽浝,淒穀杩 魸﨨,Yc瀘9E -逕踨 \樺廮/>犳&x侜(K艴x蚴O易吹炠郭a脽鸱T{躯陧k﹜f 笲vs撤Y0ODcO 鏜耫莩Y挹嵈;61锛竲M坉3湕坞E '-s#-9|9L\77湊g#_鲠坹載UJ.狈凡╇uf炜5緍嗍n垚茣\扣涹1 3.$c鼞冮)聂鸐L?倾䥇榽基,聂鹺L-lD鮵蹌y!巁堛怿锹桺堛蚨窍d掊(鸟徑堛鱥焑!師綛匡嫄靰su漾鍴i"Nr<6煨胺-%d峱,0n(瓻混駇.?朹瀕 倏佘毈譌9睳k誟XjK 光/E爏 皱葴i嵅唖2x諐fBC2塐 1嵶E鍳盚藙dB"巜) 钇偦嬭~оn,笃輼媋U91齅>D壯Un^9S揯 賑^mlm&mg3 z賫5)蕓1eX墋嗵崌別歞如B蕔僚 質q1q'噺┕)RKFF,隅#卿匨d咤膺钬沧型~缫澔;縞藗'z4繐陦臆R!U餌继yF鏜鏜羪揙[C羪Sp摁C鏜螭却xC,镺r'笪チ鐎\灨4rA┼(4瓡}X灌诣埚I隶/朰靖4y旫.*帺+d縛N. 睔[趓' -endstream endobj 29 0 obj <>stream -{W救脫'l课歿B约3'q鶺矏閾5eO絟鯧灌' .寿櫻泭NE"Zv\告$V︺/or烜}7!I3T菵覘&.O2矁i髸G镠鷚*拁1(d"9)鮝碗D$奘籌* 怂3a潇諼$^ 譼嬗q皳颦>[?>罪栗裤o拱逫u-麠W猸嶅-狴d徆M1痴杴@zv92%梗晇X籡侈B5瀙禗[j籥薮篙嶅2﹊峼 ]7鐵2!6K鉗絾^鱰徊溌緈p躞XYN寴/^(;罖愆仛綆Q0P j煹 -j遟繐蔃威U匋5P城盽熸墋Z _舊&9T*X 礰OF,X 5鉦呹&[[螺l鄞徾?禡嫻~g濇凴炟Ч班Ie燊矬艆 "且栭饼?[粳雞 矏葞BZ擽S%觡/②_%a}⿵%uZ蕳俦p砑 攈 -譌[谄玮'席,0 閪火r.现癶>/粇螒D碟Q俸箦}蓳H7i甂,(硐傭$薻Pom庝#狢棉馍芤睽珈蓥眚肒'勰蓱圤[1齰sl }\槳3#s5蕆箅k麔渳J匟尞rs緵汈偎ck.%oa6霊鎻F7)4>搧o*'鸆緜頤薪駼饕3!9;l>rAA瓲2$缡8;=/砩z翂H鏫貛{裦.l蓕dK./8)羿糽7g籔臓縉襮L>sK褓|Mv颏邦檞>?t轇艇鬵佴0KH傊凒甭Yl?櫨惉駀_s8絽c樅>T>I櫓院果s侚/d孬o3矘染-e鰎r:询涼姊/賡N擾捝eoK濃䲢GЪW轚颩釕 g诬u莬?b卞O a犺: 颥鲖S#=毎|Yr5圇衮X7Ob/铈椴/蓍缼菌HrJ4賕\@}m鯷鲁s橓|蟒駯#泴 -=穒峼YMi嵶V娉昕|h礫l枔8監r"w矇膲}釄诚悤罆 菦雜(斢WG?wHe}抚鍝覩疟/i稯S茙O柲b}e产}z纫?r0}` =7篸g珯3j1P吞D紓zaY藠5HC4n㧐橫j?Ⅹ3璹v"FC*y霗p]4i螼$-壉胢枓酑m$2|hk跅r鸁U9E乻(2Oㄕ&K捘%橲l]s溳.+疕v慦湻瞨餐顮6倽桪Ye籑r8xA戙q8d.J6臿灧xt俗啱坭踈-皃6 K笆fA*-禮EQ妳绗I,鋎+岼ほ瓬膲朾^碕娻班v瀞%Ih)X98賀J 荹e囃n)P蹿%髣祶鹄^掟E摆2=砙D 2Xj誥Hv ╱+Y继.僷( !眼翄+/6<懛鶍#DyQ`7hQ蘱Vz皩釈V厯ピrX舂vE喜a峠q"!g~8崍`妧7I4>* -烣N’牶N&愴%1/捓цMh0}b蔜槰吧"啌x諴恉皦饦$吰讴=)6gl挰訾XE斢`豍犧1籦8玚Wv,;星$<掀i纇鞀C禐埮U1让3⑽1 -'a"閂A潏]9Ef0Q犐SH瞉ね燰46,H)楡$犰x,YL As-s偸&" It璺I臚/誕)M73J沶!胁OLf#3#囧#p紨"A1('驲奐焃w 俼@濊X屧V&BpV&墼.d4P圫@!g}榒篬掛轆峞媓旹q/*"核碊DI残攴 " 煅4hZ'D藬S 驵圓&鬖 $'旰~鳳7 :z恊蘕嬒K⒑&,#pO5$睢DS#檰=抝f簶遐铓 抦tM畈mtM悉惦憒]揑漏熊ek譇4儨]3IG2:諿循G騨tMO%盤蟙炇=憐"霊埽$=憓 -9K垦5蚚G 8害G2ptM汋槖x"nQxY來tN闕!S杁臚继髓哿I魨巋']3廀CodO${厜OD 爤*9H埿R2卖杆 -睏 〃2Go腍lWm @l1A辞超婱%MR@3hz3%5= 撧6&╥2M銱 +#0瓂:ic蔃+3螬drHrK篊`t崵dF dPG採J2[掛寙K9顳踕嬮%礆婬 Q&-J$既彨寗c;h懼熲孍誨莇進MF毽G诖灘崮D"桛8茗S[`t ,藲酑= 3S33賸蒙d炤 %掅鈻痨汑h3潮+鸐lo緛 IV;h"R&E僲~骊桼泣夿僧xl45鯢v侈惖薮k$魝A瑫a帝 -蹤y襖,衠!鷲貢y 纋J迀!2韲]搫6篹贖褫4$P>簤{汇p,訷抎頖7%a,洈b臋迲, 躭i(D渾墹c荥&冥膦忙辠w墟(Y|崣;崇袥Aj1宾o1瀅!鱝t鮜魤备lV粔8tm癲脷9+亇O_#i薌21N:/g鄕1澖;c .w$tIR螛  什7A閱z4嘉'揍e蜶覄㱮鸺@RT^淅UR鋓/揺i}礖q畜2;萒$轓{嵨嘺U澆)Sg勂孊匭,沝誯2鬽}▉腡le㈱ 0;覹力篐牜)艎]hR嬜eo1訞O -BM荢繑徶<簷,$鑘Z拝鯅綃譿.黹奾穐 0*&4娪wC^0e洡>"泿逮MQ蛖DrUxú5脹3碊$絮芁3B晗炎>b棈-X螿{/誔9媸楈鐳遥籗胶n鄣庹韘籔缓l郓褽紨&iu7ο壉yv蛘<玦髆LT>Si煲仐T6+53\/:嬈R,埉輎lhpy蘈eB滚X玼漬.姹楫環霊`顱 孺竟弶賳-L璩[Xksm8夙<;蚱侪 V 貕7嚂'M袀8矂X36菤v慩7帗厣"6勓m4诒葖鞻倭( 渽oe"觧G諈AJ饺矀暢s倆腉 瀰%l髓圵儊;;X喺.豩自煀V -蒑v葓頡l蘣芻'e漓69(P觊Yfx袹攄"屩S;*: 捄Ml9埅r畦氈 錤2 %t@{,'渶C -y!z 括#?幦@5諿=V'S濝5is逰3L劆 @葙 冻Zz將绮RwiV噸 IY>嬘)挩C踊X -gn髞 {)[/薔墒90淐Y墠%o傎璬R%9鈇E鈆 (2 !麮XA崃7v'昿bI -侻VR)2菧8g偅Gj^y溊慏渘960]C:9猸(榠-蝚硟8X扩鸁d韛懭dSIdg鹔-[共C博乫:規q檔I婭扷" -)襱5湤檦┻h834J9!P8H潜覣p*YE;兏em 輣eh4_D&F=/e m鋅h苗B疂s__睜 sC疨阏碼桎2緋]袸VR36碼<i<段#p2欙鋗:E:v褖}秜孉?始啽M肧藈噉1"c艬 輇,iK弃剃籠 c醁+访W_|潾9潾9潤訔c钦6 g堦Q訹L特"F紗<嵖菙g羽閞壉;34伙"茪汭鉟微蠜騦w -眇桶F幻W_浧布茤计Ф赃c犬b粖韣3`'Ρk戓U\x泭侖缲r偈;[ybg+/3*Z曐x6跓c蓚b諯N靗蓧Y/筁2沿叁r殈U_ 瑶:7y:7.#2%曐$曶眅A漳u稓肝VSfT$MW&C鹲,Y8蠅匐漴遡A|8伔q s9x&;D&Qc靝谝M哤微6嬖H厴Rh訔jJ藉tf;jcj5vT硒珶=怪m:bUQ╒ L=Tb7,竧薓7:*{w=虋縈e綨0f6t賈皍~&)玤wul梕8騒煋QO柅琷絆鷆捝劌.b墔-祲痞d8#3}踄.pV;=X 〢栬g蔙 潌莢e徽.pxKU"炚謕曕<{5斀绀B挐E佖脲j~咰形1w2O7痟\tm - U*3僤鮉 苅gl ')嵝=Uu:7}滍PQw4 脤礦浹 -1c6喧/崸m\zkm躗)紁傊樸晘賜粗/嵽u鰐降6遏弊v}漉GN烊E@j0O"X`:0Q憀|_荸'E殯bt州芍 zq枃[乖酼禮Jx}辺醐=,*V湟`祉.資?;"jhw鑰Rv铅QR]' `1Э鳛側t爄琞聦摁'戬阋,蓭_7:襮訟:魚塾N=: E驰鞀渕(R5B魬:RS*$E6`艎v-鰞0嵦櫑5DSF)祂蛵1厧訪)n0築K^滳QⅦ砉奅;0襋鸦誵晬9Ha譃F貴n虫8Yp恖d,5薐{'譮S贘护#坓镏*}Z鞀!韈o -x签:2眷蝗6}还W谻莮靀%蝍糫l猘rm'差+-芴DKe6懍#鲅v侼攻棉RZ2mrD睶/ぉ6摵撵HM4旗li 豸鯾c姥|Ob 磓敗瞄秭K12 嫻輇 窑縄Ldv;S檎璈3] ≠A+澣汌"$ uPG┲a缛z媍F滯q鹳甒鲦灑い&8&l笿肢菸$柮茈内1謮?vg闲1Yy*f簕"]踏鵶O塞倸廢%簂釸R3柀UY棜溛<賜O}魠 矔匮?K!鲩洅哑h/Q3慂?揼鏔%dClT/%揌+V疗盨8囦x╋j(鍭蠥e)蝖. $Zy戙戀囧蒫)2q轛{U厄俔幸鸋塘I誡苔0?(噑諁莕邀)觮拼GLqk廾鰔決/S9K睓r舊27&蠋镴抙g?(%n~'B暐,4z胖羄P擋:傏祦皦疭鳔:+c锃櫉dDjt烔竿8蚈収堗拿.YP57;[瓋蔙 蕻&X,诵R晇R闚咺c -&W綉与0螿g姐矌蟁G纍3=8 `tG疂K=箭uzИt者僦.鯔2 3R 奡僵WVIT3棑卤敓v觸+v\焎o/v笒!ズh讃暄ポ焲>止-^5de鉺J_酹M婫k&掞"釼欹NT皱$&CI撘 0ひ乞溞 YO礢XU-^$3<7V -;^|聖&%媾囄d銀QNU~栐4!MU敦梯'稏mjS!TF)KA歃: a&X%嬩a@x/m攊akF7?5$蘴_涣枬餎嫓賿Ц Z緑l芁既}v鵙勩慩崥铩4扡啌S瞭筶脯冫X鳾uV4叕g钒K枏^)術7 籊6[4讈0v∵幩詗蜘7=恤`訍M阸2会 EE8#-+黆q)N較霵煭)S苦G^蚘6Q-v℉;TD屵LM]焩=w訟>丑.*祓ボ閇鱘wm{]瞴ngo輜鱘;I巒f1俴o2はd1浭詔槟/吱o鷎谭 1H鸁詝┢痟疥c乮`:患 溰E:*"$虳<9セ秱)d筌螏:u鱘,3s0 -#<藁G碓搕-ㄕ贃壝y淓龖c扢J? 湒娴]w輞\氯懎钎X颲Lc陦 觤弘z挫EIN;墲奞'鍪 T秤v"狈幹镀<W崻c>緱綁翑齅]黆碋峾`+3霖k(裃杍 fj[bp踟;瀟}刬4翣寢溭Y(鯍し霣{到C碳w8$猊L炋:V孍磼$旐"缋 瀅牄x y5Y表癊hcGQ晌鄉2';剉 飍?鳰 泩牢N覝D齥gG砣$獹酔;八鈏"|^+;d2v〣*'P喣+欐v2脁a蓨v2n9#{"N!襫飞m1v42&H难m2荢,Z(q倣╤w閘&*l槣#4{A2\S/闕醕FH2崠,|2灲vjS袕5zr奩錼g#计73D*,盛駓懞"dR侰圎nT5%qa籀Dc戱曖f凋^ 崋鴎L娞彶m週@坑D颌鶭R湀蜛tq@陯昕 -哲lLY&匸裸I庒C}訂鶡N?縲夰綋~/黕脒籟_?笯搇鈰)5 ]W撞藬諩嬟,惇槭晼)狰T筪K{Y;->?抣(僈c薛&因Lq騣JM菄﹤弴绊^欔2そ.朷"痥[Ub@鍆偖F袔跉獫緁倸党T櫋i=垣輙T贚P搸QjЦ&誱t 7栁)W鯈!qBU8:;慗滰53+Entu酲w許倽+qFMjR盝JZ[UpEER都!4屆5宄#声懞k曰叐deJ芼e砉b膽圤Qr 褝M"鋓橧Dn斒D%I躏l誜昑F肴抯H沀P駪綻0 -扚賂9%"衫~9h癓驕(殯騐A}3E镙`c:觻紩C静v@廖N氹#{!a絨疲琇臨E*赵累柁a(虳3軳6RW郗p8墿v嶍j8P菼!氐鋐媪撔Td#}斸}═S臞側.樅7C屟┭祔蘸7ν厃术釟g蹳蔴欱\胼 0f蚑猜{菋,繕墫f爦,4姃`"&谟)Y%鰵`1%-踑-抴偬渀4`&J歚 U虅4苆Δ亽6叾纸`P4Jb3fJ殎#O漢蝑:膙k -k*崚< 跰 岇滌d3臓e -h"hS絑E孮"}糹扝G+% 評Id$Q{獣榀:Tc:屷2M蒁(K湤$迖W&J忮@!嵓p偯蠢 :%M%觻6VL颺j&J5依I嚗癡6_隩霡2碓挔软坔14%闑2訉T=N斢イH陸嵎аP`)ZM$D艬E4I 3@'` -枹崬u7x.:,叚诔鵝'^*┠s愄`酇裉0啞$U -';覉gWO檌Go7o2誂z瑪曩 衖梻gCM3i"潄K岐vl局I讈F赹桐玳踏3椱潘憭霩逷鸷(τ题d咋嵁M漹)X妚fP4z謎`<藜h鮝殘g郻44罢z6]肽隌2銋a"锇ч -─M揱陼b%吐慠鮧称 -c獫︳完"砿e{毝锐嘿瑄峎嗧&艦L2k姪v:尀S鲽 T覉Й9f忾0E]2垹)Zf忾 -櫃x黑f从;`&3SQ曰6垹?週殛潐j:HGNW坱靧ドD5]2M卓t惍熼疥&罫 啑瞢幏㤘掉釞ēc爟 さ^M:第%]3QK閤9實B臶讚L砸)眛匥 -欈﹡m"Jbh榻阧k5袹湁V帞╣ e璖拥NTIW郘匆A:Z菏c珿M-2袹诪L囊5,絡&b盠 7?丶滇櫒`匆懼{M]朐jO棽钕-损稭媩04o┎餯x: 7ま?0该.(┯裏怎忼(齙齕酳 `鯴誺懝c渙F檣$藊藰趆6j芞X(8袕閈%Xm帀W. -j2淐 `md7'&偉㎜p微CB`;:温騫p枖愭宱6?媍G2 巎彉z 轁d2U膁侲0弥1N4:@$0pI兜EM劏嵸雑=|t簚S烴哔筷┸.莣Bj▽n~$@爲俫:枮饚"md荇xbA淽A SbiI褨艱蚑鏧烁櫞癐+!ue~母u\i⒈)瘺嶀d,Z椢 Gлs= 膓瀐s謎哊-嶷y9u21璏!櫂丧 烗+OjM裬椀櫰7j园鋊~赙l荕娫[&X祵1跖簟 鰌 iE杚醖KF,K墺[-!豼W='妛Mt棦Ly;跘J,A躗,Z'"┑@秳晽mqH -蕠財*KS嶪M滚6迫l(茴嫒澌憍y]]?4c粚悞E 婌癐<%6囀wV噇䜣~9篋-┖腦$^w 曲肓:4釟辎Kえ弯厬赩 F龖u慉埰跉浢馳熐J|2喪(89赃V`$闪R庛8顯蚾N<$Tl'K扇噷h▕!)溍鹇嶿酘枣`$D燚sLI瞯垬}覿V,~獦[Z,堏祋$邢){LF襼哢覥摵艴跬憱眑^:韇檀X瑫9 Ikd!"楠i侘ku2帣 縞翿崌慿屩&a5昝嬄嵢仙 韵"R杵耿-= 茢范4G隠}L廼S/黜耎p*誂e-则w=蚋胞壭I抎IVl"蝥&d庁悫QοF疛蓘脺3嬢0oi蝖cS,单閕`y檢/v櫧R%谼墧吟dE%f>趍氖3GI.埡"A喥='ぇ宆A虢|熃7YN&{龥凢fb@1$4 $!F怳晪k诛褘^v/钼谳醵6 }躢AVe铸>砊後驱鴻w婝ヂ_*鼦 -_咉'M;@?C:tVB棬啧騒壱t%JH辺i'%瘍r>te憬FdT廯AC抬<+ ]3库lKK︳_肞琶f_c虔 阉娮x熵 -.8y #眱-íE&lZ?硖G政+3緿/i泣塪QE"WYt*幹呥鐑_(4聲+ 滱7逽t:MfHT怋(: -$亭辟A3|瑧4蚏8FC伣朼)抋9 [ /nb觸鷊剪/+葴&Я⒚+>W禃c緷猫6魡匜0莮峟:(4縊g 0Z陫+鋼_勬(PU吭蚠W萼鴏姣e鳦曏坥藐〣((:馝\"vK▋RiU锯繛婙_D/!"J$ 灪櫩喧娱衮 -7axK脞遖N魂/w鷷]BV\9鷁盯 3跗 d:e摨4柖t而3悵2眙垸T<縥s臲C嚜绢D铇溾鯼5%坳{0j潘毛R}G5倦湛O楇%駗,夒749眪5%a}"H<靇寅棿栔i泫 襏 ?鐜#Y^+9勪l{"@賳螽幒啠箭?=泬蚴澐W蚏酖$]聱䦷ぎ漺溔!屝3蝮酳馛豚<-|9痏諯I:M<硼,& 溙0 <婉 搩q竾釶愷E 芧2T!嶣揺94zZd4鄅殎92Z cNg8擪O嘶 -h蹺'屘@I&2i塼殽I|,蛁4鄠{]_y杩(奻(奅鞲駃鍘T灊嵝卬琝u睳=?3Q}滻S*崗禙W忉猬4w 癓 袛|蠚2蠶 啳嫶い薻窸f桴>糞趃X1p.脿嬝塊 p誽"皩 -%遬dLuG縓睧0G (碛0*s 氬a%錝j0`鳯S<*]*S蓖,C a嫪W衹厢珝As 軆咸U觎d鷵柍4纇$葎2C$Fs 弿c鈏u耰S2矢5螅酢-埓桬FE76仏撳I幬 %掳4F茩$Ep@ x叀m=癗FBя捰:缋磞拠醿搘X褝 沠Q 蘌Φ待bCu疅qLbR3`e襓t惣r 嚠leMr糪)期NR鄊kN繐`!3h茰* k:瑽綩s尀#Xy茢%y 浉 gl[鐯佁bbK榞tP < 珨#%I踧瀌艱I4甆 ;c渜毷纑 Ε?h滂V[`-0<蠱蜷-`塭`$,$ 謴諮H呌枒㏑ 1じP~:4Ix D7(<$)AsЯ巆x歜帆xv0P瞳 -S慬捲&4g潹\暼 gix朄U@ 槣< 汵穿gK淡&0y肕L O2揊.蕆de2钙,.\-M +窄P0GLi,榕 _蔾Xm$国>聉6欵 珸k聀9')貧'骔冖姖賯MUQ*g9&4 H0舯9F1,X勑 隁f萏1哿秾莇幯樇(RW蝋亐 -覓.Mi0R9P^`$帙>牴A)j詞x.g -/毩2%%浘 儰 烘[/q喡a9儬熳 6搎28Y6&#郾2#髼,縰笔聛滿вr=1i4w,9湟怈~(W#睆8-'逜m3Zhe-EWj,U i}`彦 堏4x0{tHE"﹥髬t嘋Sd>弖5!A扰胢h(洟礦p擅J#刟篱拋"A訾)羇JcVc膠!?j 诧B盜 -{ #c詮,瘬 bP@+埡,:h"A^腕鄺".V/' -贇t髼 脾542ln)潪i. dM敛鄷#` 9浏僋D6X<2x9|Q9 姥邃$-+蜢(m瑬I沛凘 -H腍, cy0餔d繃AU需H,鏏}傤cg衇L!墼属.N t膦鐽Y% 2樤AQt<彶秳F Hp$/h7檄r嘘(3h錮捯) -<嶵 萛Y艂FaX.6#婚(b";毭~C0匳:怲继OV黊鋬Yr铄aa偄表f%鞩抛錢!嗕滐dio戟A簮蹤^=摼]Q鸷轛顱 當>qw7$寕 Ei柃Qq劽K荼剫鄚3窏货骏托維赛嗂嬊eE恩宥驔鋤.酽">z鳇手5引篴刡襥9<-[' rX漐忙 tZ!枤$ab継卡6 "{ -qA誁`d芺_M豀X\q -,%t爭: -PG:C茭 J鸒u檻k"牌牿72."惾(@7,HP奆k}7 腲5m!e\<枍(l〩 Ip0D]伬1?B霷,叄4 朆 1?撻怇"礘 "yrN6嚂(gw碬Z宭e黎萈歞m郁E -5<耞]_丮圖>虦`9珚*<廈 鬲嚨a懕1蒶!gc熬Q\孍J/峜饺# -叇硬 軡As鄔睎?晳{"伩z珼fL&退,8 H婿<+/鐹皰X}J7glE3D聠毅驌OqD鸝 "u鴎敺 挢韺cI湲邐m凈M7v唋p摤紏3堨諓5&瓯0エ{Z 鮌鳑噕鑨 赗!諃43 f繮枌諕鏼.e壠q谗壄{捺~睭2纋#饌2萛(哻q巻超s4sc滵乮E抙uC5厜癿i0A2i銛P -E酷% -ch煝濕C+铕)+.<% -K^棞4%脌m*峐烝陼C o谞藘nA{gr虩窛瞾y9<8 -槇聨G巚絇V缫.k绦%J#8氇 (F蓼B驒D,D匛[w`02卻9b鉷蕧陥舍w<t倍2栿捑/.vIt7澷抔捖紥阕L'VOmX尺<絝糋站-雵鱜搫闽x胡邜0灹_遻#$H捫隗亐腖h珡縆⑿)巁_咔x鉠y:%促)狹q -嶘!贠缏H际硭"慾騼0湆kb鏢袣妰蝄令FJi>綱\惥臋欧粝慧泹錸$ 唆b}8戰蹏'#鸁C桷w岱堡約蛕脼Q85! -絋茲f@撣)攤伨R*w'陀qWty挤p0 a6搝睐L+>蚌/韋EP :熃AWGJ+5鵞}岨烃1暻釢阳7A氼姚宮s1z0ui坖嚁v蔴︽yT祘.L )@闀8;8 .c篪焍玻袢m瑕茲矩 4I甸*塨yD愞吨=$qF愓/B!鸞p眬邺9统3熚泼?侙鸆I4;衑廐噦 N -竟B蛊黦彬酏o H蜷@笷?b鞩枖X潺k{焷XQk鉪汅澺邇戸焏F ').幸#恤'$慉Y?i2漓擘摝蘌i槬V夺:xS|煗I=餿M瑶覠剖棱骿<:b U(9 衺妐 艡鹝兩,=樛D Ds喼螂彈鈚<榳z(6=豳~X駩$椎` XU笊zm)嶥i齖!r煑 #媷欟q~)LQU罪玼獀ふ+M榐9浵&髾逰な窷l -桂!疅'髩晻x湟o:娫璚唤櫺 z3U紥潶5jea魶0疥NWyi 奭男7R荴柶摙$ -r)YelZ}俞(挖cA阇3觸o馷%译|歅JI锨窖 W鴕>%擆严5悯v'jY+P -叝:i# 89/^j}\妰著R.忔|<怼扦蛁 *e表 磃H廀#泻Oz垄%良 ~i偄V宊r卍汵訖?侩遭錄 汑) 搃b佸编$穵(,0敡毩U屰锣R溙S]<氬Rk<1%竺Ks,K硽杷 -xy(iR 晇oJ鮪}踾H8矑 j9&爇醸 T嶛祩~+胩 優j]癃NzI?4廳"tm;潓g}讒筚X覼乹俣k Hv4`-t堥ua(豫脿P崹鯹晌糥叒瞿zt0a."畕奉徠濥4鼑46*gU汼疻2~2願漲腼"宖絬XHaD冥乒(M'"V緐厘險G鵤mbf@+ゑ/5fdaC榿1佀+S#G坏m巃碒>橺[碢 伓抲-莺)炪]歛丳73脪赤pl玞J濵剮n1琯銡p綒U驳N濡' 4薒u姓(}贌蘤&照y籆胹}&i宖bj税i瀜羮m0K鮖}茇皑緈,*nh^T -U陎p晀绩簛鬶k胺m傁p4菲璵Y 枢(-i譤QK冸@1250$$ap斛琶趞0P}錞x獟凙+.z颾. ?g)&+a惍 XP$9窺NM|嫨5 鯸愪3彠鐣:该靤)6淡踒鱘亏獗蟸Qо 施僳蟐缬終縹5熰1ǘ尺Di"閨l68渃6鑣陙迾鄋凲o Kd灢i-鈸)0懠馭k轈茔.濱$?em鄨L2 KV>@碴潃ikDWp岈w!癁巼^PW亃q\8>膱哯B\_鱾G]耧Wbg<.鳵'M羌6#^肓巜'鈃幋8犦M嘄d閹覃{RP環做CA闛m鞩囜樆烵E7諸訄ぎ4M鞠G弾;盲蔍濁?鷝K麗孱迾獉旵.毳酾0櫳"鰄 "V昻i-阞@窉lC抯E _u絈1札影,p熉h4秺v鋷g煝j ;$i堼;亗闵鸳(t敗柳s="},P凼v'搕舏颿$GG&且G蚍 >=9m"%{C囫t唂甈ITe.q鎖唓{汛E畛臉鏯3t鬶 `6ol樂A啔贠撚O+J⒆駻倭v#坚饡缫a鞄.朐D 巣羷f餇2》 僐 u輒厤浲帓趖j搂趤m嵦r%n 牴N.KL=胕∞崿帞*磰玬%瀝[Gp}褃`~+>悞%澗讋篒犒板t6P贠&+吳 扟i-璍媔郳W偮Q诙 鵳頗 洀.=d貘/箒i窠7陁请`尞#陹聘(翯鬉7>: -P拜k偍〢;12ZT厬鮑 @<, 躡-h2@3汑$嬭疙擺o>Ve紜6噞lM轌充|]E捝 2楔 I愵T汁&嬙M鱟f5歳XHt瓱堨 A -畨,胷懳JO^ a 9襺苈T讹魵( 莐姾祧#`筭r渧&儙铺I翀偁[3锽?ぉ.黿+禨7(僸赇蠓K肣蔨铸x秶伿O靳K杣"v廍sz8I>lL袢S!J!w青8-\X9Zd柧x'宼s斄罩镂絒爙4紞0l,:禃l>.v闈殈貨zr糌蜜%47欟4w鹛;c葍炡菫^T洯鲋|)2d0PwW誩uvT 缹Rj茷}剺騙殜h╚5ELi[[M X^0増^Q'o湒鏕泠!2#芔}35獍bA:硢鲗:箟糋熀懀t%s斘 鸟2枙(啷) -h迴Fh/篽f"&8〔Q襯轘172恙O利 Q甮脝:f宵<ɡ3D崫s5Fc=潞*r嗄繱怗3-Y妥s蛁 %'琄畛@6骢I晍猔(^觢ED鼆焼B≥+v侗 葭髏%u秩煺刴i縯鮺操疊锦{!{V槺髄殪魇汛䥇B懛J(葺吢G铋wtC>lN炎"1[楌g儻 -b]蓈5` 7线芲玱鵲鬷'嚲詆[B_涾k∨盋趱 u徯~稤c+):Y羲V~漿&熣v嬝ㄥ9]J覩舤{+E/庑&G茒[崸蕒=]勢璪|"餖)n6*C髋慊A併)簲9毨_孿劸雡}瑶凕#+L#i茼F鑩鼾起嵘v竤 -輡锩bC齫+ O署阗D`綺&勢栕萑 --枍c0R杯闀sB%=A蹁V*%*寗犃镳銔覀 &J3#馛嬒n!Yp^┙)lz2ī骣P]j燸us襡 副u8\澪朴蹰x> _(qjB 例槂Z鵫]:熃攥hE抰琫Q岌r(`&庄戯譋 K1憝Oz鈎*6鼏播諩旈,瓔 82倝FbG-皫 pHX&F#0俷o*屽*8富>F}FHa7Fс鮳xs>霱嘽-(ヰ矈訋詻8藐訞貎O偛w崌rF絣{)蜪+椤*繡練 #XOJ腗[0檟M勜魩 -﹎[Roh櫃O%縨%rx(ay=蚉t鬱買踱je腀((,L d*x 苔H\$茾狾盱 〤9A)崌be慭簁蹪ttc5I5痹7缑鯤 4器d\=#'d%鋢聹!侵,t'!飃\地秗29h渎昢 V+葌⊕2柴I{1Qo遗L 5 -癋#譡臱智"K洖鄛}%2/汵輄[P(苅W獮|`36*f<_F#^0YR艓4n 肠严瘐O^<暸P鵯鳸墍绞]5徳~O鎯Y蠾磩n}]觷z`Τ$7镆非|攙C⒐8=踝9l茦)彡骤閅KE)㈧H愷(3vrM惧赘=飘自j<纷箱G起済98踶屽n鱳鲃圾絪(31 -誃耩n'$躸Jmf 柞 s恗>頌嚡U⿹601瓅U>饽Va%-溻搃azL靑捲VG骋G恽Y1釻狗燂T捝琭驎趘ㄏ*_%!/峭)P蚂3栫6绲 -硊[燹樖;q詖靘嬒俭7廜臯9y肇.鸤弱k蠀49孶廑骦皋}0_7枙麋[4( 畈铳蟉鶕 My郓t孺w!w皗+w優朹>^起i缁r= 榀Ubs$釴栉L+隩;霦更杉铄娵鬘瑃驶椎8忔o6?:>鮞征妲 $R/醵薏綏i皚皼恇O骲骿M R; 穡骪(:幻佝蒦>眵x>5}R鐞岝长謊4恬"K輑瘻`懮擙p".P灻}s籔>蘭轛]xX9|6髚y溯t砊{鳑m脭騖t-#w薦凨(z觤潴鍵%%鋠j∝儎纏枇 70D{銗羅b鵝N鶖画隧笋隂uO眧*鸍G符菇钭 ^Mm男遈塙罖6刧}dx*U^1毫f;`瞰SlU綽曶择7个鮁鎩簒V.漌薤z邊镧)1鳝W\鳌鶭苙J蘛瘳V}-骶冈摞pV~彃命蟔v:吏征鸶x謱*戭睂2 楳眱醄濺濳 吔謑X:毻頁 讇 u1瞍愙p衁%嶹痕訹顮B詾 -4躘甐壠c媾篰fW] 檤>'4#獛汋怆夐&涭秸嘛巧"慿=P懎棞<3F根eF瑓w&戲'w侬茪蓺N鱟,l]D喈Ln3R琋熙e爊p軜:擗W駐苅Y2}钦['泑j搠澠嫑谡稆w`*EPu婺N>丑Z鋦癢T,_CG冴S儁u辦 -藯改 =I瞦荘+┓I呆5K冄透佞价>巆Z搄||J誺點耱齭^{)q辨":#曶"眤s譖%:@8~n训虑掲o6髖[嫁頛晚v姉A鷎惾a棣Fo0>"rx耀尻d .-燵 $隗jx鸙<枾垹3(^みb{囉w愡滿禗徟24S|+$4yy熊)笞庹寂鐿qc$余梐A阣w%32j%亇,lGqLv嬸纾DGJW蜃{龑9窽~媎务o尅i.?缨疔W儇e竅2u鶚W鮙〃 斦O/冓晾敮_ ~篢zS*PQ}喥LxX臽聯<瑯猚胈忷輮羟2W筀芄嶮}/m6菓軈 ~ O5寥@#谆tX3"湘窭豟v杻V痃鉧鱐}稷-?$鉌鞞_Hm$?%A0P P焝WYC訢.媯x鬠頦钳襘 〃.)剻"dX:!蒎e0Fu? 萄Cㄩ t臎g1* $犙滚蘨:{>骓葻&5頋浉薉櫰u*気惟i8Ll 鬣伭膋E幛uiA)tS炭 a`O鯔#鑤/贰#,0/(5R歅斪栖懱杢<<> 胔眜s<v8飻Q塪#P挖凵=*9珔⑸OBlg营愗&/躰^攞/瘏j#+8儭廖屋}Cn敁蹆嘮鵋Dd灭0颏k>揝Flnv脵蜱|黓2N*/G3骊Ej凅4$蚡b乜葹冏\猸6>MmD羀綑T;馰农劻$K韽6拜`d荧u4翔窺L揣魴a瓼淴g雕籏w 紪.煀奺優}X苾駐_槙x0揞 瀺蛢翐摻k摏纵橍 )5攗皋+队軶 浌UzW葐平4鋩)9莳壅x椄]i. -徰遗鲶 鬯腝濅Pe鬢0蹒广d屦0鎼诈瓋臦兛4[懦隿 {`S際帇j|P/ 笍G$l>倉ㄢYマ佅.r(襾O馳}惭蝑b{泰惯##涥筣 竫5(泥鯊o瞫ypF瓹脓mEE繵燅P蜱S( #~}UI9 ``紊鉘$奘;1J9/>h4Od幻仏耆銷s斣z醟/螿d禎鷬o觸T8/淪扄岍2赠齰疋絷陜/ZA髕囙9褱$蹰(闋璜峬]ヌZA>瘷焐啺G旖!/癓糶蕠單&墮2~= 殡嬸鳵天'-匋N鰥袪/HG峑4g@t輦飵@]]謏瘧'+]鹊_F呟嬝N3vm橓落n愓秞G馦錒娋9覯棝jqSo霖樷;尙8欀儠辧l bcp(Y頜{\=鯫趸l2@H佬顴敼势4Y/訿J朙嘚k扄骙聒烄蔾|诃t嚈窲傖 痖圝贡箥Q囼I9j +}6+卷 -绌 yIB#<蔀^/蹚0鼜P峄諸丕F} 児璵@F闋廽;跣3[6X~?b?OS@X'+>棝9*V_乌痐膘!袤﹙b腟 g.@蕈e鸃丱or;暶a锉霓%Qt譾癫冯蟶㎡v%#+橗T屦E%n:w4黷kg氇龊箂_y敃榄x( 洟陫y癖踩l旖o]}:@e@璣N(鱪詗h&椔椭ln2刾t癥,杯d卖l7D>謘J毷帕輷鱨o麾l絰盫筼D&Х肏北界胥搆+hr錙;{g&{釱僶儆徑^5>~ AF瞕駣=讎宠.j鳐 -mNA窚|wW/煐o,H0┛/a 砆閵@恷;翛(霅F=娓w#W4Y軥V騟3Ty縵梴[,7sV菛3%愚俑3蓽姬肉Y秡\+M宖2禱 %2s$ E{Zy霞オ鈒莻姨棿[噱,j!蛫耞燈崦 哏h'*婶嬚V懴\b{嘥/η苍P欺噩晪祌徙脖礝3﹡压I1鶸竔 -礬ef儒蛵B鯲('+磹G晩D駔-潾l檣烧'Cl兖鮂猁a颺[xu娾@ _;厸髦苄y;歐挆軩!{7X铕3瓡u`&馷!鐲R熲藳妌1b64^τJ糫"[圩@戺撺醂灥团迠鸽?旡{d 6\+UyoI顲+N熯赅ね梇鍈,%X z#倂堫j鬻4#鄃舙e荧秛髡#(Y╃稥;2卷% N專晹 -LL嗐旧鉝礪堼j揸鷵1=c % 軷`やN奧Gtd僫蹿檕訅29 憗~%韗7紫7i(>v7 禥萞/曘丬喍鵯x +xs&霻 {献`戲1倞w@?鬉 縊姉鲋$拝宦4r稱9>7K'楠f?觉:A域~鍍6r聩S徦G&E縦筞GMVizTO奓*>蛆Nl坷oTpF屼mW輖>賨I\恘酚蔙B艏4H惌幂謋V毅r撚楒荐疉$诳q譯廮姲i譃\;疎f{鉰噵哎揌H`tx硣/8╉Uo=T鏖sK' $衶[昳旣>隽凎#錨 t葸kg曠摭艽幇:h柝t@_? 軩錺P镜u駝#P徙R簒P`姞2|T囤nUY]L欯? c⒀艖n5橋娥p欍3侏瘀/B绲佛3厴猢rz'逖)澘眷5.轨輚f# <#餯岓s偻鏎㎏l5V=塭鸼q啷执谏7牜霛蒝婧(m+髊+霖(|)>;34Jsy1廖P润紌y埈櫣*PMcC齚镲忄\擯闄%*箭 膴$÷W{~2 縉勝ыEk)鴣F澫眲sto嫀顅,=&Y)9$h瞽i[瞌E墪蚺胆X}个_8狰搒抍,暇癖儧v奌臢眱>QL"Kk.碠}袣暲惊洍驉蜈S*蓕"酨靊⿸Pl涝袟$萏刡鵽h嚈襕 sp鰱'oGh8i賈ヒ;i轛CW暧J?櫄矋蘙_-墬呍#梷>?A淲y|愰d)2芄*?*涨窐@偭5bC迦u豳霳Z摺W夕撥臺粡8U -8鷝疞n'叚P崿椈%恺5T庡G6 -#!躑 #)'虜jr\硑-麏47mIO馛"臷厤(}擞tmvC綄;Dw嚹H8;031虯玳共,贼D舤何た骶鄈}W蘌煠鐡 g╱䥇$1Tc,絣6]姐3診(,M蒻 *櫐仙'f兪F潶;輱$\牪焌a骶 晧<舝試g湣~g _议#垣絔瓯xE馋t氼c偢z峫8C=n埀懓#詻菅 F|鮵裰v僙'n'9g∕zV软;C澿s:\骦邩笰=#n+蜳O蛘讞嬬g*婜鑰熛鷩甈款賜闟歺蜳O&fx朓訋觹=L孿踂睈 喳k②镻譸晥&+N÷s -P尺V鏅框 -60O洹)D1Tj7n樼妔鬟①"稬鶹u谰d:镬+Pg1薥CO耤D哯'盳3逝4轿预]B&怨杇ū狡'C= `鎀V>鬡秥l喓%IB{劆止JEq瑨馫泉圪(餲A蚱X|k蓨V^9蟀;/悻胗 rx泗TVk'ㄛs纷?AWv\灺:炷蕣#~壖)&_[!膇?mm0竤}薀f焅煢╄鍥4h)检壕^:甇洷弭TF4h熃锕緙堆i7\灕;嵻鮐~麧奔{腠}iH{'7仓恚珣胗汮/>捷n鶶;襫*賫鬃叨_-拽_丑I瞄⿰逮 U簆}}丿錩転:.鯴拽G摽驚趘g跃j= >E]烿'mi;G粤轹z1DmE.OQ輳螁鱨熨埖.J價2gy锦V峅欨ベG+葺遣戗n杏夆-譤YM瓡朴S鶕A- 梸98受#'矃$裲礟紃YFn威,-耬蒨灶⺻B疣 -a~揊躾4<傸 g遥]"79槐遱劳ToA祦r[[2a縁ㄘr伿m"?柩*s燙U\\`P+_+T笲E:般Uq:崎2W[ㄩ右jwggS噴} *m0  vZ}`歯滢*`x焤厞}'í@盍:] 喳g鞴n驭;T4趥d|:C蛥抆P浕NPU7 -.H咶舜碽F厪?))?t嘚尩樗|8蝽捽鼅┺濝禼?1鮝櫐垘L坃01葟!枰躺祖"gv -轌踸q蒓螺%姈烡r0#焛l}酇3跚 -1@&呧绔凼燌w 葨8&?a -XJ}姇m硐パ殕^  + -樅q蝚}}_w愗汫U&%s81阈坺$l庁m⑻[颽乴z岄u |C躆 t]$O=螷莮圙斸司访 wC笁癕R!P夳^mx!6扫* 慮{5482_1&%頙S覟d飬+}閄GH B_酾orG惐V厦J8hL2G:-k銒/娯バK占复XpE狾噿綐p#K!W鰘﹋H6屓8渪5.Q蠫:%\爍谪(菨'w酷=9= 髎}p:駱?轖"#A怅S%妾 蠐; - 豩 -`n飘SRfdJ茹3 B鉍#箍Ev瑳-fJ粡OHak繁 nb'腵S轭蟩l_ 崰q裙7逸 p -KSof屭P917鱝似a悸戚軗F7渗5Gc-m W廢趉UXU=俶'槨E:C鶩朼l0沋輖l鵽{6!萎S簎Ο i鎒壻棩[鱏z.RH7铵М毷bM:檼zc皅gスh獱媆GhixU粕/r穘栚:電2&C^G毖#梐漖* 8&场g褳 -Q&柗滇槚q错imYC4_躞嵋僵]],]譮徂 -苉`Z犓7{o'gA|婰骍Z%姨襪qLi糳髇gywy滗柹&嚕遘X腫t再T轭3' 址3{6V菫セ锃跑iyg讐h鹰傤7v\嘽从<敓j氌7轥蒂8H圗*?战@薍0AF墢⒗3艿蘌G阝堶 敨竃鷂噃k饁bE汝蟠4@觋 |襈:厠馑欃8=㈡9鈑Af7崴涕嗈属Sff?2唬瘦L -:Y怪屺乗靫髅#硙镡:{r5E筵]62N&嘗X:挘筜S剺7迭敩Z箄嬰9-'綺(H浃o7~袮婸p夗 靝 L! 硻]榌蚻 價4S\!笜偾V3 }睱s#哦7E D asp惋鷩{}琩yr进3旧^D~H頕>)D0稘'荲E〒@牥∟AfDX颉\o乘妭c嬫Sl'茗浌 嬫s覭h6殽氇~桩1) ~ B橕,椋顿梐DI鱤y0哺宦`俰@_鮳w叄碅&@蹑聟婬h{j拝縴Q( j眍zu翼"軱I K冯犚陀BH7X9桃yK7澮;ZB篿4頷y8m'閍粁)琺9燃h^~鲑吘齢宺榣%廘蛈UG-矔霑褏对撍Zle`鞒頭rO鮲 -/DH╬8e呢7甆w`3瘻9a蔧伉wd7黓{1Gn--慤a茴 4声衅却Go雇鵬搶Y#鼥j;)GX5 毪-Nap齲雑;)G熑-阭Q脒井O8.艾~D+绛5訯P脒S帠二q/恃)畚#弔 彖.l灳覐奘疢倦寏[8丈y0a x椹鑅r礩餷uA亼楊7傒牱E撋q5Q>"腳%WNw谂鮰檂A搧蘟6)慐1a0鸿|骖%lj獪L-噕s悒襗5PN峉=-賟(('輜紮14詾*u咑~\譮<~鑽挹;n$H;碷.萁滢\佝迴坋嬡殥&7;,c -B茶t茥棠簜顺'#G荂Y\7%FK5(/▊暻溝粬蟜鍇薜|蘆戍糼l?,珞[C'垃/鎅帅趄鍇薜|kr殁蝈|NP鮖>誟[簻匣杘M)]\簻匣杘M/鯷疁匣栂5碶9焪-焍蠑鞶塼綶砽;9荈兿;僃曅亞鍡+u弟Mi 皒道⿰CUn恶c舕/熯Na怹U&侳%nQ:げ矸脕磕1yz蹑濆e煛[艎_]?C<S蕒Lk道凹]>|竺吥帓 歜簭蟎瀣,拍;莒k6z移b峰肹 C^¦:弌賋瘘鞲,"慺孵歚 缻+籹w籑蹈靖yu"欹碢,Hi蓠$笑君2獋 -℃|蟺蝢涋枹W7 -l瑏睵^辺@沞#疅瀀"*痤礵亵ZΩ1防桢歏/聐袀遙炊o)棋^#鏭刢 6M5,8寊鷇辷橹蚎O菉5卛莎&G硎铞觏g5玁1袥k曃庥䲣H螳豗 i緟 !蛂`胋結jwJw =塲M/硫, f孚B臢EK:埯旑 方5瑁飣钌&鮂綈柘洤琻X7Jbsn鴥崰1rk朊,+见p昀!-羮馆擞|J霈玠 F1_"ǎ嫣iㄒ.鹋垾幚定簕翞嬀s砱`J:化節gcv<,天訴B,X_砋z-L髭,_忝85j▍bA頴Y惩U賗嘚集廔鏇牸u橑)N6J;\0銺翓产>憭熥瑭c抑苉X"1(T -敱镍F誦e庌$硌涐76J;Z>z&驏庞s6良 -z+涇 窖B.鏷 t鯦Y/z(X鴈7r.茄|榧$T -歉"F 脥{羝:葰讐 -H粿7貝^砊zy柶3ら冸卅e謐媁HN蠉p髓3榎6鞐Adr迥1/B=皋v廍-c摿x渱改3A譧r鴸-05顕i'9匨 讠蜗+n邜E岿;hk晊庌谳摘+髠癄2/ -[櫑讀槉髜\汜R櫡p2煜*箪.褗+笾雰繲6惑j-砋x┑蜱誃j禰蔆砭Uy↗卋僰昁蒒筡J&猺┠a疲.zt/K_d蠉Df綛o痵vb 6f?[剐丨钗疀r厞H犞*鹠燉N7╫P雺寵=璄a儇T僯-籧>涄:磵癢睙4#崡託∑r{C穊?ns鬀?筣△鑅Hz麔[-W;M癯隥'z軸xq祕鶻w硼謭辿u咖瘙露蠢 -|麵!鱨纕{k>iμS3X蝗管NQ叮lL\琎瘶砄~q賤櫸w扑旚c/`q坑脎2&繉.応>j瞋g蠒9隲ia烻W柾釻9U豕W赴oI- 喆 麥~4下>И5螶9伽k蜺咚9U踬9m定9P+,靤阘蛕乳騾}Nk矸彬兟>*节襖Aa煣镩姂 鑨/黖及蟟J贲珝e|Ds鼗:\焯)穫>%陕侠誛哳偶&莚辐49柦臤GU #猣陛da`OWTUf局(6鬭;{-燇韢 W铢菡k搆a k苿佛V*飯℡馗篖溲遭2裑檳蠉瘊e哂稔垮婄鷻C<浝龊咤(囅?c斆/[4鷩俾輲-允;\ 渎a鸾飃鮎抣黧 捝*舞 9巵j<帡>撥胺69恞;过圙雒做櫷ew銡% -. 0咀9g,V囮輷HRC亓苪X以x圮禆4`-y)? z0@}J<悥O)"¬衃犎|T+*`箇&5杺)腬 -N芩拓vH*䦛gG 并S/k?窂声怐涜 X韠e厦遃x!阭彡3$ro羏TfT=軴漷v6絁(頩賌]凑笟氡 擯噩N訹3$ TB-瀃7 踋5钫 馆hcXz馡 扪J1;Z魡o軕鸘c嫢臹;m/PE崂1~紂棍o瞳]殥&9fE)铟-f?6扆昕睉磙尜,z餆籞S[~^1汦.氤蹑u爾.l倽塍脅謧邘J皛~獤A=}2?俕鏖;芥u;6鄚辂錛便夞戎:2簆GK*2 w鋇啡雜U 涡-傤籠鯞*Y騝6否c6斐ft铣AE|铧竊!.鰗窆.玩抺T9\5噠懺訹狉y突诘*聻 -ヾ厉約躞]|O!*愂9黳玳/n1&U韎6颳淞丗% 旃t輒{闿]规x娼We趶N誶^淃誡唝彿r絯[6愆餮Z(G S阯潚!尰Qe麢??)x9禬莪.B嬔錆&B祑嶟V朘凼tU9圿钓莖1>障:没椱蚾TdE#聠槼蛏Txz!潑螃7麋迫桖j簂蕙2/釾竼OT芖觘I鉻-尊ㄜyv|翽嶆牴qB籆璷>\籅=l'?,5r馗U"5r绗{e辴椷裲X-棏鹆#嶤卉鐈 熰^匟詭súP.櫽蕸[!猥扎祣冰` tYKMV^U埱7ú勚 -5笠n¨q頁R:忣担藙Y馗5%蔻賐.c亳+N橎=銗2㈨8(硬>响5恪 Z6b轖孚Y -靮譝賯)铛G.Y[k诘n/=+/r"静WΗ応>邫&]e*7.}Pu鍂aE痱概<晷l櫊k烛╦0犀!\溉甤抴<J*t3賗飤D息|3鯤S哻嗣5;0蝲T梉k鶨h+4狊C荕桥"/坡湊v燄I 畤&z=b+灦扖铼6褣/i9r隱捀扉候V勴然z5鲶,1綑SQ6k厷k飩娄禞OZōWT鹓86躯D&嗨汔 %?;蘥幚0叨寗~Z6R筑k:;鱟漝a狵鬕\衒s貤(伿艩莗便;,瘶朝﹏6狕"锖D龇|^楄w霃a 緌菞㏄姁=詻薓袐訔覧B喖蜤{砲%戞[M<2灕}t5'梺侏樛浥 $鮴阰)I Z廻g蠀J冎#wP穴=PN複o-PIb衵D=HIb衵D嘴嘸%堿+郊J螭\Q訾軰 驁祗Z觳BU铛.Y『_V,t_△Z.}Y尔C/+t杋+楷袛魿:pY%l鱃]VhP鋏咑帖?洳B瘄4,蚊民;*⿰握\xh&U雖?硕s葛;T芥qBz姮5U渏.<\AT 儨j祩 給;詢)亰#z9艢┺sUe钝] z 滇8辷hs<~z後蕓~r帷3Yǚ$,~帷麂茱杪C遆鏹.<艟韕蚿%臨L哴雎C8冶z讛m诽厙辧lq~帷锋s队~p帷C鷵岫C弯鴔1緍醓=\x8韟 碘H芹u0 t磝U=橋 {裉鑊牐爀鵮诀拣衶?~X曷Co_N皖&柦鹦40踡噕忇z矬2飾火匈6膌y臄梍饴CK釛za~4^xX-w帷練 ?4噠 姬p鲉:#恙拣秀夿蘪.&'残K^xㄗw╚厙NBA.^Jz 奖夗碪\x!捅匋釁?穕吼谢~S摁Z羺囖E害嘉e.<糁茞狤]l/]qv韟,采?m膺#罗jレ:JU蒱袰^壛玈L9V貏勪XG :9c犽凿6DM?C爁嶣鼻-"u诅&í+磚?L酫(誽0呆yT3籽pb-}棃魄iq髙^釨OB檭疱挺;'g邨靪g揕'}R籏'郜3oニA麝劵齦墽祺MX|吆-F樖譌腧笩漕柒Ax酏oKw==剌⒚u纋?F鏌洀跳I题跖ウ终M({)劏忥沊庌-狄q墾絯巿:穝)Io櫚4MN7_个攎?瀔E壄貇*q洡洐 4+%M熎{桤MgqMx{妥L眘1A闣 ]9#罚臖 # 虵蘺#I鬡O譵疅aaW<呒yh宸FRC1笸A7訣淡Gj璲h0-p2挕b&赌.黺>6G3'6偵潡 舺z獉ar nyn;<↗/贄役壴<攪徟鴦(2祓瑦氬巣{輧鱖f^-/>竮[仹袹䓖ky󆗾岅劽盝|{^ 7申K6W )瑶ㄚgU'ㄗF7N抯[(A"佫Mk嶜袅鮂玣墟.巁`%2 8泤1|推餡P讞唣祼惪>O8﨑o錼o底茹1颃R(5C岦85娗贩螪7*闾gQLq8nN3騾羹$I3>% ^B+H'e i@L紧-缳哀Q阆揍囤4n|鹆tI|#儇*}d#QQR>+U喀性 QF d -1沭磷脛 -蟥"∥汭玎米K&酧}綋Z@竫"[蓤$R鲊)P锵 ]J娱=%騘jgz3m餒+-qo6Uo8Q杭LK栾毿橙,^镬綍?I盪"綈徰即T譙Wk呆骟いL捷蚤E -N岱KL趒+壢 _剭L馱Q鵖閬n 蛃O=蟬國綍螤5Ao燵~`襫訧X4>5抿'a瘬@_牬迈侜鄡︰⿹4替佌fVl7x=$*)!窊韃譺U嫠RB,g](~g莟z仗a犖S橅a渑t?>h;2G= 兪碪1陪;?\1∫;巾,淌縧窜浐浩&|5#華]蟰B醿a*(噎P2碪I焽b澞E(= %R粡HgC裣辌(m∵n衞昉魗S耟4E從JjG枻瞷jB欗4*罝庡'鈁B憻稶A杧矂>"Q -俀暷c D鐍\%丗[L餥9 ;9^ 詽R稏rrTe }H罔{亂&岒鈸y嬬j懗7E︾S>FJ8墔"戝"X嘘屧H鸈Vz2w作 +框HB起颉E.戸$奾&0&鳃$,諷4蕂(g"蒞4tL ⅸo睓3槪%x@眄戫鎍.灋灒錘Pot -)戥z?骂a娦毮┓蹵苫 殟{Q4wDb涐5袵 M}袔毟M]&g趽帯cT氂瞢鹏M瞥w9Iz3L` ю'汫>9绐玙-#随{l音\蹲w乇駹F垢痌蜳%躂c馸找GuP-l*湽g侗?蓓QE掱荙KT 唛FAl室禽輞Q耄6櫃鮼"逿燊粑# :G\%怯鯫R鴊帏$x)OSU渭蜭懿公躪N}\樜%蒷璺#)竵 O趞0坍n孏 稱A倒)罩枏Ay啞2u脲晔掆禉詯z珅垯>┶kH=yD冸Sz)H+E巆赆+嶇淦5*V╔鞙忰SYL袮なc -*+ OF<4RPUk瀩竌3钂Υ'NZ `< 枬稫L -:yc舚?6烃I9&w 錣印{o攣異揀 2B傽R>巈I婮茤漈撉揨娰Q+e昳s岄+75c5胋S姣剈6瑈0琘遈謵e敉⒒S樷悎a稝蔩鰆瓋,:w*$ 畲Q>幘怟鉯l9)鎼┓罡騊隒/t昝7x9 =颲舫9Q'秒詻oe茾槴干兓6礅:桓:,喲baJ悐*Q)S嘜Q靦T#n娥0E-糀换s緊2L~搝8餁|臧R!G涒)-w欼跷 -8$┓鱼C湢犈1貸鐚R擔 =Z繵浮EX}輮+O6T馝[銅颚緿)^i"矔&峽艐a元藣C擳!壝;(-瑀﹣4'\煺鱍僝錔8h﹦鐓颷 奁u9墉筧E魄 ;.8啲MiU礽QS4瘶羇2[Qb&w齽}rJ炣鸐碕6 -峉\((-Fㄈ鉵8:息磔P過iOz&*h蟞讝 -R锺紋D&_m蓉獭8幇O堼kB漌慔躅葄s鉔!@|121>筯>寜R夌伞bc"Y/_f蒄rlD)犭幦霐`軫^鄞 蕹_E2Q嫌Q.Fw獲钵<,騨 4鲿;堉晌胏荭b豓 1g猁得雄軵F驁BC:]憅誉1d2絒Ci izZ'轤塩9扒1鱲ポY涓;琊B,颚紨韇k 娃聺/鞣_说I*o鑑嫖渁捸宀%Y%=ャG躗~b5赤隵]輟惨冾f襙窄煰赪譶鼩賐虾cR苡]9lN襶惪?!值I>n )s婺跡DH34外n;y9nO穉-DZ]_飪-w?蹀熗7o.妒畡x瘸W灔諗XIur禱﨎撦Om搈~c眘仧鳥崎钭':x鵸蛍桁^卢oVE|(LT76o>頑~瘴!淝c{gV 苯_yl锾#3啮:v尊鍮忮父V1Fe簙D筗ビ?毣织. Y<谕[[趟罪T錎i+瀆k踅質yl褰%朻6?"战/荜冱穀坼uX頤+d^吒覿<顄沔]`:=Y=絴{ )璿1h髉茣輫钱漣_雩:D5瀌痫>\㘚CN峸 Y!万询鏞?:.>蚩]/禢稓d耖#,=y6嗕^嵙j圾m雧眶?J廇2煺萟崡郢Oo6.擮篮#埤繇偎V韁[躕飤瞣j爊Xz壠{谵o6'箕a .埘o骰羅->~巯瑭e觵un氙×宠岣歐Y馔7Y⺳黻7<_2d&g蟷板;鲰鎣薽潆竲浠x吖gu娙縗偟/\柞鲝椙涤钩蝠抨?骄|狍6.暩稆 幬谫Z詾P鯋_嬣暯t腑P鯻屴6琵螰飱袛j舢勵Z6?z黪畅*-腡艆妍>l镛賫麈菸B辺Z緗訕G;[烿w贩ns镪ё>n镬-淽X军`彐蚑_輣齣k{酟g}腁'.u+槊} ^国gs崳/l\zr懃3o鴫9篥/2渵=;F1錱G呜GN搌z唦}寅 ]6~>矚蛨+貮8掞飛C芜/ g抇d輱 尉O犰驡巑沖in枳諂煆馜嚎摟打-_=乎碲蕥膑囘V秪*)J棖縩S斘=]酃x飶熺+賾M~灵t鱅s鷠炀鋏 n r>漭鯽猪喜q'惠祑6潸^罚肾韣2'嬧*5m<瀓髷6~葫轨61槭鉭豁{ruy馗?齇l瀇yC匙災齴毞瓭~=<茨^艫Y妤(褞:%帪@塭咎询鱊I厫璠3漨餾<踚脂馅}z筎-w雠/7塺骱q_遻T匹j鐝朶$ -霋晼黂K磭6v駰K琊$8餪:&a揮急z;㧟C轠0钐z镱羡譥 毳雲臁鐔/q悧?:k廪 -┮?杮蛡敏缵鍁鼔~r肙阙箯亴乶弱讌鸒楙g烿肙F}-p8獰:nd\}sg2挄逻粪F藀0绺鱾漅铠㈦孅蠐?桠 ?Y揎O筱tH 3悍'+WO照k飴嚱弖到y6斾αZzzP鎞w郝摇(亃噬鬕!訤鷙yB諡濸盞璿-'_覗{唃丷鸆眘赮%椘`:度蜆禑f楋l墓%絯璀柎琅螙ZgK齎u4瑧鐊|籍-A教?d饄VjO<[匛.,5鷽H私>卍4w稏騹 p簌櫃H(嫃諳]2f.s敡<捣 ]v8澜蓴沷b莖黏}燤/*|肉鰶オdb 冯刨鸱遽o7g|!s閂n珦厂岤?鎒/陮栐迩槌鉕?黢dN -%L暶ⅹK⿴pp捚~He|N丐|娂ッ1S 陥饠!OG~p溻夼/補泓o#艹&龗Gl~絝'漙0\鶹圥S鹓焯M[*i!焥Brij$M嶑3暹擧驴揾摶嫣c1謜縲!#op屚?笎愤 仾'邝s漕笙_K樤蒗}肚鱎箢鲎锷垱 v耦#Ob挌孱n5闊|迁n軂騔d=镍 銅碟馄舿P禳袱m稞1廃袱筱掱溆(<梨钤A導蝣撺&摯鬟~#O主叻配鵀16奎$时鰀{挔呦'o'齄(W寮9`!P緹靯+D呾欄 豲邁I<=z;i8茟靠}狼剀#a<涆_"搙虽 -T琪c簖V潧;{ru罟殆w =O<7峥>鷵B.|245擬欙蒰<9m9箦亪畲謅胥孜囲n$/e椔 -欮涶R跒'd谂KG 嘏溉袞l /1%噇刔\YbK杦s矜2績焮s筼绠_8泞昝R铤制^M96[窍湶W??較蝊|[2擾描\.淌[-N`r╂鰰r g](諶讹镤輚魑r 录蝤讼Ge躍37DIO37g /|6{蛍4褅M炩 -寳_#C>2溻璽疘譝/澵~x蹑謪#=D1] -&>.~X?谇R7<\2!奂勇+;桦妫錘7W%%籼孮鹜楒bs觙杕n羹-_畦r﹟$V?en撱呥p>k 闽枕/莦7缜餺繺赫p限阊E鹾櫧棔筺.澨?m橚Л1(s>睚逭t杲遅O-^_鲫菤6<{|齥琻]?Mq乪X褲v\KЭ:b顯见#溷鳔幖)^~m抵粺粗譤咸N斱;輲b隲锈}4衿櫻I%r筠槙痌促#_f%鶬慒$訊鍈纠u圴S茂菙愔m竢l搃鑏粓菣Gf諪h0鏂衝kK匵 }Y馔吧媸竣?寇'E澲 I蒂俌ez)o,瓪6L3>苆啹bP罃xNa氧k;[<$|,榱鲛废絶e粷祶m>dV鬿l孧 懂/5齯-驿势鐛掣岸s鳳祊櫦茈藯w鳟緖谨钣纹羁螙=窘鲨嬲叧 鍛觞裙厯y^誾顫[KDv漟籢啟|竲﹐粲,蛊*5u瀛7獫!T!諹炧,谄坌お2)楡i&岗FkmYW~Ay嶉齰+鬢?韰g/獏-扣鏶U錧鉱gl桨擾:3M1:颾金眛r3_鶚jS囈蒛*赞6!>箖澷首)O芴破i珍登猍B鎙 -'{n瑎AT试 l-Dy#鶗;鵓'劬8w鸪&V著瀆笴`d)鱄j眎鎉ㄜ蕾,簩鞕/Y:]澐0J`L嘲0髖VuZ眕8 鏘#/wH∥孩邠UToi-夞腇卦Y鴄慟P驾扸睪3 H芚r噹_芁(盃轕凍蓾湢 @,嗪1W'迵P永{,觍\箱_愬鵒掑鵸rtkyI抿d鋆)c&雰NN缀3Bh﹥跐1辞Y荼/稩乌檚Yt}p>e聕蛧#y祳)鋺涗 U>gξVL$q0搔D)UY徴嶑UU幫Ycb鸨猄詵8fm頉室鑷<崻4鴧倬n1C.U﹏:& 臓硉=壋詅N睦埆 涘М\S b寶莊怄y;~V !沈5摒L9)涢CG聘驫蚇 浾F6:2}8鶦&j 鍑g|峘┩'R5.!发疑 6&雋/f恵癆rD蔥R濾&孧齃phKda唢运B4zkb-!++l崲儬9浛B崹鎗"8砽詓愆譯k57捝( Ej氤jc謨鈺鮒Yn赊2Bc承p#虾$$%椱迳嵚o吃 l妮埤 跲>,7痾弟0s9p貸 酨sMQ酾﹤I猵擡u0A瀐 |嬏;]鶕n筗" H@H闦7焉K+踥t:3v鍗60串&DfXo畈T錵C,8<椱;蓲堏哸6R噍,猺uu%寮喭\薣M钺(T蹾校}K\P盲沀#Tor%伞~DZ$:塓2#爴鄠墤oZ` i;叙棷鍒元(囋&讕R<#i;9#壖6萆'pε皱g$ !&犈wpz=逆y鴝n.>續:钋沉1燋<=Z } -Jh⿵ 攞臧跰銊虩凪>z颞; 旀:k傼J!曗TB陊B寯鯢YT鐗rW瑋蟖訛LxG+鐢蟁R UOF惜X)2c奻鑓坤5魻:'g _ -涫*梕6骉芴萊杞nKbB(d榷a骗絗 7冁坊J饆簭 @叹敪醊4羱 -F褥紸$S騆 帓耐*_L鎣(!%'$r儲|癆V%3Ξ蒬;鐩Q蚶Lk)矏m`X侲り<% RyP;歽残蒠9垉v/3读棇匪遁)O攧崵U螺э赡M)Ut飞嶳.w)  懯*蹃熊蕁!!3j 2筍;﹊1羠蒗d (とv櫆@緣KM5_!甃ㄒ|嚜:+*S?&%1逫鴎懳嵱B#螘{-)#团琇B敖蓵Kfn>倡辿R趨潠5揦翠Wg泝[宫俧#漐 棆 H犫 .愬覿y奮4#uぇ萫kT甃y洸!"9vC硬I t/=,撷Q崾| Sx$喨YIA镥*禃 ] S魨硨v爑團い慸r昷琨速顣)*2锗 '躮%鴲躼[ 厚9溆D塘GM'妌庴pz踇蒔,#剹襆J涳WOF>骼 '.蝉涉缭彡-Llg榒W趋2箴惔 9掁!趃u- 鵣- /9n兪誆2揋_伅屏蟮GH繃碖%dT抒z澆a撑Hq乖荕Hk2谜譼盚!藴=$齜}&pe鹀ボg拧J矶I敂椾!酲C/沛鎫ej~8匹u[瓕z煦鈣;蚫鈋Z鱭#yg嫬f謉岢d諏叮';?x蕥鈃k橋8W賳 钍~vo樘戕.#fN絘冧6醲羝 庣}蝩傁76}7m+-@定8j籜 渲*$64涄Q庒T蜊<-煳 *鳉揓踇9緇nテ烷憶洐uW肈账 撑gE澑隈癒漧N鯯0搯`)h蘬`+u烨仪sQ癹_之瀴l迴玥]怆y; vmiO0E韪Э6Q綽"煠7&8yh贌鱙蠌诏微艵2zj师a{?殗 -犱邑羋添iyX9i" [竜*99bA:錜雯栍 >遨 吓疖赳壃-.>N輿}蕛 R覀榒洫]嶊,+oЙ玃05s梘)>6A 姓&Q) -d縟6囋 6q 洘 熍岩崒rm髸NlI修n嵢ǒ炏 -=戽J籽嵬嬾藇蝣Vg ┇M纕紵&.~0勇褘婼]|瞜5y隺驉;勞悩*礉C1Fe忛>N暮'櫈r槊蕍/Tc6od憠:覑+d2瘯B蟣埩?0鮨鋙耸 Cg謴藊/嵣Je謮壎4鋟AHX=hd跂偊``礳訉欬恊(tnブ萒钑b#L迚芒1坍"7僒yQ跍5;iu:踸%稒遙 /婳塎y]')V咴捊槗 ,6A碊* 唀捴<0蹃Tf觲4De -濊ぶ鄰毴d~淩f紤 _虭U#衃雳詮^&苀 惓鯍蝢9矦溽P藬佘!#"TJ0~p髯%諞= f4禛y愰坛+H2+(w劳j浜牘鬷!X豩ZXy=N XNl诩仱鲁 𠬌迮%臦邆H 穌mj))攷4a紜)倷[嬎l1叇妉o%豎0YJB殧繯豩濓)櫆J 骮^j猯褳)嶑B霢](B38A姕0,皠牓) D梾A+爽t|n? 艜?g宁&y打蝐AQJySy赍6贌 %鮗.壊=(耀俍聈伋Vk瀥赿衴`桿w>謶:董a烧In钾チEU+O撠'甜鋐:!4W, -TE^狨:z业oN煹>:NQф.待8ΙrsQ6掿}9d{T咅簿CQ縉"< 9$70簯Ca貇>V饖(G)n鰌uw粥悓逤痜C【@[i3bN劣: 鹧0v/淡霻餿褣389o乆覓朘RP怌割紻倳>=劢U閖轜奦絭羪凵駣訾餔-%# 匣3%笥/18岜LK >夺Kd恠5,q ->YIR灞"蝃IF5(峁慶6=._)}渫c鹧睲z龚叜嗜嶁峪`P洀,5oO戻兣椋aEy蚧闪凃屙嬏 '岢兠X~薓 - 誎LɡD鑶趤诀vM9v雟離R霬95芪riS -5覣腩L闚"jo1Ca獡剂椎椑嗹靍!扵6J*)"逺{xK%A>臥$谺E办iklgb 4dB[柀茆+湿夤R鋁 響黙-挤B'O/轩@[.e$吗} `R@藨 怑(=,旱&:U趡鶟8䅟轰搭m \.&河Oz撾 呪楳<丄郴鋁闯S翨贚琈墱MV4, N(懅M* {N弫{V虲韡X壱J0JJ,PZy跃Sb8揅u()諫l啎9l谯; 8炻皘質& -眗(o_沯']"=筿&Y6B k庛慞藨'SVJ(2b鄴icr擭id,槇KK仆昌-`<ν$#TAQ*拦衬`j臮十T28啑q鳗l簭鋓蚾)惇<( 閿47 &O 贒埣*gK墸p t╡Z|軽|O崣,i@|Mb槯b焥僧軃i齺nv s區縋=披厭靣bCsF⑶禙栃M圓袀U廽J7X皎嬝厙渲G5 ~眹缃h足+Kb瓸l鮢$鸧>R獼郞Z 汚f嬂皵@槠  焋儭gL蓛5x攇绥D蛵% ‐歍#qD讜錭 姅襃軀(汬R=# -b倈d嵹R鈆帮鑱I豫1 EI鷟抄)=臹徵b搥櫳% OA -XU+諺蜜褟吮芕#D,l僭5$\>b聹dnlは鏘H崟\姹h甅f鐴t`噏4鰎趮m蔋/@!`6ZXA兤^窗g坆U 12l)=󭺧7慇N/鈍: #锻`-睓7sU缚m='`J≥╢摡x濾!4I敀#(耕-UF.E戩n(忧篶S汕侾m1鵼4r敥蔶勅睷藳y5?謄衬Z$3栣A |c(懇#⿺k焘!K嚉跢W(諪5&菚舧C鶁榞>=~堝(7濾"蒖檴︹5&..зv3W刎9b昼 澢睽8=鶍#泋\N擣鴽閜膘fWm,婎#貢L鴞蚒墨鍰焌疩8]g.曡唕桘墇T湭嶞`笲緸<+樧S衲$!亂*IFw慮XV詓>!k酓L簟_ 捖鰼綢 擨)☆I茱$是爤娍籫cL镑"w$󠫁袠韪`箲H艚詳l态 -j横Q +懕蟃70磮}鎀攓螪 rp殄J緳a;,e3飫駴紒:9?B$欝m0蓹v爂e鈎驂O0牉Ts禋A-揃 酡@t碯湞p)H,:| -O$/毝濺" 淨)$} -圓实栍问D莈屖j<堦~鷜莙 P{翥Jdg1-j判鬷駈鱖爇#nD)9lB7xlvA趞硾锠錐鱍鑩毀甁ē剛)5?甦 J! Of}婼@张 醥p虻蛤 "$啶硪m檄睯獣鄳鲽跉B簆J}腤:#L鷁塡w釽#L稳鯎B&唓pN^ 勑eh=侨溕T>%=m颢W4緭CS>|响4》)瓩Y缎X跣钛艓砺⒆3;岛Z}鐲刹馓鈫A#+蝿ZiD呸U駻&~&;u+伽唐廉e{戥!願淬刡忊拈th荌m+濻7奣>2~.燷譾 錷2┍3欜7_襶囙旿n訩D2澴芢 :jxR疻66x6繤;W"5~涩餰0~J84褌0@z5 蚔 Dg(e9J啂苧p襠mH疱慠h踿b\+讜4T茗鵞4r藈8漊机規赈,剴T+承韝鮑k弛諷碅礯泠諝(i挳|緫穇zO 汭ZE=堹堺D攷0Zd縖埅UX緿邧郤DNve%趨闙舲疨椱浈羍魜巭莰l蕐赿 7 'dJ^\佶裾L%J8dD眃J4.玵r13需嚡Y燃蛫/e6勳f'>卅浬3豈昨k?}>峲)5e<竲C#┵芵彜旐D撢添6榨V噼1眳搵 埰Y%9'榆[╅摕臼疯竖(秠梽灾j 塁臼_*V瓍㤘3q哵-旗髛椲儶)YS︵%儊sE+唉簿殏嵃"d -o戮$p*騍L -"硈K)嵁P:XXMa|鴴#に!!P 怂 豬X垪偗 -TTSX-]PM嵁氅y剭A95<煤Z -6QLMa酄枤斜Rj埧訒 ! -毹!怭桻@DD+#V?Sh葔j -S 鸗PSp螇j -婖V屫詨阨 -釆鑡勄糙iY獽)h.VN*V8 *壠e4萲~超2簂N纱蠚變7 -a 珫M4' p痀&1遙GV址B偓彞&X`K釹>桪疯#<暩伦@1昈+)湉 im4 -,!颏h垬)偖 伐d裚Sr2D牎玣^ [eq2軿 üzni2蛋墏R:X揓奪)鯨芌<嗏ZJF郖Y(e駽YJH馣YJ寿绠&慱蔙{? -鸖絍靜槼P 竆T+H.PJS絾L胆茳:dR+\g"珱xz浼尝戒橧D 矇>1c'DL詬RP>ダP鰼"%d+叞3鳴?咃愼@?4-&A絔赭 -褽`= -N蛆%謬aB@y1B |抌8B湨!RL_ヤUwPET焿Jc}嬷S 挣$グ罃$2鸳R 5{Y,%X^K蓶ヤ陓)g覨棔gU..%孵拇Q5ē醫阧傛ㄎ恗覣 *d;澡JpuUQ炖m -微雺)L S&9拍j塈t肍$&踖(j:燳覿爦⒊爤xb -%% )瑲. ︷n8傚X0 禌竔(霦 鮾赼 -+↘嚛.繣蝢幀#em/@VBi/纄be暻斸啯u紻z闐Y/戇:Q Sd-0jza.旚4邏lf0箻]G0鵓鎼`B3r $S隯^槏 ゼ0+yaF鳧!/H'離,t,銋iU0媥n哕仝鲊{焩5黙ny瘃:.盽獏蹏岻章 #4)t楷蹩x/m?鵞譹'弢 +焩䙡敷n缤輱椒鬴话L尘汲鱪忝粛夻|铕!歠叼x腽⌒酶之>t祢蛕沃谄慷w棖庉輝除pw爿図菝囖|蔌燀厤潩O{{蹮s勇涊懑y观 _邁齾8v熠澱脟駸dX -endstream endobj 14 0 obj <>stream -H塴W蓭萑伎<尻夺摷@煃曝c@3餒;$% 羲"婾笵fF~笋徙K:~鼷椼褊#s#1'/?=)/煄た阌藷眸x<>/??玢丝䦂m融槒6讬R軬k鵟〇沲_x椩s峿<97~乒k鏑假'6?烗瑋擉俑q濳藌f=貕撷w]O踪%悒阃辔倽递oqL濯W|Y飃愚u[钑毼k飒艎泐洼盗灔跄6(蟧捉杕-葜l捃寿t6翦㑇eC&;%闎-鰴j艎緵駼:丮'I讂2/帛决%濔0箊銧怂付.9射X翖]Kt喘勥<;喩OJ= 賐爯00u璗菴G遑謊m褯饦齽]炬*劫鰇L00鉡馆釸鄥鈚辕彑uN紐披潻鯕鹮|}]6彾鱳99r!/g芺踤_戳.犈\罸豽%衸鴪L)黟d7K甞|Cq鉳vd戂u腘D患;沽4溟eC晘 -@蛍*l骎0琽对y[竧^蟛vKI{,3; -瘉戙:豳hO~鰈犉ハ薮O -=H畛O'@X箪( }v+樭\飥7濘I晶(弍╡:轂巨17燐L罹袮r膐} 7s污P#桷傃e鳏pZ -g矢詴f彵*9>柟惙礱畊缯`Fs阻vX蝓c邺j+苬 -翫軻mH6j啴p娶5掣^[X_H,:~W迃咈5逕]b璠 咜 趏 -1D鱡Nkg6v兗 袳项Rqm]}t -痰歈陖娪集侚J捫“V噡鑘E橠葙4帋悴頟窋檶取3t酛,[xY"G琥*倃潷萟w9陾"咲hi竸 3缆鋩灱!L贙愁脏wEv⊿Pd犴>餏4测\嶆韇渑8-*W蓐78䱷t ≯邐(y銁j党<膙;躉茴P ft韝%)柫U璔釀*NR銩0〥-佗 9I锲.Fk$剢}繐默>?頪*PlfY冸埃BU\鑕FYc扊T錳E[C7~ZL硳Q%綰$帠針@)╯琮6娉0鎖_|G.(Gv蘉妠Q洨NZ蹖S俺C笼鋷凅y~衢沔漈麝敬[滻脣DG{娨島埇E旈h.&H桞鲓9π﹕ UWqi呤頀h/jS -dQK6U垯訛錨抦穼瑸蹛[蜄*绺ぺ 0O渇庑 尽榌-N栬襇樿yx*銤iuf 仉定+2@竂.緵涷k2yj罦&,愓 嬱俓_Jv椄6鍊7*9魼蜿羰κ锬褴 傘媧峳_[虉{悇-玕 痁2:8Y9g妤<纚Ub'硄报谩.O;%Z_p 吊oV狭r&䴕-エlF奙3|0#骔<#7簓yprcR4p 妪bg攉aG〒駷b铋-忟T鮈捳c - 擟, 7机慼 *]_w潤oC邪摾黧UF髣;bX脏STe站Y炂踒週v垪z5尙霅z島U#庆**Y嚭嚙胊瞆#粣~]仍鍦fH罷e)荤(襖w蘉m傆靁麬廌% 2Ruy#萵uA"釯让S/贄j$)唾 U曢;.R诫nDAj訩x庰5& -W蝆遮奴j4謌礼伔Eah艈譼]菐踻贍'x岩炼<+Z)Cc溮豫刚K坞宎'湻 髙世獥+椏寙&+yh91櫳咟嶮]躒=杰)%禱棅]io2s`唢1若賞傻(c斎拱T%楻体尔_O4x!E -endstream endobj 10 0 obj <>stream -H夓W藥葸熭6c+ 慈:萹q`K 螓9応i鯪 As婱瞂廠痺?<,镛?ゅO<,穇oi9霰浜锼J暧芹_揶=|H算%ms燏淁窋e堩?oO帅苻}囉|鹵)K;茤RkKky〇羼穨经i肹u`糱sY鱩治O>7江}k靥[恪c闵篹}膺喛8呥奤追眜裛R陃峉ザk痮U/鳝W+噉驛蹐硡&﹊;b峉礟\:y抖小竦簅顛XI洊B兩[贇xBa瀖U扺K牫yyE)邽[見:爓J=喾$鶢7%"o"}*轹P产匚煵簠K lG頺Ic隤 +醟辴Z霋]3hl" zP忕lr暌拌{訖:枎姵w8蓲G[躿?*J'螶y蛆驍鯬8i-吉L褞晁杛 - 出袈f绐毇VY倮擡 -n憅B(詵∧,&h猄樼雠築}%n櫋N8  胊俾"i~;v鞁髺ur蠂灬S:?3,Bp鉋*峠U^韦嵢~R+pO擏4鵞傡闉,锷7Y線嬗 ,葴槥碩雼(嗣震-ZP?F -Q] 吴屧璈S鉶I'|20澿聩欴Z巯疺"肨lj繼 <"闭藻s肤搝剂捀NL U#U91%騛 勪恃憘7惰訥D堌 j爹v򙣘{W'佴陚8(@T<鑕P雚 w礨%N U悰╒.鮆坪柛崶阄隢壷殦I兙n<妊菅繬un=TX沖O蒻閼i懏j~聨訍;d)[鎙国┗c閃g奟.玂g/59揁T鼼⒌麮 鵉覦9嬎G{M窊j @尃,嘐閯S籈Q婴!j帺v鐇②艟淢悛 焽鵆=8Q肕5aa郦h尳=蓝fu - #墄薓5鑐o粝wT躋褴司$4愻榇 +挸縭廕 t斳塲Q曓WU z麴oT 眩6搨 膚w孈SS镩V楪s聰 噝Yv?-lk0喚!d訕T+|"%匌[aw谪蛄琻 r朡EZ^檙糧箑瑊[\@V尓賌p">Uj 袣蕔悔 ({峯`0掗3V輁頳摙欁枢}耕鼢孢"橗mi渠Ev莀g5\haKvB.睵謝%Y樃剛睭!峧*Ii稥竺辈臱趗畸vfVS|浛彣%rF蚅塺X髉Y詃itc跓3&V)6{瑅c雂R擆@,V3Y硑$u鑞姫L> endobj xref -0 31 -0000000000 65535 f -0000000016 00000 n -0000000144 00000 n -0000038880 00000 n -0000000000 00000 f -0000042641 00000 n -0000368451 00000 n -0000038943 00000 n -0000039325 00000 n -0000039707 00000 n -0000366092 00000 n -0000047648 00000 n -0000047258 00000 n -0000047145 00000 n -0000363823 00000 n -0000040125 00000 n -0000042826 00000 n -0000042710 00000 n -0000042741 00000 n -0000043066 00000 n -0000043317 00000 n -0000047293 00000 n -0000047722 00000 n -0000047984 00000 n -0000049350 00000 n -0000052788 00000 n -0000118377 00000 n -0000183966 00000 n -0000249555 00000 n -0000315144 00000 n -0000368474 00000 n -trailer -<<8142819C6625424180619A4B2D0659A8>]>> -startxref -368687 -%%EOF diff --git a/public/Resource/Refer/envelope-solid.svg b/public/Resource/Refer/envelope-solid.svg deleted file mode 100644 index e564cad..0000000 --- a/public/Resource/Refer/envelope-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/google.svg b/public/Resource/Refer/google.svg deleted file mode 100644 index 73470de..0000000 --- a/public/Resource/Refer/google.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/heart-regular.svg b/public/Resource/Refer/heart-regular.svg deleted file mode 100644 index 4e93da9..0000000 --- a/public/Resource/Refer/heart-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/heart-solid.svg b/public/Resource/Refer/heart-solid.svg deleted file mode 100644 index c4670fa..0000000 --- a/public/Resource/Refer/heart-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/key-solid.svg b/public/Resource/Refer/key-solid.svg deleted file mode 100644 index 72c675d..0000000 --- a/public/Resource/Refer/key-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/location-dot-solid.svg b/public/Resource/Refer/location-dot-solid.svg deleted file mode 100644 index 72a23f0..0000000 --- a/public/Resource/Refer/location-dot-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/trash-can-regular.svg b/public/Resource/Refer/trash-can-regular.svg deleted file mode 100644 index f2e9d07..0000000 --- a/public/Resource/Refer/trash-can-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/trash-can-solid.svg b/public/Resource/Refer/trash-can-solid.svg deleted file mode 100644 index 03d28be..0000000 --- a/public/Resource/Refer/trash-can-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/user-regular.svg b/public/Resource/Refer/user-regular.svg deleted file mode 100644 index 4406542..0000000 --- a/public/Resource/Refer/user-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/Refer/user-solid.svg b/public/Resource/Refer/user-solid.svg deleted file mode 100644 index 7fd08f6..0000000 --- a/public/Resource/Refer/user-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/arrow-pointer-solid.svg b/public/Resource/arrow-pointer-solid.svg deleted file mode 100644 index 49a34c7..0000000 --- a/public/Resource/arrow-pointer-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/behance.svg b/public/Resource/behance.svg deleted file mode 100644 index 16e4065..0000000 --- a/public/Resource/behance.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/bell-regular.svg b/public/Resource/bell-regular.svg deleted file mode 100644 index ca1f44c..0000000 --- a/public/Resource/bell-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/bell-solid.svg b/public/Resource/bell-solid.svg deleted file mode 100644 index 0516c76..0000000 --- a/public/Resource/bell-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/bicycle-solid.svg b/public/Resource/bicycle-solid.svg deleted file mode 100644 index 67e972e..0000000 --- a/public/Resource/bicycle-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/bug-solid.svg b/public/Resource/bug-solid.svg deleted file mode 100644 index fa2eae7..0000000 --- a/public/Resource/bug-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/dragon-solid.svg b/public/Resource/dragon-solid.svg deleted file mode 100644 index c538b4c..0000000 --- a/public/Resource/dragon-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/envelope-solid.svg b/public/Resource/envelope-solid.svg deleted file mode 100644 index e564cad..0000000 --- a/public/Resource/envelope-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/figma.svg b/public/Resource/figma.svg deleted file mode 100644 index 613d637..0000000 --- a/public/Resource/figma.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/gear-solid.svg b/public/Resource/gear-solid.svg deleted file mode 100644 index 11d319a..0000000 --- a/public/Resource/gear-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/gears-solid.svg b/public/Resource/gears-solid.svg deleted file mode 100644 index 2b205e6..0000000 --- a/public/Resource/gears-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/github.svg b/public/Resource/github.svg deleted file mode 100644 index 81b1073..0000000 --- a/public/Resource/github.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/google.svg b/public/Resource/google.svg deleted file mode 100644 index 73470de..0000000 --- a/public/Resource/google.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/hand-pointer-regular.svg b/public/Resource/hand-pointer-regular.svg deleted file mode 100644 index 3485ee2..0000000 --- a/public/Resource/hand-pointer-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/hand-pointer-solid.svg b/public/Resource/hand-pointer-solid.svg deleted file mode 100644 index 558373f..0000000 --- a/public/Resource/hand-pointer-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/heart-regular.svg b/public/Resource/heart-regular.svg deleted file mode 100644 index 4e93da9..0000000 --- a/public/Resource/heart-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/heart-solid.svg b/public/Resource/heart-solid.svg deleted file mode 100644 index c4670fa..0000000 --- a/public/Resource/heart-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/image-regular.svg b/public/Resource/image-regular.svg deleted file mode 100644 index aa1418c..0000000 --- a/public/Resource/image-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/image-solid.svg b/public/Resource/image-solid.svg deleted file mode 100644 index 377a68a..0000000 --- a/public/Resource/image-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/key-solid.svg b/public/Resource/key-solid.svg deleted file mode 100644 index 72c675d..0000000 --- a/public/Resource/key-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/lightbulb-regular.svg b/public/Resource/lightbulb-regular.svg deleted file mode 100644 index 9a15f75..0000000 --- a/public/Resource/lightbulb-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/lightbulb-solid.svg b/public/Resource/lightbulb-solid.svg deleted file mode 100644 index 082802c..0000000 --- a/public/Resource/lightbulb-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/linkedin.svg b/public/Resource/linkedin.svg deleted file mode 100644 index dc1e36d..0000000 --- a/public/Resource/linkedin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/location-dot-solid.svg b/public/Resource/location-dot-solid.svg deleted file mode 100644 index 72a23f0..0000000 --- a/public/Resource/location-dot-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/palette-solid.svg b/public/Resource/palette-solid.svg deleted file mode 100644 index 0f797de..0000000 --- a/public/Resource/palette-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/pencil-solid.svg b/public/Resource/pencil-solid.svg deleted file mode 100644 index 471a38e..0000000 --- a/public/Resource/pencil-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/phone-solid.svg b/public/Resource/phone-solid.svg deleted file mode 100644 index eade913..0000000 --- a/public/Resource/phone-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/thumbtack-solid.svg b/public/Resource/thumbtack-solid.svg deleted file mode 100644 index e19e5cd..0000000 --- a/public/Resource/thumbtack-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/trash-can-regular.svg b/public/Resource/trash-can-regular.svg deleted file mode 100644 index f2e9d07..0000000 --- a/public/Resource/trash-can-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/trash-can-solid.svg b/public/Resource/trash-can-solid.svg deleted file mode 100644 index 03d28be..0000000 --- a/public/Resource/trash-can-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/user-regular.svg b/public/Resource/user-regular.svg deleted file mode 100644 index 4406542..0000000 --- a/public/Resource/user-regular.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/Resource/user-solid.svg b/public/Resource/user-solid.svg deleted file mode 100644 index 7fd08f6..0000000 --- a/public/Resource/user-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 960f30c..0360e04 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -3,6 +3,7 @@ import {TaskList} from './TaskList'; import {TaskForm} from './TaskForm'; import {tasks as data} from './tasks'; import {useState, useEffect} from 'react'; +import "./css-components/home.css"; export function Home() { const { user, logout, loading } = useAuth() @@ -32,11 +33,22 @@ export function Home() { }; if (loading) return

Loading

return
-

馃挆Welcome to Journal Note, {user.displayName||user.email}馃挆

+
+ +
+ +

馃挆鉁╓elcome to Journal Note鉁煉 +
+ {user.displayName||user.email}

+

Remember this is important to you !

- + +
+ + +
} diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 893f728..b5f85b0 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -51,6 +51,10 @@ export function Login() { className="container-contact" >
+
+

L O G I N

+
+
@@ -84,7 +88,7 @@ export function Login() {
- +

You don't have an account yet? Create Account

diff --git a/src/components/NoteCard.jsx b/src/components/NoteCard.jsx index a444c4b..98a1fc9 100644 --- a/src/components/NoteCard.jsx +++ b/src/components/NoteCard.jsx @@ -1,12 +1,18 @@ +import "./css-components/NoteCard.css"; export function NoteCard({ task, deleteNote }) { return ( -
-

{task.title}

-

{task.description}

- -
+ <> +
+
+

{task.title}

+

{task.description}

+
+
+
+
+ ); } diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx index d31fae1..2a9b9f8 100644 --- a/src/components/TaskForm.jsx +++ b/src/components/TaskForm.jsx @@ -1,31 +1,34 @@ import { useState } from "react"; +import "./css-components/taskForm.css"; export function TaskForm({ createNote }) { const [title, setTitle] = useState(''); const [description, setDescription] = useState(''); const handleSubmit = (e) => { e.preventDefault(); - - createNote({ - title, - description - }); - setTitle("") - setDescription("") + + createNote({ + title, + description + }); + setTitle("") + setDescription("") }; return ( - + setTitle(e.target.value)} - value={title} + value={title} className="container-title" autoFocus /> - - + value={description} className="container-description"> +
+ +
); diff --git a/src/components/TaskList.jsx b/src/components/TaskList.jsx index 53a029f..3b49ffd 100644 --- a/src/components/TaskList.jsx +++ b/src/components/TaskList.jsx @@ -5,10 +5,10 @@ export function TaskList({ tasks, deleteNote }) { return

NO HAY TAREAS AUN

} return ( -
{ + <>{ tasks.map((task) => ( ))} -
+ ); } \ No newline at end of file diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css index 7c82ecf..5802023 100644 --- a/src/components/css-components/Login.css +++ b/src/components/css-components/Login.css @@ -1,13 +1,14 @@ -/* .login-body { +body { display: flex; - flex-direction:row; - justify-content:center; - align-items:flex-end; -} */ + justify-content: space-evenly; + justify-content:center; + top: 250px; + + +} .login-box { - position: absolute; width: 502px; height: 340px; left: 400px; @@ -16,9 +17,9 @@ box-shadow: -3px -3px 4px rgba(242, 91, 182, 0.29), 15px 6px 4px rgba(242, 91, 182, 0.29); border-radius: 40px; display: flex; - flex-direction:row; - justify-content:center; - align-items:flex-end; + flex-direction: row; + justify-content: center; + align-items: flex-end; } @@ -30,12 +31,11 @@ width: 200px; height: 100px; flex-direction: row; - + } .inputs { - - + margin-block: 8px; width: 200px; height: 22px; @@ -52,7 +52,7 @@ .btn-container { width: 200px; height: 100px; - align-items:flex-start; + align-items: flex-start; display: flex; justify-content: center; @@ -64,20 +64,45 @@ background: #FABDE2; box-shadow: 6px 4px 4px #F692CF; border: 0; - width: 82px; - height: 28px; + width: 100px; + height: 32px; font-family: 'Marvel'; font-style: normal; - font-size: 20px; + margin-top: 10px; + font-size: 22px; + color: #CA2588; + +} + +.dad-login { + + background-color: aqua; + width: 450px; + height: 200px; + display: flex; + justify-content: center; + +} + +.btn-access { + border-radius: 50px; + background: #FABDE2; + box-shadow: 6px 4px 4px #F692CF; + border: 0; + width: 100px; + height: 32px; + font-family: 'Marvel'; + font-style: normal; + margin-top: 10px; + font-size: 22px; color: #CA2588; - } -/* .login-googleAccess { +.title-login { position: absolute; - width: 502px; - height: 340px; - left: 400px; - top: 300px; -} */ + right: 320px; + font-style: normal; + font-weight: 700; + font-size: 52px; +} \ No newline at end of file diff --git a/src/components/css-components/NoteCard.css b/src/components/css-components/NoteCard.css new file mode 100644 index 0000000..84b9937 --- /dev/null +++ b/src/components/css-components/NoteCard.css @@ -0,0 +1,69 @@ +body { + margin: 0%; + top: 0%; + text-align: center; + justify-content: center; + +} + +.container-all { + + display: flex; + justify-content: center; + align-content: space-between; + flex-wrap: wrap; + flex-direction: row; + margin-bottom: 12px; +} + + +.container-note { + display: flex; + flex-direction: column; + align-content: space-around; + width: 280px; + height: 280px; + background-color: #FF92D3; + text-align: center; + left: 20px; + top: 190px; + font-style: normal; + font-weight: 300; + font-size: 20px; + line-height: 32px; + color: #CA2588; + border-radius: 15px; + box-shadow: 4px 3px 4px rgba(242, 91, 182, 0.6); +} + +.btn-delete { + width: 100px; + height: 40px; + border-radius: 30px; + background: #FABDE2; + box-shadow: 6px 4px 4px #F692CF; + border: 0.5px; + border-color: #CA2588; + font-family: 'Marvel'; + font-style: normal; + font-size: 22px; + color: #CA2588; + bottom: 0; + +} + +.dad-delete { + display: flex; + + flex-direction: row-reverse; + +} +.nc-description{ + + height: 160px; + border:2px solid #CA2588; + margin: 0%; +} +.card-title{ + border:2px solid #CA2588; +} \ No newline at end of file diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css new file mode 100644 index 0000000..b796b33 --- /dev/null +++ b/src/components/css-components/home.css @@ -0,0 +1,43 @@ +body { + + text-align: center; + color: #CA2588; + +} + +.dad-logout { + align-items: center; + width: 768px; + background-color: #FF92D3; + display: flex; + justify-content: right; + height: 50px; +} + +.btn-logout { + + border-radius: 50px; + background: #FABDE2; + box-shadow: 4px 2px 2px #F692CF; + border: 0; + width: 100px; + height: 35px; + font-family: 'Marvel'; + font-style: normal; + font-size: 20px; + color: #CA2588; + /* margin-bottom: 15px; */ + + +} + +.container-notes { + + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-around; +} +.title-page{ + font-size: 44px; +} \ No newline at end of file diff --git a/src/components/css-components/taskForm.css b/src/components/css-components/taskForm.css new file mode 100644 index 0000000..c349352 --- /dev/null +++ b/src/components/css-components/taskForm.css @@ -0,0 +1,56 @@ +.box { + + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + font-family: 'Marvel'; +} + +.container-title { + + width: 300px; + height: 25px; + font-family: 'Marvel'; + border-radius: 5px; + background-color: #FABCE1; + font-size: medium; + color:#CA2588 + +} + +.container-description { + width: 300px; + height: 150px; + font-family: 'Marvel'; + border-radius: 5px; + background-color: #FABCE1; + font-size: medium; + margin-top: 8px; + color: #CA2588; +} + +.dad-save { + width: 300px; + height: 60px; + display: flex; + justify-content: flex-end; + +} + +.btn-save { + width: 120px; + height: 30px; + align-items: center; + border-radius: 30px; + background: #FABDE2; + box-shadow: 6px 4px 4px #F692CF; + border: 0.5px; + border-color: #CA2588; + font-family: 'Marvel'; + font-style: normal; + font-size: 20px; + color: #CA2588; + + +} \ No newline at end of file diff --git a/src/components/tasks.js b/src/components/tasks.js index 8cc4fde..b3d0a8f 100644 --- a/src/components/tasks.js +++ b/src/components/tasks.js @@ -2,18 +2,18 @@ export const tasks = [ { id: 0, - title: 'my first note', - description: 'my first note' + title: 'Example note one', + description: 'Welcome to Journal Note 馃挆 Here I describe my first note' }, { id: 1, - title: 'my second note', - description: 'my second note' + title: 'Example note two', + description: 'Welcome to Journal Note 馃挆 Here I describe my second note' }, -{ - id: 2, - title: 'my third note', - description: 'my third note' -} +// { +// id: 2, +// title: 'my third note', +// description: 'my third note' +// } ] \ No newline at end of file diff --git a/src/styles.css b/src/styles.css index dc146ac..bf14808 100644 --- a/src/styles.css +++ b/src/styles.css @@ -2,8 +2,10 @@ body { position: relative; - width: 1024px; - height: 1366px; + width: 768px; + height: 1280px; font-family: 'Marvel', sans-serif; background-color: #FCDCEF; + margin-top: 2%; + } \ No newline at end of file From 5dbc7f942ae3883ad2d7fdff3b2ca752f0972df7 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Wed, 8 Feb 2023 21:31:43 -0600 Subject: [PATCH 21/38] cambios en CSS notas --- src/App.jsx | 1 - src/Firebase.jsx | 2 +- src/components/Home.jsx | 55 +++++++++---------- src/components/Login.jsx | 3 ++ src/components/TaskForm.jsx | 2 + src/components/css-components/Login.css | 13 +++-- src/components/css-components/NoteCard.css | 16 ++++-- src/components/css-components/home.css | 8 +-- src/components/css-components/taskForm.css | 61 ++++++++++++++-------- src/components/tasks.js | 6 +-- 10 files changed, 100 insertions(+), 67 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index e197630..2ea9d06 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -16,7 +16,6 @@ function App() { element={ - } /> diff --git a/src/Firebase.jsx b/src/Firebase.jsx index 5ca7817..9d8f1f8 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -20,4 +20,4 @@ const firebaseConfig = { // Initialize Firebase export const app = initializeApp(firebaseConfig); export const auth = getAuth(app); -export const db = getFirestore(app); \ No newline at end of file +export const db = getFirestore(); \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 0360e04..3bae3ae 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,10 +1,13 @@ import { useAuth } from "../context/authContext"; -import {TaskList} from './TaskList'; -import {TaskForm} from './TaskForm'; -import {tasks as data} from './tasks'; -import {useState, useEffect} from 'react'; +import { TaskList } from './TaskList'; +import { TaskForm } from './TaskForm'; +import { tasks as data } from './tasks'; +import { useState, useEffect } from 'react'; import "./css-components/home.css"; +// import { db } from '../Firebase'; + + export function Home() { const { user, logout, loading } = useAuth() const [tasks, setTasks] = useState([]) @@ -12,44 +15,42 @@ export function Home() { setTasks(data) }, [] ) - function createNote(task) { - setTasks([...tasks, { - title: task.title, - id: tasks.length, - description: task.description - } ]) - } - - function deleteNote (taskId) { - setTasks (tasks.filter (task => task.id !== taskId)) - } + function createNote(task) { + setTasks([...tasks, { + title: task.title, + id: tasks.length, + description: task.description + }]) + } + + function deleteNote(taskId) { + setTasks(tasks.filter(task => task.id !== taskId)) + } const handledLogout = async () => { try { - await logout(); - } catch(error){ + await logout(); + } catch (error) { console.error(error); } }; if (loading) return

Loading

return
- +

馃挆鉁╓elcome to Journal Note鉁煉 -
- {user.displayName||user.email}

+
+ {user.displayName || user.email}

Remember this is important to you !

- - - -
- -
-
+ +
+ +
+
} diff --git a/src/components/Login.jsx b/src/components/Login.jsx index b5f85b0..fdc8203 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -43,9 +43,12 @@ export function Login() { return (
+

Journal Note馃摑

{error && < Alert message={error} />} + +
setTitle(e.target.value)} value={title} className="container-title" autoFocus /> +
@@ -29,6 +30,7 @@ export function TaskForm({ createNote }) { Save
+
); diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css index 5802023..f2c9f98 100644 --- a/src/components/css-components/Login.css +++ b/src/components/css-components/Login.css @@ -1,9 +1,9 @@ body { display: flex; justify-content: space-evenly; - justify-content:center; - top: 250px; - + justify-content: center; + top: 250px; + } @@ -105,4 +105,11 @@ body { font-weight: 700; font-size: 52px; +} + +.jn-title { + text-align: center; + font-style: normal; + font-weight: 800; + font-size: 72px; } \ No newline at end of file diff --git a/src/components/css-components/NoteCard.css b/src/components/css-components/NoteCard.css index 84b9937..9ba36f0 100644 --- a/src/components/css-components/NoteCard.css +++ b/src/components/css-components/NoteCard.css @@ -18,6 +18,7 @@ body { .container-note { + display: flex; flex-direction: column; align-content: space-around; @@ -25,6 +26,7 @@ body { height: 280px; background-color: #FF92D3; text-align: center; + margin-top: 10px; left: 20px; top: 190px; font-style: normal; @@ -41,7 +43,6 @@ body { height: 40px; border-radius: 30px; background: #FABDE2; - box-shadow: 6px 4px 4px #F692CF; border: 0.5px; border-color: #CA2588; font-family: 'Marvel'; @@ -54,16 +55,21 @@ body { .dad-delete { display: flex; - flex-direction: row-reverse; + background-color: #FABDE2; + border: none; } .nc-description{ - height: 160px; - border:2px solid #CA2588; + height: 180px; + background-color: #FABDE2; margin: 0%; + border: none; } .card-title{ - border:2px solid #CA2588; + background-color: #FF92D3; + height: 8px; + justify-content: center; + align-items: center; } \ No newline at end of file diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css index b796b33..9592685 100644 --- a/src/components/css-components/home.css +++ b/src/components/css-components/home.css @@ -1,5 +1,6 @@ body { - + display: flex; + justify-content: space-between; text-align: center; color: #CA2588; @@ -26,7 +27,7 @@ body { font-style: normal; font-size: 20px; color: #CA2588; - /* margin-bottom: 15px; */ + } @@ -38,6 +39,7 @@ body { flex-wrap: wrap; justify-content: space-around; } -.title-page{ + +.title-page { font-size: 44px; } \ No newline at end of file diff --git a/src/components/css-components/taskForm.css b/src/components/css-components/taskForm.css index c349352..5dec6d2 100644 --- a/src/components/css-components/taskForm.css +++ b/src/components/css-components/taskForm.css @@ -9,48 +9,65 @@ .container-title { - width: 300px; - height: 25px; + width: 260px; + height: 30px; font-family: 'Marvel'; - border-radius: 5px; - background-color: #FABCE1; + border-radius: 20px 20px 0px 0px; + background-color: #FF92D3; font-size: medium; - color:#CA2588 + border: none; + color:#CA2588; + padding: 10px; + + + + +} +.text-description { + width: 280px; + height: 225px; + border-radius: 0px 0px 20px 20px; + border: none; + background-color: #FABCE1; + display: flex; + flex-direction: column; + justify-content: flex-start; } .container-description { - width: 300px; - height: 150px; + width: 260px; + height: 175px; font-family: 'Marvel'; - border-radius: 5px; - background-color: #FABCE1; + border-radius: 0px 0px 20px 20px; + border: none; + background-color: #FABDE2; font-size: medium; - margin-top: 8px; color: #CA2588; + padding: 10px; + padding-bottom: 0; + padding-top: 0; } .dad-save { - width: 300px; - height: 60px; + width: 280px; + height: 50px; display: flex; justify-content: flex-end; - + align-items: center; } .btn-save { - width: 120px; - height: 30px; - align-items: center; - border-radius: 30px; + width: 100px; + height: 40px; + border-radius: 20px; background: #FABDE2; - box-shadow: 6px 4px 4px #F692CF; - border: 0.5px; + /* box-shadow: 2px 4px 4px #F692CF; */ + border: none; border-color: #CA2588; font-family: 'Marvel'; font-style: normal; - font-size: 20px; + font-size: 22px; color: #CA2588; - - + bottom: 0; } \ No newline at end of file diff --git a/src/components/tasks.js b/src/components/tasks.js index b3d0a8f..2ad2fcd 100644 --- a/src/components/tasks.js +++ b/src/components/tasks.js @@ -10,10 +10,6 @@ export const tasks = [ title: 'Example note two', description: 'Welcome to Journal Note 馃挆 Here I describe my second note' }, -// { -// id: 2, -// title: 'my third note', -// description: 'my third note' -// } + ] \ No newline at end of file From 56638fa2c1f3f5501cac3d1124351454f1ec9835 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Thu, 9 Feb 2023 10:56:45 -0600 Subject: [PATCH 22/38] Firestore3 --- index.html | 30 +++++++++++++++----------- src/components/Home.jsx | 2 +- src/components/css-components/home.css | 20 ++++++++++++++--- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/index.html b/index.html index db8d961..7003bc2 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,20 @@ - - - - - - Journal Note - - -
- - - + + + + + + + + + Journal Note + + + +
+ + + + \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 0360e04..4ef0aa5 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -40,7 +40,7 @@ export function Home() {

馃挆鉁╓elcome to Journal Note鉁煉
{user.displayName||user.email}

-

Remember this is important to you !

+

Remember this is important to you !

diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css index b796b33..6712b7c 100644 --- a/src/components/css-components/home.css +++ b/src/components/css-components/home.css @@ -5,6 +5,23 @@ body { } + +.title-page { + font-size: 44px; + margin: 10px; + padding: 10px; +} + +.subtitle-page { + font-family: 'Pacifico'; + font-style: normal; + font-size: 32px; + margin-top: 0; + padding-top: 0; + margin-bottom: 10px; + padding-bottom: 10px; +} + .dad-logout { align-items: center; width: 768px; @@ -38,6 +55,3 @@ body { flex-wrap: wrap; justify-content: space-around; } -.title-page{ - font-size: 44px; -} \ No newline at end of file From 1b83fb425882cfc599d440d6ac2fee168fef4955 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Fri, 10 Feb 2023 01:37:43 -0600 Subject: [PATCH 23/38] Firestore, Subir datos chack, CSS advance --- index.html | 3 +- public/Logo-JN-SF.png | Bin 0 -> 60088 bytes src/Firebase.jsx | 8 +-- src/components/Home.jsx | 43 +++++++++++----- src/components/Login.jsx | 9 ++-- src/components/NoteCard.jsx | 7 +-- src/components/TaskForm.jsx | 23 +++++---- src/components/css-components/Login.css | 51 ++++++++++++++----- src/components/css-components/NoteCard.css | 55 +++++++++++++++------ src/components/css-components/home.css | 16 ++++-- src/components/css-components/taskForm.css | 17 +++---- src/styles.css | 19 ++++--- 12 files changed, 169 insertions(+), 82 deletions(-) create mode 100644 public/Logo-JN-SF.png diff --git a/index.html b/index.html index 7003bc2..41032d4 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,8 @@ - + + diff --git a/public/Logo-JN-SF.png b/public/Logo-JN-SF.png new file mode 100644 index 0000000000000000000000000000000000000000..0f198d7862b76fe6ab7b70f0510eba6349974452 GIT binary patch literal 60088 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 literal 0 HcmV?d00001 diff --git a/src/Firebase.jsx b/src/Firebase.jsx index 9d8f1f8..47dd65a 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -1,8 +1,7 @@ // Import the functions you need from the SDKs you need import { initializeApp } from "firebase/app"; //Esto no estaba inactivo... import {getAuth} from 'firebase/auth'; - -import {getFirestore} from "firebase/firestore"; +// import {getFirestore} from "firebase/firestore"; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries @@ -20,4 +19,7 @@ const firebaseConfig = { // Initialize Firebase export const app = initializeApp(firebaseConfig); export const auth = getAuth(app); -export const db = getFirestore(); \ No newline at end of file +// export const db = getFirestore(); + +// export const saveNotes = (title, description, id) => +// addDoc(collection(db, "notes"), (title, description, id)); \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index fd75431..7af98c5 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -4,9 +4,10 @@ import { TaskForm } from './TaskForm'; import { tasks as data } from './tasks'; import { useState, useEffect } from 'react'; import "./css-components/home.css"; +import {getFirestore, collection, addDoc, getDocs, doc, deleteDoc, getDoc, setDoc} from "firebase/firestore"; +import { app } from "../Firebase"; -// import { db } from '../Firebase'; - +const db = getFirestore(app) export function Home() { const { user, logout, loading } = useAuth() @@ -21,8 +22,28 @@ export function Home() { id: tasks.length, description: task.description }]) + try { + const saveNotes = addDoc(collection(db, "notes"), { + title: task.title, + id: tasks.length, + description: task.description + }); + + saveNotes; + console.log(); + } catch (e) { + console.error("Error adding document: ", e); + } } + // function saveNotes (tasks) { + // addDoc(collection(db, "notes"), { + // ...tasks + // }); + // console.log(tasks.title, tasks.id, tasks.description); + // } + + function deleteNote(taskId) { setTasks(tasks.filter(task => task.id !== taskId)) } @@ -41,18 +62,18 @@ export function Home() {

馃挆鉁╓elcome to Journal Note鉁煉 -
- {user.displayName||user.email}

+
+ {user.displayName || user.email}

Remember this is important to you !

- - - -
- -
-
+ +
+ + + +
+
} diff --git a/src/components/Login.jsx b/src/components/Login.jsx index fdc8203..eaf5c8e 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -58,9 +58,8 @@ export function Login() {

L O G I N

-
- +
+ email - + person {task.title}

{task.description}

-
+ deleteNote (task.id)} className="material-icons">favorite + deleteNote (task.id)} className="material-icons">edit + deleteNote (task.id)} className="material-icons">delete +
diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx index d2c96b5..2259aaa 100644 --- a/src/components/TaskForm.jsx +++ b/src/components/TaskForm.jsx @@ -1,5 +1,6 @@ import { useState } from "react"; import "./css-components/taskForm.css"; +// import { getFirestore } from "firebase/firestore"; export function TaskForm({ createNote }) { const [title, setTitle] = useState(''); @@ -11,25 +12,27 @@ export function TaskForm({ createNote }) { title, description }); + setTitle("") setDescription("") }; return (
- setTitle(e.target.value)} value={title} className="container-title" autoFocus /> -
- -
- -
+
+ +
+ add + +
diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css index f2c9f98..232c47d 100644 --- a/src/components/css-components/Login.css +++ b/src/components/css-components/Login.css @@ -1,10 +1,16 @@ +* { + padding: 0; + border: 0; + margin: 0; +} + body { display: flex; justify-content: space-evenly; justify-content: center; top: 250px; - - + height: 1024; + width: 768; } .login-box { @@ -24,14 +30,37 @@ body { } .container-info { - display: flex; + width: 250px; + height: 100px; + flex-direction: row; justify-content: center; align-items: flex-end; - width: 200px; - height: 100px; +} + +.container-inputs { + display: flex; flex-direction: row; + flex-wrap: wrap; + align-items: center; + width: 240px; + height: 100px; +} +.material-icons { + font-family: 'Material Icons'; + font-weight: bold; + font-style: normal; + font-size: 24px; + /* line-height: 1; */ + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; } .inputs { @@ -50,13 +79,11 @@ body { } .btn-container { - width: 200px; + width: 240px; height: 100px; - align-items: flex-start; display: flex; justify-content: center; - - + align-items: center; } .btn-login { @@ -77,10 +104,10 @@ body { .dad-login { background-color: aqua; - width: 450px; + /* width: 450px; */ height: 200px; - display: flex; - justify-content: center; + /* display: flex; */ + /* justify-content: center; */ } diff --git a/src/components/css-components/NoteCard.css b/src/components/css-components/NoteCard.css index 9ba36f0..f04a9d3 100644 --- a/src/components/css-components/NoteCard.css +++ b/src/components/css-components/NoteCard.css @@ -1,3 +1,9 @@ +* { + margin: 0; + padding: 0; + border: 0; +} + body { margin: 0%; top: 0%; @@ -18,7 +24,7 @@ body { .container-note { - + display: flex; flex-direction: column; align-content: space-around; @@ -35,10 +41,22 @@ body { line-height: 32px; color: #CA2588; border-radius: 15px; - box-shadow: 4px 3px 4px rgba(242, 91, 182, 0.6); + box-shadow: 5px 5px 4px #F9B6DF; +} + +.dad-delete { + display: flex; + flex-direction: row-reverse; + align-items: center; + gap: 10px; + background-color: #FABDE2; + height: 40px; + width: 280px; + border: none; + border-radius: 0px 0px 15px 15px; } -.btn-delete { +/* .btn-delete { width: 100px; height: 40px; border-radius: 30px; @@ -51,25 +69,30 @@ body { color: #CA2588; bottom: 0; +} */ + +.material-icons { + color: #CA2588; +} + +.material-icons:hover { + color: #FF92D3; } -.dad-delete { +.card-title { + background-color: #FF92D3; + height: 60px; + width: 280px; display: flex; - flex-direction: row-reverse; - background-color: #FABDE2; - border: none; - + justify-content: center; + align-items: center; + border-radius: 15px 15px 0px 0px; } -.nc-description{ - + +.nc-description { + height: 180px; background-color: #FABDE2; margin: 0%; border: none; -} -.card-title{ - background-color: #FF92D3; - height: 8px; - justify-content: center; - align-items: center; } \ No newline at end of file diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css index ff72922..8fbbea0 100644 --- a/src/components/css-components/home.css +++ b/src/components/css-components/home.css @@ -1,9 +1,18 @@ +* { + padding: 0; + border: 0; + margin: 0; + height: 1024; + width: 768; +} + body { display: flex; justify-content: space-between; text-align: center; color: #CA2588; - + height: 1024; + width: 768; } @@ -44,9 +53,6 @@ body { font-style: normal; font-size: 20px; color: #CA2588; - - - } .container-notes { @@ -55,4 +61,4 @@ body { flex-direction: row; flex-wrap: wrap; justify-content: space-around; -} +} \ No newline at end of file diff --git a/src/components/css-components/taskForm.css b/src/components/css-components/taskForm.css index 5dec6d2..032dd9b 100644 --- a/src/components/css-components/taskForm.css +++ b/src/components/css-components/taskForm.css @@ -12,16 +12,16 @@ width: 260px; height: 30px; font-family: 'Marvel'; - border-radius: 20px 20px 0px 0px; - background-color: #FF92D3; - font-size: medium; + border-radius: 20px 20px 0px 0px; + background-color: #FF92D3; + font-size: x-large; border: none; - color:#CA2588; + color: #CA2588; padding: 10px; - - - +} +::placeholder { + color: #CA2588; } .text-description { @@ -42,11 +42,10 @@ border-radius: 0px 0px 20px 20px; border: none; background-color: #FABDE2; - font-size: medium; + font-size: large; color: #CA2588; padding: 10px; padding-bottom: 0; - padding-top: 0; } .dad-save { diff --git a/src/styles.css b/src/styles.css index bf14808..1431e89 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,11 +1,18 @@ +/* * { + margin: 0; + padding: 0; + border: 0; +} */ -body { +root { + height: 1024; + width: 768; +} - position: relative; - width: 768px; - height: 1280px; +body { + /* position: relative; */ + /* height: 1024; + width: 768; */ font-family: 'Marvel', sans-serif; background-color: #FCDCEF; - margin-top: 2%; - } \ No newline at end of file From be6b31973a2918f567460c396660c4f6676f59b9 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Fri, 10 Feb 2023 14:38:40 -0600 Subject: [PATCH 24/38] Firestore-Intento-404 --- src/components/Home.jsx | 44 +++++++++++++++++++------------------ src/components/TaskList.jsx | 12 +++++++++- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 7af98c5..808e461 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,48 +1,47 @@ import { useAuth } from "../context/authContext"; import { TaskList } from './TaskList'; import { TaskForm } from './TaskForm'; -import { tasks as data } from './tasks'; +// import { tasks as data } from './tasks'; import { useState, useEffect } from 'react'; import "./css-components/home.css"; -import {getFirestore, collection, addDoc, getDocs, doc, deleteDoc, getDoc, setDoc} from "firebase/firestore"; +import { getFirestore, collection, addDoc, onSnapshot, doc, deleteDoc, setDoc } from "firebase/firestore"; import { app } from "../Firebase"; const db = getFirestore(app) +// Funci贸n-Componente Home (p谩gina principal) + export function Home() { const { user, logout, loading } = useAuth() const [tasks, setTasks] = useState([]) useEffect(() => { - setTasks(data) + onSnapshot(collection(db, "notes"), (querySnapshot) => { //ordenarle en fecha tal vez sort(...data) + const data = []; + querySnapshot.forEach((doc) => { + data.push(doc.data()); + }) + setTasks(data); + console.log(tasks); + }) + }, [] ) + + // Funci贸n para Crear Nota------------------------- + function createNote(task) { - setTasks([...tasks, { - title: task.title, - id: tasks.length, - description: task.description - }]) try { - const saveNotes = addDoc(collection(db, "notes"), { + addDoc(collection(db, "notes"), { title: task.title, id: tasks.length, description: task.description }); - - saveNotes; - console.log(); - } catch (e) { + } catch (e) { console.error("Error adding document: ", e); - } + } } - // function saveNotes (tasks) { - // addDoc(collection(db, "notes"), { - // ...tasks - // }); - // console.log(tasks.title, tasks.id, tasks.description); - // } - + // Funci贸n de borrado------------------------ function deleteNote(taskId) { setTasks(tasks.filter(task => task.id !== taskId)) @@ -55,6 +54,9 @@ export function Home() { console.error(error); } }; + + // Logueo--------------------------- + if (loading) return

Loading

return
diff --git a/src/components/TaskList.jsx b/src/components/TaskList.jsx index 3b49ffd..8a0f73a 100644 --- a/src/components/TaskList.jsx +++ b/src/components/TaskList.jsx @@ -11,4 +11,14 @@ export function TaskList({ tasks, deleteNote }) { ))} ); -} \ No newline at end of file +} + +// Icarito +// getDocs +// onSnapshot +// getDocs ( query, ()=>{} ) +// (data)=>{} +// Sebastian Silva (茅l/him) to Everyone 8:08 AM +// querySnapshot +// Sebastian Silva (茅l/him) 8:18 AM +// key="..." \ No newline at end of file From 8fa1bd14470f46557e6e957871cb9e225626124a Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Fri, 10 Feb 2023 20:02:01 -0600 Subject: [PATCH 25/38] Firestore-ErrorDelete --- src/components/Home.jsx | 31 +++++++++++++++++++----------- src/components/NoteCard.jsx | 38 ++++++++++++++++++++++++++++--------- src/components/TaskList.jsx | 1 + 3 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 808e461..65cdcda 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -4,10 +4,10 @@ import { TaskForm } from './TaskForm'; // import { tasks as data } from './tasks'; import { useState, useEffect } from 'react'; import "./css-components/home.css"; -import { getFirestore, collection, addDoc, onSnapshot, doc, deleteDoc, setDoc } from "firebase/firestore"; +import { getFirestore, collection, addDoc, onSnapshot, deleteDoc, doc, setDoc } from "firebase/firestore"; import { app } from "../Firebase"; -const db = getFirestore(app) +export const db = getFirestore(app) // Funci贸n-Componente Home (p谩gina principal) @@ -23,7 +23,7 @@ export function Home() { setTasks(data); console.log(tasks); }) - + }, [] ) @@ -43,10 +43,24 @@ export function Home() { // Funci贸n de borrado------------------------ - function deleteNote(taskId) { - setTasks(tasks.filter(task => task.id !== taskId)) + const deleteNote = async (id) => { + await deleteDoc(doc(db, "notes", id)); } + + // function deleteNote(noteId) { + // deleteDoc(doc(db, "notes", noteId)) + // setTasks() + // } + // console.log(deleteNote); + + + // function deleteNote(taskId) { + // setTasks(tasks.filter(task => task.id !== taskId)) + // } + + // Logueo--------------------------- + const handledLogout = async () => { try { await logout(); @@ -55,8 +69,6 @@ export function Home() { } }; - // Logueo--------------------------- - if (loading) return

Loading

return
@@ -71,12 +83,9 @@ export function Home() {
- +
} - - - diff --git a/src/components/NoteCard.jsx b/src/components/NoteCard.jsx index 65772fd..fc744cf 100644 --- a/src/components/NoteCard.jsx +++ b/src/components/NoteCard.jsx @@ -1,18 +1,38 @@ import "./css-components/NoteCard.css"; +// import { deleteDoc, doc, setDoc } from "firebase/firestore"; +// import { db } from "./Home"; + +// Funci贸n de borrado-------------------------------------------------------- + +// const deleteNote = async (id) => { +// await deleteDoc(doc(db, "notes", id)) +// } + export function NoteCard({ task, deleteNote }) { + // const deleteNote = async (id) => { + // await deleteDoc(doc(db, "notes", id)) + // } + + // function deleteNote () { + // async (id) => { + // await deleteDoc(db, "notes", id) + // } + // } + return ( + <>
-
-

{task.title}

-

{task.description}

-
- deleteNote (task.id)} className="material-icons">favorite - deleteNote (task.id)} className="material-icons">edit - deleteNote (task.id)} className="material-icons">delete -
-
+
+

{task.title}

+

{task.description}

+
+ deleteNote(task.id)} className="material-icons">favorite + deleteNote(task.id)} className="material-icons">edit + deleteNote(task.id)} className="material-icons">delete +
+
); diff --git a/src/components/TaskList.jsx b/src/components/TaskList.jsx index 8a0f73a..f049746 100644 --- a/src/components/TaskList.jsx +++ b/src/components/TaskList.jsx @@ -1,4 +1,5 @@ import { NoteCard } from './NoteCard' + export function TaskList({ tasks, deleteNote }) { if (tasks.length === 0) { From 236e15381a98b96802498ffb07d9a65a3916c8b3 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Fri, 10 Feb 2023 20:57:11 -0600 Subject: [PATCH 26/38] cambios en firestore --- src/Firebase.jsx | 9 ++++++--- src/components/TaskForm.jsx | 5 ++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Firebase.jsx b/src/Firebase.jsx index 9d8f1f8..8521e10 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -2,12 +2,12 @@ import { initializeApp } from "firebase/app"; //Esto no estaba inactivo... import {getAuth} from 'firebase/auth'; -import {getFirestore} from "firebase/firestore"; +import {getFirestore, collection, addDoc } from "firebase/firestore"; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries - // Your web app's Firebase configuration + const firebaseConfig = { apiKey: "AIzaSyDfib1EmiLC416QHjYJ9OyZydV7Os-VCeg", authDomain: "journal-note-68a3b.firebaseapp.com", @@ -20,4 +20,7 @@ const firebaseConfig = { // Initialize Firebase export const app = initializeApp(firebaseConfig); export const auth = getAuth(app); -export const db = getFirestore(); \ No newline at end of file +export const db = getFirestore(); + +export const saveNotes = (title, description, id) => +addDoc(collection(db, "notes"), (title, description, id)); \ No newline at end of file diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx index d2c96b5..fb75c9b 100644 --- a/src/components/TaskForm.jsx +++ b/src/components/TaskForm.jsx @@ -1,16 +1,19 @@ import { useState } from "react"; import "./css-components/taskForm.css"; +import { saveNotes } from "../Firebase"; export function TaskForm({ createNote }) { const [title, setTitle] = useState(''); const [description, setDescription] = useState(''); const handleSubmit = (e) => { e.preventDefault(); - createNote({ title, description }); + + saveNotes(title, description, id) + console.log(saveNotes(title, description)); setTitle("") setDescription("") }; From f5e4319abe5634f951a4c06a6c7ecfdd27830e8c Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 13 Feb 2023 09:40:52 -0600 Subject: [PATCH 27/38] eliminar notas desde firestore --- src/Firebase.jsx | 4 +-- src/components/Home.jsx | 53 +++++++++++++++---------------------- src/components/NoteCard.jsx | 23 +++++----------- src/components/tasks.js | 23 ++++++++-------- 4 files changed, 42 insertions(+), 61 deletions(-) diff --git a/src/Firebase.jsx b/src/Firebase.jsx index 715510b..8d1ce64 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -2,7 +2,7 @@ import { initializeApp } from "firebase/app"; //Esto no estaba inactivo... import {getAuth} from 'firebase/auth'; -// import {getFirestore} from "firebase/firestore"; +import {getFirestore} from "firebase/firestore"; // TODO: Add SDKs for Firebase products that you want to use @@ -22,7 +22,7 @@ const firebaseConfig = { export const app = initializeApp(firebaseConfig); export const auth = getAuth(app); -// export const db = getFirestore(); +export const db = getFirestore(); // export const saveNotes = (title, description, id) => // addDoc(collection(db, "notes"), (title, description, id)); diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 65cdcda..21ce112 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,14 +1,14 @@ import { useAuth } from "../context/authContext"; import { TaskList } from './TaskList'; import { TaskForm } from './TaskForm'; -// import { tasks as data } from './tasks'; import { useState, useEffect } from 'react'; import "./css-components/home.css"; import { getFirestore, collection, addDoc, onSnapshot, deleteDoc, doc, setDoc } from "firebase/firestore"; import { app } from "../Firebase"; export const db = getFirestore(app) - +// import { async } from "@firebase/util"; +// import { tasks as data } from './tasks'; // Funci贸n-Componente Home (p谩gina principal) export function Home() { @@ -16,17 +16,17 @@ export function Home() { const [tasks, setTasks] = useState([]) useEffect(() => { onSnapshot(collection(db, "notes"), (querySnapshot) => { //ordenarle en fecha tal vez sort(...data) - const data = []; + const docs = []; querySnapshot.forEach((doc) => { - data.push(doc.data()); - }) - setTasks(data); - console.log(tasks); + docs.push({...doc.data(), id: doc.id }); + }); + setTasks(docs); + // console.log(doc.id); + }) }, [] ) - // Funci贸n para Crear Nota------------------------- function createNote(task) { @@ -40,25 +40,6 @@ export function Home() { console.error("Error adding document: ", e); } } - - // Funci贸n de borrado------------------------ - - const deleteNote = async (id) => { - await deleteDoc(doc(db, "notes", id)); - } - - - // function deleteNote(noteId) { - // deleteDoc(doc(db, "notes", noteId)) - // setTasks() - // } - // console.log(deleteNote); - - - // function deleteNote(taskId) { - // setTasks(tasks.filter(task => task.id !== taskId)) - // } - // Logueo--------------------------- const handledLogout = async () => { @@ -74,18 +55,28 @@ export function Home() {
- + +

馃挆鉁╓elcome to Journal Note鉁煉
{user.displayName || user.email}

Remember this is important to you !

- -
- +
} + + // function deleteNote(noteId) { + // deleteDoc(doc(db, "notes", noteId)) + // setTasks() + // } + // console.log(deleteNote); + + + // function deleteNote(taskId) { + // setTasks(tasks.filter(task => task.id !== taskId)) + // } diff --git a/src/components/NoteCard.jsx b/src/components/NoteCard.jsx index fc744cf..50b1bb3 100644 --- a/src/components/NoteCard.jsx +++ b/src/components/NoteCard.jsx @@ -1,24 +1,15 @@ import "./css-components/NoteCard.css"; -// import { deleteDoc, doc, setDoc } from "firebase/firestore"; -// import { db } from "./Home"; +import { deleteDoc, doc, setDoc, collection } from "firebase/firestore"; +import { db } from "./Home"; // Funci贸n de borrado-------------------------------------------------------- + const deleteNote = async (id) => { + const deleteId = id.toString() + await deleteDoc(doc(db, "notes", deleteId)); -// const deleteNote = async (id) => { -// await deleteDoc(doc(db, "notes", id)) -// } - -export function NoteCard({ task, deleteNote }) { - - // const deleteNote = async (id) => { - // await deleteDoc(doc(db, "notes", id)) - // } +} - // function deleteNote () { - // async (id) => { - // await deleteDoc(db, "notes", id) - // } - // } +export function NoteCard({ task}) { return ( diff --git a/src/components/tasks.js b/src/components/tasks.js index 2ad2fcd..4df756d 100644 --- a/src/components/tasks.js +++ b/src/components/tasks.js @@ -1,15 +1,14 @@ -export const tasks = [ +// export const tasks = [ -{ - id: 0, - title: 'Example note one', - description: 'Welcome to Journal Note 馃挆 Here I describe my first note' -}, -{ - id: 1, - title: 'Example note two', - description: 'Welcome to Journal Note 馃挆 Here I describe my second note' -}, +// { +// id: 0, +// title: 'Example note one', +// description: 'Welcome to Journal Note 馃挆 Here I describe my first note' +// }, +// { +// id: 1, +// title: 'Example note two', +// description: 'Welcome to Journal Note 馃挆 Here I describe my second note' +// }, -] \ No newline at end of file From 0815b347a913dbf2ca6c59c4f1c52ab7bdfdd15d Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 13 Feb 2023 09:42:36 -0600 Subject: [PATCH 28/38] cambios en readmee --- README.md | 644 +++++++++++------------------------------------------- 1 file changed, 132 insertions(+), 512 deletions(-) diff --git a/README.md b/README.md index 718321f..28e436f 100644 --- a/README.md +++ b/README.md @@ -1,522 +1,182 @@ -# Lab Notes - +# Journal Note +![imagen-de-pagina-desplegada] +*** ## 脥ndice -* [1. Pre谩mbulo](#1-pre谩mbulo) -* [2. Resumen del Proyecto](#2-resumen-del-proyecto) -* [3. Objetivos de Aprendizaje](#3-objetivos-de-aprendizaje) -* [4. Consideraciones generales](#4-consideraciones-generales) -* [5. Criterios de aceptaci贸n m铆nimos del proyecto](#5-criterios-de-aceptaci贸n-m铆nimos-del-proyecto) -* [6. Consideraciones t茅cnicas](#6-consideraciones-t茅cnicas) -* [7. Hacker Edition](#7-hacker-edition) -* [8. Pistas, tips y lecturas complementarias](#8-pistas-tips-y-lecturas-complementarias) +* [1. Introducci贸n](#1-introducci贸n) +* [2. Descripci贸n del Proyecto](#2-descripci贸n-del-proyecto) +* [3. Objetivos del Proyecto](#3-objetivos-del-proyecto) +* [3.1 Objetivos generales](#3.1-objetivos-generales) +* [3.2 Objetivos espec铆ficos](#3.2-objetivos-espec铆ficos) +* [3.3 Objetivos de aprendizaje](#3.3-objetivos-de-aprendizaje) +* [4. Desarrollo del proyecto](#4-Desarrollo-del-proyecto) +* [4.1 Historia de usuaria 1](#4.1-historia-de-usuaria-1) +* [4.2 Historia de usuaria 2](#4.2-historia-de-usuaria-2) +* [4.3 Historia de usuaria 3](#4.3-historia-de-usuaria-3) +* [4.4 Historia de usuaria 4](#4.4-historia-de-usuaria-4) +* [4.5 Historia de usuaria 5](#4.5-historia-de-usuaria-5) +* [5. Prototipos](#5-prototipos) +* [5.1 Prototipos de baja fidelidad](#5.1-prototipos-de-baja-fidelidad) +* [5.2 Prototipos de alta fidelidad](#5.2-prototipos-de-alta-fidelidad) +* [6. Consideraciones generales](#6-consideraciones-generales) +* [7. Criterios de aceptaci贸n m铆nimos del proyecto](#7-criterios-de-aceptaci贸n-m铆nimos-del-proyecto) +* [8. Consideraciones t茅cnicas](#8-consideraciones-t茅cnicas) +* [9. Tecnolog铆as utilizadas](#9-tecnolog铆as-utilizadas) +* [10. Conclusiones del proyecto](#10-conclusiones-del-proyecto) *** -## 1. Pre谩mbulo - -Hoy en d铆a no es pr谩ctico imaginar el desarrollo web sin HTML, CSS y JavaScript, -esta 煤ltima es el alma del desarrollo de aplicaciones web. -[React](https://reactjs.org/), [Angular](https://angular.io/) y [Vue](https://vuejs.org/) -son algunos de los _frameworks_ y _librer铆as_ de JavaScript m谩s utilizados por -lxs desarrolladorxs alrededor del mundo, y hay una raz贸n para eso. -En el contexto del navegador, [_mantener la interfaz sincronizada con el estado -es dif铆cil_](https://medium.com/dailyjs/the-deepest-reason-why-modern-javascript-frameworks-exist-933b86ebc445). -Al elegir un _framework_ o _librer铆a_ para nuestra interfaz, nos apoyamos en una -serie de convenciones e implementaciones _probadas_ y _documentadas_ para -resolver un problema com煤n a toda interfaz web. Esto nos permite concentrarnos -mejor (dedicar m谩s tiempo) en las caracter铆sticas _espec铆ficas_ de -nuestra aplicaci贸n. - -Cuando elegimos una de estas tecnolog铆as no solo importamos un pedacito de -c贸digo para reusar (lo cual es un gran valor per se), si no que adoptamos una -**arquitectura**, una serie de **principios de dise帽o**, un **paradigma**, unas -**abstracciones**, un **vocabulario**, una **comunidad**, etc. +## 1. Introducci贸n +*** +PENDIENTE ................................................... -Como desarrolladora front-end, estos kits de desarrollo pueden resultarte -de gran ayuda para implementar r谩pidamente caracter铆sticas de los proyectos en -los que trabajes. +## 2. Descripci贸n del proyecto +*** +En este proyecto se construy贸 una aplicaci贸n llamada 鈥楯OURNAL NOTE鈥 que tiene como objetivo permitir a la usuaria de manera digital tomar notas, editar, eliminar y consultarlas cuando as铆 lo requiera. +La ventaja que tiene esta app es que puedes apuntar cualquier informaci贸n que necesites en muy poco tiempo. +Debido a lo anterior, se elabor贸 un producto digital en el cual se pueda capturar datos importantes del d铆a a d铆a de forma din谩mica y de acuerdo a sus necesidades y haci茅ndolo desde un ordenador, tablet o en el m贸vil. -## 2. Resumen del Proyecto +Para este proyecto fue necesario completar los OAs trabajando de manera colaborativa (dupla). Para ello fue indispensable realizar prototipos de baja y alta fidelidad, manejo de React (librer铆a JS) HTML sem谩ntico, JavaScript, CSS, web APIs, base de datos como firebase(AUTH) y firestore, Vite como empaquetador, control de versiones con GIT-GITHUB as铆 como testeos de usabilidad. El conjunto de estas funciones nos llevar谩 a una interfaz donde se mostrar谩 la aplicaci贸n una vez se registre con correo electr贸nico o google para entrar y crear sus notas personalizadas de manera organizada y manejable para el usuario final. -En este proyecto construiremos una aplicaci贸n para tomar notas, que nos permita -crear, editar, eliminar y consultarlas en cualquier momento. +## 3. Objetivos del proyecto +*** +Reflexionar y luego marcar los objetivos que hemos llegado a entender y aplicarlo. -No existe d铆a que no tomemos notas, siempre necesitamos apuntar alguna -direcci贸n, n煤mero telef贸nico, notas de alguna reuni贸n o guardar nuestras URLs -favoritas para poder consultarlas m谩s tarde. Muchas veces para esta actividad -utilizamos libretas o agendas que terminan siendo olvidadas, o anotamos de -manera dispersa de tal manera que perdemos de vista la prioridad y el prop贸sito -de la nota lo cual da como resultado una nota perdida. +### 3.1 Objetivos generales -![Shows CRUD functionalities](https://raw.githubusercontent.com/florenciasilva/lab-notes/master/demo-crud.gif?token=AGJBHNTVAQRWOVF2IGMP6FK5NVFAS) +El objetivo principal de este proyecto es aprender a dise帽ar y construir una interfaz web donde se pueda visualizar y manipular sus notas y mantener la interfaz y el estado sincronizados. -El objetivo principal de este proyecto es aprender a construir una _interfaz -web_ usando el _framework_ elegido. Todos estos frameworks de Frontend atacan el -mismo problema: **c贸mo mantener la interfaz y el estado sincronizados**. As铆 que -esta experiencia espera familiarizarte con el concepto de _estado de pantalla_, -y c贸mo cada cambio sobre el estado se va a ir reflejando en la interfaz (por -ejemplo, cada vez que agregamos una _nota_, la interfaz debe actualizar la lista -de notas). +### 3.2 Objetivos espec铆ficos -## 3. Objetivos de Aprendizaje +Buscar y entender qui茅n es la usuaria y cuales son sus necesidades creando una interfaz din谩mica y f谩cil de manejar que permite registrar en su propia base de datos de todas sus notas as铆 como, editar, guardar y eliminar de ser necesario. -Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo. +### 3.2 Objetivos de aprendizaje ### HTML -- [ ] **Uso de HTML sem谩ntico** - -
Links

- - * [HTML sem谩ntico](https://curriculum.laboratoria.la/es/topics/html/02-html5/02-semantic-html) - * [Semantics - MDN Web Docs Glossary](https://developer.mozilla.org/en-US/docs/Glossary/Semantics#Semantics_in_HTML) -

+- Uso de HTML sem谩ntico ### CSS -- [ ] **Uso de selectores de CSS** - -
Links

- - * [Intro a CSS](https://curriculum.laboratoria.la/es/topics/css/01-css/01-intro-css) - * [CSS Selectors - MDN](https://developer.mozilla.org/es/docs/Web/CSS/CSS_Selectors) -

- -- [ ] **Modelo de caja (box model): borde, margen, padding** - -
Links

- - * [Box Model & Display](https://curriculum.laboratoria.la/es/topics/css/01-css/02-boxmodel-and-display) - * [The box model - MDN](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model) - * [Introduction to the CSS box model - MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model) - * [CSS display - MDN](https://developer.mozilla.org/pt-BR/docs/Web/CSS/display) - * [display - CSS Tricks](https://css-tricks.com/almanac/properties/d/display/) -

- -- [ ] **Uso de flexbox en CSS** - -
Links

- - * [A Complete Guide to Flexbox - CSS Tricks](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) - * [Flexbox Froggy](https://flexboxfroggy.com/#es) - * [Flexbox - MDN](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) -

- -- [ ] **Uso de CSS Grid Layout** - -
Links

- - * [A Complete Guide to Grid - CSS Tricks](https://css-tricks.com/snippets/css/complete-guide-grid/) - * [Grids - MDN](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids) -

- -- [ ] **Uso de media queries** - -
Links

- - * [CSS media queries - MDN](https://developer.mozilla.org/es/docs/CSS/Media_queries) -

+- Uso de selectores de CSS +- Modelo de caja (box model): borde, margen, padding +- Uso de flexbox en CSS** +- Uso de CSS Grid Layout +- Uso de media queries ### JavaScript -- [ ] **Arrays (arreglos)** - -
Links

- - * [Arreglos](https://curriculum.laboratoria.la/es/topics/javascript/04-arrays) - * [Array - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/) - * [Array.prototype.sort() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) - * [Array.prototype.forEach() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) - * [Array.prototype.map() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/map) - * [Array.prototype.filter() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) - * [Array.prototype.reduce() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce) -

- -- [ ] **Objetos (key, value)** - -
Links

- - * [Objetos en JavaScript](https://curriculum.laboratoria.la/es/topics/javascript/05-objects/01-objects) -

- -- [ ] **Diferenciar entre tipos de datos primitivos y no primitivos** - -- [ ] **Uso de condicionales (if-else, switch, operador ternario, l贸gica booleana)** - -
Links

- - * [Estructuras condicionales y repetitivas](https://curriculum.laboratoria.la/es/topics/javascript/02-flow-control/01-conditionals-and-loops) - * [Tomando decisiones en tu c贸digo 鈥 condicionales - MDN](https://developer.mozilla.org/es/docs/Learn/JavaScript/Building_blocks/conditionals) -

- -- [ ] **Funciones (params, args, return)** - -
Links

- - * [Funciones (control de flujo)](https://curriculum.laboratoria.la/es/topics/javascript/02-flow-control/03-functions) - * [Funciones cl谩sicas](https://curriculum.laboratoria.la/es/topics/javascript/03-functions/01-classic) - * [Arrow Functions](https://curriculum.laboratoria.la/es/topics/javascript/03-functions/02-arrow) - * [Funciones 鈥 bloques de c贸digo reutilizables - MDN](https://developer.mozilla.org/es/docs/Learn/JavaScript/Building_blocks/Functions) -

- -- [ ] **Pruebas unitarias (unit tests)** - -
Links

- - * [Empezando con Jest - Documentaci贸n oficial](https://jestjs.io/docs/es-ES/getting-started) -

- -- [ ] **Pruebas as铆ncronas** - -
Links

- - * [Tests de c贸digo asincr贸nico con Jest - Documentaci贸n oficial](https://jestjs.io/docs/es-ES/asynchronous) -

- -- [ ] **Uso de mocks y esp铆as** - -
Links

- - * [Manual Mocks con Jest - Documentaci贸n oficial](https://jestjs.io/docs/es-ES/manual-mocks) -

- -- [ ] **Uso de linter (ESLINT)** - -- [ ] **Uso de identificadores descriptivos (Nomenclatura y Sem谩ntica)** - -- [ ] **Diferenciar entre expresiones (expressions) y sentencias (statements)** +- Arrays (arreglos) +- Objetos (key, value) +- Diferenciar entre tipos de datos primitivos y no primitivos +- Uso de condicionales (if-else, switch, operador ternario, l贸gica booleana) +- Funciones (params, args, return) +- Pruebas unitarias (unit tests) +- Pruebas as铆ncronas +- Uso de mocks y esp铆as +- Uso de linter (ESLINT) +- Uso de identificadores descriptivos (Nomenclatura y Sem谩ntica) +- Diferenciar entre expresiones (expressions) y sentencias (statements) ### Control de Versiones (Git y GitHub) -- [ ] **Git: Instalaci贸n y configuraci贸n** - -- [ ] **Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)** - -- [ ] **Git: Integraci贸n de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)** - -- [ ] **GitHub: Creaci贸n de cuenta y repos, configuraci贸n de llaves SSH** - -- [ ] **GitHub: Despliegue con GitHub Pages** - -
Links

- - * [Sitio oficial de GitHub Pages](https://pages.github.com/) -

- -### Centrado en el usuario - -- [ ] **Dise帽ar y desarrollar un producto o servicio poniendo a las usuarias en el centro** - -### Dise帽o de producto - -- [ ] **Crear prototipos de alta fidelidad que incluyan interacciones** - -- [ ] **Seguir los principios b谩sicos de dise帽o visual** +- Git: Instalaci贸n y configuraci贸n +- Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote) +- Git: Integraci贸n de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag) +- GitHub: Creaci贸n de cuenta y repos, configuraci贸n de llaves SSH +- GitHub: Despliegue con GitHub Pages ### Firebase -- [ ] **Firebase Auth** - -
Links

- - * [Primeros pasos con Firebase Authentication en sitios web - Documentaci贸n oficial](https://firebase.google.com/docs/auth/web/start?hl=es) - * [Administra usuarios en Firebase (onAuthStateChanged)](https://firebase.google.com/docs/auth/web/manage-users?hl=es#get_the_currently_signed-in_user) -

- -- [ ] **Firestore** - -
Links

- - * [Firestore - Documentaci贸n oficial](https://firebase.google.com/docs/firestore?hl=es) - * [Reglas de seguridad de Firestore - Documentaci贸n oficial](https://firebase.google.com/docs/rules?hl=es) - * [Obt茅n actualizaciones en tiempo real con Cloud Firestore - Documentaci贸n oficial](https://firebase.google.com/docs/firestore/query-data/listen?hl=es) -

- -### Angular - -- [ ] **Components & templates** - -
Links

- - * [Angular Components Overview - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/component-overview) - * [Introduction to components and templates - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/architecture-components#introduction-to-components) -

- -- [ ] **Directivas estructurales (ngIf / ngFor)** - -
Links

- - * [Writing structural directives - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/structural-directives) -

- -- [ ] **@Input | @Output** - -
Links

- - * [Component interaction - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/component-interaction#component-interaction) -

- -- [ ] **Creaci贸n y uso de servicios** - -
Links

- - * [Providing services - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/architecture-services#providing-services) -

- -- [ ] **Manejo de rutas** - -
Links

- - * [In-app navigation: routing to views - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/router) -

- -- [ ] **Creaci贸n y uso de Observables.** - -
Links

- - * [Observables in Angular - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/observables-in-angular) -

- -- [ ] **Uso de HttpClient** - -
Links

- - * [Communicating with backend services using HTTP - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/http) -

- -- [ ] **Estilos de componentes (ngStyle / ngClass)** - -
Links

- - * [Template syntax - Documentaci贸n oficial (en ingl茅s)](https://angular.io/guide/template-syntax#built-in-directives) -

+- Firebase Auth +- Firestore ### React -- [ ] **JSX** - -
Links

- - * [Presentando JSX - Documentaci贸n oficial](https://es.reactjs.org/docs/introducing-jsx.html) -

- -- [ ] **Componentes y propiedades (props)** - -
Links

- - * [Componentes y propiedades - Documentaci贸n oficial](https://es.reactjs.org/docs/components-and-props.html) -

- -- [ ] **Manejo de eventos** - -
Links

- - * [Manejando eventos - Documentaci贸n oficial](https://es.reactjs.org/docs/handling-events.html) -

- -- [ ] **Listas y keys** - -
Links

- - * [Listas y keys - Documentaci贸n oficial](https://es.reactjs.org/docs/lists-and-keys.html) -

- -- [ ] **Renderizado condicional** - -
Links

- - * [Renderizado condicional - Documentaci贸n oficial](https://es.reactjs.org/docs/conditional-rendering.html) -

- -- [ ] **Elevaci贸n de estado** - -
Links

- - * [Levantando el estado - Documentaci贸n oficial](https://es.reactjs.org/docs/lifting-state-up.html) -

- -- [ ] **Hooks** - -
Links

- - * [Presentando Hooks - Documentaci贸n oficial](https://es.reactjs.org/docs/hooks-intro.html) -

- -- [ ] **CSS modules** - -
Links

- - * [Adding a CSS Modules Stylesheet - Documentaci贸n de Create React App (en ingl茅s)](https://create-react-app.dev/docs/adding-a-css-modules-stylesheet/) -

- -- [ ] **React Router** - -
Links

- - * [Quick Start - Documentaci贸n oficial (en ingl茅s)](https://reactrouter.com/web/guides/quick-start) -

- -### Vue - -- [ ] **Instancia de Vue.js** - -
Links

- - * [La instancia Vue - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/instance.html) -

- -- [ ] **Datos y m茅todos** - -
Links

- - * [Datos y M茅todos - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/instance.html#Datos-y-Metodos) -

- -- [ ] **Uso y creaci贸n de componentes** - -
Links

- - * [Conceptos B谩sicos de Componentes - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/components.html) -

- -- [ ] **Props** - -
Links

- - * [Pasando datos a componentes secundarios con Props - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/components.html#Pasando-datos-a-componentes-secundarios-con-Props) -

- -- [ ] **Directivas (v-bind | v-model)** - -
Links

- - * [v-bind - Documentaci贸n oficial](https://es.vuejs.org/v2/api/#v-bind) - * [Binding en Formularios - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/forms.html) -

- -- [ ] **Iteraci贸n (v-for)** - -
Links

- - * [Mapeando una matriz a elementos con v-for - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/list.html#Mapeando-una-matriz-a-elementos-con-v-for) -

- -- [ ] **Eventos (v-on)** - -
Links

- - * [Manejo de eventos - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/events.html) -

- -- [ ] **Propiedades Computadas y Observadores** - -
Links

- - * [Propiedades Computadas y Observadores](https://es.vuejs.org/v2/guide/computed.html) -

+- JSX +- Componentes y propiedades (props) +- Manejo de eventos +- Listas y keys +- Renderizado condicional +- Elevaci贸n de estado +- Hooks +- CSS modules +- React Router +- Datos y m茅todos +- Uso y creaci贸n de componentes +- Props +- Directivas (v-bind | v-model) +- Iteraci贸n (v-for) +- Eventos (v-on) +- Propiedades Computadas y Observadores + +## 4. Desarrollo del proyecto +*** +### 4.1 Historia de usuaria 1 -- [ ] **Routing** +* Deber铆a poder crear cuenta, iniciar y cerrar sesi贸n. -
Links

+* Yo como usuaria debo poder crear una cuenta y autenticarse usando el login de Google para acceder a mis notas. - * [Getting Started - Documentaci贸n oficial de Vue Router](https://router.vuejs.org/guide/#html) -

+### 4.2 Historia de usuaria 2 -- [ ] **Clases y Estilos** +* Deber铆a poder tomar nota -
Links

+* Yo como usuaria quiero tomar nota para no depender de mi mala memoria y tener presente en todo momento los apuntes o cosas importantes que antes escrib铆a en papel. - * [Enlace Clases y Estilos - Documentaci贸n oficial](https://es.vuejs.org/v2/guide/class-and-style.html) -

+### 4.3 Historia de usuaria 3 -## 4. Consideraciones generales +* Deber铆a poder ver las notas -* Este proyecto se debe "resolver" de forma individual. +* yo como usuaria quiero leer mis notas para poder modificar lo que escrib铆 antes. -* La duraci贸n estimada del proyecto es de 4 sprints, con una duraci贸n de una - semana cada uno. +### 4.4 Historia de usuaria 4 -* Trabaja en una historia hasta terminarla antes de pasar a la siguiente. +* Deber铆a poder editar mis notas -* La aplicaci贸n debe ser un _Single Page App_. Las notas ser谩n realizadas desde -una _tablet_, pero **no debe ser una app nativa**, sino una web app que sea -**responsive** y pueda funcionar **offline**. +* Yo como usuaria quiero editar mis notas para poder modificar lo que escrib铆 antes. -* Necesitamos pensar bien en el aspecto UX de quienes van a tomar las notas, el -tama帽o y aspecto de los botones, la visibilidad del estado actual del pedido, -etc. +### 4.5 Historia de usuaria 5 -* Implementar pruebas unitarias de tus componentes. +* Deber铆a poder borrar notas -## 5. Criterios de aceptaci贸n m铆nimos del proyecto +* Yo como usuaria quiero borrar una nota para no volver a verla. -### Definici贸n del producto +## 5. Prototipos -La [_Product Owner_](https://youtu.be/r2hU7MVIzxs) nos presenta este _backlog_ -que es el resultado de su trabajo colaborativo. +### 5.1 prototipos de baja fidelidad +![imagen-prototipos-de-baja-fidelidad] ..................... *** +Estos prototipos fueron pensados para la mujer digital, buscando como objetivo que la utilizaci贸n sea sumamente f谩cil y simple. -### Historias de usuaria -#### [Historia de usuaria 1] Deber铆a poder crear cuenta, iniciar y cerrar sesi贸n - -Yo como usuaria debo poder crear una cuenta y autenticarme usando login de -Google para acceder a mis notas. +### 5.2 prototipos de alta fidelidad +![imagen-prototipos-de-alta-fidelidad] ...................... *** +Bas谩ndonos en los prototipos de baja fidelidad, reestructuramos y determinamos paleta de colores a utilizar, as铆 como la fuentes de las letras, el logo y din谩mica de c贸mo se mostrar谩 la p谩gina de primeras en una tablet usando como recurso Figma. -#### [Historia de usuaria 2] Deber铆a poder tomar nota - -Yo como usuaria quiero tomar nota para no depender de mi mala -memoria y tener presente en todo momento los apuntes 贸 cosas importantes que -antes escrib铆a en papel. - +## 6. Consideraciones generales *** +- El proyecto se resolvi贸 en dupla. +- duraci贸n estimada del proyecto de 4 sprints, con una duraci贸n de una semana cada uno. +- La aplicaci贸n debe ser Single Page App, las notas ser谩n realizadas a partir de una tablet pero a la vez responsive. +- Necesitamos pensar bien en el aspecto UX de quienes van a tomar las notas, el tama帽o y aspecto de los botones, la visibilidad del estado actual del pedido, etc. +- implementaci贸n de pruebas unitarias de sus componentes. -#### [Historia de usuaria 3] Deber铆a poder ver las notas - -Yo como usuaria quiero leer mis notas para recordar lo que escrib铆 -antes. - +## 7. Criterios de aceptaci贸n m铆nimos del proyecto *** - -#### [Historia de usuaria 4] Deber铆a poder editar las notas - -Yo como usuaria quiero editar notas para poder modificar lo que -escrib铆 antes. - +Lo que debe ocurrir para que se satisfagan las necesidades del usuario. +- Anotar el t铆tulo de la nota +- Agregar contenido de la nota +- Ver todas mis notas +- Ver la 煤ltima modificaci贸n de mi nota +- Eliminar notas +- Se ve y funciona bien en una tablet + +## 8. Consideraciones t茅cnicas *** - -#### [Historia de usuaria 5] Deber铆a poder borrar notas - -Yo como usuaria quiero borrar una nota para no volver a verla. - -*** - -##### Criterios de aceptaci贸n - -Lo que debe ocurrir para que se satisfagan las necesidades del usuario - -* Anotar un t铆tulo a mi nota -* Agregar el contenido de mi nota. -* Ver todas mis notas. -* Ver la 煤ltima modificaci贸n de la nota. -* Modificar las notas. -* Eliminar notas. -* Se ve y funciona bien en una _Tablet_ - -##### Definici贸n de terminado - -Lo acordado que debe ocurrir para decir que la historia est谩 terminada. - -* Debes haber recibido _code review_ de al menos una compa帽era. -* Haces _test_ unitarios y, adem谩s, has testeado tu producto manualmente. -* Desplegaste tu aplicaci贸n y has etiquetado tu versi贸n ([`git tag`](https://youtu.be/5DkX3HFgklM)). - -## 6. Consideraciones t茅cnicas - El proyecto deber谩 contener los siguientes archivos base de configuraci贸n, aunque no ser谩n los 煤nicos archivos que quiz谩s tendr谩s que crear. @@ -528,57 +188,17 @@ aunque no ser谩n los 煤nicos archivos que quiz谩s tendr谩s que crear. * `.eslintrc` este archivo contiene reglas para formatear el c贸digo adem谩s de ser una buena practica tener configurado un linter. -Para este proyecto necesitas crear una Web App con **una librer铆a o -framework de JavaScript** (`React`, `Angular` o `Vue`) y **Firebase**. - -Para este proyecto tendr谩s que manejar _vistas_. Esto significa que cada secci贸n -tendr谩 su propia URL, la cual indica que _vista_ o _componente_ ser谩 mostrado en -pantalla. Para ello necesitaremos investigar acerca de _la API para el manejo de -rutas (en la librer铆a o framework que elijas)_ y el concepto de _Single Page -Application_. - -## 7. Hacker Edition +Para este proyecto se crea una Web App con una librer铆a de JavaScript en nuestro caso React y Firebase. -Una vez que hayas terminado las funcionalidades base del proyecto, puedes -pasarte a esta secci贸n. - -* Si la usuaria empieza a escribir una nota y por alguna raz贸n la pesta帽a del - navegador se cierra, cuando la vuelva a abrir, la nota deber铆a mostrarse como - estaba. -* Subir im谩genes. -* Ver el n煤mero de veces que he editado mi nota. -* Consumo de API/s (Google Maps, Spotify, Pinterest, etc.) -* Progressive Web App (PWA). -* Puedes crear categor铆as y clasificar por tipo de nota. -* Guardar el color de la nota. -* Crear una nota como publica. - -## 8. Pistas, tips y lecturas complementarias - -### Frameworks / libraries - -* [React](https://reactjs.org/) -* [Angular](https://angular.io/) -* [Vue](https://es.vuejs.org/index.html) - -### Herramientas - -* [npm-scripts](https://docs.npmjs.com/misc/scripts) -* [Babel](https://babeljs.io/) -* [webpack](https://webpack.js.org/) - -### PWA - -* [Tu primera Progressive Web App - Google developers](https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=es) -* [Progressive Web Apps - codigofacilito.com](https://codigofacilito.com/articulos/progressive-apps) -* [offlinefirst.org](http://offlinefirst.org/) -* [Usando Service Workers - MDN](https://developer.mozilla.org/es/docs/Web/API/Service_Worker_API/Using_Service_Workers) -* [C贸mo habilitar datos sin conexi贸n - Firebase Docs](https://firebase.google.com/docs/firestore/manage-data/enable-offline?hl=es-419) +## 9. Tecnolog铆as utilizadas +*** +- Visual Studio Code +- Git y GitHub +- React +- Vite +- Figma -### Otros recursos -* [create-react-app](https://create-react-app.dev/docs/getting-started) -* [npm-scripts](https://docs.npmjs.com/misc/scripts) -* [deploy con gh-pages](https://medium.com/the-andela-way/how-to-deploy-your-react-application-to-github-pages-in-less-than-5-minutes-8c5f665a2d2a) -* [Usando Service Workers - MDN](https://developer.mozilla.org/es/docs/Web/API/Service_Worker_API/Using_Service_Workers) -* [What is a Single Page Application](https://medium.com/@NeotericEU/single-page-application-vs-multiple-page-application-2591588efe58) +## 10. Conclusiones del proyecto +*** +PENDIENTE............................... \ No newline at end of file From f7870d4d5f5a30b16abc3a51cf9b6c8910bcb1b6 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Tue, 14 Feb 2023 10:52:32 -0600 Subject: [PATCH 29/38] NoteContext --- src/App.jsx | 26 ++++++------ src/Firebase.jsx | 10 +---- src/components/Home.jsx | 51 +++++----------------- src/components/NoteCard.jsx | 22 ++++------ src/components/TaskForm.jsx | 18 ++++---- src/components/TaskList.jsx | 25 +++++------ src/context/NoteContext.jsx | 85 +++++++++++++++++++++++++++++++++++++ 7 files changed, 140 insertions(+), 97 deletions(-) create mode 100644 src/context/NoteContext.jsx diff --git a/src/App.jsx b/src/App.jsx index 2ea9d06..f955b40 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -4,25 +4,27 @@ import { Login } from './components/Login'; import { ProtectedRoute } from './components/ProtectedRoute'; import { Register } from './components/Register'; import { AuthProvider } from './context/authContext'; +import { NoteContextProvider } from './context/NoteContext'; function App() { return (
- - - - - - } /> - } /> - } /> - + + + + + + } /> + } /> + } /> + +
) diff --git a/src/Firebase.jsx b/src/Firebase.jsx index 8d1ce64..c1d441d 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -2,9 +2,6 @@ import { initializeApp } from "firebase/app"; //Esto no estaba inactivo... import {getAuth} from 'firebase/auth'; -import {getFirestore} from "firebase/firestore"; - - // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries // Your web app's Firebase configuration @@ -20,9 +17,4 @@ const firebaseConfig = { // Initialize Firebase export const app = initializeApp(firebaseConfig); -export const auth = getAuth(app); - -export const db = getFirestore(); - -// export const saveNotes = (title, description, id) => -// addDoc(collection(db, "notes"), (title, description, id)); +export const auth = getAuth(app); \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 21ce112..2f98daa 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,45 +1,13 @@ import { useAuth } from "../context/authContext"; import { TaskList } from './TaskList'; import { TaskForm } from './TaskForm'; -import { useState, useEffect } from 'react'; import "./css-components/home.css"; -import { getFirestore, collection, addDoc, onSnapshot, deleteDoc, doc, setDoc } from "firebase/firestore"; import { app } from "../Firebase"; -export const db = getFirestore(app) -// import { async } from "@firebase/util"; -// import { tasks as data } from './tasks'; -// Funci贸n-Componente Home (p谩gina principal) export function Home() { const { user, logout, loading } = useAuth() - const [tasks, setTasks] = useState([]) - useEffect(() => { - onSnapshot(collection(db, "notes"), (querySnapshot) => { //ordenarle en fecha tal vez sort(...data) - const docs = []; - querySnapshot.forEach((doc) => { - docs.push({...doc.data(), id: doc.id }); - }); - setTasks(docs); - // console.log(doc.id); - - }) - }, [] - ) - // Funci贸n para Crear Nota------------------------- - - function createNote(task) { - try { - addDoc(collection(db, "notes"), { - title: task.title, - id: tasks.length, - description: task.description - }); - } catch (e) { - console.error("Error adding document: ", e); - } - } // Logueo--------------------------- const handledLogout = async () => { @@ -51,25 +19,28 @@ export function Home() { }; if (loading) return

Loading

- return
+ return <>
- - +

馃挆鉁╓elcome to Journal Note鉁煉
- {user.displayName || user.email}

+ {user.displayName || user.email} + +

Remember this is important to you !

- -
- + +
+
-
+ } + + // function deleteNote(noteId) { // deleteDoc(doc(db, "notes", noteId)) // setTasks() diff --git a/src/components/NoteCard.jsx b/src/components/NoteCard.jsx index 50b1bb3..9e48885 100644 --- a/src/components/NoteCard.jsx +++ b/src/components/NoteCard.jsx @@ -1,27 +1,23 @@ +import { useContext } from "react"; +import { NoteContext } from "../context/NoteContext" import "./css-components/NoteCard.css"; -import { deleteDoc, doc, setDoc, collection } from "firebase/firestore"; -import { db } from "./Home"; -// Funci贸n de borrado-------------------------------------------------------- - const deleteNote = async (id) => { - const deleteId = id.toString() - await deleteDoc(doc(db, "notes", deleteId)); +export function NoteCard({ journal }) { -} + const { deleteNote, setEditNote } = useContext(NoteContext) -export function NoteCard({ task}) { + console.log (journal); return ( <>
-

{task.title}

-

{task.description}

+

{journal.title}

+

{journal.description}

- deleteNote(task.id)} className="material-icons">favorite - deleteNote(task.id)} className="material-icons">edit - deleteNote(task.id)} className="material-icons">delete + setEditNote(journal.id)} className="material-icons">edit + deleteNote(journal.id)} className="material-icons">delete
diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx index a975c7d..dc12228 100644 --- a/src/components/TaskForm.jsx +++ b/src/components/TaskForm.jsx @@ -1,10 +1,13 @@ -import { useState } from "react"; +import { useState, useContext } from "react"; import "./css-components/taskForm.css"; -// import { getFirestore } from "firebase/firestore"; +import { NoteContext } from "../context/NoteContext"; -export function TaskForm({ createNote }) { +export function TaskForm() { const [title, setTitle] = useState(''); const [description, setDescription] = useState(''); + + const {createNote} = useContext(NoteContext) + const handleSubmit = (e) => { e.preventDefault(); createNote({ @@ -12,25 +15,24 @@ export function TaskForm({ createNote }) { description }); - saveNotes(title, description, id) - console.log(saveNotes(title, description)); - setTitle("") setDescription("") }; + return (
setTitle(e.target.value)} value={title} className="container-title" - autoFocus /> + autoFocus + />
- add + add diff --git a/src/components/TaskList.jsx b/src/components/TaskList.jsx index f049746..2d56517 100644 --- a/src/components/TaskList.jsx +++ b/src/components/TaskList.jsx @@ -1,25 +1,20 @@ +import { useContext } from 'react'; import { NoteCard } from './NoteCard' +import { NoteContext } from '../context/NoteContext'; -export function TaskList({ tasks, deleteNote }) { +export function TaskList() { - if (tasks.length === 0) { + const { journal } = useContext(NoteContext) + + if (journal.length === 0) { return

NO HAY TAREAS AUN

} + return ( <>{ - tasks.map((task) => ( - + journal.map((journal) => ( + ))} ); -} - -// Icarito -// getDocs -// onSnapshot -// getDocs ( query, ()=>{} ) -// (data)=>{} -// Sebastian Silva (茅l/him) to Everyone 8:08 AM -// querySnapshot -// Sebastian Silva (茅l/him) 8:18 AM -// key="..." \ No newline at end of file +} \ No newline at end of file diff --git a/src/context/NoteContext.jsx b/src/context/NoteContext.jsx new file mode 100644 index 0000000..5e67bd5 --- /dev/null +++ b/src/context/NoteContext.jsx @@ -0,0 +1,85 @@ +import { createContext, useState, useEffect } from "react"; +import { getFirestore, collection, addDoc, onSnapshot, doc, getDoc, deleteDoc } from "firebase/firestore"; + + +export const db = getFirestore(); + +export const NoteContext = createContext(); + +export function NoteContextProvider(props) { + const [journal, setJournal] = useState([]) + + useEffect(() => { + onSnapshot(collection(db, "notes"), (querySnapshot) => { //ordenarle en fecha tal vez sort(...data) + const docs = []; + querySnapshot.forEach((doc) => { + docs.push({ ...doc.data(), id: doc.id }); + }); + setJournal(docs); + // console.log(doc.id); + + }) + + }, [] + ) + + // Funci贸n para Crear Nota------------------------- + + function createNote(journal) { + + try { + addDoc(collection(db, "notes"), { + title: journal.title, + description: journal.description + }); + } catch (e) { + console.error("Error adding document: ", e); + } + } + + + // Funci贸n de borrado-------------------------------------------------------- + + const deleteNote = async (id) => { + const deleteId = id.toString() + await deleteDoc(doc(db, "notes", deleteId)); + } + + // Funci贸n de Editar----------------------------------------------------------- + + const [editNote, setEditNote] = useState('') + const getNote = async (journal) => { + try { + console.log(id) + const docRef = doc(db, 'notes', journal.id) + const docSnap = await getDoc(docRef) + createNote(docSnap.data()) + } catch (error) { + // console.log(error); + } + } + + console.log (journal) + + useEffect(() => { + if (editNote !== '') { + getNote(editNote) + } + }, [editNote]) + + // Renderizado------------------------------ + + return ( + + {props.children} + + ); + +} \ No newline at end of file From a9bf077fdf8a97a585340f090d402057ae6d6228 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Wed, 15 Feb 2023 23:07:09 -0600 Subject: [PATCH 30/38] cambio total de componentes a home (borrado general) --- src/components/Home.jsx | 281 ++++++++++++++++++++++++++++-------- src/components/TaskForm.jsx | 4 +- 2 files changed, 224 insertions(+), 61 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 21ce112..fb79cac 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,45 +1,97 @@ +import React, { useEffect, useState } from "react"; import { useAuth } from "../context/authContext"; -import { TaskList } from './TaskList'; -import { TaskForm } from './TaskForm'; -import { useState, useEffect } from 'react'; import "./css-components/home.css"; -import { getFirestore, collection, addDoc, onSnapshot, deleteDoc, doc, setDoc } from "firebase/firestore"; -import { app } from "../Firebase"; +import { deleteDoc, doc, setDoc, collection, addDoc, getDoc, getDocs } from "firebase/firestore"; +import { async } from "@firebase/util"; +import { db } from "../Firebase" -export const db = getFirestore(app) -// import { async } from "@firebase/util"; -// import { tasks as data } from './tasks'; -// Funci贸n-Componente Home (p谩gina principal) - -export function Home() { +export const Home = () => { const { user, logout, loading } = useAuth() - const [tasks, setTasks] = useState([]) + + const valorInicial = { + nombre: '', + profesion: '' + } + + // variables de estado + + const [noteUser, setNoteUser] = useState(valorInicial) + const [lista, setLista] = useState([]) + const [subId, setSubId] = useState('') + + const capturarInputs = (e) => { + const { name, value } = e.target; + setNoteUser({ ...noteUser, [name]: value }) + } + + // funcion para actualizar y guardar los datos + + const guardarDatos = async (e) => { + e.preventDefault(); + + if (subId === '') { + try { + await addDoc(collection(db, 'notes'), { + ...noteUser + }) + } catch (error) { + console.log(error) + } + } + + else { + await setDoc(doc(db, 'notes', subId), { + ...noteUser + }) + } + + setNoteUser({ ...valorInicial }) + setSubId('') + } + + // funciones para renderizar la lista + useEffect(() => { - onSnapshot(collection(db, "notes"), (querySnapshot) => { //ordenarle en fecha tal vez sort(...data) - const docs = []; - querySnapshot.forEach((doc) => { - docs.push({...doc.data(), id: doc.id }); - }); - setTasks(docs); - // console.log(doc.id); - - }) - - }, [] - ) - // Funci贸n para Crear Nota------------------------- - - function createNote(task) { + const getLista = async () => { + + try { + const querySnapShot = await getDocs(collection(db, 'notes')) + const docs = [] + querySnapShot.forEach((doc) => { + docs.push({ ...doc.data(), id: doc.id }) + }) + setLista(docs) + } catch (error) { + console.log(error) + } + } + getLista() + }, [lista]) + + // funcion para eliminar el usuario + + const deleteUser = async (id) => { + await deleteDoc(doc(db, 'notes', id)) + } + + // funcion para actualizar el usuario + + const getOne = async (id) => { try { - addDoc(collection(db, "notes"), { - title: task.title, - id: tasks.length, - description: task.description - }); - } catch (e) { - console.error("Error adding document: ", e); + const docRef = doc(db, 'notes', id) + const docSnap = await getDoc(docRef) + setNoteUser(docSnap.data()) + } catch (error) { + console.log(error) } } + + useEffect(() => { + if (subId !== '') { + getOne(subId) + } + }, [subId]) + // Logueo--------------------------- const handledLogout = async () => { @@ -51,32 +103,143 @@ export function Home() { }; if (loading) return

Loading

- return
-
- -
- - -

馃挆鉁╓elcome to Journal Note鉁煉 -
- {user.displayName || user.email}

-

Remember this is important to you !

- -
- - - -
-
+ + + return <> + < div > +
+ +
+ +

馃挆鉁╓elcome to Journal Note鉁煉 +
+ {user.displayName || user.email} +

+

Remember this is important to you !

+
+ {/* secci贸n de formulario */} +
+

Ingresar usuario

+ +
+
+ + +
+ + +
+ +
+ {/* esta secci贸n ser谩 la lista de nuestros usuarios */} +
+

Lista de usuarios

+
+
+ { + lista.map(list => ( +
+

nombre:{list.nombre}

+

profesi贸n:{list.profesion}

+ + + + +
+ +
+ )) + } +
+
+
+
+
+ } - // function deleteNote(noteId) { - // deleteDoc(doc(db, "notes", noteId)) - // setTasks() - // } - // console.log(deleteNote); - // function deleteNote(taskId) { - // setTasks(tasks.filter(task => task.id !== taskId)) - // } +// import React, { useState } from "react"; + +// import { TaskList } from './TaskList'; +// import { TaskForm } from './TaskForm'; + +// // import { app } from "../Firebase"; + + +// export function Home() { +// const { noteUser, logout, loading } = useAuth() + +// const createNote = { +// title: '', +// description: '' +// }; + +// const [note, setNote] = useState(createNote); + +// const noteForm = (e) =>{ +// const {name, value} = e.target; +// setNote({...note [name]:value}) +// } + +// const saveNote = async(e)=>{ +// e.preventDefault(); +// setNote({...createNote}) +// } + +// const [description, setDescription] = useState(''); +// const handleSubmit = (e) => { +// e.preventDefault(); +// createNote({ +// title, +// description +// }); + +// saveNotes(title, description, id) +// console.log(saveNotes(title, description)); + +// setTitle("") +// setDescription("") +// }; + +// // Logueo--------------------------- + +// const handledLogout = async () => { +// try { +// await logout(); +// } catch (error) { +// console.error(error); +// } +// }; + +// if (loading) return

Loading

+ + +// return <> +//
+// +//
+ +//

馃挆鉁╓elcome to Journal Note鉁煉 +//
+// {noteUser.displayName || noteUser.email} +//

+ +//

Remember this is important to you !

+ +// + +//
+// +//
+// +// }} + + diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx index a975c7d..6c5fcd3 100644 --- a/src/components/TaskForm.jsx +++ b/src/components/TaskForm.jsx @@ -21,12 +21,12 @@ export function TaskForm({ createNote }) { return (
- setTitle(e.target.value)} value={title} className="container-title" autoFocus />
-
From 468a08f7f475f930d14cdc8390dfa096ea95f0c2 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Thu, 16 Feb 2023 07:34:42 -0600 Subject: [PATCH 31/38] =?UTF-8?q?cambio=20total=20de=20la=20aplicaci=C3=B3?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Home.jsx | 4 ++-- src/components/css-components/home.css | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index fb79cac..22596d2 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -119,7 +119,7 @@ export const Home = () => {
{/* secci贸n de formulario */}
-

Ingresar usuario

+

Add note

@@ -135,7 +135,7 @@ export const Home = () => {
{/* esta secci贸n ser谩 la lista de nuestros usuarios */}
-

Lista de usuarios

+

Lista de usuarios

{ diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css index 8fbbea0..246ef1a 100644 --- a/src/components/css-components/home.css +++ b/src/components/css-components/home.css @@ -31,6 +31,15 @@ body { margin-bottom: 10px; padding-bottom: 10px; } +h3 { + font-family: 'Marvel'; + font-style: normal; + font-size: 32px; + margin-top: 0; + padding-top: 0; + margin-bottom: 10px; + padding-bottom: 10px; +} .dad-logout { align-items: center; From 6066f33f0ca075ea7d8c232c209b263ae647873f Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Thu, 16 Feb 2023 07:37:05 -0600 Subject: [PATCH 32/38] =?UTF-8?q?haciendo=20cambios=20en=20toda=20la=20apl?= =?UTF-8?q?icaci=C3=B3n=20(borrado=20general)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Home.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 22596d2..fd782df 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -3,6 +3,7 @@ import { useAuth } from "../context/authContext"; import "./css-components/home.css"; import { deleteDoc, doc, setDoc, collection, addDoc, getDoc, getDocs } from "firebase/firestore"; import { async } from "@firebase/util"; + import { db } from "../Firebase" export const Home = () => { From 3aa962866cf39d9954a96ce751380347a9a8ac24 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Thu, 16 Feb 2023 15:05:14 -0600 Subject: [PATCH 33/38] Borrado General Login --- src/App.jsx | 142 ++++++++++++++----- src/Firebase.jsx | 36 +++-- src/components/Home.jsx | 8 +- src/components/Login.jsx | 270 +++++++++++++++++++++++++----------- src/components/Register.jsx | 1 - src/context/NoteContext.jsx | 150 ++++++++++---------- src/main.jsx | 3 +- 7 files changed, 409 insertions(+), 201 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index f955b40..ed52dac 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,33 +1,113 @@ -import { Routes, Route } from 'react-router-dom'; -import { Home } from './components/Home'; -import { Login } from './components/Login'; -import { ProtectedRoute } from './components/ProtectedRoute'; -import { Register } from './components/Register'; -import { AuthProvider } from './context/authContext'; -import { NoteContextProvider } from './context/NoteContext'; - -function App() { - return ( -
- - - - - - - - - } /> - } /> - } /> - - - -
- ) +import {useState} from "react"; +import { Home } from "./components/Home"; +import { Login } from "./components/Login"; +import { appFirebase } from "./Firebase"; +import { getAuth, onAuthStateChanged } from "firebase/auth"; + +const auth = getAuth(appFirebase); + +export function App () { + +const [user, setUser] = useState (null) + +onAuthStateChanged(auth, (usuarioFirebase) => { + if (usuarioFirebase) { + setUser(usuarioFirebase) + } + else { + setUser(null) + } +}) + +return ( + +
+ {user ? : } +
+ +) + } -export default App; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// import { Routes, Route } from 'react-router-dom'; +// import { Home } from './components/Home'; +// import { Login } from './components/Login'; +// import { ProtectedRoute } from './components/ProtectedRoute'; +// import { Register } from './components/Register'; +// import { AuthProvider } from './context/authContext'; +// // import { NoteContextProvider } from './context/NoteContext'; + +// function App() { +// return ( +//
+ +// + +// +// +// +// + +// } /> +// } /> +// } /> +// + +// +//
+// ) +// } + +// export default App; diff --git a/src/Firebase.jsx b/src/Firebase.jsx index c1d441d..55ddaff 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -1,20 +1,38 @@ // Import the functions you need from the SDKs you need import { initializeApp } from "firebase/app"; //Esto no estaba inactivo... import {getAuth} from 'firebase/auth'; +import { getFirestore } from "firebase/firestore"; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries -// Your web app's Firebase configuration +// Your web app's Firebase configuration const firebaseConfig = { - apiKey: "AIzaSyDfib1EmiLC416QHjYJ9OyZydV7Os-VCeg", - authDomain: "journal-note-68a3b.firebaseapp.com", - projectId: "journal-note-68a3b", - storageBucket: "journal-note-68a3b.appspot.com", - messagingSenderId: "1026533339383", - appId: "1:1026533339383:web:dfe47b8ce28774590823f2" + apiKey: "AIzaSyDtR1u9ljoBiIRoKaHl7p9JRyIBnBC9G58", + authDomain: "journal-notes-2d9ef.firebaseapp.com", + projectId: "journal-notes-2d9ef", + storageBucket: "journal-notes-2d9ef.appspot.com", + messagingSenderId: "238449478629", + appId: "1:238449478629:web:35ac0c653c4326acbfbd0c" }; // Initialize Firebase -export const app = initializeApp(firebaseConfig); -export const auth = getAuth(app); \ No newline at end of file +export const appFirebase = initializeApp(firebaseConfig); +export const auth = getAuth(appFirebase); +export const db = getFirestore(); + +// // TODO: Add SDKs for Firebase products that you want to use +// // https://firebase.google.com/docs/web/setup#available-libraries +// // Your web app's Firebase configuration + +// const firebaseConfig = { +// apiKey: "AIzaSyDfib1EmiLC416QHjYJ9OyZydV7Os-VCeg", +// authDomain: "journal-note-68a3b.firebaseapp.com", +// projectId: "journal-note-68a3b", +// storageBucket: "journal-note-68a3b.appspot.com", +// messagingSenderId: "1026533339383", +// appId: "1:1026533339383:web:dfe47b8ce28774590823f2" +// }; + +// // Initialize Firebase +// export const app = initializeApp(firebaseConfig); \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index b317627..03c6409 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -104,7 +104,8 @@ export const Home = () => { if (loading) return

Loading

- return <> + return ( + <> < div >
@@ -144,11 +145,11 @@ export const Home = () => {

profesi贸n:{list.profesion}


@@ -161,6 +162,7 @@ export const Home = () => {
+ ) } diff --git a/src/components/Login.jsx b/src/components/Login.jsx index eaf5c8e..ae596e5 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -1,98 +1,206 @@ import { useState } from 'react'; -import { useAuth } from '../context/authContext' -import { useNavigate } from 'react-router-dom'; -import { Alert } from './Alert'; -import "./css-components/Login.css"; +import { appFirebase } from '../Firebase' // Checar m谩s adelante... ----------------------------------------------------- +import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword } from 'firebase/auth'; +const auth = getAuth( appFirebase ) -export function Login() { +export const Login = () => { - const [user, setUser] = useState({ - email: '', - password: '', - }); - const { login, loginWithGoogle } = useAuth() - const navigate = useNavigate() - const [error, setError] = useState(); + const [register, setRegister] = useState (false) - - const handleChange = ({ target: { name, value } }) => - setUser({ ...user, [name]: value }) - - - const handleSubmit = async (e) => { + const handlerSubmit = async (e) => { e.preventDefault() - try { + const email = e.target.email.value; + const password = e.target.pasword.value; - await login(user.email, user.password) - navigate("/"); - } catch (error) { - console.log(error.code); - setError(error.message); + if (register) { + await createUserWithEmailAndPassword(auth, email, password) } - } - const handleGoogleSignIn = async () => { - try { - await loginWithGoogle(); - navigate("/"); - } catch (error) { - setError(error.message); + else { + await signInWithEmailAndPassword(auth, email, password) } - }; + } return ( -
-

Journal Note馃摑

-
- {error && < Alert message={error} />} + +
+ {/* Secci贸n de formulario */} +
+
+

{register ? 'register' : 'Login'}

+ +
+ + +
+
+ + +
+ + + + + +
+ +
+
+
+
+ + ) + + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// --------------------- + +// import { useState } from 'react'; +// import { useAuth } from '../context/authContext' +// import { useNavigate } from 'react-router-dom'; +// import { Alert } from './Alert'; +// import "./css-components/Login.css"; + +// export function Login() { + +// const [user, setUser] = useState({ +// email: '', +// password: '', +// }); +// const { login, loginWithGoogle } = useAuth() +// const navigate = useNavigate() +// const [error, setError] = useState(); + + +// const handleChange = ({ target: { name, value } }) => +// setUser({ ...user, [name]: value }) + + +// const handleSubmit = async (e) => { +// e.preventDefault() +// try { + +// await login(user.email, user.password) +// navigate("/"); +// } catch (error) { +// console.log(error.code); +// setError(error.message); +// } +// } + +// const handleGoogleSignIn = async () => { +// try { +// await loginWithGoogle(); +// navigate("/"); +// } catch (error) { +// setError(error.message); +// } +// }; + +// return ( +//
+//

Journal Note馃摑

+//
+// {error && < Alert message={error} />} -
-
-
-

L O G I N

-
+// +//
+//
+//

L O G I N

+//
-
- email - - person - -
-
-
- -
- - -
-
- -

You don't have an account yet? Create Account

- - -
- ) - -} \ No newline at end of file +//
+// email +// +// person +// +//
+//
+//
+// +//
+// + +//
+//
+// +//

You don't have an account yet? Create Account

+ + +//
+// ) + +// } \ No newline at end of file diff --git a/src/components/Register.jsx b/src/components/Register.jsx index c393059..5eb03a7 100644 --- a/src/components/Register.jsx +++ b/src/components/Register.jsx @@ -1,4 +1,3 @@ - import { useState } from 'react'; import { useAuth } from '../context/authContext' import { useNavigate, useResolvedPath } from 'react-router-dom'; diff --git a/src/context/NoteContext.jsx b/src/context/NoteContext.jsx index 5e67bd5..abb9ea5 100644 --- a/src/context/NoteContext.jsx +++ b/src/context/NoteContext.jsx @@ -1,85 +1,85 @@ -import { createContext, useState, useEffect } from "react"; -import { getFirestore, collection, addDoc, onSnapshot, doc, getDoc, deleteDoc } from "firebase/firestore"; +// import { createContext, useState, useEffect } from "react"; +// import { getFirestore, collection, addDoc, onSnapshot, doc, getDoc, deleteDoc } from "firebase/firestore"; -export const db = getFirestore(); +// export const db = getFirestore(); -export const NoteContext = createContext(); +// export const NoteContext = createContext(); -export function NoteContextProvider(props) { - const [journal, setJournal] = useState([]) +// export function NoteContextProvider(props) { +// const [journal, setJournal] = useState([]) - useEffect(() => { - onSnapshot(collection(db, "notes"), (querySnapshot) => { //ordenarle en fecha tal vez sort(...data) - const docs = []; - querySnapshot.forEach((doc) => { - docs.push({ ...doc.data(), id: doc.id }); - }); - setJournal(docs); - // console.log(doc.id); +// useEffect(() => { +// onSnapshot(collection(db, "notes"), (querySnapshot) => { //ordenarle en fecha tal vez sort(...data) +// const docs = []; +// querySnapshot.forEach((doc) => { +// docs.push({ ...doc.data(), id: doc.id }); +// }); +// setJournal(docs); +// // console.log(doc.id); - }) +// }) - }, [] - ) +// }, [] +// ) - // Funci贸n para Crear Nota------------------------- +// // Funci贸n para Crear Nota------------------------- - function createNote(journal) { +// function createNote(journal) { - try { - addDoc(collection(db, "notes"), { - title: journal.title, - description: journal.description - }); - } catch (e) { - console.error("Error adding document: ", e); - } - } - - - // Funci贸n de borrado-------------------------------------------------------- - - const deleteNote = async (id) => { - const deleteId = id.toString() - await deleteDoc(doc(db, "notes", deleteId)); - } - - // Funci贸n de Editar----------------------------------------------------------- - - const [editNote, setEditNote] = useState('') - const getNote = async (journal) => { - try { - console.log(id) - const docRef = doc(db, 'notes', journal.id) - const docSnap = await getDoc(docRef) - createNote(docSnap.data()) - } catch (error) { - // console.log(error); - } - } - - console.log (journal) - - useEffect(() => { - if (editNote !== '') { - getNote(editNote) - } - }, [editNote]) - - // Renderizado------------------------------ - - return ( - - {props.children} - - ); - -} \ No newline at end of file +// try { +// addDoc(collection(db, "notes"), { +// title: journal.title, +// description: journal.description +// }); +// } catch (e) { +// console.error("Error adding document: ", e); +// } +// } + + +// // Funci贸n de borrado-------------------------------------------------------- + +// const deleteNote = async (id) => { +// const deleteId = id.toString() +// await deleteDoc(doc(db, "notes", deleteId)); +// } + +// // Funci贸n de Editar----------------------------------------------------------- + +// const [editNote, setEditNote] = useState('') +// const getNote = async (journal) => { +// try { +// console.log(id) +// const docRef = doc(db, 'notes', journal.id) +// const docSnap = await getDoc(docRef) +// createNote(docSnap.data()) +// } catch (error) { +// // console.log(error); +// } +// } + +// console.log (journal) + +// useEffect(() => { +// if (editNote !== '') { +// getNote(editNote) +// } +// }, [editNote]) + +// // Renderizado------------------------------ + +// return ( +// +// {props.children} +// +// ); + +// } \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 71e8e71..3d2a6b5 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,9 +1,10 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; -import App from './App'; +import { App } from './App'; import './styles.css'; import './firebase'; +import { app } from './firebase'; ReactDOM.createRoot(document.getElementById('root')).render( From ea11afc9d7156c756246f70f28e5f2aeee304118 Mon Sep 17 00:00:00 2001 From: Cony GuGa Date: Fri, 17 Feb 2023 20:54:02 -0600 Subject: [PATCH 34/38] Esta parece ser la buena --- src/components/Home.jsx | 187 ++++++++++++++++++++++----------------- src/components/Login.jsx | 2 +- src/components/tasks.js | 14 --- src/main.jsx | 2 +- 4 files changed, 108 insertions(+), 97 deletions(-) delete mode 100644 src/components/tasks.js diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 03c6409..689fcb0 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -5,19 +5,20 @@ import { deleteDoc, doc, setDoc, collection, addDoc, getDoc, getDocs } from "fir import { async } from "@firebase/util"; import { db } from "../Firebase" -export const Home = () => { - const { user, logout, loading } = useAuth() +export const Home = ({emailUser}) => { + + // const { user, logout, loading } = useAuth() - const valorInicial = { - nombre: '', - profesion: '' - } + const estadoInicial = { + title: '', + description: '' + }; // variables de estado - const [noteUser, setNoteUser] = useState(valorInicial) - const [lista, setLista] = useState([]) - const [subId, setSubId] = useState('') + const [noteUser, setNoteUser] = useState(estadoInicial) + const [noteData, setNoteData] = useState([]) + const [noteId, setNoteId] = useState('') const capturarInputs = (e) => { const { name, value } = e.target; @@ -29,7 +30,7 @@ export const Home = () => { const guardarDatos = async (e) => { e.preventDefault(); - if (subId === '') { + if (noteId === '') { try { await addDoc(collection(db, 'notes'), { ...noteUser @@ -40,19 +41,19 @@ export const Home = () => { } else { - await setDoc(doc(db, 'notes', subId), { + await setDoc(doc(db, 'notes', noteId), { ...noteUser }) } - setNoteUser({ ...valorInicial }) - setSubId('') + setNoteUser({ ...estadoInicial }) + setNoteId('') } - // funciones para renderizar la lista + // funciones para renderizar la noteData useEffect(() => { - const getLista = async () => { + const getNoteData = async () => { try { const querySnapShot = await getDocs(collection(db, 'notes')) @@ -60,21 +61,22 @@ export const Home = () => { querySnapShot.forEach((doc) => { docs.push({ ...doc.data(), id: doc.id }) }) - setLista(docs) + setNoteData(docs) } catch (error) { console.log(error) } } - getLista() - }, [lista]) + getNoteData() + }, []) // Se quit贸 noteData para no hacer una solicitud con useState - // funcion para eliminar el usuario - const deleteUser = async (id) => { + // funcion para eliminar el Nota + + const deleteNote = async (id) => { await deleteDoc(doc(db, 'notes', id)) } - // funcion para actualizar el usuario + // funcion para actualizar el Nota const getOne = async (id) => { try { @@ -87,81 +89,80 @@ export const Home = () => { } useEffect(() => { - if (subId !== '') { - getOne(subId) + if (noteId !== '') { + getOne(noteId) } - }, [subId]) + }, [noteId]) // Logueo--------------------------- const handledLogout = async () => { try { - await logout(); + // await logout(); } catch (error) { console.error(error); } }; - if (loading) return

Loading

+ // if (loading) return

Loading

return ( - <> - < div > -
- -
- -

馃挆鉁╓elcome to Journal Note鉁煉 -
- {user.displayName || user.email} -

-

Remember this is important to you !

-
- {/* secci贸n de formulario */} -
-

Add note

-
-
-
- - -
- - -
-
+ <> + < div > +
+
- {/* esta secci贸n ser谩 la lista de nuestros usuarios */} -
-

Lista de usuarios

-
-
- { - lista.map(list => ( -
-

nombre:{list.nombre}

-

profesi贸n:{list.profesion}

- - - - -
- -
- )) - } + +

馃挆鉁╓elcome to Journal Note鉁煉 +
+ {emailUser.displayName || emailUser.email} +

+

Remember this is important to you !

+
+ {/* secci贸n de formulario */} +
+

Add note

+
+
+
+ + +
+ + +
+
+
+ {/* esta secci贸n ser谩 la noteData de nuestros Notas */} +
+
+
+ { + noteData.map(noteDat => ( +
+

{noteDat.title}

+

{noteDat.description}

+ + + + +
+ +
+ )) + } +
-
-
- +
+ ) } @@ -169,7 +170,7 @@ export const Home = () => { // import React, { useState } from "react"; -// import { TaskList } from './TaskList'; +// import { TasknoteDat } from './TasknoteDat'; // import { TaskForm } from './TaskForm'; // // import { app } from "../Firebase"; @@ -238,9 +239,33 @@ export const Home = () => { // //
-// +// //
// // }} + // Pasar la informaci贸n de User al estado para saludo y tal vez m谩s. + +// import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; + +// const auth = getAuth(); +// createUserWithEmailAndPassword(auth, email, password) +// .then((userCredential) => { +// // Signed in +// const user = userCredential.user; +// // ... +// }) +// .catch((error) => { +// const errorCode = error.code; +// const errorMessage = error.message; +// // .. +// }); + + // Fin de firebase auth copia pastel... + + // const auth = useAuth() + + // if (!auth?.user) { + // return
Hola
+ // } \ No newline at end of file diff --git a/src/components/Login.jsx b/src/components/Login.jsx index ae596e5..7d509fa 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -11,7 +11,7 @@ export const Login = () => { const handlerSubmit = async (e) => { e.preventDefault() const email = e.target.email.value; - const password = e.target.pasword.value; + const password = e.target.password.value; if (register) { await createUserWithEmailAndPassword(auth, email, password) diff --git a/src/components/tasks.js b/src/components/tasks.js deleted file mode 100644 index 4df756d..0000000 --- a/src/components/tasks.js +++ /dev/null @@ -1,14 +0,0 @@ -// export const tasks = [ - -// { -// id: 0, -// title: 'Example note one', -// description: 'Welcome to Journal Note 馃挆 Here I describe my first note' -// }, -// { -// id: 1, -// title: 'Example note two', -// description: 'Welcome to Journal Note 馃挆 Here I describe my second note' -// }, - - diff --git a/src/main.jsx b/src/main.jsx index 3d2a6b5..82aef49 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -4,7 +4,7 @@ import { BrowserRouter } from 'react-router-dom'; import { App } from './App'; import './styles.css'; import './firebase'; -import { app } from './firebase'; +import { appFirebase } from './firebase'; ReactDOM.createRoot(document.getElementById('root')).render( From 06710da60860722919aae948827ee221d5d94479 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 20 Feb 2023 16:13:25 -0600 Subject: [PATCH 35/38] cambios en CSS --- src/components/Home.jsx | 94 +++++++----- src/components/Login.jsx | 6 +- src/components/css-components/home.css | 205 ++++++++++++++++++++++--- 3 files changed, 243 insertions(+), 62 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 689fcb0..e7d818e 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,14 +1,16 @@ import React, { useEffect, useState } from "react"; -import { useAuth } from "../context/authContext"; import "./css-components/home.css"; import { deleteDoc, doc, setDoc, collection, addDoc, getDoc, getDocs } from "firebase/firestore"; -import { async } from "@firebase/util"; -import { db } from "../Firebase" +import { db, auth } from "../Firebase" +import {signOut, getAuth} from 'firebase/auth' +// import { async } from "@firebase/util"; + + export const Home = ({emailUser}) => { // const { user, logout, loading } = useAuth() - + const estadoInicial = { title: '', description: '' @@ -19,6 +21,7 @@ export const Home = ({emailUser}) => { const [noteUser, setNoteUser] = useState(estadoInicial) const [noteData, setNoteData] = useState([]) const [noteId, setNoteId] = useState('') + const [actualizar, setActualizar] = useState(false) const capturarInputs = (e) => { const { name, value } = e.target; @@ -30,11 +33,13 @@ export const Home = ({emailUser}) => { const guardarDatos = async (e) => { e.preventDefault(); - if (noteId === '') { + if (!noteId) { try { await addDoc(collection(db, 'notes'), { ...noteUser }) + setActualizar(true) + } catch (error) { console.log(error) } @@ -44,15 +49,26 @@ export const Home = ({emailUser}) => { await setDoc(doc(db, 'notes', noteId), { ...noteUser }) + setActualizar(true) + } setNoteUser({ ...estadoInicial }) setNoteId('') } + + // funcion para eliminar el Nota + + const deleteNote = async (id) => { + await deleteDoc(doc(db, 'notes', id)) + setActualizar(true) + } // funciones para renderizar la noteData useEffect(() => { + console.log('se ejecut贸') + setActualizar(false) const getNoteData = async () => { try { @@ -67,15 +83,9 @@ export const Home = ({emailUser}) => { } } getNoteData() - }, []) // Se quit贸 noteData para no hacer una solicitud con useState + }, [actualizar]) // Se quit贸 noteData para no hacer una solicitud con useState - // funcion para eliminar el Nota - - const deleteNote = async (id) => { - await deleteDoc(doc(db, 'notes', id)) - } - // funcion para actualizar el Nota const getOne = async (id) => { @@ -96,13 +106,13 @@ export const Home = ({emailUser}) => { // Logueo--------------------------- - const handledLogout = async () => { - try { - // await logout(); - } catch (error) { - console.error(error); - } - }; + // const handledLogout = async () => { + // try { + // await logout(); + // } catch (error) { + // console.error(error); + // } + // }; // if (loading) return

Loading

@@ -110,7 +120,7 @@ export const Home = ({emailUser}) => { <> < div >
- +

馃挆鉁╓elcome to Journal Note鉁煉 @@ -118,38 +128,39 @@ export const Home = ({emailUser}) => { {emailUser.displayName || emailUser.email}

Remember this is important to you !

-
+
{/* secci贸n de formulario */} -
-

Add note

+
+

Add note...馃尭

-
-
- - -
- +
- {/* esta secci贸n ser谩 la noteData de nuestros Notas */} -
-
-
+ {/* esta secci贸n ser谩 la noteData de nuestras Notas */} +
+ {/*
*/} +
{ noteData.map(noteDat => ( -
-

{noteDat.title}

-

{noteDat.description}

+
+

{noteDat.title}

+

{noteDat.description}

- -
@@ -157,11 +168,12 @@ export const Home = ({emailUser}) => {
)) } -
+
+
-
+ ) } diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 7d509fa..068404e 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -1,8 +1,8 @@ import { useState } from 'react'; -import { appFirebase } from '../Firebase' // Checar m谩s adelante... ----------------------------------------------------- -import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword } from 'firebase/auth'; +import { auth } from '../Firebase' // Checar m谩s adelante... ----------------------------------------------------- +import { createUserWithEmailAndPassword, signInWithEmailAndPassword } from 'firebase/auth'; + -const auth = getAuth( appFirebase ) export const Login = () => { diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css index 246ef1a..e0f15fc 100644 --- a/src/components/css-components/home.css +++ b/src/components/css-components/home.css @@ -2,21 +2,49 @@ padding: 0; border: 0; margin: 0; - height: 1024; - width: 768; + height: auto; + width: 100%; } + body { display: flex; justify-content: space-between; text-align: center; color: #CA2588; - height: 1024; - width: 768; + height: auto; + width: 100%; +} + +::placeholder { + color: #CA2588; } +.dad-logout { + width: 100%; + align-items: center; + background-color: #FF92D3; + display: flex; + justify-content: right; + height: 50px; +} + +.btn-logout { + + border-radius: 50px; + background: #FABDE2; + box-shadow: 4px 2px 2px #F692CF; + border: 0; + width: 100px; + height: 35px; + font-family: 'Marvel'; + font-style: normal; + font-size: 20px; + color: #CA2588; +} .title-page { + width: 100%; font-size: 44px; margin: 10px; padding: 10px; @@ -31,43 +59,184 @@ body { margin-bottom: 10px; padding-bottom: 10px; } + +.container-title { + + width: 260px; + height: 30px; + font-family: 'Marvel'; + border-radius: 20px 20px 0px 0px; + background-color: #BFA2DB; + font-size: x-large; + border: none; + color: #CA2588; + padding: 10px; +} + h3 { font-family: 'Marvel'; font-style: normal; - font-size: 32px; + font-size: 28px; margin-top: 0; padding-top: 0; margin-bottom: 10px; padding-bottom: 10px; } -.dad-logout { +.box { + + display: flex; + justify-content:center; + flex-direction: column; align-items: center; - width: 768px; - background-color: #FF92D3; + /* align-items: center; */ + font-family: 'Marvel'; +} + + + +.text-description { + width: 280px; + height: 225px; + font-family: 'Marvel'; + font-size: large; + border-radius: 0px 0px 20px 20px; + border: none; + background-color: #D9ACF5; + color: #CA2588; display: flex; - justify-content: right; - height: 50px; + /* flex-direction: column; */ + /* justify-content: center; */ } -.btn-logout { +.container-description { + width: 260px; + height: 175px; + font-family: 'Marvel'; + border-radius: 0px 0px 20px 20px; + border: none; + background-color: #FABDE2; + font-size: large; + color: #CA2588; + padding: 10px; + padding-bottom: 0; + justify-content: center; +} - border-radius: 50px; - background: #FABDE2; - box-shadow: 4px 2px 2px #F692CF; - border: 0; +.dad-save { + width: 280px; + height: 50px; + display: flex; + justify-content: center; + align-items: center; +} + +.btn-save { width: 100px; - height: 35px; + height: 40px; + border-radius: 20px; + background: #D9ACF5; + border: none; + border-color: #CA2588; font-family: 'Marvel'; font-style: normal; + font-size: 22px; + color: #CA2588; + bottom: 0; +} +.container-body{ + width: 100%; + display: flex; + justify-content:center; + +} +.container-card{ + width: 100%; + display: flex; + flex-direction: row; + justify-content:center; + +} + +.card{ + margin: 6px; + +} + +.container-note { + + display: flex; + flex-direction: column; + align-content: space-around; + width: 280px; + height: 280px; + background-color: #FF92D3; + text-align: center; + margin-top: 10px; + left: 20px; + top: 190px; + font-style: normal; + font-weight: 300; font-size: 20px; + line-height: 32px; color: #CA2588; + border-radius: 15px; + } -.container-notes { +.dad-delete { + display: flex; + flex-direction: row-reverse; + align-items: center; + gap: 10px; + height: 40px; + width: 280px; + border: none; + border-radius: 0px 0px 15px 15px; +} + +.material-icons { + color: #CA2588; +} + +.material-icons:hover { + color: #FF92D3; +} + +.card-title { + background-color: #FF92D3; + height: 60px; + width: 290px; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + border-radius: 15px 15px 0px 0px; +} + +.nc-description { + + height: 180px; + background-color: #FABDE2; + margin: 0%; + border: none; +} + +/* ------------------------------------------------------------------------------------------------------------ */ +/* .container-notes { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: space-around; -} \ No newline at end of file +} */ + +/* .container-all { + + + justify-content: center; + align-content: space-between; + flex-wrap: wrap; + flex-direction: row; + margin-bottom: 12px; +} */ \ No newline at end of file From 543accf1c55f9b77b2c6aa04d1e54f1324d2e13f Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 20 Feb 2023 16:14:12 -0600 Subject: [PATCH 36/38] cambios en CSS y eliminar notas --- src/components/Home.jsx | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index e7d818e..28fbaa5 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -99,23 +99,11 @@ export const Home = ({emailUser}) => { } useEffect(() => { - if (noteId !== '') { + if (!noteId) { getOne(noteId) } }, [noteId]) - // Logueo--------------------------- - - // const handledLogout = async () => { - // try { - // await logout(); - // } catch (error) { - // console.error(error); - // } - // }; - - // if (loading) return

Loading

- return ( <> < div > @@ -179,6 +167,17 @@ export const Home = ({emailUser}) => { } +// Logueo--------------------------- + + // const handledLogout = async () => { + // try { + // await logout(); + // } catch (error) { + // console.error(error); + // } + // }; + + // if (loading) return

Loading

// import React, { useState } from "react"; From 7b3233059bba80fd823a59d1724414b6e50e34b1 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Mon, 20 Feb 2023 20:50:25 -0600 Subject: [PATCH 37/38] responsive CSS y ultimos detalles --- src/components/Home.jsx | 8 +-- src/components/css-components/home.css | 76 +++++++++++++++++++------- 2 files changed, 61 insertions(+), 23 deletions(-) diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 28fbaa5..350c22d 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -136,21 +136,21 @@ export const Home = ({emailUser}) => {
{/* esta secci贸n ser谩 la noteData de nuestras Notas */}
- {/*
*/}
{ noteData.map(noteDat => (

{noteDat.title}

{noteDat.description}

- - - +

diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css index e0f15fc..9f8fac1 100644 --- a/src/components/css-components/home.css +++ b/src/components/css-components/home.css @@ -41,6 +41,7 @@ body { font-style: normal; font-size: 20px; color: #CA2588; + margin-right: 10px; } .title-page { @@ -62,11 +63,11 @@ body { .container-title { - width: 260px; + width: 280px; height: 30px; font-family: 'Marvel'; border-radius: 20px 20px 0px 0px; - background-color: #BFA2DB; + background: #BFA2DB; font-size: x-large; border: none; color: #CA2588; @@ -98,11 +99,12 @@ h3 { .text-description { width: 280px; height: 225px; + padding: 10px; font-family: 'Marvel'; - font-size: large; + font-size: x-large; border-radius: 0px 0px 20px 20px; border: none; - background-color: #D9ACF5; + background: #D9ACF5; color: #CA2588; display: flex; /* flex-direction: column; */ @@ -115,8 +117,8 @@ h3 { font-family: 'Marvel'; border-radius: 0px 0px 20px 20px; border: none; - background-color: #FABDE2; - font-size: large; + background: #FABDE2; + font-size: x-large; color: #CA2588; padding: 10px; padding-bottom: 0; @@ -139,28 +141,32 @@ h3 { border: none; border-color: #CA2588; font-family: 'Marvel'; - font-style: normal; - font-size: 22px; + /* font-style: ; */ + font-size: 24px; color: #CA2588; bottom: 0; } .container-body{ width: 100%; display: flex; + flex-direction: row; + flex-wrap: wrap; justify-content:center; - + /* background-color: purple; */ } .container-card{ - width: 100%; display: flex; flex-direction: row; justify-content:center; + flex-wrap: wrap; + /* background-color: turquoise; */ } .card{ margin: 6px; - + /* background-color: yellowgreen; */ + width: fit-content; } .container-note { @@ -192,36 +198,68 @@ h3 { height: 40px; width: 280px; border: none; - border-radius: 0px 0px 15px 15px; + border-radius: 0px 0px 20px 20px; +} + +.dad-btns{ + display: flex; + justify-content: end; + align-items: center; + width: 280px; + height: 40px; + border: none; + border-radius: 0px 0px 20px 20px; + background-color:#FABDE2; +} + +.btn-delete{ + width: auto; + background-color: transparent; + margin-right: 10px; +} + +.btn-edit{ + width: auto; + background-color: transparent; + margin-right: 10px; } .material-icons { - color: #CA2588; + color: darkviolet; } .material-icons:hover { - color: #FF92D3; + color: darkviolet; } .card-title { - background-color: #FF92D3; + background: #FF92D3; + color: darkviolet; height: 60px; - width: 290px; + width: 280px; display: flex; justify-content: center; align-items: center; text-align: center; - border-radius: 15px 15px 0px 0px; + font-size: x-large; + border-radius: 20px 20px 0px 0px; } .nc-description { height: 180px; - background-color: #FABDE2; - margin: 0%; + width: 280px; + font-size: x-large; + background: #FABDE2; + color: darkviolet; + margin: 0; border: none; } +/* Mediaqueries */ + + + /* ------------------------------------------------------------------------------------------------------------ */ /* .container-notes { From 6a5ed173dff781b126f59937b4d21f0bfa2c46a1 Mon Sep 17 00:00:00 2001 From: tania lizbeth garcia fierro Date: Tue, 21 Feb 2023 00:49:28 -0600 Subject: [PATCH 38/38] cambios en login y register ultimos detalles --- src/Firebase.jsx | 15 --- src/components/Home.jsx | 123 +----------------------- src/components/Login.jsx | 34 +++---- src/components/NoteCard.jsx | 26 ----- src/components/Register.jsx | 71 -------------- src/components/TaskForm.jsx | 44 --------- src/components/TaskList.jsx | 20 ---- src/components/css-components/Login.css | 68 +++++++------ src/components/css-components/home.css | 3 +- 9 files changed, 62 insertions(+), 342 deletions(-) delete mode 100644 src/components/NoteCard.jsx delete mode 100644 src/components/Register.jsx delete mode 100644 src/components/TaskForm.jsx delete mode 100644 src/components/TaskList.jsx diff --git a/src/Firebase.jsx b/src/Firebase.jsx index 55ddaff..2cd659d 100644 --- a/src/Firebase.jsx +++ b/src/Firebase.jsx @@ -21,18 +21,3 @@ export const appFirebase = initializeApp(firebaseConfig); export const auth = getAuth(appFirebase); export const db = getFirestore(); -// // TODO: Add SDKs for Firebase products that you want to use -// // https://firebase.google.com/docs/web/setup#available-libraries -// // Your web app's Firebase configuration - -// const firebaseConfig = { -// apiKey: "AIzaSyDfib1EmiLC416QHjYJ9OyZydV7Os-VCeg", -// authDomain: "journal-note-68a3b.firebaseapp.com", -// projectId: "journal-note-68a3b", -// storageBucket: "journal-note-68a3b.appspot.com", -// messagingSenderId: "1026533339383", -// appId: "1:1026533339383:web:dfe47b8ce28774590823f2" -// }; - -// // Initialize Firebase -// export const app = initializeApp(firebaseConfig); \ No newline at end of file diff --git a/src/components/Home.jsx b/src/components/Home.jsx index 350c22d..96df1ca 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,12 +1,12 @@ import React, { useEffect, useState } from "react"; import "./css-components/home.css"; +import "./css-components/login.css"; import { deleteDoc, doc, setDoc, collection, addDoc, getDoc, getDocs } from "firebase/firestore"; import { db, auth } from "../Firebase" import {signOut, getAuth} from 'firebase/auth' // import { async } from "@firebase/util"; - export const Home = ({emailUser}) => { // const { user, logout, loading } = useAuth() @@ -67,7 +67,6 @@ export const Home = ({emailUser}) => { // funciones para renderizar la noteData useEffect(() => { - console.log('se ejecut贸') setActualizar(false) const getNoteData = async () => { @@ -83,7 +82,7 @@ export const Home = ({emailUser}) => { } } getNoteData() - }, [actualizar]) // Se quit贸 noteData para no hacer una solicitud con useState + }, [actualizar]) // funcion para actualizar el Nota @@ -99,7 +98,7 @@ export const Home = ({emailUser}) => { } useEffect(() => { - if (!noteId) { + if (noteId !== '') { getOne(noteId) } }, [noteId]) @@ -134,7 +133,7 @@ export const Home = ({emailUser}) => {
- {/* esta secci贸n ser谩 la noteData de nuestras Notas */} + {/* esta secci贸n es la noteData de nuestras Notas */}
{ @@ -166,117 +165,3 @@ export const Home = ({emailUser}) => { ) } - -// Logueo--------------------------- - - // const handledLogout = async () => { - // try { - // await logout(); - // } catch (error) { - // console.error(error); - // } - // }; - - // if (loading) return

Loading

- -// import React, { useState } from "react"; - -// import { TasknoteDat } from './TasknoteDat'; -// import { TaskForm } from './TaskForm'; - -// // import { app } from "../Firebase"; - - -// export function Home() { -// const { noteUser, logout, loading } = useAuth() - -// const createNote = { -// title: '', -// description: '' -// }; - -// const [note, setNote] = useState(createNote); - -// const noteForm = (e) =>{ -// const {name, value} = e.target; -// setNote({...note [name]:value}) -// } - -// const saveNote = async(e)=>{ -// e.preventDefault(); -// setNote({...createNote}) -// } - -// const [description, setDescription] = useState(''); -// const handleSubmit = (e) => { -// e.preventDefault(); -// createNote({ -// title, -// description -// }); - -// saveNotes(title, description, id) -// console.log(saveNotes(title, description)); - -// setTitle("") -// setDescription("") -// }; - -// // Logueo--------------------------- - -// const handledLogout = async () => { -// try { -// await logout(); -// } catch (error) { -// console.error(error); -// } -// }; - -// if (loading) return

Loading

- - -// return <> -//
-// -//
- -//

馃挆鉁╓elcome to Journal Note鉁煉 -//
-// {noteUser.displayName || noteUser.email} -//

- -//

Remember this is important to you !

- -// - -//
-// -//
-// -// }} - - - // Pasar la informaci贸n de User al estado para saludo y tal vez m谩s. - -// import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; - -// const auth = getAuth(); -// createUserWithEmailAndPassword(auth, email, password) -// .then((userCredential) => { -// // Signed in -// const user = userCredential.user; -// // ... -// }) -// .catch((error) => { -// const errorCode = error.code; -// const errorMessage = error.message; -// // .. -// }); - - // Fin de firebase auth copia pastel... - - // const auth = useAuth() - - // if (!auth?.user) { - // return
Hola
- // } \ No newline at end of file diff --git a/src/components/Login.jsx b/src/components/Login.jsx index 068404e..9704226 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -26,32 +26,30 @@ export const Login = () => {
{/* Secci贸n de formulario */} -
-
-

{register ? 'register' : 'Login'}

+
+
+
+

{register ? 'Register' : 'L o g i n'}

-
-
-
-
-
diff --git a/src/components/NoteCard.jsx b/src/components/NoteCard.jsx deleted file mode 100644 index 9e48885..0000000 --- a/src/components/NoteCard.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import { useContext } from "react"; -import { NoteContext } from "../context/NoteContext" -import "./css-components/NoteCard.css"; - -export function NoteCard({ journal }) { - - const { deleteNote, setEditNote } = useContext(NoteContext) - - console.log (journal); - - return ( - - <> -
-
-

{journal.title}

-

{journal.description}

-
- setEditNote(journal.id)} className="material-icons">edit - deleteNote(journal.id)} className="material-icons">delete -
-
-
- - ); -} diff --git a/src/components/Register.jsx b/src/components/Register.jsx deleted file mode 100644 index 5eb03a7..0000000 --- a/src/components/Register.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import { useState } from 'react'; -import { useAuth } from '../context/authContext' -import { useNavigate, useResolvedPath } from 'react-router-dom'; -import { async } from '@firebase/util'; -import { Alert } from './Alert'; - - -export function Register() { - - const [user, setUser] = useState({ - email: '', - password: '', - }); - const { signup } = useAuth() - const navigate = useNavigate() - const [error, setError] = useState(); - - - const handleChange = ({ target: { name, value } }) => - setUser({ ...user, [name]: value }) - - - const handleSubmit = async (e) => { - e.preventDefault() - try { - - await signup(user.email, user.password) - navigate("/") - } catch (error) { - console.log(error.code); - setError(error.message); - } - } - - return ( -
- {error && < Alert message={error} />} - - -
- - - - - - - - -
-
- ) -} - - - - - -// return

馃挅Register馃挅

; -// } \ No newline at end of file diff --git a/src/components/TaskForm.jsx b/src/components/TaskForm.jsx deleted file mode 100644 index 74a7f3c..0000000 --- a/src/components/TaskForm.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import { useState, useContext } from "react"; -import "./css-components/taskForm.css"; -import { NoteContext } from "../context/NoteContext"; - -export function TaskForm() { - const [title, setTitle] = useState(''); - const [description, setDescription] = useState(''); - - const {createNote} = useContext(NoteContext) - - const handleSubmit = (e) => { - e.preventDefault(); - createNote({ - title, - description - }); - - setTitle("") - setDescription("") - }; - - return ( - -
- setTitle(e.target.value)} - value={title} className="container-title" - autoFocus - /> -
- -
- add - -
-
-
- - ); -} \ No newline at end of file diff --git a/src/components/TaskList.jsx b/src/components/TaskList.jsx deleted file mode 100644 index 2d56517..0000000 --- a/src/components/TaskList.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useContext } from 'react'; -import { NoteCard } from './NoteCard' -import { NoteContext } from '../context/NoteContext'; - -export function TaskList() { - - const { journal } = useContext(NoteContext) - - if (journal.length === 0) { - return

NO HAY TAREAS AUN

- } - - return ( - <>{ - journal.map((journal) => ( - - ))} - - ); -} \ No newline at end of file diff --git a/src/components/css-components/Login.css b/src/components/css-components/Login.css index 232c47d..9e1c0f7 100644 --- a/src/components/css-components/Login.css +++ b/src/components/css-components/Login.css @@ -1,48 +1,64 @@ * { padding: 0; border: 0; - margin: 0; + margin: 0px; } + body { display: flex; - justify-content: space-evenly; + color: #CA2588; + height: auto; + width: 100%; + +} +.container-container{ + + display: flex; justify-content: center; - top: 250px; - height: 1024; - width: 768; + width: 768px; + + } .login-box { - width: 502px; - height: 340px; - left: 400px; - top: 300px; + width: 520px; + height: 380px; background: #FDE4F3; box-shadow: -3px -3px 4px rgba(242, 91, 182, 0.29), 15px 6px 4px rgba(242, 91, 182, 0.29); border-radius: 40px; display: flex; - flex-direction: row; + flex-direction:row; justify-content: center; - align-items: flex-end; + align-items: center; + margin-top: 260px; + +} +.title-login { + + justify-content: flex-start; + flex-direction: initial; + width: 250px; + margin-bottom: 10px; } .container-info { display: flex; width: 250px; height: 100px; - flex-direction: row; + flex-direction: column; justify-content: center; - align-items: flex-end; + } .container-inputs { + display: flex; flex-direction: row; flex-wrap: wrap; - align-items: center; + justify-content: center; width: 240px; height: 100px; } @@ -52,7 +68,6 @@ body { font-weight: bold; font-style: normal; font-size: 24px; - /* line-height: 1; */ letter-spacing: normal; text-transform: none; display: inline-block; @@ -67,7 +82,7 @@ body { margin-block: 8px; width: 200px; - height: 22px; + height: 30px; display: flex; align-content: center; background: rgba(242, 91, 182, 0.29); @@ -75,7 +90,7 @@ body { border-radius: 5px; border: none; font-family: 'Marvel', sans-serif; - font-size: medium; + font-size: large; } .btn-container { @@ -104,29 +119,28 @@ body { .dad-login { background-color: aqua; - /* width: 450px; */ height: 200px; - /* display: flex; */ - /* justify-content: center; */ + } .btn-access { - border-radius: 50px; - background: #FABDE2; - box-shadow: 6px 4px 4px #F692CF; + + background: #FCDCEF; border: 0; - width: 100px; + justify-content: center; + flex-direction: row; + width: 250px; height: 32px; font-family: 'Marvel'; - font-style: normal; - margin-top: 10px; + font-style:normal; + margin-top: 20px; font-size: 22px; color: #CA2588; } .title-login { - position: absolute; + right: 320px; font-style: normal; font-weight: 700; diff --git a/src/components/css-components/home.css b/src/components/css-components/home.css index 9f8fac1..09dcc3b 100644 --- a/src/components/css-components/home.css +++ b/src/components/css-components/home.css @@ -21,7 +21,7 @@ body { } .dad-logout { - width: 100%; + width: 768px; align-items: center; background-color: #FF92D3; display: flex; @@ -90,7 +90,6 @@ h3 { justify-content:center; flex-direction: column; align-items: center; - /* align-items: center; */ font-family: 'Marvel'; }