From 513f65b2c6e5555b716cc10440099986b5e69e15 Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Tue, 19 Mar 2024 15:22:55 -0400 Subject: [PATCH 01/34] create endpoints for users --- InventoryManagementApp/package-lock.json | 748 +++++++++++++++++- InventoryManagementApp/package.json | 11 +- InventoryManagementApp/readme.md | 72 ++ InventoryManagementApp/server.js | 46 +- .../server/assets-router.js | 13 - .../{ => server}/config/config.js | 2 +- .../server/controllers/UserController.js | 118 +++ .../server/controllers/error.controller.js | 17 - .../server/controllers/user.controller.js | 168 ---- InventoryManagementApp/server/express.js | 34 +- .../server/helpers/dbErrorHandler.js | 34 - .../server/helpers/helperFunctions.js | 7 + .../server/models/UserModel.js | 31 + .../server/models/user.model.js | 51 -- .../server/routes/UserRoute.js | 22 + .../server/routes/user.routes.js | 20 - InventoryManagementApp/yarn.lock | 411 +++++++++- 17 files changed, 1432 insertions(+), 373 deletions(-) create mode 100644 InventoryManagementApp/readme.md delete mode 100644 InventoryManagementApp/server/assets-router.js rename InventoryManagementApp/{ => server}/config/config.js (97%) create mode 100644 InventoryManagementApp/server/controllers/UserController.js delete mode 100644 InventoryManagementApp/server/controllers/error.controller.js delete mode 100644 InventoryManagementApp/server/controllers/user.controller.js delete mode 100644 InventoryManagementApp/server/helpers/dbErrorHandler.js create mode 100644 InventoryManagementApp/server/helpers/helperFunctions.js create mode 100644 InventoryManagementApp/server/models/UserModel.js delete mode 100644 InventoryManagementApp/server/models/user.model.js create mode 100644 InventoryManagementApp/server/routes/UserRoute.js delete mode 100644 InventoryManagementApp/server/routes/user.routes.js diff --git a/InventoryManagementApp/package-lock.json b/InventoryManagementApp/package-lock.json index 4404bcf..9fdc29f 100644 --- a/InventoryManagementApp/package-lock.json +++ b/InventoryManagementApp/package-lock.json @@ -1,16 +1,25 @@ { - "name": "mern_skeleton", + "name": "inventorymanagementapp", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mern_skeleton", + "name": "inventorymanagementapp", "version": "1.0.0", "license": "MIT", "dependencies": { + "bcrypt": "^5.1.1", + "bcryptjs": "^2.4.3", + "jsonwebtoken": "^9.0.2" + }, + "devDependencies": { + "@babel/core": "^7.23.6", + "@babel/preset-env": "^7.23.6", + "babel-loader": "^9.1.3", "body-parser": "^1.20.2", "compression": "^1.7.4", + "concurrently": "^8.2.0", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.4.5", @@ -19,13 +28,7 @@ "helmet": "^7.1.0", "lodash": "^4.17.21", "method-override": "^3.0.0", - "mongoose": "^8.0.3" - }, - "devDependencies": { - "@babel/core": "^7.23.6", - "@babel/preset-env": "^7.23.6", - "babel-loader": "^9.1.3", - "concurrently": "^8.2.0", + "mongoose": "^8.0.3", "nodemon": "^2.0.22" } }, @@ -1944,10 +1947,74 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==", + "dev": true, "license": "MIT", "dependencies": { "sparse-bitfield": "^3.0.3" @@ -1993,6 +2060,7 @@ "version": "20.10.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -2002,12 +2070,14 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "dev": true, "license": "MIT" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -2193,13 +2263,13 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, "license": "ISC" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, "license": "MIT", "dependencies": { "mime-types": "~2.1.34", @@ -2232,6 +2302,38 @@ "acorn": "^8" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/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==" + }, "node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -2284,7 +2386,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2320,10 +2421,28 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, "license": "MIT" }, "node_modules/babel-loader": { @@ -2390,9 +2509,26 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, "license": "MIT" }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2407,6 +2543,7 @@ "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -2431,7 +2568,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -2488,11 +2624,17 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz", "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=16.20.1" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2504,6 +2646,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -2513,6 +2656,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2", @@ -2617,6 +2761,14 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -2662,6 +2814,14 @@ "dev": true, "license": "MIT" }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -2680,6 +2840,7 @@ "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" @@ -2692,6 +2853,7 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.5", @@ -2710,6 +2872,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -2719,13 +2882,13 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/concurrently": { @@ -2802,10 +2965,16 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" @@ -2818,6 +2987,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -2834,6 +3004,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -2843,6 +3014,7 @@ "version": "1.4.6", "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, "license": "MIT", "dependencies": { "cookie": "0.4.1", @@ -2856,6 +3028,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, "license": "MIT" }, "node_modules/core-js-compat": { @@ -2876,6 +3049,7 @@ "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, "license": "MIT", "dependencies": { "object-assign": "^4", @@ -2906,6 +3080,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -2915,12 +3090,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.1", @@ -2931,10 +3108,16 @@ "node": ">= 0.4" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -2944,21 +3127,32 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, "engines": { "node": ">=12" }, @@ -2966,10 +3160,19 @@ "url": "https://dotenvx.com" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, "license": "MIT" }, "node_modules/electron-to-chromium": { @@ -2983,13 +3186,13 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -3030,6 +3233,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, "license": "MIT" }, "node_modules/escape-string-regexp": { @@ -3103,6 +3307,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3122,6 +3327,7 @@ "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -3164,6 +3370,7 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -3188,6 +3395,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3197,6 +3405,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -3239,6 +3448,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -3291,6 +3501,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3300,20 +3511,73 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "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==" + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3338,6 +3602,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2", @@ -3349,6 +3614,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -3373,6 +3657,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, "license": "MIT", "dependencies": { "min-document": "^2.19.0", @@ -3393,6 +3678,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" @@ -3422,6 +3708,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2" @@ -3434,6 +3721,7 @@ "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, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3446,6 +3734,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3454,10 +3743,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "node_modules/hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3470,6 +3765,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz", "integrity": "sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==", + "dev": true, "license": "MIT", "engines": { "node": ">=16.0.0" @@ -3479,6 +3775,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, "license": "MIT", "dependencies": { "depd": "2.0.0", @@ -3491,10 +3788,44 @@ "node": ">= 0.8" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/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==" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -3510,6 +3841,15 @@ "dev": true, "license": "ISC" }, + "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==", + "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", @@ -3520,6 +3860,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -3565,7 +3906,6 @@ "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==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3672,10 +4012,81 @@ "node": ">=6" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsonwebtoken/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/kareem": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.0.0" @@ -3711,6 +4122,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, "license": "MIT" }, "node_modules/lodash.debounce": { @@ -3720,6 +4132,41 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3730,10 +4177,25 @@ "yallist": "^3.0.2" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3743,12 +4205,14 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "dev": true, "license": "MIT" }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true, "license": "MIT" }, "node_modules/merge-stream": { @@ -3762,6 +4226,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz", "integrity": "sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==", + "dev": true, "license": "MIT", "dependencies": { "debug": "3.1.0", @@ -3777,6 +4242,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -3786,12 +4252,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3801,6 +4269,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, "license": "MIT", "bin": { "mime": "cli.js" @@ -3813,6 +4282,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3822,6 +4292,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -3834,6 +4305,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, "dependencies": { "dom-walk": "^0.1.0" } @@ -3842,7 +4314,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -3851,10 +4322,58 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mongodb": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz", "integrity": "sha512-d7OSuGjGWDZ5usZPqfvb36laQ9CPhnWkAGHT61x5P95p/8nMVeH8asloMwW6GcYFeB0Vj4CB/1wOTDG2RA9BFA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@mongodb-js/saslprep": "^1.1.0", @@ -3901,6 +4420,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@types/whatwg-url": "^8.2.1", @@ -3911,6 +4431,7 @@ "version": "8.0.3", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.3.tgz", "integrity": "sha512-LJRT0yP4TW14HT4r2RkxqyvoTylMSzWpl5QOeVHTnRggCLQSpkoBdgbUtORFq/mSL2o9cLCPJz+6uzFj25qbHw==", + "dev": true, "license": "MIT", "dependencies": { "bson": "^6.2.0", @@ -3933,6 +4454,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "dev": true, "license": "MIT", "engines": { "node": ">=4.0.0" @@ -3942,6 +4464,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dev": true, "license": "MIT", "dependencies": { "debug": "4.x" @@ -3954,6 +4477,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -3971,6 +4495,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, "license": "MIT" }, "node_modules/ms": { @@ -3983,6 +4508,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3995,6 +4521,49 @@ "dev": true, "peer": true }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "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-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/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/node-fetch/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/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -4074,6 +4643,17 @@ "node": ">=0.10.0" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4087,6 +4667,7 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4096,6 +4677,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, "license": "MIT", "dependencies": { "ee-first": "1.1.1" @@ -4108,11 +4690,20 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, + "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==", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -4149,6 +4740,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -4164,6 +4756,14 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -4175,6 +4775,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true, "license": "MIT" }, "node_modules/picocolors": { @@ -4217,6 +4818,7 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6.0" @@ -4226,6 +4828,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, "license": "MIT", "dependencies": { "forwarded": "0.2.0", @@ -4246,6 +4849,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4255,6 +4859,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" @@ -4280,6 +4885,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -4289,6 +4895,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -4300,6 +4907,19 @@ "node": ">= 0.8" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4428,6 +5048,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -4462,6 +5096,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, "node_modules/schema-utils": { @@ -4488,7 +5123,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4498,6 +5132,7 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -4532,6 +5167,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", @@ -4543,10 +5179,16 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.1", @@ -4562,6 +5204,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, "license": "ISC" }, "node_modules/shell-quote": { @@ -4578,6 +5221,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.0", @@ -4592,8 +5236,14 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", + "dev": true, "license": "MIT" }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -4642,6 +5292,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "dev": true, "license": "MIT", "dependencies": { "memory-pager": "^1.0.2" @@ -4657,16 +5308,24 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.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==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -4681,7 +5340,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -4736,6 +5394,27 @@ "node": ">=6" } }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/terser": { "version": "5.29.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", @@ -4870,6 +5549,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.6" @@ -4892,6 +5572,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.1.1" @@ -4921,6 +5602,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -4941,6 +5623,7 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -4991,6 +5674,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -5037,10 +5721,16 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4.0" @@ -5050,6 +5740,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -5073,6 +5764,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -5193,6 +5885,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, "license": "MIT", "dependencies": { "tr46": "^3.0.0", @@ -5202,6 +5895,14 @@ "node": ">=12" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5220,6 +5921,11 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "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==" + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/InventoryManagementApp/package.json b/InventoryManagementApp/package.json index 8bab645..69daeb1 100644 --- a/InventoryManagementApp/package.json +++ b/InventoryManagementApp/package.json @@ -1,7 +1,7 @@ { "name": "inventorymanagementapp", "version": "1.0.0", - "type": "module", + "type": "commonjs", "main": "index.js", "author": "WinterDevs", "license": "MIT", @@ -9,10 +9,9 @@ "@babel/core": "^7.23.6", "@babel/preset-env": "^7.23.6", "babel-loader": "^9.1.3", - "concurrently": "^8.2.0", - "nodemon": "^2.0.22", "body-parser": "^1.20.2", "compression": "^1.7.4", + "concurrently": "^8.2.0", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.4.5", @@ -21,7 +20,8 @@ "helmet": "^7.1.0", "lodash": "^4.17.21", "method-override": "^3.0.0", - "mongoose": "^8.0.3" + "mongoose": "^8.0.3", + "nodemon": "^2.0.22" }, "scripts": { "dev": "concurrently 'vite' \"nodemon server.js\"", @@ -30,5 +30,8 @@ "preview": "vite preview" }, "dependencies": { + "bcrypt": "^5.1.1", + "bcryptjs": "^2.4.3", + "jsonwebtoken": "^9.0.2" } } diff --git a/InventoryManagementApp/readme.md b/InventoryManagementApp/readme.md new file mode 100644 index 0000000..5e0aaa5 --- /dev/null +++ b/InventoryManagementApp/readme.md @@ -0,0 +1,72 @@ +Things to do before you start testing +1. checkout 'buildAPI_1' branch +2. create .env file and put "JWT_SECRETE_KEY = generateSecret()" inside the file +3. npm install +4. spin up the server with "npm run dev" +5. start testing the endpoints + + +User Endpoint + +Signup New User +Description: Endpoint to signup a new user. +HTTP Method: POST +URL: /api/users/signup +Request Body: +{ + "name": "James doh", + "email": "james@gmail.com", + "password":"domeidoyou" +} +Response: +201 Created: Successfully created a new user. Returns the newly created user object. +500 Internal Server Error: An error occurred while processing the request. + +Login User +Description: Endpoint to login a user. +HTTP Method: POST +URL: /api/users/login +Request Body: +{ + "email": "lucas@gmail.com", + "password":"domeidoyou" +} +Response: +200 OK: Successfully logged in. Returns a JWT token for authentication. +401 Unauthorized: Invalid credentials provided. +500 Internal Server Error: An error occurred while processing the request. + + +Get All Users +Description: Endpoint to retrieve all users. +HTTP Method: GET +URL: /api/users +Response: +200 OK: Successfully retrieved all users. Returns an array of user objects. +500 Internal Server Error: An error occurred while processing the request. + +Update User +Description: Endpoint to update a user. +HTTP Method: PUT +URL: /api/users/:userId +Request Parameters: +userId (string): ID of the user to be updated. +Request Body: +name (string, optional): Updated user's name. +email (string, optional): Updated user's email address. +Response: +200 OK: Successfully updated the user. Returns the updated user object. +404 Not Found: User with the specified ID not found. +500 Internal Server Error: An error occurred while processing the request. + + +Delete User +Description: Endpoint to delete a user. +HTTP Method: DELETE +URL: /api/users/:userId +Request Parameters: +userId (string): ID of the user to be deleted. +Response: +200 OK: Successfully deleted the user. +404 Not Found: User with the specified ID not found. +500 Internal Server Error: An error occurred while processing the request. \ No newline at end of file diff --git a/InventoryManagementApp/server.js b/InventoryManagementApp/server.js index 91930e0..872e700 100644 --- a/InventoryManagementApp/server.js +++ b/InventoryManagementApp/server.js @@ -1,26 +1,28 @@ -import dotenv from 'dotenv'; -import config from './config/config.js'; -import app from './server/express.js'; -import mongoose from 'mongoose'; +const dotenv = require('dotenv'); +const config = require('./server/config/config.js'); +const app = require('./server/express.js'); +const mongoose = require('mongoose'); -dotenv.config(); mongoose.Promise = global.Promise; -mongoose.connect(config.mongoUri, { useNewUrlParser: true, useUnifiedTopology: true }) - .then(() => { - console.log("Connected to the database!"); - }) - -mongoose.connection.on('error', () => { -throw new Error(`unable to connect to database: ${config.mongoUri}`) -}) -app.get("/", (req, res) => { -res.json({ message: "Welcome to User application." }); -}); -app.listen(config.port, (err) => { -if (err) { -console.log(err) -} -console.info('Server started on port %s.', config.port) -}) +// Connect to MongoDB database +mongoose.connect(config.mongoUri) + .then(() => { + console.log("Connected to the database!"); + // Start the Express server after successful database connection + app.listen(config.port, () => { + console.info('Server started on port %s.', config.port); + }); + }) + .catch((err) => { + console.error("Unable to connect to the database:", err); + process.exit(1); // Exit the application if unable to connect to the database + }); + + + +// Handle MongoDB connection errors +mongoose.connection.on('error', (err) => { + console.error("MongoDB connection error:", err); +}); \ No newline at end of file diff --git a/InventoryManagementApp/server/assets-router.js b/InventoryManagementApp/server/assets-router.js deleted file mode 100644 index 0e251b6..0000000 --- a/InventoryManagementApp/server/assets-router.js +++ /dev/null @@ -1,13 +0,0 @@ -const express = require("express"); -const router = express.Router(); -const imageRegex = /\/.+\.(svg|png|jpg|png|jpeg)$/; // You can add other image formats -const videoRegex = /\/.+\.(mp4|ogv)$/ -router.get(imageRegex, (req, res) => { - const filePath = req.path; - res.redirect(303, `http://localhost:3000/src${filePath}`); -}); -router.get(videoRegex, (req, res) => { - const filePath = req.path; - res.redirect(303, `http://localhost:3000/src${filePath}`); -}); -module.exports = router; diff --git a/InventoryManagementApp/config/config.js b/InventoryManagementApp/server/config/config.js similarity index 97% rename from InventoryManagementApp/config/config.js rename to InventoryManagementApp/server/config/config.js index 99e207c..f0ac16e 100644 --- a/InventoryManagementApp/config/config.js +++ b/InventoryManagementApp/server/config/config.js @@ -8,7 +8,7 @@ const config = { (process.env.MONGO_PORT || '27017') + '/mernproject' } - export default config + module.exports= config diff --git a/InventoryManagementApp/server/controllers/UserController.js b/InventoryManagementApp/server/controllers/UserController.js new file mode 100644 index 0000000..6789e42 --- /dev/null +++ b/InventoryManagementApp/server/controllers/UserController.js @@ -0,0 +1,118 @@ +const User = require("../models/UserModel"); +const bcrypt = require('bcrypt'); +const jwt = require('jsonwebtoken'); +require('dotenv').config(); + + +// Create New User +const SignupUser = async (req, res) => { + try { + const { name, email, password } = req.body; + + // Hash the password + const saltRounds = 10; + const hashedPassword = await bcrypt.hash(password, saltRounds); + + // Create a new user with hashed password + const newUser = new User({ + name, + email, + hashed_password: hashedPassword // Store hashed password + }); + + // Save the user to the database + const savedUser = await newUser.save(); + + res.status(201).json(savedUser); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + + + + +// Login User +const loginUser = async (req, res) => { + try { + const { email, password } = req.body; + + // Find the user by email + const user = await User.findOne({ email }); + + if (!user) { + return res.status(404).json({ error: 'User not found' }); + } + + // Compare passwords + const passwordMatch = await bcrypt.compare(password, user.hashed_password); + + if (!passwordMatch) { + return res.status(401).json({ error: 'Invalid password' }); + } + + // Generate JWT token + const jwtSecret = process.env.JWT_SECRETE_KEY; + const token = jwt.sign({ userId: user._id }, jwtSecret , { expiresIn: '1h' }); + + res.status(200).json({ token }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + + +// Controller to get all users +const getAllUsers = async (req, res) => { + try { + // Fetch all users from the database + const users = await User.find(); + + res.status(200).json(users); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +// Controller to update a user +const updateUser = async (req, res) => { + try { + const { userId } = req.params; // Assuming userId is passed as a route parameter + const updates = req.body; // Assuming the updates are sent in the request body + + // Update the user in the database + const updatedUser = await User.findByIdAndUpdate(userId, updates, { new: true }); + + if (!updatedUser) { + return res.status(404).json({ error: 'User not found' }); + } + + res.status(200).json(updatedUser); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + + +// Controller to delete a user +const deleteUser = async (req, res) => { + try { + const { userId } = req.params; // Assuming userId is passed as a route parameter + + // Find the user by ID and delete it from the database + const deletedUser = await User.findByIdAndDelete(userId); + + if (!deletedUser) { + return res.status(404).json({ error: 'User not found' }); + } + + res.status(200).json({ message: 'User deleted successfully' }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + + +module.exports = { SignupUser,loginUser, getAllUsers, updateUser, deleteUser }; + + \ No newline at end of file diff --git a/InventoryManagementApp/server/controllers/error.controller.js b/InventoryManagementApp/server/controllers/error.controller.js deleted file mode 100644 index 80c267d..0000000 --- a/InventoryManagementApp/server/controllers/error.controller.js +++ /dev/null @@ -1,17 +0,0 @@ -// error.controller.js -// Import any necessary modules or dependencies -// Example: const SomeModule = require('some-module'); -// Define your controller function -function handleError(req, res) { - // Your code to handle the error - } - function getErrorMessage(errMsg) { - console.log(errMsg); - } - // Export the controller function - export default { - handleError: handleError, - getErrorMessage:getErrorMessage - }; - - \ No newline at end of file diff --git a/InventoryManagementApp/server/controllers/user.controller.js b/InventoryManagementApp/server/controllers/user.controller.js deleted file mode 100644 index 40a67d5..0000000 --- a/InventoryManagementApp/server/controllers/user.controller.js +++ /dev/null @@ -1,168 +0,0 @@ -/*import User from '../models/user.model.js' - import extend from 'lodash/extend' - import errorHandler from '../helpers/dbErrorHandler.js' - import errorHandler from './error.controller' - - const create = async (req, res) => { - const user = new User(req.body) - try { - await user.save() - return res.status(200).json({ - message: "Successfully signed up!" - }) - } catch (err) { - return res.status(400).json({ - error: errorHandler.getErrorMessage(err) - }) - } - } - - const list = async (req, res) => { - try { - let users = await User.find().select('name email updated created’) - res.json(users) - } catch (err) { - return res.status(400).json({ - error: errorHandler.getErrorMessage(err) - }) - } - } - - const userByID = async (req, res, next, id) => { - try { - let user = await User.findById(id) - if (!user) - return res.status('400').json({ - error: "User not found" - }) - req.profile = user - next() - } catch (err) { - return res.status('400').json({ - error: "Could not retrieve user" - }) - } - } - - const read = (req, res) => { - req.profile.hashed_password = undefined - req.profile.salt = undefined - return res.json(req.profile) - } - - const update = async (req, res) => { - try { - let user = req.profile - user = extend(user, req.body) - user.updated = Date.now() - await user.save() - user.hashed_password = undefined - user.salt = undefined - res.json(user) - } catch (err) { - return res.status(400).json({ - error: errorHandler.getErrorMessage(err) - }) - } - } - - - const remove = async (req, res) => { - try { - let user = req.profile - let deletedUser = await user.remove() - deletedUser.hashed_password = undefined - deletedUser.salt = undefined - res.json(deletedUser) - } catch (err) { - return res.status(400).json({ - error: errorHandler.getErrorMessage(err) - }) - } - } - - const create = (req, res, next) => { } - const list = (req, res) => { } - const userByID = (req, res, next, id) => { } - const read = (req, res) => { } - const update = (req, res, next) => { } - const remove = (req, res, next) => { } - export default { create, userByID, read, list, remove, update } -*/ - -import User from '../models/user.model.js' -import extend from 'lodash/extend.js' -import errorHandler from './error.controller.js' -const create = async (req, res) => { -const user = new User(req.body) -try { -await user.save() -return res.status(200).json({ -message: "Successfully signed up!" -}) -} catch (err) { -return res.status(400).json({ -error: errorHandler.getErrorMessage(err) -}) -} -} -const list = async (req, res) => { -try { -let users = await User.find().select('name email updated created') -res.json(users) -} catch (err) { -return res.status(400).json({ -error: errorHandler.getErrorMessage(err) -}) -} -} -const userByID = async (req, res, next, id) => { -try { -let user = await User.findById(id) -if (!user) -return res.status('400').json({ -error: "User not found" -}) -req.profile = user -next() -} catch (err) { -return res.status('400').json({ -error: "Could not retrieve user" -}) -} -} -const read = (req, res) => { -req.profile.hashed_password = undefined -req.profile.salt = undefined -return res.json(req.profile) -} -const update = async (req, res) => { -try { -let user = req.profile -user = extend(user, req.body) -user.updated = Date.now() -await user.save() -user.hashed_password = undefined -user.salt = undefined -res.json(user) -} catch (err) { -return res.status(400).json({ -error: errorHandler.getErrorMessage(err) -}) -} -} -const remove = async (req, res) => { -try { -let user = req.profile -let deletedUser = await user.deleteOne() -deletedUser.hashed_password = undefined -deletedUser.salt = undefined -res.json(deletedUser) -} catch (err) { -return res.status(400).json({ -error: errorHandler.getErrorMessage(err) -}) -} -} - export default { create, userByID, read, list, remove, update } - diff --git a/InventoryManagementApp/server/express.js b/InventoryManagementApp/server/express.js index 1241a89..c3637b7 100644 --- a/InventoryManagementApp/server/express.js +++ b/InventoryManagementApp/server/express.js @@ -1,26 +1,28 @@ -import express from 'express' -import bodyParser from 'body-parser' -import cookieParser from 'cookie-parser' -import compress from 'compression' -import cors from 'cors' -import helmet from 'helmet' -import Template from './../template.js' -import userRoutes from './routes/user.routes.js' +const express = require('express'); +const bodyParser = require('body-parser'); +const cors = require('cors'); +const userRoutes = require('./routes/UserRoute'); const app = express() app.get('/', (req, res) => { - res.status(200).send(Template()) + res.status(200).send("Welcome ") }) app.use(express.json()); -app.use(express.urlencoded({ extended: true })); -app.use('/', userRoutes) + app.use(bodyParser.json()) -app.use(bodyParser.urlencoded({ extended: true })) -app.use(cookieParser()) -app.use(compress()) -app.use(helmet()) + app.use(cors()) -export default app + +// Mount user routes +app.use('/api/users', userRoutes); + +// // Start the server +// const PORT = process.env.PORT || 3000; +// app.listen(PORT, () => { +// console.log(`Server is running on port ${PORT}`); +// }); + +module.exports = app diff --git a/InventoryManagementApp/server/helpers/dbErrorHandler.js b/InventoryManagementApp/server/helpers/dbErrorHandler.js deleted file mode 100644 index 8571b55..0000000 --- a/InventoryManagementApp/server/helpers/dbErrorHandler.js +++ /dev/null @@ -1,34 +0,0 @@ -const getErrorMessage = (err) => { - let message = '' - if (err.code) { - switch (err.code) { - case 11000: - case 11001: - message = getUniqueErrorMessage(err) - break - default: - message = 'Something went wrong' - } - } else { - for (let errName in err.errors) { - if (err.errors[errName].message) - message = err.errors[errName].message - } - } - return message - } - const getUniqueErrorMessage = (err) => { - let output - try { - let fieldName = - err.message.substring(err.message.lastIndexOf('.$') + 2, - err.message.lastIndexOf('_1')) - output = fieldName.charAt(0).toUpperCase() + fieldName.slice(1) + - ' already exists' - } catch (ex) { - output = 'Unique field already exists' - } - return output - } - export default {getErrorMessage} - \ No newline at end of file diff --git a/InventoryManagementApp/server/helpers/helperFunctions.js b/InventoryManagementApp/server/helpers/helperFunctions.js new file mode 100644 index 0000000..b1baade --- /dev/null +++ b/InventoryManagementApp/server/helpers/helperFunctions.js @@ -0,0 +1,7 @@ +const crypto = require('crypto'); + +// Generate a random string of 32 characters +const generateSecret = () => { + return crypto.randomBytes(16).toString('hex'); +}; + diff --git a/InventoryManagementApp/server/models/UserModel.js b/InventoryManagementApp/server/models/UserModel.js new file mode 100644 index 0000000..1b1a1ef --- /dev/null +++ b/InventoryManagementApp/server/models/UserModel.js @@ -0,0 +1,31 @@ +const mongoose = require('mongoose'); + +const UserSchema = new mongoose.Schema({ + name: { + type: String, + trim: true, + required: [true, 'Name is required'] + }, + email: { + type: String, + trim: true, + unique: [true, 'Email already exists'], + match: [/.+\@.+\..+/, 'Please fill a valid email address'], + required: [true, 'Email is required'] + }, + created: { + type: Date, + default: Date.now + }, + updated: { + type: Date, + default: Date.now + }, + hashed_password: { + type: String, + required: [true, 'Password is required'] + }, + salt: String + }); + + module.exports = mongoose.model('User', UserSchema); \ No newline at end of file diff --git a/InventoryManagementApp/server/models/user.model.js b/InventoryManagementApp/server/models/user.model.js deleted file mode 100644 index 331216f..0000000 --- a/InventoryManagementApp/server/models/user.model.js +++ /dev/null @@ -1,51 +0,0 @@ -//const mongoose = require('mongoose'); -import mongoose from 'mongoose' - const UserSchema = new mongoose.Schema({ - name: { - type: String, - trim: true, - required: 'Name is required' - }, - email: { - type: String, - trim: true, - unique: 'Email already exists', - match: [/.+\@.+\..+/, 'Please fill a valid email address'], - required: 'Email is required' - }, - created: { - type: Date, - default: Date.now - }, - updated: { - type: Date, - default: Date.now - }, - hashed_password: { - type: String, - required: 'Password is required' - }, - salt: String - }); - UserSchema.virtual('password') - .set(function(password) { - this._password = password; - //this.salt = this.makeSalt(); - //this.hashed_password = this.encryptPassword(password); - this.hashed_password = password; - }) - .get(function() { - return this._password; - }); - UserSchema.path('hashed_password').validate(function(v) { - if (this._password && this._password.length < 6) { - this.invalidate('password', 'Password must be at least 6 characters.'); - } - if (this.isNew && !this._password) { - this.invalidate('password', 'Password is required'); - } - }, null); - //module.exports = mongoose.model('User', UserSchema); - export default mongoose.model('User', UserSchema); - - diff --git a/InventoryManagementApp/server/routes/UserRoute.js b/InventoryManagementApp/server/routes/UserRoute.js new file mode 100644 index 0000000..d23fdb5 --- /dev/null +++ b/InventoryManagementApp/server/routes/UserRoute.js @@ -0,0 +1,22 @@ +const express = require('express'); +const router = express.Router(); + +const {SignupUser, loginUser, getAllUsers, updateUser, deleteUser } = require('../controllers/UserController') + + +// Route to get all users +router.get('/', getAllUsers); + +// Route to sign up a new user +router.post('/signup', SignupUser); + +// Route to log in a user +router.post('/login', loginUser); + +// Route to update a user +router.put('/:userId', updateUser); + +// Route to delete a user +router.delete('/:userId', deleteUser); + +module.exports = router; diff --git a/InventoryManagementApp/server/routes/user.routes.js b/InventoryManagementApp/server/routes/user.routes.js deleted file mode 100644 index 0ed6c03..0000000 --- a/InventoryManagementApp/server/routes/user.routes.js +++ /dev/null @@ -1,20 +0,0 @@ -import express from 'express' - import userCtrl from '../controllers/user.controller.js' - const router = express.Router() - router.route('/api/users') - .get(userCtrl.list) - .post(userCtrl.create) - router.route('/api/users/:userId') - .get(userCtrl.read) - .put(userCtrl.update) - .delete(userCtrl.remove) - router.param('userId', userCtrl.userByID) - router.route('/api/users').post(userCtrl.create) - router.route('/api/users').get(userCtrl.list) - router.param('userId', userCtrl.userByID) - router.route('/api/users/:userId').get(userCtrl.read) - router.route('/api/users/:userId').put(userCtrl.update) - router.route('/api/users/:userId').delete(userCtrl.remove) - - - export default router diff --git a/InventoryManagementApp/yarn.lock b/InventoryManagementApp/yarn.lock index 145f660..1e2ff19 100644 --- a/InventoryManagementApp/yarn.lock +++ b/InventoryManagementApp/yarn.lock @@ -983,6 +983,21 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@mapbox/node-pre-gyp@^1.0.11": + version "1.0.11" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz" + integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + "@mongodb-js/saslprep@^1.1.0": version "1.1.1" resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz" @@ -1190,6 +1205,13 @@ acorn@^8, acorn@^8.7.1, acorn@^8.8.2: resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" @@ -1256,6 +1278,19 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" @@ -1298,6 +1333,19 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +bcrypt@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz" + integrity sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.11" + node-addon-api "^5.0.0" + +bcryptjs@^2.4.3: + version "2.4.3" + resolved "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz" + integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" @@ -1369,6 +1417,11 @@ bson@^6.2.0: resolved "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz" integrity sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q== +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" @@ -1430,6 +1483,11 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" @@ -1468,6 +1526,11 @@ color-name@1.1.3: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + commander@^2.20.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -1518,6 +1581,11 @@ concurrently@^8.2.0: tree-kill "^1.2.2" yargs "^17.7.2" +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" @@ -1622,6 +1690,13 @@ debug@3.1.0: dependencies: ms "2.0.0" +debug@4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@4.x: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" @@ -1638,6 +1713,11 @@ define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" @@ -1648,6 +1728,11 @@ destroy@1.2.0: resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" @@ -1658,6 +1743,13 @@ dotenv@^16.4.5: resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" @@ -1839,11 +1931,38 @@ fresh@0.5.2: resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" @@ -1876,6 +1995,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + global@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" @@ -1928,6 +2059,11 @@ has-symbols@^1.0.3: resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + hasown@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" @@ -1951,6 +2087,14 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -1963,7 +2107,15 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== -inherits@2.0.4: +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2053,6 +2205,39 @@ json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonwebtoken@^9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + kareem@2.5.1: version "2.5.1" resolved "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz" @@ -2075,6 +2260,41 @@ lodash.debounce@^4.0.8: resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" @@ -2087,6 +2307,20 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" @@ -2146,13 +2380,38 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -minimatch@^3.1.2: +minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mongodb-connection-string-url@^2.6.0: version "2.6.0" resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz" @@ -2220,6 +2479,18 @@ neo-async@^2.6.2: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-releases@^2.0.14: version "2.0.14" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" @@ -2241,6 +2512,13 @@ nodemon@^2.0.22: touch "^3.1.0" undefsafe "^2.0.5" +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" @@ -2253,7 +2531,17 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -object-assign@^4: +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -2275,6 +2563,13 @@ on-headers@~1.0.2: resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + p-limit@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" @@ -2299,6 +2594,11 @@ path-exists@^5.0.0: resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" @@ -2388,6 +2688,15 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -2457,6 +2766,13 @@ resolve@^1.14.2: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rxjs@^7.8.1: version "7.8.1" resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" @@ -2464,7 +2780,7 @@ rxjs@^7.8.1: dependencies: tslib "^2.1.0" -safe-buffer@^5.1.0, safe-buffer@5.2.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2512,11 +2828,25 @@ semver@^5.7.1: resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.3.1: +semver@^6.0.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.3.5: + version "7.6.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.4: + version "7.6.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + semver@~7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" @@ -2558,6 +2888,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz" @@ -2592,6 +2927,11 @@ sift@16.0.1: resolved "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz" integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ== +signal-exit@^3.0.0: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + simple-update-notifier@^1.0.7: version "1.1.0" resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz" @@ -2629,7 +2969,14 @@ statuses@2.0.1: resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2683,6 +3030,18 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar@^6.1.11: + version "6.2.0" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" @@ -2735,6 +3094,11 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" @@ -2806,6 +3170,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" @@ -2824,6 +3193,11 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" @@ -2872,6 +3246,21 @@ whatwg-url@^11.0.0: tr46 "^3.0.0" webidl-conversions "^7.0.0" +whatwg-url@^5.0.0: + 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" + +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" @@ -2881,6 +3270,11 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -2891,6 +3285,11 @@ yallist@^3.0.2: resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" From d2f503bb0e908707d28f590052bc0a76a88aafca Mon Sep 17 00:00:00 2001 From: Maxmillian Afanga <39309700+Maxafangsco@users.noreply.github.com> Date: Tue, 19 Mar 2024 15:25:12 -0400 Subject: [PATCH 02/34] Create README.md --- README.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0c930d1 --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +Things to do before you start testing +1. checkout 'buildAPI_1' branch +2. create .env file and put "JWT_SECRETE_KEY = generateSecret()" inside the file +3. npm install +4. spin up the server with "npm run dev" +5. start testing the endpoints + + +User Endpoint + +Signup New User +Description: Endpoint to signup a new user. +HTTP Method: POST +URL: /api/users/signup +Request Body: +{ + "name": "James doh", + "email": "james@gmail.com", + "password":"domeidoyou" +} +Response: +201 Created: Successfully created a new user. Returns the newly created user object. +500 Internal Server Error: An error occurred while processing the request. + +Login User +Description: Endpoint to login a user. +HTTP Method: POST +URL: /api/users/login +Request Body: +{ + "email": "lucas@gmail.com", + "password":"domeidoyou" +} +Response: +200 OK: Successfully logged in. Returns a JWT token for authentication. +401 Unauthorized: Invalid credentials provided. +500 Internal Server Error: An error occurred while processing the request. + + +Get All Users +Description: Endpoint to retrieve all users. +HTTP Method: GET +URL: /api/users +Response: +200 OK: Successfully retrieved all users. Returns an array of user objects. +500 Internal Server Error: An error occurred while processing the request. + +Update User +Description: Endpoint to update a user. +HTTP Method: PUT +URL: /api/users/:userId +Request Parameters: +userId (string): ID of the user to be updated. +Request Body: +name (string, optional): Updated user's name. +email (string, optional): Updated user's email address. +Response: +200 OK: Successfully updated the user. Returns the updated user object. +404 Not Found: User with the specified ID not found. +500 Internal Server Error: An error occurred while processing the request. + + +Delete User +Description: Endpoint to delete a user. +HTTP Method: DELETE +URL: /api/users/:userId +Request Parameters: +userId (string): ID of the user to be deleted. +Response: +200 OK: Successfully deleted the user. +404 Not Found: User with the specified ID not found. +500 Internal Server Error: An error occurred while processing the request. From 1bb49a0f3accc2ad156bf1f84f9ad7099ad69249 Mon Sep 17 00:00:00 2001 From: Maxmillian Afanga <39309700+Maxafangsco@users.noreply.github.com> Date: Tue, 19 Mar 2024 15:27:46 -0400 Subject: [PATCH 03/34] Update README.md --- README.md | 143 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 80 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 0c930d1..def266e 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,89 @@ -Things to do before you start testing -1. checkout 'buildAPI_1' branch -2. create .env file and put "JWT_SECRETE_KEY = generateSecret()" inside the file -3. npm install -4. spin up the server with "npm run dev" -5. start testing the endpoints +# User Authentication API +## Prerequisites +Before you start testing, ensure you follow these steps: -User Endpoint +1. Checkout the 'buildAPI_1' branch. +2. Create a `.env` file and include the following line: + ``` + JWT_SECRET_KEY=generateSecret() + ``` +3. Run `npm install`. +4. Spin up the server with `npm run dev`. +5. Start testing the endpoints. -Signup New User -Description: Endpoint to signup a new user. -HTTP Method: POST -URL: /api/users/signup -Request Body: -{ - "name": "James doh", - "email": "james@gmail.com", - "password":"domeidoyou" -} -Response: -201 Created: Successfully created a new user. Returns the newly created user object. -500 Internal Server Error: An error occurred while processing the request. +## User Endpoint -Login User -Description: Endpoint to login a user. -HTTP Method: POST -URL: /api/users/login -Request Body: -{ - "email": "lucas@gmail.com", - "password":"domeidoyou" -} -Response: -200 OK: Successfully logged in. Returns a JWT token for authentication. -401 Unauthorized: Invalid credentials provided. -500 Internal Server Error: An error occurred while processing the request. +### Signup New User +- **Description**: Endpoint to signup a new user. +- **HTTP Method**: POST +- **URL**: `/api/users/signup` +- **Request Body**: + ```json + { + "name": "James doh", + "email": "james@gmail.com", + "password": "domeidoyou" + } + ``` +- **Response**: + - `201 Created`: Successfully created a new user. Returns the newly created user object. + - `500 Internal Server Error`: An error occurred while processing the request. -Get All Users -Description: Endpoint to retrieve all users. -HTTP Method: GET -URL: /api/users -Response: -200 OK: Successfully retrieved all users. Returns an array of user objects. -500 Internal Server Error: An error occurred while processing the request. +### Login User -Update User -Description: Endpoint to update a user. -HTTP Method: PUT -URL: /api/users/:userId -Request Parameters: -userId (string): ID of the user to be updated. -Request Body: -name (string, optional): Updated user's name. -email (string, optional): Updated user's email address. -Response: -200 OK: Successfully updated the user. Returns the updated user object. -404 Not Found: User with the specified ID not found. -500 Internal Server Error: An error occurred while processing the request. +- **Description**: Endpoint to login a user. +- **HTTP Method**: POST +- **URL**: `/api/users/login` +- **Request Body**: + ```json + { + "email": "lucas@gmail.com", + "password": "domeidoyou" + } + ``` +- **Response**: + - `200 OK`: Successfully logged in. Returns a JWT token for authentication. + - `401 Unauthorized`: Invalid credentials provided. + - `500 Internal Server Error`: An error occurred while processing the request. +### Get All Users -Delete User -Description: Endpoint to delete a user. -HTTP Method: DELETE -URL: /api/users/:userId -Request Parameters: -userId (string): ID of the user to be deleted. -Response: -200 OK: Successfully deleted the user. -404 Not Found: User with the specified ID not found. -500 Internal Server Error: An error occurred while processing the request. +- **Description**: Endpoint to retrieve all users. +- **HTTP Method**: GET +- **URL**: `/api/users` +- **Response**: + - `200 OK`: Successfully retrieved all users. Returns an array of user objects. + - `500 Internal Server Error`: An error occurred while processing the request. + +### Update User + +- **Description**: Endpoint to update a user. +- **HTTP Method**: PUT +- **URL**: `/api/users/:userId` +- **Request Parameters**: + - `userId` (string): ID of the user to be updated. +- **Request Body**: + ```json + { + "name": "Updated Name", + "email": "updatedemail@example.com" + } + ``` +- **Response**: + - `200 OK`: Successfully updated the user. Returns the updated user object. + - `404 Not Found`: User with the specified ID not found. + - `500 Internal Server Error`: An error occurred while processing the request. + +### Delete User + +- **Description**: Endpoint to delete a user. +- **HTTP Method**: DELETE +- **URL**: `/api/users/:userId` +- **Request Parameters**: + - `userId` (string): ID of the user to be deleted. +- **Response**: + - `200 OK`: Successfully deleted the user. + - `404 Not Found`: User with the specified ID not found. + - `500 Internal Server Error`: An error occurred while processing the request. From 6b65139fe677f8642bded7a843775220c4cfd923 Mon Sep 17 00:00:00 2001 From: Maxmillian Afanga <39309700+Maxafangsco@users.noreply.github.com> Date: Tue, 19 Mar 2024 15:28:36 -0400 Subject: [PATCH 04/34] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index def266e..ec5cd86 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## Prerequisites Before you start testing, ensure you follow these steps: -1. Checkout the 'buildAPI_1' branch. +1. Checkout the 'buildAPI_V1' branch. 2. Create a `.env` file and include the following line: ``` JWT_SECRET_KEY=generateSecret() From a232b3528f84b02a5a4fafdbf62e5ffff320f792 Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Tue, 19 Mar 2024 15:36:03 -0400 Subject: [PATCH 05/34] update readme --- InventoryManagementApp/readme.md | 72 -------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 InventoryManagementApp/readme.md diff --git a/InventoryManagementApp/readme.md b/InventoryManagementApp/readme.md deleted file mode 100644 index 5e0aaa5..0000000 --- a/InventoryManagementApp/readme.md +++ /dev/null @@ -1,72 +0,0 @@ -Things to do before you start testing -1. checkout 'buildAPI_1' branch -2. create .env file and put "JWT_SECRETE_KEY = generateSecret()" inside the file -3. npm install -4. spin up the server with "npm run dev" -5. start testing the endpoints - - -User Endpoint - -Signup New User -Description: Endpoint to signup a new user. -HTTP Method: POST -URL: /api/users/signup -Request Body: -{ - "name": "James doh", - "email": "james@gmail.com", - "password":"domeidoyou" -} -Response: -201 Created: Successfully created a new user. Returns the newly created user object. -500 Internal Server Error: An error occurred while processing the request. - -Login User -Description: Endpoint to login a user. -HTTP Method: POST -URL: /api/users/login -Request Body: -{ - "email": "lucas@gmail.com", - "password":"domeidoyou" -} -Response: -200 OK: Successfully logged in. Returns a JWT token for authentication. -401 Unauthorized: Invalid credentials provided. -500 Internal Server Error: An error occurred while processing the request. - - -Get All Users -Description: Endpoint to retrieve all users. -HTTP Method: GET -URL: /api/users -Response: -200 OK: Successfully retrieved all users. Returns an array of user objects. -500 Internal Server Error: An error occurred while processing the request. - -Update User -Description: Endpoint to update a user. -HTTP Method: PUT -URL: /api/users/:userId -Request Parameters: -userId (string): ID of the user to be updated. -Request Body: -name (string, optional): Updated user's name. -email (string, optional): Updated user's email address. -Response: -200 OK: Successfully updated the user. Returns the updated user object. -404 Not Found: User with the specified ID not found. -500 Internal Server Error: An error occurred while processing the request. - - -Delete User -Description: Endpoint to delete a user. -HTTP Method: DELETE -URL: /api/users/:userId -Request Parameters: -userId (string): ID of the user to be deleted. -Response: -200 OK: Successfully deleted the user. -404 Not Found: User with the specified ID not found. -500 Internal Server Error: An error occurred while processing the request. \ No newline at end of file From 492ef856766560dc5629f8130a2da0b2c32096d9 Mon Sep 17 00:00:00 2001 From: Cy Vergara <36120221+cyrilvergara@users.noreply.github.com> Date: Tue, 19 Mar 2024 21:29:35 -0400 Subject: [PATCH 06/34] re uploaded sample data --- sampleData/SampleData_BAL02222024.xlsx | Bin 0 -> 277601 bytes sampleData/SampleData_DIN02222024.xlsx | Bin 0 -> 174633 bytes sampleData/SampleData_ORI02072024.xlsx | Bin 0 -> 178396 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sampleData/SampleData_BAL02222024.xlsx create mode 100644 sampleData/SampleData_DIN02222024.xlsx create mode 100644 sampleData/SampleData_ORI02072024.xlsx diff --git a/sampleData/SampleData_BAL02222024.xlsx b/sampleData/SampleData_BAL02222024.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a98dde9ce90f09a106bfb7a138da9ec8b2f3e8ab GIT binary patch literal 277601 zcmeFY1y@|_vNenZOCSUb4#B07(6~c@;1D!81b270Kmx%-6Cglv*WfhnH0}g@brl$Cr&?G%rhdJB^)4OHlDiyxXwD0KJYZg7Yf~NgrK>?1 zJv^YNMNN;Go3*ohkER))FxF8^^Y9lgu?QQXzJ7#hGTaY`ns#Ll@nun&A|i9V*FyfQ zDSx`vu@<}P&ZFnH;mt};tM3#as&d+n;1{eeP5 zg~3p{&haKew#kXUmVLs&2w~xENOa@N`N2ixh9+(@c@CnA{IIhEt*&S*P_ws=w`Vhb zWcb;Kn|dxhbA4v*RFMFRz|m>A4_4uouZzL9Lp~kCc$sprqqaBmw=~N*Bpr*y#`URD z(Z&h{lr~ID+1;t)ioD#6fxfvty|p|oiu*<+-nKa-C~MCot{!nOu(s<@Ti(6uZK0s{ z3Ef}n+2;4!8(!BAIyi=G`+*;j;ou%05#c`ktt_k5-cp?bSd#;)?gdbm`i>^nPOL0X zKmT7j{vWQv|46+kR$j6FEqchI)Lm%L<-~mSt9P<)qEZbMs=ofxbC^{TnbgGd&2%KM zREdHRCH)$G@A_uv1tNBOC@xkwio&sR`KhYiibE1^99&QsX&oW&9g3Dauv{n3CoU2t zWjyFz8>1KtYxB}&dl#wRj~$DbzZzosNQ8!yO%n22Ffl-@OI~xq@TvrU;+@KVaY$JW z_phC}p=7@)NX|Bf@E2aWz0pLx9w$SynG)|FYl`!0A~h9rUW+orR7XBa4}D|nmQ(TM zW}JI(W`&I5-)2k$ z3Zw!F4h|EzGw#-`Zg!4VhIV#VPkk#(b=EfX?JFOBi^tXzex$hXTzOg9^7Rt4vfquz z5~M&VKMjzqC%NPc3LcvfgBMOl=QEz^cl}IccM_n>ofQznl(S%w@b3)>!on$+tJOfd znmQZh>yjd7#7>fKMY!wX5Zd>9bghW7Y>ak{fD_q*%k9E#vf1S^;hjLKFhF3E&3Cjk z$XBms!Oi@tK*;W4+7P)q!@G{ajoNgB9-_nI(T@yfaiWz&%+Pp`5nQUGxAmGiN*FOg zrHbVR2;u?%>P4!LNkC@=WEUvD((GTFI5Ng|!yM%PNus9hQ)m|^f z2&Z9m7Zp2)ZJ%Ji&%J_ix=LIXmvPvZIaeZ@j6DP1$;ia(-)ou&H@82p5g?OTq4Ywn)raud6XB%Zg|h;&C|8 z?Rv@ias?6RycLuehW*SF$NG>T$!_3u01?%2znCmg5(x);Z)dk~|HaEBC!9K=*dC@- zT%L_9dK$ve%p6Mbv%1j`4$Hx}E?`TiVbVT;|6rAC{x`uYd&Pm3H8pRN7);k6>%?X+ zkkbM^$VW~I(WC`1Jm5yQ#wkEotr8cgC(t`nd5=M>*3299b&^6^vI0&)?-1uVp*@o1 zehjfr>luj+YKP0t?{51TnrBa#U}uM>YrWkQi@=lq-}KiVeXu^FhX^NOO8`dz{KkLL zpOd+XiL(>yUl+C~9{i@FYq#?DmA7#IBgKgqn}UUxcyNKTn(m^)CBuBO16K!SHPtN1 z(V<<+G{RSvo)=beDKjaF#^;WzHW&Csaqkm?2R5h?ndNBCtEq+kpo@OAiKjXrp`1iA zjtG)^lWuA1C`N82@JEDT^N+Dzww^0fSM7t+U)gCEVN<;Q(K4? zO}ErD+*g{XHr#3BdV|06jezP8+}?Kx#73^^$B2(fDD;hOO_yliRhmegi!~3)yx#D2 zHUhB%85wVi@)Ycrp7Dio{Jvv*i#E36emC$Py%d?REvnr>^E!tb^|jY##EsybrZ~pE z$6mK5K`QIfJQ2KrINT(vM&t#np>PS-?aY;bE@}&(MT^s3H=hlhFJq&G1`eEAgw*>0 zK{%^t-!4%C#84?7w)ltyz=7E$Z4{y(MhK{BS_hTZRwpZP-}A`npgR#)>OA{07{Ls| zHr_6?Nn-a#Ir7@0H1v_^{cY3^`CkC}>&JH=UAw)$m^FR2yC$1* z;R(dq7S~I)(?W(3Clgsub|~_Nh3O|^_J&8_-DqnaPP{T?pu9*#p7)tm1Jgdd0WA6L^Z{2r?p9xu2bYyLc(+dW=1 zKP;{vKHkkPKCbHfUG2A9Hs0=&`#sipEk9ahW8CE4-!?y79o;V8PXX^XH1oR2)IG0r z>MM?E$eKg0(^s|)pHu1Ek8a4BBdg(h&)v1)2boksB5|}TCt|cJ z_mGJ4IuuU2iXB0E;*{=9zV8F6RKYL(fGi?U`CiV6;WXfM^CDVR%uYlZqY+V>^9+8? z4dZ_BWCg@K86InNpZMDOmhSX89&A;xcWPWQA2VXomY?K{Hj?`-%1Wa?b@;JdPw4}P zf8i_5uF@`ui8rxY>3hqnM{JsXtGmL@!RD95-s>E+!9M<(Tm&MwMPId@xC)iyH_y zf(1Kyhi<8Kb#pT5hMMDK*nDxN_~SQ^G=Ih{iH@VBbZwT$8rGbE&6~59)J`Pz(#jt8 zDJ52$Qol9!UoT~6PLQeVd{AQNeBrKBm|soKN_=X(N4KgU?Dh8kd=9}r+@rnYYnI~) zb@?J>;;qv@dLFFaFcIT>)def9K0`47D@R}U*%V!W-^kg1(gM8Bi6yu5vOg*qf@0?* zDUIKI*l1|_0@mmir9C{_IrBL^kYpnr-|+UeGT(CmS1v(S7L+=Djn;AH}UtJ~}q} zWVVaAp;sM6A9tzlMilSS@uacNlqtKve|JZTT@|FESqNAgd>&15DB=ih&wOuM3x#i|E2?WJ-Pe4uLkqitJnAD-(GBQ26YY_cogWji? z0s_zLd=O*xo*#;wfXGS`(XQJwqJ_Of1n#i`NRghXrUA(^uMVMYMq~aLo?ed7iqF2< ze^;3{Y}w$aW5WY|G56MiALFoc;X)OMmBvv{8qMwvFSM1pvCPk4WuBN^K4vU z%fnCLu@Vyo3gp12IpJa0CMOaTRPgyzMnTwDvpjxJmwy4LBVg^7qV#quT(2O2nWtAM zv5Si$C%43m0gHaA8rc*k%=3gYwcz0S%cSSZ39Bkgsl1_2KKOUWT$FVup-HUbN>;*YZihpnxG{RH4 zXu_Sr(vU_m<|X%!4;F#2BWNn18S~N|ecdWq@b}4r^OS@f>>!pV!(NO*AYTe5s7Xdr zeio=^cxDmt5cAU@TS+QN8Op7r`S#V-b=g{mdUWss@Y%*2@A9n&g3rzz&+Y7oFO#(_ z$w_dYeLI(AJ5e^4G~nD375JW~s2SmDK(iANpNFEJA!Onvz>BCz{hM8bI3vEz#Yw4I zj=5Op!l-fl=y1c|jB)Vy1Qkd|L2A4^$zpJT(^aM09;e*~-HmO|PpxC4?2m8rHMwzi zi_WKY$DrHU@aWrbYA_Wp3D;-pI2m~bfyK`E0rRIVuQkbL5I|zu-ju2JqL5A7=xp3a zIIcu_WWoY1+ET6K+ZQSNM!5~ir4J)92zLV7`|gkhH0duI#smLKkh?Ib@|kY{UU;j` zUP1Ws!t&~>gG-iK!@%4~iQ;`*Yh5F=cAEs>kVedRJ=Uk-?ag^jfyE)hcTnsHhK7VA zR>ra`@lmp@>N`FkNo@tYd9!sz%d?CpM zwnnw#%f3ws?XK}J=LtiE|-gb$EutQ~!-X8Pg4;+M}vShAD+B(w=paV50A z5fVP+R8Itb^NWGNznyb2J@~DaGof`nG;LOOaj*fpC`2KIZy6oy!D7XD7Q z+RI6W371?*+uaA;?hfeKsujzw|G5I|qF?@=y7$5LC;d5#Uz1sL`<5Ln-bDmqbBrNd zz8smOXRI?Qtb^alLyrwNWbuTEg1=OZGWv(~%MuK;5B;D_-o<5(a|R`_XpVCV44^}h zO@Cvsn%KVsQ>nW;*_QlAjt_;jWNreD9w7Vn{^E~k+QKTN72+RqB!6*Ugo9b9E%$fzO~LQR|(s#@w-VysKlvvJOUq`QwO*xpLZ0L zCEzQyln&aKI9z)+?S)C~m~v?pZ=cV0l>ntjDzr!T@#k?3>p@T3+0u9B!{xd+MUvZB zxZ7C1NCN>G@6oIINEB>57%o85JNC7CI4Wyp%5of5o#L{Kn`Ub(=is{OFu%y>8mvtX z*JOCA0@SGkS7voQt%r{Ue--=sE`hCKZNxH5$nCWrqju^LhDZSM&)-$aZ{a+CF?!_? zt;0Jek_AAFMIhN=1DAHS8`;x_Ej*h#K@o@~{F&4o862|~At$gb^vh$6?VL15D< z-0*;X^+vXD8{L)`%gf;%g7D<$zgP9b^8JNq)I{Qe(65jg8C?I{!=w9+r8p|RJ^&!d zeo7Ze+8Dm$$(ryYMrghtKAUu*=)%5X4rjm_M0`Q;=Z5UwF~#{#oi=HaT?U@PZhsEh zx@K)Q^RSeYgPI9hr>159r?l;>bjj8E7iP36ft%MGxn!0(`Yf7oh*B`HidIDF7D-zk z4q67i4_{%ehddLRiiMLn$KMSnzeX(m8UAQ;a`=ZEn5m(($E8KqT%^u_o08TiNw|ud zSp1e?wU-^aOdB#wa9~*LRvSxdU&F-S-~V2+QNs(0n#7o}g=LO$mvQl;`p>+gjl?B_ z_Wl8Ww!Swt>G`|QM;QTb1+Offg!~oMXO|cPVOfh+hpyQ%-MvQ~M-0tFwii9K0i+2n zQQXhWpgKmZ|E{ZhZ%`CC(F3Luq%v_otvu?TkC6ZI`maZH5uU_4y(3HRr%}KEkprTq zsC1TX7F*7ur`c661=F}R6JHzvk4%O6xn6tBx6co_Ma9!K0guqPJ^-BIUf0!W z6}qp%anqYLBjSeC{TEFw*whq;I+KIlf|~k{>lNvoFK~8M2Dur4%8Gr_Q?d4mk5`eSUQKo=+ zv+I?VC;YpiEiBKA4zbnY)dD>_YmPXVHk8PRFObxi#+;uv9eb6``0J75iH^6V}$gGL8 zpy!QY--+fdL0TQ`6Xb=BPf?7T^DY95o36qwS*QE3M0#Ylj5^Bx$SU^V`UfnW)^md& zeAQOjV6e4?2yzCw%+k1J=`AOW)cL)b1YbUu^fX=@kH8ri=Y{gWMGrsp_wSB%sTu@s zo|-8O@&Zw^d+dQiAOFcER?8*>n9W6L&!~%j%=&~-i)AT_>$S`t{w3V13(eUlGslDM zX1SyJ{!q%XpSjBxYp26NMni2tMt2&A|H!CRJ6*dO;3G6a8xpI?Zm4Rxc$A1$2mZQl z*~FLb+Z8reBH14Nb6rnbvQz8IY2V|Svn@wX}Sa#53* zCUg2w9;9)VE*K|^9zRrDaH+LYRdK+&X{EY8f)tQ){5tz&Cd9D)aDH_tqo@7gVEz13 z#OU`|6Koh&deIw~Fx1K%NhKs?ZBjJ(wo+S(T8{AZ*fFAUoNcbdp12)Q8ZYhKJXd-Fku!)C z3a^AQI=h)I2PC+K&uLIL5g=j-0;RR8oB4-fznvD6(WkG9|2$+ad-xU8z-c#?8+N7- z@=bdf=|LflG7}iG&50o=-`?xY*8Cy!JHbi^`aczXrSgz{f8b$hFN1%#==b?>hFwU1 z@2^PH`0@H>6J?4voO=QB53hRKzz?74HafrC*=rMBYUqxV%WPXOvEul0$59ssV9Jng z9?lGK9Ep9t#Ajs*5RRX0iHh=yY~=Xw#yBBnzu^=>Y^uA7GJm? zHEr$RgmsP1GZZvm$w3*HBFuM2poop}(vN8~mkpY<4}fB;5hDNW=yrPl$MDnIo+CNMGFJ%TD@Ye+DMUgmQCOXRjm6#N%`H9b^}i;;9JafWJ7;R7 zyd(TV)~cnFm4^lN5Gl(-{cQvqb#N9v))>xdlR<`u{@amJp%xo6g%^KVo*KVd*iqZB zhGc4qJU=&Ac0E3Cho36cA!%T}5{Kjeso+oA1fjQH+cd7Xy^ifV3g_SgOsij7&%5`o;xok>A8UYZlqu2LPtYm>XL_rLXMkONh(I4JlN^-8J&cyyw~ z{p@$VGH3P|HT_%8c!kzTj)hs2Mdu>t$}!|@r{9(yoy%yR=KM|o3sTBop3)i99EF=n z1=-NNV;jzZP=I1E3t#Y5FScmBM9X--{1Qix7ylaOyiy$g3#v7Ebe6j+XlUEjUKYMO zO4PyU0AT;`W!(GWfNDLzmEm^p<1stRkZLkiwn#2YN|q8=&8RG1iM?!sDvHE^Qk>ov z`~4Ky@lBHCOI4~l);408NgH^^eYb**HHBSZ;Mq35yy@M3R(M04+!qrg)`2JX^JHn_ zt8iSBqd}3aDK7-HTIruMBkb#+9f|z5>rP;W?Eq2L@KKaD8Cp+qt6u*MXY}eM_|E+{ z1JGD@OPDjdwc2ruzd0EJoX^_4q5Hbd9V<>$4GY<+CvW@M)uv6XZI>)ROQh^w_sT!> zvYt&V7E`%OZBc{}Z#d?(e4=Vip~*8-&(J?IGw>AG0>Ho-RBS3`2@*3ao1o3e;~1k- zB0hT0!OB3R#V2b&TbF(c&iB|={+)#?75{U`jC&0CYqlvXOZ&6MOj*0Tzm->Qfwi6J zb{w&=rtJ?Hsrp%~x&l^_+4g(9?U9mLXb-hSm?Qi2jtF1X1TMU&Ci1969pPc!N+*H% zsUdoX2O@%yY6+euEsq@?!w=B1vAgnhd?n>6i_TpqV2-q6H0&=%y)0Qu|JFA5KIBEVsxTcxM9DO%Z)u8bSQ-v?Ee=>?a8)%U#}71%IupRs~oUGWT4Q_ne!2{hQU(*r+lNyq~ST175;Nyrm4p5nF6iu1E3t{OIG z4)m^;gn-|Ex(SvCD+km^t0`T2Nn@LTFKUwY;CVo3)C}_)I_V0Xg`{*DGuz#b^WApo({kC-9jhXe2g~s4!v@YG$kW*N zJ56|&`k1qa0Ji^+#`R(lcL0zW!m0e7f4*P(#gOeYW-It9DI;s|-}pm{opL4Q33aRx z{lUEVXLbfU$I^+1S3P&&n-*EKB>#D^{7jhNg%3S}q8s<35BWnEK!|IzUXe~Xui6y> zeOBxKKl<#b^^9E|3$O{Q*`Ub0hdeYNKv;~iUzD1;e7if*`$vgCE_&qA^ zcW`&{O=bl`2S?wxu`B>2XaL4wNdkfb?K$zs*VsNBraES#8^-hdzDsKHvIg^)li=e# zxESzs7j9R^oejx{50NA+o2Eq9>GXHu_?xMI|LVy)#RV&RC8k_8jTUpygKMTbr*=1Y zi=!s1a??&O*Ppg(eQ`815aDF`wI)QW{VhE5GWhT zW7-c$RyQuQ?`O#dPdaa7Ld$j9%j9Gh{-eJL z9pTJ7b}Wf=;I`DSru3**L2(EzzTRdCpjQ)JzBxXjRIZFKW9@4<04*ALh)oG#hIKLh z^!eq$vXhYC-XQ&JA`itRW@t&EA@RLW(MvA}3*4O1y>%k|(*I~-0@D@^MLu}7pGr{q zO9B_KHG;gi!U%Ip@iKs%F2d`dMgXgy^Tlq%y0Gue5wEO_!ixn{!Ll~Pp-R)B;6fkALP{Pp{*JO&Chuv z`78WRp#2|(%CA*?BZ{E83*TX#{!`E3O#y{xhUJZDM9#L|_BGxnd~N2(_oKNIja>bV z22kNrlpC>^gU6*}HlPasR$Mc?*Xd89&}=McJX)AIu1Uz4LnlkJ60*eF*KAPOiplTA zc_nHdzl5Sr8#v5K*xc%)CUAVEfYt&keaO#(v;|409PcmcxH2iGFFhM7o3QWqV) z`~R(+O38yFqsY69$KMLWDUu1QocDgfw*rhwG0j;x<=g476QrWODoG#;Af5!vp%*Gf zGgg>g@q>u>-w>eMIdIy?LmqF?yod4D^LV+(TB7g_SXoN%^Etc#qwpWym>XKZ4WUA& z+uA?#E`2;it3*tD`|$~MYvG2#1M11Gt{B9yHc25aPt z+pGX#{6y=iID1iKj8K;02M^lyi(a?I6vQs|YJV{%-<)}z#13Ej6BcaJceoI*?|V(0 zYKoA(2dFfh75R3(pZX7fk)k)>Z0D&HLMpq0D-qQ~Y`>Jz7bQ zT|@ETEXdBbVb0BRT!5HbM5E?=IBNlt6*Zih4wns-%jOh)$Lg||{coLUy+<_%mHY)L z?EPZGRf~*U*5mp6HKTjLj!SX4Ry+n5IVXrTWNSU*SqELA7=3-rV3OmO=R85KB&m4U zHL4#7+Dr;HDL7hC`{daO=y^ZBR2oNi^>EfmSPzBz=YN{K^G`K_EcmQRPZIIY9PB5K z2RoHC@uW_2%Ah9@paS#t3SrH+Y3y*-s8%cq%DkMjUJsd%QqnB#ky# zAXEDDcd~^{M{GHM0&**j(ax04>dL>3^3yO2U-bLVzEqxt zgaxuqTiVfAO$3DwYiI?nD10hY>qIwK>L1oC(}m+r|JJ{Rr`i<;cFc5lbE0&!Gg)#b*VIvxp&3Sl1 z#iW~(T5Ka{)n2(o%PwQ?Ms>sbw670!nIOZGys<-bj_ers8cY`}*f%V%VcNoH%H4WN z|266L{k88~rArr=4t3d}gJI|mHtF`J<$7^3%D+&LfdM&XNhnDGQ=k{op5#5}AR<{U zTs31)T0K>Hj`RA(00;&txriCR7)*7ov9M=+miLJ{R3**0R|V~agX&xnHaOOU{Ya*8$aAfRww z-wF`QoOd^-fCUkl)1#O|h3ayKQPk=+@nlZ75{W6#KT^bFcF{B@HmG;Zy%(T1(0O-V)!$t%qEX7#mxQ-zYE73;2XV+|7nz3s6QR?dyxPiD(~ zJyQp$84QtT!ey1OI(z@#O}r}=r^m>f zX*KJ>hr(GNs>K9rBSpZ8pCXZweZ2deI@`Z3nTniyQGv0UXc=><4B5sqm-k;GGc1e8 zVk@hFplV=s9pz+ueP5V}K|wYEAsRwiK%G4s8Geb%-aj~W7W%xw0ujD?n%v3KXQ8o2 zta>_0@Xb8SfG`wn2MI0ITpMobPIRR{4au8IvwojrFZ!K9>V4ufEeU@{Q+-X%=kt)( zeHyxQ(C@TwY5fTpS62gbKtg`ezX~e0L=yk4?q4Z~u^h3k{3-FBw|xwR?9|vj={Z== z{!^kSCcYaThA2IWu!n`7z~3efPJ(-fbiuT+6AjQ+uVYX`;hqyY*t4r3KHwd&*9aY{ zqz~)9%9PPs`s_e(99A8RC$UdpqEvLK`2FW0l};mRJl z5xyFWbF8rXk9nc{eVL{WHD*pjRP860oYiFo**LvqGz^2qDPy|}_V_zPBjJ#(Ai+^eS&+=+)|1@_C zF_QnkGuJALuK-cJ7m@zZu|{hff*G6B8MPrI>}yIF`<04z!?u&Jp% zCMad{A)O{;>XsX}anjGtdmU6D{%!Pg_Ut1&e-wE_ey6&?-p<^-x0{Rm*NK^d ztin|uHy6Vz1_1T=rDpD(zugD$#dIUNF2?`b4K3&0g3MTWtlIK-M&6@aET-KGtLDy~ z1F~Z{_GM2+;I|T9QvZpd+>swBt%%S;8zxy&W+AOnFkE9`28!v8 zx;-x+iwX5?8@RF`1(1Px+&lJ9<~429-yf5Yg}NU+F+B^0Ug1?o} zfJELw;Ms^|)p2Qz%Zjher@6Bv-XSLm#~cM*#>e~L8@xho@K$Zlqf@y>cV(LUkX~#f(@j+mgyhQPtLIPs zYqCrcCIhaA1WVaSNWa(a4b6x}ub#_w&qUccMi6|fdyVMh*IeUw8TEK~DEzSSaGLCQ zw_Fni3kFi2ks4-ot8b7dLRVe0LB3OEUBLyCVoi4xap6XZeNWw{@zYm)28mo=Kl z4y8jHze&7VpU4c*1uU6XyYwJ-QvZh9kwgN=6yz1>kPz;Eh!Rc!kgMAan515ojq#h(D`tj5Q((9X+X-9~@T{aY0E;yRqx;)VSu zJvEf-Tb()9xG-{EMo2A+ZZ!TpFm78FT5#R#TsJxNO5Kid|64md+;@t%(&JKELf+h) zC2_ooR_ZMbx{QK8!7}1LLkF;YxB10P^hnw<14lXQ#Zij=AemMT;Tdtfwl>1ix-ETL z0^xcCrV&h{RPU7b0gfA^RzQrNH2`msd*&Ol{(BYci~n<24+v9W^LC|^(RgH9Ec z0D{bBdZJ9L?X#@v)-U)I+M|QRRl&mb8!4OyI@^`>0=TRs4}jus^Gme7+p1?fZw3~5 z!Y_BbY`duZfwA5;+WK1VKR9^0X`&lPc&zvZTWzOk4c3SGa#O%6Kkd4b*yFPGgD93vwSssmY0v4gEk86jUKj*(~GOYf5EGEpdYN&44Y ziTuFXEUh4j?jc}MexC%e%IX3yy`yhyUk=*l1dt!HUaZV5_CBp@{=*kd@#}8;0XuRX zzlx}<2Yzb1mkR>wPq~}`KCgbGMyTx1tf-OiE)^&}DoU<#n%mQOXQ>fK-Yyn1i@h;r z6^sXr9gu|^`4!x_d+oYa1Z=xbAMm@^i^=^GdH!Mh^$ypw&b3pCe*S@#1ez5Hr>=@7 zEe-%Z+39TBAQ}SlyPE-o=}Z zzKRbVkOV;;jYu^VBVGLGl|?T)CG}4EcnZo&*$9{%cvx_pirw!jP_BW;a z&sVU|STrjN;sE_^ zuHi9!j{dYiu}+PUS|GlguLNeT2*m;Vh(39h)Ji3#xu9Lpd7gkf`-Y`qQGv)Y0bC_Gr*P2#w^C#3SHlM5(By_NXLH<=y z)tycYxhem25BCu)f5{^a5g>L23*2w#aeD#_jYMAu9Z!MsoaBFOpFU!qWz~?d@svX( ztW{mcHNF4ROXm{O__{Dza%x>(4x)(lZ2j-f+lhH7mmwT!4`N+V41(=`P_w57?e+p} zkSYX$O(!uG!}Y|AJMS{7(ApO`3U zH$pczeIJB+y+Ur^3okJXi)>_bAEbSmyz?hlJEh7Fx`VSCh+45VsORLBO7O50UQEoD zeEgLJ<062K8{EG4Vi6X>+~}2tVLoP*Z%9H}-MN-x-VMgAOK$a?P<1d1znlB-OMBY4 znlde4V**&z*K)zOitXb;8lOQbx1YW(+A{t(g$zo#p}h?`;tu?8HLYZDxu2cJIXt3W z%e;(yqt_(p?`^yGL68Y2>~Ni39$6|$a)CgA7}+OJgDDk*gGPsiwoRGx;f(`w&39Co zwoGtsw)huq8M&*FTtOxp@VD%a4ia^*1)|66aBog*?FZBm7^XW6^@9Z`RoD)j7VHht zHin#3k}HbxA8RWpw200S=2rwdvQ9!EuCZHuPXRZt$bXnb!) z+YhElcI`@Rj&cYkcbx1YBG{`V~Krs`rUcbv?a3_TeYBW&v_gy zSnp{ss`Z;P9>3;dkTV{IttQ*@ZUpqa zxV*;^f~OaMqc+8VF1WIwem1MEj_Uz?9v#RD3d82qLeb41*W#v%uH$c z*lV*TG!{mIhtB+NZnTZtggmMhjtZu!C8uMu=$a8UTL*Rt4v3eBW+UabB)yi{CMq^b zMi@;-WYwZ{dLAqsSC@k%L}WL%T(IoJ=j8}qY-jWzYUW4NB51K!iunSX`Ds$KB!=j1JNwwjMjb8k6v4*dVWFF?_q_w*;sOXDN zy%jke#9WJWoD@3&mNeZ0{f4J*)iU|+xf4q93!{(uQ)aCwYq%5C-<$(j@m z$#RaSU?4S?(%j3T8^e_zIFF|CJ_*x*38DJnRQKt9)rY<6lSC4DyziH@8j*4#qLIcO zw%o%cUr9BA(*Z#ZN$;0=He23UtOnA>a&wE~E@O&s>!IQEe+&&c`&OcE598Nf978Zo zvWYDQLdW@fP=*U!{NWdZg6U=F&& zZNBd&wppB{BF`b8$qkD2V>`oPb-Cg&_hcxn7QuanL7uZch|-G8S7xK+b>E!2(3n8h z&9ZB|*)vsJ0uD^V#90guQk{()XoYi6&m5cWc63ag(cCBnl@ou{!gL!gAD(qJ8jmbm zsZ6zJ6T7ssy@94Ou7_+`MSnykEfRfe67IVExcl)NhCVR&T=GHY`$N1m_A>?OURF*6 zj0^jP$w8lqtqrw^+nUmMPV5o|E2@~7x_Ob`l&;2_z=^a*aKLJ-Rb@phsXv4J@VXk_ z{ry>_1F?UDYoqY=rZ}~l=}C;439}mQ!K)$?4#okz#4_en2*_jvxWVxiTNsmEh+#u_ zVfdJi*-V~e#o>{n&@Foeoo5~OziPDioj$l)tbM>!eKE#qL=U6is)YI$iz>gn&KD~7rdbfD_+ z$R$WLWITI@E5PTrVZ82QD|#-z8V1JU&Wk{#sE!$g_Xa*ZA2H zLCpn~tFc8aR*TVGEH#yXcWo6pA^hBNUz5&YDBchkyqPo`Y_Xm=h%v674DwoIrbAon z`?_5gC$sXd!6aAqIu4EdzQJg9k?&ZXQl*CaQXI?{eF@~dJpBf7pB-d1^!7KOI3fU8K!tF53D=ZJv&;DK$odJ_dsKcUmF9xz}K39Hw*V7=ki%^>RisR!1 zW@)OG#N>;32T)osJ}zN?gW>f`Uu`9&f_YQ$yUKN0pn_>KzX262`<^h$0haI$eBgfO z&^|-E!~}veemsL|D;wyBO)70LGxRC*jE;VRBc(>l8*!v&($l$B-_ngkAk%GfkyvoS zz^kpPLA-Dl?h#7Hdr@^%Wwrb#%wL&d5n3>3pQ#x$(l##=@`g|nf=9?K(8UY_Yq@{Z zRyVG+@2HVY4Uk@IoY7F&_UXWBCWZ8_O&}Kyn;Hias%nhBzU7G9Opi4>g8xg z(U-BfUTmzj?a9SDL;62VpkFJFIJLWq-#ORwG?Fue zT6A7#tah#wi2AzjI78V=J>U}(K2y41_Nr^@=+^4dM`&Nm>G|uxsw{lyKUP*%^+>JS z{_?=$uYdw4Hd~LFm@cEa6H2NGe%sSzNnJgSH_YrClA5FLq(d^^akTh(ctf z+Ns~G9J4qT`?Pqqc7uVE*;ShC+a9SrZ;{MBs@Omz)1@mqI;cn~_^fsPr^>N!N5w?^ zM)vE&W(ZS;{z1rc+ZjPkdWhA!>L&;-VKI=deA@{Z$I#Xao2}SszPHOf8s(KA-fB`vrt0?zWhm=K11;Qqu$>+*yauZ#WVw0}t7Kvr=w1}h5 z{?sY%s_%ZzsEvQL=I3A#8C(~0DBibcPTuK>rKAe$uB8Fg#ebjP<3>4H@q;sJS1$y^ z@XTo|?APdCXjRC4yg5!fzb#FuB+S5rcvz|Q@pr{cj!PE@jl;($N9|TMeeBzHW*x3C z4kD8`EB$5Z-WpiNVDHu{LW=ufom}xjT)*L6NEZW`1S*>D;(O9GIhU(Xk>i@`!u>IPCdroXI&{0~oU#-m^lw%^ zs>ZSTZ2L*((R!QxvBSR;Ay2!}*bI^)?Jku_|F|FwsY>5maMb6xFr4sHjhobWuX_=Q z3KG51NKckVf!PE>zYc zzoW_W`D?UYn9rS>CF*N5-1+WLF(M;AB*3w8<%RpF+r+!tO#+P9Gk+R(#$(TAJs#>} z@Il3iIHajRRGcB%w$VknDaOB-g2u9`Ix9Y$x$f+voM<<5Xdbl=z=$C{!h`n0e+8@! zJThLCAo!g5I?!qv6}J()(*7!BDeNg$2`UhF890I>Bgb|9(4JYB)9_+7UGZ z8{ehXdKUX%!TTaVOmC_8#OCKiSY9vM5Qg--{4gDy(NrJn$N#0`dPsUVkXC#Z{ktmZ zTiSfXK0R&bH}0XMy!*6^WuGf}4*-28M zQk~c&TkimzY9^8Vqf5rzcy)6RPkKAcuSIiwOU_63qwtKJ0-^UvL-rEs_AU|zJMq6t zjxbvB0`fnSWM|#Gv=YQSPBjaR$BF=mraIfdf}M*JiAh@Fn;e3EWac%rzVTMPwOV;g zpX;^Y^24ZU<);Z}H%XC7^|mQiBLwB+cN^q&Z<7v2mdHNLigTyp z@9IvkV0+vzHt4BKHc+h_vByc8D1K0txsZplBWPbbeE-%m3Gx+8 zY7)?iU=9l}MAo)WO8z`yoAZ+O$`r=L)W@x8kCtD^jA{jZYwunF|MREowUfERjOn7z zq|1Qhn8~7!P{VXQAL_sm@epVAo4#p%B@}JkU3Kke=6Yya%-&*U68;-PFM*c_t7V@B z$x`wRm+6Y}L<4AcxRTzrUMh9JRw4atIM}MGF4@n^W0H)YTwXF{xB2GhZx=d?$q1@E zkJCHI+18h!H+N7ho&S%Ew+@T)i`qs32N^(NKuSVdKw2dQMjAm%RJv1YKpGiZIu!{) zDG8-PLSkr;?rxA~2x$iJ?D@Ulcb)T|KOFWvf4Hu_XRo#Hb+3CpE70Y*i{eJ*9rZ3v zPCV$TGerd6Qr`n7Ih-Xa5=97XcLlqoG`={wO`}DzyGul`c}RHFpsMk;PR%o}J;>Ab zORhM*Ajc9<0qYuDTKO@ulr5DUd`EY?K9y!OSV($)e&I`-_>qy1Kw32B-vLxvTn)@f zrhhiTL=qVDe9HIb%tRje?GnCVmXR%yZApds(Jk-ETq48#CRc_lu4z80*Jbf@oz*L^ zMB6j$@;44PmKT4yZ);R0(iPG0?6quMVTg%t2sygj@(0D{8vgRP0%o0<5Yey({`U=I zFjm`!EtTsBLo_TVd&(NJqsz`*Fe%)SQbrtE$PRi%K(1+?(pda?Aam6%O_MMNuWAH? z?;?gXDC`#rh^ZnyFPM~seQD?>IMfn~OkypN%W`l1^7o_ppEutVDGm!fI&=KfBRwCz zB8#LETdqV11Yc+*>nXt4ZIGp&=ODHnGw(YxhBDyooj6Z2@9#$RkW%evNYqWZPnv4& zk4K}dk1pQda(k@+b762#c5zG`Ba!WF4oOG{Np-**ahT?s97tA}Uo zWj)=TA|;SM&3Rg#7#a^VI_6FKWYaB+GxsTDH52;`r?wz-wOGABm_361ut7G7OT&>- zG3ons^WittSDfO>_7K6P2-RO(yDS+NPhr3O`*YEeP!&T8{R<`V4)p2ouyPY%@Sw70Fxk7 zs*25i4*Aevtn2qq=$2;QG$ljo4NDOisIL6 z?WnecX?5!2N%ClJykEr-UNRJO4NIIIV<-pSuM_8lu&2e`sM*p722O2q!CX~Tf-}zu zD14r{`ACi}MT*r~=^_QKClVZTpTs-f6YZOFvolnrFt1hfSXLR496A4!#ZQv8t&(YX z+^)n{axpxi{1^q@s3jkzo;he>K4ZxMcKGpXPn^MWJA%NNqE0wBfZyHI!Kb-ei(p!d z0mURfH~g=nYb#Q$KDXlwKc^u^!^KmzD4lYwtT;c0|LU7L(Z!ifRM7s#i_urnf*+c< zhj)dD6ar@NXV6hDR>o%2tihb1(;w&!P31wb3rnOuCNjTq2kK8 zio9W(gnlZ~|6#q-Cy8=h)vd;|zgqWob?>>bWoo=AuDx4N8bWIYiHENma1w(QJG-1t4DLzX`=eJL0m+#VeKUjb%a z@extUN1^FFNz!+lKNq?NuB^J_vghnmsFiA29248`uyGHw>V__}aknyI{}{XSGYt3H z#f$yR{I&LE0ld;;%RA0_9y!|71baH`TGNlmX5dQ3EoXQ(wzG zf-k(OLN#V~dk1QmSKHMOFWY|mn-}{Truz1a6f@}>3U=34rP7MrAQ^UJ>M!rTv?;2F zZzFu(thFckY%+XmrE+zC)8s7qyVlvK6kl*!N-c!9O3s`(GVb5(olzlEz6X2$ zBOh5Og^YPA6647g(+K~1B>h}|)-?5w_aOBTtK0bI*7Fy^M8g^a-qts&lDA6R>Afoo ztCD3A-Q(YxczX0CKB$V=Uheb^4xI1#VbcGdd5jW|Te7Ludhu)Zkf#1HB$YwX|I0S| zInulsXyf1~k7H2AexgZmlN#3>b5<}4Ga$>r9x(VOsx0q6PYE~IG~9zBXFsMvjVUgq z7ToZHy_-)f<`6XIKU!&AF8a!8&D9#Y-fi+noTb8NMP1c+|6X#+h$| z0O_hSb!CWO+MayHNt%6DVa~tBgxg4kJK-&@ROKPI6oEIf74fu*Tl$?QHt4{d7(==7 za8I2_Bf&%8j%f!i{wg+(7RuC`wAtUOd)AnqAnsfc$`uzuDDSXG&OOKMpLme!Yt){6 zTZ7hD^3^HE`~Ir>7%I3i^8U!#+h?ZtnCV96L8cKb0nH#Qnmt%4&ML64tYHoCaa2JHxn#uXj+u>?WeBoM&pJT00&$c)bSfwWrCb1Q1%sq5V01vkWQYkOE>VC6So@o&a zX26kRmz408+e;74AJ~<)kAI!nxiM@LX+`%xR<8SimHtMq8T%9I+Pj9mxT4j?smR9- zlrLUJmYqjFFIoK3K`jer(IaloD; zaKQG!vVOS-or}2NLu*i0nMdbg*4rmiaW&UMsl`zIUoNI}=~tavGaXHKNS;q~0a0g9 zGODK2-Y`+FTsKk9o6WmAC=JBAji=!p;~`(|d>5Wvw7&?ydbI{3j;IH_QV#TX1Ig_M z!h>q&YreLH(6dm<7?1MP&I-35Sw7P)#a7?u9KS_ztzAr1Zr<%P*S&mN9`jQ-F((iik+B~n%S#3{{S8vhqK13eiH za0W7Lv;j+xc78P7WetZbu5bSFoK;kVFJmidq{PQB+xx9)junNz$s-QkVoW}TXmt^u|fp&ds0r_{cj_lta?PIcrzWx(|a#i>Tp z`<8ZQ%Rq|JEBUaQgXCNJF-qhTnn}$VG5E3MTd5L)7?SvNMi&N>6fJ;im|eP6r#hGu zibzsq9c>Ln%pIxu1~PQ^3fN3x7e_h*BoBA>1s%~c;AMLv_q4M%W$-%;32o!dX8Ya< zD4EPkkpw|H&?}rYC!RFlXijgOuqCOz95sor{d6%d$r;4qJ#f|YS!`%2Tx{7&S5n$8 z-Exhry~4okn~_#x9s_XFOf5Nj*`YqtM`OaqXX`VR#0`LF^j3veJvX` zCGM73?v~tFF7bg~cim_I`{oJbw{6i>i%0$UC1Wc{1JU{c4#zi^exr0Ly*2Tx#z=AP zwF57jMIdlUDSBmJ7H39^1U|W<$+i`ILC=4SI}i^}F^uZ0;}g&E7Z#Vf*V*qTY6flv zK=bh+1$N#0w!Na0SSbfW*1eT#_cuuS4S3;p$eW|h1BZp`pqF%=p#k`sz@wOtxrY^vxecwSCo@-8Iw{m9A)xl zGYjOm$T$I#fCZRgM8VR%y{ukEc>ihjca2Ii(@0ghl);!g3;idL@XVjP(U|v_>Ap7a z6$58@tne*0W+ctLdK|niVAHBWvrY&-Zsw%Q$QbPmvsfUqC=d)Ql6st;{er^J(QiON z0SD~J92{a4PC1gk1Ih#r5iGf5CI(Wi%kc|d1@Q`_qj29xahzFgdHxp@<3O|u)TtOJ zwyht~x&p~&(oC&+vhY-mb5dBm%r*X!F10hwpBxxKC7fp5f+95Yp)Vfv_@xZL!~~k71JXW-YT=m-ttv zDc1}oZP`+u8$0fA{@$wEL|6Y|M7c7UXnE6{!0FkhM5WFGo_<5=SCU6Fw%DST<8b9| zpuSMHna-uqr(lC%S+`7_8+}TkR4ONJ#|m=HhLvaGLeKsoOC3$G+nJdf2vRcAwDpTu8xXy>ljD;rPh*Gg6N~3W{hbI5-|5Ey|#C}-qkPj&EKo{sh3cD(CWu}-j!RK2nDaLu}ozHNrI z-C~TdjU7Y3NUg$7TL-B(B-E29LKGO{&7a(E=EFr`M0d#d-P;k!yDZAT6Pbx_X;KfN z+>U;n33p#MVe7vx;hwEfv8i19xnX~ck?)^_(C(HG&m6rg=)_<7tXl})OTVnRY`k9o zcis5!u<>A_R>8+hRH@3@hm%px;5a(|lg%aUw>x`2V}yMHBiRCxv3OgX-|pOp#kp`xgr|*isDF36x@Hc^$JWPfH%)fSQvRZxPg-EI7Ln=B@j6 zt8XqR*8MKm0t9+bo{1o}B@>4DrwcxB?f208f^?A5is*LtP2u0jbsZ_9tvFaqL1on; zYZJ+8UFRB7;8IeB;!2H-5xxb+VclC8HtwM__CZijH&R@UKP2A(iPe|z2;85fr;Xe( z?WW>(0(MUFbINlrce*RM9WT_nevxSRf|lx5grNR}kw%pZeh%^9Y}XZ{?%nN5!O7&U z4TJb%#BFoQ+GVC2ew;Upi!S3$efpZ){Yo4ao_mst(y31aRKb=GPz+)r_FP8?%1uk!K{>aHc^NUtOLy{=Pl z_)BVRm3tzuwvhNL`(!0BDl|xkzB3f}HD)aBb(90PAc5Z2IMN{V@dfZ4%$YQ*I zJCgn$p-%mB(qYySzumqP*6QO=jKny|-1jq;;rl`roFvo=2D1dwo!qnf~$y?YDmU`^i1h7cRi>Dbdtxv6c=t zPVWm1eza-T#U$BfwFiM8ZdB&)I6&|Dzp&-eXKZM;uf2xu4*Y(LIc$4_)XPpEpaq zO7>!>)q+?V5e}yl-EOA9@^jD0l7S(x)b{x$@`$A3rj|WAMWn6JxO@Kw>wwd`xP&0b z3Qqw?hy6;prtsI~kIonND}*c)SM4A2DV}%eGhc)rR}?$vTpDnZd^qT2S<&NC5bzo~ zje3Ob--t$uY?dbrshN+tj`3rg%SDvuAl`{=)s04V8AU1gE zL!KHD+D792v5my}eX2fQZMwtgJmK-ab+SeHCIX^tMm;r`wpg zZadUzW<1^&PGa0k2(D(N81uUQ3bFD;Kzmx8)^?JV9T|#dgdZ7;n?Q^b5--h&jYZ}M z1z$P`RU?HZZc?%O*B_&wE=J$7SpOgoG+<1eh`w!&N>{pGZvGMM8C9Ic&#S2_~mlfC7o@OdMiYa+)7 zO+y%}D1OOU%LX2?-+6n67QR1h!k|S_^BNApGfMyF)`A5|pfcE(#TE(JhX*<8xxvh~ zS037nVXAKsrS%i*6{1c&Q1SZYt^H2=kcz@*5k7vH7V7{J`%rMoG+(iA6_%vG;jtNT|;^5$wwJc%xA2npx%Px z5uZAP<^EOog-|P_+YiG4xUi*eZ}-G8x7V)haU=IpX0AAopyC2g0ehHQb=^N|k>V#s znkyaTE=P04&r6L)@R1^hgCgmMJa-9(PFFhYqS=$3i7txUq`c**A7p^?k^0A=2d2s- z+#iL7XB${}=8rnPBi>WI_AG#%=pDb+J2jhZ_F&fmHytyzTHV(wu-mUy;&^7pUSQ1( z12a?&AAH9|O!o8aIJT;vo~}p_0+KGCiFU?#KZr%sM=w$iOAg9|(^P~EqOpAL9G2Q0 zG(5I#Lpi4os6mGd-XB-4akeX-dtsHCOR4rE+xX&haPmrpgu&hG^ml=xERT=G z+3NpS3H0hWa?R_@56<+Hw9ad#ox>kdr-q?cU95f(h|A*&j6evbOR^^1S}M?bJqZRly?^Xt5Gj=DY%(t}sxB z2o*2JSgePYxvfKMUACYfMmU!@nR+`8nqd$@{=bXg$yMJ&1+Z1nD4x?@`7_8%Cu=1uaCmm6lLilQ|ffcF;k)7gLn2Gw3Jz;MX$pE%#^;pL?`q9Khz1nVt2+= zx7-iY58)JO%QYFeAq1KGt@gID@Ox|YuJ|p%&`F*G<_>!;W`!x5K+dw)&<|sUo=x;m2OyLfLV>E%kmtG|@zsmX!!!^|oq|GWVc^&3oij)!g)vehVktWRfDhdQL>542{ zNKP*?{qj}*L)&sDv=t{Fziq3j2&1Afhs6J`L_itt&%kzIzbj)~NdgSC>Fw$)l^QI= z@SfOrw;K92-0v9mVRd^B7*z28TIpUrb=Cd)P_s%mU%7Tu5OAntpEQV7WL)9%=3Qi2&dACwG!^ zq!`-9M5UsB5N5eM21?7djIrCqm%7r(vn<&zz<4wXFYl13j1v4N6}s0jJrKf;S5|x$ zv}@dz zYr3q7w$q&BX;bLMz78u%%T^wwfcchC*4{$`ST%Iv*S`H*w!q_DITT1SUC7^3dFrMlyt>ONa&e*A1e{So4C&xLU^nESr%-n^!1 zHHxiPJ0BX{S9O;u~ru1JZYwJ}vvdC}YD<-b^IU z%%xN{zwygW#}uJ^m#Htb$MNk%ex(Lme!tJt!>X5PSu^x!H{RD0J&UT;O4=+lM4J|>vjrDX6nzE3n?%rDPAeD(9YD9A@$%7i}4{Z`jyOKvuX z)aakmd!{48m+4Yh#pwTUi(`UX*R|nF_}|E$s&Vv$8h@0G+G(fBskculVRqZ~j=TC} z;e*n5>Kdt#Nd|HaWr-aUXV12Kq_Lip4V@)OcvGxq0M{1FD47o(=Hm?G!o*^7ZY!DA z=$wTcWXQ%1BE;9TU*onC#f6q@+|ze&>=?bzOq!+6 z%yxuKHV{u&m)qY(7U0y$$_fNKK;>IocVVH-5~&PN$nv zi@UFAc!n5=R6Lchz&$2UTF8r!eCp`a^1Z`<#0BtS>L0(lk;;c5s8Zki_|5xpz|ZgKe$>d7AQW})Un>*Z>gpgHB*vWqm(wIH1d_}%wITLhP@~B-ZG6I;Ll;C&8KG{9TO7Sbu8>utAn>Z$_IG*;JS$@|7;e~EH)z<{Q0eunn*ECMcJ{zy9s&B5sH96 zWHy1n1ZFO|5@pVI>1qtsHk1yo+QT8zrl5SStI8HDG!6Uv_*hdhWtYar#N^8*D1dR_k;m^jP`h!CM)^m!X$7{ z$i3x!ayQE>4pLtz(Pb%DksS_v-*7ab?PVxqZcSa+Rw&o*n*EpOJ+)qJDn$j13c3sL zN8t^tt)!#%y}1tFe_P+eJXSp6aXNI~_mqBfAFF-JzY$Ju@eRFF@KJS z(>YvgHzFgfm-7tkHxs5`(IWDq?yp^F_iMMQZi=_u*R5h%?}!!@H6+6CF}w94TJSSp zhfQ_v)tb+Gg}RHade46puV9$-X;%*aIH}&9XhFP{Vn~2TCNmAI0I2H)FNe`E(5hPm ztvc87CAo2v$Rf$ftiG6wgPdFNhiHN;(AEKU6X0mxN|!t1^JeUpEM26+4SMjai;EY> zSDSfqwhQi`j~wIAqj$`HiH7}5l9?Vx2JT;CP6iM7K$C@58}iMNaEoXGW?)L^eP`L} zy>TPMvXlJNY0Abqevfjp(XW5x&dlt{5Ncb8eDIQKPdL7AuN&wk0Z!DqcS_ird*(jq zB=uK;PQatHahrw=l}4iS#fr#&(ce``W;0v2tg^1=DD#vb_m}=Y8<3R#qN!7ZOmzxz zfc8V}XF7-C%R5`|1~}|#S2>O>Ol)1%+q1UZ)sNJ^QNtYFVS~=Hz%qIyHGt8BK@y)a zCOCY38t)h-U1Zm_sD((sE;80j*XX%0ixRA2On=HtKqwMJ%J7|xLF)IDL$yyfQKrrh zqsX8hHqeezLIDM`-MVW9{g=^rgB~gvZj6vO4C%N5B7vO>sjUp4Rj?K1#^cy1lV)phP{7Z&RnsUsG)2`R$o5y@7dD0s$(qkJcc93gt{y(1tEYp9<*-+&< z)Etwhy~YmvKya%ZCvCt%tbi*lRZ)xn&%BB=La05Af$?IjiK5+qj3VHjcHn1FPH91Q0Zf)( zoR^BxGmQ=9syf?zzU;d3age##b-#iK!LA=vT?O zKGtHX43nH_e2aREP}bh%eecqV z_-3Y%y^zj#UP%(fytUn2IP30J&T+SfVB+sFKKnv~=SKi z*E#{V0J|jj2mA>?ZWvai=6~iZqwd+M$!HHmYWc*!L_~eA^u7|m^;74t7aTK<6eF?L zb!cw;1^=G2gL1oCxSSHdnP+bvc~F5#by_0&Fp~n1l?vvUG#N8R`c1mLARf@v)qQ}q7(_4N2^e4&N11)D~ z^c%8vG}0*f+kVMsHm3t+jgO#>@S&;wR2{WlH{Z8*!1oBf0cBFF{r{;9KQp2?-; ziQWj`1fN+%S549 z)*7dOoidnd8gEQrpz=5cToHe+3JcebCZrvGm1pT&2G!$EE51G$ih98lbM2z8vFC|H zx(9LGT@g@QT$741(q3G{d@{BCyy-qRMN2k5*_N6bGP!GwIh1LP-18VQjTU3J)-94& zsdf{UA#SzA$Xq*Vy;>t~oypns4CZfW1Uy_riMaegq?F`IJqh_=EtWqp1@qsv`^t|y zpuvDup$U(}KqQ8Uf@eE5;ehFM9*w;U-o;>!1k7S-?KP*b<|L~MystSbil>V{Rd~3=(wLSry?0aux(3rot^NB;qqXJm7wgL%hUy$t$6eu(Xuv{ zMKZ;k(-9|W>H_3QW^^(K&`DrV0#A5B-A0U?v6oh&yfXB*6s9}Ioxf7O{ZudawI<4I zSH(h4Rj|8Z;%vfuy49@k_0Pc^7Tt97A?t0c_X)n}#!IL6uRmJbgvS53ZSnVIu&ZowVr0eOY69J0JpK ztN#{DGHS%`7dgNiY2H3}^R(z6)O{TbTN`KY*qy-f6B_3F{(lr2$z;`peBXQO;6fL(V??kb{|i7o)TXL!K-qN6K-|o;J|0P#PfB4fhACU9fCeRu^Fi zQ6!9+)O&>d4!Aglz^llA{ayKi&uIVI}siU0Fd`Pb0 zFYIA$c}X|ZNIw7yo=4iXveBP9k&|yWE%qTxo%iW)gr?3rz4)XwIQ5sOLEg3+JIt_2fSd zKxaJ~2gpb}piMxe0OC=thW_RKfkY`Q!d0^#@l)DEuU882-=$_)6`fQ+Rz=szHB(5( zF-K$8-#PQWdhebjC+e}Th+1t*T90=jHNpAWud^EOz_^uH!Y}jXM&1+o08hNr-kJJq zF}$f0946@DzkpBxidF6ltYbp`Xu3=a_OI{8Qc{t8ul*=qOSLYQCzIRbmm{XhVwBdp zw`Gg$aPL|gp2$VhHNqZE;I(Mq@A*3YsYf8q)sRl*@5ARgi&uyNf)vph(kpJfPgh<- zwo1*WMa%)=phes+0%?TYH#!($nAZ}zw!5;V$=6FHA(yb2Q7|M-^FeI=wGn2YYUdt* zrh4ngFO580Jc=;uC!#WlbpRWfAPae`PFZ! zSI=s$bgW5O4qcdCiXO>vU`DCWa&gKo?lT=KYb=1HrJI4>Gsd?7dsTW0BA$2!Lu_Ww zEuKM4H;YeMc;3uh7XJIaye85=BpsWhBpt~vZxhF8enRw#iG+&v^)$D0vw)O9^K956 z#H`LWCG+=0?vvB~sdmjSX$@aKjpBYL&vzsDbPgQcLRJU-zHWUSy^CTNZ50N3A&vjh z3yrb*|Bc{BYOzdWE9w2VTB;%kE36rf}@BKGraon0*l*;&G#j1mEvx9WB z_9B3+`Xa#X_=Zr)Ul z7Eerw7M=*{?Pe}vTs6X3aA_&tNu-h2fMyP{!jp#vB?Yf<^G*HKPY(>_(DUJU%lI#C zbAq%jT~xpu=DMxlm+$syI63HTx72CUis?5{x!by2J9$~(>FK(Y6qHQgi8(l*9z66f zYxKWp|4x4F^_noS3p+Hham@EKWIp(82Ifb-yeE6vdarZ*q#WJfnR2$dp2K5>GryY` z^$4r1L9g%0YKrwNg9ehZe7VaZxh;s+mrvseu2YG4yO=oX55 zsD@?nud;?Vo5AiK4ZaK^ulO*#8y>}IRC-@-Jo|WKb zIC53!wAOex&^?_eUg5M$B=`Xt4A>&YjmNg6VcPJvTloO8RE(iWJ=r-!vpCcLD-IplfE5 zn9lRa)S<9(^y}Z3Hv!UhW8m?TO)W@zRB5MqAwvz&Mp3)TOe#o!gGnaCm(d@A&$xteE>!DVF;Z z$k;(Knad=8K6!m&8nHZL8-Y{HEv-lah7VZ$L4D4(b08p(ZLw(Ccb7VaqQtWF zy-CC`68&C5P{CnkcxLWet6RS0k|naaCz2(CohbpOQ+-Jn4J?ZaJ84@XE`{LmK5Y zQzDD$#nrK8)gz$Lpd78OHA_fBovk9SogRH-$}Jo)SDdQ<5#B!+^^?mmT`Hbl)fr}E zOk`8Q1r0heh9zeW7Jp^|@(>LzU@!vPz{v#$DX_|r=Kw@au=UVR6aqYc@2k}D99c%x zR}BRquM8I(1bQz)g6RaLuRRBWI;?CwPuOLV)7 zaw15Ht`l=_bb8RG&yQR|GyLN0JH+e$_DYEwn0l&XQhJBjDE{{cb(QjVf{_naF4v%O4oL%Z)oBBkKAcd-K?cavv}{tmb%=$X-1Kl z@Jl$)o_CxR&wSj=p*~==PlkwtGH583I+n zj+JhaVCYG@lC%PCrLGJ|K?gpl0NSpU50OS6LNLTQ423q$8lWPrVRs6 z3h~e+w=>Nk)995_g^W3=m|Ocx)aZV-Rfi3x|{%Ji<)c2pC!PjxEjS33i8 zg*Xtc_YkVH9Tub~g353iAtT6JC=lFOi5AR9vd@oRTPCOU_ZXBA!~=JaSPu%D@9Mu3sd)Dr3_RgyQ?mSz zIC%L#ad17?%yVkCIT~}ddj0K(hNYY3!r@2TvUF*gBJzxk#2wPhNYysFmNV6=kpN!u z13qa7)8$eDlQ`M@$Xd)t>GOi@dlN89XqeX#qDP&|fO*->zi0GAp7k7N#v;mNwGZBIL1;{IW1Hz$Vs z%xD|Xj`iQY4*lKx>w(OgA)#@i$NO4VU?3|@eA_dXU-ka2zeR801e}ydOERZAF<(W) z>PrZ{WN9Qb=~T`Qq>fN_TsgDkZs0qHG3TYys z+5A5VKIMB<=A%mY@1m4OXG9>zlORiAc`%SAu=&CBP0e^jelvCI{lg!NM5v_cfX`b_ z?P)-_Ud-fFSWII{aJV*_DmCjwY}+uv*-`@vwdB${@#2<^r$b%rTC*fTvA)OnwCJ`Z z{L$vEYk*ij=_fGd?jLA>$A%Zu44?m{wb3qX^X)S{|GB*n@x?IlkjMDS&)6C17NA)? z%bGfh9hn9Vy6(~}a*WJRAn!p6hJZvXUo&&JiMk35k&+k(vjg=m_7g+M8+(Pj-I)$* zQ=hU*f~vXDX|z#y21tmMEQe9U%RlpFgKZhC3oj~kh0RO*GT*@ltZCmua;D0 zFtoFOM7kKsU0jsNH2ec`vqa9EFf#I=#48zY=2AJ_x0P~>(;{VD0v}(aek*_bMWWtY24sEVg8JHPnpIwxa+dL#C^PG=P{^Svu|20=^MY*qJhbnFn4X+XCJeaYyVJO9oc3h-(XwS`urP+UR$8 z{6x;xQEN4j4~NLnu~c93zJr;g03fObc`Dbwf{SAFVkg`ZEphO@y5!#bK)1V=hf~K( z+z;9jxab+_3?R2=534x&%6XHrJ#)tRp}2bD9Z;TSFwn}Zciqo8qyP#@^JIruu(?4% z{u}unE=AM=Vw@)RY*B&I=ZR(Y&*OLRb_-6VZbb=pPV*E9uIZ$f_dO>ajs~l`Nd3Zwj@x}lxO)ZRz!m5Rrh~G*0 zkmb9#t9xb})rn4;^#}r(;qj;Nqa;(b-*Gtw&^J)F`C1~ZK-LE(F6=MAr!mk-)DvdjyK!M9ZR)*vW5DJrd+4)nBG_zSDzY$~WK{Yg^=)p_z5qCW|l zWHA9h9-wba<(sA{;gTlQ|4_CkLNIfc}y70h?(*WI6^8$++s?`K(fT3dS#*thtU&#!!_brW7y z##hqW^|`a98Yx|z{>_(gCWPqx2D+u+VHdeh~;OV?b?F-o9CZ)6ta+fSw+4~-QG5*w7xo1jtlao5P8Y~ zo6wL&0y-S{Y|p8Bk~^v3c=5+&mq2#Vh?eu8-e%_0DSkjlUmr#w?N+MrB|txi$U#6+ z(URt^I+&^@0Zkc~-ezIN?W(J9sZu})FY74oHdmP*TdZ|srYPPJ^DLH5&QSP+!|18( zZcgT&`O~XuB>t9uK6x8G>hf6X@sSl}u)Q{p_x|mydVSfGzaM=W^)Rq*I4X_m()mtX z!`H*r(K_99BRr4VcY1Ys4_lJAjT3Vl;dkE8@O0x7Rjj>=l?c)xn^ zz6a7gUc>X+Qt~*PkB&@ai@*++vZMd2VOl$*OhKpF5chAO@MDM_qz&D(6bZEWV$aE7 zr#*z)LI;%|QD)k(CME>EGK zbOrw$qi^w^?GKUDZJw|XIY3uFCUgZ*+VGHVxZ~%ulh2*tB2Hgj8}A?5&CyRT&(r)| zcMpo^Zy|Ryj`7jtsH*$=N2xLDK`PF9mO!<}uDiNr27qEQVyjlVbAoxZ^hGXNN+P?- z=DXwG+r&tRq;bX_k?|7bn^DHX&VUX})(wTLIDxRft%+Uk!5UWoT_Oz+wn6lbMUrVjEAr1g=INY)rE7%mCDNgA!WJAIb>u zyCqAdy9Dzv#^zjzt6`-ds|22Hml2F4JFcTXougrHnd=n*z>UCi8zg zBC(#l*nr~?qI-t?YA4|4bkhwPk>OD5S=KT|rF8n+*85ip__Hp+-pBv!4XY0261Nwo zV50q2v>vfKMxeSb9K_Fx_o4{Q_rKUldefMX9&YDHf5W`^RwtR?xXT>nw>-VtMAPn; z8W8^wZ}Vi;li|Nn#?9ilz3|})&9U*3va7j3NicW2TB<1Ib~AIN*&{q@UFwj2ms3?r zn$Trm^3%Dd3&UFS4bTRnKeU{sC>pWRrHX4Vx4IpOen=S1Z(t+R^EWFomf?vOo#|-oN-Q(iKebnXtlu|Rl zeDfH88v9|Bnk|$+9O3-o;n$mC{kGOX^oqNWi*kxkzJq? z5!o?9x#F_|)}X6Jx3-g-ts0TxgjVmH@~|^pm>AAUIjth0)RH+^ z5DrP5f3He<1m(JPm%bP?SYAx`xZ>VnyTS#M z_oC=LaKj_LBGd;|R^l4$HdthN4myLz!Ig8bVt&0qujAXj469d{8Heu7B(d7fZZGh8 zdd&FRDABPSonE~C@wmR)79KF5GPx1szU_<5Xl1~TDb`}g6sLa$wFueuZhF)morJD% z8&5aa1icP8^)mZS3;)@Rsg3u|_We!U=D^=4>7*!a=cbskK$)T2DgyBcwwy=Nk3)~J z79kf6Mk#7c&xsy}G(u?t5!pQZU$+I?==~}RLuj(y{xZqaU8>eTqjtHR)0=Q@_N>oI zMfhyiN`!wN==oSocK{-@EX-vGOoYPTH;%y)AN;Gona}J4RA)^KC?G{Vn@MVg;rf+m zhrD|Ca9zSqpuIuT%NbvLzkwp;zk>AwJItWCK!G-pUiy50Z6lSx$nO;T#_ZMt*M*fK z$NRXi1k`jxr6*UP?f6ih zsv$4GnKGxVD!3GXq4#72D9^Byh`ZPs!Km@Mr<@mq9%biWNQ<@l#0)yAAi0<{@yWpB zlP7ZJ86T6vD|tFI+ZA?^sF_4jgh;$gX|M4eJ&_uDqOG`rd&5G;1;S`xSta`dHv<8!0xPYa`P8)y08GyI8e+>d-&7 z_|dns>91o{zz7xHuM;6>2WSxQk=7igjXhZnNO8R66TrrMNt}oB03g#}ap*Hv)g-Na zWU1Yh1|()JtU9i8P8BKE<59P{-%jrUc=qIMhX~=+fH+5mnbBJJ3^ zch6YA1iTpWmBcZw*pBA3TI2NG?)T@H$=gny^llY}yUE#(5$@PeA`xBlDED0x!}$4p zMt<~qSW*Q%xE4XDDYEtNobQJl`nuMb_JSnys9=tA(%RwbCuG{;4f1@u(igFzYO~?M z=||oDe?mzQ;TKZ%Gx4ocKXmxj-)u^F!^_$2PSa_J#81U8SH$r9hUcnFwGCoj7k?8i zM*3I`M+kd9s3}PulkI4uero-@a~ypv+gJnt{B^j?f%S&sl?jbZ(pBFzx6k#}z*F;N zFc|xE_?Znfgzy#!%K`xbn71_d1@<4n&8r+1^d2Y!R}d=n*eYmDQha#1NrnXt;bQ-+ zbU#45E@C29PqZ&Qq^eL^SvGylvo*chYN_X7$0Mc=@|N``7GL-@+LK=c}U!>5hZA71+GC zpOgUy^cn+G)!P2KgrJ`ZhOB`D;2oW;D%}AO&##?69D8o4%msld>(Ly8bob6K@0bCV z_C3B|l0Az)#jWhv{8MXz%|Ex`N+NtI*-jCtqg?_6nF`1#d$!Mf&t#f9pL?$GhkgBc zCkA9x*x&I}<{%X!lL8ey!V(;}a0HZ(kPVzEdq6PeZ4F!8{&Dxw;WO~wqb(MTVv67) z(ued|a6})79b}btig4F8Cu!!IbIOBz?fr;C&QW$ z@0-RbS&izCOI%wh<%@-$=`2U#Dm-1xWUgts`TsEW)=^b;QTH$)NGJ^g(j_e^NOveG zB_&F(~n#BcMw@B5AK58>X!7_PC;*)i8#bIr4Y8^;80C*1X> zbwF_>EYQkQzDXEJL&C;{A#r&hT zH}QDOq=2}8_AX)Mh|0?LQ{;J`C1Lr;y+F*KAVMqNRU%wtEg1wxE!eq)?)R( zdB6yh{T)^yM4aW9y0JXuGL*+=-&ogrDa_A^!}jG;j`JM<=JKTc*9F7AWss7!$N*mI zl4m_p@HSi4qXqe+pTiKTy}f2yTVN!z0VP2TF2OWB8(g0{qK6b&m(K?ucs4EAz1Pba zDY}FraL5J=3G1kF#pp)h@+P$T*4Acf1#B`+SuvKl%QA<`UjW&F2J9o$t@n$K&IxNh z_elf9T1>;ZjxBaK>?v>qmK`e!zD~^V`WcR{8g?V~xlr6$P`;IXh+>nNa^7e6)(xX* zH4XFbW)KPo21~3!0{xRovcGH-`~tc-oYFH&N2jU9+;%IbddBrEz`dp zgm#Po8tF%L(akj{{MNTY;iB_n{t|Cor9R;)Z{3aW1*vXXb@muI^fG$)bSd~W{d8;f za=F}F_(9H9v2ZkSE%O=2d_i(1>|YKzyUx59rG2W4 zUytDG$BUC?{_Iwi4z)ONqu?8DDSN-r*tdwuI6#)Nskj`s;xt9AR>l~ylQ88urro&2 z#cw5fT%XmKiSFRM^s_nPt__{iyx9Q-)bb9RQ9zw9X%!JjWLCL92Q81HJnuWIZ~xd?u#y|9i}oA;_5BJd?=c@FYx*9R?DCfYgn zAC)52QkJ2e`c(L*T&X7Q@6c$W$8C|$32szC~7{acEz4n-&f4{RV`^lLXAG*unaVd z%UB=p&yIGjHU8BsDnRp+(FLJN{R`(~Z^E-L`EmEVNfq&zm^B+!-FN4@vbHw)m3SL> zA}u)XPc%51QirwibT1?ur==*;o*t`Eev2`>OJJR%wvnd&475$`m^hI`Gje_li6^!4 z_{;5XgD#I;LW`V>PjljEi4r;*9#OT>GXz(_lJcE1JA` zvd0C_bFXz{_V=XOksh~LJWBS4-B|uxU&b@8)KdI#%RSDRDVfd`s1JZPN4I`eoASh`leDD#Gm zy%P?m7)76NqScstOInZe>L;vmozUw{L9~lFGuwyO?%~ANQl&b^$FWr z6r>k^fh%U-4L}me1w_yNt1r>pM7bAM$Zx)T+90nz56&iG_{;(#P5@rP6jFdDDRT;> z<(T?aHt@t6*qyY=0@$l2hwSp}JUb+Y`bZ5&0><}#%zQ&A+-%rz4G{j5a^rnCFg^pZL;_mM~>APEoTxj=N?^-gs?WjurCC}y8lLAq=tlhpwAKB$JQE@tgPAyQ4`Z7H51m91X2IXtyuQP@TchoXuRx zLT0q5+fcg-{-KgMgT(3OGRDG+j}vVmA>RqwrW87fbBl)Blb=7VW2&jjN}$4px*-ev zV&9U5P#}P-7|%-m51lv;c2$;pgAFeGV#Q{j_=XSm47HxzRkbDfijk+hvuTy7ny&j* z^HL4+%SJ(foWb~ej15JBhA!b%h0uJCs{Q)EX%wi2|2%Wby!W7e0?bUwCNy=Bdt^K> zVSq&~Yw4|01fN|hzgF`j&b$g+X6(O+J?ujta?01H-en@U8-Q1snkG>=C zf9p{mE#V%;i^1x0h(ifs6mkA3Dc&e8nR!!%i~_NdH2?&3_w>hdXo~RT&1s{R?k{!| z5hDO-p3l_8Q%BR%Flw0PW4&*41|qi-B{U0rOEj=`oY}e zTRVkhyyKA%2xyGLG}AqVW$@&u7gr9om?qhtW$>8Y0=oF|`P4(E!QNF2LQEhaHQYGB zR@k0N;DJ)Z4VKuN1-k`Ri}{%ABST^jC0|L)Jhu)3Q-S{i*;@}`Wt%esCj)!a9)Z`; zewCX24qR2=-wCPcsv~N8lwC{IA*i}H^Y50k`M&9BXIub|#+gFyU=)K9llJN@88+ie zh+8kjiY(}xE}1aNi>13M; za94NXTbQ#-PEX#H$QJl9bz2*OUYeg|T|Ic^jo~|QpIMp=`t(%3ZyDv{LesbzNfeo8 zq~61^{4ji&qtzhIhifP~WA|L-n2>E$xPD2ZK#uvtQeNvEDc zQ~YNQP-$ram6n9oY7g#vthy^#k(()1H&kCt=hPxoYjG3F*;2b`36%?RH*iYnMF1*K zW$=_UJq45mYU$?cd~Ygk5Khh5;kSA7j{kTDSsinpSxlmrka5y!=YnDNQTSM?c>jp* z1o?-CE;@_~JOr?YA+5Cl&NULKEa->5Q~`oqsAQxd^Y{*mkEUk%h*}7 zvOo>R>k!V84EE(qRFS#3OT#LBTWj}5yIx$enf3X(@F=$gGA{p9;TrXDjc76_NF3y(q`wSOxi4RIB%=xY8}xgsqEVA*|o z?zQJe&f5`yZi6hNkHQXPIM2~^`zI!krkWSFKcmP{GA80KUFZRqul3}031DZ?+BX?W z0#PO*O2}&{+K)UR0P73y5B<3maCa(+iqXdbn3C^Gs)W8|wkO3wZCtHO8YaXhm{*mcCN+#wQ;ahZNf9)g5c6ib9 zSIdS;7L9zvt5%8=x(VErM$fqvkDb54;?Hn&%L9@9!GG`FO+?`5{|vmg7jV&xY;zr? zASAyP5Vi%RZ%nxq!rK;jDS%ZI;QKsU=luYO*8UlwV{j3oHM`69l+iucdL%4<^XEP0 zGE;0b_Km=`V0O#<@(#Nl9wK(h9mYcatpSkNFuGAMe*7^!O833iXkD6jmzPPP!R9rw z0M8Ff(Pf&SXu9qS75Sxb;rei*AfJ)Z+Yx|?C`a@LU%?P%bas?H>vwgiK3j{gI^6aT zW`#K^{G@o!*4XVqw$_Gh^}-csKc~TLr&{=rlVVdKzgiYslA~f<}>MhN)^N@z>fXh{PVf zR80)?o|IxB1Adj&sB);`a`iBg`F)bS!Eg#cizeuZP~>mE_>Al{JL;P`(ziD`5jT@x z!gU+@2~?@QFX;s}TRA7e8~aKF^B$ZfDun;JZq3ktm!P(9gueT-qYu1vjL;_3l-Dt$ zrrbsN8Xn4Y2}7prMJmuf=bu7GXtyCjK_UdK!*Gn7xJWG$`cZre zxeF9IQL2!m7dk<}J(l~m?mlpy$x`8dvy(_J$%L(fnw#&ic6KNTc-SBP3o-R*ii31K z1EwexL%*pc)aZCVSaz>Y*1bc{U8$%?OLu+xK>p<^~+wx}?;)lS$sRR}BjaVLK3@zPZ!|ma>KS8KGUVaMBC&JbcLk-iKdnw3&Fm{?~{% z_zCp*Bm2&Re`61B^gG=0byq1{`6*dWJ1(|)Sd=ymHINB*4Pi2Efv7>(VO&DBTY++0 zq~$L@`(x9J$nh$%dm%6bg`Q8muqrb!b!%D?x1RUm30Hye`Vpop1ub|!istjypJ8_P zKOKFYsZ)Gc*OD)NY?5*?APASZy>x#_QMnN4*h4|`pN--P>k1`28&W{{@j1@ZMa(&|WdEtPUu zCCK)1$+DwHF~Tr=8<;@`sdl}|0xl|f9x3{Is!@vhu!f|*Lee1Vy+M@VQAek5#kF$= z42SPY%|*?}?@mGQ7J+JS$#*gz?%{U< z*=DSGnW}N{$-;j#5PpC>O4vSVmHb*Z&{UyPLe*C5(gExbzQTJc=_k!;r`r3;?M&Ap zJ&0~e9lW~y4a_}cIVHqbQLA^M@1P|eJh)DtCkV5DC>A}4;|3X8rR*TULc#N!b|}6ze0;37kcGFqvj_|k5=l#D{$;osdVEI{AYfVzLmhvd$@u}9}Vp3 zvq*hEbl4Dgh&-@;hZB~ZbR|j6%^w#8k^OK)y#)@>?Ph{T<)21;J~hU9@iU@^HyaWc z;oVuHNroW5UQE!}S^FPSLP7^D+-@XrsRMt%!q&YlY>7Qo+Ovp)Q4tsYOzC{YHrs(? zInBQe+x6QPF&?Y){oCRyY6 zA2|t)Mz;+InH11o?0Do~AOM^AZ1S}Z!8`^dHfE6t?gG7GbP@bU_`}Z2~w1$$2p$+sbesh(}8S8p-^+5Ck($BfqgR`F)t3Ikr!-6`dY7j0!x-1^(rL)iKk1udk0tP+d(eg;XYy@-*J8KfC> zgqeSMGK|+euFS0^kg~A15G3#Bez$fXW;mVe&69v)bZz*=BTx%=dl1#W3lqb{anAbX z$Tezb3LKAD&ryJx1L%v1NYp=fboCwj#8sddF+_JasZHB~seiNkZa`3~<;p||-*R*{ zmL`HQlY0-k+C4tXvM@97v5BJk_?vH72Vjv!jh_or9AIJo{|Zvknnj*{<9SLkk<0E{ zI1O=ZNM3TQuWB=1poC2S*`eCsrxS2}5Hl!xR5<@ZeYf@qtR~Vb;xwHv})w= z4AO8U!tg%=89V5ryFZr0vw+D9Y)I*pX+>1lbNS&35Cm6GzDU@$Y~8M9aDXj%ww=T;VdyjSxOHZpP- zZYW{ezRG6itT@-V(Yi#aJWmr^4b7TltD_a>Rfw0*rrabH=`Mpk31E`!F55f-memj< z;sTz`2qWFlj8@z~Re}jS;?+>vs(WFCM7^&AYRZa(CfuaW#~OiJlPU3)MfG}NoKPmY zx>+lqWUjOuat+UgpaFTo*Y6X1uKr}7h-GSDim7U7!Tx4&7d-*Z>S-W~KNG0Iz6P_U zv-$DSUGMKAPfS^Fq>{h>-!-@+=)nADFlu(4Usx~cH*XU_a~gga!Y{Tfqn$I1;U?Jj zOO_cg(c0R-Dzu_xzbNm1^UJ7=NU=|X)02_2q`+VIP#BR^-1i^n8}TRie9;06V8s1J zXC0i($mR9S0#fMN*4r>Aa;TTaWML$IAI#FtqdPYayDze z9AbH!XLjsD=tS+s&?0O?))8x=FK!i;Xtgz$CxR5wtA3GLC8{tFF#+Y02tOgw$NKC9X~=Hvtgx1Jc;tb?Xo} zV4ua~Yj?q=8I5}{mHpwvIsy0v%**U=j6=hX?-NHq!dC>4wT5uiAQ^)h`35;03NzDA z0;5^z-R;5Mpj;zhZo}Ndw`}ifIi(ZkmNNe*XZZ`UW7Yp`%^c5La~Nj_+V|x}&s+Sz zv5e4PQRZg|n!k?}MOGVRk(V0^4|;`MHQc~7>6RC~C`+6n!F}8MgDq&KHa6mtjJLm_vJ7{>svdC;fn7d;FPf>p48W& z{RY~YaPIHtceV)(7o`o9R$;gi4O}nMh58Be!V`%un+4;4{!A*D>S7iqts|5>EjEy;XjzTn=<*ZT{sTl4!dt9jTvN=ctq*OkM5*bV6}FS;OFGJ)rqkzpa?#y{ zK5;7E7X>1sClWfF5TYfdB2YO27fWfX1ou=a&8)kdn-{-I5)SASJdO8~WC8qwZ>J27 zRWQD8d_(;(dCu;{Qr0|0_T{`y>FMK%EA@$S?iAskNHu**20?0NG@rCT7k}x;KT?*R zp~x9gDIdL9B5~(V!F-bhpf8clYKm=81?uyJn4sW(n<8IvM3ES zcnCDG36EcDz8`3ZhgSE&L0-{lDm!IWeSgqF-m^~(nT62(u?^{lO@2xnkS ze7u!|-3t-x2T47qR6Vn#Hhq+>b_8Uy`4My39MZ3%y`eu*danX-^OfBp2Cp)D=dY$=A2*Sr&6eW! zK=#`^)raDZQt5*txYz7Gn~a6JK~ArBRNHbmafef=^}sb7}fGqSrfcNsNsaQwC^Uc`0e8K7f|*FPtcw?F1TjP2}s!&``M6&#n|>YLySypgTzXOgxa` z7CnAfeM&AtYD+ZTi=UpJl@woO2lPxYs-C-bbPX(Dtc14?d2m-qtbl!4ZC&fBj*IlV z_id9+ByaE1Yy5z!#)8tKE!>rGZW1H4W>$%1*QZl1?v@{x_EpAeH8AKg;kipDqm?5KMSqx#kKhrox!1Uy2dRgl+!LxxjQseaf9G z8W?L)fn8d1^(gTCvu7Daik;QiAcI=k^yuPVY~$!6zzsHAFaS3U6J?x_;bz2IHmKWq zFMXe0Mb>Qm+O?KlyM)Tf{&PFhK8+L3eiA)iH_I)$J{Z?T0i-9m8GhIBqaHBNpCLr? z$Yukerfyf-vaI{rYB`$9j737T_b^y+hH~FDA&}!P=OJn})&=3lAOfVI>4P>r;>jv4 zb}2xb(>VHv*Z_rDyTQ{W%7LApV17i#fKpbFIt^s^zdV*+vq`V*QXBt3<^xbOEdka0 z%U-YS!!gUtceoT8=s(JfbB`cUiyXs+cJM+}LwB zXQl<~m_+Fq|L=X3g1Y4CWSwP?ba8T(Nbx>x+D)D1pinWXgVr1E2)G^{h6Q;Hcr#4s8-~Wm9I2=0N z-fK!#r(K>pI-5G)U0|UMXh`-*`R+QY{a_QwKQZK-Uh$D^@p)u6qN$L5Bt^v0S%O z+vp8F^G}BH8_L#el&I*>#z>E4sLiNgPI(_gh#rwnJoqy`8h_yDY$4ktpsC?5YTCO{ z>D$I9w1eFb+wT5Z9~Cx5M~7p-0^TPq}}T2a_4lqtd$M!Of%U(+st>FFU$~E`M-te^n+nq{H&c zG69iIHA|5#C-^@Eu<-wJ(S%0|>pT}aYD{DAzi649RxfYxv+Ood`ET5R-fxPo&GtNj z?^s%*@umr(s!eC(QFvnrD*j{9XQ<@zfM!Hij}X%xSPgES0@z>k*2_2R=>m_H& zPimC>WS66X7X)6XJZXt4-qc${sfN{^MEU2tN#xhySDS;;PsdA-TG2Y+QmtUu7B4uV zd=U~QbFsZ`-j|%&C_fTC8eML(l%oon;S@??4ux)kI?H>~gFEIwke_oj5Y1@1TIXIx zhIAq>zLVP^*Zanohvb_#(-tF$gizca?^KIp@e>E9ILX)GP;jhz-Oc@>vD*FcteB%I zILnO74~56)=A9{}gy1r4=_x$9jCt!Y9=t5hgR-ouX}AU^i!10TE`#mGh0TWAf+k~o zZ8X`1eNu;vLj>n6_z5@DTKVN+00Xe?Wd55d0<~0uDza1qroceT7P&9v>En0pq49DD zA>nBY9$EOl2^zj(LIUo+KnQmEV5(uuZ{nvV$_p}K@#KR@TbBIs$-Vy>6;3q z1MY?30j5*K$U4Ku)2o`JOO|YY)m%&cX3$6I<{Nx4YMRN ztS<>^ij8NEH-b0Aofc9c6ep;0V@xdVsw6Rtt5UEWqC}-BK6_Ef0F4=zj|sq};3B;s zvAt6oZQGmcsX-&Ncq6uZhh1zVPfZb{XNsivS#5?m>u&FHD%L=O0_;Q%=iue7o942* zYG1VC306hjS410vg@z#CyZE)H_^;G@Xln(7kcT|JssxSzOaXwT5F|zr5D&OoyLhqR z47?pha9&$d*eCGN>fc3V_6tVDT?yju{-H)JoUgLPEnfw((^EU|B+|F53M*Ap=9OE& zLxw|>Jx+d4NDfBCh2gz$XrLYt!eNPo(Fiw*imV5PsUsIM*N%u#^qv7}QJ%>7VGjbA zGpwa5cnb}6{5Io>T4`f*iCm;)3!Gb-=H7g3DuzX5S?2Ja1YbKyLhg%}4p zt#8Z*Cwz<|u7@U|9=NX88E|}TG@wsFa!U-9tkmnE9;DWBr~7uTX`>7ZbMXX*@FF)k{xoVy)5paTUGqa$xH_@iJ3rJc*bo8Bg)auMH;bK!_y;jhQpofi`Wx%S}ffW#=2=_3={i-iR2*xW~K!wQO#jjC$(3a#$nkv7Q-ws( z*=}PNA;J4dgL`Spj#I?vWcLx=Vpa)4^{|TaE?Po$43Bs;+|=Kd2%1Ud2)iEaAb%`jL-L&cZRY|(*xjcE2F`;J*65G8&55fo^jUxKgl(z?2xk)u?BBDwbnd1NP zthbduRI>Nd+S@+hfw%curVX-gyu^CjWGS|pPukQGR@NMO>0E$4!e?}SBv z4SVuc2;>(M$oYV=sC6h^u1$~>IEB-Y7xAiY+s?N*k7!es;ajz>#P|Ks^w6Pfig+?kg(O*Zax*+qwAs2xYh$J4>n;eb- zoIPUC`RGsDGYHE2}0LCP5kW%(3%F{e!#Rtx?r4V!GfG*K=YL3v{kLcqg^PrsCRl7K-#24 z2GSUQdUaArUBdBVAZz7IqavFU?0=Rp8DO<@{=*?V96%70@TzK=YL=53Tn`-wRrGNlm6Z~ddm>e0Pvj$qqK zquBlySzwhx6@iM96Uo8O;UW z{i34yhBGjU9q}D+Ylt97zW{-N=U`~mgoCXuhB~bJ!JWXOA^7kt>gSmAlRZm=@;S;$ zA5mOokpTJcMUqLY!<`?KtVWym*6Y|IM{d>>!7>h1(ehmBN?SKG<#WCLrNB}l!>Aw| zEwV0J?0IHLQ3S_9VQxA}UG7K!^nDrv)8${I3;-eI%8;P9hv>99mgRVN?dm zL0Jo>eP$0uZ-+-b;X9XRAve{rASJO?Rp|7oMB(V8J-N>)0hRs&r?2hgHL`(;@jWGt zT`|3aBoVa~-0A-@F&#F`qm6P;|EG?@>mzYkdGGETJX%2cz}a8*7ZDf2Xfd+#aR8Xq z0AnCYmH4*R@jN}XmqZV98y)4%BD@b)?x%U4>rXoTC3|%iIqUhrZ(K%2kO=H2I6e_7 z-mg0Va2C&4H}g*7ulPxOcOKqG02{5sO%|IZct)|7oV;-CD}03dp7cYqmx8{_w~q8w z2=Zj9v~(rP$-r|?4-P&iHUCJ1a8jb>35;s^}e12m0V;KpYlbn1|+OKrB?uB z$Efx}E4rH*Hbuqzj@rkL^yF$~AX=>bFW~D6ffx8D)Gw(w?Zd~-r6rPyR)h3tPhNyD z!F(9d1NL#iG=du+P!fD%4bie&{n_XEzm4-EHvEW zsUFRfeu~_j5k;5LWDQ)$v6y-pW2y1{$>Sd`iThE*N$^O?$gmLNe&Cy!WzKe+Npxby zmmuMk(u#hktNP~QJQI#XHz#020Hy@V8cao8*a)BkUekIS^@6khFXwTYoA8ag>N!7G zh<==_B4uq*I!EaxvXcX7-2knhZqDWTr-rs#^^~FcQc3f}Hx?v<$dXu0wXar=R)pN3 zAQ#F~f56TQDvjf+oohy_RMuys7~N!?FmI4kKtzfffxB-$u`2aPo!IdB8%qk%P;|kn zWLmo^0Mbdf?1Av138)4i;+h!BNlwT5pDU0?yF~J)gW9NFit%Acv z@t0(*@CFcZ-eXnvDvm|8c%TKW`z9<3mSl~703_$C{b<=_uUsj^oec_~w`X>UW zVhbhbJmQcK9=dB$PI^xkYh#3)O(3y z0FPVt?QLp-cb}-}jtqhfkWYtt_ko015fHiZb&ba~FVx`?YE*H%ydJ*xZ$$rhgyKB& z#er)$#rr*^HMGBsCG8(ky6^qK7(T6l0&72xEfac?;|N15j@`RqU|2fb zNjI11n^leYL2_-f?n17mMw%;0&-}4T@fYi!Ne%f`-_3yF!@Aegyx0A@_EQCPoBz)J z$;s)y7QD;j>E2850V??Tc>DxAd2wH*{W93=Deviiy5;`*4}{q9X?7GQx5Oi>_bpwL z9&Q7j$bXe;j1$gZEw48JM=f)@>3{d<0V_^+Igay%%8`EhyR-auyb>}iv*ZP)whEY2 zNBdoY>XW13ch_QL=u69Dmw?vltt|oH=Fo%JZkkX7nJ=F%#Grjomm@zVWUKaFF0uLq zebc9GtNk~J%fwP)YhOq@;{zonQp-1>$i+dyNx@!g?q?tFH+AnqTFqkq%l zbwt>e$&UMBCacQNz1KFn_l?KOLq422t0v)+!GCf%;lfJwK;#0wU*Sx-7s=Vs->>R? zt-c_-6_E}<5Hsz&1eK$DlBU1%EM!P*yF%vJ`Kpvt2Q;JAkcRdeKLZew;W?yrfFu}X z3GJKZ<*-(4VIRuRyZLUI5`q`OB0D@o46W$T63)vGe2aS_+D5M*C_nKX^pQ}eA&QMP zSA>4lJ97rxsg5@g7o-83#+vnW&Y9*(bjsITRs6;6Sh#fYCq-_>rSWBltym-urJFlX zwQm0JC;1JoCu@Iuvp!2mS-L?XtHvv)PhnZy9C40jp=53K*=SU z_Vc=w+v{!E$1{wHBV>i0%`_z6>f5(G?I@0+*tiIHxl*|IY+K;F z7myaU*VT9hqbe6jm4^fj3zlB~qpu-W?W*xRSS5F+4g3ULiZ@w4$=`M$Se?!Jwj>1+ zDMZsCcN%9e4hu|Q$s^=M(>+*L0E5+dD{?yy&e@H9iMN?2TeB_I)?X;AVj7R3VT|n! zki4vHvp3}25u7#U$Ln_GR);FARR><>t6?EHM$Q+_Qz}L?jw`R{(Nb3XfXb4c?-ty1 zFlG|M)hl!~8IGH*H3KfQnXJWutDWfgTL6YXM+GfjoXre84Kl*pQ$xvgSrewA@>9ju z^$xQr35K%@{+pkcO$ng_0(ekmbr$H6T@a|q;i&%?PJPBv=ano(l$%F6%{|bzDfw&z z%->W;*+%fEON=AemXyOG|Uo`MM-u;5!>VrIn~50O9m;SbvN$D8Vd-bWpCI^Zm;3ms$$+H zN@b39^s6@IBl-rP_EK6XUHMshA`Wr1KYC}IBX+{pQ^%gQM=Xq&aO-BqP{F>Q=h|NP zV~T&+ZTgLF8vSm{rT!W&Bc7ZEueQ(-X>fDT2MsNl8xNh-1v(D7%)_ZI7Ti3_jlFK% zxuS2D;f>~AI}b7_*qI(ZbBO*G@Zg~9r8u+v=E^CV zIF_V6D2HFn)^p~wFTqB$uuKf~e>%ZsB(i=ss%7|57o}l2 zf=K<%O^W(;<88v3)%QlriVV+NhRg5=9`qC5Mzgj9v0cT0@zo4L&+#b?8L^cSu12Q{ zig5{=LZRKEqtqg}Kikgs6)3;b4tESJr0z>}(%vAoRSCJHZ7sis?W3sjKR01G6V$FyktTDbO+^+~TElUGn(?!^PdzW(DlBDQnt^zb8(*8vrXGqXy@JwpV-^ktGA zFfDD$VO$ZRb8mEQ1Q6TO&bZcyqM7kU#E_EepHB+){$b)2Twx)RCL15*%v4$SgBN1! zK-gY$>t={D8$6eXQr#i^ zd#u@Qt2oCbSLl#w>4Rbhh&WVLz36&G9U~>W=+yFJ`!B0ya4i}^@zwg}z4g9s2nq8I zgPdpb=$A&bWQ5W~^Rm;gFks~5IBdl*6{bQF@&@6g6Sj)dzZ9(Kwbmv)&b zL7T;VbY5L&V*dsSUbrjN!+pzy##7S$^iOErv3#w3TWfRc@zBwW>!3zfYvvQT5=7si zOR@l*8~*udR+RgtgYAip&^%L8vGOS=&#I0AucluS90ijsdp? zL@#+vk-sn)gL(`z*LR#~qz!?$<9MTw(zVKF#t|~wb$uNbP|6^V5Ktj+dvFsaXi z0e9F=9RBJCNyGcfJdi_=&sH4vUnOyUmW`cv$LiQ`SyX@Hskh7t9Pgrk)X+uTkx;?> zCFpQ;Y&7jIOZ}WKR*o^0SY0{qrgC;L9w5nZD8v(= z{s278TF15Y$4Bj_^KGv-uK_gFa~m2TN%u_r-0r!Vk$8p&T9XhuB=^u-s@Q!WJrua* zgBiUCsY>k4o|nkgC?wW6><_Um6BtTOIATgdcR$iuPseDS9_;S~j@1K<+~Fpebp}HB zA4PVjUZs0B%?iU*vFBbK)R>D}F5mcAjeJd53q?G9?c_MEp0JFR(-HZu4{bcN`xQS2 zit~Zi?|dVgJVE6Y5;WIj3Hh3s+%(^bT4xp6wq3jXLhgC;c;5*l-W+-ByB~oZ9SbEs z*e-^}n9>#QmI<7Bm~p(Y7(MvCmGfP!FVDX5P`{zKTz7>yOEF&P^AHuWcguQ>s*#UM zYWs~G={bGyPFMe4k7=9U-nmlVl-@8O*3QBRHC(}U6C?Gf|2g8b9= zfLx#QxR^ZI?VIB)+9>ykKw1>4^g|4BpN&f5EMqAW>21w7f6&{F1&9_*ve8VWU%Z=} z!GbXftLJUhe5-#nta5!BvVlI1Z|CH~xwwiszA`mN&YvS}u(b8}})%E5vqh~x=yLmwwSyqXp1YoV8`b#&uBB^h@>ChqEUiQqatzW&!N1H zo65}N{6zuYHmIt&_V+u0xruEvPhU!fH&V7aNAUFUysbvG~? zcVw|!9SsZvWaIHm^=}b{fC_fl5>G;#CyaAvuVD^r+1IuxO#aKT|Uf*SDW9x zG$zkZ?E;o-aS5X$W1kn9+$o94aqUV!01Wa&W^yitx|mFax%|qNxnvEkwOfQ_P0*z% zHi9L92o&9v>P1%*_HJapYX>JLK5{az_@DyebNw|{4_{$8*mDmL9EUFc0MNC#TBvl4 zX5w#LJLcH%!QF37Fhq*-;?+f0<2c8eB>syFh`&9K?^QF&w zFwL_}!3NOKth9vW#cuNYv}y7C_It|>zs1~Fwt{e5fs6s$yWUb4sZ$B!Q=;Loov($dcdJZqggg{YSkDtmNWm<{gGE2vS*O$2xr%c zH?E^oVwX)GuBYo(*~meW@sk5ZCvD%Qx=Z>Y3WTX79tXgvQdT9o7V61>?T#U#4tea| z|4g!}a%Y1~6*r@^@fGG9+mG!7$GEUrZtX>y_^4&U(~5Z|3Un(`Oc&?$-h9|`W^uI4 zZH9mf?6h=xXEezt9tRamq(9!4NRb*A*Yu;SP$JBd)y_Mv18y>uC3z^Nc z@jnmUvfGuP>+TfrdDU(UqD^zut=PqGoJ zif$l33Su#$d`~-!5;wyfq%rs-f*<#4Tvaoc-SHwPhYmG<84MBt*~Rzatc-c%)5(07 zco65EPvN@te94~Ve(!f?4{&5H_@PqboBQQAUsXL#^XDAeWX?_5?bSa`i~CQs3^6S^ zly^(>kN$^ib^gP(i~!f_g{PNMEV4`N`mrgK-pNM_U?p@{-PY4C&=~Rill0?H*f=(_ zb=#+Wo)=DYKO}qocOekpe%rC3m``mKAt7NIxf{>^wt}!aHaz`plA|U|$-j$`)2{F1 z4)SHEZ;l(lB*iNy*~!vbpGDKeG3T4l4DGJ_AWET$Lt?CVx#Rmi2gO7@+0Tsz#ur}^ zgdz)4m!8i?7gtqV=*9Uq*D@E8`7vS2V6ZCU6V+EI|B=0(9ZT>~Y%S>N z)UY3+jYBaHLkPp{6P}pZkQ5FA*2tw02Kedty6zQK+TjhG64~hw!92dPso%-3VpKH~ zeo^O8Ke!!!gvr9!2T^J7##h~#>Mewslt?PzGP*k{=d$fo9x81P>*YbHtn@0R`oju4;>WApvxw%t!%E@aLpSEKdHXg?Y1}j8 zN6q--#QV^x0e?>{*g{%kNsIn zU!AAKYbY~9uh_Xplo(YHm81F` znNt*Ew1uEYcnB2lyDik*-d5kV-tkYT)r@bcW#y|`&3=8Fn>0d4M;DgNNlm&a&Z(I9 zk$QieL!DeYUCAOliI~&)Q4Wpem$D4G{PcBH5L~o zP878&!wH_ive{-XC7mM;upD)co|ofbDp-zTk`UFy&t}mK6)${Mi9MUPd%DC0od|7~ zk%iLmUsyUelH838tZfxSzfNwT`)0V=L74u{FQA`6Pfgt~KZSU0=hFFfHN{#{Lh!X& z@c*fu%ZY7_gM^PEYh}Kkgccl6@;L6i^J9MWH;y%;m}d6~!Ek~74|hfk4{7*FT~+ZS zD4F3t=Kq$@&Kg)3hkkB@eJ7puwNdT9QIl;-=~3ZhFX;vQyVX1Ml5~jsD7w<|a?#CE ze^>>!{|GKpV76C+>k0owW&A~iGHknglT(!*|EMf%dnGXeb+@P>0utB(jKa0QeiB5j z&G6JCyQrKBqI4WypO~l~vXJjdh1oHZ8Js=5Bfz$Uxb_NuTj)8}*Lz>x=zg~*EYR#W zb>1KCxwH4j-SOD3Dxm_4k(U$=$0Ms+!}a^s?RINg!&R^61|8w<`Q;F(bU?+-sq$C@*9eX|QjzTDOLdI^y7xw_QgU>C0SdvKy6j&dqyZAm9%IUlO92 zr`XyMbva0DP%n?ak0%PC0e*)--*(ti1z;#zzY>yeaZ}d`f#r zGdTN2^VTxiyYQS$qLxR*^7b5zUWBox`Tswv-U2GhCu|?4R#HMzsU;MoQR!Ss1ql%l za6w6xuBAgj=~PO(1WD-zX#`0nmStH=dO<>JiEsG*-}n2z|2giQc^=QuHRNXAMHJHP*NKKtk4<#nFL1+&gd`mBntGn!IWjiOg(Lf^63osg@J z!}M`&At1YSglN7aegzXrDL8YV>V_|2K@cM7&=oSXkez&c=sE;sZIN<~bo@VE<#crL zXR2Ar_!NEWlwgq8j)$a1=Du#Hw1hd?b%!j?{bS|fh=(~fjalS=Ja}ZB^Fr-80rd6! zVUyO)L2EoTbjm$)#PKNlZUsrXM>okf2or){HwBibo(%ud!1J05U#2n3hX(y9{NZB* zNpKWv3MAtO7cW~WDMAuJ+*YKxhor=(S8qe|$i3b?H|Ug&>j!6T9qO+RlCO_PY@f!| z+@lQS?bXRd3q^>2Djb)uk4Kl27SD>oV!vpzCaj(Nt8yr$YMlphu5DO7Musns&?kfj z&*l4_+23x}W1u;9bd5aHGOApb?Q7@Tc*nWuE^2x=&bQ8@Wjs!Hn3sj?gy-5rVcX~_ zT*kdOt~m8l;U4)LdWuYw)Ri9pqT*%s*?ub(z~wABwG(mpS<94*@k!OGvA#P6-Uxyd zSIF`L^q>0CE!HZ6eu?JQk0iaKGs1zs<-{A|{}kmQaU+Q3k4#kmN)HF4>=(VEj`1{cPAb#UR*^>JT|Gxqo)Q}-inHTEyc2^YQ&Vof5PH$iB~2~1vIx#r~MuJ7Sg7Wk9%N90|?6S2ksyEi`{!x!);olkWB*<8jH8vgWwhK@lZW_*O zRP?jDyniMPM=VFkD;8=f(YU#@2g-(bXL%%eb~C01b$p|QjJ=N_VolA3?jmC}b>og% zVl`$I#LDe11AT8(l(e7X^khPcJ^@5sOhOeqqw{MEC&J7BO7s z&too*NYVE;^#K!$HorDF$VtBu+TEQmWxq8Ry1~zj(@D;Nvh5n()KG!XP325hHzw9l znG88Ja-z)W{CS+w0j1m&;S*4za>9e!ZDbzk{ynm8H;s|!XgGx3EW7P&9TfAhMzE|N*co7Qb-#+Z zUu0BlzsNYdU`IvL5x7`3ra_X-O3$D{Eg?4^ZmDI?n%Qd#Yyt#HvwNBk<8W-(_Q)QAg!2~?2UZ- zyO(6~cWR9~1_w72BFkNZ9`?oo(l@THCRVMehMh;nfxX}(N^Skc3>A#A-Q!Eco0E9E7ehrnwV%u8cFC=!9qMY%RVNSDOEGkhdqSmX=qnnBh)bFuH&n@pM;1rDp;9=op%py;!E2tPJZhX@SMO zpyJlm*|iJhCgaP*s?%c|I|&lTA-WHe{5|8?Z_BGa(m18IV8PRkiU*eHh-&ROgfON| z=25AV^i*=Z{^D?^_b*`hZJ}aQ6&V_qWKFG48DvtA3(Oat4yq(kY*A(TN7)hj8-jB_ zIuP2C-8hww?rPR5-V_jaGhqD_1o#*&E1R6;V+J1@KlSFwN~-$(`vz!N_*J`VB4({% zhE!GAi*xTe>tkE~AeZ;zAP^!WopTt&@>M7mZpOzAhAF?-OSkMR$dV~Y#+|tdBQ924 zM8>>Rc?WE<77>I?;6mh{^lCf=zWc|6moaE9P_G%XkL(5f;wV#gH435}IRsZc_(;O; z{MH(_t>kBtE6=IqyNp0hL*pI&>@RL#@v$I*w@VuKqi8_cMG6j(jbfwX;UjS zTvVnoGPImwf{nYwKba`rS(ioH*v(a6wQ-whHEblSI4Pn@SinEZp8pMNnYF|tz|Kfb z?YmTK$W@5rO7#fME(Lb8mHH%9tQ^U4%|rf;FJEN~SvX4gj#=5U`^!f>F_`MD`LO}W zWMTbFZ&s~tqY@)%`ckhOA;-+t*^Z6xAnQ)|GfY2 zRc--GliZoXQnZBo!G2c3pMMR3+Jm=ohI#lpV=1}SDE$YfJ%IM(%Uvwb6;&ym(T=#) zK2VJdR2eYweiiUFH-qBbSkz5&O&=-Qmgq*WB7TmVU4*N|_b91Alt4UH^l}YJc}_>s zid^mc_SFEZd+wIt#=k)8?SLLo*`WOODI!a^a)|~SEtt+&d4sc+tD1E$xE1(GGUZ_w+!TJ^8 zUu!{*41SJXn48w72r-}Jhl?6nwa5$rFjKzWb8XLq0GcKG3WVf^!hZ4XAt1*DlYeG> zQGS`IL40yhF!H%3&Y;2G?kxjO-yhTHD}_F4qW#9z7DpBQM9%TrUiizi6KjtXIUD@=ttsXM`q~`HN2L*X@aA8ak@}qzGK8@?JVg#AzM>qRb4RQU&O04F?o#oihwv3E)Lw1 zVjJLvf=Ku##Bv0|n2m%*6Ebu)d_ z+Z8E~v)Q-gz!&#O7MlN6ISqeo&hxTe{JT&+F8L;9LI_Q#!P5jbZki6UHbeSAxv5}F zT|8isrx$`O&+5oZLQjNuwfDUvLrBtk9`sjMK6fUP@YK5t}1JoHT zT(k;CX4I6**CMmr8wp%gcG}l6eVCko{n2=}rMx=zVHnO7<$I3z&tUvLjjmXTZub5Q zst}qb(1UK7*naw}tnqS$m_O2Y>b>qMG-@(o+WA?s_ji>5OJ86Se6r(o@X6ZTnA~Wy z4LGB8CFqZICD3V(Pjj_}>xr%Y{=$Vz`x4gOC2Z!mnnm1j>%L?%OSuQUjnM9pw{BVf z-8`hdZ~Xt}tT4GQ|Nop74}^Y4V-$?!Vk^B45*Dwj5VP+MRyvS~_|!qWy2J zoW9c=X2UoWs;rBF#H6VL|Ejo)-SV z$>c%-R|=!E{ZY*t#G3-R*-*WHdO{w{vF~#7n@#ufrR;U3$bPXyQQt!ee0@8vU}>wK z0v|RjxBtIi7rEa9oN5XFp=bm_=bbPBnZyx$e@&Ja%CE01G%Zlq0KUtfPPV0|SsV}u zsvTX`tTVixU?F0LP&pnxs?Slb`j5|lF4x2{*VhAU_dFT$Z(Z^7>Cf{?*she z0ehhNGsBrA7jNOJg-}@(M;Jkf1P+^Pq6ediJ_mf>Yw~{Qd*v~F^BXETdcn{L5L1Zu zqP7saQH*hV>v252o@tLmWyg|xi5)XoJL}5>bVlEA3}SpsUhF0F?$ps68)j(WzCK;10$bG^z8)AI-FpbetA$pK1ILj6lRN4RZYTGQ zwv=bwFcDN$ieAnd1&?mAF+nS%!$SfR| zb=VscEg2}()Fry9D5p@U&^dv|U6rVuFs4{d-S1dCwJ)G;DQdjY1W!I)xv~r=kwW+E zd_iorz(9f%H(nD{wLPL)=yd#5_LDV~w(FM}z&g*J0j+PkUs6FJG^)*i)$>`CZ1rIs ztvy%U8jJ?f-L2z~?5DE@1oXQ)lNKs|FmwR>ELX&^Gx+&4akbDg@pb1b_KPD%%sk$PE_nO7uK*m^sL)XcE=yN^V1bM98DcqC+LG_>V&D9;d~Y=Lxxm$Eq}Ir^<=U; zC~!1mFp`q@k+3O)z& z+0*`8vFlk>ZK){jLaYUe*MmDTY2PT59()}lHZnEMGT_ELWpZ^y zG|Rt!Q%fbgw!vYm<2*&&cwSv5n|9_9C(iv{ygWDX<4B2BK%zLChl^vk%{u{laCYBk z+!ZgZ_!%w#^nZEbhX0!vKACS`s?%uR>>4Q?jluNw{F2DelJfZvJ_W`O;N&-!51ok{ zyBr*rJv!AKw3$!s4%ZC`l|3-a3$=xp8RviMQGFQ)%)9Re!g`0Loyn_SGe>ULqpUrQ zlxHZ606!ZUG@cS9!SEc_lD&}&GO&=fesM5|A7HshXd{aSW zQ-2%ep{z!qI7huFHQ$uCK1A0Y2gv z4ETuD9CZ$#OfxPSd>0~#^`qA7e+wb!OXQo2$dExZcPQHKX3r*UIP+Yp`o;^93=Dt7 zULqei36NcYPssqe9KO=YfM#7>vB4efY3FvK5Jd)C8V?u)_U_pxc2D*6#Vgl`+eC`= z7H2~ahAL(=Jk)y=epON@!F)xC5&E;g-YmReb*#h1$hNGJweoUqP2{%rWe~A|4)wGz z%L>0T$LV}=9Yjp&Ggw~J(o?dW++Wpk;|7M7bB|0yE=eNC=k zToWzGmm($p%a@J@x7|Fwf=BuLXk=TT6o2g$Pa!8sQ;vEsVDC)yx@99Tv?EHJz z)h?%=G;*oZLrxqJ?D}-ezzxWO5|tAgff|OD0Rq# zyqp~n?RPWzfoLD>`F>`s&F~IdR6}mA+1BW?Zlg%$_a-AW$p2$adRfza8h(( z5CbUg2+?Ef`jVieC)#_zPSM-ie1RfiavFTcC9@fMj$X0~*YyZnjvjo#_y&N5s&l80 z%)e{Qwu`FE?lznma^|pG9!&t;QPf?K;f5tsJ!Hd4oM4cQ7iJmNg2ZyJYlODZ>2F6K79EPTL9MYFcgxW$ zAO5y(eu(O4^E>%_x7cIp*{JzZZC^$=^KQ>tkWoPv0(?zHvPCd>ppf0+U264G_6^=J zk2)?dy6$FVER!+rS?4?2@z;thg=0U@#k0nh)$feg&Gmq!JC6m)u*1|NGwC(ua-kpB z8uO`0B!hWt$O}A{4xBQ=v}%{)EHj)+%6Nt%oh8wxsgDs)|Mo=$b-})ND`?ZxwM?un z#q{ThQVR2WmJ>e)B;4Jx81AQkckI+|7%e$Z<`T$6$v$Rx8~5#(i)gPEJSR_lP)7u4 z>Z@U^YBrPXr?>ub7!oQ{)ZkIodz=OkI3Y!p!rB6rchGeg5;&%hy|wu#hvddWY`}5f z<;l_ISzp$L}o~l6}RPA;@Iik zG0a$!pJn+gaYN+;yj#K%-lhz@0FkXP@S=ZDrIBmGR;*j@zV$Jg#@HXe>D5hpio|7U zIsJVkW2E57X(wzI&8Pi$-SoQ+r3jsnLn2ADpw~Clq(~*|DRFajh{hWkBE9pb_?QPn zKPWpsZ8Cmc@|`B`Og?@H{b>yZZUB{W3lm}%Yd`A$CVXc}Z91J3L(xetlOGQ|wpPe; zH}_sY`MZB}nek+|Z*%SP=i0X=Q?SS?&o6>ScFACx$FN>XZ>#=QXhW^U?OOIy87usm ztg1n#CA^!O=Jd?{P$KO4+ z&gyhX>u0=)Qgq)k(#(XB;7+WM*z}c0)^x4tOn(#F1KC+6#E7^=5?~dyW97ytnnY<*%Rr>YZ1ufkt~95D#nx$1=8gUks@ zuncrMJ2&4War7C9C};a5n!n_`D>5Bt^K0VP3xBeKY#XY9Y!tt1pS--kJe{wv^T9cv zz0h*Z&pyC3gEG=vWV+wiw|a@`K6|u;CeSvprgOK`MGaY?sUKUfq@BB&#u(o#D1EOb z`AYR79mZd>6IETXyp$;R?Wkt?`r6F(a*n8h23t?UHqq73>!^-{roR_PSc~c+!?}UnT?)O5utM@_n(-L9Yt;AgE z|C(zi{=q#l;jQCr)byFJ&*<$TYBg+#^ex9D3u4i;xRu}bayt-3R;9N>4u*YkpIzVB zux(M9xrP3o&3xjWLLFKY6Y#4558J!2Nsm^%8{;>7=F8h~vIuov+g>wy#2#Sj(AI-H z=5pQVWLxZ?1&w17WeW$7L;h0J<6mYVuS#ptY(lf`A2ImPII$ZUB_Le7XSuS7NTmLK z$nwy^WVO3Cl;xiC%HiLOn;L9$3Kq_R0ZRqUy!utKsbG%WH)8>!S%>_%pFe@{wc_4= z;f;>x+`US-Q&SlcMcnuIJ7egodNF}N-AfMMQAxk~dGZ#x3elf{7l!_lxpl})BO2o5i`x+wtYjp;+ZIR`A^sgraUP^I?jE< zete`X|4)pyg#Q1Cb>JIb`qO5NhySZ7bhJS^t)72BdbR)Lc-aUZ3Erbq)~iS5*GvTPi0)8I|uS?%et#B=RCsfa3Kgr#cJp$k`{-UGyZxk|Q+wrQ?&1gWwe5kH%8x19^r9f? zQ!uP33m{>15YR3stHOS|%I<*@NKv_Zm2N>q9S_$Lb&sB@vs{k=UZ+wzR?>S`-tdj< zfFt90++h-)y2VwVcbrLxEqNgLK~aN-MT2L$t@ij@B+r`zf6SfFo5IfXHMA*QZT+{R z9Ne{gZ9wA+;-_L9cZH&XUi!3EgML$OG7O>4HNz22kSKv8`tUA1xBcQKgReOl!KS3m z@b!?M*vN`Y@_gbm#d}M5>eg2o%7mL-ZbGcw_f^-P$y(9^37u01o2j=&KhMG6fzo*G zwTl7Ys*gF^^h%(OU)(4;KKHj>;j>WX7tzk@9iwSzmFjpGD+-|I?GBFl49y?_8AMes z+cTPK%?DD@5<9JvNPNH2%#XYji(qQ}VFSwP7*Q3Q`bZ1SvBny~$i>Lec#?^2E+9)< zugj~LAYMCAQCAw!s8(Y3Q>^uv@S1rvMq|cJXWf919&#xt$mjW_o*RH#l*{S%7NNMy z>s`&BsG)R=S-BqW8aWWBPiEJq|1WIt_<25jm4;l#?lBJGW60dC2p#`2w*VG-sB*7+ z$qVOZ#oqaJekx>egioj~#qhrcIiG_+da;q2a@?^z@%wLhq||&lsK2BljE5Q%-QFp4 zUVlfoEIUQ`uG^DBmCOZDP|TuiGrav?)rG-Qb@w_#TY%p8^MNcCiPFsYr1$Iv#7H=4F~4hSp*Odhr)iRD5gt_QPuQ_y=PSI}8UL zPu}j+)(+hUASMrRHu7PD%yi2@G5T!wpQ!5Uo*j(c?BW0_@FW$~r* z8=fg(a!L(0Y|^rs2L;LQQ_!M1E@#kGR8Ewbzju1&LeQ`ZizG*M?eea7wV*2_`+4K8 zZl5IH3=<(RBwkeG@DF20_;^e|;A> zWV{shmG8Vz6#g{mg0WW0+$iI?RE#q4L$4*^_BettnP#BIM@4q)qr1>~5$ZvI9&XEn zFJMfCIF1VKTPZVp((tj2OWr2AAlJ-})%Mn(nzTQUooDB^4xjMjcg9innhk5Hw2Ew5IP%}Ud2sU7>Fd~g8Z6Kg zBzr@nf=YlGRM+X>mDH`gtv0NDH&DRXQ2C+lG>I zj(eA1H$&+`3>~=KT{g>k%?jQ;2!BX@-il1ZqwfCr`qY`{2^hL0xy>mr98=8&*MoRp zdp9RUD}6>oXg0mv0lz`rbGmOA3MKnIw>2%cJB{BJTv6j^4s}tty~~~<;8=25V)08G z04gDiULaN<^wgJ5Y*YWBNU*MfOZRXIC3+b4B9q01qkd@Fs$Q0<`=M{!mH~Eov#)nb z&W9S;t!zcBVd5#M=9O*|ohipTqIw7f@;=?3VFmM>$QTFxj;U%^bg>wlxhUn+CTQ3p zojC4jX^~Tfi3licRibF5o8dHmZ&0TZ{8SOy;|UxW0|mjHr{fZaM2&D7H+vH)^$|F0 ziI@C#$SO#_5eq+_%!|krG&FwfeHxZ>S}!>FORbbR0?5K>#$pa=usX``hN@X3UZ0ux z8?9+s5&s^|{I0MiRSz*SvLsX(PYntXT{`%F44N0@cIDn*R7S93xM$0VT`T?3dp zADF1blx3v#Aa@-Pt+vbj#|7a!%E1>+j$-4%5At(jWbk#mQvmFy7qwpYb(d)l7G}G~ zWT7flJ2;dxs2pvvYF%u0@mY~h`{DASL72~>in4D!XPBM&wa9SrMRR$nfwf4^NkUz^ zFn~}an5h1%#B)v_pS;FZO$mjW3%XxVGZC!FAEA}sU?T?DSP^JpdYIz&u@L+seE@*&O6wS6Q&wyrTZTEM8H6UnMc7)IBK?db?1v zHg_+aI{j9?pL)N-rWQ^I0{iFU+e#b3&P;c-E2gV1qNWEJIDK8kUBqoez)%%~k4F!o z12Tf#K#&Z3Ha2=_p`-FAh|ge(<<8AcmEym<|0MB%($fji%t!K^d2k6uUYxx+EYK_Y z!U3({5xY_hon(Es%gx|F`=j%U-0v;-PGatzwtZx%(g9>xC7|#0=>%l2sC|YjVp^1~ z_&Ii(=(id&5im(`c|pc5vNw;|Ujt@8LUaK@VW3&MHq(mo`1oa@OVLLY@QS6YWl;Um zyv=NglKmckw{mgzpdoap=A#pre5Co;A`KjZZN4$_f$oE5zlfnjMin_>iDsJZ7bBaT z7f)UV{0Fhr?4X58*sSP+aw?O%0()^6V?f;|_{IV&gP+xStq=8VZdbe!PPdHEjYFxx z9Cj4qWx|5k(JCAh8o&HjlkQGkW+2AxyBTv|Hra;~WP;U01y*m;Vg>Yq%DSUiJ0PWR z0%#w+OoN;K#gzq0L&IvnR0l-E=Tt9~dsLAC>4%DDUX=e6Dp9!?9-P4wFI76J}*b>DXZq>bEU8ek; zEtB=9KFAVg|I6LqpGDx>qc}6e!dC*j+(~{jKdNZVUI)>X$_qcx{kCO&gpaW7V|vLb z0O+76-QIEhWJwuU*^)trLoTiE2Tw{>W+6{X%aKNhd#X*lA(?`wZ|+KyflQh}+Epg4 zM%z7i90r7}Vxp?Z)7STsf_RsaDq=biIOdB?W%HII))HA5Vbukzc$8IdtRNH(Afsxz*`f+qY%0%E&@8VC-{T-G@75pU@z27Z#Hf zPGGg_oefGG8EI|Ez%b&qd9(t%-&4EwpgWUK+rCPBYtJTl2l3wPxzYsZ+5M*phS9ak z_^pfur98%{jmb>0Z02n^8-dL$oS(N}td3j;U0(b>QaIn0-Qh-t zjids{a*4ZRk#94YxOgMNT0-}K_dTd1{x2yqY4cgE;e0J~BjfR_k};2aXU9wK|H=f; zgTc;4un$zv!8=;3@dwr@WHwW!9~;C`ACS5@P-d&*U}n*gDANTEkeW^LxaZK#=<-Td z21VVHSmRhbwC!@&z-iSRnjGY8BeVQe1gLahkoBUsBs7C2cAgdhVYhA9BdfzogxBp> zZaWHp9=rsmU@51FcuBH5nOL1iQEH1oyi%=}_~4EMLC|CIJN|~Z z$IIm<*@+czTPTD008pP_Lxi%P-TSiac9MOgSiUIay!^%!~gRKG3% zP#Ee}GN%7jagSk#FML<$5k5$J{!b;16JtCCaoJE>#3OS6SZI+2h+`B!qC3?^CU;pGkeusGL->i=cWfw%03D z1UaeZJE1%o^Yx}lweQZwYXB4SF5!1?=P`S&L3^_GL zl#Yn5Sq_QHljQjh{z}aM!d>vMR3Kpkjv;`4l!~^gAF$L~x{HeHS$U9IHS|2{wHM|l zD`yV>=4OqqVbM-zZTZ=aXa&do-LNC7PKWE)V;?XYaq6e;*)?o&-f#@?I>fd#q5i;9 z99N%&1u$>z1f8FQ%@HZ@|G3*N;XFrv!F}Y>FMcOuFAw+g0)<(!e`ZjE-)xh{gGSt7 zQovqit*6t{o;+9czhHt{iBlN#CyN%l~Lue*629A?Es*Y1rwyY8rMpiF&5RmfF!+ zV|4*SH4akSk-_r!-F1XLM0a+uI+`!{tUPwUDuYF&Ze>od5uKn*caPMI8c+8p*o&x7 z=en(h?7I*m+306!ac!EUF%2$X;+OYgHQQaV@>JRW^;a_lgOGK!+zF$qddcYUajZ2z^_dh%=Q ztR?@t3VPcwDLOxT^uQDg0Wl9JAwojF%eBz9VsD7gl2k5M2r<>{CF)Wp4V8$ z$&guaxhe3hQTBP>ufVdic9M*?Zt+Foq5Wj2RRg!@Vj^BGae&8G*3Rckl?jhcpM(qb zn-4XW<=?QLZhm^G;7g4M|0xAJlriK7YV2~p7p?wQ3%NdT?GK}CA&jcaxG?b6P@(5AX*{ej4U*#k7Om{U{ zpX>a6*;)|aWa;^^-Jf60PgfbsDj+U8zJw>od5%&_b>l(Jj1Agf!|iRcwSS^Fsde)@)XwaLQHgZ!Pnc`9JbC!Cf(2m zdpKk!T^uaXdnT{dhZpgA$Lw==2rk*_*o%u&%{RsAehoIVMWlj6vSrJdpMdfRt4NO@ z3i|KLTwvFK<|z2cx>YsJ|dT&*bD)e&~ds`?k_j>ZW zzt|SiUB}>a__y|UR0iM1=*Fq%2tnPb;6oq70XrP*d$P%4}2aSFjL-muL+E((5!j%3|gY<33Z81u^`^f#>`QI zD*Ui*bvV@Lp$FK&reQz3ziwS9^y$%IFkaXztvY0xIaFNmqn*6BSK9@T+&5r#*1fNs#UGrRo98pk5erTzZ7$nidT5*D?w567ypoe3{b3VWqnIx z*}Mhy#1^u6KiB&WQ7J7S{H2@OcbNIq#j%o~F@ z9k(Q2ri}=J2|R6jV;bzv zziclK($exEDX5Ng91>!#6kiPH3*!-z$#@f5yEKt2?@wmi$8U<4=}6qeS;~5ZpoBXlb0l`>6remp{3d0l zQX$I6Vs*N21+>V*SDNphfem0! z1Lv!mjkao+{a3g!swvpvZ#;v1DE`jNN5)d`B`zdmcA31=W7UY^1jcH+*yGDt=kaw* zY!8aJ2R$tLXBpFa7e(=nsi}UKW8(*lPqm5KbLCo`#&JrF-li&>8{#yAZdJ|8u6s_S zbIvJF_VX-9Y+&nP`5wtMm~37|TUhL<>i4<17%#Qw5Yxk7>)B>n!}4q9_B$@WwR!5> zwvO1Wf@PYC6&b-r@eYE_MCG-1BJPIppN$f%v!9|7_V$yIS33KuOun8yx0ba#8|=6- zVMl~zCQ4mQFNO7D2R@N{Ayt_EU;l9e0+avGf5?2lh+|>jp?r3)JSWS6Z9_TLOP1ug zQ;>K6i!Xfdi9;EkuN$knbJI`RX~D!?))&{FZW+RA@*<(r?2yWMZ?hZ!J_K(UIJFHt zgAr}OclYKe>j^;(I1uIRxjD+KmxpqQNck9)&%l1M8AZs;NiJ4O?WTB>9qV_2R0Pme za34oK9gPd~51pl^u-ISv_gwD{Pa$T1u*t|N9!@WmY?@F9tPY1~v9#NTEQL|&hs+<3 zdn5&b=|KM^aEZPmm(*#tuf2`EzLs!|NOBuX4c=N|c7{){c^|@V)&6A`F8^iFRK+-f zWr+S~lrkTTw`NH>h%A#%?E+`h-4%3wuC*>b{kBXZ)$fl6>Zt5XTjk|%39i7${-jA} z;+-zt#EH}bW`~_b{CfH~UV8PEJSGr00%3h1SY#@}%?DRy*-BEXmy;s9?S~c}_h!aC z79xl|Ng&HgSUQ?7RMaGEcW*43CG4FoGKFhzvT5L*bYK6ggU$P#gyFst;q1bp)8uY%>*5HyRQzq(0-jI2Eo9Rh zf@b$aShVev9NVcs3%{GT^M{G2q6??l+4mim|0H)0E@aExRs43(UC80b!OnEVAU6Nn z_Nzu2H(F0%?~XXzEz0J^YbF`rp3Q2p|N8Gmgym21Eaq%Ct^`rPvE;{+axqQfPxm!)SDd0a*V}n{ zh2DKmhDT~-ue7m-aqGA`hN=^Y9U-Ec2*iYO_yYOo-AdfHF}pDC5-QHrw$}H^N1Mn) z3yS!kgwO;jC7XKi=Mf(f(q~_})cP$cM5+R?|^}=^ZygF?1bHL2cDw8%rmaKHq5Chs>awG7k*NY z*!H{pS}}xCSl=(hp;%UAa9ph5z~GHAs>PT2bC}r=l9QVBYKj~5!n0lVgw90y+t@f& z#f>>iI8naoA>j&F$Vo^rSUet7vyr;ea=fociCqx=Xt{vlao^|J*fRL>bLz8R-SCs? zvWQed_qLi~2iN{p2Rfw;k5PIKU;oNXJEDy#qTdVIX?H934Zb|SgZD4O@CQ-$_L5l^ zfRm((0Bxn>{T}om6&%ymyoxJC3@|h-rjd^}HB)Pk<{a>Kded{NO%g?|`5)wO$9$Yqt;T>>~xZ$==O55GedKpkT~ao?ZY*vI3dd!)70X~z)^lvcN*%Z z*ia#YhewC?9BfS_n?r+bp+Yl`_-?wJLleaC*{R%S7=wqkS<~rBlI$UZ3IGz3D?lQp zxth15^&~L>+>b%|@Z^-YK?0)%v@0c;4Adn_zUb=uR?PTx|F4Sh!Y-IZ$#rUx0W#Uv zEolg;EV@2e*I<5qE+&D-v#DO`mN;8=>_klLMEV-M_>dVdE&bp7Ewe*PMTT zEyLn={|_89@cZozgFM3)16mC%fas{JKCQXxQ$^IE|Mw%YnE<9|RVz#Ybe+c4P3anJ zYI^0>A0fyC@2z|Xjf|3VTFqm&(rJpR>Mt8$LMNNrK`9RF10H<3(dNc#J+_c1BEEQN z+ld9+UuI6SlZa+b5oNdW>v0HZR3I?cNzwp}f$E_DG~B)M*&&RnmiPR?E$7zn3tb%r zG zymfh)*KuNF9+K)j(yXKht;WwXh)zv+u?R(;cWpj0Zstp(tfcv9l;}z^TjK`e&KM-I z)CdP@?tGGzqIi3@!f!1)^@l7TU#cqtQSx{tJ)_FKkKH8=Hkn?1r16pdgIx9mA02HI z;`|OY%Re`4D!PbucVSm}f9~Qsf{r$_KcE?<&y8OT+L#bH)5^+8T7*XFYTC&vSIr2^ zpgDz_pb28+AF0j{kl0L$5l@`O<27?|tJP1WG(eW!g{XiP_SxefFKHe-PAu%CJKWjA z&deOs1PhQ!ZY1T>W$&CO$T+&Vpu?tU*h4y^j!N@N1E)$<=vBXO(pOAy&AVgdLumej zVZ(%9k?hy*kyk3#cMOf*liSQaKs~vcn6p&u1yDLMn0;2%F#xGM?8o!GMN^dU!bA1* zaK8(!sjuNsm-uA8=>^p?*NZbHs@%GLi~uBZED-outeKja47Xgs3Xim97PW_J`+A+G~`r&F#NZMJk|KmK1z3Y9tY_@v#`P zh!jFMga#=`y)F?enm35Lkd=WcvpA&@^p^mEMbS7l`mc^_;A^G+TDr2wb#j)qq`4vJTm z^2-%bBCx_gda`y3quSfFOh+5@uCad&V7%rYbWR}KUvZxjp=M;4zd910*#)bLBUQ61 z79fzT@Jv+6UX^F7A~~2viB^%3kG8UMmE_LjF=7kx-gBNpBPTrKT1#~Wjm-u^mSA|6 zqM@r>21cXCy9nZo*M)@*!Nw9*DHY1#0BEz(Eqv@j`|b%V?ph#|!WgNtm0if{2x(@Q zC|{le(^c%I|Ka_3J7!7$CPSyi868-Q^Ij5pZew|w@H3PBV*fykqdMm|z@aag4(Q%o zauxLaiq%mAQGnG?8gQWe(Q9bC?zP%-NZvWu5AOs2-7*Mou<=@KM>d7@yP~M*s52>1 zz{cK`{zS$K(BJpwLa+`?HYuLv$X%6z#m^TX${ z)2E?N_wjfwV)~I~11VfC1Cxes$THd}DUMZJg@1lfkx#ewWp0HC91mE*q_g0kdQ=}? zq?1UoaFeq>hCDPC1Rcq7)sfKUHotyOYG4Jt5XRAH4t(29vHVTox&A-9MG1(7o0FoxcU%!v^Ye3*uZSo?j18(*7~yLnHtZp~gJXh#PQ1T+&=M@~joSs#K`TU2d+%is}pzQLo> z^_%{Hw+WXbShbZgU7k2#%U&u17nPsY(6AVIT`Vb_9bKM+e>(veedh|SB7br1xL@s; zeG2Czmq)08i=%+E)c}0k9i2ZNco$3T7e@-0OP38jCfP@ZN`yo^S(o0~Qc}PeSiWb2M9dkIl9k^cU1>ozG~MUzYk>v_qp-D61o_>aV+D7K4SrdA{c?Ippn0 zXAXw&=ieyc(}-+xs-|GproY)T(>b8JbJ#^`q8cgmA8}#8Zp|o&{beR$br!u|5hzO* zDDdTbGoZ>W>f#|ZwnmJDWz2BRcOLEHFrTuMHbR+ZKse>Cx>R2GTpA245tu=qVON;c zbTUSi7;LRI&ae)KM$f-f7)>LfAPjd|c<1pg@5Qude<$HiGiz4;y6g5<5HFd>V4-Y2 z7p`Sd7w>^+0eYzHbIQ2GaFSZh5V}uisI0(T77_4-`MtT@;GF(e+kx6m464H-XS%m3 z8D8n2PqdGe$AxlEYU+pBppTBV4j#(rgxC{D{4E6yBpCs1B`h-E!J3ih@$3ZNiU?fd zuf_^?q(%B0o~8qf%OVA{LuD>0LNu#e7ejv)kb;gARVH&1jt+Um8)>hS&Zef>2zee( zR~4x5tHJD)W(Uiu>&b$CSYljBgPz~lr)F~o{)W1am86qv`(~h zE(*LuW>G>_RkZ23;i?ZXjM+vASP_jhX*^s@1bXf6yWB#b%c=GU&HCNEcGa0%A6ujc z*9$NF1p9-UzO3eHIpGxiKpNxd4Cr%;>qp8BWgB3LMca zU?)>V3m6rdjgaV20a?t2Gko4t+O61C|7z3Lp=S!pxyQ`ID&_y7>aF9V47&GWQc5W) zrNN*>k(Lk^5R?#*atU!U=vr!Nq)R151VN-bR+et0LApDaj-`2LeV*s@{=R=Wo?ZVK z=iYl}&bhAZoTDX;Nrtl!%F%1rPfg~8anCMWJ?#Hw#r*g=F7lP3ltg$6v0dlgl&(9KfD?Q5d35<{+=kyc1dblu}JIuu$O-yAq?U5v)h z*f{@6F)eVzfz6xgv32@*XF*m)hp+esz{~L+^dFW#bItLL8hHTL$Rs^P4sUPJ-ZTvY zCRpLe6udAG)NK8l-BI+L z0iP?XTtP}Rux-479OjzGjK-QS9+|iaIyA^F6S`x2!euS1jpktk&1Pww(1dyP@=Hkg zn8g!$kp>UbZxi2m@;?BQm zzJgzL*Mo=L67wEBWB`((*tk63uSF9I!;;@?B*Hu6o?9=CPi)^HCA?tm$X!Hh6uR-9 zMLc8NHKs!bwkD0CHd;1Skk39r#$c+z0aB1E+&UWW*)a9KiT)oXj2TVSB+_!G>N(l{ zPU1e|(tUX_;&}^I>TPiLAErqsX)8VtyiP;cU>k3eCRMjb`Lp~qtY3t$-hHhFO5(iJT zrMnX}Z*FF>Sf00Z*OyXo80;V2e~7=G%>8Ox9;jQ|CebgUUBY6l(3gdK4bOK|hs$02 zya&`-2KV|spdW>@PHO!q8`-?S`fQ7RwrLJpmuK1=Kwilo69241OXig{-)iESAkR@| zo0^VX$MP|9C=e!q7IAP*!^de9ja<_a<+)FUY+PVWIwWHrlsINxzG79n4CWPXB9OJ^ zewvf#e^S4E*?zG5#{~At7}J@aJuSr#G@%-7Tg4S-8!`A2=XE!pRC(G!hsT@kftI4e<*2&)wZhV;3A^-4-m&o3QpUG*7Iq`>`=Eg6( zXj!_*h*gi2J~5^RTj-Ul2&uB%3~Z#)OzR=ms%3u1nQChrB!qW*1gD97botvf{ZT&C z7>QY4Pne&5SDTRwDf-`f=dkN_JnmMGKcq+4rH4ygY>fIs zy&bc~kJn{AgMV73aZm}4c7U;Kwc2<3;FNU#cR=ORA*E!6nK$g8_yQCO)g5vuru;8R8ZRH~oX`{6$L1VsH?(lRp$4y)B zTjN+hYT^IzQBgsqi7tZ;$@>eB9VPGykA~E0q+r4`{yu`pVee_myNhT#ShNw`X}J|6 z$+_Zm%e2_&yY8p6N?F)>hqCvU?J)3+dfHD`vwfIEIRN$w6Uy9Nc*@1ewg-OCMwIOg zc?=aLK+-^u8V@O8x{YBH^fyX#LT+|s>CU~Kl37_!XT6>H36Qc6mS24X@W9D{ZO2Oi zb(`eqFGg=!7G*%u2+C{Fu^(&Xjj4|DF3P`84z}9OIO&uTl-JC6FTYX-P`w2B>qjtR zA%dd4i3#@Wj8UJdihd*0-_X#xbe@(_lyLDyLdVNY%X(r+PBtqd2vH#I(vhzRuzLyl z6ggZ*bsSAZVyFaj``U^cs%y|Bs%yzL(%ET83vt9j5&BHK@(j-$&eWPHmFnkVdS(QC z!1)!zqrgPY^8fdxSD^y zeJVB5eL|KCYiv*!YvNHIF{7j5j%RMC4I5q2O^GlEO$N*AL#+oY^(b!WkQv-!yTGNX?007*!W ziZ2;2eBjJt^YmaFdCgWg=R!<@);IhN&~VZAwt#=W1?Eee#k6E`RHlZe&7+dlw^a<* zFl;z!2@e63&9(gOTS*kEh32eWrz_F5uHvPN@ZVHKI_X}g@&iLJofajYNNcjD;81Ss znQ`254$a*X%Y0%Tum!1fL1CFlL#nLbNOMKnEU*VJr~ro<=$aZbKUcCbZmrjDMruDG z0XF^TgeI`*?-1*4tcFC|C~3qLfNyrZb~nvL@AL~84~uBkKYcsXwf7f)B0~H;+D;r` zRv#^Oe$j;%@m0^4YZ5SREogB89vDtT%1H5)fXNt+5bBbSHFON8C^`0R>P9C?Y1f{5 zsjCT!r_*C0gx!FKC#)OB5g&o*-N-&r(wxCBpq}YPy z=T8^256w1sSIt;(9(QShJAuM+uv=NoJ=JNbiOCr`tV?lyT$jRW4F%&bXFar=Y)4UT zcQ)n!*hM}UeVX;GUtugm+V!ln1&IZWhc_qOZqENNwqou6k||k+l9?`jqj#VoM&bM> zm*YR7RmP+f4wOjUCSwxe&O@qBuT^BkB5l8s?1r!&5irsCa9K+*50=Cw`g+T}ani1@ zCT2-BHam@&w}ICQh<649qI@OB%~i+Lm>Pw0F#7ULEYAZa}3?G>MK= zmABy}l|)gstd3+BPohHo48_t+>+;T*YlYKNOVxUlBN?g0<`ptbS5al&%k*ln9InQW z?NB|ffY=$pZD0H*Dh(`rG2VMC6p}hQ9r;?T%st3+aNH9h;A5Bgn*76MP3p+6sHwOg zTkwwSFo5}oODtF*c|cNaSBZpC?YCwkv5tg?TVB==g428)y*H1HHonPZLTXYMl;2wg zOtukJVlip5SRU;Rv$@@EwU%5FK0f6d;%Gn^3F0kcnPHsD&S^49k>Yz!M0d1uYbj8j zZrczy#&v8IO*9Uo=q_JTR;Y^tTivH-rgx4TnU|JP>@*iq$>e*pA^7AM^n_{0cYk?K zwwF<{t`mM4g$#4){t9h;@Fti;$a;oc(QH9WFw|G}u#gJWg@`-*YCA*YWJclZt`+p# z_&a>G4AYiUP2xa-&cypMn2j!uDXi1-s8TlHrF7k8!%@tyGBQm>j*JJQx>w&2NLM9rHMzA6CI zq^3k-_c<69*e%a5vv~J3AD7&0)K5N+_CaJFE_0f-OKJVXCRQzwq~_$Plht1VnkXJ% zO=KfyZtFw~Pk}0!)pgnAu)h9%N0r{b`x-L8 zYoDpDh3+4ZlV89L-uVe!+C{gO)1+!xjxj@ushn7Et_GUZv}D}C(-LSzZI@V95^vN3 z%;jT*awTyp_(28mR*&E@VR*xDl~MQARm{7kQ53L)EvvfUeM%eKbU4=k_8+6;;PWxm zUecsRBY2qNADm2_&mPGfUX~GQ?+9NFq~!m26@GdABYZ)rE8rZw;Z-m*Xy z52vXO_HupcG#5W9wxDY+*2 zs@dwYX~A;yF_0`ST66cSdF}%t)bk%~E_^hM!WdyQ8}Tg7)kUeig918TacFO%Kk*$f>Ew<* z&&QNGgM_Er&72q|qNV=Km3?yHoYo5h3>5wsHUCn`VienJ+|4~pK|K~(WIYs4C z^zZL(HI(wY?WbeXy9!we5S5QE_tm);Es$J(lO6lx{S#B?UnmMV@7X|=o-NiM(Vx{i zY~&EjRMu7{v^Z#1ailU#j zQRK1TKplHtO)etg2!pbYO#1R-D(4jHbwISoJ}c$bE~nCTX~`AETR++@q_+(cZTw&Z zMl0zKh`mjfMo%+|bzWi==FgfZuj3XGE@cN3qSWZ)1ELwwU06}gOZ&<4Y?6^lxaRRV z!QNrdr&xM~mlikU9}M>=;Hh)(Nm|2lUf`V+xaz91&B(B*7H=wW`yzm^McwW)hH*tI zq#7T|-?#J#`m0@qOtBGI?;I9TZI{OBNZ7Z9=RR0IPl~dMkzd0T)J6uSMVOJxvs{#9D7(I; zwK$G+Xk+G3|85U7?7V}Pw$w_djW*qQLW@~%kn6xY}8f3~LE(6RnxU+RZv)D}r zJ=(tMs;D>5zG*7;Z>688DsA^1)sej~yR^ZLZv6%?HOdgqoC4f)gv91ACvBltv>GPe zw8&(-V5#)49`VVJ)@??64ELOkxYB!Rr1yK8@S>b5w4o5**3qWiZCn=*sh?DK;Mg!F znDmro#q1WN{e?&aWzUcGw++UqfMikU0TBQ-W4rX+fi_HanYV^}DhrUYJZ5z{Zw^e( zc-*ARPBT7EXGWYe?waYhNLOq>C5k1ugu->7&Vpx`b!P{}ZK_t%q$;yB(~)>D&OP2% z5d4wJdebe{jxiRVdgsZVeoKq!q1wC4DRK zCEE5ag>~7qWfLNJA>Q=(J?C}ch7*~OU-k&)DEZ96Mslc3fh=L3*s`{Ud7fAZh!Y}l znmTJ|k_3IZta1me4thW_g%6w38v0<3t`0p0I`4-%w_4bUN7yXg7Qsv%{x%~HZ zZ#g-f!enYu$y-j-c&E!;lx4EMRp5<2VrqKPaC6Ro~jn*XP^ zyM_6G)iN5r%TINgCyr&N_rJrYjx&?OPG9u3g5YM-Z@|7|#brq|QkG%09edV_x;g{MbuGi(GWjF1;rd3*~SP$fM&c{=f6e!{>uHZ<^>>`@m z8ULK-?4nIM3g1uyn(BwCC>0kncPuV~2z&d>F6wVIY zSiV{urdMjue|WuTt1eHo)zzj`okh)lgsIAbJ;KBg$7?#cfr=G$8aW#8B^oF?zCA$9 zfL)hQgXj51pUh7xA>h8=#`TZC5N#3~$SR+1C3#OnESmsBfHx@a1}-DGup_W!f~tAf z@FTSt&vi?ct3`iCYf7$>5>V>%;Kprsa?)r$N8!(Df441n*va?qm)TFZH&U@S%ljOS zi;aF1$0HN08jh%M^ps*yCZq$jg|g|~G`T$io$-->^6NZ_R-*Sh-oLq(Hq?A?A*)1H zGV3fzVO`kZ=9c4a@H<*t{wdV3224<@<;0plx6Jt#pT;k)`n=2Ko56sQY3dCL!qVp5 zm8sV|i?u}YC@}Dti25c^>5f2a)(&E6K+J&1@ek%h8zy3j|I@0Uz%ZXxu$)Qjs>glP zcSEPT;N8K=dPCkime0d}#3#5=k&bj4jFMpZ$27|v3Wokb6q!`OmrMVOWgqWoaWXa> zOZeK0t8nfGn!(ojr1S6#U6Vf=)km&V)q}^$i5u=AB|=^AI#$>VvdlwKsh=9><1=}~ z6n`z}n=Dy3P4DvK+)e~N1#*>wrE`^(kOuVX`ANcb_V0(6z^s8=SEbtpegJ@(=Cdw|ufbekIxl>U z!5~_y<2C0^+57j%iT*s97R`GW3o)IiEi5Tg>tqkZGFv6YfaJoOVCPpNZ(#i&YpTMq zgTh@?%^{Tb{iS_y*kETH2Rg^nR}PHU(I#uxD$7lG%GZvp@?D%fL`n4zN^usW1hZ1a z9@sYrJ(VyYuYE}Ri^Vr29(sQXOQo?zVyBw_Hx)3!R7f5YRIx=cQ3)4|7vjT}m?mUH zIr#%PVnQV-z)ytLINB>CPs*svZFsJMD`>p@kEPC}l*dE%l)rWzy&{M)l_sifU3<%S zuI>Y@?`!pWv{jYp%b2r*znUnQiMsYF)M!Lp6jwz}4Hv_{;q#l^7B3dkLX`br}hIbr}cUO}2N+og+V8 zgQ9Ho+TYS=6jMbCl0-HMU-leM2Z-P?30A#~#A)-CiVlqM_C&J2QKWDl{IFd+k#9@7 zPK>BV2d#L{44yPaHOX$+kWnfh{uz2E<{m`4=1PfU-?a<&AJe|`{N^eTxvHLh*GP!t z1}LdLW6>;pTA06~De4sxDag1cKCdul`fVa8u}>*=0j6iIe>*};H+2DvVe(O9;McRQ zfE;(#bxfn;19qoFbu>^|es`G>?DXqqXZs#N#0EBA37adwM%H-0E?rDPNkY24%~ZQz z!BqR}14e^$YI+k<2m59s1EHM9q+?mnn4cR=pP#+hmHb+Q0Pv;VZi#vOfI7+Dbh-~} ze~O;V-@=WUnJ^&N07?=z(7yMF*C1~Em+fx-Kz z{3s)woE9t=Mks6{>k__Cge(v&009G~qf!rj9iKG=o_t@6pqiBD^*qqve5zRA>dm6s z>qU@4J3flzUSxHKtb!g=4o3hvVo*J}b=`@>!NCp8PMg}2PoOzozkR8$)3)*$14bS| z13?Sums)+H9}MW!#w=Ex_87Ig<^VVahf@+>#2?lK{~*~*%J2qGH7(=Z@#k4Ur1P9| z7-wDiCIn{u#h_Sli!`E}l0v80y+CTw?p;Sd(53SY)~l9|+uM`_ z77$PWJ7<6y&%BLT)z1E>e>e)ttdTCMnTp*NQ(_qdDp`SLX#mq=b7wNrtV+>Q=SmDt zHmGuyI&n9P2|TBp&g4Q(Try1};V7#&01%ruy*Ev-nr1<856HM~{lDinSu6H6k*h{~ z>7tuS+y?#ZkvvCm6D7BHtoO1gd>=rVZe1bbZ+ZLK>STU_>I}c`VoGf=PcOBJ^k$9+ zqCEdFthWlX?{+HPi9BYz@vH2jMMZ^^4g78*c+}u`yDfU@T!dA^HD&vNo1!WEk(W38 z%v1eabnDj;ij&PU2RoOe!XeMvyHVq7*suZkXCQ2t|7QIYj4?KWI!@M^mW;)oOO}qH z<;zIE-N|vWmDS>Wd~?fOs>fZU7rMV9v+?Kwq_0gVu(j~x#)M262!)hYn}Hc|jR zI$8W1Ha;5MAV}ihBtQO+J{)DXduZ!YHGCs1UHAqCLp53wjFW8uQ1l140w|}ygR7q& zfesK|SA|c2Gzu3y4KHKgwT6g_%sjE2h2u1Z@j*W*C_~!`A&1BAF z=OV5ZBtd|=DC4ve4aFK&cSA=|R4+r%TnE9b)|GHT_^<{>*o^rLe%s(TtT9@nMg#vc z;v`1^g2E6`Zgh!FB=Dy*b>X@CM+#G9FOMc^^mMhf9avtulf^W6xw%dV7#E41qy#xL zSI5r5IFFPN2{uBXH+86CoTdOp8N-U~{nxPidh+*JseLpsVJ38XkFYWdkq;5#FVENB z_)C?_ay7mIbdz-#F1URd1G1K!xjSSk8Xm^TkL_I(sB)Gb63Bl<0W0%?;|zui&klId z-?W#k(-#rN+fl=twF{SZI-T0-7)+z03(>2lizre7$Md_*7iSNVtLyZN zi=Au0l^^`PJ50+UTP|b8NiZ1fhC?8HA3(zL;bW+>sFLRqsa8YymE}rhYJYF{#;FRhE} z{y8p(lQZb!XejHpK=rd+=QJ1CS=|Lf?N_Z0u8FwZAF-v44|Wc`bDT&o$G}O+DGOw~ zpT_eP#odO9kKPMpvg=06hy#$6G<#+^YXoV?tMKkQZF!N%6N*#IYux%A2%0&3K#a?U zcYFi~=5`5YDuOKp3q%J$ncl6U2AX696XA)^@pabry-C%CT@6kFu5@hM(juoU`%n1~V= z?jc1$WePwlV8%1EhP`)Y`h5Jf)GeGyi{{jOUE`cRbok4j`ye()si*Q^juIe5FdT)- zS_?`v`yXdO*iz__E?^WEoA>8ps4`wU%<9n5($BlD zMbHHhO)k7;>;g>zsDs6mOIV9;+`n2;03bCAs3*!3HYsh8Zx{lO?tjms*~jKa{RZ+lH$JzUW8(k;?{W z0G(qNHeHVCgLVZsxPdZW_mrIs905+$>-OKXFntCYtzIXAhS3c6FWd`w8`ks6PzzQ|R0bfl7X&(|&f z!rg5kLVCM)<#Lj=&?OZ;%6C9iZ2 zhm8C(+SuuLwq!oS5IJg+Gs{Glh~jNq;@awxo3~%q3dWRLbwK;HmT~7Yie)q$i{$!-=Z=0V}!4&>{N}oKx*#1))5sZUXYg$P~w_IhS zpH(ciRxX|M7=Jg(e*^Dga(%6vZM&Uw%Kv^{Z0C%EiO-LxIg)rsvuVob&R&3MJq1n^ z9BeQ?yv-wcJ4fGEzH(ftydr%*auAftt$k>*v1E(Covr$|L!KCvy=Y}{2e6|27%lu< z*RYU~kkI^D4TzMvG)w}2Fnox`F)%d3@4!#9IN)!tK}7ja0{osS;BLwxSp{X#(vY_m zdf*4M*Jhw_ z(;VbL4JoEr|5~h>u$oIB?v6oRuiYq(y?W0UvbO`#;i9LpD}4K0p85c1N|esa_e{FI zmTLP^vB==nt35m-NEM*4@_gk7T2nWfR@qVL)n4E)W_dpP!{8G=hI zb;Xw)gg;O@el_nS{?VIdaWR+zkEiWbXWBtrHXiA>>Xy#nP9#1qp*nyfG-ns5$$>eI z{(ECarhu~m?f-1}NPzAB16l*G*h_CtgV@@eIIwV#4x53BHp(Td?B_6V7T< zeUSPk?92CR8tw9}fVTvjX{no6@HFoAk5_gY!@V0`6J($Q$8V6c6e=u`X$94W*d%`k za(=Dv(74+#E?;S|`EU_0cgoz@ny{Hryk*0@xYP?0URJNbNpKjz1B88$*(H8sU9$=K za^h;>LxgqAU(J6kTgc1sr{)Ex=`}gHs$=n+%A8g}sh|R;h#_}6iOP`mo zPAM@2WH>WGY-p9-;I!AKzENG1Me(F#WK)WbnVOe-1G?wfV5^GF^INi8`HS1I;oONm64C^G%Rj94@tvcba8Sc zM%8q5YHM2hcu+v~(lJt;5TF41p|P--pz%zR4F(Du$hE({Q9T=d?Stm@$03>cC2lF) z=-z~;Qlq7Z%R4dFGB?`2_~pzgdwVSw6^za>DOWV4UvWrz=rxGgjDIv{G@~8c4 zs%*RY5PsP>%k*;s>g@^nlj2P|*+3NCUk=rB z5(@0}MgS!KYz#o+tEJspc|w<}W7*EyI;}CuCA*Jb*)T&gG{hhoE=kIp>(0o0IWc*7$etrp_oQQn%D_+8>B$f&}u@%Ms6_92|B~|_%i09c} zDt-7Yi*YX5|detIcZ%E{5ao&8bD?^%T8wc&VI zqkEU{v##oL9UAyc)!W59bQO#0NH(i)?1DlMo<-ioM^O!z?@Kk}+gzVq4%7=8vE5r- z*#7o3MGx_tekU29AdlW9mZFLC_5^+XNJi?^^VOAs%%3@ z1`fp^v$5W5aHeY7;MZPSC_be#nR)vW&c+%wRcL6r2OFtP3r0VYLJ1m;|-lTOsXxMpNH;sdX{Sz%ecH2cpqt5a)_jK=6-;d z;_6~Q*6~5BOVO;ErHMxa@y_bC^f=J##qRdG0`JmYnJr^;8KIgey0AG>C!49YG>y6; zd35i%SS(A4EJa168JMf+be;`L!>mBhl4}be`ZyB^W+~qR3;RKaT_b8o-?LOhU+jh3 zTs;xA?D2Y(-qQA7?g1=07F3d@SI9A*%pt>@$ss$eIPABv8$=%-&?4@BugXtL6F09zwSldU`%VvK!MDBsbg)VSCWa1vR|%5$=Xzs+M)v;H`G~UY!2ivt2+G8wOHET9V19ZKvm+stgsQG?|UMM(hb*+zdL>8 zt=gh2dpjc1qwLo;n*2dixK~wM-hn)RL|^qE?;F&{1UBfbwWFXP1VNRl#+~_>T9gID z4K!2VsQ|&o6)5y=yF0{hAc8A+vGXZtTFez{E{>2PWU3Wcp>f{aipze~WGewGSX=1l zk!!g!v7osaSb~V8?%iSu0$n&{ZZkfng!s>mM&@#64}5Z-DmZY0B0F)HAMxY9rzM=T zq9vUA?)F^j=N!Ve@gj60{O9R#$|0X&_)p@ck@W~)nkgtvi|}ok6ucWIOm{+2RxX{u zYwkE-p({)SOKMJk;d+||okb(c0zQJ;%i8MB7;U&bou%a{2Uk-jn2{gMNFtZ<-<5R( z6le36)^#&+lgVH|!2-13`L7qzCXqh8@lk2wN=+-;sdHieidyswHiYKiQm8chn| z#QGjcB*pVFbFKlb@pkQ4H}xkVjlWGba+hP^i*v}PF%U};%(sAydp!G|;ky+rg$tSN zl!9ZwbPm=EbPl`>I2*fNw8_U$MKp+f#pfUQ8{J+P*O@xKbgvxv%$@cQo~Z45mekiX z(QQ2LMvvb1zxc0ra`AHJo>$~|!KAm68;Ju~=Nz8O9g0;)P9(=Y{Hr@5d$2R{x1A-~ z?jDCuS9KC{GkpU?F{Ax`8b-4UmtR5h06H{=8B6yKPHa|+@A8sgs+}IeS8mUu(w618>m5WPm*P^bw#MxX;i(Y2{{?!Dw(K^ooCB{xC zfSoRfY&;Ko`SvPzaysL3?njBH*GcCUMb&c{w?<)Os*mMV^$j!4dL0&=#?_0p>RdNT zEb$f4pi?c-1yrrHws2ad)cIOwVoptj`Dx(ire=X#9vm3kAmJOJvXa@erjvCga`W5jYZmVEy>MNLB9o>1vTA9j zP=b?mCh~zD?tVMK>{7S(KhP!j4Me)eDx}WIus|9sC?p7OZ*3;LBDh`qIG$0q+=!O` zPBBWTgjbetS}FEBO>6N@99_z70m+N)`IowsT6BADdSW>Y3wEkvIi{lp*pe4%n56j1 z8Yvs{luUndrrjSZLM{13yymNmVnMd>WP{`GxgX3lp#Fqz-qD&awDh`}Rl(^K!VC^M z@XlnvJF71&{I#cs3l~XY62Y_2D_9CEdGSCsXuZpW3CBLX7|ULm^Qn)0*&1N0yCtu+ zAz5y^YOJB!K$$}@*n2Z3sBllAf0eP__9waDE;nHFPSdpJs21mtA-3>XWgI|Yv~&6Z zeWWNJ1MoB>a9WWpm5GUv4L*CodLlzdC?rxp#1srlV8n468NL82PpI|HH``uf|AAPu z@IT^6uSbokL3P9FmODA{uGX>SYuYRRR!qCKR(v;{@fRdV+#VyJ-Fo(@YPE4Vofye%hkbR?hS&{m+LgD;F z57gw_;6%x>-F=*rTliqDR;?b*+*Np%?SUm3aYaV3zi;(MZ;VA(O`d41NsN(n>P4X> zh?{yz0-NOP-XuOt`%J(vjW&FWcOAgDVz_|-lct6PWLkvU)U|XW_1)MmJya7i!5Y~# z4oh_3RF!!C=03Rk{sKuT*E=#~S10#GuwM!2L;`NY?1DCiJ%6acVW$SVZbb4p?81KB zUWOR(&4GH)-mVM`Q9^L$x(m{X*+9(!Es)LzTuvN7Hv@ATEq1c^H;$b}<#p5SlI`-w z{Mwam_S{3(jKA_We!FMyOJYB*b27pu?(f3q?0tD0 zfJqZytB4vfpj5<}?Jn>m#sL$_j~=@;kjsy{hX2I7ID&VH4Ift-JfMX}D>m)z5x#ww zcJSt;%I{t)ZXdQmiqWI~x3U|V4p*N$Z6y^*fT(M0E)3qQyvWK{o2PK0A3f&^Zk zExmvF@eONPzxx0mS+*y4v+aGH0S2smU!;}kTS<4<>+l9{BVX2;@%%}~b;8F6(62!b zT0$tgaC-ZleR*ukib_bJJhue4=4QyvCt;Rc9Rk*9+U$4%2fDmifDVH4~)fVft<^4(*CvyUax$)7E6q73q zq|)?>vDeM&khD%^aJ$d05Y*4H8PL!w(Bb-sRdsOS*v*i?p~3;@Gx)+oDhC2yp2&xa zPGfE$)BT1oK5{UFy<9N%Ft$ekpgIXY0M!9;g4w~A`ySsiJwa+`{zcG~1q~!3-U@_T zAb?0t8Yxwr`NAbYv?exxLHXf*7Vnvc8TiElHM<4Uc88gQUs*^z#{vn8~YMF{Hpk<^bxQUkVg7WxLA1 zq`I813hSD8p!DIC3HJMh)?S|A2lc9OT*KnsK4SH}IN%x&EfU0zI8{lWl8J;BW1!7( zz2{%m;&ZMGZ=nY>ph>3y=(GliCK)5-wpN83EyRmi{*#d!q3p!d+T4cTz?&7FChZ#J zeUB;-9>s=CcP8T%f6t||YTujW*ZyesXE(($OwUaJ1xSEx#Oj~efYJ|`Q|P}J*>c6xTv-g}?cFx{3VaMvm{nsd zojqbP$ZJP<>|d1{?8X1&U-6ZGo2WQ`x5+VdN zzk%`!kMtFItf}=aHOzP=y9ps8jh+n-Ee$DB_wEUj1^5itcb1q`+iLyV?Ti{BQ~9+E zkiou$RKUe5o*VSMOhxBX^(Cb2w?z05+cM%7*G)bq5c#!&z!=C8t)1NM2YK#ogV~7G z6#(aS5V=p!tDR9sM|jht!PurF(+3Ke_<#fLTO#?NJM@YJ?I^aG!mu#+7b|-UpaxBN zFP6Tq=MT&0ny^A})FpOC?YdPuGbik(|Eaj&Gh(f=*z0)Wk3RoA3X1C+t-qRnur0eh zoR-sA@}YW`6b+6~T>|*lrX~>C8jzr?$F@(|m-r!2kZ?TiG!m6K^nEZ9v9?Z)qZ|GQ zbK~~) zCKQz#9V%RZl}pNxBXs)1i5=}^zke^hB*H7uE4eJ}hhPGYf9F7H3A%t( zUAmeoukXaR&F65l~{QG)SY{(FW&2;tp(nP#o4O%@tb3?uw zRCyr5LuEd_$I7q$h-$|@j6QUA!uKAYF$VsQV-~Crm@``|2c$)5XL^_P0gA)d3Z#5B zyDA7TXh-ca8k&Fh77ni{{w$i`$HBX8?h4QKIkkcoLB>#~VUtQSWhBrKq;E$S1X5WH zIW#G#E(|Ul6uFk#ZUl_@Q?l&J%P4wk9OBT$#1wT`kCp!num;d(`+YfA+aLs90LZ?$ zF9(`4*~mpWd)gk!-?8+F|9F4+>B(NM6Dlic2x0UYn^(%v2nx%A^BWqI+lk`;FwJFN zJyb38?b#D9Q&i6bvL8NSUecw;b2HbD5o;UrD?7t7rR>%>gcNPK4k za!}Ayd3I--9GG>7?GU{zMf$Sh3V7g89mWh^=RVM5LbTNt;C~S^6YtVplD-Q6+HkUd zxX1yQ-3ZRbXgKdheU;ZRRt~QlO|fj1|LyhMj+y+_PX2v_^Od0#On2`Ty^>B- zT=)BMMd9u8Ld~+1b9(5W9c-G=-~jh;#`g)oC-S(bZsdC_HOnLZ)l9o)=gpMJm!ia+ zJ9`!&smmCf)MX{j15oklNcxw)@gP^WxHV;?^FA@BD_i)GcGR(a23HMNp&h7Z94gEU zq#kL#qOpFW4jXzsS{N7Ry!&uF8d*A zSlm@JlKd)LMKZmJi`g0Ly0qc&{CC{3h<`z@h0Sy1G89~=sX9o@%g&kNv&<2ftGou4 zgUCl4XtF-qQj`xj&}YqH)Dkigb50}3;yT6AzTeJ#*PhbXW!+^OYre9n+nvpzF2ya62uP{pQnUe4&|t=9o^RM42BGZsq(bqX5BPD{g-dyrCniw zQ1g1|bbGVRJ-wPd_F|v_kPII_)1CMhx@Z<4%u6JU(yK1r%&F{ORWq9N6}Ur?-FxT z^##Zfdi|_! zV`%9vEg{3>@DrE!mwYi%cuY&Y8ik)%ZD+?eTVU-jQo;39tU09S{qE{4IjV9XUeLYE z20TF#DoWr9-o!poV1fsFtXaaggZ6&_Dw9OHKRFv|fn3!Q4+6YJw3Ps>D-p)cM5{fP zVaiC;5F22?-#N8f+S26x?Q-CAjWjDr;%fdp_>m3P6Z98KXrErRTZ_wX;XpsJ-8JOn zg8b+`;I&c`7QQ!r2NMhGyQ2x?W?VOSPRH73Hhp@?ELsqnk zF1)A`-00AN?td)TB`B*1nVm6;N~kIBCxnTJdb!;tBeB%zNQ?f5dH}b&kxiY?Hjitf zx|pL*y?2cNjlYriDzf*34?1!w^KW{_$+a{A^4B{?jkDNlTu_zHL3gv=J>Un9xSQEa zI{i~H(_{5Az&t*B<*<66RH;fAgz33tRiX!99+mStGwGh92;>;dDSK>aTV4N(!=%hK zQPmw8PTGROuT3_7<1cWLy5j1W9 zg$dg%;2Ef!lf!V+p#zQ`RmErnjw`eX&va=sY+ZlI>d3p$>)KOB%}}!h`Riz1();l6 z4Yvkx&f41&VTfIU{D`)~Gm8U!Y^&#)-L;Tapo97Nzb*#FznqFs?S%XV6bq9Ll+wBA zGmvUH0rI${BCRpsN}M0jR&JL-{HK;E=426;O7s``(5f4`SD?B}-PNJ27XPTpy$YXO z&3%Un&7ZG~M3=fZ<(0hD!og$ysNRgvY0LkioH)F?g^UxR1oRc)VPne!3E**pwq#C^ zmR?U>7m!&^vv*(;0#5>k+y(}&YckEDWov@RiJt8 z(~fd1`Oki$1VPwm+1jcaR>h@Y%(hK@AWARNS!->h64vpmdJJ-V`tn}cKD?BS2c#KL z?6Ue@m=}4EqYpLrdjIUg9KUH4D&8!ohn=*m*JCnvsm?8s@BAj+$)(Z&?bX- z4yKg}%sPW!vp8dn;@!371acxE!3 zbqO9DUeL^GcpVr`9T7nKmj0H_dr=}dWd?~`KRFlT(NNX9l;&~(h0dlN6)s2`0$%{} z3^2v2Sfpt|=acczk6k~UJVw1RS{p;&b)&&~8lDI?J+)$nE_KaBS6R06M+WpTht~J} z@cUlvO`YHT1Wd^vE;0tEi4)gslejm@%f|6R0B>VQ+E>*=*1WSRM}zC`0UGb5f{B0$ zT5tcFaSjzAPRF$$D87?(Y^@jUWIy4!quno*!nDdt?WfCA3uu8&;1tylQIKlYK>0vNW z?=QzNnfj14jO@ls%iwv4-I*7q4K{Aiemyk=Bu=0U4v=&qL24t!X9A0k{odT}@K$=h94KPNU`lJ zD1+p0yvucwbt1btbM~__wd(KRo5x%8B8zO->h51BC%T9$sV#!7FHX)c$pTjDi(}Yd zExpE<05yh^U~^x>eHxPfKc>Ditg5by77zp!Y3Wix5F}MnT0%rZN++NK|n%M4&B||-Fe{7)HFPz1Ey#jyVR>K*R4b`I{bw}m}GrF4sXhq_m^+S+3Z3$u73)M2YV|Fjtl$ej??X&05?`n>by!`612nc+SQY(YSTJ6wi0M?+?EwBA?fM+{-ym z<;1ty7PNjZAV*$=Rb`aTSx>f2#x(#9kGd!wuz!FVP)hKD#nM0+0$~JISJTLKds6kY z=cV58+EEx%{X6;C;TJ22{-Q6d0y?e{Vn23kItbiLpOn2-K69DI2h~e}`~?B>hiN`! z!8G@bE^IA#vadfKNDdTlh(p$N+F#QA_?doA9?AJ_Omd{KLxK)Hfd6daZb7oBm0(m; z@g}L?BW=IVMe+U74Bj?~Uqlh65Wj@(IJ|Ei9N{kyeuSv3TTA^G=ko}sJ@K7^_{{Q^ zAkk*p18c&dF5IAoo|P*Fx~u#xI_ay7o;zd(r#O|+sZ=?FYB&R8aXrqfs*$B9bxw8? zWH*A^#^={&Q@)e-qKXYcb$|xm{H0s*63Jybej@`BSGO{I`aD}yhw`Z;nJ;2Z$S5;q z|9dVwY-1Gy{)i=C#7vUDYLlt~ztcOFB}(`c7$v<7hkSi0Jk|%O$0|P8aly*(YxWa} zP!D<>yxVj}NBx9C*b-i%XbQwYQ-FoJB&vFvTK)SnuE5fm!jM%@d&pWX(J~}D#Z{H% zbl-J(&ovBcZVFYn(uyov5(B)TR=_ri(kx)xoV(>O4v-EbD>Z=xe7Sx=4o=v`iygc}pNG$;pVETAMne7AW!2@nk{>080It2S3BSDrPZIiYS7!AZ0jDHE`G5Xx#s{ z3P$Tjs{B5>49R@R!&wIWL~494vBt~qGs_LTDMtQB!Fp?Jw zzlOqm#<;{QZaaKci8~t)pUB(yJ-{qHv!xXqZR_ z0oQ$#0>(^hkS~%!$rl9?@f*bzC$?B+H&R$f>1gWiuh`F!y^+YHHkP=^4D|8+VCk!4 zUuUW!wmZrTV#@CUDu154lLo;Hp{12<9*!^cjI(3RSRUpKNT=?s`f!fkd7l&58?!(_ ze(;(GFlEFO?dRjhjBR4TGB&&rT=$P+x^Rh*tcGTsmOj6AUA&k zRRf8jWIm%cSMPD5M250RY#V)hBZiZVirp<1v6CN7S=MKl)tfU{Z0N9KVA4DO-xUvP z>HfnSO`n)mCn=>h1$6^Jd+PBaO1gv5KKcFn9KANZ9v$hmxBS&4IDc}z`qXd**yL7> zlF0$_Y>&19#Pj|nn&OCjd5Z;GbF_`^p{ibg_*5?Xt;;_eCZu03b|WG z#+cShT$bQgLj64&tz4(-nsIQ{=TD&?{D4i6FhC%~jc&s)EIOfkL?y+D(rYHmA&Ahy zk=b|};{ls0nPEF*yI2-qIBRP4$A5ppGP+)y^e#^5`9+8tIkUJim7Uj0E>k&7k(q2t7USzwCZtbAo`W zeSgcN zI*|g+}<6;`5;p2{p#U zRi6i=wlDQNQb(>`lUvcEeGbL`2p%*j_NR4efWx7&oV2HwpPJ!?ZlbQAn%jk4feFJa zn@MceHA6?W7Ksa_9ORwPpRAbUWnx@f{pLBaSvRx%QRUWkUm^yl;v8-aOxVUK(7mm83KY|7rKp3YYF4w?#7xW#?QSYV zADG=hY;0n|suHf-gC!|GA94B|g19qzE%6CfT{h}t2MmT#o@-EnHw>!3J9aPrc8#<2 zLz$U_kyZh!)8)OjTZ*jI{jNx_oq$#8d*{|+AL0BEj_w@%nt6+$t&peU+CAV|qQ)je zJEJkEQC|nE2I#PjqwT{V8KOcJQ#X*^KEsiTKjIwvv%OQm)Qt^+YETIft*oA|yUu3Z z!b~ge)7z&1aFHe=e>qgV%zY@jx4t#Np3?>17@Y0~IX!eSKilVscNZPgivuiw9Fb%J4-&JxA^ z;PX05BCK)=_IY2E>T(xPNMh`0<*m;qP8x#lf5(o2fRQb_e~_eBA8Ie^MA2|0YpOwC z{cY}lQbi;nRdkzs$Jj%`Sj6B^g8W8wm$AqUkkBq0BWlL2p6;?jG2Rwcj0eD%RdU2w z7P!G7bx`;8*jdT?iq|?ML0V4RIlY!Ka&wVLT8DXxk)ZqexGQMMKn(B(69ZxZ7$FA0 z8v~hU95@Rpygd0oG-@k1#wyc>J)WB_N+>xrSYgLWv9rO23iUih`Tjg7>E^cga8805 zGVSw7e|c2qQ~A=l)Z8WgGj+F zgd{s!@nC*u+qI=r+84{-4$e`P4ej1^$h&(MyG;Zbj|l3m{`&2ZFt){YmT~+-Z3C;v zEs~}|iBOx~NK(k%8Pd$yJ(HrcC@XP(vZf>Tv(ORC{z0@`W7*dQi+(E>{8%=Rxo%mX zC87IX;_?}*{lMbz3KE2nj=`-o#$ex)g-~A8D@uyj^){`FvF__=yo->SL@HFF zT!A`&U)i$c$Y#aZvfN3V6({uq6$_N$&s~g_LkGN+!Q+MNlTju|koO|%#c_-+h*(@B z`M68j{^Z*30@eDy4CHEcK|}&3Yf%rHt+JabyoUU^?hCP|chwAxU>Vb=*~)*Bx#diR z=|Sf^?N880aHsg&ucRIkGFIr?Yc+zZK5Px*Jgg zL)DQHWq-JC_`V)w*EK=<){50=9!+(K5Y z`;Y!gQGfrAEi9wOM+YBWixZQBD-PaHqhM#c3R7eveHs_#P4Z1FaSEvby>T|YJ3TMS zE@#a}?j#`7-{9R9GSM;UE~Yf-p2*>LaUAd85ulx0ehPwp#Z%?GFww^u!Bet=`fVDK zzfu(LXHJDu6yH;^h12QBjNccNTF?7F82uVu;(vM0`G=3~?)Y_2zE7-weydZ%8}8XH zv$rcr@-Wqr`YqlQArt*I6C-6_NV<7lF7xOVf^g-wlw?C5DK^QS64OW2DL4*(E@xTM z2^8WvVsZ;CDDXhZ%}&YCfzs^1QHJs0_)(gIVEFZHQ^LzT`i7@VEGyE<#k;)&H%TMO z>@*Zl*a9Xk9`{ssV01D^9YzRq^;qtllwPoP&k_26Q zuV)pb&HhLTsI?lu+=do@?GqA6JK4dMzOqYo_|gwVL%t@n3)3GbeZJbIRPe?m*DhVL z>M3+rs0G{-;j+9borug0G~y1rE$Jq*hUw#A0mG&uKJAyKf~h$8l?9fs+A$4OVl!qL z;vucC;kj9d3CV|w(|%93a>yh9p6utaUEg|t|5ele7-}SKxWC^aYM?5M{LYg;b>kZ~ z%l=QHs4l(10p{KWBgCNv7uqR>_x`Mg8=i!a$yzM?VVq-mL&6+$Wqx#nazO8z2|L4$ z+bc>Z#5QjkG(rqnVNO<#~Ej5Q|$V}9g649dUWgm83_?o^Z_ysl2kc; zmJ0as6gA5a9vrAXZPk-|fZ z>cb}4PD{2NeWAHn;HA3HCG?pbsZi}X)Dv=T#?QLso{Fz1_Y9*L@le0!PP>a;Y;DSOu^EQCn ziWpo_$hM;^&^Vt!7xp6Tc42mv*NkMp*!y6Ad3Rtzwp-zZwsng6!TrSr*iP~I<80>? z??>dv-YPTu#FZa@tL6)yg@%|&n<;i|^3~TL1?Ac^9=FdVU7{JaPV%bX_lhoa8c<+Z z6s5a)htSsQl5jRTM!X&38Oh}AEvI78rXOo)VO~(eZv3&I);{D2!tp$u5Q7{39*L)R ztWUDLiFjY^{1(Z%^!0shBWtSFr4~7(IEBKQ$EC5IXp5nce;W~f0PfuGsWx`w-`AUv z;p6|g_Z`vAKD}!^l&o31AW8?u9uTZ9o9Q(Dd{$~nbpFUjk}8i2y?sGs6?+EzE= zXxCvUfABU$b-%J7IryibTc4cbWlP&gkOqI#Z$I~TA*OFJ$TM(9Mcb_6OY?>rKuuGe zG!a%0G7v1w-@AT$=U_d9{@m1(RN9fH((EayXG-XaGV9^XW?aK7Jt^~LySId3WrL;B zgc?zvd3vatJXEgn)gNrSRkuBbGsK{$3VmOMO)(v>qWQaK-B= zY@s?2kv3z{WL{uSrgdr{&z*wMJJbTKuUuL)u#ZP>Vn26Bc=bsrh8%Nm-QoTqx-x(J z{qA5&NGb-4)lSi3H^}s&q}VZ7fK~zj#TdKzclUP|Ec$m>K6r&GFfOx72+?y*5d6&JUd@voa41y*rN__-qN>o$j9`d9tzf6IXb>c#6-vf0xHj;8gp$ zezigLO=ytJF~yLA2Bb*LPrwEZ4sPOR=eDzI;(iz0^nOJ?F{4Mb0!UP*gW^GBtAaOx z*rbL13cxPopg{n;C{yh_`B0-g{}pa`zSNlA?FFlASGccn$2t?~h|#}U^FR7%{C0VY zKYZ!bt!pSW^6p%LF?q*-y9YSAoZN)Bq|W_bT~e$k@|}^ed})3@3C)~G3rDugR80ke zp+c(NO;A|s^==;#)c+x2N$YLxAVQ6_s{S2GBCq+j-y~;B?(5{;OJU?Z8m-U3^&c)a zqH?`N^uIt~=}`+JG%{-xhv`pa+xXwID;AjHfLqEitbkGhW;k>h;?=K?GgTx7l{}0m z)a)A5eaRHG8+8UpLp?>qe}6r^l#Yt$UqBoHzG?lgNFEdazV@Zb0ilcsIwPJ9kQsd! zmSDXsd$il0*vhmNhMk3W=hs z@~(aB{RoDUOX z8?_0MIOGVlrnam;u6D7OqKdHk0Toz39qccsg177iP7{kRG`(ju#8*4=8}dB+VWato za?i@7=A-Mykpowx;D>b7S2Gf32HP-h#XJO^`^E^%!5O&00LncuCVGt%-InvJm9Hw{ z+&BQlWZpzCwvmn79E20JL{#_Gk?D$=Ei$|pW0}Usek;?YjsClgO#MEYt6>1KXQdVP z0u!2}m7g)jdtg_kqdN-DvIr!7{xs^G66&axcHQ0;NJeysc=+M4XS=hpF(&LMNaS(S z-r-W(Iq}i=GvIj{1IUA8&LVg6ehJIsa0M{f+h&vewEO?4IH@qM}%UU zf>ME87d${3fj?^?Q0fH{-4t-Ek+(Pb7Ki=acQD$cORLiX)o_#vP0yXlTSo z&j*gJPcR7PzO-^+^g}eO;|CW#wP)33ovu3kxn8h<#!PF6{;h!`UUg0pKO*0T!e_6y zqBU75F^HyFe=0FWs0t@8k>Is0=+f6V7g>5fw#OMhzf^U&Gh(wQUz8x9PvbdgpvIE& zC86MhdX$ImpNRer%K3BZx3`22URfIBs668mC%z?&|NhFW5p{g@IJkXU489`=H9yae zKeRRw>)gw8pqVr|bW(`VBpzVoFK(K6R?bMdaxxF9gPY z#w^Jv`Fv<@(|J?ZT~If6o97#a&hLYX9Kt60ot-&F(GVxDkPlLG1tWhicC}-6UuUo1 z#<%jgIqLjp1k2&rVe%7D)GtJb#mo<}GK$)kv+^xm6Wzs{RvPc;Nx!AtKcSNo8N;Z4 zbnSQ)&?27n5R#Mj!kdTa)2 zCq?{3w-vf_!niE3>AU1lAa8JQWXetIE;ttHej}a+=9T=<9V>5I7&BSWzkd*3eRANR z%X%KItNi5Plev;C(p2QGY8ber{d>ap5@;{=l&wqirI>2I0HL&qVq(diiDMP}3?Lhi z9(8|cx^dgEW}ybK2&;H>Qb$>O*jUd&9Y%=dKuJN3s5Ayuh#m$2=VnRA%jykGbtbUi zuJ~?G(u^dhG?SPT^phBP1ajJ{fK0J2s>K%__$a$tGhQ>(mFB6~87xH>c(Q4WQxB)S z*lxIvVDR816V5v3Q2}Gfp$IphZ&_bM#T(i6GJywN1bP@`D2>23C{=AKvH?bNTkY4t zAeTNm=)T$?I2co82_8*9cw~Wi{1(JTz6TW9dytj~^ZGx@;gvaB89yfkRm30h=Yg(l z!F$D=4!3s10atW@IQf^-m6!h55OL73qII3E<*m*A8KKUiFjqqe%-1GkXM(5K4W%@a)q(SDai zN1~hall}yAtj0yiV}_tqj3drU2n3E$C@~)$7UO$xA*lPOLJ;&&uPe1)fUTS%AZ5X? zT9|eq<>1G5HE1&YrST}%VdgQ8GvldvRubK3RZ+@W&0Lm4W@nwC6SVo%;}+U8WtUU; zX=@f}m*~d)I(G31Ef!^Mko_60#tmdBJg1Cms-4U{?3K9&NgZ7>t!^*_(XA-4(Cm+x z(666&67rAtjXzjm+V?+uNp`P>R!^m6GvrL^p`wu89Z>>LjYV?+QE#RU36ZckR-Re8 zTBwRHn#Nmp;N{|2bZ!#}O zPWf;n4i6ZWT^&z#LkHapu25({RLC#3u0TJ@$DY!6l`SFpN>6gf&*xV%6ZflKGnEn| zZtzLv!?<&_k?N1B04E9q`qwDr&KEon3Y>xSN!@%|-hE4rd&BO2WS*~io0irGU-KHT z4e{MQ8`r!l`5FScBwaKT;)-gsPvcMSXC&;??6|MnTbWW& z+J&6Jmcy&URcVSC)Bot8XXTK*RGm=vKlmmNX?I`0KINt$b_p%>{i#4sC&x7v{U7fqQ3dzv$1`GcIn`C$5K*g!d`Fg#Hw9ie3CE zzkJ*$MrP$1>UKg z6mz22DRUJDq=yyscCrHtW58Lr+y(e;d|!d(2DI5iwtWu$dCz-*ZX9>?>b(8Prmb|1 z3_McR+fg2=Hw}U9wb5WH*2Q04O4LXb-IvGFRLwOl%x^`esdA;_r_Y2nMF~k%A~C0* z;l1@PZ!DDY_rlab3B7$5sF6_G;&#n`-zWnZx3ijE5fo(~D0AHZPRekM z@&`cCb6FS1Ko>37z@#R(!>BAI84(CRnv(wB$UNtWfWxW6U~`^Nr>QsQGZKD5lb;4R zhsWT^$Fy+|UGRg`eIXS5#3^Y32-fwbKH5a4plYXqsa-umfKW!N(h$l_-_?o@UX^sNKTD-SQaBT%n&p&wiSbTuP4)u3-#Y!JpnF#`yBpApQ14= z7T)Nmhe&3pTQ{SfM*!PL9T1!t_m3QwZ<|9CVMLI4TU$t47VUEKYf=JDdOH=QwX^l_ z;LA7kCrB2mNq_y1*FcC(elZsoX*dY{5Ts0`JB8`XYS_M*Onm0h`P?&y&hX5*T4M8s zh(qtLY6_?kT4n78i?`)St3OFvxH&b7(jLC5;RWpKY+0bPhODamI$yaLhrCSAa`v#L`pd-9d;XH2H2$y{QO^2!791h`rX*LfE2T;1HJ*i4 zdT^dn>+5LhsFa#{Q^(~J6M9;>$4UA$KaWiK<%sVzbEFQeIuoBlD&4CGjUe% z;QUW{iQoLaDO_+r1j-Zs4>IKip!tRcFW@)jd0Jg zU@{#0j>MQRVzR?M5$t;EuN{9tYi2O2Te2IDd|H)r-mY zN8Qv-qVC_JKzu|sVe|fH9CUIuR;^~B&{ck%Y^`PF&D-Ph+;|eyhd&Eaf%-6rgx(#C zFBErA^H?85C!KORJE%F5{Yp#w$7+-YzbGkqRfX)oPcKs$=Q2m(+ehin=(j-Q8LOjc zMdhaO1m8f}gcXB|>rAUAcgMPoM-(Tu_W0(N%pK+!jgY}&$txd*uHTqPO9<-2QoG~( zbIhaPW3y{#i+-}jw|BvaGc9gJV9)Iv?wR_Xygju$b|0)C!I7H?N3LO5%TJF$I+ES` z`bXyH?~2!ivpritclAl_{A9?E8jScc!%k|U0~bM*m*?+(!TF1x$3eH*RNc~FWnWxa zcOl#yB7v{m(T$~c-?vu%e(Km;WAG)N3^Jy;$T1!+h@I)|8xg#<|3b@wc;EIm_!7T) zQ})Wp%;@JEs&CAMc2oFFBsh?x@_Ho!MV|!6Wu%KjXl35D1Mbmq%wp5GN2u7IYErA? z3io2H6gZP|BP zBoU00HT4zz`&RGm*Zmf&sx;CwQ`eshR3X((mkx}{m7&m0J&W?ReRWwlVukG^TsrxD zDr2fEnek_rBfWjPLKi4@T5vS0`Rqwk%?}nySaMLqpE}FC)bo0rNZYollO95bk3QPn zM*bTZm+np%-#d(0xKPDs^pUyV3qMIpgEKG#f)OJ8)_;;sL4|Ip+B4{^R?{e^TPnnN zBSvT6@))5~L=RK4m{0Kj@h$qo`*&lunRhJ7JoQFvB)?`vp0tmZg<$K2^|iuLhH9?9 z_tj?)Zq%&%f&^AC1Jj3fLvgu=`i&aCO8ExKx6suNlCshbrB~i!%E5Uk<2gTue1)y5 zFLJzd)Ir7aLnZ8d<;mlZ6>#nv&w}}Kupkqdq5FsznWawX#l3W&%ZY2{$(XmZZA)qT zbAT2Tv^RI4B!x6TB5zU?mN;SdvJqHTN_bV*+Rvko2FH^-1@zS0&|ew{T5X8ap+|fW zo+lD_9#J~pSEb&UqDApEXmYFsXI~{=oR&JKht)xnhM4Pi1ts1t}u5YYxO*mH$Q;v}HG27*lM_ zjILiRwyG9!=4y-*!|9st6vR84N}m#5IcA2IfaN9Pe$5!|yZ7ub&a`*nuMse#Xs6b> zP7`l5r##oA$^WHaQnTQrY(7V!h4n`7uwmx#^%rJMpJH|N<+K;Vkw3aQN@TdP-y-vD z!$6_2;hxt1{igYdJbHYlqh3u`DN$R6PD>6}yqPmE(=Y<;eV3zD{hF2Qs)Q9aFH{`7 zcb{T_IIxQ^wnln3i|1~D=0QK1#YIW-cQjB3?!`@l7c~N{waxvL;_2Mu zX!h`v7Ov0X4HDViBeF^J11Z&I*CMKBb^Ii6dWEAhZdTZaK{(A<_hei_?xH zcEQyb{Vllqf(b4os+Q5&e0L1Tht=^c8A>z8pL8OS{k_T857+j6Hg&}oB~Gm0O&hV? zmUWH(cE5MSZ_x09=n#CZ!R#Hjo(dd)cn}W5AmuNXTh7XdSV>aFT4$VDNMx&`8vZ2D z49I(Yj~Z%?s8juCl*0CF&!zbKBzU;}Pr2&YO>F2yaX8e2>iF&Tm-wfz%Z`fH@mvYF z4mnpe6q(~28GI%PG3j$rFm{Q9=r;_c>i3I6|K1tX>werR8UZOe9_yz>de9c zigb8$6V+NovADmg*0W>8AqehPfB+F}v!T}sb!pV3BPZ3yqG+1xGJmmAyHeJ=CDwa< zB$v(rFMfoe5O7^Tmim>|Y+k;fQ@k6IFQ5G3zWiGyuCIg@A96@5(49-9Pogp-61L9; z>!6=_DB_8nk(oWNa67wRIy6wSGOu%k?;mq5yc*9j9&rgX+?;m4*rm*V`g0fCOSzlM z34wU2l|EdlmCgc(eypIXNm+n#^-g?Ig6Sf4*IixgH}iTSZmH{z?tD3v|58wu`@)}3 zZEvr>4>QILQ%g6yLwFFN*@2m|IXCt44{a>&V~|jb5$|tvU!FSll0$Vf-pt9^`hMZ+ z81!dYQ_v07_Ry{ZP$RKn>20Z2z5=I~0@j3yUCuxqkKS*UBI1O&SkdU@ThA_$hhI*b z_Y}hc)|`HQF-9QU=-EcR4ZA4*?|VH6Cg!mHqBR)p=tG~#1N0v9q?O9U&1L5SBb9P< zB9}IE(vE&X2$$8UZNfZ%P3b`MR?u(M|*uNT|^-f=8; zbI?{K*(KzvR^S(n7MCn02l7n!mvu;z&)1ZQJrau(T2<@mPAD zX}RljQiDW57zh2gtN@%ict>s;Jb6S)gbLw^P$3*#o*uqz68!5axr(62l;kNnasART zb}M$UqlglGY98PBTVL1cA@sKt!#Ae=TYkn)iI>l+tMR8;M_MXR{|v*}KOL+2ttic_ z$9uBz$cnGUjFX}Hn>T_PF=Fi0(*4udc~`a%H8rO?*E%>03SEV*q|U)hn|__%eJV8K z%Z5x^P=r*Q+?G^~xsIxle=*VTPhVsYRD?AV82EtYz{!YeZ{;pKVkZ?HzcKC<|4 z1^{5~iGD-Y!fAd6{T86*q>IU^cerpe;_B-#>&rJt_EX||mI`F4e@eJvSd_u>Xao|)2X_BJx3WFXb^8bwQ&KI<5g2;3UWmMkNxG+nn9=wUmG~j+n0P5`^UxNx@ z6nJII;@*JJ-wm6!SJ@(QG?P;NR)JS_lWNG0TM|g3%Jdz*-~Ywd<^Hf9N1GgoR^OK2 zw}}SUEYWXQuIPoq3ffN6}Vk66nT{r1=S(RE2qt9~!(DKG507QT6ua)x{Zq!D(LjH~7-<8S8#-QxwU4Azy=?$)p73D`1%YH_F zLkZx#k?h3%!_9Jm_!{nGIQa;lChc_c5n4~-2Y?R;6iI>57ApR?EkufFOv!T;#n!8M zp*uu=T-9(~kVUbTqg_)PL$eCTTDN2RU}8Cc{Tw++n{d-|>eamEw{mM8I;sF~dK+$8=NOi?|D_DB0pe?e>3 zEb*l7Tj*d+{ke-(85*l0J{VH8M*G;b>YZw;*X%TQ{BXr@EkC%>QfY6&^`SNhyJX0C zrt1FPW&Q8`kZ;Qjg8}Q#b?S~B={!1vROd#1F9X+`+^F;n9iT#A0Dwn!J}YQ>Q|pFF zCvShvuiX&I8ZWRfiLb8ZXx`Lv0KYCKIAT#_ul)%}nWdTp!+56m>Ee?})t!aD+_}=P zKCp9SZQi&+Q?)hd;+&^&m)wY4-RUf+8?|+StM4A)UzF~6-GxChy&``jwY|mM*{=m% z>1T;s`9HbNN>{i-F{(?^da(4x?IbMS)TJ#`uPa7blU6RM-z>|oFm;E>T0gXBAxBng z-FK!8vtcGF@%f#(Z&^h++*Pwiqzfp503M1UPz#F_F1dsQ8l^=KBizCoM<;E*-Gx$Z7>TeMb0D7I>Myap2Rpn+I4Rc z)q@i#2t7C~sL_sA#(FLNCE*Q_H$!H)YxF8@#^wejaGyuMf_1?4W>7aKI{*!)PzMjK zP>>>ld%;UZ)s0>`jYKUx5o?Nf>y{S5KK#?GsO>B`@IfPe8bYpcL2?ixc+=T<_v~ae zyMe#@w_+Wbk@-609o3XfmD`_R#Z&SqoWjdSEHaYTZ1{pFLz>T9o(Z*OAvF2uZsYnwQV{--uIa;CY0bKi++dYSE^SOA?}STf zs2~IJ<|!RGA%niMI+I~3orL6wB9mdoCRK(VBVeGP0WD|3Y)d@-nM(1#XG1z>{l`Mt z$pJ4S@UK?F9)kWvm<0VL~N@~6iFs~VP_A_uTD2O zTMFM5oNZtYG}w5?vg{SE8JHa;-omaY;Ae%Mnk(M&hZc)T*~Us1{VwTbmqH^2yHirY zz+P@&2zUz!CSr?|*xrG*@4wL&0a#KCk@(Mo+*R+P9Cf2qyZr9pv?QM58h|EPlI-0u z;jT_c-W{FSv+tFEc8`=Bji4a%Z@xy|o;3gbH9n(!k-`giSjoUF2|2AnYfS&;_6je7 zpi$gLE8KtviB>{Zy_nNUwsqP9CpW8`haqQ9tPQ2125O$LJsM%M>N&8cituJP#-^a; z;dKuluS|Za|4WaVq}T2U)P5s?c9g_bD!$h#TB>s4#H>*SM3;S)zOJklgl>!{y_pm+ z)+fs99$F@qsej`}fvTk&ezlQbv@Z%G{E!0_@=yh%KAnvx@ zmL&*_ar{tk@P+Rgx24kA@Ue(!rq8SOm8{|&4%LB~kz=x{cQU5ftJ~&4^~LW(_|U>7 z@L;z^iX9>i93-fv5nV-PD?>`VTQ&DHGDLUWNzp76>YQwWk7ge8=6z{Do&&XkLb-s+ z9O<(AuL{h4XMXJX(yu*zEmkJ!@@$Au_9I`;}{;rj`>osM1k`4u-_7Ti5wh^gnddI^{{ZDRnnpg z-igSVOQw};=-YYK1hTWJ(JWYuqlj&F4jct@o!fS#=?h&i4swF(mr1r|L3E7NpC8g? zmvA8yAW^b>%i&Bv`&+&?eA8I!J(VWYVj6_ z>eEkC%+-zWTDB|yN=Qm@sB~SP{&cejaDlp}>PMX9?)pdMt7N@}WeB?6dW`sj`gPnl1cZ-_AcG zmy_E4+A}9dWK%oRzY zt3_&FAi}!|G>-ekn=?+2?=<2Dyak@zfioKEeWQhrynvV@o6b@zr;Nh*y=Mlu$lRA% z48$LhzIxo}l5xXQMH}In8|(J#{E*c2WP&H8_SBC!iAt#rG{F&lyWRL|hI7gA(T6sB z=NG&uv7@+?Q-`ne=^k}Uf7z|}eC+ZQ>s9VRMLCu@DQVLE@VhKa=BhFX_$O25TqfKI z7WVv%lzkIHzWI|!KO_k~Fj}mX&KOQaL?ei97iXj)NeO+Y1c6^n=)UA+itW8E+~h-R z$U)HZpOOCzeXUDp#g{1{Jcl6VgwXrF8|2Og-aXRcx z(H4&-hs(D%rV+t%>D^Ugv5Ip3F>yt8x_zN<{NxdyFZd!8x@mUwn2$bvnkw?(n_0-? zT` z{kfO`ilX=JYI#)OPvj92p{Z%DT#cW7y!hQtxpAoG@Z^}F`eN60tts>uwZc|OWJ3Qx z^S6$(@oT#;?yJ*z#cEbntsMaT=@pBDKQkd#gG(zBo6B9Bro|C#Yc-E(f_qbLO!zU@ zU@IiBIE~691O+n8k+r<~g}a1-DZHqlS~ zkfSglBffOAU=(K=>~HKa?KU@9X@T*Nvs|^_)~6L3J{cZQvYN?KC&}S;>yPk9LO?); z7MCG`2w6ew4jyNvrP?U)NAj0d)u*g4{8+ET{zaxNxIEL9w|!yGPuTdA!+U|^z8{+&Rb;m#)`h?Fp371 zL|>)%y`_;Zf9E~mJS~{{5L3t04#1I!`w}wrnBXw}(nB5>h5(Gs-K%RCws<5J?n(Vo z`ZYsLXyHj@c2{{#RwFo?w5;bc9F8(?`{td=gf41G2aV`jP6>`Jd*x3!PD|i>`1VI7 z$kFad;0KAGT?i}#sdJ&BlhNEQzX5k?^qwr)eF@^6 zt?5@yNKMMizO^b>I;g`_3RRXU2aU+wbhW2_sZ!DEJY0{U6SfwWXhU^vY zG&&nUmY=39zwZvc>sbhm;V*=c{Ctz=y-8%(p3Xt*8Dz|@|B`38Yztv#G=5$UA}kR< zPw^d|PYV4rT!fUN6H*3-(g}BO5A8YQQ3-IS5ER_H{5m>C9f2pgCPUd@okckx+B*EX zGs+i)@r-^6GMT{wF&c^`>IRIn6_&|Ahs;}Q;!Beuu|E-9*hre`ztHUF{9<(sA(*(u zx%yPX3t+h*L3$LT+Rn%9W2N*ISlZmpdCZ1(Q>Sry%ihzaJy<=qCxs+SO}cb#iUNR^ zMZPxsKuY!^Mw{nekW3@adz3H`N*THPBglt>37f<6>)@yYxmRXHkGlV^uISh%`40we zT+*bI?V+)P-`YrC0E1_4+H1SGEG(lO1}HdMb|`QxkIE3FUY6IKH;m7Q4j&hNg#zQU z*WLN71LoDoujY(~gn*1?h3$f44)^6(3tSt<%vwYn=hQ=QIur~@kdtv4>P@H3Rk|X) z&rRS-w@3qP-%k)b!(1dbfXmVeLF22s=JEj2lclmJQ_I(ND%`1rXdNJN{_td+n#$N8 zIoudk)*3;q;_wAbOs;KIO|D}=4*h>Y6uvW?2h?xYMiEDE+ZtLbym?*pTjOUXYKK0| zH5A<1N*d;_D`|xK_kMgbS zFQwDb@P$X96Vo(0_~_@A$A&S7`f<9_hFT9ElMFkJl*D54ZO*AY!=MH-)dCad&%&DdY4#0UMjn03vJDjne=E;V0Qm#9NshAG28$%< z0Vk(Esjli)QQw!Kl&-PvH<(hLJbNw&w#uxAozNlKN>LolYpPSGf>`EnWw;8TCybvf z9&JWQXhsElMu_HaE->cc3*&-3c=;=~QGyWhavaR6b!|=zbV!oOygX4h?+hS!8zajw zZKS{XwEe6I<J{@+2>apoYqKR{oA`#V|BAY=%*U++qxljyThK#9ov*6E;X8+fZ$8>$hqgI8GG$o5oT(OX8+xMC z&MT(P{r(!uIQevTvU{7ZsHV`#IY;3xtr7W?{~;^!4gWu~!nJgGxn{WUI{FAHf>^5b zaZ$OmL;$b~nQxSBwVd~OMSs}13~@YX_^Yz2;@QDqCKpdRZx9h&4+$S`X$$=v1))KD zdndapGf`=fW>ru+I1M~Tb(K8%$Ap4QBe5BAETQhgXO&4|^#DNJihf9ly}If!GTFha z;z5Yk(e4Z>`u$%MI;}V+YlC9DYqbFr*_8D&85gq4!eZ3bSOc3|*w{2m8yja`i=ina z|D87FOO}gKwrRZ{)CzlGvbm}8D%zBvL(;UkDC(7Lw(MxIB-13iNt?7dfiJgeifJ6qms9&ZmF+S5eOW zp4{Yx3$liq#_+QfnVeqCvlEXAk}YCYi5J4@R5^c2u1KIt>V&?*vY&CnV6XP~p1?j? z)^d;_Js`F0(%+Jg@dhl36Xk>oHt>uY>kFe$l=Pk!nu@+}(^|c6G2Pu5?LOeuNApG1 zK~KnLyrr24SS^`s6k~_v*H}qP*kc8G)eJ`Vrt0w3haHjvP?o9LD9copI~a^y!jXw> zt>ARcwt9Da#9FJw{qor-N6Idt>#&vFw0#T@w~^*c*_f)jaz*y*kY@~Lyjfup#!g37{$mKLA@${W8g+brbtgpU~MzI9t)TSE#F=zg4gnD2DI8Ly8|m(bx6b$8cYpW&^**1??AaSW%xBhKYu417 z$uZPu2D?EA=k#WdNz0A;TmCM{kyqr5CY4m`c}2?4&Cm*maRHAC_$CJz|3Rdl31AEK znnp!lRZ&4$R4?d9kCHcu(6Uoco{96FJ(A_43ds$`AUu7IQt+Ah~C^Fgv61TEEd)q@(AwSSUe6 zTZG)l*F;6cYC0qgbx6;a1DwQq4^Y0V!%=mM_J0AnE3+6GCA^$ZQ!;B~M}2``_*Y6h zs@?!lO@5qIdAiZ*AScDGGrt&3f@<%_`GdF2ICjmMZ84J<>w{(AynY;5R=EB}SDbEM z!t?~E0@d_aqkW&614o@LOF1ZUz=qmY0ebLbdAjcz3@ennOn;ztq>df>h@(=1zfUIO-dl zOv9*_NsGiKx6Nq9wkDh&AYb66z#90ZIzaMRr+GL36D!Ud)1m0-^E8n%yBWKEDo>FZ zY#WGWFtn1(jmn2)Hvfe2=kPX+UI&b<0lJ~-0TKP}` z&IB5mqD1T^HlQOeF~R1SchP)jGX{VlYMam*!gTVjQ<`)WCb8>GPX!8v{L^bcTh{)) znQIpN*{rAv3~iqE(;RLumLqLu_fHthbG(-SHU85lzd54>4b#ES4h4q-tVrU4IRwz; zKnZiR#Kfr3We}^>onPT#-^l^FrHOSH|LGAZ1wN(Hz1OQZ%fol;`9}TcJXxbH9gf_S z*bf+;@Q^!70*^S2gR*H$vE=pzp)f9 zIZ+ECT)OH{isBz{DP`y*(LfrVC`h9VZLOh<^70I_Adf;lQ$`6~jhcDOlWgnB56v=M z5))c-)HmsKdxaip!`56hUX2$iLDv4}JY#X-E%PyWv4l#dt3gvicLC`_k0EQ;vP-ic zZ7tL^L7{_s7X@{*6bzH9($S*MN5B{V2Bewsb~()AJ)Hy!TOH^IFwlQ7cFDro6Z*yB z^<5u-s71>FHz;>WAysj~`3fX{QG720`FWy1@%v?A*I0%-0l3q7`yI&dGaXb@lL?T3 z5lpm7VXxpVNAgWk-ECQ>!^=I1W|e&OHz`EozdUO~RBkm~4C^B1-fCmIkywL-AA&Mc zg753K59aUJsI)6;2@+pvS)8qJsu|korltpyUqQ-Mw<2*(U}6NSQ(h?Ol(+pnI0Q#& z6!UO5_3!b9WGYi_YXK`X=s(jPt9+eKC5)7;*2eP+F3G@5yRq{h4Thfm-q(zziXU2BWI!f?ue`=##0& z=ra^3SILm~j7tH(3bFekC=!7_Y)OIMX2Xj8Oivy;EH+CgbHB9G9zGxVfK6G=5>Z-Y z;Y}~RV>SP^qj`}DoVsf19i=6i@b0vaDaU81+-hw`F|!S-)`zz?_XSC(jK2V-FEk$L zQZ?6QONsjFf%?EFo_Jsv+6M);z*HD>-I1NStiICZw7v4Yin}TEaStlMYAu5df14Y13a~-S9OwU=GKcCp@INVYS4JP=ejmJc zr^h%CY;Gu|vi7_AFXi7ybS;Xl=ldUfH#)Z`K^f}hMwsd|mlt)j*C0Y#vg=TL_Xe#> zcL-x?VWaV*EvwAaP^Qfb6}E{_MIW#qH!S7ro_jGx$W;Lc0QO_RBS34fpd(I$m^uzK zh5^LNJ5a1qr{KXX{9U9HdwJPvBEe%zntP3)mMtf@jPAtf%_O$NMyo`DH6q24&ZWo@Nk|k2UTTDvxGO`cfn05 z2gP@G>t8ph?E7U0RQA1i+K&tr1P#GBjHoc&{O-)+m`77u)(_bSP&rhUgAwp{`Fw@d z=}$%ZzqFQ6`Z>6}MrXtNL9ry3AqSAG2J7d&I`G)Y{PvdnzcQMUp0a(H#Mrr>1<0R3 zAEQRKfTid{wSdj0_$Ow`VP|4PmFq8oKYc$aV<3DI17rP{++muVK*8GY|2=|)q+$H1 z@q639KvDJ!JFPA7QLmEu)LiUEO$;bP{D=3-O`w7Q2hlHZ1l@>h_WiJw_Sf0(wML+z z&R0-7>=m*|)O!B%TaI&p>ukp3jRK2ks_t>c={ss{OZ=ZE)0MeaRRgc%&ML9+v7R1| zqYp?8i!Qb6M;2|#vr|JI^`az`aBUlwtlL1CW(nIC)!P(N)5O4+8)?pXavi@ODvax# zJK95;f8{LLIKFi!)jadj2GuOw1*EIWhyT2Z2YF7bM%Mr38@gzpsto>p9pwAu`K=Kj zCo!gp3}Jy6Y}Xw&<1(b4uN_^^+-UgHKtC&*QyBs(diAhCK-*w$;I;*i)@GNrANdox zT4$w+J2!`CDVnG}{f6reeD2j|?b&jgQ3%xcOHB=bf1b5I1t%6+n@((+xlE%Q#jTgP zc}8>5&lI_T?m}$%kX-8GRN}x<{3(fK6Lvs@;Y%g-X3%Dq!vW-toY#Q75z%{*;Qh9E z>yez%ww2lia0T%F)mG;#PZkPRAghcYTa&~~#mdS-`hu!DvhMd#Wjo#Jfv_wQfoFPJ z^WKxrbJNgJ4xYgQ3%#9$vCBZ!mPit(g8Zt?sJieFN2=|i=?a|T#%;XVC$_=Onp$=be_k?u`0L$Oi+n zu1)A%7qxyjBPqsCKJP@JWbM)S!nM#M_Sf%>gDz`!+$W8ColV&X$>h6wse&SW4TZm^ z&1M5o3QLyD|5st@pUbPSIS8CObaHam+Ctv4@AXOhZtvXNug2)HjXF}I{5Qrh_fK@M zMBGGIy~4<&?Yr#OXgcf|qUZ)HVg|bhxs7+krJ8ubTtP^LzkP@OStF2TxU7(a$YgI_ zRD&`IP|EmW#Al#-HUubTjSps*GXjabrsjn7>r|0@Exr4C1$X`L_*X&vggzWJZ4tm) zO5AxXzX3AviPy$5_`3pF@mc01V{=X``MqEV&tXg8&;}>j5lXZ$0SzS@((%7V3lwxj zdP{=vnY88{?&eW^M67hORAj$#G^=#Op?w6>RyycGzzwt}UrgK)M!`~dJg3>$pxF{P z#5Sob`2snPGZ_2H@t-CCtqC|dW;y%u5!AS}eIxHAON%#EE__wiUpiGzPAdf3y7iR` z;ZGC3{a*(bLn58ej!M3gDpLt-su~w!3!~EfXMu2zkO1X0?NH`{k-E8MEn&{;P@z-U20}&zgrDXJu#jL5a%H8tcU>T^rRhy&W+sg@%Dx^XU;WH)3 z(p;>;8Ex=~{F*kX^h@=g-lDPhHzGu<etD+R`sTM5 zwJ&NS-emscA6CZ-XmH;0b7|#pPp>< zqo`O#%?F!Fm#z0cW77jGB|;=f!cz0q6|+F~M7qAz)2|XoTO{jwwwEWJf38Q@uF6D_ zoekvKX}~2R^d6K*nnl)zXxGpgXx1ksNZj8WWHY)3E$wU^n%(u+SL3KJtl3#X@+Lw1 zbh9dcJx(-8VM%N40m+*&G4GvVte}nv8$U2ntj5kC%CwFT;zsa3wd((cDLYx=dZ(hS zStUX87=-jeL%;c%0SO7~heJ%Y7xaQxI^+RIJFB;8dw~*jRq4?L)H=~l7%Lv$uGNdy z?CdBf9P4CI2kA=^ad6;=BIF}z5E$7CLf!fIx6#hLRK;QJd{Vju#a#dOiT$?Kyi;x2 z3>R42^&$sz!Nc8?9SAXs0AZ zqom0>Ns8P`{VWjcH)dq@g&Lz%scJ&Q4p%3=c~;hS@~!Ce+v~TTCs{W!K4uT?ayHDw zO@;&A8B_a_)XM~TvbTXLYwtlNTi4#fBkk}ziRe4huHZm=^{wp7^It62w+XI--l1Ct zi3*1{Dm&{#0~thqZ~UZR5LYeEOAqDVC#i z2Nu&rcvBCf41)UX@z&MvE+4F4Q%K0K0W_x2ot+|5tc>?8l-dT2wtZsU_-|NpOmjSZQN-0&tL*rO`}8;c->6^SX+)c zZ$+1?rn*3bl8qJJo?12vy<&j#lhE%8%tgJ;z*0r;o{oDHvEUPTaAYEeG`E<6&E4l0 zXzr|Q@H_d4T&Z!a^oF%|peP9e5}eb7DKhx2Yvpp{gQsO*G2( zZJ9H6*3mdY%i+^WDQK&OqgUljg?`#>;!ZgVIz7Xf?Qkql@qB}kI@=@_DJ$*7L0CUK z{?AJ>EAz)r-evc+w^ z%|6Z&yb4qBzA2<=+r78kq>J7#J^04()iPA6yx~UN?tj6~bJM`*ix`j!9QKPhZC(lk z+34m{6@(B%`-Zd?(CBWrz~MbwzBm2T-REB!8q#EDN3oyn4dP@UH+o3^FB%~(whUFQ zmE+i3+`-glz7R_lo)Pq9d}^L z68dRp4NBJ5d%A4?tLsgKx%HJRe?@0Yll1I{?&zsSiaKU!vSZh{UL&dH7p>b=d6fkB zIX?$)7-Deh7+$xmc;+m|{^kdROyb;g+}}-k$RF)Cj=q1|QVF?6+*Ksjea$|u5rjN@ z)==kZb^5`g$tp2%!S~7+p}yaEBfgLGrIxX~hSg`zl72dN)%OWbxI?9hno0uMq@Tly zYVFr87r9!&bu>vbt7qP9J&9w=b-|lafj3h8dWB<2Vkkyq#qt|IC}iIAX29avv;Wb^ zOibohs;L#aBHiV$f`giNs_1>F*=_C%7(>m*Ab~UgCpfCnm9L!6l7x!ju+w`1#UhY* z7LLA^Guiq^bBQ~+ol}Pe9+d+ueNzsdyS&pQZ4Wq{un3$xt~_4MWe-VpWA9VGDa>9w>CPBD$U|KWBc z2!FSdr4sahFU`I|w71)jWW!vU$W`5B3EzgQ$aI}hL~%Sc z3dNPPBAb#f^TSPB1~s`^#&*T~GQuUM$;p4z`r9z~JB2UE#*e*yv9ao^otGA=@MN5a zNTxo#UEcpXY1hB3NL`YR>K zieGqBQYgW!!tTUdOMds*#z7c_N1T5@eJ=;8F8G!(xuwEC@+6>)z3u54C>*g^<0=~) z6B&ag*Y=cg*}3+%s)hsl!Leriw1$wo>Yr*&!M6;Ed4=eR!LEKujK{#(jYzpZ-3GTe z_rJc{@!|DkD((;rgM-VQzkF^12~lrMFL``7h{L0r2XIX)y&-fiIOmjeSNbZkzlFC(k^Y+y1B zz!w`gmsG!#{mUL6Z72KlJq&Q#J;cIBtnahPVa=Wyxy>^pAsZR9`l$xv*VAzagz=tj zt{B`u_beODpp{1u(9h(`m7J1}2ocs9WdA}%3(+GUwKFCs9d)ymoDRoL)wp=1rFJNsXprP)ZMv3Jv<>QRm;<@8w#o{pT)wwx!}1isH_j(JIbz z(V`ZLu3XJY9(l?Va)*AE>Ec^;e4z=W1RG?HPe~^DSjrzWAR6*Q9$&2-i?zLid3n{H z#?%cEe5<^md_O}l<@{TW-V!#UhZUl1KFY66Pr!7FFqzr7L_}lc%PBX7nScm z0_&@u5sRWt=WIEP<>#j5OmiQn{lb!KvTty*_6?VNo$V}}6cl3VSW-FD*EyyC)j^MU ztV=Q<7{)eI{Q7(5@d9_(+)yUPdQz>u)OnJY(1GO~iMLxwHv_6)Ea-JKISYo*XD zo~^xoc(M1TVblH*BEtMTN-CCsL1YW9mg$j*y50o_#je>Z@bbnx@kikV5_G z6>e{?F|m)}gW(YTzQHB$bJUjq@y0?%)Lk>_aQ5U|bt`egkj25>#skD;IXa5VU!;J`*#8YJmP3a2Ydo!?@KD%O(UrU= z*$G6?>utJtPcWu*3t&uFx91F$CSxP3p#vKkxED^O5Uy23!>tej2fRs4w}L)Fd_8#n z;~harylspQYo#8=)FR*%!Xc z4m=yoD>16TNYLhiA}kz3QQLLeLLxA80d(Tk>z^dV9W!cRRts(xZHSYV(Q+L^Z(%2+ zhiMK^5j=r^Wl33JZQhd)#Q~`dJloe<;5mr?B|2F^^!%61yt!O`2cTk8q`lSqlxgT3 z{-t+J=_eV4dyH4Sk0DB8nmecG$!@Lp&~|~YhM(Ev{vYk3C$XI+X@>G{c}rP1LF#Pc zZ&M?wF6_H%SY`}mx~@>S-8K2|*la&h0t6i;KvEVg>BStYzBVf1ymY9{*e$Sprf%Kv z8Z<3@S;FIzBt_v~Ba@0h{_XtKLFMlKiP%Nu`$^Ey9rs7M`czcp1M)zzz^{Telpe=B zymB9w1FL+VUkG4bOShR;P8EFS&01#;KI-`!c|c4adp{tv;F8(;I^}KVhkbX_AeCQb zM2ln02DUA-RY!G}BZJ?rd2Z_H4w97%c}nYZSp2>*<=B5cm(3B=f9(AH;qYJ#P=DU~Hzk&}qpC}!gopdH)5U6EQ zD6IwqOH^=XZQ)t98y|W@y)sB%a!J#tTm77S(oD_r0&0;$EYCt!>#9l1T z=T?42GHUq0hqQ2xUjmBn%~P1AxAk3$V-2?VaEg%S2jBKSmwZa~o@5L)NcGK>R@1TW zlG;HrHjZMfVTWkZBk;8v$HR*F$%4kF4W%DkLID=lX*ux*PsjzI|1t4=gBpUSoaOLR4l#SvA%iu@WmKO=kE~{ zy;&E*wFVyi`JKQdHLdU6tJt*>27cQ&QpFh)tfSV+*wHKR3)XygTnC@V=)^vUSiE9B0ej zRBiTaH;^dxj|A$?YA6!c80TCyFou+LMbUn4E9vRU5j%OO=F=puL7~ioFY=txG){o; zcdW!gikSYv9xik4ZZGRN)AH>3lQ4OBUwjcRjdKrsc6?a_U4#o5Lu-047LNu{t=eKN=@feB;}SKg9W z;YtS4omcSd`~~7km_hS}DdLz$=T(5194RjCJkdTeOt}4Q?=gjN8gtd(8-h5cT4P-) z21jB!g`fB)+G+*qGEQiHKN6R@){Hz^{NlTbw%6Fq_ zE6zmu`Oh#R^!|PLPsN2CvEk)Lr@FAzQD%O@OHY`rj=)Dr^hOP29wC&ET&PIV96KbH zr>|^48E&pT;4uGZbWr@p-!mcH0{&GA;n|Kq8#0GSuwn$ag|*{vgwe=A+VL^O;p^m$ z$6Le43?oS41d_C} z8o5OhZ&xz*K+ya}3% zBDv^6xtIf3_yNo=no2I3O2bkncJnVWnFz5^)t}$QxnHaIyuDcD@ShxifsRQD57w0Bj@l#q>+Dwi^|i4a6b zn_6DKR8qC0-B%#__!+ZNqa&{%ggJdb>z}S=&VS4`nFng>whUbpX$BXzzCewpz<;A@ zi8!3?6vO3@5*#BC@Ml1K6f)Vh&pc<<5Kh`IWMv-fh2Pi_3*|WO+a!aysuo$AV;6Mf z#X@Cupq4_#D2(rAgbD)~R8paPbS^TffvS{vsXSz5Hh;I2^piJIKZ!gVvz8+1M84>T zY=xy}#6o*(k=q{lL+J3WGP8=SEH~_(gI+h%7k-M`nu=JdMG{j&`=tJuS;QiIqb9sflNc@eF0QcRix1re>V3L*jzs9?G zaroqx$WZ0|=ZjoVzQNzzp+O*bcMudv%-H&|)#F-XrX)aAu1dV1Ch!@1`tXK#@^B^7 zqNGKVa1e*#YDaxV*>!KASoQeVt&l*1jvDd5+TwcbvCtYvWhmvR9ebS37aC;BRhL_JS@Cyj$*CTF!S5Nd#mA?pT-Z&Y%Axn!j6o zKYny2d)W@q;kcsf-!d;d?#SDM&lmlI=OmWYTUJdC&R6snfBnjoSR9XEguZF*A?=+h%dYj?yTZN2+a0xQ&DO*A zv-xnGrvoJJcM5M=*urQdI2rN7C*3hXl2mvCEIdImggO;!kq7yo%j;Dg-*rA3zcP%k z;kYqiMv`x(Ajw(CMJet1690_nbz#0Sgtg*fl;pHVLyKGEd3_eCIQSt{gv2ZP zGx;%h{MoJ1B-3I|hlh{)`u-e}D#kP>sxvlj*M%mV5H~)BHuhwm9^V|hCLT(z!j#hEn)uqs5(oWg9vFSPjyn@RB^jYB{fk@7KtH$I!{r)lp) z1Wl}dZ!*q~Y12|=$D*j1KYInXd+5aEEO>?qe$`;Ko zK7?isDusTPcB?C6oE9aVVsky`?k38bv1#?BhyLVHXjQ65*pE^eC-N=QvXUF;mM+kG z5>P2U{dvxtNQYD3g+Qw>wb`gQthXpUXy?%(_1LKkEj1zbP=R{<&X!9?LQJ&&udAUv ztE#F=gfBE(`sntYV}5-ihA_s-!C*D?^D?%EB1tIi2!=>*X<>GNNwRv9sGh=8!FSczS#P**CLKzOB<@}%Pb7S$yHdZ2zO>?_oR29p$gxxBtKXykmkr9L#C{m&za8;8B z!Nj-92FQSL{2N@W^w&&6=z;^nS!QTG;(q|GXd!~U zauI(TFX(ArDKxcFpd5L6v+8En$=m9R9-o?msZZ4teSu43SNqV4tpHjN5s`Z6Tp=d+ z`mGX+P;7QQ^DL|Tm{7Ulpd80r)l^YSx79~zoY+?BHgZJoxRxKG8A1dHgt9Q00LuBe z+9%p1IXR^$|BX2*PWp&C@gGsz%7C(phbA%z(vVMsuILk=Q}Fbu9Mq5)i7i|;h0c7d zE@bZVzER_c8440CTL`Nte8Sly71ndNs*DrL$DyfhuL@uJ?@V3grA~X}YOOoGX7<88 z)@Vx_2+x4=pc@(fpIhje&Mcn=?ph}kN2hgD;V1Q`>cADD2y8p?oINVwmw#oVFDoIZ zFUtvj4E8F2x?xniVTp?5fD9Ci2)LI}u-4mofr$ZHe3rJ5_Sr3avrDT|NH-0>U@kF+ zOM07}4TRo?e+bsv}v81+f{#r;@)Y&z)EhqP=4|sUEx!n^27g zpV6W4yO~U!OR!sWP8jBTXBZ|inM6>?x12E0u+1ycq8-uYGa41`D2gkNSS@ijuWSy{ zSg+iP%0yBOiOzPh4u?JMF9P|c)*oL1zwxrCMMceheS|pJQ0@2$)HUj3RZ{i*otQRGjpG0usDVDl@7H z9)~^@o@s18#k5@oyMrT`H$nrVSwgMRl?1j>r1&&~vK9HIV)kW*D{abeZ+9K*f|;?o zn+_Xs%AC2If7k+2X+JSJ%pO^_E*Drvp)W+gleD+niF1qk*j&L6Fihf-u$D5HZ z-PZfCPjCxbbCZ{}n;TKj6s2#BE_%BLgqsk*!0W7QYl;GBy|> zJqaAfM2LIC)tUq<29xT*`lIc^2dj@@9p8M}7|d7E0g)^W^GX|T>s<)E3TEz=KWdHa z?Y-F^40^%R+S|e3T5oP`L7jEIz9wcyi@~AG78Y^{Tlw}zh2{#QR}IExWw4$G&vU-D z3fUQCE`c!$Us<1>p6@c49s#h70k~clkIO&<5(x5%w3d0m*ZS zi3f>ix&->>oyoHgq2%X?F<11V&-ys}RJLj*=!ty80Jnv_qolzgH>778V#!5tDC7pc z9W!8WgJ+;;6B{=1e6F*oXEQo-WqJt@-}o&20K&6&e+V|@_5#L(LP7F;wsbz1oQ>XN z60WmKZ;34iJ`yJDB_?x|cm+&IMHP*wN^gg}997oSMJnPyB80?w8gh;wEv8d>hxr@^ zXt71@nXs+z=YPq1$MO#!oiiK-{W#*6@X-w+oC9)M7$}r;rY0_kH1V(8^SPAnC$l_C zj$r2F$4t4=LoL{vA!8Tg}$I6M1m(#fHFg&PC@f8vQ|5 zGDzHhWq6B20kYBFfZx`KBD8f2=z1ic+xy?Y?@W61(SSuP1#BNp06#}Z4Aey z@&!Tz`%^Pbd>xEp4ZSB?hUkwXltO}B!}SG(2LfIV!8BBY73M{Sa5a1zus(mPoEvJU zdpiJZz`Oa8Y zrRJS95JAQAC47h^T8TIsSiX@$5L;+TfaAY2ceD~r)5F=S_i~!Xy^cFk*DC1YsmGuP zQ-|v1T_RsZHuSM8c<#f)wkW)5!LjH<_y>N*XdQasV?N+@=Uj8ehztEgb&>iI;W~SV zByRn=+cE&*FTEPBJ)GzER>(H_FyY%AA14{RTrKZo~&}(fM3+$vjD55AQOX65Zw21-Y z*PYXOa&w}A0I(XOZ#-{?hgg|yqI!>KNYJ|N8yBYr(RQ*oTU{2S*Nr-n=Y|MvTvYNF z_vNjrU;L;ag1}N#1~bjFWF#17Q%N-nehqj3gH#A8L*LkBrE~j8O&`ReW8r%je)Gj@ z?GcqmxH1IuK&ZzL#%Um3p4Zh7bK`C^JP3R+oK^5~pero`NI~r&)quyWL>3jnsEL;m zjGA~UdvuonjUl?g$ARD`oY}bF$u3kq@nUj5eYS7WtOjasooh}QaRaMnf2G%1D6si& z414~@7hwL#3oAJ_*)qeMpmzTr%wuketiILOPf|MFf+0H>dRw9 zY6KR-vkkv`A45pEncr#z54#qB%i>MR%-bLFim5cLPA9bl8t`@L#$J1K5=CebiTfD3 zOC=jZBb=rp+?5SM{}S1kj>9B`8)V*<3aNs?({beRP^gxE&06%tCs<*DYswmF`zP^BZNOx|^Gm5?mJV<6elK7W_j_@msP;N~&yyFI~O&qgE*!EB*E z60AT$0cfN1z_%|&I9Z2XA_UkwQ>Vp!56JV}jQYkO)Te#KCeMptM0i5`JBV5@ikZ}| zA;O5MumY!MD|mD~Mnu?8S=^U$tM0LgX@e(n_kX@4I?La3BkU1>B8Lm3S;HPugrXqW zYGT2f1E`PLU)CUsopYacb!FJsM_Nn+ocimkA#=-|jB>%fWSOVsVa4CjT16@d%Xt?* z>tk`WNFHm(u?;}Sl%!cKTaShZ@8yvst>s?hC`eoEwJNEe$*eK_%se4{92$bB7?Wvi z#$xSc#*#m@IHIu4wVn;*%^+#OHN^f|Mf`tmpy+BW$x4q(i2Ab=?B9h-CrPKB!}nQS z7QL)7UO|mMje)H<);L)#j$hC-sfhw}_s$DbUoOb))PSBV%F%BW67ZLvZ zpny~jl6T= zC37EBbg8`;sJ=~Q}U+gM~Mf!U=JSO;{&y0-e zlZU}C(|{FLAng{|G5DO}Q31lDgHcX;otskmBX+rnD_uG71ntoSBl4_?9C$FNSPQ3K z;RK6Vh*cDye7RCG(*(stL`#ORVBJk~Jplpw5v=%z0NmLHg4Y>K&mN6GS@dF1yqof7Zf3_cP$_>#D}36qd3 zy+$(^A6YweFsQ-dME1bdlmE93b{O@Vnh@9U2jKHL;x7J9M)j&=7pVd&@ zt5IgUU6jBZiN9f?EV>z`0LL$^+&nl|gOXl{_ovQRO2QU^}Fo_MFfD`V@3oi5#ww*N}l!i~%o+ z0XehRH+C=JNon67!%k<%epfOvpK)83q z#}#X!NkX)FOs#IpXwu{;$OGZF5eBNfoAMj-rCO(6JyMPx6%({azLutpz!PNT&qtoQ zSkB~^guNgrKwHj>JKSL_cVV|HdO)Mm{JA0KB29lQo>x~g_qK#c6+ubcIyf`nhrc^! zNsJq4n?tbq2vedktJ4>l4h?h18v2_(*>X`w)V9zn@i=+hc3xz10j2(=b}>xrupqHE z^oN#H;RL04EQFnG5V95eQNZjI1#R$mqR`y0Laqemyaf)Hx4M~;zqq~vQQy&(=NL^q zs8Q)ui*e6}2Q9%I6a%5XYxR6@yL!rNiygYmy_TKc&~ zf1XECy-6X@eZWhbeKL?#=27CtMgk>xa$HBf#Xvjq&K+?gLuJ`C*r~tQ6JM$;LC&;l z@u;=>%NotfJH9qx35xHRcZFyuTbW`YQlhO(<+^CF1as-Ijx|tN6~rptRSr)M_$yLP zdaFd5Fa>6-%L~!ehqy6E=vHAI!UJSkLWt-i zbX#bTxH{OhRQ+H}$&aoMUYnu|Z{Yk49(C`rl-J&KkX?t9LT%Z;0EJZ8vRQvfliCBj?-Cm!_Y}`S!>J@ zuv~t+-UF5k3i6mgZ1qL2LVSm;kvx@uDyqjdf+Je9w_NN3MCKe+6u~c>o zM!Ol2++sHYqxSS%C&0jt656uB%WCYL`~8okW-cQe@m=N!2QD*y9-QuY{UlT|tf4R2 zZCTUYcv%($1k_%Gh5%IdU8{nJ&411p6Qd=~jOL`p>3R<=TA6m|zzUlf zh``4#*{#qNmF3LC2S9(6CCGwXukf69OZuWK;h&sR2zbN4? z<-ngz*vuiA%bSp@4_Swi3j#VH|N5Z6!zXYp+Y)$5Q~$INc~pYKM5_9!O=Fp{!71hU zjEunZY@ytD{LuC6oZj_l;M>)-t|I==<*UGbr(GEQ>leRe;=+SZ)r?m!oo&UCsw}W1 z(l(K8J)OOBjpp^6qw^(nx_en-cLsYxfEVOKAl}bnK8ou znK40rh$E#ZVXzL`0(^}*%c|Swa`VQk2tRDvc$)b)KPtwcw z?Nfk9qUWAJ_mz+$({e1q5KSR(=}{TRORDjUaaeKR7uTrefoG0NAr&lHzt4^)?u!K2 zZw+@<9CojXC!W$m?b!N(`Y$q?w)au6w~Q=jzc0QtEA{yH;&QVxg+u5VlS0U{l`U3f z`T4Q+s>9aZYoojDp>AC}))d!nXdV;X>c>?qO{)FP76>KS-`GQuKgU`qTUBdr%K|6& z?(hGw`K#DxVP7{layX7zl9*-+d=q(VgTOc8MhIE^hO3AcEQQkEMQj6t6!X5!U}m;ct2gn za?&(C&baLe%|r|Em6+ZOo(c-)Kv&)CuqsXY@OwbAz^Zh<>^+PhKnw`05F~o*%pTfm z)nW!)7KT*Xlcu=o`7;*GouP>J2LWQoc}`o3sU zWPO->f4gAal)d5~U8i5S@&J~nI(1!wr^V(N)T_6KbU`p#kF0(TFfir{-LdMx|&vHYK8t45CFWBrv`-t{6fNAn>;E1Odm(_>%f7gHbKn>2ozS zo(9UXzPZJ++Un^ZHXyo27Hxp&+Su1_{`U@(xG|oW>-mM#ClY=tI@VoWYFy&h_}vhR z>4o4aOfYKE`t?6Cg9*71t^~Kp^_^$Z~&uCRR0gZ_JAQZvK@ykr;Fm8MUKzF)cUGTPBXs({9B9aXhKua~SnGU~90k5{bEMOX zD>@>z>ePU$6}X70?IOQ<_T^QpQ!yD{YAxC@KXqNLp=~Bcmu`)I5(}hZP`4%@VF&q~1fhjru$Y6`mlG zXOD`E_w1c@U$DSZNQbAcO1#aVQtbqeByZBjyptgs`f6EnhO1Z)D?mTS1!6~4m~A#mXnB)xf$ zqU&kv1LxNlpF1uwG6yuOw*)CmP{x6Zb|%U=DAT7o$=}t_s*i>)(NK?cdPE=F1kOAh zyQJ6Pa@mfl2-^C3u8DBgZXOUlVQs7UHM{)1>_kXUwR`61I(0aP-;bl5<^3-Yq{vA% zMAul`4A0zpa6;ELs|0w-49O`yzi`Xskfby(WIl$ZsMutBLP7WkL35&afoQ{%<}hof zIS7BS5lKbc@((RpGZ@!+{r_RVY;x^5B(y#&EPXo7U5hayD?AWcxgMu$iV2#EA1 zC4dyA3MyTSiYUD!HFS_j6G21-M35rVd&xJs@AqeCbMEupanG5vXU|$|W)8cc#2{#h zq;G8zsnY7iXwh!9|Act9zFy=2tu^!O)$ef>q3d#A8GPnf!=X7u@=>=hyH#)zG&M-k z#cC(F>G|Y$lcN-xA=&#YRgzBWsy#Ojo+1Oot%qcnmbdo9!N45W94~XqqhGJida%^$ zYM{=R|CTESZ8G%B{4ky0X##z?kTw93n7BzY{WQ%>?D{FOb9gM5<`ECxVR}>Tif*tw zlC_d;JW!S@_u%`E)E?8&^TvyJk9%0~xRLLURv7d`(HZnI9p`c;y_0ZuFu2{JTlWcS z>#Uq=$VdEo+YqD!cgLzZ>%revS37mKa2@fzsjVZWLeu8@?ht^tTiV&QQpJ#)!+u=j zJQDk1H}O-k7tGyZFN2~;Hw{>wW+%CS7hVniWKwOkW(k7)x3!<& z83$r+2)Sds2n%|mH2EWRVj)CS0Gx+?b->ct_Q%#yI{($UZCdQfuZ$yeh(zhfGWZa1 z*Azw1g>0Pn?;9iCQ9Hf)@WICjzJedeX8_2=2$G|WUCRfl6Sp09l>MDn2YPv71*V{bAHJbvC&>&w9FBR9+m+vK4aC>gcE};K8HSb1iz?j)f)rlfhCf zq|xre%cruMuOoNV1njJa+M&(#x2T+|*_sD?FXeu@DVZxT9{caU(!{KdWN8O;q}q7x z@6bPV=0u9)wYb_C8Lcqnmsv%alMGJ?fU&;JhSJMu{Ck(g6Eov*ZnKo>PN`q5n(}_4 z%}CE98vzW_Be8WcoWnUOb&05+y0MZTNxHdn*Lr{F5m(fXV`k#n=9+t^Hp_|I$GRUe zjp1gJA}Ysv?(>lreS5XbpjoWF)XCs4t2Cxo6deIr7D(LEIv14C%kVtaDn>i>p!;Mh zjLLH4aGlMnU+UbjQSC}9OZ{_|>6gdy`Rp8=8Z(|h7XEA;38Pj%v~a68+H^n6v@b5& z)Kqx9Gm`M}H_P8wo1RJ&^Sa@4kt%&VrC4Pg?^GzgE%`?gh$p_xD*_b-DlH*hvXzBk zpw>W&Q8re5!F&Z#<*1g^er0!Fi}T6-*i$n~I-*Ao2sKTnby8AE-F0{e;>ongEXZzU z*tfWG6v+3x^@Se?so!LMZ3nr%)zdGuuRqauH#DoqEqyk`v*t%QY70WLKoHZY_dgq9 zyHyDfDW&arXB2@viwHqCA_h);4C6 z(gIvQvPzGd9{IAvDxPioJ)_$X23 zWL};UJu1ddOk$leQ?nDdbAq%HJ&JO+&h6ail14KjNRzQd4!)2p>AIIpd$U}3dmg%e zKi|PK-)MS}i6cESGPXCYB4rONyab`@Fu`$#Rns)0vIP?)B)E8y4Rta7vOx?M$DU*I z@%gNZh2Mwr=Sm5fY^8sD?11cBb#G(X`EnL5hsQ3|&knMSrlY8nh;h*5beS1^dWr<; zlINIg$L0BG)8ouP2h$OBIO5jv8be#${e#SL2)baN+_UDVHf0}9MVVsy_N;~0lUGkK z+;jZ+l>~@Rqu-+}M@qUu(h_5IZ;|eHWF9_*36F>jZ5{)G!ei(;T<47td#838n+!hW66Az=>WxM5$;vweb*mAq%j;6zvAN_Ed5sHT_ z|MiHObKT=dp7yZtE!0oicxy21EO!maDt_vRq^0mE9+{b}a5#UpSq}S*i4yp*%487Q zKsB6z+WCAcYPfzlH5hVOHhp^f&L*ht_?Yv~Qs~RoI`z|Ib<$pH>(Nrr^og3neaVV2 z*0i95uLtT0?7pj~Qd*3e$~(sA#ZRs^k|bj2?7pAiM5Te%0X;GWdITh_*ACKtuIu^jt~xGE$TnUIQX=gy6$Yx33+ z53EM`-{)7L`|oG{Du1o~N||{#+dwST_-Wn#QhJNA(LdJ*2|f9aXIOqbj~Q#d*X*Tr z=pr^<|IO+mG@FYK!NWbGedm1e6Pt?o)v7$p~0)8cDPJUtz0d7+JnccKaU4}^EMA+i_w27{F{?@FVQ{P(l)2~3% z=jI?!!7^1XBqwKhzv7dV)eSm?)s3-7<5f*zo^TnJi_q0N`|l6L;g^f$cN9X77!IJ- z4oWV_7)r&8A9lcZqFo1X>VcV5GKg_Jf58r(s zyYN8PNM&R{ChGpfngpyT(3Lm|--QC;hP4PXZ{XyFZz;%wj{b<7#^V8zC^s+sLXp;~ zo2Ip|Hfx9O3RwAbjg)QH0#pdl8h7OeF6KtVWPt@zh$avzaMxRu#zP7xRF=NV@onu~ z3Jam*>tsncQL*zyLhXfdpeb3_D$o?!=fv=LJjC#IKw+p_F3YPD6tZ@mD-I{}{br3A z!ArP$eyi*ttj_L!=)oNXu{YteFEq=FFH)9`{0mT9xVtY@BA594PS=`f%>((OuypS; zls9aF*lB$8-fJQ#I@6z+0YsYEDULZvCi_%I#3c5a(lPWg5v zq=`J`d}*c_vm?Of(iYs1BKRGzu4jslA9@6|O zHXDfj>DXKX7Xyr35Sdzd2N+BaPgqPB!_Lyt!%yq*!Y*Q`7>2!m*GBxJRPGqbo^r9Z z(NbrfkmW-sJ|>2sgWkGJfOIRtZz2en-T~x>Y>|*SFFGeEa4~e5`}*mAKr%y|)EPSG z9i>xO!zKms;s)zSa$ic5`!Y7iYJuK}U`T{*!_IJUVxU^MFpGoNk#t%DfXV#-;M68| zU&|USJbl}WrniqWJ?z(_g2a)B34uIJ$nKkR%NLPfVllXLvP|#KA_oE;`xQBf&mY;G zClEU&fj%JWFC@R$9f03y!w}nz8x7xNxOQ~2Ywz{MQCzWzk~HRUb)tOu$QrbGzOBTr zu;cKcK5!yuir4~JLIkCF2t z?iW({Mo+(8BZ6MJgPGAudb0uJ)HY*iq&B4i9p+iX36~c+w99#_N6mjH7DrTgMHgZWUmHdZ8>Q} zPj+vau2lU2sKfm;{(S|ZR!_+a%*IyNGf+!m36iX4kHg63yJP8!=Pq%}nk@N$Ko<+n zU2GCRae_QG0$cGOyQR!Rn*z21YnRT^Ca{OJ9FLsS>bGo*bvbm5n(2~1@u6Cd4PspX zm2qkgkt$sxg@8rvqD>$R@r?kVY}a|JoDtK8BQK{E8Z7$$Q7VhFLdqOe)W!~-kXxS4 zjlh(Zf1O6_k|)&BAr|P~A^L40+B@ENDfIH>P9kMAW6d3#oh53+e)}S|?=oUB_tXED z*_kgioCb|DdCm@E6&#EtXieS2Qdcu+xCDHL`-J~KVKaUTEq&4!K6 z;z;i}y8AnH@0Ak{ zECv0)3(Qg0_#<5QO@s-ir_Y&lCly6l@GiD2q5|Ia-9dMf3Qw%n+{HtLnZT!O@fT4@ z9c{;Ha{h3EQ(JXqm%G4YTlo0jce6x{>d%D&kI|TrJ2%dL^W+8j$YMYMWLmO?j|%)@ z8Gx-A599Igc;o0itvAY2z6=Qhcw(oZk@afCnhKe}Xe(+1AS2rK z9SN7v@Rakv(pZh{yT`#i9m3qwo%O$#p0lL6yyqyCsjNvXfsy~`wRB)gcEp|v+fWcL zrT&-vXq(EGFFffp_;)^OqHD294EHH}_3~igngL~6dOhVQnrzf^n;*GBoUkzTlS$)< z_enBJ7OIEqj!7-29n$9B@fbLyEFBX;&>0IHz8Vloig=oyzC~-V6TtW!^@nu`R_LJy zvJmGVRy}@hSqHTQpX-N|qiERslCZdMVxoI@s?`z&K-v>AQfnMw@R@+4M;+K>QJc^h zW%LH^=-NxC-~@q1Wi6KRHkGY;0z)xQ?ax`$!9bAtigD7TwXPafg zhdvCc=B4YrR0j%xI4_Xofs3Kr`Te92=s+Znu=8$RcTs8?8&XC#U54lJpE|{ibQTMT zs*ai)j9LOSqF|31<9)*DrXOE*`TJr+sOjnpDzV?b^}8ZN`<$v59OGd{@<3u5Qtk3^ z%DxoSg@Vg!<^GC;DN}R-zZ(DRJR1KLP4@(1B_Z!UwH-x zFj>uLoTn;eUTUyiewm(;Z@Iry*l61JV;ero6+*|^K%M%tY1U`^~AQ=QRa@eM5W~g!LM# z!W*VK zW(s7}a>MT@&!yhkrG%(6^3}co_cc}p-)3LlD_WMND*URp6r$i;JK6f(EmU+ar>$g7 z%&{~rzHe6vXIDB2kZN&Y;e=leC*~LrkEv6({5#)7><)%PU*P*Cr%WOZKE4mu`uKB~ zJVTWL+@L4Yd?UZs=(QEMn~qfO)BZQ(Hq*A##-%K_pVgOkzR>s$_D|d;Ia{3MA*4<) zc;eZn`n#dHn6I&_77*Y9s6WCYF~kLO!_Nvc-nNZd&S+qm8;a&qvCgIcFsCHr1>#sDp9|@=ZmLnfIJD05p#GQNN3~Z6TLbOx^|{!a~%o!Y;_qUw-KVks1A*+8GD* z<4JB|69c|S0&TZBfrfAS$0wVo5Mi&Qzv5)1Ie!FbZ8)-7Ug*$6$$vTVnvv{5!XxBI$dWL1l{mR;2DhsFFo7fQbCFTtaCsoW^Px;Rx!{FHY z8#kr3SUg&6%4E6ucl-CxtIB~0GeLx!L)${v7U-NTI{-zMtiuck9uTE<%LBO>`C;Vz zM9Yzk$`+uECOL)E-NcLhYNecoS#ohBhu}pz3zvj`N*x`7{BJh^ui>_&uvK_LL6CO; zxx}=rVUE+$f>qZo^)r?wvq+!IuNZ4|eE)WIWQ7;XSAI?~pUWTxijH!QACJSF3Pu3->$zPx$Hv@QJlw> z#32_3tF*e69P3UCNNp7oujk(DuGqlI5EfSjdBd0Ffdq++Y{}XaD45fqp+wOKR3@`B zRh&usT!j1(Jk`13UcgN3;9}?o_m^$D zLr)wB)ljrqyX>)3_2Un?Z@E^yV9xdPT-F^O^jn~*=;|&Tp2$d}@;?sDU?^~x!x!qZ ze!&F9?%ZZB*KUcdIo$oF0ex!Z`s_Uc$fV@T&Awnn1uPOzvoH&Ewf}7fumGC@(B;d| z%AnwH3{Xv_Q{9ZI4gdb~XVqhxaNiAI_ErI-hsCD5&n>1ODXB(bqjVREKszpX>Upv8 zF&6g==&wg#%Y=T6LBBdUBl+Tjw3glIxu~wnXvq;RuQB;@vvD9`h+mw)G>&1qu;4x* zpM(N8ErtuCAwYEP1hs&Z_147M5q3oMXTuQ9layzK`{%Ycj_a?5Xf}sHY{PD=<(~=b z``Kv@YPAme3ZzlXW0zmzxzJHH?gJ`8OYXdxUoN5!T<*sB=#}CsY}G)x5lv}`p!dSl zr-Bwc_l}4R#?Rj9L*11e!;nVLvZ^rjg?a;K0B3Nd_0Ftj4;xamC$e_Y*6j>D6}tHm z>{uB!{0pC#SC(ge1f4f<7XAn0#29P+gz7WuiaPHryih0QMoEs`^ipw=ilMA3!RJNI zue~llwzc5*Qjr(iPJR>Vbg-Bg&Y8_3q))FAkIWam&tEvK`TPx=t(VW;WHl5@)#3M? znuPui#bS@{jq@ ze_WR}6oZttBFmz?0YV7ao(*0w%}dy|TpEA5xsu4+69QZMMRXeJ`W?Tua^rHuiw&62 z#cifTVtg5aJ+-POB6El5v1X2ox;LMfwueVF6A;)){u_d3LvLrT0rgPV0g$`h9#Ka` zQ*ZzJB{x&)(r;kuv;1JykqH!N{hhwxbF4QU;LZ(-q`$mj(^A|jHvY~%4{T3!P@=Y8 zJbU{=UY*gO=Y-EH=lM~*#K#6J$kareKm;21D>RZ&Fpeb~%ma@CpmbAMFr+po zxDwNuZpOs_`3b2c%Y46t^dqV&JS`dpyvg)*L4>R(HO^K!H^@VeddXQH9 z?#-B-3Ivz4HKojwlD`hl&v@<@=YqXdML2mkAnO;6fcODG*Dct;E`3TYEK-{2^umnS zeT^3x<*4MoeIbm<;a()^I-2Im+A1%0QQq+ywW5nMO{CiQn}(QpZ@S0P%5aT%m0+?? zDr*TtpWB@dIu*El@C~h3I#8*ATei&CXKwzxpFWJG1^LucRP*n%YeAIH%iIB7COMkV z?p66D9&c^)t6egDvzbD2o2lpqs(wglUu?pRz3p=YjV8ZoC#O#BDUhAAI6)f+2ed(& ziSm$yNnjZP-4C9EmCJbpLu*g=Fhg^OU#SzfpNQ4nEw)P#ATVgt;Dps+pG=5=ElW2x z5sFgYw@r)_hwO+OJm+9S5QkKn#6D z`9#v~%)u{=ZkiOj<1vx{@E4?VswjU9n8VJuJ!?N1J1lbH>*7&J3MX5z*c2N$L*9iT z4mHOFc)Y~#-C5d9Ub9Y3-7}+XXnJljS(3fa-6Ma!&e!v?sFbRvBiQ?feqEY|^66sm znFH&kbrT>oz()Pd6PL>IqWm$a4BEj&v{1{XPuBI_TpV)ZU$74>#OpYA zW*O2$L1Jlg;?D(%C3Wvk33J8YJzKVPw$w{ww}^eqC9AFW=qKdenLC0}3YVi)E1w7%w%4H4xyc!|MnC{qAsWP6yiXcPCx#skI}6e!KeI zYW*97cc%r?uHZ|ahyi4AEKO?S7k;w~ZefSFb@7yi{<&DYxCrY*T7_d{y$8q4ZV{$3 zV48V}wQFbWOR)yE)2}^JP~j4O;$Z_AZO;OTMDBT|TX>MbcjFG7^u+z+V7@=!osF4O zU6ELAq#(1(GVpRqr@U8>-badFdEN3Px=0Mura8@J9J5#-_9!@kf0ugkthZ3UBEM6f zq73)3k#FvrV?27jd*4uBj zUKV5oyL0VFINXm4qpP|UplbOQ?b{E+^}$;E5``%{(P-LAx?}J#)!<54x+%rJ1P$&R zr_pB$EG}+{I3!Pl)7v|{P%J;=Rstm#06A=*EsgJG$@8JFM0$)tvcu>E$h-1f@JQ)L zUSoJRTY;ie1+ceDi~3aE;ZLPpUjp|Zlf2KbNXn3LSQT@=kI;GLIxRBfIK4+(7-_LtPLa3D zYSiRr$UjWnP#7jMTIQR5qgaIPWVeNU;;bwGBFh;O7UlMfZ#YYyCP+I1BZijGoDkEa z3LAc}FW1K>eV!5{m|>4thZX8mL8b7(J&0zfSq0lU!r$HFDWrJ!{sxo+ zr5^&R%5nbzL*2h8fSs}ztc0e;$*mwuBNOotN9+X~!ZQ2yTm{{aXyvFV*q4+9vTIm^ zw7E3II$uuQ&{GH>et+-c1dYyPvOSh3+^uBshq?-JwIPu!G8M zntqmS^Popmxt}R_i{Tf+^W(-OWauwKr{C~LWx*79DpCn7T6WT%Nw1zLtqAQuwGO`- z!%=0B)I|CEmR4NJce`oj0NNmvv<@MuF!u7l`qnTh>_nAr(A3Ub)bE@(VQE%HsosZ< z9y=8o*|3215m={q5M?o!Z7(%8CQtTMyT9FZS3HX{D3uD;5Uw3nLdk^UjL?YMjw6Cy zQzqVLo@@4c>u$%$_w!m*^>mwip4l&z4l}q8lj7?W6bWNbvUjCSLY3n8CS_Q)F;%fU z1EmWhzfl2|xU!jgc%hjoovGqzk`TcNy`nHEt_lxIq2g=^ixo?{$sAIK@5bixUj}v8 z?e(+Q;BOIfxH7(UI-PgIgMzo(Vx-Yk_7~R2A##1UXW*C=L%7z^3+YNCZ$6#-#EZ!V z-`DfcGOmTsA#)?IE=?H{8uB8Ekf@htb=BfOD3AT@obtHJS2$`}>)Al}RS#YJeJ%Wt znTiJd@syLd{Az~vk#JkgsuGTdhh1v4n&@{&saqHP(nrR!JDV>=ws+CLu#3VDK6z@+ zkCyYh`dsa6%cf1WsBK~7#9g~)R;`AKy8=@z9X#F!a?_e3QPhhuc}RuUbq-~jAXe(m zteP{buV3T>0!ivbx0qkpj8^B$blk30Sem`iIxI&2E=&p!Tn^3P`l{A%D0xJc-@aTl z)#9zyizIC@8rG@7XviB07?fdq_yi2}eI$d7H-+NKKhHZ43#o4q+s_dcJupPG2m+du z@+!aW;YesFr){zZ_6i5E1YN!!!3aEik{$5rdu2NKhUz|r!_3vFprvV}o7(4`Y__G$ zAul5@gM%vie-R;1{h~+K5%cfL>T=B#%abn8Y%WUqY$7BNo8x3Z7}I;Xi>!DYY^ts> z72@U2&0VN9fBcC@+LrNREt8GQDa$?63LOgj)Za|&uu20@YJccNmkxk63ctwy7Ab)n zjuQIoGksq&#yso!&VC$=FEpr7ETAoGUWh?2kxA&NvwVb(~s1Z;}+ckz}`klnQQ!bc%mEQKiiGKG9LG zw=!(D>E^pnV}>*S=Xe?IRr`Y!H-CCF22~ZVKYt2RhwzId-7C|#cdht)zLgRTFYG;n z65n`|9B(t<`j^O=hMGSuQZlpx&Gqy~taTYIcRWaW#zT-sul#!pX~1jajMx6KDBJ%Q zc6b&ehpzK)W{`~yRQHh%mezG07_8bkrPHHFNvagd^WGQ!dK8UK(%%W0K06W@50QQU za}93Tf3ta--n2K4%RAad2W-msm|WQH`(3fS<+Q^ zDmVApoSHe=l^ruPH;82+MFjm46+6hrAp)HBLkR1IEn`(G9zpj!4SUOhyN5XyBQ~Gn zViRcV-&`dj7$o11tTn>O7Cw`F;lvsOT=mC?G26>W#_AJiF0HZ`t?5p&PbZF?!<@=O zQ;)BVz}zK*z{siJr{j^l@G0|Q)dqsm(i;kL{^68*c^9L-XSCrJ#-E-jn6dr|Y89aFggPJ4Qzp&QBhBS-eJ zX5^#Z!mJvKrhJ}UHqE!8I zE`X6Rj8EAC6M{P7;vw`ZzrDQ*#Y7i!!zCL{nPTOt&pRP>01YzfmF#1lfrC5%+O6#8 z-EcpfSqM${P;_wq_s4zNYxNODEE0peM~|K2tGXnQ|JC|9#(bsx=QYP5YT=&V>6dW` zAjFy%8}p9aaZ?gFdBrGKR#kwf)B7S*%B|j@@70;Xoni9(d&5>AIT z;mJ?6hHhND8-^CeJ8%ols5OS!IA+YM1%AX0!;1fl@9v`Z;XlPW7S*>D1Wg_eQ)CpR zS^HoMD((%Z07D2l;^nF2LhY}uf)U&9$aouDGAr;=Pz9tG%VZt`5IK_jGTES#!XMf< ze`_ptn!cQpw)*eQ<_iyGV^wcg1u3~f&5=0B7^4I|8q(EB)O_JjK|dANC+-=2@*Kh& z7UuA8HZKuXl=@NQH22F&F)9~!6F2*G<8`a8g6%b2#n+w6%y^m^HA zXDzu{_69sOO43Lqbsdpp^(OKMrLdhBeJlgxd6Bd#YrM%e?73#^gT2gn(}*~UQi}B7 z@O3L_`u1`wJKk^;<`3-^lp-J$F6*###(B10h2T=XKSb8FsNOtKA()fu;qH0Lp`mSY zJ`wZ>5QT&2@?!L8m{RFW?>YH73+ehHM#~@OHs)zHr|nb(J7RTK4YVnrG52};%ljX< zC)M|-&XMR`PV6Z-!p&AhxbSOq)q-4jc1&zM!CQO+(u807Ci+LkJe<VRrcmep-obci{Lx=GL+6UA92~EXo%E#bo1TDgN3Pnf zFqrtF^XYuxXNOK-)2JadC{!#!-BP|E^BuXR+4d_kBRU`tyP^5HBP#cg>}?$FRfm^( zg%68mW7USNT|r_oEsT7>SoQNB{}e&A4!F5iEeQke)M-9c|Y%UaR5h+QIY<& z4*xjR%PRR3zv87-*^bTU-lkv5SzNIC@+U0AeqBK(c%iS`%@EU@*QV*oZnRNZ8dqy5 zGK~0h-sIu~7-vBF=CQMKtrOGNWr*44I4$o9A-8xzaZ&vsQKXgq&O?)zu$OIdpQG-qa4g!U62GE_idp;3ZbD^h&?a zSAV=3__a<=&%trU_<82De^%=!wpYU1mMSr!BczDQ$L5q`|0>&em`8efCMM{m9 z=W5I*dlUI3AjA0!gAHL$##`_F=~;ZReCDIa2QU+dT<6mt?Lxe}LVC-ZzYabola5^b zT45uu@kN7W|HQZ|aJ4V5o(i-R$NuWWaz$SpH$xuZ?3<>C05{s`-H8pm&B%V=%iR0^ z@Z}VR?H$ZPqfU78x!j{cqy%BCosZCPFScihb+p)`wveI&xr7tyr0~zs=V5HCkXNj4 zotFuhXwVrja%6<9IUz(NWp9Uuf=RK~RjlR1C4u&Ghh{45MHFR}QP27QGmQT6XHGyd zt$OozC9Oa7R-;Vqp5loK>q?&0D7pbUT#isBwtYTyJyMa2MG|ncY}hGmN9)5L+*pzS zm!BaE{G6`HyU?f8u2=K|pKC*Blb!O;M{}yN&Q{S@Qb0{(k1U_PIOLZViT{8bw#NIh&f}Mw@@z zR?|KiN6+8w?@e2rv3zjwCFK154dxNuJx+J#aVqweDHlS+q0p)ET3&^a-_TukS+(ql zla!xW-J;6^2dk&rJ!!+rOLFzr$zRAvEtW8CKaqEWziSi8FA32!!Cbt=7!Iip|H4N@ zcGcQfC#GBbIM=~CdyS^W;%wpN@m<)!2Y8H<0%wdH*}69gM4c)y$n->0_wIAcct<2~ zxDD0*`pu8SUTc%@oS_n>SFK7BSN z+`qhmxunc}$NR%KCTDmzm!P17%b>84?f8oyQ)?FwIyvpb$7fjYCDB?(AfUhpaS8i_ z5bf1`!ynmfbI0Iu{*0vyD@)U%Z)}9SC*L+dsd9!oCp1&#b2%^g>oPWnP5aW-lm0>K%looYiw04i1^ro9Fi|Slk zu|McZ@5uYR`8dz;pU|l4?M&GmG zHKxz;$lR_N_mYs7$>h3ZpI`;&4jo71rKK`e%6o?pQs(7a$$2shZ;ARQpixUW*ho;d zTXz?4GmecY;-mR?m%cO{5hiF?1`dS>e`AH~>C`lXCoJ7~^>NJ0U=2ACR`##se&Sd0 zlle9SdW6^Cvxq6OO_FJNORO-#C`(t#dcrIvSA`V*-D_OYosf~rJaRWc$+C7v43(y) z;GmRm0#IMgCQ)zo(6#N%_Tgsa7nugvq)e(9hsfR~G>Lzs495pdxWi2Cld0^ZZV=83 zBz`SEO|*cd+vVUFsnV5x3ZXc|w4ylEzLF|#;HgcyHmOjXw5Ik8NTzf%b@P)PIXX+J zK2eCnfNZAO3H58jyIW{9y-wJTD`>jMrTDm2x?alH7(|joxbcj@kL9_A)z4WJEJF;h zF=hmQ25EMFn#Crnd86E#uau48O7JUf+@$$!#gh5TUnYt zqf|u<2No`lq8wL!?xVCGS($IEDyrOP1D~Za1ZZ+XhxO#zMAumuO zUgz9oyj;)B>~FsA6NM6gL>zoiVQ5>I^>a_c)mHI_(b1sM0LYnKjK#x=F{_zGtwn-= z9uC)11nbtlow30JC+aRfL_Hp$LxsM`$Yj*W{#cWSdfH-ktC!(zjx;2a_rA@clsTL9 zX!~#WF%{_`_`wr8_5?+3!+*JhpG?>2Q6KTgcDKv*C_ZXR*cG;E@l@Ar{^9TZTbW&Q zXo3lkyik|<5(n+)1(neq63g&K*_Mlhf>i zcVItO-fC43{@UsUHATWh#~8(9!_^aWbN&!1q~AxXNS6~SzWw`7;q(j{EU6=L$OYTX zMN2q>+ZDwRQZ>~dNF5}aY8hNONTea#BbqlaZ*T5tN*p#r%w0|N#2d>mUy~6AyB`xD zrK7X+hV52kPsw1C=s}fR%)QAlWrdHSTl$es!wVgg&0v#byUUS?StcIX)2#@ojusJKoWtBuX-SetaLV)<1-BeVONS z$-YoSXTfziG*+8*bFpq!o5bRhRB^|fFXibe8Gm>R-kR+DMF4&fZw`mj1QsCf$~=m> zKybLkZ$C|Spv_xowsEcwRGGFQrkC0kIln&t847^7u~dofu4pa#aG*3F?HEQ4wXPBw z6BK#}?jF^du1ZB>pBdX-efi-;OZt|qg-OqI@jFK#q~y2Gt?WrQu9R5)uc!R3iK`aP zEAl7rqTPcUOlv3&kGfv%9HM>1NJyyU0rdN$>>?!IWfrWO3E;FGqb4OSOq7!>ixt7} zC+=kSrHXg-LN=tO>p_YPRz1EuiFMe_f`EJgeT%TzoN2pT31?_4ceuEPy*L32G9lY0 zNG%z~N^6Xdp8J{q1VGVq%MP$DWW4Hlrs~_ki`ZdUuQ(a=ut&B)p03$&&a5vt$<0vIN*Ii_Kwbe^Rvtrm23b7fYmFouq6Eg zfO-IzL-XU&q~EZ*h82Zu2gkY*HIp!I)AVTa^MCLI1ArgUJu3FNDgG*H_&N^yv*XC0=)66*ih7M-^FMoecmotiO^a-qQ({7D6-S55jrp~$4F&K6> zX?-@oHi2_rFo%F(P^&%99OP<35ILYEuV-%%=yQb*DAitnCoVyZDWuM^hFOfyh-8q= zmMx(Fg^MJkEzgF*taDc8k9G~T&9Bw8bgs@Dg;r&bQ=qZ5 z*~;CLHF%t9if6I~_KJ5MSfdlal_r6|$k68!9wNop@t5ULB;xqj+4ahcJ}r)+F08Es zk7FB}oUc_mK`oKjK|Lwy)g+_5MPnJ2$J8*Gt|E6QH1IgYX~1u>O9uKB_@?7*^s+2Eky{l^J zY$4t;{T_{9F;mxozj@EaUbj<-5ceD5hiOUoXa5!f1GWTM*wEDwm=pxK9PL{NtJf{g zoa`*-xYAbd#(qux@oMzlaerh9-AfT0ZkYKK<`Zhde2EB zh`N}ox>pf9^y_J}*;$D=>Yx-{V!|&T^S>9Qojx=EV=Bq<;;|fTV7kCp^0Z#HbW+sx z?AzBgQP`oYr4-X=?`rq?%)oPBSW;U<%=>)SQFnqP-wjT6e^zANKfaWJVHTp0*|hwu z23{ees+q%}%)i;@N=4lO)DDS$NJSw-g4nHUB8#4y>*a2lm zx8eIn;7B}08l7UOaJHWG`9rF(H9CUeyD)Z$p(m$56u51Of2$I;85P=$1cvD=N7hdB z9KprG5&ylwI4bZ07yNH2&9kJzndRLH;z3k_v9g`t&(Bx@T^M!_xqy}DwJWBW8aQOQ z!1tCz^68D9b0MVfQa9r+U(L0y;0@Q8sU1yZOSvwzZpGgvm;;DK+vGt4y`Ie6ZP;aF zUIHa;)8AytQ;k^Fk<-APe7KX@K7*-ZbuY*7>BjGTGrYuSimG}`xz}&oO$l;r(mDk~ zB!A2KFa4-Z5S&3CGJ%`aHaKLZ980L`oa99v2BZ(yX#Dkc&wzq5IYAJ#+3}5LJsBJ; z2$AY@2JB9yuBxKls|3!Ni8<%1!l7kY9Z+a=iIelqAUWT(J7P96mCj{w)-zN|a~d_N zoXg-!dx%&^_}rz#I?c1Wy#7{dG@OG|a{%qw46R#a6m>Xt@X>{LzKNiX!p7)Rv+kE- z;^Hx{P&Dj;Ik}JRQ^#ZwJSUoqjLv3FNy8?j5>8+Nr6)1(wdtj+)@jS#((+_DaQ<<}H!c@=yy3FfQ@nW2 z6Z+%xGhXk==)d17I4Wtk6$AVqr>9m)hFN&if=s)es2^|IVW6A|Xi)3oSxA#$DxRHS z;0b0-;1UqE%0ec0^C37>XakL{??%}3j?f2uIE$E1G_y-w72Z~v4l!(aDC!0-M!aZUw8ahQr{y7WQyqbh zWWaLPzk|VVDE%JDOMxYi4*QHp+oe0SM!!Fh2rSg_)tMgTgkRv}@6dss0FlyvA1Gf6 z`2z(t9vivF18Of&^Lb4jr=rv@CiXdC77sR0VZCEvl)M5WuG zUAGEDafQjH6vM1B8TxmjQhcA|@J^>hn7I|X}-kO@9fw`G*+ zlK`a^urmTc6aY#&zHS|?^~)bHuta6FDIy7mrEchzEzEEQ7X~kZ)u}a74ODSb+Z~+N zg`qw4K3IQ#kXLtU^(bcA8HrhO*>s-FX~`#9*TB(q!bZ^hSG(u`nve=cW8~|%-00CYT90G;H!U0zE-!f-d6fkBc1EG!q`_A*Os;N!nrtLr-M%MGbCWP^TY&cR#s^`@+x zt3%Id)?e>3+N3ifJrekVc1nH>BW^5!g#bWWNB({fUX17TP!i*QanvN)$ro#>>6V$p-p}ua<%#xheh(WdfkEu5Shw=;i$7eB&oiK>(wAj~D*+W91Vi3l@OC&pEO<5z$P_{~& zeHSrgH=<}z)-2J;F1z`k>HEI__jg@$-JW?|*WA~6&U5bbxj*;koFh~G@+Ku&6#Yj2 z2r)G|ngTmDej}^BkSk8GlXApfx3GWSnZly)S;+9dMEuo}h;@TYui^>_^7jZN(Sfcw4sLpdCB!(LrVvKYqm` z;WLXBy?yu)gVEy%pW>icN|kP%Qn2G73%(hHmM;swgJf8J*@@~iDq^l~scfJyHLt=b zOpS>eDC`PpEtgANJ7QmTvJIh0O5dX^3(kvPXOTbWOn;P&UX+e8S}OBMLZ_K|=zV;U z4rCm+|5`!QZ!PY?jKFIt{&sK`F_*6LvqqA+{HP~G-F0;{%$yJNUQIo`!uJcz#kiw+ z^+g2$`WIkl!iH4N%@xE5WBt+|F6>@BUwZI40GSz2=yBV@S%lz(-QKjea^B~6HiUAd zIC7h8KM1I9VSbaol*rva3q_t7@s)5=FIR8PC zlz--!&Xim$7}gi~eLV9@JSyMamLD@QSOa8zx|r)#1=I`0&=vfk_WAtPR=d>m=Lg$_ z28A}UUUMUSHRGB=uKV|hmyMv0B&1kv<|?8jEZ57bJYq53m5xEh4^smH_}Dg*V-A1@ zisNXSAeEgFP`|^Wk@dQ_;gzD@V8a>d_@))#ywECW%ls9hSaQ{P9#99l+bUotQnYXH zhY3KF@lQG&k5xtQa4`m8lZqSQx+q4x0a9;(t*uHaO1GLDl(OB`Q2y=Nw6>Mp2}pTC z10^^==taep%G7=UAI*E5WTLw)ZP?UPPlD}$p}F_Y-wnmlh@S~8-q^x|dhc}Q8dtfO zH*U7S!i|0P^J+e|6szQAYRcs_^}-<&U&Ks|m+Ynw(RMA4Das^{vuY%Tm-@xcw7Aqy zKyL9kd6ljSh;;OQxWMH5(if@v;+@@VgFdh=&4E;8maSU-MDvm*9>B+vF+WgkaYCWs zL`HevCgl%lKPBaTX_B}Nd=ltm_&a8t8x;Lfj-OpDoy-+-$-B^2t$TtUP6PzCe z_2n-{f2N+5>Tr4w4oY&lI8A73G4d)Xw7)-WuK=Tyjk;V|m(LzqG@=iXD(=-L zLMQs)pAag!#E;bZdXqryHzWeYQnjA)Wn2!dgUeRLM%qdQ_OdWD(c=WbsdDtm0H*@3 zT2KpxZ9HrrjeNmGMf)^z5yc?q6aUfcnu-Uf3M0n>l>)W=rJU^-r|PT3qI4CwpUP>y z5U|e^z%j&Ppi4IQ1**zVmV2ck>oI}W!d2VTTIqNq)I8Hi{R?T@JQMfl8a$1|+ zi@twMYqjGwV=cJ4pd^)kQ0J9Na zyke0%x?M|Q895H$6(+^0DsECR%moUDiG@=z%!S>A-^8hm>nE^djX!E124))OxrJwX zeu3d7?tr8elu@dVUk8|-Oc#7$hbo2hP0vs0zu0HlAG`5g)2phIp)T${uB@sviteg; ztbS)usf!_j!fS9d174$(&lKX2x{e1VEjM!$1ZXrX2^VbhRa=PHx#CXdbNk=SL%Zv$ z&2VO?)_p}E5aLl7C)?AQ2^p=`9a3Y7-|rHpf-)x{b%adw8RS0c5|DIr(^1LlWgsnl z3feauzHDi$HhE%76Q(T=J-AAD_k7#$9NYU8#+8`$TWmTD+$>QkCJJXAnD@DHC6*#$0|~p2Y10>O<}iz-}VHKZO`3 zZbg;MmsO>c|LG4@NuIVBGtQBQ9=kr#{YmMaX z@Z+KIV)9Yz>hZ4Gw#)$PNL)aaTdME(C9SJ+OX?AVSt4mn6tIT7pN|EaqjUSg(C(Lo zWS0BuNup$mx|f@VuDg<1UM?`->E>QN0%Oj8@J}hjlws~)B=-Ru1q7Brdq98t_bCa5 z_P$q*y#WczAD@+Mhj&?)v#r9V-9`5XrWBJBB9ZnnxO0?#t**3u3P ztCt=o4FQ+rgx){mx{Tck7UT|3iCMr03;wR1*QPhBdb3^S^~U^}jQaXYG?d%UlJa#1 zx>e%Htr1R}eR7eL8_QrNc)d5*nRLjJf}Ocmd~6BFc-(8Y9_EdNcA5@9u{C)<D zGpyZB6~ATV+H$Q?eql+gG?%NS$fi)#?G;7NEr2myaV2uP^-CjK<^#j^0^oyXi- z;=_YSMGQw zxv6H41Jc|64|U<~*?UFSBkffVZXs1Ub-3h{azdZ{#E>(P=#%tFhSa zR?7wJuI>N$fu6)yo&i0HDUi*g<^DEm^A+mk5D#8lAluYR3IE$0{FYgx6Kl@BQ_vWS z-nto2AdG2}TprxwG%+$0~8dVvNV|mCSSd~J0KG^2x^?t#kgfmuI#}6lQ|En zML*P&oBb1NjP0vug98=W%HuD(lUB0BZQpFWkr+x#skCn2mlP9dT{8rNw8Fs~>p%Xu zqGT1KbHa9Ls|k_`+o{{ntUsfG$av6(uHtKQGMG33&<7I-N3bg7tNyvIVCa%42Pn>( zniPa17eapJW7F3)TgHXO>^Ia6x995-V)pST)JU-$AKHrYe!Ly&tf#4)`=#-~0;L`H zLH&{@s!I0Vj3v6;8ACjLsf)ID)<5K6As#NeS@^0RCmj1?`;Z}W~ z;im~@IXFH)!ve3bt~%n?>3oR zU*f<>v5LspQf=X++zEzOzr09hS=q?6(e49@@4C@Gv~Snb$ztCw{0ppF;@n{|kA(xn zM%^7>xs{p1gHmQzK`hZ8*f{$e6umcH6f(KA2kybJIE324lHd)2%;C3b@;OBReD+AuQ?jnm1hAsg)yeuWivQ+7^%LWK!rM_bAwsdo)2>V4a!D|lHsIBAm1uO4AV@j?HQ&72NxfY%n*)kJL`W%FjF(tn! zop|m1c3Mq{;e4&Q!GKBY6#cXq2aqRtnY4x@>*_k3lI4WnJQB)(a@svZu}c!t|4+jh zTZ(aV+45=0DOhJYVDL2F9C?VzpRrUJOu5@y?CNxc%&rn8kDS@#ajCC=KZT=Km{t7C zWJu9pz!U$_4UU$|Xz7cFOJibzve8<-a!fdPp5@a1Bv+9;NU$#)-O(=>Rl}Mef&9qQ z0h+>hobx-jBt{#%Uq|a|%Q~H-K>LUWBjywGkXo{mWpsnlZ#~N`#iCi+{X_s`8nz%l zzV)sv^uu4Ye7e3^1gq_0rBy_!!-+MRiHRJbde5H4QK_B}xO?3Rq8K}_EyJ#j`Q&*2 z2&J-c4-icKZIbv8t)PJ>CvN|?x@Hl8m_zN_OiwLJT5tckx2(S@dD07I4gD?9!oQ|U z;s8wVp@vz@Ft1nU$`9U(=QzPFD<$dS+=$h8S?jFnPry;)0R?iYl#0_Wo&AL0t`Ek* zF~3(zuwS~q>nq2j5DYakI^aZMnUEMJh9#*1ZyF!^+uKhqUGR&N55%*_?PzpPc5}IX z!j`f6k4-uof=YAT%;`dn^K#p;a0Tk zf;vKR)&Rmr?=?5`m(vZ*^Zjk$XtSAE26&D^@;lhIQ%yD5Ha~`j@$C2K_%2@9MD}uy zFb>F3;i8Gh3d{x4Vd#PJXEpRq53TYCK3^*^7@B$q;x&(Dcv+pBPV|gZ^5Qlxe}q9= z5&~%N6B8lld!%HdgS4iv<=xHrisJg-2&5S|K(BiAFb__(m{&tA>4QNjxTFIL(ih*a zKOxYDm?TsOi4>staF*$Q8Kc8J<_-2IsbMRSh#hlhPzZk7j<9=vAS9aTzxboJjfEic znYbqVsLD!ERMZ)i3sO_7K)NQbOdp$X6AZuhNll;*dA|vEYc8Uf->1YMC5i2AGY6bu zOjmxMr7mBgIG4Wy^H+muR444Qf32ch`Nyrs+2 zfD#p>*Br@eyJ57!vFi@Wm=j;4$eYpY32>^F)xWGxkhI(CX}7V$%p=9YK#2M*rV$8H zKet)o*Zr3uLv=BY>Ry$U;En0ICoTdx@KqUbC{L&OAg|;~Av(=$jxuf8&09i)7RGX4A$9-ylj*Jmti+VEv-{ z+icX=AGp=7adsO%@R&m#G*_#NMfHzAJp0synTE&1`3SMPD19a-e@S;Z30<|UcMKYn zq0(amlmdXE_-eSp830`p1HO$!`Abd+|5!HGp;Gu4z4}G|)c-FTB0)f~-z@;d$eh?E z1)q58ldiV;=JoWuVnu1*ubytIlBC{Xs|#l~%Jb<~03ajC5S3qFUW zn2DvBPwFf9XXo(t_15zz(GwC9)WyG)zned7y>yY`8g3}j>y%wm1~0XijIV;_To z_TdC8Jg?H@VoYhDTGXFsL|H*_dqQ5ZIzc)M#h%lrJmG+uaI(KRMh#dcZp(ZcxgI4- z)?O<0d5DFI)^i3jUlos-$~>Ow18D z97BEB-{g&=@j~sS%w}t$tO(sKbUYkMzh*Gj zYgBjw0V}Y7v|86dWV)2#Ul?T+sM8)fO@w^aiXAne4x)d~^#Na%Gf_{YqJ?a5S!b+;@CDZR{h1s`j7QBnu4v4*(kIGn z`g}D9EprAf(>~^aO1GK=)hVznA7Ii-u$y($5=dB)7x+$PF!49;T~u#1ZIcKi<3Vucs^O*5&*TGk97SUVjR9I&8C1V&z|Ln?w8EKvY>x&=Jl1fDvU z1<|MRWhAetw?IA|L|+ui0=13=*V7$30xeWGTXnH9iQztLl{9|;<4W-o91NVkiWlnl zKT&MwVu11k_C?@mApk%{{JJI(VKCpi5?MeIp6}CoWzL-j!t<<;PDxHE_o2u!h@_w`IC&ATNrj zbs^LKeb9RCmszx?kpgizj3_cv$#FH#^3<*Aaei&EHe7bd6!rP2OR}9%QINlcPxv;L zS?IzeENg#C;y6dOM{!`6{h+~$r>ddjh;EQKn6@dZPs8umOWgEd9D&MY;mRg@Qfl{6 zOrKowXHum^7OkdPB(*S=p$r?9#vms81h_avG8aE;jxsgu7BOtEcC?xlAFW}L?NW*? zf>W##OsMlB#4gE`s*n8#*;<=04nN_$EVRZ{sJ8z=nI!ZEo8mb9?G{sLwc}d}c{?*q zY`GIR%FVgcibICi7+-E=<|x4~L;2jw*fW1dv-^U%T~kaKB_HaTnfGa|=8RJ@vo~vf zvz-0KdSplfKEc0SZb+=b0oRNamnTMMtqT@+g^$d-F8B~NLCu7_4720E)wMF`iheTHLehZoGWs^^*I|R^@ZK&@sZ=m z&-u8RtyHjx(oPZKZKjE6GzkK#Nz_y8)U#N`t4#m)sxY99pxP?q8B6k zNPSEFnwE8QSZ&PhlXQ8fc3A}&MeQN}qP3~Az*B((IK$fY3^zR1NKO8mr$d`-hz*8A z+lU=uXgO9h*x)MYqSOf)fu0QZ4gV;xDD0vuXKb&6pDgM3*)y4`Wa=|h|A_GMJ%qwm zr{i*}R&<8b`)}d(x2u#*iYf#b z49Crb@uJ`1*JLpmw#;Sdi<=O!F}Ti^1O8mB-d_lcib2PPa$mxQZ6|4wTxOJEt6g3$ zbnAO$ThVeo=q@fe=&ps`?L?*3@S}ReoKL^$U3~B8;qt-*w^#9t_4dLc#XAE;?9~e0 zxr1MQ=FaMfmnt~UHwPci)rmOcSs)z6tt2-AWq7^#bN^I%ETSOw8B_w9?%%$x(;({F zCh7_+k`(voPO?O1CCcOdAWliAF;361!0~rpGtBbd5vNc`{CSA=0(E;|G5?>A&nMwh zU$~5VpIJ1U{u+ymIf!sz;9~VwOG$w83R+V-YCSapDiN0{drrc~$+*4!s^F061I0W~ z3nVU47VoDH95{F+kbXc^HM?bbY_J__NL&Lv=oCIkz+r)DBbjSl$~hENCruJKy$)8p z#5+W6@GJtrLi}G%pf?cZ`4e0^NZcGfMx(n)n9qL$;b7eTpO@|byhsBtot+SW$D$}Q z0jwU`6&X>GCuNT8&w8k8%jAzCr82{8%%~Ok?N!^JZ6odgB{F-T{ClWpyJoIlGnN$^ z=+uMrh*Dvd>GM6pJS?ZMD23afEHPG5NTLd?PBS)6O%hYtfvl2-_woYNNp^?Nh5 zqA=vZeJPu;0Kt2BKv7fSTbe&AmHB)Lo$S-6=IjaE#p3xe%_L*9H1T|LXUKdOYvWJ3 zXvMB_qb{zMci`O1?->cWXFkYzB0xOQ+ zPUjkm;2N3{nH9eC$W`3Y7gS8}~X5XOJzf}UEse&-y-Ix?~QG zTHVcjefm|@n{-I!VMoosj4sy%mOM|H%IFudDVXTz*v-%M@wwM;}Q9!{^2XMkLxcJ*0gJf zS`a&vM|q7WWZ$+AM8@ffhM}$)oLgs}c~CGhdI`h^gRfVBoB3at{J}d>)V_L=#oivv zE>F6e;0I~!-5@9uxh*{_f0rzW%%f9ggd))A!ys+J*X< ztg+#JD;lR|T6_XWZ)4uamF|!e_=Fp_{c=^u%giitzHkG%ztQ?RFS07Am3u(VV`PMS zsFtArxvb`avfWH7!~5UcrDJjE)u#>OvQbt`RB3KU5{v(A9L~SpEHGy#RpPOo*kik* zl4Xm=@oEEKC#qXr!MRanfct~=mzeTn8I zyrKoowTfpoAM$i1Qqqgz!m!%Fo{MZju@pZBSNv3i;is`kE4)#+0ZX-`&cW&>hfj?^BHqbb@+$(dMqKvV&WD6aQkCmXf( zX~n=VK`6Ff92&)XO{PZ$A9=#Shq*kTYBPz2oit&IiZMuFm-loWdAC>u-tkf79U7;F zfL>W89lOqx>Pg_nKKsbXg%X5p)t)uBgMYc_^9Q8Y7j2`*e|m_%gt!>qD96D0tU00S z(r5!8*7AJbv^!K1XSzf27a z+$Y{8!UOex#hc~QFr|Yidqqtse9vHfjX(D|>kJ*Pw$fei{*Y$3hX++DT#kn) zqC;4Y2ocppGUK zt4aT%?Uhq%1ABsSwn~0LUXyhoTKtMbIDFNG>rhb~@(Mbnf`xg46h}y~;Y%5Rg7qW4 zY^+{(0GM!1WzI{2w~J@`;+ma3#Cka<^n1EFO^Th;B!p)=CSVK=FNR<47)1ib_J0!N zj(~_X@+DM&-XwNiVH(l+wNxSyjvo9!8_V**arF#~wgG#Lfu;F{J^nftxtzil5;j2v znu7B)kfl7Uv->|FtN@{0-uuB)mi(8jAj-|76}#X8PN?ZSenl9(Gqadnvmd19d7n-< zytwIoG_Ln}JUtbZ$E)&1(t3|2&h#`1=O!nAdxlaJO#2Du3DXPvz>{oFb_+=zc#6aM zi8$Td+|g?*BJe|UDjT3D>{SG0l{&8yjy%4!z}jYPtPHiu$NGi0)3__#v$@-@G0 z_}_Mo6@JWxI@e!r)Lw4n8XF_zg!D@_k3TjRw*x%umZQ~;;~bQBLJbx)NnG|g8o-7} zT&tLV+0wH1YMSD9H2gy6mZHVYgt~70vy%NO`)@7m@S;;j2!nkmfE=^7`XMXV@Gsw~ z(Zj@UADOery#1{f4Wka@kc`({m=L}4nDTzHf}SUM(2+~w@=DYgC*l*F;mp))2w@kF z#Wg@3xr5tY+`Romj$hMh!DEKZM^ApmB~QwEE{sZL$QUKX23{$4=3co*c-f{#Z$~Zs z)WKvX4s9S>?YI;!nIlbuzWlZF?A`%8HbXi0I_RUX zcKQ%iZhp<8d5?ZFpZoDEE=kXcblb0)@K^}9*tf$5@h_=v#}aWFw>F(MC^y1&{2IOl zKc{(@#T^f?XzS#xGh;jU`k^`M(FWm znUT8!YK;fRft?vk>*-_4mIp0e-^0(!U#hFgP_`2s!pK_T#J(Ljh*zXF3*sY3^=iUV z?bqKOkrUo2nXet3qjVEbJ>FzQVPGsLxb%QzC?tUSKWi`LY_Qt zpt<;M^u*<6VqVDaf$q6ye$eq3^!e<<&XTT4Xo1rW5FM)JFO#hA-D8FCvtkEWlzR~P z$ZkC;tl)UdjD3zVn<53v$qr@sl{kA@#NiSVct4C&((4fWqn!=CF+xZjp3n)KhKGcd zc`Zy99+heDIfZr35|5Y8OpFSEsoM&&vj{uWkz%f&EsRP5Kg>3+05V^U8>&NPl$HSD6?98w#UhNsr9@n|fBS6A>zp%> zv%v?va<<@Y81`rak4=$B8r#K2u{WS^aI^eJKtI>Xqh7S`xXe#;``zAi9w5VIq{wi~ zuKF{_tWc%$V36M6lw<#N*Hj*m>?w?jVw0VO#JR>-@Aro=1o}Q8(s?JFVoetM$F>5; z)tYI~*`;z|km?4NFmJODw0Io$8E1CQE-f(_I)B=ui7Zv(v0LT)Irj z8vuN#S#IxBDY#i$?%<*3qtyGST^jGqHRMJv1FvDpe!e;B}m9k&4Iw7fXLfq5P>|miN20c~}(tcB=6-a#7VdXuV zU3QGLQkSsAB;>E1Zq;?|j~e@qOVmdOTBk@`A1e?@pRD<_i9v+8*qJWDxp> zayfiva zCtP_@Z@7@8M9yj+Eq=fBYR0hV%$A;Ku|;eG8l|M4)~ zz>U#Z0EEKB1ZX-ES<@3~@TY0tEMJBYp@nig*f#`5CL?8cXuuVE^|KkbiDrtr63d^; zN3Esd3CPihugaj_(UsRKA?5kSsS+Rnyicgxmky9dX+!^q;M}JWoJF;(U}K24e=INm z`K0tJG*4KdO8k!{O&nqT(>&Cy$2aPZUtn&@vYC3f)Ni+U%R4q-OP1yA%p3sW$cb_j z?zFo7U?xs8Hl|lff?ZDH)&tvu6z;Z7w(I-G;+R6yCJGwZ&p~y>*I;{_N#fGS(SM!y z9}?Bpey)?e2;1qIs-KkFe4H%kVVx&gWQfy{tg2T>&Juqz<={iUby&STI2R0(rb>gi zqRqPX9i*Z!zp4UQkpB0fQOor33W9V_*$uWZF>~@X=6hu=d16>2d`J`T@q51%E~7*Z zak@FO!wQqh`Ow@kq|u^?X5J@G)7pHlrlx6nCP`AWH*aB|eI*$mpyzlb2qY8510ddVCyXIrPyT{4MtFlY|;Youywc9)9|7*jWT3f<;E}w~vvA+TWo=@wGZbi-;;i@rLgB{ip_i2lDX**UJ+hy-3>m|fKhDj zeX50>i>&dRNP5+#>Mv?yVw;C}l1g_V5%<);y+oCuKxWyePdWw(bn1TzG~^CFn8nO< z_5r%hP=R)TA0~$~c@rv*BZ{q#rueYR-8xs5yH7e)em)7w{Q@z1`~)!q>w(BzL{yej zOIM~s!L)4N0|98}8Z{XDM6Pc;zjVc4FFs?_UT4z=WFpFo8nBhPL^cY|mka48Toe_K zr*Tlyf$;E8GSuIMczq?jSGT!T<=j+6=Kovu*<2hiZvnj~>oV;nU=G!J4Kb{QCB%Kp z=&_>B-ZBOxEThh1F_@dxUhFrAUbfv-Dq?wkd*beD76NP}eh!dlW-aH_D*9A_6m`aLBXg=ka{l zX@W|~6tV6&H15mGJwGCk5p>4Q(8_QUySkl=X)hgRur)j{G0d0P`0l-8(iso*oA-(+ zIv&)yiE^XS!-U`a+Di-Sk{(RMZAH>6LC)o_#-nI@Z)AP5oqf>GbcPmwOP}oK@v&$5 zl!C-@#SNd1A{EThw7GkE*ec;<$j*RBy6w=(Il9jy<`2Py?9ue}$c<(ARcjo=<7*#T z*sfn`JiT0x35tp~^g)&jc%*7!kW*W>{cmV-|C8r_uts=T0Ag8-LM(4Cv~+}T4_MQ2 zg|APBb6m%JNWelLlN2rQR`7WiBbpd7`}2Dv=c=RnN6gcJKZhpMBMW9FfIeH_1#_tA zQVB$b!3BZp1LTGdCjk3PS-{D6e*fF11YNd&Cd*m3@4cn3vkmEutJZ1jnT84Lm~$gzp8zrZ^$5DFg8_PtQ{CqVUY0=^pta6R z;*jz5e7);X6qTV5UAce@*p~~LOzH~aWcfd2Xhs4vb==qm#2p%-aTeq!4ELun88LPC&4kRo^opY-^=jCyaKhN{+JLCsfK`*5T0CwagTH$ro$2|^VlTe3~ zIS@PfI(3f)>Zh&-13M7sBbdz>X`|lz%xk-MY>2!S<(KrsB3Pk~Rdbxv$O*Ve3xxgy z&DAg{>OQlK8(F%EI<7GPQDGKfKbmU*Me3x~NkKNsxju>8WEV>yI9B>hxlxNOi81LP zhv9HMEb>LpPMUY5QoL?p;N~QX16tW>macqPpFEvXUcp2ZcOHS}C?9XrI-k4?an5dN zoey%CydUUfPZ$UMe2BJ<`q|EY3!uG8asT=dWC(NFbM({5dubt{&X7YX1dKNc{|;5S zFf3w7_^*r?uK;L6Cwo8}#*JmcB={bU0rHSeoxq#i9sn2U%*2F73_VN%)HUty<6Nu> z1J{|afFNIFKVi5*m4Ljeu(Sy|WO(lS^%oR9hy!pWcJ0mOSd-WYH;R=JE~De|$MLg)eV_{^QHX`2wDSE_zg$ z?q1M0$$}ki5aOc7cG0fzt(tDu# zL<-uPs%DX)q>T_lCjzs6w0T$~DgQBi;JpDv6+Ye3tOaS5%Y)3w?RX1j77YkC=CllC zL(U1X+TZ@(<*2fsj1~~XfrJ<+!XSXGiW&feiHb6q#K7*(W$u$BRpF=(!mcU)zM{U3?Qf*gJ>vUYC=D2eg#ZL!=6pV#e@0}ZOz##ZeEYx&le%hFW~v? zKc1F2lUeE8U*1I|AO)!Vsd{C5pcEHO6m;qXIW$yy>F!-@ePzf zC0mPP@ZSSKj3`&KhQ^;RKYV`Nk-8ucDPK+xhxLhF#q={uNsoRU6aGnZopOE-ByK)W zIIGG?r$CggEZ?$@t!9Nf6fCJbh`t7FvbZvc6y{)iz-ZFu3r{P*@j#lA?8X1+F>4kN zfL9WA@qW{eNe_cwcd$vDhCjUG;7bMM3D=uOsUC6WKt+UtH9O~vwWcp!q`HPAW?k^5>-4%RO@vw zcnOv(>A*&y#feYwKWQbzzrxW=Syz+V>60shkAqwt)bW$z_pHkGs20ks_C9z9E;mIVN{ zjGH~nYJSvgRsZ{>Eph2&s}rP&a8XPsM_^sApIP0(A3&T15 zbzTD!d(H30^FufV?j8TjRGC4hI>~yQct=f~1t7hj?fRCc^%|fx)=I}9(q$^=22}i3 zS)+!q%` z4j}Xti)YELOXd{G@@J0|68lH{k23;DB*#M&0RSE^dEaYDoIZkiBM9!M#0OiYFc(j< zpU2>HAq&@sR`L9>&_K^O_1Q4BV!@MBJ_anB|#I6GW1X|)KkaQ7%ajO zC)>J@ThPTFkq?=rCIJAud{p{sn$km8L7VE8uER&5rOLS*Uy6qUo$VFYlwsyx!r0Bv zpPex`rsY!l1v4Y8ou5;4u#5sCVJM$0{dV+Z1<9(7#k3av<`l30ZI63bDmpYBMNkw% zLAb)mgK_3Mf9zw6bx>s}k|qUd0Z;*m1n-moh=dD_Aym@}YapV-Rx#S0G`mfuMXq{00Y;YQKvoVpwsG6mV+Wjqg~`ZlwJtj1UmE> zuS;1Uij%SdolxKT2n1X(C@3>7n(_Z;Tr`b3VIc~xsxH!5bhUky1KX>%w-?F_E zveqoCHb0D$G{V&p7SP~AALkXRps%9E5l{~HGBm_2zrAZ*M;;Uj-7>81y$GX*^_cNMHvGKG&s zlq7xwbGnCT6ZIst-0?be!}Ngt49^&g01s|tT7c)dB2QD{SpL(!_MsNi8;_@|`Z84A zI!oZZmh``OdprQic+ClpYB!bRVVE&qHIr5Zm4-YD0;80vCs{#Q$Vwaod44AWmXhd^ z0JtpA>6;Kc4_H>>g9q?nDo0@+yDig}&)*r(35W`pIZlmavg$~Pyl^oXxPEjumJ?>bwS<T^~dFy*o4*B`FxcFcefT0zmcF5F$_btcytwu>K+6>u=9knLO=B)HQ;h?Fdjl zXx>NaNW9G2Iu*$ZJqyY&7eG&gN(@-^2Yz36HSXZgizAKuuQL=_(-c@i6TCnZz*9=5 zJf+;hMGV-%*k3RnYu`*On3#Y2x?8IE{C>)GE@QMQg z)DHs^83LNz4xj@ei;1wyzKS<+hY|>qS==OHd0(R5+T-hyCJEdZdPPpRF0wyx>d})C z!Z>F-r>{zfBks1~82i|7>B{YZjbM~85EHM*H?UQ+7FaDhBwc2U^(tB5z*Kn!~J zZ=Dt01+@ySfeh{86^Wdx!Sobbu?PVq4s!w-Nx4+h-3}_TS-Zf3=x^-nJ4pfkQt3D= zdSl;ZHkXS=z^?5c?6cmuTb}*m2Rk-95RysSQvOBW95`NW+5JU!H!pfyxuF{$?j}i$ zUr_2~=-11`AIa}gy(A3YhsSOhtkE7KQ=B7j2;3KSkzw-p6)YFFw2lR3-z>f%|!$R96!FPrSKThA*jMQ7qAJ zY~WB_FhhIg?dN6@RYL{si7zZ>|W8*V(` za;z9?6w{C9H9}ms9REwc8UgAP)4V*;Y$l4moZG7W09LIGxv)Yd;B7$<>FR_uI1#I4 z{~QN?rO(G+Ny>bA(0OwX1GVW93xG!EJFqoD1T`(IrxD1=RKqnGm4;=t>^qt}`KRK3 z{`Y?NG0!YpAam?5sSkk!AS|@2C=pZQ6$JlYFeVZKlAEF&BJ53tb8(CDsPp>kf=}Vz z6kjaBSK`R4*Q+bX_qf;;TUpkG)thN!v4iOwj5=}I7$h?C4frY$m#wD8yjCf#D;btO zRm*;(g>=(iQz;D$65D|tK?&aeI}&wf=s2R=AI3GLM@K@2L^?RwRj zeQ>MtBmBxsn~XSc-e9_l8&I?HG>8-riJI1h)VG~S0!1OcFqPRF6P1QHVpW}mYUI+- zMpeF=;rmQi1lfhP4K2;<6~R>Omh=aB1Dot#)3f%sS%x1&uIUk>>O)1yOlqYL=Wsy- z@b?ihDj&D)Qr{4stH69lz)?hcDoheplZUR)V_JyFL;m~2BIvTleG!V-RA;#lqg#mJ zp9zYZ>QknS2mLs91y9FFKjYbNKgv3a{<6^zV+xL^h?-Of>WkOjijC4l3b;jv3LpzX zfzEBR?GIgxqqo50Y_5NU?|Kbo@Okiq!3T6u?{I!E0j>LXVN|u;fYl_?ko9Kb7!4$Q zs)0tzc>>PCk`EM6!PD-NF-fBw*@DFf@~Gdv*v4}%7Ya=nDVa!(ntcICOY*rj%UVXX zEsf|h^V!8iHAd(bi?l23B=P5`_j?~N;U6yrv^q&bPNEk(F?|;W7f(>j#>;$fy=@9{1kZW>49TJ&J zxFlr6rfm#9Ko_Snu!Zt8lW+rJc_bn`(GUMq`f6hOpAmTC0JPH35|QuZeyZG=Me%Qf zK|fHOhyuk4uFh%7bEM=>S}|M;TVh_xYw_=tkJ9z&G}`umv28Gt7ehl=>o}HAMXtwc@mizjxpeo&*}Ib z{ooYlo*MoX##M4!9c-&GPMmFF6q-`7`FxT3oWLJKQ|Ux_ghsVU7f`05B)*e&^LPPL z_c8Ecphz`%;Xta9V7xs-9iyMpuAc&QTthW7p!|XXnG{I5c|N)Q+6tiR41!=l{Uy9D z4STN&zqNYQMdcYPAmhtP15Q4q2M2!TKUMy?H6_d;(<31RBvm*B$gndVP#BFRgfNwX z9DTU}W|H;DAKOkZ-WJ30*W*Dwd`Q-!Vw;D~p8ov#x&SF~X&_B4M?+#t+ zU_ibX>^Bv>q%7?mPv%Iej5l*WINgEJKX=Rw#prc}uUspC`BRNP5_kajsszxJtTrRb z&#M+PB@sib`|NlAFqeN&IWI{y(kVQB5$|XZsdqa1y2@VTSH*-aNz~21QSto6`|%~o z{p9>iZT!j0rHLw5+KpcX8;DZQDj-Q5-MF|-Pj?>u|55cN&``GF-!ledUy6y4UCPKZ zsFXEJLY7q4$iBu~iL%TPC40!eMMY&Nsl*UUStEOvh$JD|nfb2A`~Lsm_nqV1=b7o8 zxqD{r`+lzL`YqRhOzF%Iu7O7P+8b9|Maed9Gs!1u@Db9{UB?gJq`l*_v*}7SeVjKz zW3I6DZ>00_=q{Qmv`bs;aeJ?`__g9*L^-{B^lW^L0o7BKOSX?hl8d65%Ck^A{5A6h z);domH_2`0LVf(~7}GgG9LmYE@ zUBx`L(YLtT&7{kmd6BWEPIJ=8{GnV{?h@MtS8Ln7hJ567*IKmt#`LY&D29%B5ON4UyK~LN2fdP;o9t~5mjYCJ*AGt{TSlz`J?&j0sSwJB>>{=>A+g-Sn8*?MkrF~wyRYOz=D zQcQdW+&m+WcW16JTIUV;#%<1rTzjL>Ts;*=N?TL3%I*X1gSdR8pClBoT zn_+`?Pyr8tfBjt}(HK8e>p_4Z>=KOZv{16G2g#kr33{sVi#W<^lC^TwjcN7&GXA9t z&nH^_SqaGO!+uS%h!HRzT&FD}YB@RVUDVUOvV2(@niq{lgYL`@`P1e}=AO>*)_QWjZr3q1Hkj z=6UF4et5GocXt#r(^;xBd~}9_e7-2cDwo?uGn2M#ux7PGzqg(fU3Wwe1DVrkkMZDx zt+yD>=46sFaLJ3VR*w*4pu^a7(PwJ^vva|R*Vq9g{~rAN%)w-{-!2*!;t#egj4wd* zF=68i{|{U`K|$bBvkjO4__k5H$e1IR`wc@Xs(Aiqi^Fz@IH6p$UGkB5!s>e|DgFY; zC%!KnWo!NzVdLF&r>vq;^ZdrE=l0>Ehl|UMi-6b^9&R5Venv_y|C!*|Dw*6Dycg3q zoIcslrbtH>Q?TX>XsA$1d!X;~^j$ zH5nz{L?jSS{@g8Ts1MjFDM5KTHHMY^?WywQDO%(;kz7fvF|cr+!MI-Yyk}t1a_d7= z<_dZwj~)0y&Tseelmo7ShBBqZ1`6`taRSte*kSwgMsvt{Pt27Eb;Dyw8+i;_!DDDt z6oP|d02O@gJfL^1zaxx`hsg9-VyP5&Mhn;ZUo?H=&+9o4R|U`DYO;Kp&D4j;Hx0M? z{JZFn1R2>el!fSD0p>)jbk-pg`;22hLa}-x{rgq{+>hrj zJ0k;OXK*580cv0!)pvq!fz+Wg?e@b(?eg-8cjWn9c81cWmvzN=LO7Xu8TFT)DtI~L z?|;5acTAJ_5YRKa4jh5eSZ9C!W^JQU5p+OmI*q7>elzW+)Gi3yX_6Oir$w3MHPS*D zk5Zq>&T=8&J>9n5LGU>-$6H8hir!bYb16&k#mS5^_!VIDLwjr*S3J zkM13R*?;V3{0KKx@(9jst|xxgBY?deyE)bWVwoKKx|ne1uQtpm`g_`|yZt`}7TNwZ z%oO>J>Zz=&qqI3NIKrRZ5P8O z@8vX64MmUm!Bi-EI4VidMCl@9ju?25j|t9?MV?hSu{VVMe#s-Ei%3nDA}4U3375L- z8k{ubIit^pq&bT4a6Z3Bdh@vtpT=O`_22kQU@5Bf>UPCr*G-!o&F4Gl@d}uwYbce? z8e28(zurQMNA~q;UO~k0kr%T7{E4bxf!I-Wx4jCPz4Rvg{p2l+VQ90d^{7N*xFP7RC{H<5`#3IGnimd9 z`kk-x(GnNIMdEOWIm?Z!%8c*1GH8F=)QBzQmH~RhW<|+9+6)|B^a~UrWKK$!686Qw zP8kgt#ccBmcdBah4fChP881=xMd)qXH*?^#>l_-Ous6w`Tty^2xTJ#zVgnvXyZVYq z8H#|Eq0$(k4Ap8N8z%MjskR}RMXF&BLTo6p)f+~jii05tRG~L6O4><13i0RJP?%(N zuk1DUxZhloQXz^$b|7WJGAy`c(Q?PjN2kY(JO(UqEg z)ERX6Yp#1FokmkthN_wkAU;C>fzjvUP^x$$aO`(Sdx&X*byn8b@8q|o?i`LxlSIg( zb2ATt!rRs&4AEfaKMd;(aC@i7Cs58qB1Ikh7eZ3g-jD=;F0#oJTm)#=esD-Or&`!# zi{jV_t-`V*1RIi_Vs~M#j2I)#$d8nVm6Fc(j}R0y`HIs2Oh9~ex$hjz<$Tn0$5eB zZtamZius=EENebizjOrZgB~0;x=3$f`JI{S7X*F!5Mgo$o)_XK;Y5~QFdO2g4`R3B zQR64ss%7|rC4ju=pd-*|)O>^9-av@eh}KLVnT8a-Jhm*?W^mn-%xWZW!X;<2d(Mc# zU3~C-2CP^4OV@2x6~`UK9E&hD^2263TOwq=mRq@a!cqUmPR%XC)r8|#tM%_Ih=-CL z$0dQ-oPUl4PGGuCKMN;Ht|v8=&>H>^<@wZ)mqkMl-ky3bVr|YT<)tw}3)2*Ny2CV5 z^Ne1VHiFYX@;#-mzdN~xR>OV`aLr#I{u3RX@L8ZTZu$8Rv_4xN`SxeS{kg>g);wza zgnL}&3n~-CO&uG<7gS1G(?^2n4V8~9m$mPNzjm4~Io#=^CHzhk{=P$I0Ah$vmWfT0 z(IegBvU`>xJt@A$JKmOD$NFg8sU@Z3scgE$9+|P?+j%W_Yb1F4`-9Td##daaVUcO0 zc`6{0!IcrNsYs-~AN)q76SJ>9v-2X@#HWcy?&-RkNZ&g(KXH50r5un>MN;t*sb<@P zjXRWX%0(+T33riQ0+ciBIjLi75X`+4Q~6 zcdG74KxQ%JqPj?nN3ZQ%wI@t7djhby2)!@FSmRh20j4lr0aa6~U(=3`4A#-4t?4w9 zfqX@@Zs~?AW4yNA-n?n_nl00g)w!TuH&cP-He%&%4 zqi`-{iDO}}{_jZUxY8ddvlV8!bu{b5{iVNel0)Hvbm3b2lko8&9)L@0ru{=b z`WoV=MZ=;2!mJ+JUo^TuK(ia`*&fu@@P1nM!M$|R`G5KjfhtzI)Md>>uRQ$w&ecb( z=z&K2x4)SZ&cVZ6=L}FdlJ3Jbozo+^XA~3e1}?Ggy9NmIp}fwNn&GMi4}YFr;+#Hmn&5s|L!Y_>%YFy2l&Naf5-(6E#pe~DrgNh z<9Au|!n@JW2IO$^XON5`8gdARe(%?Zd2*P{6@(KN5EeE>N=TL!h-6uOIi%*j1ilPX zCn~jk3CjD-&QFR(GjC1fuxs7Wy(8|&ULanFoHP2v7=0FJ6s|?(LzZ}C zG2%vusk7%LpI>@6Lb?yxCH{g1SEhFZ9ef8Fabc`Ft{$tn&44{aY2_kz=A6>7gLz;F zS9w~)e_xs}h16`T+Fwy%MAIP$FVs*A4ATdA_Ej>Heg75-e&x)3!FV#yFqiB0W9jH> zr&bABS`zp;*GPGN`rMB;=fJm0kVEbClpsd@axlwwt^aS1H-)a#Jkn6V;lG8Dt9)xj z)5pt`t^{LEk)YoCQEsntUbh%S`gHw+wpZj_Mz<2(olk+RsFc~IzRjC`MnH^;9jBhV zapgqC)Q9q&2O31Oj`M|4cM@l=sK8el(H|u*H9Rh1L-!wxr%-Bq<^Ap+Pob0A{PKf^ z-lOzJ!j%TIi+pMt)SW4NkEV`-zEi1#_76K4cA3=fJ1v?3fo5@*83UX8-Vc>$*Q|{8 z8R#9pm0(u$_juOYi6~rn)NbfOI0CfFqlejJXOp68Z}aZ!cd_1->Zn=g_+ij)Ir93& z>kft?{M49Lz2M4TGuZRYV_&(&>@Okl`rhb>R~;a=N}W20prC5ISQX=FzB~07ZJYnf zlZbs6K)}~kedMsw-@I@ii(`z|SnKMgoEe=W|8nKvoxZle*RuO)PI{<@Sp|HmC|Y^x z87H|F^Rm!Aggx(Po@&JLhMMfXZ6<^Um2}24gJP-gpPC3;e?CuhibR`OvIi7W%sP?{ zNbmznECWztwfSq1!?{7J>EpInnW$OjDr}8A0C<0j*U4}8+<{F_!=XOq!h4Q*9k68D zbEKGV-2OJox_Yz2c_z452T-`T=2`3AGP)cxv-=_Hl`(Ja55*5M)JQEQ{9nORt;p{+ z@3rA-5oK!d-+fk*1*I#8>V^dEl&YmIBTB=Efy(fy1@-)>)XLZp$0x7xQ(<2+R8SYZ zS4nejbzfSted<Yc@ zrtgZYHEhr;7+lp2{r|?>!Xw^`%*Rdks+Y3O924$&;#>Vf8g$CxcmGuofAI8uZTa;s z!w0+pEzVXQC9g!Q)sn68VckI2F*cpycej>tWbxQEO(!B^@&y54yq*M2tg-4D2>|Hh z67G@czUN=m8qA&HQ_e$V!|`rC$``?vC#j+Ktu)?YwX zMDsD;;?~ly>9ePtes4)yX!-kAe8hyWL1l>H%%Dh5eRI#ABZI&P(64b6g$kTgLJUF! zK=fZ067at9S;c|BwV}?4pTUPJw=DgWQNX{y3_`Q`!Is$dv--}~xdWr`pqc56VL zBlKRfBDgkawK(C8Q|rgNgKk@J5lW8;n|4*DW$7P{0+!N*2(Xj}Th=nfl3a>3soiRZ zIHf*}*!}>0@{@KNew{Zxq_T23l#*4DOgFzT=SY53E|Va264rF~W0^d}r)rcHgrWZ^D zRK`DhSsn&&Ke-rqzUiiRh@@+tr1MZ)V~KNpc&Y{RWO6RL!`7B+f~t&JLG|J@X@YP< z!viNo6qyT1Dh>ySPsUn;(Y#%LNpLyS$s??xjm}LSgU$>DC46tIg5UW8AFV7}U}u&Y zA4KE1;7vW?Fy@S%wc2}@s#j|NBTAaNP^KFHdQ;GD6eVrRWz$C!NLSK%J&lb|sOK_f zYO^i5zM(e3!+Su5&)0F>Tiw$lim+Xsr1;^`>_5F`$kXt7h}x0LX0Ik1t5!2vk?C_v zzt4Dzp92}9R2q{x2l8gvT;(&>#OKmcBCgiwWObR+l`5C%UAr~A@FVa=Dntb^4KYmL zR`Ni-2SS2zkHqDU(;&N!`FhUBjr|beY(Ug?rJZ9xr3(Ru+vhK{OmS(VQJl>KsJ-`5 z6cdu5-(-f={LCoqg8MB~dCSWEv^>G>ns0Jc^LJtMIHxrI;{nZ*`JYws`ncP|WX&TMEHzT%e9;_At@g+- zhQr{(+NHkTDCnuiGiC4`@*HaG0N-Wi%ax04HEaU|x|C%~K@2J(#uueu74ApI`rmza z)?4nPZxNlDuXUVi^?MV*Z5~-qKIp%K;!=Q{5JtgB^ZQH}0@+wTL`1yE2tmui^$uxw z&FL=_{0Hp=E!Bp^9&B9e)@;HTVM;J^tFx*clMb}@MHnIH%L0pN5xLdKR2NT{<)tbW z2boU(7i=f|hf43g0RY6BS!O!blQj%Jb3@3gMrhex{y zk`n0%av=F4g5k>oW$T2JcIdrI#F}Sp;Jb!AX8|2DPA-?5#$W4IUW@?pAxqlo=tn@B zfFgq6O*V%>f!B(q#Ua%}{KHf`}i|1Uq>!HlLK2sl{qXgE!&kG+1n@5Pf ziqzRRKD=kxaGj7}yojn!zni<0@mYBIvy+{4gfyRn^IT!;IHw`~V;(CX%XkAYHn)>X zV*yi($$Q0)@^%`Y;)%Pfjpfc_O-W~|Ei_V!EG~V4l$%g@nYN^x`WmCgmCIhl6r2iw zyssf!{Vo%;jAjPi8Ebu+&=s`e`5r&EvN%i51Kp9vkqvY%O!-5K452TI1kJF(g z>U}sp&po_1>3*^ft;Z5+dCrUdL>IrJ$jLm;he^^3J2c$Is|lQ!8Bm7uA^@tLZjC@t z03BKc1rTAG_-E^e)p;}IZkP)GyBqE=J2-ofiHo4msyJAs=K5+9pRH=Wn3AeyjYzgm zHBBmK1O_t1QLc4;Kjh`$>izUve5b={ODJ%amK zLblAUO770yXV-i8x2=U+-d>&wv~yv-s(kB!qA(J8Ja5Wy zp?C_EURSUWNp;lZ;at8c0C`OUV+b7R1`LqbIBNRGJ@YoFYpWsW>VFeI-T1hDb{jT1 zgdPLz5PEpBT)VU6pVzF6vNXV2{-WDFUgo+)ul}hTeQBS&%`fY3t0&#npu`rHa<_E3 z|B)!Da93}0LaUiAw65ek7@0rHwg!_!<=c3^yvK5z`k9#|I?$cX7}?19tj!!!=_6Fb zHg10MJFkcO)PNQ0I5RdhF8;$3C+c|n!!9-j4>#w|0X+p>R)$Vjb;;&r=jEf1MRDW? zQ)19dSrJs`_4jC9hD=9wJB@KM3=K1l%ZM&Xzw!}d`Xk0PrQ&(P>t9UwA&=o8MC@Jj ziac4mtQW%08DUYwzKu@l2{i4pBpZoaMlF9INvKX;dKx>NmQT6u@>eja!s&@^#?xkt zKZ3v%C$tg)bNeTG8;f`SzvF_*MBE=Z@}i%niG~|y3~q4Pb!!gb@eH6XWo8a-c2N0Z zNiMId#}su}ixz%jo;imSeD{L*$f5u>`mK^^E_$WfXs}gL*AQ+_Q?j`x!~u1kt+(Ot z53U*wK~gLlex^63C3+IHxFiqcC;Of*_bhJp_fRjbUK_1mQ`PZs0%-^6&lBnh{ki4c z{i^1%&DpqE6pkJ?0m_+=SeHG)lKX?Da7n+lZNm(UV@w0y!tS^}8o;o< zPMTDHxt|{Xf^55|aIl4-SWIVJ>4pAc#P^O(LARK$(-llGazheHj?z3?nhAP+p`3CT z)m}-7Lq)tx%md9FDq+D41<}B{{`-vS7r7!pTN?VL9nX*X^^!w@xf5{a_C|u;5<`16 z#xg@1k6A_CY4K#PQ5voma;@HkIixY2uDr+`=SYscJXtgf(92o`mF~zp?!o}0oko|~ zCvt$<%AC;h_d6C`3J&hmkWoA1*l1R*7@(Ur0#pHLd$0W)C-Ta6k98N0pT}^Ht1h_e{Ho38Z8TtE_N9TtLXO`gihu(h_)l6=xX7JwWi*eb z&F$sOM}JlyEqO4s&kAQ~>uKS+qDHP=vZ#`*E}}E1x6T=q7f@1F4W*n*^R*sloxbMQ z?@}E|Vy~$oTV@KrOanM2+r6J)1>a>(x4dy=xuSQV4!-OG9!UNrQ$X^UvVgLZRjWM0 zJxmT+EBtwlZp$fq)f@Ps8RWdj1Dlrm<-mVlra)BTDZLF*h1IaX{il}G$O{S+Ir$An zb*R44@}~uRTVFN1{inZeeI@}7E>-)I>^<}`i-lmitQ7*Sfj@dS(o`$0`MlC0T$0KCWbvQIa z4iuTa7Z-Vh=pK9Co84;_0H5C^W(%KhpHNB?1$iMi63&)FIJ+EKV?FWhD_Avf9kd^+ z>Y#(uh_iB$8z_LDllOS|L^&N;?RKgcxz|zu>{QQ(Tx+YQ<8-(sF)%5ERxU$Zk3-dv_^A4s zS8-S|FNe&LlVdKg-rZz~ke)*gSdI|w*vCB`f77<Qt z048-!paM*)0H{H{-apiIQ zrSZqBY-Ig;Z*=Xz36zX#Xs}hTznk<>{oBI~7R=jh4VJ$G?=If#4T9vc)1R)EI^0!# z@D=+V)CaLOU_NVGzaBuWAx5wu|Cv(d(G>7`7u09LrGz9M<5g+lm7zO08kY%G9|7`U zOOLm-B{rvXHSU6LKl4^dy*O!dVLkJcrdRgsx9a1mZ*y%^tvif!?hH@gm|eZ*lcOuZ zz#UIsqFLN~L#;Ig?$9Rzb6HEhM30R&_zoFH9PQbwLcj#bxALo$^g#j*G6WjK>AQ2n zIg8ABKO|=S^Vf13m&+Q9FKK;-PSAiiNpBzyN6YsvmTqFXknSPP9;HhX!Hsni792VS zB*O}!Xa+J|uk$v-Xbw?r=;DDdbalXb&gI=pXubyztFotq-onrVh8A=PTOYi3Hz#=c-9~?k6*JfPw~>qmAG5pXI8z zOGQJ_aNcAxaoF3PGG7s1ICzv@A?V{VFBbLoYGR)A*om%9tosmu6?H3eKc7Yb#>9cJ zD3^6|%`LW!)6{PUc~l)EnNag}pGeg15T zl2&Du?%sK?(8HO0yDwz;kOlS;4?b~iS%A6B?mmUuXGJ>)ghA$G(H!^&We(c!sdfSk zp;z0a@`61$O$|QN8hj2j$mn~TUFk0DxEcg}NJmeWc)KE^rt{d*u1o0n^7R=v<;%+l zR6EPQ%Q>K@_vOq+v}sI|=aZr_rb-`98pW_=anVkatw@QXcKi$gqrw>aM_(3xsts`- z>}ccr9jp3^(}$+Hcj+gP3k*}RPaWW7fYqSdbv+ko*1hIbEl3A5(t_5=e|{Y zF91wkt`3i!#TH|jPQUlKFcfs7CqI|5FXSbvYxk~@k%M-3Rlp_Lszz;2sGi#NAy(2A zISq2%2q$*pKRgT1-TnG<;WtvS5-3T&a*EdV7dqbk7g}&x;5a30Sl8;EyVRsj=Fpkb z&j~LNHkn=PI_h&me2m1Uuh=7Vuh!wR@11b};*L;nARxQL2upsQ9$Ed~@6(^o4rC@%iyGBxyJtreB%hab*rKZIbk{m5;?d*Q>AR-foCv)}$( zOlqof3zu#WhKJ$8epj$JGXgmE0MU!c{Xn%C^ML?%nUu(#Ge+G1SVpxfj7yJeuJ&nL zXJy4%0@bewBxo|pAujd*lwWWWz0pB9m3sg3!^oVG^WS-6B^}M-ukaiSfo^_s*)gP8 zeYKV??x-;Dax5>LC7kGY!AVEL;todlySQ&N5)_~G7aLJFwPXBb&rNO`7!sRr>i1Z+ z^{xwDHk!0?bdR;9??8eU6GA`2#N7K^tR^O6BRB2M9z`TzDb!0wLbD1M$b>JXuXg6i z8{)Lv%hcQM=RIlvWu0RI7ADN~U||vygDxEWc^W*!$6=dQ>7m>$nRA_o?J0*2=R8^; zY@ZM8m4j#1m-T%!Gq02ZLQJ3H;o(FX)_AJRJX(6e0Q>n__JT zJ5=w?o>CM%MY%aQyiv#w+!gr?KZ35*ne(Wny#mG)F zKEJWl7c1olGfRu3ll_=T$y zE`qaUIHzT!cqy1Qa=#Tx7xFRYIOwHxxe^L=nb4@Q1apu%pVT~A;dPm7F@^SQ8-3Tp z?R^rXDA{uQ9pakrlj&0*GWlOHX66HOFiBgjJW1GW6;M$Q$Amfp0J5C6-%tE(f+30S zp9D|9f9c+es9ssbn4QS;zjxmr@&ixbRnSs|pF;p_J~bkFdPkH1CAoSrSqGftR2D3|5Pl3Qacl0i^jzvBPD^{szfo!^v8@hJ+Z6X|E&Gm^i-kZIDawv zG0(wkZ=IVO_p^A+pP%CAETcb_5)#{;porW+5$IME9a;VB$E}MQBP%}oC*pvd71r?} zU7Pt~g%52FTOpnw<|s7B`b^jQ&{koq*s546Z>h~+@ML0mP`ZKc(A`0C$DgICwHsbI zVv;2>BD#nZdMu^}kgr*SAmZ}54J4)qQ&|5vrr3=4&yW7=W)ard5nLZ`Y%zeiSyV4o zZOZeZ9=PCuQ>6FdFa@RF%%^@~P)W$tpi}RAA>%l|A?mSb;+gtu8jr;GLT;1fNCWnf zXKIv%7(~R=Q05$mT4`m&KHa3W#`$#>-AlfBw^HKLP*o!vu|C}2A{8dNRK3*n=|X+A zT0UDN?f_7k_8sL#9T`RWz%14VaW&Sl`$5PlhVy+PhYD=l+TuJ>+Hgm9vQd*4Rr9DG(vlC!;&7Seh!#znfkBxrR7TZ=y8W+*^?%3pLEFEm)Ht2C< zofc^GknMLd9l|)9THa3M^7h&Ed{d{)ye#K&}WV!spoG!jB;Uh)VezX+Q z8Sw{TZzc8gS7)fXo)c9#$>Pad2X4DOiAycg=yM>W>QVMy+y^E=dDGzRSXsDXb#f1k zTT&>wD~D0`wP=n?uP#5uZ_PTXH;-E`)i*^F54C)%trrBZoM-EC4CBy0^0?+J7%gC7 zaRa7nb&0c0|8o=am(h1KrQTKe5{{b)`orcFaHp&_$HrgA*-~C&Q8G6aQNR8a-`#qJ z7Ps?+9?|(L6#b&LlnS~hGM7CTy28R?d_wiyM?NRwti0aCdfIiant;O^Txc21Io*^+ej*?23=Y1!d}#-Zh$j+bI_ zOETpVwvkKn`<8U^iwTkIqBQ<`+JUiPUlGw6id=&K20Ybc95!!u7TrtXItagdN5GCY zSaK9jgCz(4*#?e1AV^Sn+(2)Pp!U(QBCX2ICK7Q~#0G|m1osU*LyF1$yZV`x z64s`fK5jisCn!6(MkkXGegZxgTz{mq>m-*`z#ER6lu{gAZ%`jM?Hy5T&R(h8rjsi0 z>9yu^S5P{4d`C-dNnrR+@UzLdvlE{9FH5>j*6(LZk}j12JoR%O?^>VpbNy6J7H2Bd zA9f|2aK3D;LCUUeI0l7Slb)CUA7!Hw>gq)~Di6B2wT!o_V-w0*~*kW&6_=dEJl&$_r=D%Z7}_lq0e+A>JG)?N5o&tLreqPl&H ze)~%u((2CB*J`wO66e=mNlCYv`sUEdB|ZbEjx@8cf{ovAvnAVVR7%(8L#~YJl zYD{2G`T;Q~<=#NdNh5d7NvB-E5k`c{aiD5}*ldvCgHXS&F};BwC(p@b!cV}p{2)sD zlAX8u#d~A6G_K`Xl=Lc1+;HH-B9#e)4X0sks_m=KQLMtB|NK)0&pzR|h0hIR>g&zA zx9Gj80ZV?J@C?Jt*SgGpDxayz2&syrr%*TCjVMapXfq zK@g;>OIgt9GzC6tv0*HBWJD;S`tT@)H}Ck|Y?Mwn*{k|)k8Cqzs#5Xt200JDLBvnn z4wsCI(nUrh9hBFonZ&*AWAUc<*~^Ll$k^3QGp--|$q4L-s9OJ^j5sVpI6H|Jh1P4? zs9578XTaeoDGIUU{hoKR>EhMyeoLk&P++#4hkFshTY~oj;uq>M0n!aE7@;Iz)yA*> z>I0wpks&3r^8zI#vpX{?l?8ljs+iQg# zzTaD}i@V^OyHeASn+`w`;#@c!N6r(vD=nx8CO0DSdKhsT)TG4s=Pw-GKzAQs_b)M0|}B$)mYKulE@psq4^JNDb? zOL~L6vU_=DP;4|SFHM&MN1RW1tnpR})(J+N*?qvU*2-Sd|KXNFhQj2GoeJNABM zyUARGZqCw818UX;f15>?(^t-t zSE4_f^fc%y2qf7Tk}Wjk1%SQs0EnWTAoHCi2$6{a_LTp~Z2y-^NxM5scCkRJ zcAhA*L*P|&Ko*>F%K7-`39@J+Kkz#Xun7lU7J?p8aj)e35qfVd~|FN(4L?0pDu^u(2<3yf}E2 zvPGPak@^}~?$rIaIXV0S71O3m2mFoX7pS?AIf5l6Y@?98!YkeHQe~Z!a^;DrZK3KibB=ZtP#=y`gWgK>6?<-(E}9_-#>Aw zj#cI;=?*dem|T3t;@P_}qyUR;L<+E&5YeU!SB1)ikW0F9#oxl~Btg5V|Ea(RK7x&H zk6Q&9d#cyTJr1l9sa_bs9@NS>v*q|UK#|V})z~k7vBjluBi!*yr!PqmJMJ>2eySJYh&sm19y*8WP|6Ojdw17ocHaee zftT~4AIkf~tR0TfioM4&PI>a3R6_}5Jb9fdy)!zqQpgU)wiB18f*U6^{|HB)o$wLf z;DD1|=)KK7fnR5~a;8q%X&@t%WAi(3PtLgEv^$;y$Nv~C$6i>DWD6d^LXrMFQ3a(fyQb{6iGafWi~LLuzaSeEw0L8!sOhH&365y}|lnrLY0gGo?#Yzn@w@ zuX2>-p|MM3p&xk=%POlmAa)yyvBz8O$f2ekQh9ZfS*+l7p>XJI8>H5R+khlGPaN?P zNQLG?_ycLsaA;dx_)F?5RGOPKDJ}dJxg}nP=GB1}90K6Y4I3RJoE{DBKE#n&OD9SL zzBRZ-LXvC3OVDGbPf7d7{oD?Ts#@C2jZ80!%ussea{$i55&SQx#2;l22x)$2BSc|~ zcP}E6ouAu!7l+8l_@S5;Di3zq2=z60*a-FKPlE-;i2viQN|RiJ#5OvlJ;E#C)IHIg zrh(1~^7{}|t5Z^9#{~pZRV}{8HWudZ^5Z3uys?D>tjx_U%rEkH z&y5=jr)s)7%XNz*?pdM%ZB?Z+uadMYqVvaE=Y&9}K~7~O`){*E&nHtgVqp2V^L8M&0Yq-Pag|wOS`2qp=C~*BYkS)6<>tw*O!OaJv5w^gG7E} zqM0j(P2RyH-?H}7*SN(b>#~p3f-$<&N6afPUe&u3B3xCHWSwvs7DI|76d_u_bN_Qw zb)ps@^-WxdDHZ4*9mH-;GCmVLRKcF_gN#)csoWpsJb@`&;*?ztM70Fcro?Sz(B!-` zXfxp>OAn#W4C3Fb8ZB27n>2&8r60;3r-~A^_2cS402JmA1DH)CX;*D$R(UyH8`Mk0a5f^% z1|^D%*fpGOLJVgkz()w7#O;H5;B45=eRJZ5nH+${h8ZI_#~^cZ#eq2ydOsiLQCjg? zH&_Dc;dJB{UALBO_O?`@lP>t}Q&0+JY483+l}@JW%ehYfp+?ZTmSta36I2mF?Z3Xq zl`pXbTBi)Bno(SKN5RJT-zoF2cB*rCFi*Xi;XIXnTPi%TaL(?98Y+_=kVtdp6hI>T z8pZ9FXp@^U=FEwtHTD_Iu>Y};E0Y;JXw}xV=lK+p)n9Cqy>-Kq`X6lc*~{;s^E3cx zH?Cd;S9(Fv0-O8+QnsVQrN!%ctVUegMqG3TfTjuqnreqbOdC?e!MJjOa>PmJ8l-KM zi7>n8rylog9<-}oT9h(Vt!w*a;zyQ#4edoPIs1_#!cT^Mzw!Oy6dRznccGaH9dZqr zndB?XX#Q*4y07zzp{SkfUIPNRvvF9u0cXFCn*`v=2vx~2hBSG#LW(8mYNQFSL30YR%}C>t(?*woP&D z&|Zr`=js1u;34?L$B$ruRsz~%9a`B$ana@W6=jE&~WcrI+u(P`2ywm$Pt`1!IKB2~|YVLf6 zB;!Goi}eHas#~?^om`qam|qIFm6aJk5cvHJcZJ`CPXNb+!@1|b(`;ze^tyg$5kEQY zR9!G%NY@@~IsUgbiye!TX5#liPeWPKXPa^PX~t}sDHG=PVZAFH77}=fgC;XCnOr_j$p6fCAN$L>^luRn*TZGKo9-F zC@A2y^CMdce01w=ssZMtLRGS@Q4P)ov1Mc{QP2y5dt#2F9IM%dFd=^NJ#8kK29^B` zXUY|N=)qzx1PE@<2_ZmmljC`)kjMfelXfu-JcJ0P5nEY^t-4;i&yw4GjtgT7l15K} zi@%RW4HlnW_i{;?MuvGyJs@PYKL79?OU$ve9@l!WnoEDG)##AboyV-X3Q9VC(x*N< zTWi-|&vNt>>QY%~sgp$oXvV*RArhz#T2;xR{x`LI+4r|^h@Z|AKOOqG-EAvH!W_=+ z#evq)?b#cVIm3o}VMTphoADpBl$W|BFiohRUC?42g|`3RT;D(B1B zrxA2( zO|t%+g$C=(gx@TH=kw@4LF1}|^!^(G@jkNXYuFpsmYTZz{LYffh=S+$WiVz-9c&RL z%wG$#gJ2b&B{k7%iKwQ#W{?-beaA&B|J*9rAS}21#bJq=h^f~#s zh)`?pOZB!#%oup|@jMhuWI-eT@gi3WyyuBYzD4|sa*5xX07O~sH1Vj|4H@YFn{t>w z)1_KEf|t*p+E7pQS|E3=3o-2Hqg8jfb!WOzYW#o=`myK3S*nzAo}M2)3wn>?RcPlF zD)9>GZ38_rLXkIWb$uIil7~#_I#T%~xRt%G&iwqI7v5!IwrzvGUcD62QH{>8^wRh- zz`-a$r2P)|9DS}z4C?RyMt5{KQdMvieYxw?BGVD!fwv!A|DIvCK2s8Q_V9M4&~?Pu z{b3>#b-^U7E^8vxc)cF$dg8B|mSk=VR( zbTo*epvSuXud33C6hY$3Sp9~^duOExgZA#vRF!0y(0!<$Pdw9XQ;;<>Ewy=>sY9Th%=W}Pr)>pU*%RL=0x zUZcn5#*tgV;!^0N@uVr~>`G1mPv&6(*zSFY8(r!{f7FDJL z3)AV>&@ln=qtt494{_!HZ&C@-*w#z-O6`|V3&SA2X>{{vzy(E0Q!#(928ln?W-fmr z%T>eXX`vE)_B1Ze^QOkw-V5SlL^?YUzD~~W&E(uUly$}rw5*tpMcf791|4UH)%s4DzCM}q$7BQ zW^#1c|69v8T~m8C8e&kMzZYq*RIA7W3HU=y=V!K~x;FH2KjbBy-Xy%~unhyAQ>%DN zLj>u8HAI|YHF`(DM$7OjFNC%&h0oR*M__&ayF}-nAWL*Y5$r(9MNZ^mM$pp4%dN`PMky@TDqS`O$y5cTih;*cuXj%qC5A;@g z_!r0n=8wnaBQ|PX{>@u`92^R>zky;8BM4Et5Cb)!P_e?-#PiT#dC!psg71SDbnS6EFo#f!HSK9Iood1d(ktD8&Z3(v2fAIL{^E5b zBMQiMea^Fp*_{WW3h04T1SBNO*;Og9+%euqcT%{$Hcy?4V8W%~8g@>E9tI#1am&pHFyVVw2nKGB^r?E%X`OdYTfaX`Zwn;-`TKK$h7L zQDrJ+lLmjLI#sj&;INxGQilF>bGaHj+BU$0+ShYUdZzHzIA=TEWAo&Yy(GsYJXwve z@oCIDTB1fZV%Ol)#nWJY9ci@&RO3PL2T|yA@kLw<;Ya(>KoHY~w}v1_fw>=gH6UZX z7`{EZ1U(n>(4vOE=x(h-zyV)YNHgRh&Dj6r)e9v^Gdko>r9Qm;&>AyxUgI67uV)M5 zU?GrEZroL7oRPLxc)(AYX266wL*PZtY~l$)8mL_!?W2jtlyr`yvbDDSy{hz*>e2VJ z%~HL3$uG6R&D+QQIn^?AgU9usX@}Ixm^r!OlX1$}!$KjG;d8;4qsV%G;AT&5*#DLc zlDxBs(~S?}bQ1y&t*2@-XPPY%!rGp{IdrDB>UdTh3I{D!8d;#FN=3}UOGSI)YVji| z$kw9j(MuKAF$08-oj1#Wf-P@n8C>gSU5vg$GObRVRu!a)Hvgbt?kDs9Z$zpeVdMcx z@5-*ZCkEV9WHr;K#TWnJqe2mrC&)E~p-@_8!2^X-&+4Udqe_3vYzxds`6w%T{DCz% zjo&VkU^HDC^C%L``kuAVHg;J=4e`){_9?;ayMk1Idg&!=9R=HWEWIvvMS)UeWh zCszyXADm;A(b?UMfCCb8FyNRWaU8s5#nPu}#~Hlb681uqfy7J{#GDtkc5YnX64d$P zk|$wr3jKR}l#$;Fa!*zy_iRCt%^%e9vAswsXG6hzx%J-yZPQ==*jN1}1=BY^$nL8h z9U}}3H2TG8C6Z}$s?yTXCow)Uhn-BKCm0O_D;r&wi-&8xt6Q=s>Xe6JUK3c^ zu2-$LYjFbr4m%bDI~GuW`y!N46Zjs2UyHp#0oNp}P_rkWkZj*6`sqTtab9VF>_To< z8Hm^=(AhDd3@Si@M)_QJ3UQR4&)f0T9S2mTe*$$V@s*QqCOlj8OKSXt1> z2(2L{Zo)M3tr&7>yxsw%6UoYa@dc;+k7{l-5^mof8+vRNI z9DW-yhX;?HZ{pn4v3%vkc6^k`Zoupa0dswIJdmawaX3f}(;yqv?MmJ^^nQRLBsCmE z{x(-t)E;t!vU=xj?L)3guf<wFidp$cEGpL~|euU*W(2kKNJAFB28l1%<(I?^Is- z(wK8bT0P37a(<%E``#W!rLfcOGbYUHbYTYhB}zEb``RtR^5vU@9M10Mg=ZxE&i8^w zB&FQAx6F73x`!&_d*Rt3LzJ*IuKulr zr}EK9Q%(K}(rNx1pk`i3+q1vwAhZL#So@dTxcr;Lha&#sO=8P4;vuUGn+vmMcX-Rm zXI?`;hc=f_BM;2=&O@h~GtV|Fg)W$WAu{-yDy2981gi6u_%CC@hKev2xF|MQdt5kC z5Y6czgKkO%mrQR`1W>=D6;u7>R+(P?px&$kbCN?Z{oP)7LWXe>EVZxdzovn&QReB7 zUHA~@(LcP&K5_eG8#En6v{y@?pZJch$bf;ZcJsf6`@AjJzcuei$wWogvvLrkAIxoO zn|_p4qPtkux~?$Ia;@qcl~;=L*!)gf>1n?5_{*lvL@o6@yxdpSWI5%YenYzS0nn-i z{WTR=_mt!;zN_9fi2)i**3q3PU`Lz$_7jM(NZOLl?r05+fJRIx`8IeK)}kGG0vcbv z%};i;m0BYnkY2l}4(WBuZ?(B6T(=cBl_mLT9`O{_cx)vgJ?yGwo{n^e{yUO*^Iwnt zn5z&t-!)}^8A_LNZ;(~T)NTH9v2LqUG*Tr0m5CQUrN9tXA#W{ZNH%LVcy4^kUSpixo- z(kKbuYn)_x`B>MmwpKZFQY*@6?x5%P8Wire8^FKHiO;CYzr5C0$hw-995E}ySOX=O ziM#&gw^SGHF(jMl*_(zpsz#{1pLQO5_B-ZWdqr$&OlO&!`Q8Ye1&LELq&`RF27Pv0 z_30m8tG8YJlY5IAd)TpsPopT;Es;5Zx&vY_lO;caTu2jwqIbf~y3F4STy4wyw!jXQ zY=M*L^x|NOD;yt#N&|ZGx>A&!@^7|4&$+mbD3R+n1v%9XH-F|p^QT4LJP82FITW9M zQ=>gAUz%&N7hG9oyeuy-)Fa2nVNj4GD+1*9<+tFORk*%|iAeFnHhsz)_huhBe)xpt zA~l+hYRa;2V7(xe`hyGp`{QaNc81AJlx>!Y1SSd~$YzVgxM#t)aKWZ_y4>;(SA{Ng zRkeoC{|mitAkeEjMO7!%c^F;XhSR31G8UgKd7Sp;ukfb<20J(BTbI%Wq&J8y3B*G> z?b~mRkmRke>xF{8IQV|)SDO8C(dd1YpvIgh@nHMzVol(4r3|X`92NA9Px{|o*lla* zO8tHQ*NC@p1+M!45OpT-P_FO)pRtaeWRNAh3fUE9t%#DPlZI?r#vT=+!q`f-itK9& zErYQpiJ?qnEg4G-rAR|a_GSLptVpJ%(D>%Okf_5Pp+BZ+>8XF?lG zxUc0y=G^Bi$K2V6fi*LP_jkEaWHsH$GtGPEUsZ&!Rg7+aEgjtm*jg;MxlX^_wDtRq z6Md4tH8mTtHoqM4XdnIY?;FI^kp;6Uo8#3CD{*6!frPwzb*&O_|>LBrC7!QvO6! z?aEE+8(*F|@iiX*E!Tts{lUL0x3vXBqq8!pErDizf3t-ARrvc^RQUS;p6oL8CvVhMNu)PMwar7ecH<77S0n3$>tSx|}TF#%!!^*3+Cmu1ppsz2R3~x_(@_Wb*H& zKA`}8S+Mpzq1=CJQjDXK$(4MFA%u-W;Jwc*tak){HsF1ILWQLU7+No_=CfUZrJx!^y;%$7OB*z+=)?kP6ymKohc zSl_G7_|W&3_A9L1LB=n6tx<~b7hnG^JLFV)81UA_vh@%oJUJHP_wWy2FRYXPFZbGt zg>J>T;b+WnNUAnAo()9BZ|=`TJMb?Ib&(lEcN)TOm`-CG(uhzjWo>&tq~1*hMY za7lV({clzwbP<-w)olL0J^(uAx40fUemRqz87G@2e{Y`XpAlSY3V{!me-@M(1u z$n#Z`ZX-hFrEau2D>8~l{7$~6TJ6srkeBXmv#$T@6n<26jE69q?ArtwoHNNs|8)+W)?{a{v9yRHm+{ue5;+?v=OS z)2^0RdA*5H!l-OhcT?2$Oz>Nqj$hCSU;R{a}_b#U2 zrEa`;T!zSK0~Ji;q1fVKdg-)%`ooV|57+kLdiVaZNjrnrVEj1|u30FO`3IG`h;l5L zOMSc0d8G51cR@>5z0u>c4V&19b7hc~Q5~@n0yPNfcOqEOmLB+f$5u1)tpPC{8Mv$8O%dU2|W1iM8fd zzT@rRA96J?*Bw#}4c>y1@{P%vtN?lPIg~d{6rxYczmDVsL@ zD}p)ZTVg}@6Z*47AuupGQ6ou&FlQj*_mf9oJi3@B*#9+iI8X;gVzKPd5aULzNrP#4UiKo^Z}hA!g>|(W z>(Q7{uk|9oZ1XI5mvIm`rEa}dgElm_Wrjv+suCBlQLJYQz^vLEFdiBItnW5j%~F1& zRTC`uBE4v8@jODL2t(8Az{5Pi58)oz+q5}7(=DTWh`5SX*e0wu%w7!ZHs0hx{-8HNw?rTm&}E-=jQs7ZJmYoLy@Uy#LVLHhvgU50y~Z-5$%gjaOb&xcBmLJl`V>a?I~VZac>?WuH^52+U=lRg6e756IUp&E-lU z*<>0*OYSN^l)sG>WQXPt-2Dh$dD6CF;)U`0=Hn~5j3~*ub31q+L zQcpyV#f#;{Y{a?IE0@3>#V%DAoDcpT&D1;gLVv{ao8C);BZq!9#7E%|GTR_IL4rMam|Nj_;#Y0wplKDc2j&-bgvcN&T=eL*S?{6^VKwHZ=B(up` z;}H$P_3;JNmRWm0my3kJ5|fK zoTn-j*>XXe%mB72LXgWodLkKe+1n%Z54t*ImfyT7`*MD>Gh&8=%I$HGNlS_O!>k>9 z`4Y2Y@W*L8OnFizk{(Sqsc%G+YcFDlFrKm=P3V}XwWxZn9)^OcXs$k6j}}cG4l~t; z5&gaI(sH3(+>lZYA-_Y1Ejj9^Sq}sD=-EqHXrO7~>Qmt%774{8LY5cy7pr{$3fBW* z2{3?}d@<8%M6~M^M7yrW%^7LIUA4#izlP@*RHFkRFQFKMyu_7xV<5nF z{&>AX6Icla(Cc)>#qUn*EH6wNDiV zzu!ydmv{qWsGc2$(QDUJZMoyzH(as?5T+!HyaacyAp>7*P${-GmR}2>F@#z zDoGQk9Cu+sl%^9DHuhYBgSw{^GtT3X$ zZNJ+x}mBs^5PCpWF*VvVF9%cLlq_imV_0Zz*F1+D`-bFcSgu$ylNG3y{y8R|DDGd zHV3zF4L#)6XbT(a@6xe$6(j%h9T)fHL48=^XVBC;T0}X#gY~9|#|+~$sOq&nvPCLV z$!LPB~pNpwy5S32ZMF8UFCTT)K%p#$AVwOINFwTV%_3yi3IeThdal)_L)`_gN#$cxEJGMsxtkO#F_@*GX zl2!(PnCCno+Y6RXLo!a#q`PT-c*cuT9c)TwGOdBe<|Dv&Epi{n1c-S8mK*z&!mmU{ z_qpiweY4q0H+=F?xr52^L7L%NXttE{Jd1+V}FCs2pr;QZ4EPfu^8U!l+f! z|Euc|uJU47TS?pUi(K}cr8osGzeLjEYAkC`_PVVJNHQ)pUf3Kcas1xs5}ErQ0~Sbs z5?}1l?%+fGd7%gU=&4IgocDjN`J~Bt7fo2`8zk_n>y>S$BFo1&6VhEin`Qqv6IVOY%V!tjY2^l31h%9!)j(Sl-6ekUDYu*NLO_Y zW)NgF7Q`Qo^es+(W zZ%in2FjXz!b_Vx7mtoJBjKQxN)TZ7;b)&s--Jo5j69SGF+5bi|uU_-mARAbxI)Y!- zb{2DxsN0L!PpWd%b2oO)-*dgrbRoSj{Y@j>@1%Kl-1WSNO8$g3=&q56234#5b+7wh#;K7rM_0Um_4lsiwI<9~IgERngQnACQ`; zhrL`qkY~1S=1fRCs#Q6LCQnCI&O3eFxu*s3Gb=+qeMz}`P{-yFO`slW(xG&Dhl^L< zae40tI$&$WW-i9Y9dVcg5G42@0dyfYHy4OKs^Dsy<*?bC1I6ocpeAPyhcJ&|Z17q( zU{-~nSg8odE8wTmdpmK_ok2nR>+0Y0x@=3yx=1Y&KXymLK?CB!!>Rjs0ivt}$l2;c zX@5?FWnQ7X?Ird`leVtJQm1382nrmJy+Yqcfy*KA$4a&u)$%UjiD50ea2tXG0n==3 zyLHj*q)p?^QoQWv!{y%GB@Hr6h) z(h|Pps9yeVe|~m%t(2U1?8yRZ&}_4pRXd=^!CO(v706CkKgYb=`UeYujtg8WVt3{} znB4551%!8xFO-Uz3#jQ)61!{@$kKLT!gY7m3kCW|J|PB)=(Z5aXynDnhrAdQ;Ke9s z%k<^JzT0w*=~oKbbLNloDg=ytFE@cziNOQ$G=!LtE!Wl~U;@jOtc|uQCFn~>y7qq< zwRvpss{29cTo3l37KO71F4=bZIDmQt$|}zxygrjH%tw=i%1S^A(D9%+1bdR)?>mKB zXRgRTB}eWHaLltNlD$%2N9nbmXue#grKQJl&({}2i>wa5Gdg)aw-yZ; z;=z#026}!P)@$k)L6R(`)1sqBhZutm6?{4(nCxKK{0`hh`0r* zawsEJ4l2Hb5v0DoCMO;Q1zGP-KZ{4*q^Lak=m8m61N*>nOc`R_zHQ-xyyKs`zAQ6^)sjA%)L5kiAPr8mzW^ zv!S1(6Z9zHh#(^kho=fV1?E%)zOfU^54H!H!C}M~3{a6MI^PCgovcqiUtmy*(lT1P zD?&p>ls%{=IML<|0U3Ym@Yn=V7>b~%Vxa>8+;{eKgTnp5)HhJ{eR75pI38*o=4$Zz zxZudQ_*7(h@kX{{Jdl+x05(99jJTDmGJ>)brz-xwo2Y((%J@)3MDk+4UJ;k|D&-vS zf!}-Q%uADdeWiHnwS6!lM?vC3;Syz(IRe37z3B~PnukvrSJZ2aPuxIZk&z%dw`)eA z#=A()D+<^cqKuHmK;A`AITp3(z*9q$@VY1so7v{&z`x5g!XarBVSW3$jnTuDeAi3A zYMdM*a)X%Qb{NLlE?u=1Ljy0im-M>)^yGI8>~^ZR-?`?Om=F?&v@>S2w4tUV6k48N zlcXG>;jJ&a94D;IvY{RXulq|BZyPQ`Ks00!T!4lQ zf(sOhso0s#tmVDj-;t71#cp60C)A>(A+}H~IilNdLTYu<$<27))cT$>7_mi6ccn6% zuf#GXXdaCE0XK*GF7S*zKjrAxl9C9eDO?I4>zZVwi_d3#rT105`#6LdsRzilBUp z*vrz{5DGqUZg)V4Br`UR7L+$X8lBYhV{|8?-hOLADxZ zR#;qQ%sWDujtUA^YO{V<@Z!C-qQItY-+$w@!2IfwX7g0=l8|mYnKK;3xNW{31buQ~ zQA&0DZH}9!Q}tD=AFn-|HyjwX3&2_z6-yAIa<< zZ7TP2qnFPG8R1Qc)VsPAzJ+i8e8xC%ML)qs&KSvK`bb_zP@U{_&?_$e4qG>Ra%W1K zaM<-s5H355JCs6+cv+DXE`nB9Up5S-{LS^~vDwmh{n30c^!$}`PcxC07=QY0jI-R! zO_+;C{|HC*KdT;w$hf;z%*mq%Ql_3Kkh{5%o^}dW0R_ zB}@MEgR`B#(!Fl?Rb3RjXB%D7^ne(xRzO+F9-bV250%lQ<3A=p+O>*SqPVcbG|Nx` za{QF)yCC-&YL$hi!6@*pRWZ6X(aW&qow2>?K!7QB&0saHn$rO0%w3{9XMOB8HeYa6 z_N2c=KNMa^9ampM=|5wMN$&h~H303_)kvbAC*F)M9v&{Ddnm4DxOlNF(Gj%$ zEIxHNj?O!sfz8^*emTJ&6ktzt%%Q|KMtM6$(yHbohl2!IM0s#s*hpYwT@-$NyLda? zqL_;R;_~vqt6g0lm&?A}*NwUUOI44uMEdp;g6{aKIe941x2=y(|Db=S2HJk^McriWXdj-YI()$ z8gy$}mL8J?<;73AavjDw)z{J071clJh|OYcgFet2f6ygSs*g9oRDE0F{QBV^xKwg! z^qZFc>d%y4_GCYhb3uYz zl7J#Co^@f+mLE1CZjE-IU(Om$2ymFnfe-8JtG*y=&2nQvf*5`zh{;0T2xxAp@By}U zqmKPJ0)be(nX3f=E(+5aL`%okf^6~gy|d}8X>M8|=9cWJ=NP-J>scpWKG@50rmVA( z`IE=*=yux)BG;G#XwfT!Y(G9?&vFA(dN&w>UJ7+y2hdI^{%_R!^7W?ZtN4KP$4E77 z4iQaW{YE6;C-6us+T^j~i1cgC$<{SE9@-bgF!E2Ez^ zc&qGK-1ICFPHNCRiTBfx# zU}vkA^R1aiNEDbv3#+qQh7bQk_d_{%`7%D-P>W#TcU4*|-Z|1XByl-h``i{i{s-N9 zV&e}XEaK{XL?CU4c!QpwdwVuvbI`hMNyBy50j1df zf0J}%HZT!ysl5muF-WEwdpqF(4fXyVMYfOSctDmFTF`$+& z4k%Gqegq{t#H1*G7vwHkN#hn75ryUMU0@}z#OonE!o{2U zCW@kb&c~Xb;8#o+zIk;$H8E(^kBV>ct@M7c< zKUYaoh%rSJ6_=R9X>%LsFoDPPd#_@E4A}hmX~&Vd=lQaULqRiO*({8GdxY#TFp?zw zOEEIm2-b)fm6q)!OP^`o>zF~R$18LVg;H~U74ZnB0PiRH;aropXSafRnahiZ17f@@VbB1p=Y1K4?4(pNw)bZ($%Q*~|9 z=W={lK_5An+2gw^{l(^$VL=JiC~){6kA@x{?)-NbE#u$SW`N1chR2^q3y>pD zW<+wtq9loilyNXjt-F8kZ#;t)=P@g2taK3jkOPgCu1I6$a3;56ey$%CwWL>m#LPRD zWcMfx<92`P=EiihytMDM>bPOc0+F`eTAA>Dvu9bSUc8dPMO{w2mqLSxNvk6W(4j40 z@d7_Gmwk8STQ>Re@P|BW)gE7$hot$eyt*p-`tHqFPV_S~5wJ>iQ^Ju(%gWuj!^0nm z=<}|-QA73Xg@fL2!^WVMaiqEW&o3OuLA5!rE)$mC>LpNSehA5H936)Q?j{(d&`p;Z zf176XF4c@#6kPp0pSs8+5y;Y1#Svn%gQIN%zAZ=5N z&ItL2rpVz_I!kEpQrh!wNJCsEySgdL zU*jwQbcO!lUHRZ*< zNGv!Hu(WpH>&)2O$Vf#?!rLBxdwCrAa}?z8NO@%a{~3y*+S9&GVsk@CY{>7wW7-55 zUQXjZorzXqVITa{PSR`Tsj44gu`3;|1?w~p+==2GY?RNqLV(yh3j*=AC8i z`b+4!RPhpi`z>?;Q0+#fJwK`+DD-u^Dn}ze9uqca1_x@N`+=_+Y^U;}XW8w(K2X`* zfX(KH;Blou+WaMTVfCGp!_Jeg6E;>GN3Gi7g+J2N1D-ONtfUu^!orX5pW~}hKKVNH z8Y*5-B-l{Isen;TphlbUAPWA2tL@7B4)tmIF19*vuxqBv{int42cU?rhg#;0Ap$%qn5CVX6Rx>&1pi?#L zilk?kZouqs4cYAH%(A=sU5i%re3Ty%P)QBh)6AP%DN&HLxV3GUcJJlCj*964+fjuf zdfQkrMx=EzH9T1NU&}PTYMPQYY(OBnc@0ccG)kghlE=}zW}Uk=$}9S6&_^Zu9ask3#|bi}FgKUwZfL7-BvmJ(ApMRQEYp!yon%#d7U z0``6A(vEzm`ojtT8knhnl(X#H-jQyjCn{EL^nwj1z$kocOA38zt}TENdA`u z8Cp|u1NjtvM%X*EWMx<9N6!8P6y+l?nvGTJVa6i_b3j5Oo{FJ>Pt-(aeFXm#lGg`b z)<5l+ODMwI+mVdpLC;Dvg+#@p;Sd&kR&T9*bb<*o(g@Z`1M7Ep`5S(~CCn}jmTq|I zK_7%|FFE)x=RKDX#Al|raqXJ8JmrXyID&oj5+gFHV%)C8KFF+tsUm>PR+?POZxua) zKhQ>Qf(C1zZi*Jv2C6H$aEGmtk@aX&7Q-E6lKMsGumLjb-N)KKA}h&tV6DFEAjk1R zuo#jYd`QC>A7!-s0DmJ#qJ^wFRa~537uFxp#ro?I0M~z$c>FtwHZsXYZe$V|VUjbO z+eb1aFTb z(bjVg)0!wdAtiVGTQTUrk(7b5h&p7>!Gn^ur~1?>DAtU;8)79VgY{r3-SB-fC4Mzy zF{n<9)o-D&ILqAi`uM~;Q4I9vX_U^&%^(&(&-Y@CM^N@Keo9L@S;a^yggQ4wDH(38 zU;y(X9bf$p|MKn(;^0VobtNnwlG|i2h`cImFLEJG6=xzeM{tL$YLQcTF9DceO6ttK z=PpNII@!X0;ljl^^@dT8BuH=n{PS&*M^sQ|917D)C=^YB_0&=v)%m0v8wm#DmyS@L+ux*u39ZhOmj+i$){spxo zK=XC^cV%b8K-ma*8N!!0Eafi>zNp~(c{QlgXKw>Ueu1^h&Y#Wv?BdFkxLSe=eO!;s zg*@~bKLVMv%ZnaN4I_uq4tg908C+`pLDaZ8{v=HC$>+2ywmwg!u|Lg>p`|=fR+_nbS()gW*lgU&ho4_Pk06-q1(Cq`;`wL}!6XoPM`{MdXP0ONh0cW*LpC7x}ia0%-Z z%yT;G?064o#dmevs<&EbNZ)h$M4U}a#*MK&T|Z+Z#z*E_+f|c!0?&lx&()OKIC{irukk67z`U!saT4;vJB*p`q;j%}-cO7!ki3*48OeM%noq|~ zD1(n&cT<4xRlKJce?!xLm;%HnfT6@*TWAiuOfOrc54?{{=2Q&VO;*o?#=Ab_M*~^9 zUzx+-zkNgcvg6lP;~zwhuksDNW?5FxTl3|f1M@OKJi{IX;*r*g@))y*M$nCTsTe(y z5p3lZU%tH*>v>{<-A?ms3i!&G2xw`%L8_xsP#sl&^J=xW%}KfUM$Db8YXm`}xxCwk zureW0S6T`*@op!3+jDCrHjZ)_?Y+S{?UBNK9=1_39B`4qzY#tFR{#NQT3!+6!BNDX zKCU~@UI@Vi62aDw2%LBs$z@c)waZ(CYs=k{ElgN`VvIXLg18x7oRTx3kWM9M6z(c+arFjR5-EBSy+p z^FaArXS$Kkkbu^9NsL_gvmR{Mh6KQNP3sDCLg}@mWoTTa{mpN8wAn6jIV$~aG^808 zOIEA@U0|8H)p)auYFiC=hr&G}^B3{z-;lbbUc9oOv)362niPXfZr`YKRTlS9jeN{N{J+Kj_q*qm)?u5WV9=#P0uBJjsVWHqdvjbJZ(8j%+h zks1?`6BCgU6G1Nxcu_n1SKn<)A3vqPDcK#7c%gI0g{(#Dx8@o>8^NgMK9en{a~p3@ zh_tjO(0sDJ)>=FN#P~%n=~Hd(Lgw{;Ej@FO_+WfDRNKoa#4&}Swm(*XCvxZ3N}kEk0qJE>+N;=Ls&mmkdZ3K#4K~6 zk^GS^bxS0WJ1)oB2oqHgN6LHun7xW5lOd$xQ>;}a!Iu4mZ1I)|J8RJ+;ofRvqzkFj zYPmeNP+Ln9uO*mQ>YiKFtOUkPO$fx6vtvrvqxCg>81VMdq}K>TsZ)XD1u{|C z|DQ^`kKc#r()QX(@B=1XlUb}U?aUjl~n8G{kC zoi7Y#amS54F)JUh_Bfx$z{?EAsGqGE*$2pnQ|yj>qX}&L_ZHoBJ$fR?@}L;Jxb2et zSj}1O!1?`1_141YQ(IftL{RT8O&{`PZ2a_5U;Lfga=>&RGQ_LJWj3?;1Idm6{kb z>I>Y??BeroWu3DO*Vf`&!Gvn!T@74(Igci4#%aEz+46v|<3>@r98Zg@uCP$0g31xx zGabbb^XkE8$k6G+NwOr9EE80*>_S*?)g|$Ph1Gd`S|O|V`OAe^?XXLO3z6mtQecIX zMP5u3?T-}QjrMgVq6x0h*41CJJo&8&@NKbK%kSuSsduw^)S@p_PX;96AsdwYBmFgW z%Lb%mIUgmOcq6G@JZx7^sqrH{aapik;mD+Zv65iVIhz57%Mf)>MD!bd*mk+nynNWo z)m6rO0xXt?G1SYRA`++7m&stlY{QxyX8fi5Uq@$mkqX!4SU)jh5;XMN{{tjn&lFSV z>lE)D(9u73Q{kgbDwONAD&i)&yz{L1)%Ko(1{4P#lom8}L1d}}a^2-o4Z43=;?cw) z(giPH6nN!qSe)BMi@XI0S=EwBjmuQ=fTSgY^@PU4^WSt6Mc&kDV28z-E}@e9))a>s z0ld*6PL7HbesJ}$-pCPTdjy3HWVN6f!X~0{c!&|2;)spS`Ks#}*p2BUnf8b0iqv0l{zW3o( z;NMYf9e;E0^w_bLzcT}>JTof`j;`E1@^dFQC&{ydG1^Ubto*f26?5Kr*RA zQo-=UYm4m;q_2;ltO}Vlu)cEXVh1lhOk8GC2ARbGT=hO(OL+1X$I}>74QFkMchz$3 zD)p2l+G}upVA|r~zT;N_l_QZl%_LnEc1;I<1VL7EN*?$-K5&xa34))9jBnL#CY!I>8m{E;dcq4*2%MB zfB!_a6cj0Z^UTE9HDQnWJ^4BfN4jSu6Oxnh+eWkT6Wno9{a@oo9Dp+HgWj2S6J_I5 zGTC^UY8a5j9c7&;b?^}88Q)=(QUj|?yoneb5hQgHkhB4bTg-_|yqx!6ybc;!VxNk~ zoj*pbVT-K>#g>b^>uvg|{s4Bp4BmYkKHCn;LkKvgo{~mY8TZ=Vi(F=3wZ7!hXH1L zIA~03u~tM79EgugLkCQ-UnCl_K72Vk+VtSk01iyu#8CT7828(3nb_NLklRkO(_PKzY>5aZw>9gKQVVy*hvKfgf z&)I2>pPq}xrh_F)t~4#)GlUZE1{+KNm2XU@a$@ehG_bkjHi8$iFnsoLZF2kMJy=8s2% zoZXX4&9{iIj#(nS3MGsROXzkpA2iX|Y*UMkm6%)hchsf0d8ey;*flyItclf&y zZFjiv8xw;u-zS@4Sn7zoKY9$Oxf|=&{B&uw$7WqYVrKE>&rf*)BhAjYn(W<=5M-i* zf@YkoYYSdjryyM*$?3%?YgjPseG4Is{dYH#lefJa;eg#p_V|=9dCjDr z$T~EW$!*(FFwYiHi$!G!Y@y3Xg&8k+B%uZFjQz3udtmxXiYf?30%Tob0TQrRV?hcZ zfnbswrJ#+vVW3~Uz+F`Ez9Snv=-98pb_XgsP~y8&xl8xEG>!gFr!U_F`68~;WP0h( zrS~g}4!f+}A6Bvq{wUS__2bm;Bm1ejnqV@{1{zec!C5aW9WyxslodOezyU`r<0Ldn zXCfuP*FXxs_Rnpe`Vi>^GaXlN>bAFvmOgCdx+z?cq;qY%PN1yGBicg|)PT=4AKNZ} zRNoM<{zs=kRo5elU7vch(fcIago8A*&}#zvZC!B=%X&v}K=exw_;g0~6<=+PD+2fH zVZ-gg;~rg(lDyaJ`_e?h``F13?3sFHv~rLBB0?qBnJplUnG$$VN#*7Kb*KKsTEgIc zb5@t@F&SIcoM|2-LiwE)W}zH&Oe;d_Y96}i<)3U|yJ@Qc+Sfa#`2@a7al!4LX5gc! zb?_rS&G`h$59X*Df1DVIu-i96qd~i==4ba&|4oB#0OHdN$Wid=wIH-bEM1HDK92_& zUN#6?}7S}f>KEjiS8w=~?nsJn29$`^1unP81~3?I?IR4k-8KDf7qSE9|? z%5krpHbcEaaprf7vmx>sXBiKVaM)pqH%F~rLs}XNBG2eK$Tj4GYY677on7D{vstd|*iAgHbm#IPlwOrl? z*ta|{2x0*N4yf1GJ<6^?`a)J4W|&LKMT<&0rl=F3%O)3)*BNJD&(OxX_sYfp%ha82 zSU@VJA_=e%b%|QEBggO~)Bx|w2fttKGHYBHMZ&otfY4y6f8q3_iYttD0C9= zy4NEPJgU82DW%KndSqIevJplb3y(a39uXQj>Lp*T%3hzJ;qH+H7S}t$eL6BPqG1O- zRfnfBKTzX1qlyucLR! zAn=nca7`71{ANsb>_o#Vr(3f#5%Izo$FBq6~ zQCsZRm(eciFbke&IO=y+tY2PdYo&kFccz)aI=ym)w#gumdc33$<}ubY5ujChywr=J zkf8_5Fx8uW1k=}8!~o$J;6uJLK~PdS`~f=6J;4T;LYuJc$Q9w$prQ?+l+-sQ10M;6 zl`MSO+aAqKo*xFB;_1tsS6NhC2Gt3YL_lk#3IBeQj{jGJwQE~~1=x)|G_>x=p7VZS z6DkL*MFDk@)49JWt`cjx5gaB<2@G)04iBqQuD8K|Y4Ls=2w&-sty8y(KfEVC^K^am zIWd9~sJQfI;CPxxqoIASZV#5OAR*~`=GV1g%D@FYh={j6qFvQNk&mzmjN}m66nse+ zA6RsKnZ9@1J}~GOvS5bPK_*XUczKbZWP6e?~zhw6itAu(P^Fv`Dw7!IA^_>WX&5Kl&C7Mn6 z=|7_tG+{Ehnx>$^=SQsrwf&rJ!yQn_a~8X?ls9o#P;{HunsyS zcRD(nZ)Bx(gwDG*|2W{kSP8)Yt?BgoSj*vi0NMIyBIMxNrH~Z?ln-hd*olw280#JN z&vD3RP+h`~Q0xd{!;4*Shg0a%=^H1qY^OXT?Cun&(0L`EL(6$^@sTQ|{rslelq1ME z&GxPGd|gincUMo4`d`6}G^u|9bpK}}2GQBtz~$Lu+oka9Nciy1O+Nx>k}yws*n#F9BaTV?q)xe~9UQdZe-K zxrNXA6IxQYIS0D>A~-XUeRI)R3$kw_GS)=cp%Qf^8C)kA_g&uV5uOXB3WH7bhOL8n z4`EBnn-4@-pL=+1TyT%1HGe;egFVj-$?`SH@`c#8omz-9X7u*$MJ632uGrW1*UK-b zT?)UwT#RuBAj`#`;rgasjP_1v{mU!PiT76w{$?##vhc68@!b&K9TsgR@2wY~>897K z!?;gEa$I&gJP#fn<^cV>k5B)UM5*DT1=WVq?wIz#(Ve`+g4lYiJ7X3Vrf9e9fGqd) zmFB5-;J-wWjJ6B+2VooU1~1%%W(YA{32zwHY(6wEYxAm6zg5sD$NiLA*ter68-$!O1~7u`0T6&Psn-#loQxAJ63{2~k>AlUAvru{Pyr({HSFn^lDH~o zierD_s1 z4pz)=FQtCT*@f6DC47@NW=AxokD-sa-IvG&@!=A?p2WC&2##XQs`PQgK}15dqShq0 zF(aapK>|O`PY~{p6waAo#6y}y??GDOPFH-{UxZF%%Z4oWL?%&5d`cPuCxQ$KvSb}_ z+ii1{L%|5Pj&{$7Yk2oT)`dohe;La2XsDB36Hv{K5}={57fPJgW~z+Z^w5^72VQ$O z%$p|euZ6ral<8=7bc^Av>9ambSv3~4E93^5gFxM0>O!-EF;Pbk!%l{=28#F%_` z{XIE7GTfMoH*b_NZ>%|==a83xnXd|fm7x)LMl59bSBMIU#DZh>+>7TiaGYi%ceV;S z>mufts$=3w=;9$W&K_piMrp9i_jL%VsEwSJcT7=5!dHlr<1*YhS2%k%Y0TuryE(`B z_>W2U8)LOL*7=O^Uy(4}HiS`ecO$y|6{l;^HQe2-XUfIXj%t7X(y|gIq%aw ztT?I)9=~aHK{kv-4C2l~(F_PcfMEp${h>1^I z=S%Zry6-ZcYo+~*HRPzi!CtNBU0U6DIUYT{#$e1+nDU!#jMIF72M;+)F5^3^vterI zBid*S4=sp*|YY-?ve<=l8M|p}Vs#c47PlpDjgr_K4F5uVt4-`r#H)CD@gP zHs70J>Sr~sdFaD%1BHzBd*4L~XFFSm7BIg{c?&Kc>A^R`#d*Q}JU$D+hgwynq~Y7V zS_yxepuVhCK&o8wO0Ha^Z|o-o5hgPIwpKsTP2TI397Aa)Ff`ZRu}Ir(LR(L}QzE2n zvK)J>u%+m_w#H3VpYtt;n{JPrdd=Cg{~7f#?0dMT2Yj`^Ps#_F!1^5dGt%B_gVzW6 z9s4H0?;Je}$_Gi;8`^*-HZrZ_>s}{zus_Y?3p0EpJ(g{-dnzw&_?-(~8oPd?@_C8U z!C3PKO~iAcL6ea4-aa)Rk}dA(F#dd~D6oDrAZ%ck>4JIo%xwdO+F<^t$I*+`$KMS! z5mskvj>Y`68v<%vL*1%|tl#3o6m<=!WqysJ>^ruJuqAwMx2F8+!9_=J*~yoOyB&AU zx;wrVTVy$0bfEB_lH;gf-u}k-n+!)#jVT8RIXfIXM95KdW?$fCd-e|t=hqvhKC=&P z`Hf8ZHT-as&-}1_QQMDkA@Ud(+_%kSBr@BzukJaF%GNqHbKA5pvjycCT}Q}E`(zbC zmRlXs2-E>te2PA@DsRA2k@cNt7xmU;MHCX)KmHhN} zLQSVENgo|-H6GLHt0nQ_^!nY6Q3vDC39+s1={n21gemMaj^q|3rd~8&)AN>l6hpGG zJ}si&vOH}g@_b=xkr&?p&L=w#oC&;WJd=vsv;7mtF+q-6i(N*WifHGY z$pOQ?H@fWSgr5^mUgA$od_MNdoGt6S9HQbrfOHo>XS-48R2Aw+uhm}|k=|6XKKOEX zo%eR(bw8Jq6w_cUxG9rs19s!|Ub!!!2|nlbe-`kKd5<#%gudp?m|A7}w*Clxf5-cn z@5jD*&;pf~jraGZftvy2Pw+A5>5I9?iBa@4LOcyLBwwnRd+5yc04E@;wIpfUUdHYy z2C=*hBI7U0NB(dsNQ&37og=K)d|X@|E01{n+}Mq8@|^N1s$7TESe3=#!o9!`(Q{(D zm}1}3hk6&H+#@8nqtq3fM1hgQk3;Ry<(e-*gJQ% ze?jZNcnqXihJR{ZI-hR}Dk;uPkG`J5Gxjji|3*A3KsQdSNx#@p1Lu+=+s|;ISes3q>8zR(NuoZ*E0VcovFGO?jZMym ziAN!-jrH%qjnXftaYupne6|H>&tHDB;<`Ff%C;XF3p2fS@>**RJ?ZKk>DYHAhgzzV z2&3JLdf?KfBhd8VG&r&=Y_f*EHoLTs6OA)H#e4y>^Q8WD zY>mfxF|z06ZDJ~`0>C(g2*x4l7PHN^sLCo8@xO*Bn-K|=!bglt+u9vlZSO;%W{b8? z6d0n(d~EUDi8HN>zWdJj6jA0QC^Kb;xskN_6);5M=Tn%ySB|8c%|tARzD=9NrNtsD z=QguNl?vSYv)MZ9!43ilC`J3v3sCi3uSLnhu~5CTadmu~zJ>`Zv?DiuJQ^K4w8mwo zigV^m-(Y!QMUY+PGG-yCY_M!_w!o-}N&kL8sP(~NodA`&9tNxSqgEe=+P|!ojoT&7 zn8anr-UR~|{COGD#zO7j&tu)K$DMVQ-hA@x3)U|xIo1{KlMv!p-nhB3=bA{nlSS}I zT7B;W<0vyskcj4D&fPJpe{=cbPsdS5E%I_MSyhYhPH{Bd# z)gE$`wP-?^=b+Q%3Cv6WizT7rnmhh6GNO$B{>^O&_X z9)w-a-Ld|slY;|Y)EWLkwV9iDTfI0(ip*PJ(GTscj^nlGkOq)zM%wD6d+rZudn$@t zJI6P~`0L?Sy%P)jdF{25Nk8U2-0G4?F!}F{E#u8i7ScVwGn@mFx*DO(O&X#NlMZ8Y zRLTEi>P^6*YX7+LnK8p?2$3bp7Aj*MRFYk?r$x5x*-0fK%Mhh(WnZ$TP}#RAWeAb6 zlzj^+LPA3J_j^3=@BRO;Yo7Z#bDryQU+2s@_x)WyOST<^;$5FlP3YGaaLX>n{!xc$ z!)F4fkRmW4j?wjMR%>S?WKj*o-%`bN3S$ccca$lv86LkcJNH(8H0>X*8tS{IDTeKE zgGA&sfUY{u7DWq#@|)^f$PRyXbBpH}!&k~_hD<#yC<{tgYz0@@Bo*&~ge zDF$q3#53dbX$5IIwT)=nnN9yO6fDK`08|}DD?C$qIoLNv>M%{}N=*pfNuNCxj+ZJc z2D=TaG2qC{C0#UOOvlMwV#=pq_o7P5WUWDjDIdNpXz_=xJ>zR z)tk!iYENTN=u^(uMzO|pz&1&0aX{`IqVJ2`xf{8b{Vjk`PPWO3BtAI;Z$NTr5WE5Q z)_lc&>rTfAeD>_Lm_X$s!mM)LCQU=c>G5I3>;w;`GA4!SLAqo7QnpuzhkODqxPPx# zxEs3u#>dx=qHtFqnh0Hg6J<}H;0{B~YHmm17>V!dm zG_xt;EhIF(-<+|nn&tWEexBsLU7wAVSWORgZgbu;a!~UK&X#|z+t4+a?S9w6lRK{T zO8qiHR)$CDbse*nytX@yySAgyYuLj?s~L?u_lZ|C-t(yTOPhRpjvd#zaFF`{zq&cN zx~5})ibIBGrUHJr^@RLF%kYS~(j`PwjhP(fOUXKcBL+*KJ6!2HvMcXupIv%2>DwRrI>U}SlJ8#al4+biK4uCMlV^uJ z>Y7pKW2V4Q2^n#ZV-)Bz>as=)qEZ~W?#lmoz`@(=eqZ!Mod6=U3R6fJQSVnbGSGKa ze*H3R!$|R^j$pR?HVu|EpNP3_v#bYpnLb)`@UGBzyipPsMxD(Y&D>Z2{b`O|z+Ii$ z3kA(*e%B0e)klEcyfQ_v=V1iN`Gz$D9F;q@3mmnd>UuR)@G>`c!b(%j)vFtm%j9nM zgX2Va80Mn@<<{6bL)0`d{@?8pRz%^Vj!WL1Sg(03wdLc4zIA3S164JBS7yh%VwL~q z&2Ga8daN!TF$_*ZT(zvnVFdmX_DKZ3%fsb$ zX~#+7co6#rY4c&%rSTQHd6kWJaK|!0O7L4sulbqf4t09rWJkP}Eit{W6IYtM4_2_& zJWb1F%eMdeDZ)Hcc!2&4?KwaPJjoh>W8+R&I3_w)`Z)M0y&t@7ao=e-lR#3+<1$D} zS>lI}2W1rLz`4p$eAnD74f!Vx_%zaC5CGp$DWFQJ1n~=vR8E$-JEh9cmPC5z!cjeBF@)JYRAfTO% z(4gy&Sgqlak&#(un?(W@c@l?DaYLz2bcA(+1bxlZ3z>0qGF=AyaEuA7uVzkS$+Rwi z2D=aELR1P`@rZIV7pUIkQkcar)g`}{K>}atTIWbQmacpID@hv=?pQ;YB+LY8T^a33 zVt@;|a{pFxHA){9fn%0r?|kiPnz%(3UXXWY%?puf^?tD~zjI=_IrNsvn)!ybR80LPJm>EL_nI_)Oum7wPsj$HBp3AAM(O>bk6<7RufY_ZVq$F`w`jlJ0Uf{P9e(o+OOdxLIa`slGGikR z$IeS`5zpIINMvq}gy(PJA6FCu@6Jxl6_XI1ddLNplO3v;c^akvtPQ7ZH^5gxE5o(M zccwHd1#9v7Ft}^wn|)9Lpy)nM3@~%FV8Jz+b_Z=NBWe0#zEXe=;a``Y=rBva{U!fF z`m+a#a`_%-i+RBu)CdjcpkPz5bgcl*qal%xDg2P|@d>J9`%A8VuPOH6nQMX;{&)H9 z@?+N|*YnKA_K#qmb4s6E*L4s2e1tD{7$a!wMew*_T5Ej)BKckQG0--l) zSRi+N?S@9lPDsvDkW;f+!;YgHl^tXrc^9|US~J8jVu3l0G?S!?90OL}d8^Tpotv{Z zi!z_Tq<@~5+UVOp+J#+G;Q5O`!e968>aQVB<%JfUaj@oCtkj&B>V;q-Z)`9heCNX> zhl=%cYq%<;Bt$t3Bu48reL5qk*NpOX{&fnzp7y9@g+AH;4m^Z>Wo^0iO=ebh`Ai`Z zI6FI#Z%p5nZ`|S0r^9BLD+_aC6}iZuy%@sKCQ--7jQ!u3efjkbye@b0X)r7^59*@5 zJ-AsUfNg)TmpP3>#vdPUxg1i7ZQHJ(N$>dn@5IQEWqWP8VUp$FU)jYzpDEW4d8hA{ z$HhIe=awj2S$>dUUw3qY#mb5O2`1}kn_S&dm`W~*-!u3EA6|7T?fOYehnsCtM?7qD zs+0i$b5W5KPZO=855$1f0^NGLVa{5e%-`w^i>BSh%Y@Q+eP?ciwI3Ic{g@KAQSuTNZN z0S9$4a8O4^NKss@;W5f#-~kZobE(hXSnT^r%liO&iTk@Sa*BM zK-`1%AWa6tnD7Z&)q7R+Q7}d77$-npx%z0#$6w#@QoqhhYSiN%XxXemE+uOBQlkF5 z6xtfxx28SY&3fD-WA@xC!~I9*uHWpGSx^w_BC}1{-%t*OoxB8aW;49^}fB%BO=PgC93Vhyp`JGqvK&;fca!tL> zNW@u}&N=@e(^SVceb50W$DM0Vg^P#EYmXaFh+$dVmOMLIGDFlOIdV4Gh|a-+V}dBz zIu_=XeX`@*WOx|H@W^u!MUM6e?EL0>aZ5yRNf%6uVX2^pr9xsO3K3x)^841PGaU1w~%;-MRUO_YD&(bJv*{8u;W4E=;>7BRZb>k>LeyHDyZ@yR_i#uN@55XYPec zV?8c}GB|Vx+(T%sgB`^Pt#u=rpHJFQ)b6QK^Iz*UmnY$2s!akE_ObPdh-q@f^n&R5 zuW02a?j#5#HbHETkJ|j#Fy*mRhCrM2RCXnl@0z{0)}{JRXo~a2x}pVb6)|HuAyDH) zvJWv(g@Kc5Rq12;?FQ^&!ILA0!=55FhB0$>NViBxx|M3s?Rv{N$z%f?+4CKpG8wf1 zloW?SW)#U@tV;K_+h2A8X-zlulp}OnPPP8E?jhc-*i>4(L^h!nT}rtcBW8s!INBzS z6j<$(?Lf|~jCyLq;`Pf82b2k$wA6*>^2ccm?XU3sWeec;-R!zV58h?XNs9AVf3107 zI-9J%ww9xmn|wR3MHGaZxbO?y?B44U<%M84T1H?~lx(#c->U7)J?n*X*Dl*-E13un zpke2|%cVLgh6QDR=mgA`vLW30qXNj0DBg zaq={uT}@~h)lh~dabW(aaT(y|~wMia`u{Q$N7gP^w0DOUE@=Q~EM1r7OI!gtgd!{?ZT04IV&E0ywyx|4TDh|U7S zKOQ8@QDstEPm-+^qDe z?B_e$XEy?h3|Ciu${*DEzLS%B@wX#*cjUqd$8Vc3OCl%8T<@Na77eh3>QVvbU}rsA z%L{I`yFGI^#Tpi?wJEa=1H-NeS;**gto%Z5Xov$lU7 z(xVf0MEO-Fo_9H<9>D4y+hIa`ZG-fJo)b6HVg{$V|BY%@Uu%DF9H;e5G1l0Vd)=1u zRIdcdc=+JGG9v&chSDpS0d_p#*@<#Z-s?I*^GIwSQ*yQA=MEY#PJo)sE&3KSSXPWj z^k3-%SF%kM&)YJhWC_t^CDe<7%5zF%^rRS#zoQbYvb_&<+YA#aC*NSTrJTo-_^PpI zvX%92&__h9)E4Gxi6df^Hz0CxMkWtRxowmw{19Fx;u8+Y6jMSC;Z^Gd9ZP~orKjH*$D~fa0>q1FlV?5{Kf%d!+ zCV~d?%{nX3I?GEb!=er+Yw{{tcyhnAzwy*Wu!cH6R4Ldz{LeIb8mA}gvqm156oeE* zVTta^x}bFmChT>H<1>`+V&&QFmvBNX^T&D+xJb=BVktu(cC7#`X;D!+OZ*( zPJm?sq6i0W&;AuV5;N-Z0NEHBdjj<4;`UrzIJ~eP5bre;%`pjq@0UdrXR0UyV_|Kc zM|^#m45H73BuVj7%0`#Zv+D;o{g8X>Qj^G)l5G^EQ@$szG|ge1Nn}ro-F{9CmDF;K zqDOy#+NprZzB#6A8KK!_IwF|<`R~j)l+_Er!ic<5&1L-U$5|Z4EWaC(wL>hn7SUcW zVI{^aze3NP=B8dSKFF@}(^arAENWRg`)0Sa$AbirTu2*`mb_v8UMnH!F?y-(laCl3=XJbA9xg4- zjt5pf{nEX~nI=P818+8MBDHDNkjSH9|a0jOonj%=3$tcyZnV5><|o_KcMG z_TvW~VUN1({J=hAp*KC#$)0=R*XlX?{j;j+SEJTx#XlcE_pnXcgPGhIkQL)cL&V2_ z=N@DDe}`5oc@e8S5|(Z~V#YDT=7`mKalHy9AcSo454f~e`T0zgq-$2&XvcZf@SGh_ z=Ja#_hBcv7Mcp|ye6kyN$M4h3(%X;hDyk3O+Ivwol_R7@2_Y_iX=1CC-eCE5b({+@X9JU~w>@W@P_4PgU5Vtq z=zI$%I)^#IN_urL40Ut^--3pfeUYO(b%EQT=Nno(bZHX7e@^>sjj_ghK#Hgg((F9u z=aZpHyAZrhlZHOrg(3_#|8In!aAh>IlYt~ZEVQ`qFfup0-R|5pyK~=_X#4Xx(TxV| zedw&1PK^2zzBT%znEKbQ2|h~9SVM_x`lI3>d6$^}eV38pvKr%uQX`M({6TwM_$IWr zD{w{!?tNN{VB=!o*}18oBFhph!w>ml0?eXnZ;gOQO_ESV-hig2Q_4D}q4bnf-s|a> z`+u^OC3gu>66}3fZdgS5qK@&i*xvei$MVy|r0-}>40EgkYB(-T>k!g)`~xCIHZgQo zc>n!{^pjA@{rq1gS0fpz@ZP#Cm|Xcdr@wdAh9DVhB1bqR#fTLre(CzwkUt` z)0}`;o1+^Y(`=%Gw=E(Wt?ffY2N!N$Xx!t_{W~<&2EM)9g^a&Via}bmb;+WEsfh&p8-iENE_RvyzJNVR2xRXy_=!A`a z7P^lrWqIp}v&75ocXVzA7ezj?qhCq&1s&MHp4AISITOEqX}{+3VLq+7|Df2qrS0ch zwp1I_T-nBFPj{HD9%^X>x@-3%I!pDmBpEoVL`bpu%9VJnpQ5hU`Ak8o>)x&R54~7m z&-xM27sMqR*WvIf!C+FFz-RXhO^)dK!@Kn+VQ}dV$Dys}s`h4uZ(p}B13d6S1Ql9! zve2rNvKySd*lZR0{*$B{%C0!S@RG@~m75n#kUW!%>sOFyvs|I`=TB8#iw-)hOsl7#ITf$Qw}PuZKtw3HU?WkoXwbpsF;~3r*MmA zPC&JoII{`jJ>l}TQ=>yWai;NNyWfX4N%~S^7^@O|icNsgbnT&nzn4`9sm57<1Dx)# z*To#$0-dzt{=%cem)5I~BHy9hesS7Cr8vUkiU$dL_^cX+U1z-B2f@vAW^aU>m!eTJ z`ezXfz!O$fSI~i*tbDR!n7k4PPu6mFd-g}UN!g9tF2t3@(li_Kxx3*ho_Z8!@`3!< z;VBn?O+j#e44~c4=S#qR5Q-r6^PdlEHS8`8p1X5c?9P$srpP8Cwj*mfU?<-#u6O^# z)h?fyft6wb6bFe&X&?Qo+xq$Zj%>oZj+Cj@R0d$xA~9kBTzf2aC!rep!g@|q8QRcD z<&M?f%CP7;CGDl8ys=)c%&k@u#-^hb&SpACAS3&HR>cCYYOkY-Nv;3sAK4|FOD|5{ zs|YsZq|p_r`bDxBZ#ux6>$1b7d>`9OM{fPg&}V2#kwuhwtHvVuK$$lib@>ktsxP8z zn15WsFd}gU2Q#gv6{huTbru+|M)1M$+rYP-00rt5t#r+V#VgxuVaa5q$OekNC8R=5skD&h=52=u%qX! z|FIct$<+Mx(V96y@+#6PD;|RKjw}K2$jZ?1Ho9iUW0_VW(z)KYXQ_C^DWgOK&;6SB z?`SETT(6Grt)@F%)zv%|bQe`m2%WpYeTQ;O&LwKN`uoX{WNvon+7Eg?j}JI>?}-Zi z26@MP@ws8hJJJk_-q)^+mdke7l~lFZT<_BKs&o|>c*q@&$^g*C@thAT<5{}O*^`Ha5ACxfNP_4DAiSGbFj+Xq8v^O?1MyqU zb<^!{%SH4}H2Pa^jCD2{(r_~mdW26xUXW02Pr89-Cw}M~LJ87XsbmCMX#s8ytApU? zj3w1rsb+Z@dDF8#dXk0+m{(S@bc?b1*jJ(e_|o%&ID_qvHJ#e&3a_2s`eb+SN<7BF znq@)6d`z4%n$N?JbCNMK`unx;XDj+kb9rh|)U2n@_P;x8PWM@mqe`m}9RV5sNhs05 zKFJI$=-qL+hLm1Zv=W$Atd)|dm6C}xSM8BTyET&sPv*d6*Tsp@H#WBEsZxxR${Dhb$mw~N){^(f11(MTrrRh8_q&NaR5T_@T z#BYThpqJXKM(|0`=#h_H{>?>umjAgZyD7Tvi1GH>579b4ESXVowe@2zES4kDp!B5J z$u6W>I}5Pi!w)~zfM9ws|5{+EZYdryHDgD+Yd2fnn@sxu1X=AF+E*{9(#w2=a?*bl zrEqB^DqMh{4$?TMsDYU)*qg0zP%v`f}XD0KM#@M$2-za_4(EfXU zDe(%eq_mYu!Y29&Xq5tVfFFSl0HUOcF*4PJO-AYh1nX(9ptfze8*_FWr|b`RC1izEdp z_FqCl9_?y^IfnQX50Sj$yO*z%GIHB$S448O92gn}&dWe$({YW%Bf~8np2i9!&~KD_8(iw=^t4P|Q5ZrEFO?g*j;6_-W`ArzALWa6|11bzk@7Q57qa3N z0CiCwqY2eb(-uKWaHsa6UD;;5pYL)F*;*_dJODYIRVb3sBy4lodkEOR9l{^6L#S740)Q2BQ z^n@#Dpo33@s_;pi;yYi(+Q~!(fDAWvQj=97AGxToDhRdAqaZd1bw2;-OVhREu5Aa% z{vA+M=ke>@({7F`4<4ee@zt>CiU_<{9{iRUxsk?oFJ46Ij457L(EMF9%eCtlzi%wZ zIb}S;=3Xd#2A7M^Q2{cV&abd1xo^dCV?Nu+Ln(ro62NKVxGZ5+_()t}k61X06f{dR z%>j5}*JLwy(&s<4lWmWuXiV9ay9{SlHnNH3gAQSiJhH6A*~xH$uiWmq;Evxw7uX3y z4v6`I_tbMlZF~@t}xq0*EOr}hW^g|fx z8RMEh*Ek|>IL=-WxuH4;>;q)eJl=^1#xFplc6zJ$QYzw$GFK~HSHa6)#okWShc0we z{1r*e7$2-u_7L-<+s1~p4zpkr88POQ;}c2a@-wHZG)GmA4z2x^8Vw@duvXN5e-{!H z!#_M8_r|o})3BF!>+Fsja{*|xnF@`>1Yg+0%#nZQ2uVzbV99V9KL>Ou(-Uk&-b7!* z{ovy$opl;i_u|-Pu36vfJaG5sy|;bY!hYw|$*?Bzo+1ihsr6Z)Ghth?QSD*3hDW|Jq9hXx z?qtWS)TMjOD;>@XO;0{-Q?eY;opFxdDQhb9?{D#LRf#p$dnm%Y?*;%V(fuQW*k7vM zG~7LCqN^DXbv^Ymv!%K|hf)0C(O;SXVbMV#EaT^k{Tg6gpha=FintmH{mVfK^-S{1_)c7c0~fw55dsCv!JODhO$3N`dl7Oa#5!zio@l5nuK41vI{N z2xvefeT>suN!3nllTb)wGO0wq@_1Ugx4zb@BX{E3EI@VtNc6L|%g_z**_TGGbNv2X zd+y<5TrR$)78Z%pm_Tbgl*x1sO~Aco?QIR9gFi{*C};YQLm|UUU34e7LU|iUXjbCO7IJU zRf^d*@|iaBMr0x|V0k7v0x_4!3YcTc+x*w2)-;Fx`6d{aPB?4jg{X)3wbxE9-F-|b zKde*VoYe6GBET3TJrv07w4gu+Cz-`p->^8y3H{1@IyrLW$HOObRZ9aD0oCus2>L>r zli_do5_#Kc%`-Y^bw%7OJ8G58=w@9h2QtghOjW~EV$snyO_OBuh(pV4rd4;k#V*aB$D#4xj8ikr}7Q)~E|vK%5nlc?8ga zE^p{4<F zn;v1a6di!2LLa$m)slWAvA4y7vGcHPM}O7vp{w%I2=?Y|jknOo$=Zt3H-b2b11?Sp z5!m54FPWCJNJb4nmIQ1YZmGLp45J)bO&G&kjqfeq z{+#+;EOYCAfl1RadLjH2d-2Ure%(9^VZR|{@2(lN6L5|>1*`(S8xVs%6|Sa%qI2vp z8d|bizsUwg>nC%BlNSfx9<~TRY&@9MzFGm$z}9*`fCiSfi5TZonC9aKX&j?WPGA)> zDz`=NlLH&v?|ykoRZ<&X5WGD8HlDUZ`kV zO4ilf6xJ$7TtTGVbWZDuZLmDOYWVjykK@23tC-o=nk(yxZaimLIn%T-aFV~|Zs%Ic4)kts`vr-Y2rZS7Y zm{AJZR`W_R{d)8Yi)cPRUM}-o-EcJXv2Ys@czyV8depEpAds7!?@ALEuTfDOUGG<7 zJ&P%}xx4VQ!Nt8K+UEgx(tI{#V5w>K7^IC$c@P zvxEWkz58*dA%(O~5ZG-^h>oSk!~dEU^_PBMWicE!#$MdMl2I+ilf&6X&rLwN>fS%v zw6t+2RrZ51Wv%C$P0?2PaVZ0-!jDHMHyj6Q_W@TdIpE3UTx&DV{`^3o9rgaF;kYEN ztDt+Wdu*eO4^HlMy}GupHv_rc9cE|xlNd$au44iE5!Tys)BI&CvHJSOx% zE8S^ExdKy&B-8V(6p9wk2x~}B*46`r!%Ewn0<72XKgP^Bxa}!g!BP9>#05h7>UqGx zp~8di@1gR?ELXyZ@VdE2Uqsf|#FVk8zoQkX%qLJ1rjrY@f0O5b?mg1jAAHsP23^D% zYp%p$==6MD_PAgp3J)c-Sql#(xc>kLUEC?FmqY4$o6i(jCO-JylN}BS2{SPUHjNFu zSNF;el^=S@@oKZ9R`8;YxZW3aOoEMH{ypoN z^q*R>cnsxz;~Bv8<%d21l8sBMft?8xnMmSCndH!z@aoQD#VKue414+R7-Ce)%rL&js3ZYRyCrvzb|9`9 zPqEHwK+zLXowZ_T$FzR5~OXZG3h z>egJ~@y8;JujAT^!Jm&%HCr@c(yatP>?Q+%NK&F>qG4SgZK8WN`u#ylrj}1|4x{KV z?-fC8TRpfKDVKRLd-Kj0kHf?@G@eha_LAQ)QXY3+57q?E<^xjxIJNmv^2r&2e^KI~ zC6PSv3c#{Y>q`B6dd|@5$~d0wRF5@BSS{ZLtW;R_Zm=+91xT_S%Qj(?ofqc6&<_dG zoO3wdx@-YdM*4|0*snD37^3uK2@*l4GrwNOIa77X7b2I@Mh-a+j!`M}?~!==F74hu zAon7(hgDCS6~YZi2&RF+hJ@5Au~e*D)ynL-iY~6GAaVL6K6(z`F2a+25UVAICL`W; z&RYd^m-s3+=YL0hmI{(Zr6z|aXELd7e35M_S0UdFcEi3`8T;U|(+&v=o1dnp%26}B zb&02OJCNil+!gX|BefV(^qkVQR`Jk&{Bjy36Oz9l0T`1n%>_>o7MC=mCS!6ViNBoS zF1FX3j>(fDM^Ph#XKwnH6Dz0`2ln=0IefwWZ%s{^*DjZ5Es9VEsTctg;LiZ&DRdrS zo&{sqlUGTCx9#omOESQ7ExLZ85qhd?2MCP}go+Gngf72A%CNXHZ!zbTQDvXTdxl*P z(vaViFKjHy6D9SsB+!==M6T(NT!ESjuj$QM<3-gvw0h1TqAVA z&s(YlxTR@}KSZT&Oh|6Bf#fE`bdZ~TSN!+)r8rNL!K<<(;UPTg*`h;@$OQOr9&SB+pf0^pdiy$6%iEV0${+XLhC~NIYxjij{GngeJEP4u}3AS!Xr&!<{3r6@ltR4XJ5nZ%I%Xw zY=(Ez4@q6VUc(W+X2HF~mz9g$y9aOTPj@ic{HNtD=8+-~XqnpAswt92OtbhO`K#5XN?v|rc6(5nWEU;_px-n&Uwf<2r)l=DMfv7O zsJ+e=IluH>F-&=a*=8BvcJW|DV#kUgr2V3h_SnwM5aje!E=xm*WmfaXbLF)pS4Rq`frr#0C z5FN2r;hUb_>eRP&CxHWMo%ZT@I3B%QK%p43@R9-W!wCollPYZf-6?MKlbwQtmKjEN zy;>>u`K&%EC!JZn&wxIw&R|1?|8~o% z0-q+|M_DJG*}NeGI!eoU(f&&h4OBsqW+bh0Yy<|@S{RA=6gxHq?ugA+W)G!urkuRc z0PWjPRAm3+MEs!g!}h{rhYBn4OLAgYM9=cFbe*xXNKTF&|1xjPA+5ATUlX;CJ;qOL z>+Wt6=@j|-r#E8Q$4M@P3-rWAD0-KqVo8WQ2|wV%lXvyRhm!f@R3<%#-iLK<2RpZ~ zS=-h9{m?7`8UO0qGbQO_uF6Ya$3`G>xRzfxMe8hq2yo!W3y+tmE(FdQ}xI@9^B(1KmKUn&OesxK07_D~f>QYaf1$+`K8B^9LqLr(I&)A z+iSTh5QabzbQxfY0)_xGGBQgI`3c)|2Q?UTyxGuc*rXl4daHND+4 z|E|~WF5{jwJ5J8}iS=9e1}4*%z5OcIRKFkA8!P`DDoEbK2bC3rRoxiz7ob$fh?|&R zRGXa9Z%vO%7JSsLEXzuG5;gAy^-X75E7LQyOX#^V&}-CIDDH?#aUQTjbe+ET3 zis?CM{eb7?VXfTEELTU%jJ0NUMX4~$%}1=+*FD2?w6h$u==*B!wc47vxY`PxB+IR9 z@|iHM`t>(?qr^V_LQ6I#1^iYzCu}q*srNj&_x>6x6Zie(q}A5WE$!vNqjDe1ANMH= z5AO$XBQNXkJpgXJbdM`osC(xwpRwwe57r$Q&Jh&~xLsQWTr6lFJ2;HI4<> z4@avYa_!p%yuwIXVi9+-k~d$Xbv#t+7t*RIpr`H@HyHSP@K3**v^m{7Oi>pYp}Qs= zoQ)J*S3k5=q_uK}5W0!kW|XKn7qV*fZ|%y_;3a;7$b8gO<^BxsSDAy>( z*UaV_VmLjzDv)bkQHicCl*nG8ojrZLfTr1e1^3%6MBDu4U6E%6CbdPk3s;MnziMpx z%R3%9r!23#@WxAG{b9b<5pROBktAD4p*oCM6+4`o3Nvz86BXLhd>f-1bboJF?>I6#8rW(0H52U*S1tD`9<3;6cT4v?KVo0{ zoVQ?z8nKY}_~cKae~Lm9LC{O_(x}scIUj-6=WQ$>YYlds6lW2f2%4=D@E`76obtVI zdfX>~861$nsAB9NHQ5MB_JvuwZw|Is3GmG0w_s+LDaHw?g_mme^RVfTH zi*Nn9&`k9w&ik`VE0wW4i5>(Gm0z~qJ)TA*yvi^9K|!qJ<^5uT52^$Bs#k*_J=6=@ zjE~qE=T&eKLLottyAwTAxi9t^X7csLT(2cj#UX|LivAB1&D_1j_VCWq5OIY?|C09N z&PUfSv#xymc*oeF-`sL-(WL6{{UUGANm?xbzC=XdRYajbU@Pi=wtcv!J%~VZEpaO+I4KpybKRyX-zkl=ouutp#$nykNhHlJ?9@*Y zz*uIVelucB4ROJJ#T-udC{X^XttD&@@1hWRr;}O?5Z#SL8gqQ|vj@99*@D(NS&;j+ zpE%~hLk9WcBoj^05(b6uOJlL93a)F)T1|>U|vPg`MV(m)b~$M%!nHuk-b zldI8EwzquGN?S}@GIjVRge6zspPFHFhxt4bUY+~L}KXpcT-RPKG4GX=ABEH+v z*~*H&0Fo)vEk_ZUmp-ISkG1q6KFO$UU%Izlp5PkLe_ryPqHAAnvvVNogwVfXRXevQ zu%nxB=aL%*O^oucecyE8=5zBIW-FiGUEC9}gGI*S_-1XGP2K1Qgbt-K7sgJ%lsL`dyFM{`gQaf%1$ge5*nW`{gO&&l z#kwAr8J7v72Tya##8C&6@j(CTLMHN!gp*8s4%I%G=2BX9qts`;q57<@3_e-6yG=Zz z+JnzehJLMnEKnI!2Bz3XH`qZZk|5}r^5_YU=$MtbJ05>;b$!8&_Vu#lZwIl)-VRf+ zI-oP=O&ls`Hsj_F23+bv1J`66xj%&)PH+SVY7D9k5LwJ7C95hgRRE*Wt~^Sfx&3p{ zxrbR5z2`NFM10A!BAoRNK9JKBJqar8gW7ws>~WPbG~=gVYQD2_cGFI<-J8WWNe1|puf+hDizK0P(@UG3Ww*GwPgSP#OjG@WBAPC0uV zk$-uC$iHZ8uOu3cIQCv=y~;xo{-lc`8{IsX?`T4!ttp4;S5H3F^5$U0(TmFc>Mvd? zx$cQxa^~kL5j9aW=I|w690+@RtP~vReTi%)#BSB-P=WAJ)1U7&Z;gom4d^dzUbhA} zg&nj}?eu?c3Jtq%3ajzNu4xt8c`KpTQ^qaQTjtkZ7ujpn7>?@s5^ zJhX6rRkp-i$!0#0>b?$*RHn{=%ggw$IiX{N{XFKd6M6@?x}P{PG8p~rpy~>J@nIRB zy*s)NZ~Pe46Fcf}Jhn+~Hh%Z+;4OuV%1>Ko|0FI)*fe0Sv@C*#Y2kP8G5qKFgG|ID zw}d{@5VWrpg$3-CI@)ObEfz2Z?N5ijsbJG>>j^g9QW=4RG@4iWq~G zkHL{sY0DmpEJV3`x00v2{_*eUsgO5++LIOMlh!8@l1KB7g;4zL73&!+C8kh+3||MM zl}hp9S2Tp+s}VEjC1y?Zc}o8$31;NJYjHk@fLQEtAPM$3C32{aR=K-e3*}7p2m;Y& z@`0|U$)9;6b4zNJAG*E6@<3S$NdC8C=oW-8i zD2!ou%^U2l=T&RLuIH5<;(5i%MciI@RXQuyF}ZiF?qc8gvrIjV)r8nOiA(-yk{Ma6 z`7cxF!3yc_AD5j(CxphpHse*9-BnJ^lX@Xhn%h7Fj0dHI*n9@0s&EzbcxdNmd^CfO zI9gl@28j=9p+&bIL8WZ*NY&m>X( zPS;^5H_8|#(>c0gQIU-_$efYUS&IgIj+5;8NN!F68O=GmL`PUUGJ{U*z1aqt$IinW zbzx9C*di;b!SSyB8PnJ78GU6Q+35MNLRXXd=o95~i&J5OD%XRsKZ_eJ)UMvPi_6W7 zE?v%Q9B8^|wZ8oIvi?qmUsJ)Bk>|Hxq|ZehmvW@$KRnRKnDPcvMrJblvL}Q0;6-IX z;FRD#JE1D*b(+9g|A~=sY3F<4u>lWt9{Dl^jV3C?{t%FAp`eNWV#~pF`0$G=t@GEr zraZ5tx|y;a@5O9l3X6u5ENZ8l+^=^vd0eRmCByDt8J~TRxUa98S5J!#cH~!;uy{}#P`{^Mkx+t>j&n&+HyuS6UgFmf$&k^;SgGQR;``WDtp_zvD^T9r^998Y^V zpLvP(MA6>Mdf!2`JWURKAsuXKVZTY97=ObIDyGULo~RCU%V>I@6VNYj?5g{RYBgftAdOh!waR@0h#21unF4u+*2Qo z;pX!^05S&Evee#{JK`HuV%;Zh*;yswP8Jq!1r!2ctQ7E;4Z;A|l9o8zZd1LkztCQNb z?3AVlK7-fM;4^5%M=dwNA~18e$dKm;XjRG&*w^Jo9P#b-+2v|e>>y{=iE7|w`4vgTscs=$~ zR+sQ?{{x^l_S5wVs*pyWTZG)0vGMp4&l3nkK0d)HNBIY_nj6lkW$I4YhXj1Cq?E9K zzUg(^8J9;ck6#R4=5XDP-48E=PMIAJBoa+X;1OOd8ni2S^aM`T&*^RhWrxJQIho5=fgah!=e;szOKWfpqFkJvme3S?W#DzWvN=GIr_+HZ_U*b#_Jzi zf#Z#D8yJhVHld+&E&Y*|Sf+n%u!M=vSdJYPzBBV2z~H0IUsvrJ+a0_`pF^-Eu#K0zaJb_e@WWM8q2ruQQ!>YvHF zD%Sowz0`TpUhMsbit5~LKV~WZ5rF+2?^tN$vRc_B{H`aTeomi2rL(e5DgVc(6mY9OQ}25i0>9Tu~1 zdTj~#6hM*Nd!0VkU(PHGDFEP;n~qv7dS0|*9LuBJY9>u$f5z`Epw_6E$+}qE8wIT_ zb-$s$x3Nfs!ZHGCjPvR0vXmj(71tCIkvj5`RzNdq?v8{{V4ea{N5}=biry!)OWQWT z`j6a4Ep)&kBG3~Yz{ME&hugJewQ{N~A^a`s*B5PwNJdj?ofyZa9lDB=ld~;?%>M3) zv!Uh-f$8F%y&xgqQE9v=zjockFE8dB15BeAC2A0s6E6WLf{`MRaOGHQ>v>g z7};u~K#AhNaV0ry#JgDEyW}rMjZq=v zc1OWDy9E+fR~j0wRxv78cy!X`izwlT7|0K2e7}}6OL9j8TAkV?Xtjush#$4Ku3W_b zqeDruGf}AWSKj>QeRP2eB41*N$d`>#*HTz0+g;pkkmF_oqg)#Vs|%tHXb^4q&cvyz zQ>ZOb6efJ6B9l*h(6!KON{?VzDg|)hI9DoKF?e|Z)#W5qxky|7Z@WA9&%@`k z{w|V`W*YkSPlh9nM@%By1=)|(oqu}-v_OAr#~pS6mCVB@0mC5F!Ue6SNQ(za8lR>gTDT zFUu`|-l$>=BY`{pq7*rDI9Z|e3WCc3-ICShw;9?|Q zoC}PeQCX$2H*BtXlTYXNekd>+$>ZM)fiyTNH5iDV5j~%VGKv`-*$s+Di)lR)@7)Hu zc#adRZ?&PIWJfl|oa}EDjzgT})zt|b{?TD$SwT*$VvF9!HfDKfJL5UhQD;1sc z-yoB+Y)(IUe?V7TQtn<=_?o=wbP+k^VPEz}P0w_H817=Rr^VYO7Ia>wlQKQ9O-#-O zYsCk!$61|!9*9qDor% ziI~=)4=2cl&lL%px<=XGv48t?de$+y7PC*nBH}lJuo&}cQ;p2Sz}{VPSL&Ko5uvy*1u_|ZZp4?P(J8?Y-^V3_#DSZ_WK`F zkj-oDdYFGXXmGeq{;|xg`j?zP*CtM}Y8m~@t+CBmcy|cfulfDcPT%KGfw;pFHHup! zUitO-*5ylaTo|hmSug9jV>`p~k_WEvpOKgo;S@TK3M`a7Ab5I9AR-_<#E>oi(V%P5 z&#O%uaEDInGY{I(=B`Yr>5cps!nh!{YU zsZ9)4iy;v`gF}HE;Oe;OLF*|f9e zj=-b>G~0718D@kN{^@4Q54xHj6_6}7BT@Sw895of30NsRT@oX{hZ9o_ z0poD|7aeI#apqq*25SpDET?MiN8|h&)i(l0h(wU;WznUaP~!n_plusXdi(wwkoR7x z$kG3j-@Di6>ICfqOZoe*Vp>WQ zfj@Ef!>Rwn);mR4)_h-}v2EM7t&VLw>DWofwvCQ$+a24sZTp_@_rFhf+?N_-*Tbn( zd)KZtYwb1XgdCIx7+MmkC*u19SZbF*H;iriXjo|VEIrU@mVjv?GQUvU(+`dhgYWXx zv5b(?I)j>;*$Hi6RL+YU*W3G7y&^4Jm|e;!>(@t2&!la|y#vt@kzu$#jkHfcG}-<9 zx`dfPS|0o-LjSL=GBAYH3VB$h|Gz6uDoxF@>Tjf+TR7)Lm^3mqyEEqwyL(RhNK9*B z3ZNAYeOXHVD&RX~cz;Yn;LS24_~|qqTvPHij!<+g!U4~z_6z3r&A4^IaCgQ-=O@3n zPT~Oe0&4)5`Apq5+Pg#>!2L@z1@K+E$Z-3R-odq-kzgY&|F|xjfJG@-`UT0^-f#j? z+<$uE02D_`=L{M=^a*+)GARLs>%F4T9in+h3`CnX@>Lzw^}C&r{#!%Hc*tsL##yw0 zgPs&aQ)=i38Mq1{=KhPS^*>4Xar*MtnLsCiXUoqG)ql^bDm(=sfDQq8p{r~n0W#sV z>R6?iGmp${I940R^i<7FGnR#A8<|yM7VeBNY3;D2j9TJRDQ~%7b1OV(4-Ebo&LoFE z6LTy-{Hbp;8Ak0*1^{|G%>yFvf335IGy@i~rXms@6@ZI358&c;QHF861N7FV{u9R6 z;646N7=Q8MKVf`*Kf7KIWE1#zV<~8Jl{wCAH%40w9A}Z?o`bKBWnFJL09qUl19NUF z@rz^s0#uZxY7NO&oFM|IOR@W0OHUSM3II|pOOIN!fpklcVTw1~-%CB+PLs3%cccIL zHMmvx0EDNr&c z-d{AA8HdWWCKyREQq43eR~qP2p4w@Zf{@4A%ByAqS>$Lg8uMgXCn28Rqp$T*0OcW^ z|5b=MttbPIw0&#IuX+I6K#$uvtwgn?mlg8U6oN!$0*`B~<3v=L8 z^JNyc4=7fSU$mbuntO~xbpax>6}JFyoV6mDpKwbsm@L&j3*j*ewO1{Gr8xRG@n-MY zTLVB1Nh1vjz^<7T;XZZ-;3?{-PK3$HyTQpSR#x?KNOO*2-&}CxVG7{%J4DUyiD&4w zPH(~gqM1wIWyo1hL9@`nz4xEAFrdjI$e(sv<|F`VGCboy(&Qw-9tZG62(}BAD9YGe zb_$2u+}r#EI4Bkbu>G=TCH@zz(GT}FZI&~zFM!hlg7zQoHa`Y5bE|YfZ069GcjK%a zf$0_mzhJ-7ksSUv&_CP%2S)z<4~)>y{LkOzXw6IYQ@sz- zO6ftE-sb(VX6C=_2gfo9%}-73YWg;&fh&&T``e1J5=8Nj$i?NL)&lq z_l-E~h~pqlP7Z;DH@;oRre_0SXnaPs7g4x;)*NT|D9_?7Vjvz(GfbYxNVRW7Y-2d}gRks4Dg-;Jd0@B5e?cja;*x50NeV+cL0pHL< zv3j5mBu*R>K)EA`hj^|adMa zBiThCIj+OvjP1u-Md<`o(1yCece(V`%Fn;0v+8NHB;<6R3qX_as4Ce0o|l&WRumwo zxBx~;dV^SY4gw6C78h{Zz$~QSknt_FqIA$liUTRl+_5Zj8V=quKLzlKJC){ybO=8E zH>0R8Jq$R%q$N7;eu2*@aFqhIRXwvHQzZeWC2rN>0Hf}#7#~2r<1o#Q|5TN;asvSn z?gJ(e#}z6NuD$T;D_v8!=2fsa$w7>KT;X>BjN}A2qxp+;L#ngpHs!e=V2D zD%lTU?~)!9>OlkYDqe*c2a#lSV6Ym75YFFw+C8&cA~)dO+%wRiC@J9~n#^Id4h7fxIqniNFn@ zB1|6u&K!iSeMPPV0xK%7=#H|H1Gl_dIS1>0^GG}c6iop zl;@-|3uvQ^J?|GvSHCtL%a>>Yx0SSqn2HE>OQf}Ptyq#QU{e3J z|2epqfC1dqSpcK|ue?hO*y)Y(D4!C-1l4GtmX0bf*CEl*f2k(hY)&G97eMjQ)R#Zscywy~&M!HFD@BGyO#SrpKRgk4Q5lWGZmX`8l1CALds-g`NDAu zvLpofjsE^RXWYPGB*cYEdk*{E_*rWm#S!UeO}}gB`T^ImJ&e=$#8ES#_1AAAb#ySg zong9;Eep4g9BjG&es@Fg=jP}0%HHp1!rf|D2ZyrSW-!Fm!DawF?p#ebvK>@Cbf%-9#dgLL2fQE^HfKUNF9yW|FmS(nQ z|JO1zc-Y!pYE4Dqa-#KOz6-)RyMMAD#F20B&e$Yvk(p*E<2AQjDyg%wBzEDVf{=4R zDN_{{r-|6}C(jFk!goK$L6bF|5zbLgt&&zBk!9IPYrDZm{rc`MEq%%H^?Y!-o9|Bd z{FM&-FEQ1iNAaHjZ}e(9*+QzHH5V0|w}NDHG_o1A-5V_3r_4sKuM@KE7}Urr=$n{L zek!39_XZ8d5L9SFTc0^szz#+9h~z)gT#OMs{Gjc04BBGlYAn*kSN%X^MK2!~V$w_a z6lp)N@-Brv<^&P=XsR8JihA<=`h$T6k?@dHIduxLBM2=~ySyKkc3DGj%{k}$vwo|2BB&s3uVMqxGTo7i@gWK#QMLvRYSPz`NSRNT9R8{`X6DE6T!6ozf8)bP@3ueAaJ-zB7x zEley$DSCzxnz+i(9>#-XvMryqc}tu`j5+*X-?wKEVZHo*kEd?~1`X}aG%|LOCenI;?s%T+_BYWPdwlNi&yp~Ae4b7e;_%lu z@bJ@bi6iQ7YxYcTD58u45I*jJ1+xd4L= z>$P6%AiQfQi_NH&s0ZIPiFU(s=h>~uoVdMp$dTPjdT5X6jF?TZzGjfF0(v=N&C}Rd zUW=(SJBE)$i74UfpI7Ov7mdcR>=X?@TH$Bem#vFbuuJZW@r*M4xjjE zMijh$KecUJJ5Xl5#P4lNY6SQnOupgeN5d1A3`&>E++xh^_&rgkhb&Hh{l6$`7|Fyu zBdH(WP3VGUj(NhKaD;nd;0_Qz2=oRy5@noD=i8&OSQGf&R$~6dRZ~TcKP2eVLQAfgf6BCR2vLn@!`_cSUD(6Jojq)-hU?XBlP>ucXQVra024(tp89;b8nk<61tWp*MK&%_hUT1$=A7brTE4b~;}Hy#Ejqf#(eti&_feSe zx^SpDUh;_vdTCQeS9A@`bcTdy5^H$|u%a;|D^Z+_%36oxA1l}272V=R^rX=)jWJB~ zOo5ntbi7lkA6mm58DWbo3hl=2xK6C+F^I_4;v|%90TdJ}vxB^LZ_QRvtu&-;)^Dh% zSOY5_5bdOkI+z72ZEo07Id-q^Myc4C4Pj!*Ji1Bp;}FaV>0Zf$^ak{PDe!D_cm=k! z8vaNE+6S3Jw1ioXNG`mi9xVN&zeBgMlyc+=1NKyE9KI`tcJQmn*6{vy6UM}KgYukk zA{S|DGSWiEM)*esIh{{22V~WuCmg-G?;DO=u5?Atb0^1=@l0YRf3EEu7*-@G<#Cp zRfz6FI{Wo~e6wrG9MV02&(pz=t5o?^QN%utl%s4ZP=8 z-5eg@Z8s@A!upb(;sqy6vs0@Mloh#|Z=qHhWQsIzSu5^W-WL(AiQy5ok7*Cki&baK z5Ac6c{r?+&bHgueQ$c`$z#xEt;QufDI=lR_F?0Se@D{1+SZ^?)`4V0VLUngGY;nm1 zUNx|>qjfM_LVBs$a3e1bNlKsCT=w3KrVSRG;9fl@{%prL6p#ui|Ss=a@?QND-`+`7Sbh9XLyy4`L!7Z0a@kyZA} z$1T}asE#Q@P;De_VUAW`Hb@K{G~%L6bPDkbPNDmO6jOfiunbh52<7QH3hXoq3rV2U zXyq-2--5|omtfT{;KR2TSN;TR&gd1EQL9osxM@ya4cm>1QN?K6r|#h>bQW zb4r`lrwfz`lY{O-J1Dz7Ro^>lJ{j#VyYCmjg%ni%$^Vfl$j~&TH~j%?$3iLT`KD>#*@Dq;kjo{7K;EBOEa?>oie70wJ>Ju$?q%e=k;o3cSq3o`+njk_xoASL-3vA_4TZD$M5@SLGb%| z>a49N%MaE2?R{@yhS2xxYhk3<=OLG{*ZYA{@bl&8d42-N+Y2a(9?CZAI+$ z28?_5A}HwdwZS=O%5gmI=lg!N^Zl8=J~R9<_L>E78#_t^G*4kOgaThXy$AsKw37d6 z|FJeh*!y|t`)qIU^DuGK`+e#Ac_--mPU+_)`2Bfjz@O_W@P0Os7MBwTm{QaqAXf|T z?~#$2oQbbDsjZC@02=%J9Q(Qs+cCx1RQS1jdto#X_$(3lIRH%1$EEl41u^$e!uf$g zkMHNy%iE2?&)eO@&QkRE``(1cPBLH!L|0rvpV#+0!d^f1htCJbpYJF-rkR7!x3CV| z?dHrPM!)Ynz*JAEzwRe~R1imLl--{d3GTyKG%>~md~AmT{yEu zn=UAS7}<*&!W4JEi1X`>8oovfs~W$sZJ=X$VSKu_(=rMu`)7vAM7d?=yc45Jn>6qZI_lUBLqo<7iSFWrkFgpD zK`nDBbh=8@UKoTnzJg7+MgG)%-T4TqnGnRAl_ z@Gx8b#eTyKydBEUy$#b|Z-UhF%t)^1PXW1Qt#}M6y_4UHgb$DT2>(8Yj(_v{MT)#Y zPF;=M8M9=&M<4r6TAoMT(`-SE&`bonYT*Yx&C6uATSATxx#G7#K}M*vc)re)LDr&aErMlwnIYR{(~@j4y9TdDSDrMr|x z&MoYIgJ+c=kF!6|clS?&OJ&YmyhVA(A+glby4PfEf5rFCmmq`>@{>XxI76;tr3uY$J z3i`&ewS{}Pi~e%yCEV;&>KUufc5IiI&Fx*{^kCdS$+6Y^2&M00??wd}9yEo^nw5Dp zpjty0MO5l*JR2)oNTCfP$KxX5Z|O59MqS~@<5(HUpxDZ`C+F<~6yov6BPad8b1{uC zZ%o5ppToAJpUSl%!$#0~ZFSUU@TOh6VM|bt^FIhqqS^(1uhxq@t=D1=Hs&7jTz6lj zdADapmTNagwsPK(=fo|(Gr&Inw3nQhMF+pwYn0_AN zqh55hu32kM4ifH=xmkazGG|v!iga89Ea3PRaV_Rb)^?xnr=d=^>m!#M_Zn>Rtrfc` z2CV(2npm}l@xXw$)Q-{&w{WM_JRjcUzfc8t$G;0SF4pcM-Y8$rJ@|`1GB~oIe%r$# zd=zuQI;UMaz72vR{FCY(%3v@j@S8w5)#p~d;oY!U3Y9a@Y1~DF8`hhMFUPF)+*fH0Qu1DiS~8fu__FF2k@6rQNE=Jgl?>wSNxyF>2Pz3p67 z`K5>Ab98-$`DSuI`2)$3c<;f=gVDtye};khH{}_p6OE?Obu{UqzAB@K?qF(^WGPF| zZJ+9|{K#hz&+<;>gK_ouMwep0{7Q$Z^3bnqo%95rTYme3@hlxbGP?4>JMV`g6Oa~7 zylILg4}$ZjwZWcB9;^nabJ7X5?)GPz>j@pqkv)brB&eyNfH&oAAHq>Vhga`f1t>Ey z#?BU+j2}7WYL7HdPTQ)WgC?pwM~{TJy-yx5bw-`IHNuefa+ZTKwag{)*o0OMCG{Sz z>YNB-t~Sn1P{n^HeNnfs0G0?d%+Tr->5=%V(x!~Y(K&x?R(iGIkL#rD>i0ZRlcgK&$Q{coY^EnXpXUSZG&{HMV14}-xgWagM{$}~g% zzqGvA`%Oc0B61PiC724iYr|-1r3Xt*JCBbhi2Ba1@r0F5z044$yM%#EJ%3^^P~{mv zj9=1r62pMx2lG%rn!@;F+yxJ%+M$A;b&XNTTua^S1QoQa8 zpSedP1vIDDtnnl-ntJ(Oz?v& z$G>mEkcJ`REFSLYa;Q{BJkHTrEFdgVvufGDIMnh8tX zF(K_BUa^4W=_0~8gl#SZ2*qFykP#LoH>@Y+{7<@gieW}a3eex;O6NNk>Fms!r&}Ee zFYl+MW;U;hn=KX`lBnWyKh%yBeA*`)T3OA z>DfTUW4<%Nc3k+b_u!L0DiceaI+{l}_c#tz&=CEZLg#a2#Xfw&3 zBi>bD$Q7}oA`1PJFIpuhAt{ZhyET0HnhhApKqDk=nzK^}uafli1QEYuWMFWc}N7hG03o z2hfEQNW>n^mVNqOZ*HMiix22*-u*X*wWE=74&jubs%of$^;I`P_cv~_ zvi{>7Xdhsf+=aMpXgI8ST!32#Q)&|9KZJw9lVPTPX}S^q* z%c{ln35oVTxA^m<4)|ZR(Os?o97*O>fn?Syjn1)a#Wsf9Qxly~>tSu_=V_RMteDUu z)HCX17--U%aXxUcjHh+tjp*dWw;FYg6xRx?eQSt=7LX&bcqVuKt7$uB4ZNGRuq)_I z0kW(+iq~f)tQ4d>F^gAKZegJ)ix1l4t+QG_EjIO?4HU4V~8Q>k37qh@Xta|pm!{erA8)%uJQ4lnS_$+^pL?4 zQgLdu0;Rt2CMCsPDJMtMhTieg<~C_hB{iz`Vtuq4hqdAii+>j`{H-Hnu)rY!X(k!i zTGuB&Wn17T44sR2FSeuBj=uXWeNd#_zcRdLoXh~uL=i&P7Ttu|7wv%wJQJB!G$8wh zq7{lLY8&bbfyfpA6_qO_Ul=SEC~E7oizV8i$c&H_@MjoNJNoHRKc@IEF|fCz?=zue#?R+>Y;p- zl-=JY8f2us_|h4l{GzE!1~wb2(5-JA!uv-!v*kR|FDCvsiX&c)H5KT#$F>bfT9$>Q zLNVEYvwt=r?pz+lB=Sw(HFG~@v|^sN8gz{k_^SB4=xZO$FITRE@nKE%LP+=gJVi}D zInsLb@+{dFKI!*V*4XM@qfcI(I7am@ zK1D&Zfo|lQZe-=#u*b47LtO+tb+$}mqMh4o1|ge^kP*1;_Y1e8M23|OqoQ5e!@Z~h zj^^GQ=)$m*X8-c^>%0UqKp)zIYWnmd{V@SG&F~6qoF+*2=ETb`UFqjSpDwbkEb+YW zEGEA)f7*im=T!CKK2>g_kV8?pm_C`Z$r1vHB&=QZLtPlR`lO#sQUm@~aUs;3=P`dK ztx~0C4i*TQ{GP32w#bNdc3YFcE42zCC(X9;u;OPTMN7Sd8=W#~#~SV4d(1?m(ojBr z9&!VgNsx7W)>o{=l?rCc`MtY~!&eX7#EDMV7g5LCJV8%@vOt`FPs~j=Bb0lDJMj6C zBRn~5L-6aMeZ9k+$epLb>=DmF-U3}KhNlwpSjS4frk&!cW!ybXLs3qscCpj-UzZ6; zot;AkfiyXD4u|J5Gl^`IjU-?FblX^Bgz;b4DPy*QvajScJcv%i1t2uDevzu6-;`P* z-GjaR;#JR=^9V=!!b}q|?<^3wtRAZr$%=6IqBRuy>3Fw^sS|`jWt@A^P3-fhGK;|2 z#ptoNM&2w3p}nBn?fp)H-c>#jb;1*d=0MLVR8qoZ_aA-l)!_=IuGSmDVJh}o1{-hWotl<^r5t?r5wm4uO%(k= z;Ai2*Na^!!a9L`kswQIzkWk~glEF}j1^4*-MGWx*VQ;MT&i9rpI%daLR$C<%u z%+nu2hfBU@q#xQrM5$(Z>^V=N8dJR(J6Nv%IlEh(J@2x_Nf`8&Kl?ZMYp-A58Hhtl zE#-*ipc7N?WTML0#C!n$iT;l`IYzW2XnVT>`w*7ZBASWszbO732fG#U(Q?&NtfuuU z<7|XFI^=1JHp%m*ro!?#1GI6rKkvum@0V>1$;e2dLfEyzF~9r3wn24T@gP8?O`%5pkA}FsX3kV94<`Ui){ba zU0Z2ze>AtwXbsE+|Al}6%){)~VBcNjGVw5kx}w?}I#_8g59-RuM=I4LLWPN8Pj^|# z_3ZiQ)m)_Zwof>WqN3)Web))sD9MDyF&^`$>6awm)h(?oPx!-PSK|heznjlSLjb6n zZ!`%)wZF7)rr;Pu;@6<*xOB>m;ffHZ=AF|!{TUjfu9k9mtlHaR9wWuSvo_!i?Q&Qb z`#ywSU+v3=UZJqjoLvD3rwZ&$9i|IoN{%`zHXC;`{2kqoFbX0+cw{X?XQxn2u^EX$ zSt7NBTIeWD74{g8X=_pOaS6nKFTLnY3@%tkza6j1k`eu&w;Qyxx^3_YeInWN%Wg%Q zUbMCaH%}tRth`OBIcVJFvK7e8VEj=CbbiAWQm`VrPwrRW_C71?(~b(&h1C%cMbzeX zqY!s!bV`S>@IqgmcZ+95n{4XIqbP6W#qO0DuRsibcj!^OmbHr()<$dKZ;%ow&t5kA7*ckB^)YA9Mhg}Hc`vd3fBc-wG)r<;9=xm}= z_PBWYl%@O;#`u>WYdR)6re_mo zH>3Comi+t8*;hF$WziC|0_6}(zl>Ouy*jm|$^W7W;8-}tuYg#9Pw*^ljnT?z?I|gg1Z*D zTQZBw+kc9Il}RX%6!p*IW`*xEJ75FV-627lZnAb9`)jwb`>L27WnjN<+-Hp_$RZe@ z2$vHz0)&TmT!|(n-}MYUqd{Yl!fPnuAh?8QtOW{;PGcc7a|qH+)eJ?ydsYs#bgzRo z(5-!8@5ptdpsXQfH#_@w0}Oxg8xzUyJP$L|yoC=lZ+t%Weu2h7gxk1)Zysf@yJxO| zuR2itAgD@#7Uh&;hS1ftmkWsqedyhzP)tH%9s)%M`5L6m*XH@6P|Jz4HA;!1gQ2ae zAylyMlbxC)t0{X+K`k+607RK$8p^+1nru{Yo7a5oUrboI^wM2|{Z^OCc@^70TeIWx zfLF{PSbj>AB#D21dNK(Z@32KlFv{!5V^8|?sA`i|?bgYvk(N}Rq%;8ivOHdK!L*KDcXz z!DRYWDM#x z6UyG6Xx`d`7P3;i&!*4}4`QRkj?T@_g_#LTbJ4So9hSrXC@5zuddnp{Zv#~G4sq{) zYq1#1jG)YxBTMWP-$+U zGW$Gz8)0CAU;0Ylhlrln5T6-Z)T!%Q{OAunKTW1Jj7HKOXHi5F^xx(%ORfS*ZXgp+ zW&Grsy~J>)Sk(vRlC=a&N)?hs;-qqOaqr)qMATv;V%Infdbbm9BK_GOk6FA-F!F zuuzU)I|S$69=ZoowW`XYdU}zpK{bqLn=_n*ut2q{NT_mN&)ro1e9^l@PP3n4IE$8~z=QOR>}eLJ!snPS}!eAMIL z+6F4y)Ol)A>Ir&~7!TaAsS{+XzGiapeg#8IWwx8iwS7y+IjW{Xd23!=J4q*#30cG( zBNY`Yb=U_?HmWwV-}Q*04~p*kkvCc+i_WX9LNeiOAr$mj!2W4M%ABwUbq9YAf$8Cc zuLO$dArO#y2EHz9Ls26j%A1z_Bk{%Huabk~fO|brtnO56Z|ZCQCXfF`Hq$YC5;UXT0*5HN!;qrs|`R$!xD5T;SXLPA?iWI%srHM>LV@`@7JHug5+*kbNPGYfA=e48-@s1oQ%^$O zcJ7!Uy6&SBN|(nT6OG)B2$BYgvSCykOHuCWT@ z|K^piwmP2os_*}C?fnfVYe2ZglF6fvJq~ab)hl92d+4GNDsB>nNrGF@-7m`VfX!99 zIh1)1iR>+;+Wi~pP982>X?A*$n1N)8JcLyBRBl!n<&-6?W3>u&5lozQ9x<&5extu2 zmf0`+6?z+CUG(Q4wKyJ1wTD}BgesO)sY3IM{oa?89Z>>?Z2h&jeGA2k#1>%osy-5edVlHcqCc8doCML z@Ua#*^hFsPp?isHw1I2ym{{P;FU1js6<{THwl((rLfqf9m*Jej9Dk7=xY&0X3uqtr zu2ZF~{#ax?q9+RzjebL;EM^DFv6v~h_ED1whiDAUhAJxmE8os77h4q$<`m~4+1+PO zilNUD#$WD_hZwF=b;#;sFIaDb>k9e{4LnI)o->a;Vcxe_F6b7zcFo46>yMiUZN}F!srg zH^r4>S<*v1u_lrqWvBAfPb0=X^R_%5%np1COX4-za8YwxgrK95cfqzN8WH{?>bedZ znb-Vksl|;lV8X;}mTdx)#Fp&Jo_bG5{v;``=nF~gqn5pVk)`!(e6#7w3WN~#?~Syi zxCG6@?&&tv6P+LdeG}@-KjPXX$ke7hkyO4V(G%=H!6pet+x_=`Ax=!w^-4qP7wge^ zEnw)cLfI|B=b}iTysoviw@4Q=-1&Q-5{OZBEynZE!$W+LHP&> zOGZET8>Y1y7UHoD)IM`YZyPmi}w>jeOM3Vvz*h3nt(DM`r2g87J$rkg!9@G z$wE(YTA$mIB^O^0)12)_%GfL#xQY%14kJx-*wy_pSxhRW(-pjo1_qa)w7;It&nD-S z7P(lKu_d1Zhj_`}gFT<1dId>p(<51+{zb)(rHohju!S1eX&@+_&8bv@=7no}>=Jb! zQT^5Ww4H93OGsx4%2`#3${^YyC@Lp@4~&;}AKHeO?sBht{Q|89!fLZt)yQYXlbIh- z_)O}VPNB#SIS?sUV0reezx;KultEHSi9b&d?0Xr*Y9^vvu+z@1V(C(s67QO%v0w5M zYE>ey$qOm5oQ!m7mxRt3EC+w0^;TW&1y)rdJT|;0uK+0nT5o2zkuU5`hB-ebTGSQU zRMP-&%h8!|)|)U!K!01)qzpn%X?i@?SQ21_z)%j|jWWvG=Kc~R1tGSj$y(&qyK=l- zG4!G+%?xpFOGI8jDSjpSSd~rJsPTni0>m8{vuD;ArH;_tdc+NJO*>V%zh0<)Kv7v8 zDDPL0xgf?0o)ugtB|};$YGcCI#o#_qPTAL2S>cw zQkJg9-*)F&?bNGp=bUvo7v5c&G7d^cB08&x8f!@es)jPzX~=MM?`DSEW~NH{_1 z3YD?YmO;`Zi{Yp$QFeNiM|9y`Wq+z`Uqt|g(d;~ynF4q3WM^x9WddnotQNQJJk>wI zN|2u!V*&2-A_v|auwgCm5T@X%e}Wb!Hu8pxTmXgu3JqK=_f$tdKs8N4udQx`JKVOH znPyhOilTya$Y`R3Z~S+U4SX9aSV+`gNY2qs(Go;Z+j!vIcx#aF2%VUnQGE? zoWO034Zj)6jO?iYMGtcEM4;r}?;cI27Wa#+AR3LvD*OYS4Ds2VsZfipNU`hy3`12v zD&!w`8MomLRrX%)DiM^1_KX!vabe&}vq+$FynIZ{oldX4a~Z+QfHh9mk$-Oikj_c1 z8lP;LS8Q0P>x@InW5kF;N-mKcCLOp?2mLBo+uZeSD(`v^l5C38KoLGfh%*|`!BeF7 zlR?~E6}@XZ9^g2IHrVq1Lj>xSHkB{k9q1BD z_>pn3FjERC%_>7%PTn65Y6Eup4YNOEb(xvd??^EyI74f+$Cj{!`o@W1+X=}Z2Xt5F* zEPL{#gl=VtcIE#0N`^3&l{ORk0y@=MHRv4Z5eF#Om(S%7B4oVFLoKOCt-CS)Q5y<} zOr!-8zK(5ovCaD=V2bsg>vr(WGk8xTFCdmfk+GFf5k_!KAVD>7?qHwV6tZDbzx`BW z_uqsVs@jw&)e|O1$pBV@P!B!I-;_$_{!X~hpa%_ExbGJHB^3+1AwXhsrGLT~`T=Rx z7O<@i;ljjK5U__#&bVU@%J@$S$vUhER7goNbc5igXi}erU*9`u!=(9u?>AgbBm{(W zEwPF*+f3_B7T<<5P!st{PXi?CU{Cx|k1e%pzlCxDh!)YmWiM&$@?pd(>)$*hWvB_n zMc~W&Qca3{d9m&Z7mM=Y2%;8!k*kV)JwykxYem#)JbKH*?Ma@?~=2B&x z&4zqDVemaE7$jr>itim+UwLcEdre{2!XX9`s@H6HBghs)7c5AU7AX8(QQDXAFxYmP zcEyRCyF|c)6I5ihLoZ*{FhOmmT?W}SL!m<0+2~+Cl=;TaPf#KyVhCZC!K)s3LnN>vMR%xx#bPN!L?kvAc6tJvLu$_gly1CUwg?U ziTxY-MS@|ev23Haq7JU#+&#Wh8VglAA)zR%cy`wgbKrDKj}gAy1(ubuI<)|aMhqT^Be-xrzpb274?cZKtUalYd-(W7ye+TpxajddKoDT zYKf0fVK*fiiJuNFa$fP^$O6CgFP@bxZ1-PT`>6Fk3v<+Py|BD>=A!wT;@Vhr^uIGu zw-v-d7PBdx86;croRZJuK8L>qaOHUmTQ=&H7Jp-P>lGWR*I@S>qu0B;(7A!H{DE*) z;0wY}+YUdsQITIhzfF}kAv3jJyPN;$@1x5v8tYC-RJ@{erio?09Z?Jx=YeX-btWl# zWOXf7L`|WtI+JAADq$(Do+fyBs76-5v%J&oPdNlJM2=iG+fr#4ukT_reJIoDmQ-Z( z4xms7NW|Cr8yoAAj2I8G+^!b&cinJHI@gO-RB1HtshZR=*UeX;~GXjU=UT=eTG59vE`X)9pn2 zG3*l-g6McqS51_@_cw}Bc)Ht-M_;Qj#b5Rde!fJesKeJpEZE{d60-(_DG)>RcvB|! znX=LcVvai9>V{seFj z^wXi?AuuNzFcgNrwZPGLjG$sc-3L|j{D0NU&T8DC)OzXIy)5FMS~ayIR=Qx3Rl3i+ z+uknM`D|Cbm{>W;W!|8e@8d+B2Ay!=9{;}NzSJRjZMR%i7j%(!*)Rzxs#$jnZ);C$ zL2+QqT1QNanJ%`aAx2^87skxOdR5c*Q{a!0+nD326#*A)W30KwJ^NQWz1Auuh#eR_ zZ`Y4^G*Gs?K?5J$bFo>DXub?=1&a_Y2XVmIdW6QgX2hI1Gpde0q*7JK1Mm;k;$4Ayh@Q zIgK&DWCAB)%dUR^+xbSZc2p3qu@Vn&=VZy2c_H~tXN9pU-O(>KIhA<&@R9)MOgYJg z#6n|CO_S$%4J`%`5nfA1^~d@~&`ECBD(2!?hOOnP^BU(;F#X&x#`#%A-{}$?y5m7tlKJK2X%oR7hX4soxCP2+b2H2iT9bOGG4{%k>`LBJXKCd$w zK}Hw5ir;O(cvHhE6uvD-q!(nGq@`jp+|t7MVA_FHIO-mfsA+SH14?cpF^AXf|M%G${UU@SIh%F>3Nb8uni3i5;;v4;A%k2F;~M- zr7`!d-8Y#IcPVg6lvO5eaWy5Q4NaeXJ{cSGZkPO_pOlf|Q*~{**fw_x+gvsgtlHY# z&qN#M+QY5KRFvL}PgIiXAF$)pZ&W!UnxN9qwj?>0o?F`j9H)+x>dkF+n|?9s=@^U& zfXcXI24P=?-tM)()rFCK#TIBTDBNz=P1@AfWP%PPrLNPXZ?6YzZY)4L4{XOja&^;^ z4QCz#`HWy#biy@5+g(1%?qY-72#7bhubRSxg z0yldWeS(Dt&}}{&5pI@PTTjUZ`D4uNAGopeA#Enwv9|H{fnVF`VboOV6y_YrIB2@K zW8_O0hk7W18pC$6dz+F_mjma=l?!;%uSYDJ62Rq2lx!rQ)sb+bj{9_o?n19dYCkcK z3-c`b+t7y#Q1LVh&dV<&o${%#r>5pj@8_%H7{^wx_diz?h+pz@3@7_6in>3u|16cy zrmfZ>_gRD0+ZlJ^yfn&>b9;*>Rr5$IC`DDhTa(#ha`3^rYp0GqNbt0!JjJz@vB@S8 zz}u&xtrwN~W6SL1Ge~~n6|;NRuOn|=gl|$~R~jmoKFTof#ZDvYpY7ysFuXt^?MgXr zS5A>sUmUm_>A7O&r!oooQj zH!_{wh>{CRJx&X65^|qVM5mr>O;MgEHFT0S5gJAa2_>Cl5>49Wb5e5<-Qiqld^)g4 zW`0*`%5=Md$CKT7*HP!X>cm4Rnp|b7xBb-xc??!QA*M=AL$=kF>0(0s`)rK$63g~= zi(`|_lz>!M4tH&ouL4?rIgIYuMeTR#JN9tqLD8-2TC+-xxE?>h%|9S?P=+i_JQFA^ z0W~1nt^z6kM=LeUV$d|xWu7*@HitpS^lofTaaM&K2$UT;nQNObK*6~X8g)=jtwjG7 zh$ZoZ=!qMyUVgCk$-T=PAQmvzb`yNqPg0F&<;SriQYLc%K>4<84)3fn3m&1#4ca{# z(gq+n8^;p#R+lg3NYpm*CfObK@2SeD?HGh|JSyhuzO`p6wD3M`Ywq=Z1W=4y3p&p< zDalo0NW)z5$}&th<&kksd1Z2%TEpaz=b?V~*t|DXKm6a{e_$w_vO5 z=w$3ZbOZT_U^4nol$l})jD&Jze7jB!fDt=Zr>CIsR686o8O~4#k<^mp_~?+V$iDc% z1j!CdC8y?+G=r(vbfAF_M7rNa54Ly(7||^#74k>__RRxTmY)M7H2~M3?v2uepJ~Bq3nz(Jgt=fvt-b z(Dbd>ujiaVH03C*!S zXCzo(%82tLWsm85MiP!p9|z+)nV2*!zJkZ26XZP?`T^}cRE{%A+fGkmRSnKq)nJcAg=~dPM=ZZx$03Q z0?WblJ3TiRVnJYpqCs~QVe#%V9+-?g5+eRu$}@)-8oN6HKk<$Ef*I^LqV1@V^>l;} zC*KHXpcF=eRgeNvZZ!&L_8+JsT?NXY6X{H-nsic(G+FHdIA76!&4(xkR^{rHYQ~hh zg8Q1O1YRaYj4aCVP4J{9m=Zr4%xR^1>A!lh2DdsFg0Fc18fn&MsP<=Cm|}c!8MX2y zYc0vl_m|o_sWQ}ItI}t`Xh!JeHq{1{h#{ z_`n~^4{V816Eg;=5{iQ0jbfvCrsYY<-jXUhGlneI*#I!NSS%E7+u4k|5cpf$bih3z6Qrj6(!t@l<-L1*_h3TTIMFJL<$wN;`KGh>*0+zW3ORh7Q=n<*IJoN%x1b8h&#o9)(WmUIp7rON$G?~ z;DD~_p%L)(Uce@rryh+1M;mxSa>4K88@M6%VD(zYukGDg5_Q~dsCjO?cy`wO8qq)B z5s{Wl>HUR**XFrt2;S-d``#4>VL~QOuN59iP|jzUA1P78`4 z9{H{fJ*|qIda6s<0hN1EzBi>Q)cScA1Hgym{81Zp|0ttD`B^L0&^aBnE}m%%V%bs3 zhKQy}(~?8ZE zjFirBt;Ul2yY0^XcpTd4u^r#-zHF)0D~Eq_CZRt5tThl9W!c+RzF? zrlS?MA;5ZJdElsMG}MMx&rs)e=4KgfMB96tKncXp0ZZyA(3ON1i`IH&FiUZ z)v*i$io+<)Ou9)-mZk!ane3Pfb#afdqQxH^w(7>a``(5q zvW{lt64Y5>M^hggX$UTF;>tU^ary&GRvFsRHln1)+h#QU!M%+t$DSf88H3U_{!{I2 zIOcSYHLXCJ5}B;d%;9VS7+EHMff8X_QQ)Fyy&l$&!pKNC0ozsrwsTNNi04I-TzKB>8~2Zt+5p&i1yh>A-Cxw% zJJS?eyl@UtLP45xDx~+NXtOBSv%5Nph5}QfQlnLaa1_weT;=qMs-US+R~$S&6~VY8 zgdkpoUWUZGW@E1J$S;x+O+@p_4(L8v^rRRU)H5AKNL`o;Mlr+W$GwLkag^?|b}2PF zJXY2MNGo&$>hx9{X=co&9w+S?DYp1I|3(3+vTFRmoq*z$qB$$7 zg;Fa=_EUJqQ78YvXn27LYoGBvkb8w}89fh>nbT_F_9?JXPog9SJYh>nx_}u=ZsS#} z6@3{qwT?SMSvPKJbzs`z5bH$+%+|vZfhw?3?6mf?T ze5Wwfbo?=79?{{TW3mrBk>VtJYg3i!Ue^rge%K%#1Noy)(n_hVFhpfxhQ{@f)v412 z5)09K+8zAr=ju-tbq-QYog>_d(9<3gfHI|N1jmYFz|y3SS<;koQ3mZT!$&SKj$)mo z24k0OZ-Led`Ojr^uG=R5@#SBpQqU?I&yk0!ZU@t=6PV95gDOQY#o~46h{F9g*HshJ zi2EC<=cfFLZD~Mpf0n3~@+2V8Gw&Hqq?oS*_*(*@x+)mPpXqQwBZazoDP4fQy*ZKK z*BLB^QBRMg;YrFwM1DTqHr)-;P$m%^tle*uy$5m3-VxURf6C5uE3qwE+qc3uYMfE# z*vC{sMSlXKl7g^lZ1VmusngMFhZX! zMmKO`zNTxoXEFk5wY8m9YfR1kbI29P51|dxd9ddq#U@i5X*>hh(3^h2U_)x`B+E|c z6ib59{F$4M6^*Yhf-LAR#+-#JjcdY_ktk8v%cFE}q&ohNGcuS_PA|;_n+{bG_U(AL zv#r5f8%x{x!fM_^^>@HP^9js3mxhO!ER;~)3vF5hA`+6aOyTQla&lim4q0gl6)-aK zthXTJ8}uK+=Bwvy!g=T9v*_VqE)|zoiYJQ(xAbZK%}X*7H|Ig%g{qqaT``_XJ=XS3 z7-8mWe5D_-h9d7d}EKR?Rj_Sq-{f8G@2&GO17Gp4=I) z4JS1Qi~-DGsb<4tvF<4Rx~GQTxR;GoK&*8C2V0v6mmwCysw|Ym+K}TFu(74(X-9;7 zoJ+jLB`)rxqs2;tbps)=Wv*EnT`l{p30h)b+G>TxaA%R#?60TKj>Z5TP(Qh|)?;@O zA>U9t3#;=`AG*rrv&37}PUwdrCmMa}&K2jxInc)|5xfncnJcxb+x(#FHarIl)xCU` zNopG#SAVcz6__odmS~zdeSg`$y1G#U@+f^|WI^IdqkFkQkwJ}9B^95eFM(NX_XZ_O zL8~=J>tT|Mu~w_YbeB{d9yTo2MUmscH{JhYNXQP_?G1+h^J;J3sg`-zQr#b&8j+_I zzBfa*J+Eb$XS;kZ(Br6_5^@5GnVy-&e9V|OGsW@6 z?gwr$iP5b123RQC5RB9YCTc|zuCNSl7c)!R-W&D?{rI}`)tto?i^e_ zotTfN%Q$?wGG;~fvemYa53B&l1>l&&M;W8WD^;A5rNd0KvYb6Tyu);-#gsPtS| zepXr%hgLQAq=5|sh?qO~scjLbrt&P{nL91r{oCG!bO~|+DvgZv!*Bx|5p|I5fMAMr z+=2RQ&<#rO86+lww>zW^I%| z+rQN02Uxdr!f{Z|l2md!-GG)hnfP-7pbUoBlF>8fI*5jodrRTvglCpH>)f*|h4pKp zTKIp|g`O7ICQOHE1@2UFV=Gvbfb=;wV9lt^xcKO?g>T%CQgB0aK=9E2zEDq&~sH`gb2_cIt*L0n@$xiOa$q?g5sQRfJmZKHFZ;QRrC z2$y^$eT!xYBMo%f1(!b~j0cA@QXg~a+wFROG5^(jq(lkHx2&BFkOwNb`@;=bF-ifG z(+xlK0i~DHyH@rH0fnc4KoLp;^#?T{;|EkGotqV`Jy&9|##cq&R#6~ghtIG{-JBa| zOaohNP7Eq#BHF#GDuob}4c3`zGz_fn;&#{$DCvA$)1$21ew$8GBX&?(ipLs0ZKZ{_)1U`{k6V>H>OCDGp9y=Si4dN`Ui#jLP=yU;gf&)T zktcZpd9gbPZ=%& zxem+I+vjSWOs-8>0E#^^7x$xKaR}PZ5 zp;oD0TCVjeLZw=i5rW!vYw739+up4u%2MzvVNvROz_=N0@6S3EcWva`h)F#rp>CHG zncSY?qS6cu)zBW>igGQ@_3bVi1)yXB-oASw9}Mwa+5W(fOaP%Ys~6u;{nTsn+Hew0 zsO}-uvr>vaM~}w(Y--mUCNLF_GsQa~Dp6xZfx;Kr5Ov%Z-23BwkuGb6t`l~!8|a4G zcTK5pUU1l6;!9fXnNlweK)s`awZwA;Y$=-yZJWS|ecBt@&1$~P3r%$n{KY0s7kQ^b1C z%O^yam(EPkCxZPiL|BnYixQp^6hyKLe02ipZyqozJ)bt!8GZJ|^+_NA8j+Lng%6Ft z-MvfA+!!sW_Z_#`geq&+>YBV~u25P6fTK6e758hdGcm=Nrwq=A#R<9as7q&l1EFHPY|I&|4l;1iJlc+Qn#1Rv4B55))Qzc8he*gLv(dIljewTzJ)9)|vggEN zt@sD_&`ad?-rw#Fhebnx5)^D$xZOuBZ~sOrof&U=$HKJLo*L0z9Qjnx)X&bemuW1< zhi~N9#SWnHkws_Y{(ZvxmG31DlPmEme`1*c zB{ZC_ooLu&-|)M$+XBE_hPd|M3xPlmk{ET^yd-4fl1S;}?WDS~`@=Vsvt9rhMp*Rz zC#)+L-OS2k+q`vU@V!u@h0D=v@6L1y)008LopLMULt1W#Vd*U&MW>~hK7>NwTSl_f zRcF-|r{3I$<9Yr8so=(#hUpoAH|I-;1Oksq`v1b>XQ*|1kAdAm38BO)<<& z$WX-TUiK$o=?$&Gm5D|PE=bF|QK_us_QBW2QC~AR5qE;hqPD!6-xG;e(h_-jk+SBC zOo{EBv>H`zzIfh<>%`Zh5y4trQ9SWP$LsAYL!JvJGQSEoI$doM!V;Y9AtW#pZV?}` z!v+1k$Vg8@<0Ts#_Mr9jYe_YS(Bu<@wpY_`Fdr_o6|TRqqRZZXhsWP%zAp#S7*%Y9 zQ8^cgCR|)^X=6<k8L4B-SgZ0{sZS=9VNB)vzr&Vg$SO(bHVOa~*6xO#wI~&u;w_o> z%0&HnM>CzL>4SF-I)oAa)_mMHflpq#G|=p^+iw*UzAJ=oF7124RHFpcMn{d9JXS1#=J=1K)NCR$u)s=JWVg5&X*A0wP&1E}G4lF$+x&I0IIa}-$Z2U*Qvg~lGm!m!`Fc;0Nb$j#H*%HB}#lRhLGnkQxI zw2362j-m~jlqdS2dp$Y`4y?2c?IIQ%>rLN689$Kvm(tQ}y7sSNTBs3<`jj2DKW)jhj3V}UHH?+wa zB$j(WA^P+qUCF{Ze1hbD_q}w;gSE!b(1sFFhAVZ?08f-)oTvt>3U^AYn{S|dovY{G zhMO*uRluN3J`H7|`}fpM6J?U56XJztdh*dn{By;*5b@G=IBd zjHWI|kYOT9L?+b|OvEVf;KS z-ZZGVys%;!^PtfBW#W=(-!xN*4Q$1$G+A zvev={K<Z&3OJ*`nF-oZ5%vUh(g{2J95nlfAzGzT#=n^*r)E0Ysg9f2v(rVkVnAZ zAS~WZqDZvYLZLu{%lX>d0N7y7Y>6;g@*MiT#bi$ytzw^o*KRQR(T#% z5T?m7|r|yZiotsM)%qXy4Plbx_|gI`?#n>FIyRp zD|&m(P*zt)Kz;b{@~=-Tu;WcS*KFVPZM%musl7E^2a)>Rib*qx-1Af5Rm5DZ1st+o zkJODnp1y;JrwsY6W(Bql-^d}L!yodMMp5<|jyyU+MWjxTrW^7@b_e>uh$1^guu}6u z_z%Y^7Yw(<^nMDvqkqlDI*@2{t{hD2Bij63+;as40dY84ZeY!-nA88N)1Sp#*EBuC zTilK32vc8ok!msZQ7grUI-(GXhOi!qf$Ew#rw2M2?{qao4PpM9(Lrf4{J@ndLD9{S z3ox%EAt4MpYA;&e^ej&6;C~XQ)Wb;OOOo&a*zVcKC3~Q@77}lCeaUJbetpG~*|0{m zGj4GHh;!-1|6_wS5B6fnTl7^@WKQ8HC!z`}RmYRY^;X7p-P2|?-lxu$aDMD^vTg8c zQ8kSyOmdbV(SG0Kxn#Y%QF?g@F30yqQ>Aql>YdTojjmZ)O4 z@M5o~>3LFHsY%PXo#No6F3ndQ%@#*vc+WeDn9z-bQBfbHNuHGfd7=r_#0cByaco-F zHl^$SwK9-VD?6?+q`7~2sn;mrMRTFsk31&!(rbm zv2Kyhiv*dleFRmbDf%ntG>xDFb+5l0=lJu@?-tN)`9quwH6GDB=c74$R!Nf;Spiqv zZ47Wu67kRnJ)11EYX?zy%p zw%RsUsDclH8>?3v+e49+1<&k*MX(wBv~#QzV>ecfutGbnc`IWFS^6{ri3SU)%UtO+ z?-KQ#x*weTM`g_z2bp7?o!YL`W+jg}uzsn`1x#-WU~u@XeeAazlLWdim~cJW?=TsYV`6-jWt`LKYa81{w<@wXzkIX2Oc?Dg{^d?L&pX$n!2i%Wj=N|@_deznXSsRv>^W%11pOEO7S-NWPcv-gbr zuJ8S|Mu*f)BZa^mHeLYdZF#gR2@K8_k0RO-tqA^ zvK8{}#2^v-s!9;7U|%pLL1}60;!CU{j6rZB5GNG;eL7V!6ME9}u!EH|0}Z&{Zg$dD zRgb~_8}o-MJ9~g6(Z#9@ft`b@)-mu1 zPsIl2p;(tel^W0&=ulZ!nUHNd^|N8*Lt;n7?}YShZ>S|zf72ElFiWX;*tsy68cyN8 zKQ0jPcK$(aFo^Gb1J(z9ilTxj-ev6I*PCCk>VInI@QNWUMg)>7b}9z-b1J2X9qbHO zH^_%j*}2V-df8c4V-7=@t%Tcf!Xd%s*3vh-I3&d8Oab`=U0X4xpn<(6dv9g9v4=_% z3UdPDhZ!W%Ww=*wDjMg85-}$#v6Iuu5Wpkk0|tq}yiup6&^dV(1`%bl4UiL)agXG3 zF?|WdA{uwG)=F{GTVI)pqS49zSzV2KTcsHv(^Z_Kn&u}HTO5xPjdhk^BvQ%Z&~=p9 zS~EGnxl^+?J3rAH@Fu*8JKBM6xJgdY%Ww!EimTgsI=!UeM0WvlfA{6_ao=RSeYZq6 zm%NaG9C+^7$3FP&>Z}WyE6uUlox8_A((x#E!q*q8B`Bxbh!_;^L%j9HYjq<>(w(ub zPT8zJ#2+4;wHk9pUHubLAlrtec62PD?(+-LG;aoV1@(avgG6ZwEjy$hrES7XnkxSA z!Z|>5coR(-`K9jdcHvD|4IEt|soqm1m%VzX7)VtgD{93E`&5esRaZ|F1M3u=M}$U* z{(|NqeS>cyi%0X_f&m#*+Ka*UWbyT|_?03rWhO~218=ZID9VDAoG)X!WTl3!Kqn&^2 z@am|h8hmA*oQxz+PN%n`V)I3xno%cSNNvp5XIF$QDhfXdhva7Wx>G3z1Wqahm_~~s zj$gVkbmOif7&3jD@v^f<*5*r|Hk15*ZjTX z`9hLy_{o53j|^%%U~@{e#-JL^L&7q819*cN09uCLApQi!#K-VbX0n+WjBwwKqbcy> zmt^t6ySkh|p}z~#&H?c$o9CM&>Yt}iWgl?A0kHk^J*NcgUjY+O;bM&Vsaiqxhw6ez zm;BQ`lRvc7f#6@fFW)aU^bLF4_vm%m&T$*$sta)D^9e!VhayWy47 z6c%&$d^IjF-SD$LFzEssOb1;3M?pVX%Lb41vX+Mxim204E z<7+_`$-vg4(3IgPl|=>J+)T0~F3={_;kE%9o$+3KQ-OiHVPvb|N=3hagfI~Ae+e{p zDuV?A=Uzi;mOu%|j6Ct>4b-U*4i~e{Ze+<(x{XRC72CJ_G~L{X2`~4EB%AU?u<`EC zjJc$Z()LJ$CnB?z_x8$|9pX~#V~=Od2{;HDwAF;qW0#7KsJKQ-l1^xNA=|m~V#+Qq zbniJ`$Jlq!4n3g=*nu(ah(yYvEZ*2Mp%yhHREi!f+%!QNS4(6Al=-DqP_Y3VUSpjU zF7v=mo)}xl(pC)R706_E9`P(lPvnXE@%?G^{ttSpyZ4tD^0Kqmfmk|(SST(E_$}#o zM$h=s6_-!GOeXT&x>$I$qd|mw!&1x6(gX}k2ki(OTp&~6O8nusr7Q@nK~UD%=RgqC zem^9GOKD3#8FJBRTW&L$YH=26I>9`{0}|9(fx?D0`!IhAn@gdeK)>bPKR@^xjH zs=l^wxN^nN5JhG=J0JbYXV|e{d)*$|OZHZ^Pff zaULrz)<+P|RIHp@*kJXGVdY0~{+oZ(GW_JWy zk>I5XEMTwz4Ei+m;P!_8!D$M>LBzLSQRO@zG-iGbPrc1(y+-vpz{)e&T`%SUI&ZouWKJGEHdu6u!N@DyV(D=@KU#QM+xVW;F9J-PuM>F zw$C+J2&1VR6Rm?lQwh3!_Yn5K@-P45zISughtNTfs(YfaU!WN$+EB~)33GHFJ`M_@ zRe+7PA0;e)P?ks{px#ikgPg8AvkOk6`A1YZMGezpbYmA(hT*;#e4avO+$Y9A@=sv_ z(EzrEBb+0$@z{rV)GBdrQn2oy9x*swW$he=^R^#f-wqr>B!gPt$ngjyNpW1D5lWGB zbbHu z84eH)@3K*($s)-&yO&_RrX#}*N2l$AzW}m#8>avbmVgE+1k%;)@86NNd+TPna8P5f zVY{R;$L7Acaxgps+%FgX-*>-Eb`K&-|Go|=;D_NMm4MxQkO+IbWSqedC|5UB-8YP?)YNj*$Kb|ci6*5<#)_|InYK$Hl*KA#agjtLkR}z?uv_Bd zKzRa_Sy&yu6taw4gC|u2iJn1;8Q104*tza9ERuHq!t)@DyXVJ^e(Q zaFAHi=xI1?hWEKZReJOW#J8>!YaKuXw7z?}C?CKlED)Tl1L#-og<#8xnZJP%>c%<% z(r{)_;k6^>kO-xztV*#^j({?Rn3&b#6^kSWtiTOg?LG9ls%o3Ua5ii4Yp_59CV2D&sh3Fop8{AM=Soo2lUK|`qPAOsIIy@2Wz&|*RsQiWZJI0>c zzm)@7#a30JqX9P@++z`%TudZ$L6rN;RAWhJ+4ZXa7sP#(@Lhg&??Ee1F#pz+hgNru zE~Jj23jGMKXk!3`S}j-3jf0N6e32Tnt-$HXoq!Y$q;}ntQdu1?dy23pMFFr2>AXKd z-!gc6DGqW-4t2Y5R$)zQV|9Rrn47{O)%E0m)RPf-l7I#gzH=^NwIEj zhq3=m9i^O6+SPSD=pCOuZ(m$q{kOw+yZkgw5qZ8aiT;7#CiYo09%3B!A1rI12{LWF zf2YuxtN@R|o)S>Ml#`{uqRi8k!NqMBUTyH(-Vqf9>E2=>I;Lact%%D$59J4W4CmZtOpSqlOF}?Y>p1xfdh2n!-+G-p(HFaEue5Op;{YX7C7PHKGDKT zafy!-kxfx84K6YB*2Eh|O{>*pCq^2buMSdFagky~Gjb2zzM;IEn5df5WHckA5Nnx^wLM^rHTqf$Rif~N8-{vD!hBP+U@(d`0eBgv2x&Ei$%SEE(c&|o4ET0r8WFs0Bz?ER^LSD@HN!n@XLR;ITw%Kq9 zlC%4M+!~Aci`KV-BW+}Ksu1pbX=^-Y&ek3*q{l5%_4BIeme%p%9(;&)O~?lfxv3L< zo|EJm>)yo#<0{H;02Kw=QW=)@Q+jBBRc61Q@T9*>S{~hZw}Co2F^3MjvF-hhj**I zeON94$Wb?13*K}L0f`q7;N5sy6#h2TU#5JQEZqfUiXuyR@1>7+ zId#I7?rCC%+tY?yzPv|#x5?>4fSd?5B|x?&ZYQ+#@iPf)C}Kwolg(L|t{%j0_3MlJ zMB1-+F(tJRyO&==b^n-yOi&-7Yh>O~PJRB-F|dY7g8gOJa6Y8QJUyznXK z-p9Uvh)kcOjA0A*N}6H}GjQe=3bS^?ZU8}&9NQIw<=W_{WP5ndE~et~m|jzMY9-ix z1k)Yha~l~IGX$#=)eA_Mtv77pfOJJd7|}{DboaAh-B^urLaWK8@h)wR_WS=Mw~462 zE$J_RMcAKAO&m`07BH1_5L zR_|^D%baN&srM6qGjyF$>bH!QR52yKv683A>bV?4uLTU+#^$(l(h?k(sv!-dp0e;L?xA< z+##H?t%DgCS_ewQE$zqmbno$Nx4Xz=RsilEs1MgGwtZXVw!mP|NVJUb`@`!h-S$0@ zIv~kBa|Wi%I8Lj{9N}Z|p{`SF%G{~zZ{uJ=mC$`$jfpd44T+y|lX5aZIU}s5BLc%Q zg{>&tKR5KV^LBQL0#GU6boI)iB6RH%PFQ@lhwN+n7vB{08tXqCeGr6mgtuB#S4f z7fLe75^R@_wJkFatct!I{e2{Hy9a2M>L@E*rp~+#?vu4!tRNOzgq0FM0m1%ln9O)y z*ZoajqBhEPw7&44@os3^O?tU+C7Zfy4e>A2pZM-|hzv8TWpks8%iNyG5I@eA$iRq# zf_{op##t&u#Iw3!>QI<`z@x5vUh&~<)%u2sITZ7p?_Nk!MLc}xMZ+x${Ghp`S0GzW za6b32*mdt0x**zewHwJx2k`AbVM%W_0dKQLzII5daJx|Rz=WE^u2q-^1E~as)^k+* zIp88Vxxrr4&GH${fJSarYQr7+icyFKfn=;;+Fjg2q*!H%QA?XD&Zctrq!V7t?w)kZ zN7Vfco1_BNELGL>eEK!x4kj&PC~=HuX!p^zkNxJ7njA)PimH^`dZ)w1iHBeuSkOv% z>zT7+Qe4Z*Ax7X&fmiR4seJd^%mIo>n!X^j3c$cVfV%w??5J!=0#M3f%RdZ4k1ahF zV@r4pvow}xEQ#jXlL9mn6PpiUC%`_*DCE4ghF=+$aFbPx05iFEAwJBc8fsVK4Ju3s zuU@#F3skT4U4dXI2x57*(KnD(49L8k8*FYocM-B$O3>-YXeCtlsE5gA3WF4h1iM0v z!jmjJ*O{bM*S#67%;Z^Jutw$htS(qghsWf-Oy-fM;f`3%cEb5sGx_VgVRQwNQw12& znMm>;QGU)BAEU`+w@?G9#vhkyMIZgZxG-)Om(T0vUzo5$7kBT?=6Tg4(;+|o@8&{B z_rDwZhRt~TV}>y9fBNMm5Je(~VGJab0)Q*5;VsL)G-)^McQF(C4?>wGPFqF}rtC&~ zBR1~^i6HAFvxXN=P3d|spYeGI%GlkK5Y>r!oxDa{4=qah3 zJg_eAJN{LXJVd?Q&~5+xf!l+k=Sy95u25!)7iukp{k(DGQ? zLMDTdFRQs3V%fHAb*(JNu}8!4R-{m?*z)p~I8Hyin!#^U>)A;g%h-Jn%fC6N=NdL% zqK6~1lKBh`DQv-Mr$9NnM6p0axlD}h5y+AT3*GB$XgDaig)F0yMJ1aFFOq)GOu20$ z+*tEeRGeFV)yJ4OAAY+SJbmyXFByTuB6MV?7W9~_Az_B1B`%don=~_sl{yeZHkKoMXa6Lfb7Y+8z4Q{roGu0{;8AL!E6{TEQgjo_dcZzi+J53;ZfYld|vtPQ_0p zB&~hx|4W$mb)2Y8S@oOl#~RT9GLp7w>BzVQDn<7Zi45fG2{wL`6n zP3eE%3#kKT;nNS4A}dKQn|Sd?etmJ#&YbTxNcn=Cs=S2M1QbqbBpm6c- zX-T4C?Ce+BdO9xB=P1_8rUuXhq{H()3AliU4+|?e_K5aDnTD|FRRK&oRU)u(cApa= zPyn^-_e6`C#dx;e0Q}3mJet!P$`m_^MVi0AM$vpryI!KtXRdGv4>2rqMf}`8HsNG2 zIe7U;7dwh2NPBK~!#F2YAd?kFx)bHrx2fBz(sZiG{@E>~y%E6>Pm7NpLSxj^+_(bo z)4b0t(`&CS^kXhB?CgqFI9CUjfvj|OzOb0gw~5Tb0%6+*mEO?w0gcuegQ&kyYCR;< z_Y$P&KH3C*sxO4Hj+(SUrSj~YPXxMdeDT^}?;fgAl~+&3wQFjs1t`fQ_Z#849bNjh zP)llw2sfZ!R$Z7LfsL4b?H_S-dn+A%djUBqy66ceE~kc@MQX)h+vwbh&B&3lHFN6v zuXFR0&hnJR-j-Xs)1V*moFU~h)LA_esav9RrbtD~$6|G#<-BvK0(YYZ0OWQ4m^_ZK zV4>}e_1XdTd}cGHn``bvnwdNGJO&z%5$yy}Ift8wuM`{AbRiALnrbmxUC6;C91HsM z--PNOT;!Y)X*Mjb-DVUv5I?-2)}ms{`^SC4*3c!C;>C~HwK#rTTRjk`e+X2JxMrZ^k<5>Et&dEyrC z>saNb0`PnbaV#u}C0^|?pL8+RLySz>W3s=^7=K3gk1Ghk8&1P}u&pPB>&VyZXruds zhYzWcj4f>VhInaXKK2s>ikrtc^tFrJ2Xl{xrk!!Z%mNx>OxrjyDHKUg%L@`pe)1%z zy`R3&jLP7A1f}Xi=^HRICGf$W*MpDp%kGD96duZJR?8xLUHxrXAmfcPhsg)=in$AG?TK=fhq%j!ulq3aZtz?i&(ipqCZiF;64OK&6jX zGA_vhelUB}adH>end(B%9= z0X33RB~9_FT9>+ys$0YNz%PYc>%9s_HDJB0O(2j_U5W%#cvW^$T*sVgikR&Z6E1_T+(WB<^k>ZqSCmhmCxMZo{ zU!1)LE0U}x-r2KDEM+a+bJ1%$aN7BN?G5dzR=KzCUJgl{;E8(b7Mu~A^2sTEO^sHE9yh`cS| z|1eneM3&11&L%Q?Eu2Y`Bo+?TA!Be;Q0I6ClgSstI_o`R(p8D-tI)`$t=nOyVSw?%OPTKmZyEMOSD8kR{ASx<@g^Lwq5*5sl5$ zzdJm)y0HF}Ysnqj9QO&H_|P~Cv3HZEkdxe*V8lZ6KHRej%Ozxrw@X>F$?`yeKwLGc z&(rOb_97O&jn+I+{~8>Aauury&0 zf#v``R?nUuhz4)@a{&p51~^qgHx9p(g?_togmeo(Q8zH}))E?ttNXj~p%gFb<%p3W zORMaPpMRZ_Ws?iF2?}-3s6-l%-uai6KsF;bPivSy*_TGF!BBN?_lJAXi2x_ko=4++ zyPjXne=(rQMXYI13c?W|52eWL-Nr!-6i7bJNvWdv&y`smj4UG21Fq?MroD$Qu^Dkx zFat~@DU1?9v6V&WUM%N>e6}Q#XyGT01#gEKx6gKaM zp~mZ+e&nuCl;~|8NH9sU4}{uZ;d~tfnQp`u3K&&{*t$5>+YGrH=l*TBd>(RqK5meS5ezgM z|Iz*7VX&~q@78d_)V=Phue;$httRbqCzOD0IKaDtbR$py4PkTeg_|B;M>NOu->}NT z7f2?&$2T7se^Ij1!uJnD@ygwLly64ToSIJmPH~!Tw$8IcR`HH&)3q4gBd=$drq*aJ z+jD_gTPnXFU%w@WZE|3@Bzj`gu3powiyb)?APlHbd1G0r1nd6sH?JR!>n`fO(m4Z+ zN1yIK4s(l>r3e9KmAQSmARp?d({(vms;?3DyT%ZcwHTU>_)|~bsdr6(SB^_(L2inf zTz3g6X9<&lDe86uZ5l}K*UnFj*}L#TI;y9%)Gdc@aXzFo*$e5yV2P2?bd2?##5ib4 zZKBWUcKJLLB3@74WD|P*W)zTPCG9}qEyLY`53mHE4-8_9Nvf<$aogke%59uQAy3*} zbu9BK4 z(>f~?@fqIEC@%NfC6zDRJay5z3ERfh&hK*paP9R|SU77Og4m?U#Og5> zJun43iE@RPd+p&+t$UhN195hY%(-u0gA;)=NU+;+h~$Fl$#S;^{sP+)PB=TlKR1G2 zr7IBW1mF-oX(0W6DIGDBS1<*e?Yryd${_JYT)RniSIShE51j@7n3{ zA>YP53m7RuCukr!+O4i(pa%&gg9GC;1R{atoQ(2i+Qiq@L0yAr9v|E;xKU zK-!R5;?B=SkW)XZNS{B@qfW_a3Wu%&Q@gPFOrJ!ZG3)HnED-IQqji66JoBU=O0-R`jpT2skVM%)FWIe%$Vk
    s}?7O=%a3aipwN9aP7#)cVMq{|Un7^v~ zsHo5IlXR`~M}5B$Ry*IF5jLciczDLA<0P(18zxfx%_>T^_0im8CB%ZCq~gdpr49iJ zwinsf{<-&2c@aoxRC1iyXZhEo)?uPG1Yl*{0xN?MJ#q5a(_1m#@eijxBiM0(!l+QfS!iN0hd;QE z$aqe}r#T@o3;^d~L)-0I@qw}rkAr_}l_NfYIN7A@?blg;M)?W;wC_l2vSe6mbiMfO zv{x0`UU%<1Mkgm{1~RF7*6|Qt`Cl?5@3|OT9tZ*-OZ|<8{sSpEf#AFSOeH)d4wp!>M4F5@lpK3lS2%pZ&r&us~ib1nMz_jg)8 z$=k*R?&RXEx$}8H>m%3)e2i3CN?{7=8mPfv&?zwChtzR+YdIaKS zv#t)H|I>to3PziSQ)e?Zz_U80-hRcu(VK^jxztLXBiZiCD`Cu@O8}&q$vEEK*t#Si zy}je<)#<~3yAfD!Gduxc1)eVeC_kzQQ~#DZ&;sJ7(|GCWDk9#J{GH$Tn=}QmGmW4h zxR5}>s6T?OK3%b`F+G6hdPSmpqe!?~iE}E&Q8-d0h7Sxv0=Nk0myg89ijMj6SBi1liWfbas=0{sqhaQ>QnU^7=?;M` zlerxTL2f13LjtJuQ%Bb=bZmz1n%imSrGKs9o8?xxrm+_w($7k+Nc=p1=W%#Q(qenu z&tE0V2FfO@bdJCNn@k_TC`}saGQaak@URlH)^2AX(VS%CJKVXHzHRX+TIvVi6{;6x zf1-pQSk;x7J?{l6W}&WlkYaX4qDC*WIaYur)d{Ws`n)!m>-fI>^^e4Oj^>ivVkO!MAWq=&iPIhOsoeM3RMuOej{er-mlc++7NCw)<`1?=H@KzUUWR+s3mn8Fr&O!Kiv2QHiUW(hDIM0naWZk=TQ4t5(H5>ODz3q^L_aYo5m_2?`!y< zZKHR)%603zS(uLVE*@n#!4O%kZ%XGtPhV6~9}w!Cm(0wHHA$ogFLlA+v_m{TId>4* z2!1-IybtpA%9Hor?eoW!KLP7s1n=%Hn(-xpFkpD(7tYSV`noe3A+4JGx-#4MP-BXx zJ*_hX8_=|11DZoe9#F@KpT&y(Ep>B zsss+l->oFRM8<(=6qL?`XcQc2RLOlk+sA$Zh1>RO(vPNu@m5!$#jQ!KyHFinVE)d) z9gCHSQRzm;Do6inq78X@`ahyEyglXkgL4&u%Pt(?=Ebzm{ zm_z=W(=R%q?hn5hQO0o7)>P&CKRT$he3|`%E|7p0RMAl0beppAD}>dByP zGUq4x@lG1(3%mg7+`cdI34J1MXue(eCb5#M&wqwZEtZmD?ZMXPS{Q2-Pk7sz+J)d5Gc+O%nLwfcLSM(=U z9SLwSizD97uG;7Q*bJT(b^I`tFY)F6!oOUZ{)t;C?YBItSB3qikju>F5Ye>hxueF9 zHQzqu&fjV7+M?q4gKvMdCo!2F!|G2YQ9aVWJLYebUwBK}Iv3|GWJu@A^AQRH3c#-1 z1aPJq*`1t`qG8Ck`sxa47>Y_^=8N#kcv6UeGW&7 z+`(>i(ugC8F*;ND;>BV%Yfp~KLMw&g5wYYX8=N)h#*Uh~GHgD_IG{msr6`E%dFy^} z_lnHigtB0qw*#sPhxk2lcPBddZksdzEb;pv=3h0$>Obx@QvVviSr1-Z`qT?$Y^a~? zo+j!R2*>HR>V|D+#}KwwYh!VZU>j4Bi&s+2l*fp;F-JzgkgS;YB+d_CF7d0}ZODP^ zGj$CR>RiqUmUh<~YV-;4eTonPz6_0mFu%hDfqmcjzIdvGh+JM%K&M2rrDNF4>)c5D zePx=X1+EDKBPm-m2we*^9$gm8x7$)x_Iw+DC7DrW`*U@hMV=AioZdXF+rx@logpmC zu@A0YIvlTI?LP+pNduWQF!ATikZ13ry&&%B#n+=xesdf?nZrsd%7LRE$;s@` zte=S_M5;QLx0nuYLM1=F1y-=FmuwUY326LeKdRGr1Gt3q|WxK*u_6m0$>)ud%t5{ z%8txT1$~Vi9+-r4rkpt}F8(Car&V{PXH_>hi*EO$aw{vW;lrtfMr~Iz;<@nK_y3ui zy-$h<;_Q0|&ZU>O^RwD5{bp~jUKpI4{*v31*^32Blr?Kvp%l6r@et2Hc~}WvlMQE$ zBLaD@<$Wqjqa#l+#Q%Ar^9Bjgx|aKr0H7)LrTZI;d#qCm)BhALG~x7EsP=cFr_5FR z>#H-qLLE|j<5N(%4;hjIt7arQy}HZaI_xe^T#fV{gZ_B4mP53O^>Q?< zlrZAF??hFG*w(N2HTzWRl>H$r@`g)XzVDSyykK(oHHtVWI%YM4Hg-uB+0mQ$an3l3 z!isB4umrM^`k6Vo7O$I7e6q|c%WW(-vk!O#|rig~YS{=6P z&d&{Xd;e?$_u_S~mf10mUyMN@>!zIi2CjFx0+*C5C2alM>y^Fj=R}RYl!RgITBIMt zNRU}q{Z`|@yxZEqNZ#fHq z!}Xw%rUKSUXD&k!CB0gW@{bY9HlTZ+Ts`7F^+K@esxz+)q>56#-~D$x%Kxeyna%02 z(~(2dGbeTBI3bWkfKjMU{BJXiE(%^(fw?0GinL8cV-h+P#knF#CC{o$futw%0b}ylT zA;vFx^(l|?RX*T`Bfwk4h|7#)8+7+|9~g06QGgxdK5FK@et!XQAu8|s6En20(h$#>lQi9OX+It+nD8h1cc0(e6~3+A zw0XLtAGql!*%%jK7H%~ru zHUBuI;+eCcI#;Q5hhOZ?{hl7*L-Z5099}8icbSPCr-s}iHXZ68iC0Z_vm~en&|Gxj zIL4Dq5=)o?G-p6D=_`Ekx4`Pw?_AP`S9R$cY!+k=sz&7(ASGoX^nMKln9);D=ihO_ zg(M4>Vt7|tdMw#+`Qi4mT%>JV&X*O5nGhPOaPxFQO=U$a;y!#B?@AtcA;<#8S?uVyy-Q(~>`pJF5+|2TuA-NA||uPHdO^!(R0H zM?N}_LOF*a+Dp64hdpK8Epm)+ZuB3EU1)Y(|Oq&~1A5m9+bejn&_;=|mc!8CGrEr6^uNpW*4<4WC& zzrM%s{bA9~#~Uo>!|g`Cs;&NBl0CttS+yQtVQr2brwUQ^Ipmk)mnWCH5A4g0V2MhO zSg)mi+8$P0w&orY@IOjq2=m#F#MaO3*!NXGGn!_(D*Vex7p(`Lv@7{sWX^$ROE3B; zz05x`^*mHy=L=#J7WdO-nV|2PQbMg7*qi9JKyR!(k^B?M`#22OB+ zv}bzY=2j4B0a}$J7BKiij033s^I1pNYmbqX4Tb2Hvz4%cfk8)048D0g9B>Z1(!8rs zqlEQMlu8cst*v?ANjn|3D^@uVb3CGOq zs}0cv*%>shMatG<&J0rLDCDXql;$7Cqvv9qU)oedDVk zJ+$FR+S`!_3U*n5uNW;fwK@u0;WBQd?(*#ZA)UTX(S``0a9vH{?g_Bd1w4$HEZ8Ue zj&Qx!9vz<~RXVa77c%wH5epZXgZ}&$~1aJl+N)MJwYay7px~3^5QZcfYZj3x9yfaYmHQX zT!{~&1FrQaaBq%<4XQUtKKO_5yoQqN6O?0V130x9&lPZqAvR6jUGo5^jnUj5u#dW40S<_1bOq@4qufkA^(~n%q#;-Q(Ok~x zbMba5D<*d7Z=|5|m@)_OQoJRRMxpMfLgT#0u5zZP+~t_Xf#I&Te`io`p`--a}5tj|w1Ix&rU@L$={fuOd16{s$54g@IUPparJh6ui6%*32` z$Xe&a0?l7U!j->FsX&);BHoj=0pxKi#UTx1)MVwJlJG|o+fFtNO`l&3UW;#w?|xf|pfocH_DRNsGU5>mAh`g* zit&bq$%3R%2NgGfWU#L>I>>o#1@!hmlq=fyrhWzI?smr}uRylpNN{yw8zvdg6F_dkN`UcNgTej;XS~x^ zbU?_*!zdik zpq7?d3H=7=(f6|W0?c@qKWQXbVKxjs2uaLU@E_r6MWOEM(_s!?^(>7fpYCm zb9`wdGxB*>x|VU-p5O2It6W^^3kvu68{0?nJuOpe-Aie(QTvY5rL;%WWDSn6Z?BW9 zlXPHAZl@;(}??XrtdIx68EXsWB-1 zoThWUn~P;)p&GFS^>Sbkx$(yNG1OdtCljDkM25V_rUUgEMWQW9Xv*k}04FSS{1Dhg z-r77rKHB6H0lo^9ek;Kj395jD41BujU`jt&FX#NXTM*N|t4=Mx7vTEor4V68nN6{A zMD+ChzkWrPJ`Kdtfd177BsMt#NCn&+f`C+D7c44{h-9BR(3BaZ(ES+02Vi?@^ENP> z1Z?k_-t3JHU6@~nmhCXd^UN%-fI{`2d2Q0>pF-&4Oc+e^hOz8NYp3BTX=4xE6dR=vM2HZR)?H2m{&0p_x*5NY(?1kZ2GgSiyq*7VZ;XvP|gTkBxkJy(TtuKN2JigxJuP=&>aK;(=3;R z)ZHUMK~Cw^Y?FG>Mo!e*HZHFZKw;<%78L&YA1J(t1%;u&{8tuYHY^g}#w+ck0Vw=Q znXkIYo{yGLB*Z>vo*ynWm*2-^NY#9z)0yV5m0QpI!}*?}Y9Rk5;*o{nb_eQZ8_Fr3 z7dsX=LxM)5eNd-Shw<#m`3{jP3LZZ-c3_~|Hye5sjch7Y>NJvjUSj`tu%^GtoVd-OgLx&(?SjcBbei9# z#fFPq#g{QyFlUVX2V*e7y>~E3GSR)ci4ZnbEDZ{eL|qwL&R5IggN%b>w4CegzPBU_Wqq>ViDkeV`UwvEeyj_UhMDz zWxc>@E2tA!pO<1b2wz{7>0%o#4wzT2Kz;K>=!q3WHFw?^7G1mtbRHz!Y^!C%gE{*) z&%AZ8PF>~);um{_quGPMHR%Cr@Gwn!vzghNy?n0{$@%&o`3%D=Ph-l4*Y;AwiXXa( z?*q*p`y6P~A@#Qjk3NCW`mF)FO@VPVUK-~vku0M*0hrcXI-AOjAA6WgVnJG~sY9 zuq{*a?{&Vv&Q;ch=SApt8NJDep})7EGpr0X74~C?i6C97Gq@^7A8I7K83A6#zNq-k zO;Uzh3e(fnygJIC$nH zj@)#3&1XE(6hXGM{*U0~cXNAUg`IiU*EWIA1N~J=W83P3o^41wC@w|_v_YeNUh5Y+ zi!AoInJRW%t~qxg1=)4O1xZMTV8pqIJv(d@a#C`621xJ0&j1O}xm@iO-T#Wt$nOJl zU#BEaaT>N}fycV6HZJGvKtRByUz@PP&44f$#-zM~o=W7VAa3WTnB1}{lsTu--0W0l z_O}yfrnpeg8`2RVp@6_3DoU5p&U&qj^(@i3W)ksAt&39t`e2scHf5~2e}=?S4l5l~ zs8|3cM)WeofxN4Lr^8Q*w{IVzB{QWyEi@CIX7oRDW~7!qW=Xb!(XX&Xp_&w} z^Ctu(^fj?=HS`sWqMWhwJvnOi)7P!vW+g&9^bgaP_qzMhPk`Qs8-}O7bnwurEyqw;(hm+JiMtgyN z3PU35zGs-#m4u|#>`V5I2T1*aKc%v&d!%rkux*+&hvbu4BR#{dz1&BAYFk!@#-0h+ zK>a;OyO|jkl;W?tXLrmCi4j6!JhHx%SB84HOHWz*BK8>-=%D^LlHqGo)Xp4tTkaAM zkh%Cv6zx?iFa7iG$B?^rSW%B84&E1hz@H3^c!~@p_S6t1=;-+3ND=paRr0OlK=+#i z$_+fTr7Jtsm-RdDYQ4@J)GEF@RKK4adEX+WW0&48MaXx!N`TwD*}+VP(gLZi&9-zp zlzVxv>d+aiQf2xfO{ug9Rk4egC0;m+Lg9cwsUsP)ZU^&eXfS{YGpif-@WzmDb1pQYD%-gKxmQZ}%^1q+fEyEbL_v1^kS z0`v1HHzGUX^B^+)X(`jh13GQk<^N1`u~Q<%Yaj^m^WTae zKR3}(Y&L6Niwf_Xn=d)V-?uvl8$eC*Rt!;nXyh6U8p#;vrE0n~6+7||R(kc^2_Rz< zFD9*Iw7A)ZkJWJ5>nw(VR3=3yNM)MX4z#SAFn9d2$E5>#+az>e@HIU1>R9-XulVzi z7*0Ks2HEel1u?SB`(DKEAFPk<{2eJ>RPuYxChdun(PeS<8DbvD7xFF=yXu!1vm5Pg z$S%y!?!4%!^obLS`%vlbRa%#g0t~d9Y&!pcUy*&>Hq6h3<3Y3Ha zRualDgjoOk3rd(U1#QK*AEaLxoA#OKmc22W|KMxq-3plfWQFZD7~3oDjFMc0;q?|9 zNgqrn9=wP_ax*#}DiY-&Vs9^Vo*3xZeVZ>(ZdrU4pmX7(6v3{$C9?x#Q2I8UrcQey zwJn{@eIx-6Pzd$6lE}YPuL6zS4usN&57uh4f1|V%B!BV?ALLB0fn&aid!5pc`9eiP z>>5dQ_Qp|*HdJ1YT>NJImZDxEE!iaMUG#6|>zFfL9>zBp{b$Pglo=#9tozb#JeLyP zxq7tM8E9>##rY`;{h3qua0NRgvdtvjbk;qvwg-#~gpLpat%K!Q?~%9Ko$E0rP2_i#6dFe7POqTA04M;jm?z>j zhAK)r(@{5PT%kAZrF~zsbbojV_xOgvY;lkdtzUy+l-cT4iQi{iM~mr#uIfcZmbjM) zt`Tj%)OIPnt=d&$SjlvHDz*srp9JmpW}n)}xzK0{q$oI8<1ALf=slsSs&StT5!UXs zrG;Ptst66F;QFQlkOFFEGq67;(uYRM$N@#`*G*uaLYe4#6v_p z9eZE*D7dipks12rR9ko1^inYfa~A3FqM%?HfA+J(j(lEx>3$I*+wQaZIn`>d80&U9 z@A!gW!wNGQG3PKgFsgHy9g#P;BIq!jF^*af`-=JxbovBNsU*T6BDAwq=twD>5uaHt z<^^mV&#EH8{Gy(Y5qF_=xX@cH4N8T=IFOETF-%S0Pd#_(m z9WR_1bSKzUp-t=VC7{bRBpi2OKDUxlUIt6^4481U8_&9|GXLjmO;x{+&ogUUHjynY zGjIPSiWYfN?Ipi)DtvL?+?_t-pYyo>_``MA#EE+A)Cs+M(-TyA_j%45WYnXS#Gxhj z>mXC4=n|YKt!pzEx6rKDO`kSLY6*Q;&w;4;zrjVxS66{*JVneLhZe|xR4K{1fQ!C%b4l<)2v5(veg(B{ z7So@wkY*mAhh06OmqIB}_eW^Ec2?JI7tTZSXAoAHBa1ejxQWv`C2&V*^73umr_qst>Fh~%gaYHx>D?|8o|z#P8Pr1VBKe}7~##FQ<% zq>*eg?45#9O2#e%zimAP%z;QB{Ofk%tbLg~K$84nJ^4K)wyDn`Qc+#o&B{4z>4s4s zSNbVhA&vc3&#~Xi9aebfXg`=|RXd%3XDH)r?y|{jg|gUFwx<5PG%7|9GgAn#XQS!s zv4jo%ob3(P{dW&Y#s>Eb?}XY~NxY~1AGv(kBO_3(2$Q9TD~K5*)KwwVZ3RT&ER?Ud z;4BnbJyhm1o!YGB=R4Z>3!Me-bfnwI5Itf2BP-=mojdTbNgjEqoCeefJ7d{J371Mf zJp1Q1^{yGWAW%GQ7O5%-o384j<_K9#hSV zDYQ%4OS?V_m$cob{B3QPmAROSeXG-g^2-f7BA$9AR8)7{HFwhK-xhT#9!m3k`HJw_ z?&qOqYcRq0JhT!hq4!byREpV?QxtO1tX}?Y@*l^tSQw7egQ$LuE?u7;$@BGTaTZ4& z)qhX$rouV@%cTqOqW)>)2sI}CU{KO|6Wh+t$DOJZy=GTd*Ch*FgDer2_LjVnZ8RH>`G2K0ySQM#Q9H zW(38UzY%9S(f*Qp?WP3ek`Xnb>)J_nL~wl-OB8pS&m<+6-xiOup+*!E5eY7l=JE>; zR%bKXIE?iIIlzKhkOTZ>BW6its9ozU)klH<-5th5yX|49J<)h3yHy8H)aKY$_WkT7 zm~(8P8~Z%Vi*{0K$!}H1#3Q!*7e_7dPbabJKDt}>L&X-ogf+VaBBC?9+fJThG+cT& z4b+FZ{sQ%3?aZz(VSx-EKN*4N@25M56b+~C@V7Yb!FX-UuMZ4-ou?uisI%ytKUhD3 zABlmUUUrnf$>=$m=$;u&N6u<{III~(1{iNcqOO)_o7>Zor(2(c`3hJdD>@5nKJZi) z+a3$y!@u;Zehx3=h;WVT3A+Q5cD29Gn7%1Fv)_^PH@4Mq5O_G+aB1$h=7U_{NR|0^ z`c`hn%Seu?;w;b9S$rLp#N_SH{J9hn+^NzymNY{_t5*(O0y#psl>}&>mG8n9t=o1& zG*eDu4OCdCQ)?G7ayUtHD=1A)i@Gs-hj&`m7wK>2&tJdkqwIsaIJi z5n(NNKJl=zvsg~;>caBL?^{?jh>$Qr04uGn%k>gvUaN2~G{#Eeo6h7}IV96v=}&=b$rT7>KSt%qU_>)NhyR8N#4jkKO{eltTLB? z04C+H*1V8_;+F5oCcBlD2myS7eB?#S`=pq*-tbwXccF=EFl|v1t|6FpuG4{CIA}sn zX7~Snj=%KEC75#a$En5ShzI7M@!VJEr&n7klB9vpRto_eH1;XaT1l4s(5zUqcOlcq z(I$uCfed#EzA!!7y?@j{0!1sgc=%iFI{rooEJ01Y{7;1RJ7xlyRp9)w5#NO# zJ^UeA7t*HV*Yl2pgqq1sCHU){{oH4&`7|lWr;zQw2A%Hn=mVqX9 zd5G#Ist@5Aj|smmzU*p1h%uu3^Q3Pgo8;j1ZkMvOzl|?5#i!6AK@tdruYniH{ZVNP zoiorAeQ2DO1ZaXS;56E5IViP*Y*`D6|Fyon{M)@Yg49y!Vup+T5NF+rVsr|9@j1lp z+B5s#Uuw_th_>aX817b?|5WlHP%$*b#CebSPn1q3At%=2DC*B5Jj$jk?K^ZFwfL5_%3wQSAN_ygbNkJI zaF=6P=HFho)+5_cV^WdAZiWaf^ZT6NrH_Ix1Qy8zDX@d6M4~KPeTMCsJB^m(T&L!{ zb(lZ_;RsNgT)(q4y%a!jAzlylh$d7u^2@Z`~kEs$U z8qGX%PI3d(IyzTSa%wgm>bz4nh#D6R_Ey zc4}k2R;Yp4Q(3yua7tteyNeB3HVGy8Zs6HULQlsNYzey4*+na3t4Y7%u1_9QG8-iu zLQ$Uvk97V>;w+`T1Zai$_>?J3&ft{p$Df8WIyR5tu$gqJysuK)LsV!K_4CS z>T_E&L3R0XlW5S zRfdblgym*(k$_|v+**|<%*Lw5mAsw_6;G9KRt0%57NK4wE~j`X@U~zO9PImisx$B zgm-=D6?*h--yUrX4&zw$1xfd)r}O#S(5R<#`P+gnX1?eglNNaJg(icq0&PoZT^ZB9 z=u&@DaKcurrV`{c7*3r^BRppT%^deosTDO9`@gbtlJfe_ds@Kq*= z*1^8b&W9C8|JS}KVEDQ=zL=8xUm0CyM7Qms|L>KGR2NC{D-0@|y&wPz&oQZEscCnh3ANaAlb=zq8~dK4-4Z3=&_%_HL2}n-qkp@~p~Q%;nm76m zee&V#xoDrpl&Db(#e@-9g#ztedj<*6JehTm` zPLSa)+Bzjio`kkdyJPR*+agbVa}#iNdUHNMKelU&2#{eCclI}E7yatz%`c8weO1!> zZr*#y?a2z?{HdpbLf6y-)(3zgbS+*lLQwG|R?FL#fkf$2Z&)#G`eu$LOzYr9wr;eR z-6J_@^!}o6O}KmEU^RqLmg!|NAGV6ae4=ZbrCKO&+Si^*x(M}%@TL7k*yZCsv71DJ z;m(Q}+pJ8|vF4|$%)0lCXCE6eC(z$`#d$a@K8w{&IQ3}Z8FFQ zBqe7CQHIttHE-QG9$#7<{pUqsoOCaX2f!CgLerV6*VOOp35n0@SDZlHEumubPb$c5 zKrf@97aDKn9;x3?sHufT5)xoGL|=MTk(1c~KGOw{73P{CV<;kD|3oipHJJ0(LLJx3 z;g3h(Sg8-ValWLP**haS!Cuy^fDygW250rnNEbj)4NpA}RpzsfzsjFLG%ue2b9F;u zVxzOL;l(u4+?g6F>Z(fjkVJ`d+5@Ro{dj~QElVrJnp^n18qSi_qllbji^4eAqpBy2 zs5;lX3!0=8uht$JN>z&U)cerl=sb4@L!+$**K}xo@Sq~JL~{24fETndMzlx9jQR8* zH%SY{r5w$t>dx3nx*}9IK18rrZ6jxu5)8rUa(Z|%4)f^Dqj}OXv)+Uo4PuVkP-?x^ zsT+Sz=Gy!l&O(Oeu2Uq}U1B*VeB0evo`-s5J34;)Jgc*ZI1%PiHJ#`s=+4#>qGZ>7 z?T?tloOtFBBi28cRhrj=$0^9vq6x~|<@!~dWh7I#YPE(4?dF-cD*mYH%t`(3)}>}N z=S^+}{|k~{6EMfIWVLXX%^nksgN$rY@IeFVC}Y~qlvYw@sb0z{H_m7po`W+|BtP&C z)5P!bNl22=gBce`wYyusjiYH2EN!naLk)8wvwl$(F;3uHE`o1KPja~PnIHcA$L_u~ zdhjE%!(4<870xTX$PZ{(G&@KZ)Yi&8!vk|QX9f$Qh0~EC`MT0SV?l9vQ24_o`u|)Z zD>df}{Z#gBGb-g1T)LOGhUaYGx9T5qGj1J~uoykcpxGq6%B?k`2m3tO>BGu_S4&!{T+lybSbJ{8;t#8-}mgshGy)K2vX!}ke#F@7oUmBZ` z8}WWFh2w#sM?VFd%s~M2#y}W_^-vJNw~SfwYbf|Z+Q8W4>^*93)jZ?-C;1lWNtV%7 ze9++$#sS()E7T(qsJ_}c}Bg%<@(Zc0Bt5`bC7VNE-2JqE*pBkJ8d}RH`VE_Ia zisPMz%>uBl%6_d3`A;f*M)=f)WS$QOGmFnUi5oR-nQ~CfKVhaIx~iON^tJF#;1>7o z@Bvb?+kB4}1waytAsB6BaCOQ`5pkXdowB`> zD(%BXH~{kJA)x{R2zytqI@uka9Wg3lhUoE&^ zY+8=qmA$l%6S9MZ#r6k3bG)(Ba^4^@Vqp4wRx0EyKHgBCdOu4!e~VpsU1k@Q;5YUo zJ91ysa%Q3#rRabh?p#mUqpbtXya%KL^0i{G=fFpj&I92$gDW`jVuCQpeAz#V#SNr3 zzVfwX-X!?QaDNTtU!SAA2nh3*!!<2^aV5*l3IR_ih{aTM)1X z>-_Mn%{A%pB+eDY<};MzwpWRU08Z)?L^W`Sc;xK{oxgCmtYw1qsT#=EkbFsWg&~8- zr(o)MVyv`^GqahCqc!dKKRWO|jKB{L=7w@dT!OG0Ku*rC;;M4e)V)k?TDeMDX$%h1 zOL^Vdh_-<$780HrNtDpa|3}qV$3^))ZBq*f$kL!7ASkXhinPFrgrcN`bcl%3&5|x4 zU6Nk`X#rs=X5?v~r5l#!J?r=Pd!Fb0XFg}|KN!xr?=xrSnrr58PkN1(^6OkQ zr~iXoMMrj4n`wY2K#1}&}9y9bT*7FH2bH;o@kwWazyp*{6WRq$&I z=yC!#4RyrM<5Wk6W7kEHPA!Qf+7vwkl@(U65Egf5y;@GA3;gz2qHgNoW5yyoXh6qP zf}SAn+$6xGus3+9);h}MQ$m<)%YWkSP$>ijF3Au`?2%H@l=J8Unz(*5_cU#K!hARmxA7MYeTIz0*-Rs?n zehgn4qkKa53cN+@tFL?xD{lRUs8jIPW2?H(_EHN+SAJXG92h}F@>NjB6n(LQtUREM6bj8Kmn!Q%Z z#0$7>yZ3^0!Rv;d*7FSdD%dWpVCTaza}?W%FUS|_`j(uVYH3S<`pFfq_DELkTU z7|D!T&goEjTaq6zIw?S@eAM*q1{ivcVn@PMd269RbjK$Qi+!Shc0WN|X@-#iJ}yhZ zw~2V6ncFI3Pp<9R%*AbH!K|j@;iOfwz$5?^bdc;&(D`q z5$=f!rhmjQY^+EIV7x$8M46n|sKeox&k`=G4xlSixvT!Ht)}h9(<~M!sIbOmE7w3I z+?#o{DtY`!T?jVCst_Z&jJ$|ickzT>qbnI1B=`M!urbv>AnVO^P!*U6)biiJKS9gz$z84T;GjM6Q7vVwRC)?rL81_PoF%BrKJ|aK0t^XZGVdU19w^yu) zn_L)fa_w^|=vZf%dHwU0Dd~hco9W$mgr+6N7pdvwKjsuJk5(&;th46?B0`(t#yOLe zFQ}~!+1%=Sg*XD+ShCc1OtIn$)+7g+YJZIjP)o#M{4Dq*?RqujLY920Rt`|ggFXg3{ z`2&lL_u>-a7aN(n zb^frW{gk2`k4t-0GSkEAVA*Tg%d&Lk_tHTGB;jkd3{v~tImPOlWD;zy#djg8Am#$& zUf1Bv^gZh!7ewrA_rRL4ODEfI!IG&%mxRT5HO_+bp|90GOJs$xtMp{(5VK~&quy^faMDR? zRXzh4oIlz)i2#|aBA@GWE^wxKe#$?>#2Zf~H#gv*g#^hm=)TdXQ!^+k;;<&^$#eCz z`B?x{W$(hus;9S_-+MZe084|jWA9t77kUpwH1-n}`f=!Dh8^c%kVar;lsnr~`q0my zUB#pRZy>~^dkA*P?dd-HFRZPErr}0$J&k7uh<-{hPbxeuDy4+d7T=HwEueMC9mYtM ze_pf2lI}Er=h!-$=%Cx^ERSJ9=7zj;9>bcS5#J&6O^La^^*P|IJo|p1{ocLjG|jez z`PRPP9UI?kCN}VO{x4+9dP}It`g1RqWeR=_^0!9947=>JJXN#%DZAc`;x*?n^fiVw z>mpA|COQJ9KUpCO4QSV)pVIw8xI}jMyyr0h$A9km?#K#9TaaPf(dKfL?0bwu^`7GZ zKHLx_;&!S&%s3%I3+(acg-0J?Y9ID9OnrfVM4-o`@8M(wQr zUI=8ylZyBORRH{=qX)}8CO#J?$aGXciY$m(fn=5JQE%ZS3)Ga(6`Tl<>Ho@z-o4$q z+$U~q0i_EY_OAIl6f4j4?OaaBhdWA8EOem#DA9=FwRdiLOpn{qX5g#z7WRFrY`YGb zSKP@1z4hTtlMiZF7w?D)UVCb@fH`gJ{gb}cG28mn+2S$(ImQZS&}4814Y!sSE$(sQ zKYD|1$ei!)VOKuS@h_WMT_ssP*?b9%C?iN(2`%a3&>?Y#+;ugfVDVEH^ZEhX2Jy8o*6oM|N==HllR+Ae z?>-0|O;^mF&FWVfVu0gL{*0_mVH|B&&P;hyw2(;95gd0CRW}t+y>jofBK`Qo^$V%5 zeSnyVq@K?Re^eKA&T(l3!*PYuLt5W!UbV3)I?U|l&rZIL_c19J*H$u^n0e*PdI8N> zJFlJeD;$4{uGENLi^$Sd@^fZ;3>+pO_=R-Cs8Ss^!nGNmxvl;p1DENM&j6X8$3c$j zZ`>-g4CuyF0h*FA1-?w_;}4OW{=y)0Aoi`J;%4f~JOEV6|K?w8K>o#YZB_b>zk4|} zd#PIgGS-W|qDN*;+g{0E;*OI4nc;P2D{Otgt(emFN~%|{PKdJlHmSF0!91L#xR?T6 zEhT|5nHr0X8KNmBBpV7__k$6$B^pDevKFO>#07}e_V8e4k)ZWwC_5!ezv6Of7<;mW zP%=y10?i(4&-P_p-K0Nc9v&>SzCoVV$NSgWjR<0WIF~@)#}M!(Seux>S~IY@3NTWO znp0>Af~@o>SQ1DQhv1S-pLFM<{`~y9isWxI%;qexo%!|F)?xcSz`+KRzJZk#2Jf#7 zdLbBEhSu(SDf+;t|52#vki>bJM94;(xy4QL)laEu_CM3=f6bLpyKqW(0)ui=SDstW zIry}-B$>DD{NQdC2!5*a<^Qiesh?O;$yS{@INp?4)%+gY+*B<3R+WHm37=e&%x-@O|HaGdCUC7UZ2KlHkVXe6QsAfel}S zH($Y1RKdbUtwk?EdW1L&IAhHz+wV>&8m_zAP)WMk^xcv1ba;8%YowoN`NNERqt-Z! z-6wzDloK?li6OrKcj^R!~3}dNFB5{*bBC)X{6n@G-^=;4` zsU}hl(U0!AIN4tkU(p>`ZfqMnIRypP%h*ev4${* zfwW9mt5eIw;4{X7DCwk6xX?ue7rOj;H-94zJ?OR}%YX|w6I&%t0eLoq?9lU9dcF8E zRJcv!@x_|;D^3;}VKGV)dN{eck*ZhLDanZ80Q;G2r*S{EGcBX;SV+| z@z!sne5s`RG|KcX2qAcvUg5ZbW+O&-s~tQul~Iz{EUR?LmWIiQ)wplT>NVnp%A}pC zWxSv|D$X(EWRejE-D*}INee77K*FJQG6Q@jQdNY8bb`PkqKAZANKly#$EX0HU7d2(`PY566}T7{&cPp zsKEUB)sBx$IoTAw{&Bhg?V##T)U!l|F=FXC!|Q=j7O-=rmMo$ijxClJfPV7O9g78;G}}rh+_@)={UdTxksuzDTloLtq1M;a^FLOPyn6e5 zKM9DE9As>`|1~Q15-P_k?KK|03OtF4H}^#AYu_OU3~AR7MMJ}kR~Miw57Rt4rz%W` z95}Co6bw<8gRjT#Pmq!qmYzdtFSw=$Bf-jr!f^W<41>I}Gz^+9Y|cW5NSPqMXH|9< z=X+)a`2f+s?zGfxTfng3y40L;k+pY*(i`AhVs4SZ~%*_v0F zi#Xz-P$-f3>gjU*AO7%1-xa@;XHjjjTps!uT7meh1@H~PQ-HA3+S&Z0gasvFo}yl+ z&3O}5Wegv>1%Nsxr&-W@kXXnn*?9Z6j$+dJw*lyF{{cfLr#Zf~ZU+BonPucjj}B4| zG196q>1|yN4p?p*zTZEc4e2HU-GC9|hH+ocoZYl;r~3L=z6}{k`>ooIFHb?b=@>07 zoRXUgXbpe>fUA0B8DErT6ZrXl0Pp}hfP%#m6{sV7i_gb<`>~#1I!!tMNQ>aO^Gznx zKb^(tegF-Wf%X{ppBYquRs1FbAqfO-p=0Qt#0)d>|{@&-$G|NCfg$dn0GAJTdWVw#Oz+x z!pQ!x0#os*+DYm$^+fwny+-8sw{^n6HS=Dd(H~@D>Uey=TY}!}8bmg(-FH zoZ;r8m=6m8TDZY956@Rto^6H26f+No<-At}Y?s-&#N3BA;8y88TjS}sB0f7~M^bpJ z|M&yGGy<@gWsKB%SpqZ>Fz$fTgHlQby?4H9P<30wmyqK#28fI;s9O`*HFeGRq}qw& z9>8%9Nv_8z5Wb-!lU}D3CWG|u=LbG<`!a~o^^7deQ$(o?_gp~vpr&;c}Je+*{gG{ zInF_zrx`Px(>N*4N{D*Y@a@J&z;FcD@a%YanL|RA4&Y2-Pz*fFezed4F=#b|b4Uom zq=bjZ;Md=|xl8g^ux7(ib-+9=7!$W5H=mC@hF>4>lRAa%Y!}SSq{(&ci5Oc_3D*ODaOZI*^Nu@02Yc}_vMLn z3P3l?;kF|mgl);m#HU{0To1ESmum}_pl$%+PCSP`--IMzn=w&~1@QI{%~Vo#P)Ss(U5TgcY<=ZR=r zPZ|hzw7PDBQ;gnup{D7o)ua}D1*EC#xR;k=xottMZyE8O+%OX2a8+o9F?o%m&01X3Ly-Ww`HK6wQ%BF;_L0_0t!?zkTjEau(T(R* z^$8Us3u)M5{X<^7@g!WCg~$?%!F4yAE^)D()2`$#J}ZA)X)TJ{kZ$c+bCC+QIm zY<2t3bUX)NUk5NwggD(_x2HA7VWf>ER1?uhe9m**M#*pF>Xj0d^8S@tF%jgBCgHq& zv{?4XM=aED$@#D}bq7+|!r*a5#r%1o+F3lal8Rl(@wu@L$fkPLu6_D5%qPJL0~ zG2tZOiYAsQa77cKx?!&G?|kH4@=7UUebv+*bhp|$suM|o+9Jzs5jn=i~ZZdX!rNGVmjOMVdNI&avmvEjGrtxbB&c5@v-bMeu5Fr)ZwTcM!>E@IQa@aF*O^(5N3*ja4YDfR* zw454TxbqV^nuE5&FT+u$4H+Q5fao5^6opXV1|gLZ-C62J9wXsv|JSFtvQF5;TdO1u zX?mll%eAzswro&0K%w>$6Y#FCPT%3XO!akIOGF#onA63a_DDMh_0yT#dbpB&Zt|HJ zYfq(Z({Oh4=BI99j;KR{=F8?qaWQWd^DF&jl003yl&j^}2g@PC6GAE}eq5jY;o z1(x6X!D(W07-B%S4RGuyky&;f*ypnguKUkz+2kE6e}P_4p&ZzkBa+@2Ny&mjpOVY! zSl=IM>&4Kwz05U$J`D?2GCH@J0ODo8g+sistgh=$6;IVc zN|JpB!A~!I^M)1PJRDD0h-7BH(hP3vTgp=xVO%otKnOD(mnvMUqWUSle(!0M;RsKw z!n(KZD0Ae&R&oOws4RhXY;I9+Wx_@!+Z!HQNIq6C0kISv#1nc-35`4ZtxS6dfV1x7 z4_62cl;mm$w{cW{^B(lr#z2yjT?gf&StR=I1cn~*&Xxa%KOP-LE!IEg;Vu?gO6{4( zeE7k?+>|yfW@Q{U>e*5!LU!1*)2A?o4=@vX`t?*GBW}#%IiK);1?iAd^0Tk^U4A}7 z4159b1zeZjLe(w7?gPB;MtW8h$?Vs@q&sv_2bS=7n97QrQ+s;;u zLOrx2nhqA2hrN!jwS&Zl5quAty2D5pfy>^uF^%GpG1}+K3+v(n99z?H{|t^tBup~D?urkBQj1gO*P|Ow)R{~CX%(l1bAevV zJ&z1y>SOb1_T@x%$U7BaKDKHskq36EW7D|8OTkc=kT^37*z<5VzHUxJ~JLq&PtA`9KIv&$gqH4uDZG z!GYi%7!xjbBWq)y84;wm;wLp1+$j)X=>P28b<>a!v`R<;^dXlWzu-L#`Tc!y>fC)b zp(Nd)YZ6liuxsypKV=NI7ZB!0JU*KY7Grs5_~u;xSMaSeS%{PED zBv7vqj7zU7fA@g{uF@x*F^S2e8wjElU&2>w!D*o{?U^>t!G(W2l%XI)s4@Z{@Lf1G zc8`xv5Q#pGmZFQGfvtDVJ=D%?^KZ*kd6uc0m_~pmURG{ zLtuy{*zZYTj$jBqh5J;c|658k=PrJvV!t7utR+PXoOIcgDQ%u=58u#EpJMt2Xl4?p zgYEfx-F;zMpZh-BQ(H*x<%aS{JK*b#1cfF^b45z?GMHCcFXGU%&6_!y>ku3rOX$L; zRE{2(s(yh>Rf7v)Xg8N|MTh&k?@hi0CKxIAh$dG`%%=JApQ>NZBsYH$AS?zLB(3l zjb%`ihYNK6%GJoqs0-rlO@EODsrBdzQNMS_9hW1_*$;xxJIB}A!b z8L#@d96V`quw3|kZ4#GdRS%XI8YE~ikV-n<71zw4SpC9hdan#uHGk z&;fe}HeUFT7Et`5J15}jtDq0=RQ>2O8mRN;jn0Y5(-UxCX1F*FD692PFGbO3SQ|eA zEp0Bl0r-3}E>`_df#9nqpG3gRg6FEr)V!}nu9g9YK|Muwk|66wUVhBVVAvz@>Qn{5 z{@aO`2OAI6G=c)TXpm2~w^ee1Gx#ISGm294oIpuZlz?+7(JClvDNFJPz#ea~d>trE zPIJ?&g??Ge)|al$mSgmCNi!*#VPMekNo-Z<^R`L{;Ua&8e)zLQ`LS~l%rQWmfnSvA z2do$`*)j;`%+}|mj}OCFk-Q1K&3;K{N{ZJj-Kp@@sVEWz<{DZyGSj>J`N_EY&)!`` zFheVl*Fkk7*5_k^935SHv0qDJ@>%b0?*~0NT|GRkQ=tcx74R_ee_psl6dU%VCTJ>1 zEzk)t{#W=@0OS9Er01w=P;Rr=!H^yCBf(BkB(Ey)jdLV}ZN(`q0F*(ciBp11VUT<2 zS`aff^U;dY3qT8yW>zVwXksv)3L`t{4r7e3Xkd(w5Ih?&0W6BlOo4Eu4;clU>xk-m zP$9aU+X%dM@SxXq`A%C_9HWi;?LMH_T( zg*q@8PrJacuD=*&dPDuxju5q`0E&@$!}a9~{>k2)@CKlQ$SIR6twLo3KQ5({lUmh! zQ8fBLwL04h=B>>043oHG9bd}MD}bbait|pYhJC%SselT=AM8~lJOatr2eKyPimQeFp(x*dR|md7&1{y%Q2PSAkD(9p&)Jz zaYNIYjqKOHwU$XFWxC@77&T+t$b;Un9!VVM?Rl3em?G`t0+jA{`<|PB?93f->EZM3 z!%g&aZrEiZbFi-xMr?0B%DAb`g_8`ha*6J@ee3Q}{K6PkCgasIk@a+ zhK7*vV&4HREhQ-I+DfZv(2fxmt9Q>I`lALo3=%5FWJQ3IKE9Gug!{nfvI5%&0T?H75#w z)C3vz&IAGVW{Mi`MNrxOCyuvXe%jN5Ny*Y^a^X>bB-eK9&Qj88_*zROe{r=~RlX@} z;`fW+1Un3Nrmr{OZ}${WKCEXtTIXP7<~w@u(*9O3xrgbGH~F!F6+OQ7;fPe;AF+Sx zSq+HDH|J+LbnV$l80WFG`b>*61YL|mB=_1h=Z_8*&WnSrvckWt*XocpDhT`#M_G5F z4z5YR-RMhSs;yz~E+W7CbR?o5D*a$jPyfW_&bilZ4Cggw`J)FRKx6oB@155aJSC+S zqyUupD@Xjp*?)Mmydt9BoM$%=50)Zhr7(AW~Klh1DX(1Zq_ep z|JIN#xN#V%x5f*8NMlnaq`2M1S8l_uGk-&7dQIEf#m$b~YKlq1gdjBUErqZ*DH@cL z(oACgQ{|&)r6V_7|0_8oPf0u3m>ATsT%QOSuymW8g;j3;VfW%{E0)O{<+m!uQ3m_A z$$HHEh>C8M%YkrJeaD)0eud9Tvf^g8o$PE@dyQGvSUuOb2qJjKM5sxnVicLY;6#=Y z28_Kg{Wy|r*huJ_tfP*8T?xx5xebA}z0oyQ|Db`T^TtnKhKT0UhZ@;yz9W?1s;a4Y zBvd7$rlvRT-RK)|l1d@%{>m(Cs-CMZf=DQXIn<;|F{O}PVPaZ>y9Gy!agfh+z)9833;vdw zpratF%j%Z3&-lu5hQC^l6oLcio^OW7@ zD?;w+cr@0r`09)($aLbjXvI-}ED+nOe6peM?T2((udppoOdt#N{o$EkJn~9T#_xyn z1{DdN(c2)g^lc5#5O4uqWJ(GF)BKKIO*FZ1hthDwp&owUn^xB+JlCDx)m*fo7MpIV zgpKg8NT~nJk4Lf@u{bR_gf z?}Ehgw)G@i;Nan9$_T#xQs(w2mg;J3)y$T2!TG67r|`}&T8t~=-sC~dLw>(>chFPvbx%@VVsZP>bY~hx->k7tF+9FW$hvRVLZotRV~>AyL*Hy#Z^-k7 z5g%Xt)pxO%2CMN`FXP&!~6I|7H2d3jDxAigN z>3`VvjOJ>ax1&6Qd<1Pq5$S&*Zo!0C1*+v(-h{V*-zoMz4Ijt~^m{EuP_OUNytj4f zzPF%p(IQk6cL~eEBdWOmJv%;K+u!M(9F?c_XGf5q%slVN7e_8nMjhb4vsTP&qe!d;r>N}`(xQ?#y`piSIQn;_jDHcAt%HBGi;lR1a1@%Bt}|0GSaSA zqKLghb?@;J+(_(pmaef%wKg7?9=*{($K!$@H5Jp>e|UVG=FmcUQj4q{6y+oKcjw;| zox6XNyA%J}ZF%Cwkq6_8BR;rNoC|&QHn&#@4~N|S5G zMFp`P=7F+HM($Fku>;;BvTfhbVoWveUaCLE$9tRO@q|Zq-@1aobE*8F7kXAb?IN*H z#Vbxyxoj^rE?AmWx4M+2Rqsxu9D6XP9P`1?UOcQWA36_p=^rh2w`4uRmzn-2NbGR; zzfxca{e4s9wd_x()?LPs0(}d*f@=mmc+@C<0jt}YzZWNK>(}s@*|SaNYxo`XknGC%RMDrVoSZomK4JUqN~wK9mhXH}huK*h zk6=O)yUs*+ZwgADLQnrscof)xNyO=?Oq+}+<#)LZiKYsI#=f_^AGMkEp7)@xQlPjn z!>{5|X8N~;Q`IQ{#8c)qDYAuRGV4J8zcY`b`)J@KO;%o|+yLb#JZUL*-Os&O9 zgaGuN{j@=M=CsR4_6cwIVGGT>ur(@sbp^$yBytX>(};SO1D`L|F2d(LIvBJL1~eEC zrDhcLI&)dZbkhi&f4{opcJo5IMJC{={dRq^4x4mq7v}bT^s57GonONwjd19Jci=n7 z%u~2GiPjTxI%h8r;uQU@MGu`G9=gdoS@_Di(Py{C%>$2--M#%2IyQD&u0v)Q@l`_F z>^E+Mo0k`>mR_$n+>|XimUqNovhvcE7-EV9&R?qo%_oI%ad1r+3b?|xkB&eisny=EpynG7i!FzPks zog#S4k?L3n-tx_Z+~%j&q8s}_Qnz1OZh%BsJ4qHUj?*dbFZ+kAap z1{j!8pOR@Zg{gL-I$(IH!)v1mBRtR5jo(KaDs|yUBsG_-6KgUWdE@_F)&h%5@o`GR zrfcQhO98)dqj)Dh%d4vfo2uEv2d*+*Oco{`93%z&wdCwl0zT7rLkoGA=w%IF-Pq3D z7CXgVU0uGbyhtwWIUc!wl)O&gf;1)Wr-O-5`T5J~N@89!O5GNglG&y>yMSVPys+s6 zC%sa3QDGK|m zNPeqvWt5nF)u1%J+)Q0Tg@0k7e~;sB7XFNTEJ3UjZu?22xWjxN;_}EtM?-Umb-b(ncLffd=tlLoM~6tR zmoEDJ{JI_z zMWyK7h_u*za>$UCV@4ftl$VGO#LeXlRL3|I$y>hh!D`Dt9-gZrw?%<6JJqbU~R> zKqcI|wSXG}pZ{mA7JALW&>q6Gd5RCOys!!OXV;H{=#7alssq0IM9Zk6NH zNrfK}w-&#H_+^g#NzsP=)E#k?Icr649jp-;q^lAR`~d?;#NrmKCi%l#wnk&kihU#m zHU94HzfH4f6}|ENEnc0^(KV8)c(u?|tbHk^y`lp4k)X8<9;cWCTle+GKbNcFp1_ljvR%lP(W(VsXnl4!yKgO?w5;ZZOTQ&Z@vkDxgb&*nT{^RRgvsWylx+Qf=?Me+E( z2y~B#@<8BH7hR9{V*g&s;8VzowHyRPUOt){>!1yT*`&iPb35}i)DkLm75b?u=$xcy z(mY3(Th!TJlPAO+5ZlU9rvNQvF%>QoxuMvx&u=+_e)F#?Dr9 z#Pud0M-ZGx6G_nQwQ$U^%0wm9{sSfO9$I@XP3mkMMW49AMge)hId1|Z-KX{~sw0+l zvb%XrjpiP(4_QV>IQvlC1MEYziS$r|=eqn70V(nHOC)(2#>EkExr*JsT;^653m6q2 zpC}miq%8#2rr0edL=c}xQ%KOX$RFq8IVlS+a~9!bJzE!FQ~Ie`H7W5_dy_nP?9(@L zkWEp|bojjzpV5M8Ethnd48%!5p+WR{5dpKVef^n~Nz?JYCIa%F#0T^xv)|2{JX+0q z(z-sb3HkeszUfnEOE4(pUmTnRzCdo6NuMHGg>krr5R7nU$sf1TnD!UHcf}X%D8D1t z4WKB2HN%QoUIMoREe&jvdZh6Mf0O)Om~RrEKV5~b0?bB)Gv{)byi^W@JmE9s&0Zp? zik|bTty-v7&&-;Rby$1zae239bnngGSK-yqn4~Wx_V-?gggwTdebos9H&pRHwghR?Z{pv*SD+7*Ym%VAqTL9A&T$vfx=T+d;@^ z96m#H^jfm4-Q~ljD>}BFhIjE8(ZH}f!ZjxB`a;Ulw}RdnU~~c zjh$hC$Fr*+?y@#0hZA8_I{c&+RSuOVkwlp75AR*g7@@e*c|_XkE(Yn6IWO? zKEqA_6=YDU?X`v?aN-(;0&A!nGdFam>$cEnW@}fHUfz^BNz0y)6(03cuAkbu^ZAYS zdHV5rg*%ZajgU@*W21GC@)!Jt?}!<3yQ?t})$UB4QXOS(Zo1Y4wi>5V@dJV|oc~KN zjSuT!T5SWz6djrhtXwHaOa5`b&ncbSzI4hUaj2u~uDj+9Hjj_~WZO&W$ln4Nfr;KH zb7KxT`<{-pSd=&Nmek{>*Ov7UWpDA8NynM?c5CW@>L`CQ{iv}y)?znKf3h^3ChiWV z4z0X+0=0f}2NfQAo=4wV>kGI216wRc{N~6 zc#$-0J96ILY}M6O(G-oO*P_)wl%DY*WlM#1^}xU^dM=Y;mW$1aT5|yU0Kn6<+WS z?i5vRlzR2k#E3by1z6m^Nlv3c!IEmxyen#dX#Fz7GmL^)$?@d3s>M-i(V6_5$Bb@8 z*mOQFGXb6uX8zmr_6P*?f$3)x0sYHBd??&5 zs(P1dzjBLY?{VLRbfgEzGC)IckKMhYH10Tc+q1N@8Q~fHX(t5ReRVb}JWy0JF_jH# z!5zm=i6?5~*4!OqAroIN92kqF5}ITh*UQ;rC)y(%nGf*ETq92+zV!nn1#TOKKoig} zR2H|ZOdLXCprs+$0t<)14RJC;vJQ4?w0=MC;K^TW9=NTof`eVUMF8wlQz4D7j5;{Q zj}wU{aw&=>I(PJF7kPcmA%^iUpsP!!KS1wG}SN00q3CV#8J6lspEHUJkl(j*PWot~9UuI}?ejj?9olJ9Lz&MkntpTB$(00j7Pl-!OEvId2voOKAhNu2 zohz@xCn$VCLfu~PpQNaB4xQAaQOE9(f$9*sqE-#~YqP9g>Dy@$MCW^4iDrr*L^@hm zFMdXpwy`$z*_#D7m^T5>sAWEA+>6@+IN#gun5qcg-V`kNOiZ<`)_4{kS z4j4~*`k}gU$){_v({c5i9Z}6Mgf6QKe0)N76|9`3zt#;ZPLr9u95swP`=Fx z+fXllMU=C#2LG@D8nowZ%(H`M)a}N;=vcN_lM_iSKZC`ifi9!>B^u!SFU5WTtY3=i zUZ%r6{1pT$^K0PdwgBDy4)>4r;j;{KpW+sE4aAZA_|9 zM%>np5M4}_zQBvCi~>H0o@dJr7mN2c3?tiymKmgc6W284?PiQ8jA-b#lJ`#w(iVo< z^|5;tGTW8S)c%6qxg+Y`SL{}B_u{yN_{Qbg)|Ppd_xN(9I-9m;_6zJue|^8kSV_-O z?_QpcNFir?3iV`Vlz+r*r8kQ;QPsn_pj7?me3bf*CY(!+3fG=_T>J49e{}h(Xm0#f znwHvgE_|blFdvM0@`h-I_PwS3nrYt%o3<2R@%Y2)Tdli#P3g^+f+8Ionja^W`m%3| z#ziHNeTZ+v^7gg*IAuXgQM4Y;pntgMkjcyfk_J_*Cm0yfz@r2dGYY>FPmFSPco;aB5qX0 z4~#mH)NIW6dBAN?5zlCV6yv(059LNqvhJLGvVBH_C4PX<;YA=7Cloh90DyHlfhuv7 z)V^b~o@9(-w~I{w#0J9FQInmXi8b%^iSpUScfr>oLHmb$3g`%gjPj(!r~N}X>+>6Y z770uaH3WO6=Q+H2?%ji`pVSckXtt|ORv*v$ z*v`o_13B=u>aI=R?9wAhu0=w+^VE;a+54JY9dSlj_di4|v*7T>eBC8QEnxH=I% z7!gMfkP)SQpMIzkB>Jsovc8`7npkvMl$dqgc<+<9oI(K9zTMHU;XtYZ6j6eWiHNZs-a6^kB=)F>PK^d5SWRRhzc zL1JQ7@tVoUcRp9qFv}l0(Tpke@!nK1D}TX+{KqrrK5#6WFjhJ~Z)2#tl)Ztz#ujx)X z?R{ZQH{JWhol~f|V$}wl&LIW5s6CaZnyzP4qYkKw0^ZtpZ+|m zslGL$R~5+xFG};c!50`xo%ph~-8ju##x9|n)N!V_PVMqP*ym;*Q_%1bW^%QYPoDFx zD*wL$2s`HR5hQ2r)3Ly&L4Nvhtv{yRVCZWu*9*1xo3p?uz>Z(Z7>RH@4v}!{uCM0m zD=O!3zyQwa1Y(aDMDm;S=^QXeusz{1QPnwSQj2`av}!RL=}1M5hUr=jJZ^-1k5x{l z&ce{R8XRQ-kw>`{<>hK$==sEH4oceQ`=2{mU4~6y7|$E5ofq<;x+QZ%(5lFUP zETdA=$jOn0ho@pCU;sQ=`vp!Pcb@@K=n_j~HP&+cefYhkvMSxXc-PRpnDUSPosMtO z#c5(kJtU&E3Id(VTaK-XyRYk$Jl#yBZgm=qbbx8_>pHBufoUvq{M-e=2+_+;;Gae> zN=M4S_$!A%a&Z4v@=g)~eLj6UjPtI3SUiDjf3l+r4;}h$?(kdUyEaJxymjM$9X&vN z<>S%8pl=cn>%f8l^8)}1)5yOFy$1GsNct~DGzYbCO)&`#*dp}s*i*4Dq2S@!(eA$2 zryIfFEmoTz%{s~q=tcSEf-8($;t3iD-?^ypNTIcJhlyF=qTZp53Y;)xs>Q$a4;&E1 z$JOsrchw6TtcOX*{*i`LX%`*CPMQ>_^@N@caZdsD~eN?_(xJhs^JB@o#aIQs3a9V}7U}^R2uJ4!G4+T(1?{DmBt(iS{k3_*K@@ zwU7vv^V{Msx0VWc4s4fjfO-t6iuVu?O;bL&qJ%mHpsrW+qmFNh9aub`>@lZE$o6~u z6sKd32&coY1L%nE(!RA+4$l-_bhiG+ncL%%u>4Tm#iuCkO%qMnCVntuzR26%#Oz-& z?6*1^pt2lqcBw~{tH2uh*vD|cab#@q-9bq|1p|zII+UP=Gzp>^#h!5E zPwVlv_eD|%$)H#40xeaT-4V$u?IPQttD(RFy0@C)S?=p1NMdOW_Pqv)2fR`}x8YW5 zBoY1#k>n)rLgGu{7_OUFh_smYt#B622`&SC1@f|QMLKfK^6c{sTg4brLE$HUAN2_$ z?|uFXJtb)DR|a1IOLi+g<>vRZZ^4~SXe~^+t=7`;$Vs8}?5x-E#N}OoogT_> z=4=jq3D`tiHei=Bp#5-=FS+|$)QnSRc?MDfXP2{(dru*$$3@b#7hyqMnx*{>X|cYF z$cvCzx00xYr}EodSw{J!7gK)?K^_>i!@)C7+x%+Le!4uRyK3M#o1O&zJ2&DOXKNC- z{@R+wTEU886scQL80w=A_j1<_dgvH-PvJE3L{O*XzI3O`tMV7zNN=`-r}8CR^{g+5 zPB-Uuts#Hq)LN9}H|k&F_S6&jI1_UfU_(r}e;$eZ=WQC(hshKKW^0@X+a}NS8Y0hP zds(23J8Q>+`cm1mz0CAd0D&#^U%O3W{isj^_YrWlaNAiwLL%85rUHl{TWd`Kd$6Xa zI}09h)ArK4K13AE6pB8h#bQ{hZPkml zu|}nVQTGD;#h9>l2At12j-^-(LVcIselZj!zvw^;FuE)S;y$s5u# zg+9};VE|2D8E!g|##b{91joD??gdb-;g+lvXa0j-fcc-tt}hO^#^KXuT#bf-lB4x{ zJf(f`7ek3^Km!7096LY@^OqfPv&lo=tVi+|j4drh!j5h&52{qsj7mEvpn(@gRr9AH zb+PBObDC6Z(vdcKjKV1pL|FA$L9!B;hQ^=qqJ=TT z5~W?Jsg@re5dZM{>E@q7m)PDo85^hRye@UNC3=zS#CyX@I>>u$4vQQxrx|E9NOr!3 zSbz`gKQdyk%%Fv(I#}Gk$^WH{<@;2igdbrHW|4_q92&RpUvsoY85Ax%zTM=1(Y+z? zf&9cJ1W?}eBN4r=AWM;8+}VJ^0cQq{Hyr-_Xvgs=K$=2r@qg14N4;C(Qa2V=J}#y_ zz}8q{7Zb9Y;?T!Wo2mx<-`Lv<7^vwz5X)T@p;76C7^sjl#)<67|LXLDdo)AXq#aAu zk;Wg1z%JBG*n=?6|6cIQIR1<7tWfY<%gk~p;TS@2Bo4Wy@j8AOlpE_PUlJDvpTsW_uAk3mGcA-79V{7C^_qh?}sTac_2P~7G+9|;9@y2z1g~Z$j!XfuhB%xsCCINlq+jkzDYAkj%qf20I342QA7!~ zH30r1OqxOXJh=uHIEnm_L~t#izA-&UYDjg-8~Bq1)*R2d=k9o(XYZ+*X(X`To`Xv=Dov6oOT19B=@kFRv@qIOQ7g^{ zkcdG10GgT6b%WOkfP8g0A_AobXcj85F3eBP%ngBZi06aycvCoVE)AF46sj7SF8LCV zfs)+=1q|io;+#0iY{+}l$qeFN_YB#--d;WU!KOIYKOj}c;6QF|zq&#fVVS_8VfD*_ z&1)}x;d!A}Q8w_PVuf&yLu@NA8n9IyP{gU+4pR$>?8LSmv(aO^0wn`dN8qdP*bc17 zqmuBs#u_~yi`;SF)H)9nrde#_xhG~p%k#68)D@E_Z(xxwz6Jde34ST`#`D}qEqrOQ zgtYoz;1@=S(jbcpDBz$^QEehq9-Q4y%KsgKw>Hll@}u9J>soGo0BB#S)V;{8B>e1Q z2N0sM6o2f`g8ax1Kz=|gu5F48T&`9d2gH+>&9C9JcpMb1hjc{>=AZ4JiTl~MH0vf> zCJ1W4f5bUcf%u^QO*oD#5c|yy+;nf}U+P6k%OPw*ZADMFh|9^TmjPsV89 zcOdPP&OdA*_%!E9a_0pB%?G#H5FK|CnsbF3o|&La%+#LWW`k}X2s`d=|J9ifAP@fY ze&MyKYlcB_Ls#{+OhHa?2}nP|0ziVOLh}$u`%fSFf#Ad6`4_nnKq1WQp5Tf4A%*~f z?Sw3&SZk^C?k1{t%rLrN-R~9^G;@*Hj9Jl;Z*o$rBOoBouxNVeIa@HI%h}51?O%Wy zC1x@RA&AZ%31ov2CT(xdhh1C=Qx=;rh2{Zeoavz-x~)>;BvB8Kw+5d{DFN%YFZX{s0~G*kQ;rb!-Z05`$_n)VN>w+49kUsz+hL!@;n0U znC;}T)ni35G&+pp0=viVp>TXgx8<3urV*GbHsxl${R`gn_b?u>Peje58*sFX^4dn^A4)hjAo^Hw`)jf3y_eyk>kcuDwco_Y9E0D$lx#^suQU(dCewqckJ8?M`-{z z!EfzU@?BonArO{6;^!@v?}^oaTyiEiz-XrPn!_%d{<_89uELo5^`J*L*xvbe708~1 z#_se05|;gUJTRX0W6!MYA!I%~^|VI~oz3ry8$Oq1*>#Xw zyidd2kW8)~a8O`F$P3x%j5rM{2k*hc{yVbR`IkAj#R$d4n}CEjp&@yLLRGyCP}nwc zZZbAH9G3PArrsgy&K*Lp#?;oE&%(PtLx~z2R!CR^@FR&=Mmr1oozkwij8F5AV`6Uz zK-RnFvtIevR2NT2^IHs)?oNKnlKljD`WA}aL+%Ui4i&N8c3RB(ZWd=qe&hf33T6Od+0OEz6fjE+eX@f;lkw)1i4Xo(7xorNRK2#V0@kCS!!#a_G(Ev^}2`<(P0 z`$BsFd;+rL(1!VO=c`uGr{o*$fo3ixS!yRwgH-D-|5i?aK>}sxB8>OcjF|3v_~e|H znE+K8@~#T3-2p>G!upK^_aQfx%r@3X&R}k4V!0JGCX?xdCBN2bRTmO$q%9vl!6X>S zm|PB)>{5Hz1e(EQSWB*?Y;U@kJ;`<)AemB0nJ1A!pDkYarxCXNffKgyulg<-AF>!& zTvi+uI2tj>s3oN=eBu->Y9gd|E&t8$6A>EYuRIl(vU^LuoOU_{`1gh-K_c5nlrkpN zK+f4UW8$Q+HjzyE((;j9t?WK=y`!viBED@X`Bm0~Qy$i7nuH$Q;oAVwq8`sib`9}%EfU}Eibr9VUeK`l zYxlyp<(jTq`i*^P@88L57H;`LZAW!!>f*-eqLXU^z^~Dr(n#J0VhuvDo zo1K~M6ubPT9zNV0C#acco6vB^Mcgw*L+x7pbsKvmB0C|zs;V&%5-XJ|EO&zcV_0D~ z!9d~ui_M_)=sj1%39?iL6aJwW;26rkwN`t#e`O{!G|1A#a7&iOb?o%~2;>+MEj^jm z)rp?t5frSDi<8Au->MER5SyQwN3>AyQgdIpzMBk>g5-6qB_6qH{b1@du+CdBU5DP2 zt7YU9yeZ4zwl;af5sXPsQKZl^VbJr~*=$Y+J>d^3Cr)~Ok=K!{yfm!*N00|Dd}tLr zr2mGLi7?H@mEAlGvAL5Vyn8@GPsIf%1b_l9-_f4`hN8J@$B&EK1blahA0|Gd%LkbM z4L|Ck7q;+wH4m?k{gQ+Z+8#a{^h_2+id;W<=#!C#>WCy<3ut=vvPBo33we0W(RuSx zVwqTOo)q}T0>c|;((_uE3J;F#o9`;)IGG!8LQYrd2Q#c7AKxLv)9upPP6px$8swF= zYJ4cdT7<^^*A?g>J*nm<9||c#lRo*tO6~P%eRp?~*lElOpo~eqlErPSuiX1F&s+NS zOLj}3N-CeDvcV(hYh3NY$#i$c%Z5o6%Y!_DKTQ z`^fBO0BzAh13_Z*?6iABsKA-C`yuVvVZ@R$=blm5NY^qRUD@dRu{IG*B zh^(DnwZgE)FdcWI&=GRte6{UiXO)TDOcOfGvzzU~Et(J~5g9*B;NIN*f$7MN-;&mZ z80AI4L}CCYA5Gg-iy(+zK!U(%3eb^Hx^W}I8cGjF0)!+_WB#n?g=L_9Pwv~+)e4Rf9cK56 zU=bqK0$C6&zgYz;NeLgf0m~1&l@E9h?VqPE&tL$?gth8`b);)E`m2FCFHTM{@=eoFJcp&0nmi z$;}{yWdI>8wXstM+{j8qWz6h&o!w8qwra0^D=ACf`G~unGsT{j=mbLM!MD0%jC@Mj zU&Zx9!|a$0fA%nR<-_ZbN*yS~zfqe8-H)m7ldifMCixN3emIj=Q6btORMCak@EQ$X`5!OgU65$?tG*aHKC|<1P6T-YzX8s zBB=D!ix2=dRf?v%b9PrcM)$aS8vixojsx%sUXtWw#v@C-U_TTssH%H zYjGI_xk>pF|6#QKV80MSgj84#9Z28rVW#9uR1ab^OeO_Vn)fRxsn6f9j@28#NNU=X z@V2b&&wlpUo&}VY-@W$d{tuN`m4Tc$Ju^w+fn)tE;`7wcNwq(m%KdMI2X;Iy4<~$n zAC8Rv{q)wN=9TAYBE|fqFpF|Mhr4$%lZ7>NE>A{yv@|VVa9uWw_%2ASNmH?6Pq^1T z`Rv$At!Op0I#C;cRCdR8Uf-TNBw&ME9J(&RHY*&-{bsu>92+KC*#hw8jtFmr1JM>W z08prK*ze*GQ_q*LT+n$qAh7(FA)CQx1<%*FpqsLfy20?$nUn7wh73wphZkrAM07T$!q&L9! z-<4R0P_e)taPGFNwLqGyCFLbtG2fSi)j-m!cL;>c5*P!^ete_Rw zt}=FWLmPrUf6+jFcsNa1;rP+NXTL-JUC{k&>|`GWB7YDu|32QOHI#w_5nb?AQ-m+i zeSiW~3jG^jMEC5Eddgmwo!z#c^C_ko0MBG_U+N}DlQ^C#@*c3(V_F_Bx5PBD*D^k` z!V9o@S7mP`(}!D-l%=!d`Ss**%9wy<6}}DlQ_-wVk4F>*StQpf2XaI_Iu5Br*M~Pz zIe@N7h7G68S4|fZ56Hu$y6#Tn=q6jw6VDPnn*%?f?Nl%8F0A3rom?85i9`K0T}!4{ zd^~H}XGL$OWYZ0v7Mu{*#s<;orm(;>1r{R)X9tUkf&r6aMyQCxx2AS&?@b6KOL~aB z|>ZNMm+S{M%F+ulP z*x$W)=2eWT!c&3f0x8t>TMZbJGr}0~)dJ5!G7R`qiYiwN4e654bW9I$NO>jNUT2sw zIMN~(Fs0}fAiF+Inv21ehsobIcS?d+UUY}$(Is{YuO@{b9J%IlXdtr;fi&rBH$rik z1K^EQEdTIE%K#j~h<5$I1Y?kl;<0Tx-+yFDgS_>O#})q`cc=7e052NIJ_h-bX}>aW zI>T*?k;(~S-+0b|m*RQn;v663jM-#A0!u8|)621G$Z27YlQ=2`LpD}kmfcnZp=P2t=QBO|#3ngWMt#U4 zH#BGl@T8pCT(|v;#VhdW{`T&wB-ahm8Qi!2LaLpO0GGeX0Os?7M+xX&Q-!)BKX31Vn&|J_4p!Z^}^ehD4`VF>EYjS9$(EF=*Oci(%el@=oKpHl632i#HsUBnQF>x4BMU?`<2v*nvzl)jpk^Y_fw#MU1WiTMJq9CCH{GLIg;4RqB@SJ= zXx|*~`42Vb?`bO(Fs&8K2h+N969)vkG>$-5bbtA(2c02bJ2BWd^DAC* z?IyEL2PLyRq>CNTjz?&j*_b855`_{R5LL!9m% zk)&TL<9%nzk6C5IhEV=Rda@9){{FB>Ybetuz0%BCPCEebq!`!`0MpN2_YLv&IKi54j z9?p3b)X;K%Z$I3BEfu2a|Lgf@UX`nCjvOSXge>|s^&!x+-HAk+9A#Ihlhklu^uRLb8dp*Nd3D;kCG^~_4=c;A68XvMs zmo7A%dP$TMPR@3_vWnDgLt>|mmI5|1Z$*nhukb>z(B-juvX2PhMb6!~H~s|sT7QOY zFKF{S9=F#2;8{hrUUJ}vZJ_$F$xb&G^p?1teBIUP=kw253Gq}R*>M7l;Eae&WOtQc zi}skO3QGcaOz!`U;5gQ$u21;*sNN2yy`8PApqIiOi2no4?v_j+Gsm63acJiZ>e&XLBI6= z0f#U0+urNwJm2~wH@t_RR^ObfahUNbYk!jQTh3pOznl6=E=7pj$%F_2N^c?;;=$gT z5F$V!jM`35Ae#;$B0!$=T<6sjyiRn~==r+QjRy-k2cI3^nLGfrAatnG4LWZ3YN(-f z&_60Y)~PtQ{=}rEnN-YZvc`8^*;Ap%8e#cW*}1wW9)nqh$lfwuw)f3^so!_&We3q! z&e#6?TTP~mR$x}hn==IWg;0mer9Y(Mo6%6Uu;pb*eTqu$d?x*dx^MPN{@)repaZU@ zjKW3+!jWS7ais|T3Q-ED1WI}}M&XxhJ*9$>ppSPlWc`+UK*>Xff3nb6fxci{>0Z2e zZE=8NFptj?P75uI3qX99cw@`@lzL^yD~Ul%l@AKps0`oucVn91W+7dZ=_!9T-8{@G zXoyWvIi4cEI>&60!hjvI;ZP&Ps*gIaD^|#DT)D{UMZ~1bDuC&pmwzx7@G5i4eKJfs zbkt*bt8LCL>oQ2bwC**8b4hK=bbE;FO+zElYlp1k2WTz`AGhFk!H1iSIu5;;(Jhx`1%E>V`Ny2^*h=CS8&dw7oxy9 zznTV!G;zpce!E`a%s$Q#2ICCj0$j1GRJEmyKR9ZR#ooA{Yv0ITZ^q|1H+Eeg6J1rj z8SS>KV3$Z(fAguBg_Bl1$Khz^zq^!6teAB2XkS$a!XsAf~(@D8#}B zNmx*(<7d@qLisCm97iqi1D8pNt@Ep`y{_{8i zPK}tDFNg9U=4e)RmrPc>Qgw(%{X0CzNWauNlUx_ZEn|o^xbh~^+vVRrJH`Y+EGHyDL{nhs~B)0y-L`9oiuI|vI zpOfE4LFVK9noZE%)b$_Q?-81LypGhI$C}}{hoKr%96-Urn>r7nQh*;TFQ!cYGE}xm zC4CuoyLp6%6j)elR^U0Z=Y;Hy$#}#~$#?|(1mE5qA`o8xH0sGq99+vxrtdi;=ZMw%0Uc5vFhwFhJAA)iqLP>WCk!gnP&(G1*E^^4{r_klX)fs&vr>+Ji++a(yr?dV z`MYJDJCrCtso91Yf!D2=iQB{#i^BwrEfagjE4iK-_Y|bu&?`;QQ5ifHAAxQ})1 z^8ATT;#CPo{Vfd&^3oS(LWyu5OIaLw;i>QR;TXX(VD-SI23zQz!29GdrI*pf5;?>Y zn)ZGAFZr*)4lLyR$<;AQdNo%k5t3F*Q-J09QGEPIR8o3k~T^l(iL4Ltm2G|jjNbK1Fl<-Dx^G)wK4Ze zMfrbjjA+}1YZkSr<7q1o?#77XZj8^{f~FE-%~q>F94W#uUB4$ze@gj4;W4khaRpl0 ztw_e`fJ6Q%t7t((^BX)+?7VkPcBD+!cQNkZYNtBlEJ4YQl<@7$IC~N~a0VL9cW9N| zvOvj<28iS>a6Y1%YU3Mii%Jm#UGD{y`5vof7y=z zl$F8AkiiZK(cKAGypdZze7%KFn+^XH7a}TJQ;pkak=Ig}G_&qI2{{T>NM_S0f&7p> zSA&p=e` zSux9+DO@K)pkIf~d(&m@$mZUMp>`sNiUjF1uRPXzchf)la&p{@8zw1)o|AVV6W z%eBHCCI&fhn4ClY9VTq49wu0CNkbauQV*BhT+_QkVK(3gs#7ilA6&>1F5daJAEUX# zb2QIuSxw=3~gHYXwY(+)smnZ&nI!P5^~HhH18MbG&N` zf2l&p$<>@+>Mc=`ix~>q%|ds1v`#CBN7RE-)#90bi#W~OMTH$NI9##YZL7}nRCc{*shK-t}U*u9Nsta{zy>-vJGcrdTj{^CAu(DFsu1e`QbUcix$bi95 zAdSUa)TO>sV$;s`(TzaAhNXt#F7;-O-}RqbWd0Tgot%KX(RU=V2!|tDDE~Qr>;L2U z#a+GkJ=sk1%IY_!tL`Zq`~5jJX+tD%amaA0rg9l8J0>KNl``BgVxVs9sr)F|AOUSK zwtdeb@MtoIL1vGDZuvvz#_3zUP9Lo7B{BfnK~L_$Oh7(Ol}*a<4M7kI1Il)A3F<;J z`)=*_Kj9{i^Qq=1j}V+S3X*gL8G zq%tG@AtGi1d)s)D28~ElB9s&MOeLMb_N3UpaVEJp4(EI6mO)EM9cn;(k+KH&LioS3|5qQ+CmP_UAf$kFs0LxZXR{9lZ#8C~R5&h{wgyM?g+z|L zudD-}gdXWWSovgF5iFqqo#9XbssZT2{_1G z|D`K-;Ozb*WHbrk)F<5hg+m@n1KG49H6Rdu<4dV$P&#aLxhV?xqoV9Q=i=45Je+4^p3eF4UmgmL0E zDAer!3p5G=j#<=VaKsis%#NmjzKP@5zF%#u757?yX#VPuY$4~c+SowMPrLD!#n83@ zrECyw*UY_NUnX5jJ}mEgSH=fV zOW}uq8d+<2g1O$RgMn8SU&V^aJ)KMuw0g5{?vjiRbE?1fv(!*AKN`waP|Za>_T)}x z;Hz70Wxb?0Z>;ww_sQf2ij?!X!GKyF*i0yj^w5=tF4~2&n^by;g!A3cQG5F$vZJ

    s`vl;7GCu2(G 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%0A_8z#Dk)0 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

    6+cIa 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

    wTS5*4LZ(>nmJkg}}lr)$*+kDy1tlw$> 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 literal 0 HcmV?d00001 diff --git a/sampleData/SampleData_ORI02072024.xlsx b/sampleData/SampleData_ORI02072024.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a7099ba98c1d36a5994fecbcc4a4d44190693961 GIT binary patch literal 178396 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�jUnAj%6J`wABsE_A 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 z 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 literal 0 HcmV?d00001 From ace47e682a5ef9ff165ef51792c1b0375e55f679 Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Wed, 20 Mar 2024 14:29:17 -0400 Subject: [PATCH 07/34] Complete inventory crude --- InventoryManagementApp/package-lock.json | 11 +- InventoryManagementApp/package.json | 3 +- .../server/controllers/AuthController.js | 149 ++++++++++++++++++ .../server/controllers/InventoryController.js | 73 +++++++++ .../server/controllers/UserController.js | 60 +------ InventoryManagementApp/server/express.js | 15 +- .../server/middleware/authenticateUsers.js | 27 ++++ .../server/models/InventoryModel.js | 27 ++++ .../server/routes/AuthRouter.js | 19 +++ .../server/routes/InventoryRouter.js | 29 ++++ .../server/routes/UserRoute.js | 8 +- InventoryManagementApp/yarn.lock | 5 + 12 files changed, 354 insertions(+), 72 deletions(-) create mode 100644 InventoryManagementApp/server/controllers/AuthController.js create mode 100644 InventoryManagementApp/server/controllers/InventoryController.js create mode 100644 InventoryManagementApp/server/middleware/authenticateUsers.js create mode 100644 InventoryManagementApp/server/models/InventoryModel.js create mode 100644 InventoryManagementApp/server/routes/AuthRouter.js create mode 100644 InventoryManagementApp/server/routes/InventoryRouter.js diff --git a/InventoryManagementApp/package-lock.json b/InventoryManagementApp/package-lock.json index 9fdc29f..b456b3d 100644 --- a/InventoryManagementApp/package-lock.json +++ b/InventoryManagementApp/package-lock.json @@ -11,7 +11,8 @@ "dependencies": { "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", - "jsonwebtoken": "^9.0.2" + "jsonwebtoken": "^9.0.2", + "nodemailer": "^6.9.13" }, "devDependencies": { "@babel/core": "^7.23.6", @@ -4571,6 +4572,14 @@ "dev": true, "license": "MIT" }, + "node_modules/nodemailer": { + "version": "6.9.13", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz", + "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", diff --git a/InventoryManagementApp/package.json b/InventoryManagementApp/package.json index 69daeb1..86970d8 100644 --- a/InventoryManagementApp/package.json +++ b/InventoryManagementApp/package.json @@ -32,6 +32,7 @@ "dependencies": { "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", - "jsonwebtoken": "^9.0.2" + "jsonwebtoken": "^9.0.2", + "nodemailer": "^6.9.13" } } diff --git a/InventoryManagementApp/server/controllers/AuthController.js b/InventoryManagementApp/server/controllers/AuthController.js new file mode 100644 index 0000000..ce17237 --- /dev/null +++ b/InventoryManagementApp/server/controllers/AuthController.js @@ -0,0 +1,149 @@ +const User = require("../models/UserModel"); +const bcrypt = require('bcrypt'); +const jwt = require('jsonwebtoken'); +const nodemailer = require('nodemailer'); + +require('dotenv').config(); + + +// Create New User +const SignupUser = async (req, res) => { + try { + const { name, email, password } = req.body; + + // Hash the password + const saltRounds = 10; + const hashedPassword = await bcrypt.hash(password, saltRounds); + + // Create a new user with hashed password + const newUser = new User({ + name, + email, + hashed_password: hashedPassword // Store hashed password + }); + + // Save the user to the database + const savedUser = await newUser.save(); + + res.status(201).json(savedUser); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + + + + +// Login User +const loginUser = async (req, res) => { + try { + const { email, password } = req.body; + + // Find the user by email + const user = await User.findOne({ email }); + + if (!user) { + return res.status(404).json({ error: 'User not found' }); + } + + // Compare passwords + const passwordMatch = await bcrypt.compare(password, user.hashed_password); + + if (!passwordMatch) { + return res.status(401).json({ error: 'Invalid password' }); + } + + // Generate JWT token + const jwtSecret = process.env.JWT_SECRETE_KEY; + const token = jwt.sign({ userId: user._id }, jwtSecret , { expiresIn: '1h' }); + + res.status(200).json({ token }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + + +// Password Reset Request Endpoint +const passwordResetRequest = async (req, res) => { + try { + const { email } = req.body; + + // Check if user with the provided email exists + const user = await User.findOne({ email }); + if (!user) { + return res.status(404).json({ error: 'User not found' }); + } + + // Generate password reset token + const token = jwt.sign({ userId: user._id }, process.env.JWT_SECRETE_KEY, { expiresIn: '1h' }); + + // Save token in the database (you need to implement this) + + // Send password reset email + const transporter = nodemailer.createTransport({ + host: 'smtp.gmail.com', + port: 587, + secure: false, // Use TLS + auth: { + user: 'maxafangscodev@gmail.com', // Your Gmail email address + pass: 'Maxafangscodev2024' // Your Gmail password or app-specific password + } + }); + + const mailOptions = { + from: 'your_email@example.com', + to: email, + subject: 'Password Reset Request', + text: `You are receiving this email because you (or someone else) have requested the reset of the password for your account.\n\n + Please click on the following link, or paste this into your browser to complete the process:\n\n + http://${req.headers.host}/api/password/reset/${token}\n\n + If you did not request this, please ignore this email and your password will remain unchanged.\n` + }; + transporter.sendMail(mailOptions, (error, info) => { + if (error) { + console.error('Error sending password reset email:', error); + return res.status(500).json({ error: 'Failed to send password reset email' }); + } + console.log('Password reset email sent:', info.response); + res.status(200).json({ message: 'Password reset email sent successfully' }); + }); + } catch (error) { + console.error('Error requesting password reset:', error); + res.status(500).json({ error: 'Internal server error' }); + } +}; + +// Password Reset Endpoint +const passwordReset = async (req, res) => { + try { + const { token } = req.params; + const { password } = req.body; + + // Verify token + jwt.verify(token, process.env.JWT_SECRET, async (err, decoded) => { + if (err) { + return res.status(400).json({ error: 'Invalid or expired token' }); + } + const userId = decoded.userId; + + // Find user by ID and update password + const user = await User.findById(userId); + if (!user) { + return res.status(404).json({ error: 'User not found' }); + } + user.password = password; // Update password (you may need to hash it) + await user.save(); + + res.status(200).json({ message: 'Password updated successfully' }); + }); + } catch (error) { + console.error('Error resetting password:', error); + res.status(500).json({ error: 'Internal server error' }); + } +}; + + +module.exports = { SignupUser,loginUser, passwordResetRequest, passwordReset }; + + \ No newline at end of file diff --git a/InventoryManagementApp/server/controllers/InventoryController.js b/InventoryManagementApp/server/controllers/InventoryController.js new file mode 100644 index 0000000..53285be --- /dev/null +++ b/InventoryManagementApp/server/controllers/InventoryController.js @@ -0,0 +1,73 @@ +const Inventory = require('../models/InventoryModel'); + +// Create a new inventory item +const createInventoryItem = async (req, res) => { + try { + const inventoryItem = new Inventory(req.body); + const savedItem = await inventoryItem.save(); + res.status(201).json(savedItem); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +// Get all inventory items +const getAllInventoryItems = async (req, res) => { + try { + const inventoryItems = await Inventory.find(); + res.status(200).json(inventoryItems); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +// Get a single inventory item by ID +const getInventoryItemById = async (req, res) => { + try { + const { itemId } = req.params; + const inventoryItem = await Inventory.findById(itemId); + if (!inventoryItem) { + return res.status(404).json({ error: 'Inventory item not found' }); + } + res.status(200).json(inventoryItem); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +// Update an existing inventory item +const updateInventoryItem = async (req, res) => { + try { + const { itemId } = req.params; + const updates = req.body; + const updatedItem = await Inventory.findByIdAndUpdate(itemId, updates, { new: true }); + if (!updatedItem) { + return res.status(404).json({ error: 'Inventory item not found' }); + } + res.status(200).json(updatedItem); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +// Delete an existing inventory item +const deleteInventoryItem = async (req, res) => { + try { + const { itemId } = req.params; + const deletedItem = await Inventory.findByIdAndDelete(itemId); + if (!deletedItem) { + return res.status(404).json({ error: 'Inventory item not found' }); + } + res.status(200).json({ message: 'Inventory item deleted successfully' }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +module.exports = { + createInventoryItem, + getAllInventoryItems, + getInventoryItemById, + updateInventoryItem, + deleteInventoryItem +}; diff --git a/InventoryManagementApp/server/controllers/UserController.js b/InventoryManagementApp/server/controllers/UserController.js index 6789e42..5b5ee31 100644 --- a/InventoryManagementApp/server/controllers/UserController.js +++ b/InventoryManagementApp/server/controllers/UserController.js @@ -4,63 +4,6 @@ const jwt = require('jsonwebtoken'); require('dotenv').config(); -// Create New User -const SignupUser = async (req, res) => { - try { - const { name, email, password } = req.body; - - // Hash the password - const saltRounds = 10; - const hashedPassword = await bcrypt.hash(password, saltRounds); - - // Create a new user with hashed password - const newUser = new User({ - name, - email, - hashed_password: hashedPassword // Store hashed password - }); - - // Save the user to the database - const savedUser = await newUser.save(); - - res.status(201).json(savedUser); - } catch (error) { - res.status(500).json({ error: error.message }); - } -}; - - - - -// Login User -const loginUser = async (req, res) => { - try { - const { email, password } = req.body; - - // Find the user by email - const user = await User.findOne({ email }); - - if (!user) { - return res.status(404).json({ error: 'User not found' }); - } - - // Compare passwords - const passwordMatch = await bcrypt.compare(password, user.hashed_password); - - if (!passwordMatch) { - return res.status(401).json({ error: 'Invalid password' }); - } - - // Generate JWT token - const jwtSecret = process.env.JWT_SECRETE_KEY; - const token = jwt.sign({ userId: user._id }, jwtSecret , { expiresIn: '1h' }); - - res.status(200).json({ token }); - } catch (error) { - res.status(500).json({ error: error.message }); - } -}; - // Controller to get all users const getAllUsers = async (req, res) => { @@ -113,6 +56,7 @@ const deleteUser = async (req, res) => { }; -module.exports = { SignupUser,loginUser, getAllUsers, updateUser, deleteUser }; + +module.exports = { getAllUsers, updateUser, deleteUser }; \ No newline at end of file diff --git a/InventoryManagementApp/server/express.js b/InventoryManagementApp/server/express.js index c3637b7..693b1fe 100644 --- a/InventoryManagementApp/server/express.js +++ b/InventoryManagementApp/server/express.js @@ -2,6 +2,8 @@ const express = require('express'); const bodyParser = require('body-parser'); const cors = require('cors'); const userRoutes = require('./routes/UserRoute'); +const authRoutes = require('./routes/AuthRouter') +const inventoryRoutes = require('./routes/InventoryRouter') const app = express() @@ -19,10 +21,13 @@ app.use(cors()) // Mount user routes app.use('/api/users', userRoutes); -// // Start the server -// const PORT = process.env.PORT || 3000; -// app.listen(PORT, () => { -// console.log(`Server is running on port ${PORT}`); -// }); + +// Mount Auth routes +app.use('/api/auth', authRoutes); + +// Mount inventory routes +app.use('/api/inventory', inventoryRoutes); + + module.exports = app diff --git a/InventoryManagementApp/server/middleware/authenticateUsers.js b/InventoryManagementApp/server/middleware/authenticateUsers.js new file mode 100644 index 0000000..28a3540 --- /dev/null +++ b/InventoryManagementApp/server/middleware/authenticateUsers.js @@ -0,0 +1,27 @@ +const jwt = require('jsonwebtoken'); + +const authenticateUser = (req, res, next) => { + // Get token from the request headers + const token = req.headers.authorization; + + // Check if token is provided + if (!token) { + return res.status(401).json({ error: 'Access denied. No token provided.' }); + } + + try { + // Verify the token + const decoded = jwt.verify(token, process.env.JWT_SECRETE_KEY); + + // Attach the decoded user information to the request object + req.user = decoded; + + // Move to the next middleware or route handler + next(); + } catch (error) { + // Token verification failed + return res.status(401).json({ error: 'Invalid token.' }); + } +}; + +module.exports = authenticateUser; diff --git a/InventoryManagementApp/server/models/InventoryModel.js b/InventoryManagementApp/server/models/InventoryModel.js new file mode 100644 index 0000000..2b82d07 --- /dev/null +++ b/InventoryManagementApp/server/models/InventoryModel.js @@ -0,0 +1,27 @@ +const mongoose = require('mongoose'); +const { Schema } = mongoose; + +const inventorySchema = new mongoose.Schema({ + rank: { type: Number, auto: true }, + desc: { type: String, required: true }, + qtysold: { type: Number, required: false }, + exchqty: { type: Number, required: false }, + refqty: { type: Number, required: false }, + qty: { type: Number, required: true }, + caseqty: { type: Number, required: false }, + discount: { type: Number, required: false }, + discper: { type: Number, required: false }, + refund: { type: Number, required: false }, + return: { type: Number, required: false }, + amount: { type: Number, required: true }, + grossamt: { type: Number, required: true }, + price: { type: Number, required: true }, + barcode: { type: String, required: true }, + itemcode: { type: String, required: true }, + otherbc: { type: String }, + lastsold: { type: Date }, + dept: { type: String, required: true } +}); + +module.exports = mongoose.model('Inventory', inventorySchema); + diff --git a/InventoryManagementApp/server/routes/AuthRouter.js b/InventoryManagementApp/server/routes/AuthRouter.js new file mode 100644 index 0000000..9e93835 --- /dev/null +++ b/InventoryManagementApp/server/routes/AuthRouter.js @@ -0,0 +1,19 @@ +const express = require('express'); +const router = express.Router(); + +const {SignupUser, loginUser, passwordResetRequest, passwordReset } = require('../controllers/AuthController') + + +// Route to sign up a new user +router.post('/signup', SignupUser); + +// Route to log in a user +router.post('/login', loginUser); + +// Route for password reset request +router.post('/password/reset/request', passwordResetRequest); + +// Route for password reset +router.post('/password/reset/:token', passwordReset); + +module.exports = router; diff --git a/InventoryManagementApp/server/routes/InventoryRouter.js b/InventoryManagementApp/server/routes/InventoryRouter.js new file mode 100644 index 0000000..9dbce84 --- /dev/null +++ b/InventoryManagementApp/server/routes/InventoryRouter.js @@ -0,0 +1,29 @@ +const express = require('express'); +const router = express.Router(); +const authenticateUser = require('../middleware/authenticateUsers'); +const { + createInventoryItem, + getAllInventoryItems, + getInventoryItemById, + updateInventoryItem, + deleteInventoryItem +} = require('../controllers/InventoryController'); + + + +// Route to create a new inventory item +router.post('/create', authenticateUser ,createInventoryItem); + +// Route to get all inventory items +router.get('/', authenticateUser,getAllInventoryItems); + +// Route to get a single inventory item by ID +router.get('/:itemId', authenticateUser, getInventoryItemById); + +// Route to update an existing inventory item +router.put('/:itemId', authenticateUser,updateInventoryItem); + +// Route to delete an existing inventory item +router.delete('/:itemId', authenticateUser,deleteInventoryItem); + +module.exports = router; diff --git a/InventoryManagementApp/server/routes/UserRoute.js b/InventoryManagementApp/server/routes/UserRoute.js index d23fdb5..2616373 100644 --- a/InventoryManagementApp/server/routes/UserRoute.js +++ b/InventoryManagementApp/server/routes/UserRoute.js @@ -1,18 +1,12 @@ const express = require('express'); const router = express.Router(); -const {SignupUser, loginUser, getAllUsers, updateUser, deleteUser } = require('../controllers/UserController') +const { getAllUsers, updateUser, deleteUser} = require('../controllers/UserController') // Route to get all users router.get('/', getAllUsers); -// Route to sign up a new user -router.post('/signup', SignupUser); - -// Route to log in a user -router.post('/login', loginUser); - // Route to update a user router.put('/:userId', updateUser); diff --git a/InventoryManagementApp/yarn.lock b/InventoryManagementApp/yarn.lock index 1e2ff19..1565523 100644 --- a/InventoryManagementApp/yarn.lock +++ b/InventoryManagementApp/yarn.lock @@ -2496,6 +2496,11 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +nodemailer@^6.9.13: + version "6.9.13" + resolved "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz" + integrity sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA== + nodemon@^2.0.22: version "2.0.22" resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz" From 81ae08c56c41431e868cb2a288e83592cb750eca Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Wed, 20 Mar 2024 14:38:38 -0400 Subject: [PATCH 08/34] Add user role --- InventoryManagementApp/server/models/UserModel.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/InventoryManagementApp/server/models/UserModel.js b/InventoryManagementApp/server/models/UserModel.js index 1b1a1ef..17dc7f8 100644 --- a/InventoryManagementApp/server/models/UserModel.js +++ b/InventoryManagementApp/server/models/UserModel.js @@ -25,7 +25,12 @@ const UserSchema = new mongoose.Schema({ type: String, required: [true, 'Password is required'] }, - salt: String + salt: String, + role: { + type: String, + enum: ['user', 'admin'], + default: 'user' + } }); module.exports = mongoose.model('User', UserSchema); \ No newline at end of file From a129eb43be94c1607a79d7da7757472aadb8527a Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Wed, 20 Mar 2024 14:42:30 -0400 Subject: [PATCH 09/34] update Readme file --- README.md | 268 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 235 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index ec5cd86..36445c2 100644 --- a/README.md +++ b/README.md @@ -14,39 +14,6 @@ Before you start testing, ensure you follow these steps: ## User Endpoint -### Signup New User - -- **Description**: Endpoint to signup a new user. -- **HTTP Method**: POST -- **URL**: `/api/users/signup` -- **Request Body**: - ```json - { - "name": "James doh", - "email": "james@gmail.com", - "password": "domeidoyou" - } - ``` -- **Response**: - - `201 Created`: Successfully created a new user. Returns the newly created user object. - - `500 Internal Server Error`: An error occurred while processing the request. - -### Login User - -- **Description**: Endpoint to login a user. -- **HTTP Method**: POST -- **URL**: `/api/users/login` -- **Request Body**: - ```json - { - "email": "lucas@gmail.com", - "password": "domeidoyou" - } - ``` -- **Response**: - - `200 OK`: Successfully logged in. Returns a JWT token for authentication. - - `401 Unauthorized`: Invalid credentials provided. - - `500 Internal Server Error`: An error occurred while processing the request. ### Get All Users @@ -87,3 +54,238 @@ Before you start testing, ensure you follow these steps: - `200 OK`: Successfully deleted the user. - `404 Not Found`: User with the specified ID not found. - `500 Internal Server Error`: An error occurred while processing the request. + + +## Auth Endpoint + +### Login User + +- **Description**: Endpoint to login a user. +- **HTTP Method**: POST +- **URL**: `/api/auth/login` +- **Request Body**: + ```json + { + "email": "lucas1@gmail.com", + "password":"luckiday" +} + ``` +- **Response**: + - `200 OK`: Successfully logged in. Returns a JWT token for authentication. + - `401 Unauthorized`: Invalid credentials provided. + - `500 Internal Server Error`: An error occurred while processing the request. + +### Signup New User + +- **Description**: Endpoint to signup a new user. +- **HTTP Method**: POST +- **URL**: `/api/users/signup` +- **Request Body**: + ```json + { + "name": "James doh", + "email": "james@gmail.com", + "password": "domeidoyou", + "role":"user" + } + ``` +- **Response**: + - `201 Created`: Successfully created a new user. Returns the newly created user object. + - `500 Internal Server Error`: An error occurred while processing the request. + +## Password Reset Endpoints + +### Request Password Reset + +Endpoint: `POST /api/auth/password/reset/request` + +This endpoint is used to request a password reset for a user. + +#### Request Body + +{ + "email": "lucas1@gmail.com" +} + +#### Response + +- Status Code: `200 OK` + - Description: Password reset email sent successfully. +- Status Code: `400 Bad Request` + - Description: Invalid request body. +- Status Code: `404 Not Found` + - Description: User not found with the provided email. +- Status Code: `500 Internal Server Error` + - Description: Failed to send password reset email. + +### Reset Password + +Endpoint: `POST /api/auth/password/reset/:token` + +This endpoint is used to reset the password for a user. + +#### URL Parameters + +| Parameter | Type | Description | +|-----------|--------|-------------------------------| +| token | String | The password reset token | + +#### Request Body + +| Field | Type | Description | +|----------|--------|------------------------------| +| password | String | The new password for the user | + +#### Response + +- Status Code: `200 OK` + - Description: Password updated successfully. +- Status Code: `400 Bad Request` + - Description: Invalid or expired token. +- Status Code: `404 Not Found` + - Description: User not found. +- Status Code: `500 Internal Server Error` + - Description: Internal server error. + + + + +--- + +## Inventory Management API + +This API allows you to manage inventory items. + +### Endpoints + +#### 1. Create a new inventory item + +- **URL:** `/api/inventory/create` +- **Method:** `POST` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **Request Body:** + - `desc` (String, required): Description of the inventory item. + - Other fields: Refer to the Inventory Model for additional fields. + +##### Example Request: + +```json +{ + "desc": "Product description example", + "qtysold": 100, + "exchqty": 50, + "refqty": 20, + "qty": 200, + "caseqty": 10, + "discount": 5, + "discper": 0.1, + "refund": 30, + "return": 15, + "amount": 1000, + "grossamt": 1200, + "price": 25, + "barcode": "1234567890123", + "itemcode": "ITEM123", + "otherbc": "9876543210987", + "lastsold": "2024-03-19T12:00:00Z", + "dept": "Electronics" +} + +``` + +##### Example Response: + +```json +{ + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "New Item", + // Other fields... +} +``` + +#### 2. Get all inventory items + +- **URL:** `/api/inventory` +- **Method:** `GET` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +##### Example Response: + +```json +[ + { + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "New Item 1", + // Other fields... + }, + { + "_id": "60ad642112fb7c001e7e7ae1", + "desc": "New Item 2", + // Other fields... + }, + // Additional items... +] +``` + +#### 3. Get a single inventory item by ID + +- **URL:** `/api/inventory/:itemId` +- **Method:** `GET` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **URL Params:** + - `itemId`: `65fb2742eebc1b5834807a5b` + +##### Example Response: + +```json +{ + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "New Item", + // Other fields... +} +``` + +#### 4. Update an existing inventory item + +- **URL:** `/api/inventory/:itemId` +- **Method:** `PUT` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **URL Params:** + - `itemId`: `65fb2742eebc1b5834807a5b` +- **Request Body:** Fields to update. + +##### Example Request: + +```json +{ + "desc": "Updated Item", + // Other fields to update... +} +``` + +##### Example Response: + +```json +{ + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "Updated Item", + // Other updated fields... +} +``` + +#### 5. Delete an existing inventory item + +- **URL:** `/api/inventory/:itemId` +- **Method:** `DELETE` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **URL Params:** + - `itemId`: ID of the inventory item to delete. + +##### Example Response: + +```json +{ + "message": "Inventory item deleted successfully" +} +``` + +--- From 90d50b44afb301f7a12d0b5435817a4006365b89 Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Wed, 20 Mar 2024 14:57:32 -0400 Subject: [PATCH 10/34] Fixing security problem --- .../server/controllers/AuthController.js | 15 +++++++-------- README.md | 5 ++++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/InventoryManagementApp/server/controllers/AuthController.js b/InventoryManagementApp/server/controllers/AuthController.js index ce17237..e2b78b6 100644 --- a/InventoryManagementApp/server/controllers/AuthController.js +++ b/InventoryManagementApp/server/controllers/AuthController.js @@ -2,6 +2,7 @@ const User = require("../models/UserModel"); const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); const nodemailer = require('nodemailer'); +require('dotenv').config(); require('dotenv').config(); @@ -78,21 +79,19 @@ const passwordResetRequest = async (req, res) => { // Generate password reset token const token = jwt.sign({ userId: user._id }, process.env.JWT_SECRETE_KEY, { expiresIn: '1h' }); - // Save token in the database (you need to implement this) - // Send password reset email const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // Use TLS auth: { - user: 'maxafangscodev@gmail.com', // Your Gmail email address - pass: 'Maxafangscodev2024' // Your Gmail password or app-specific password + user: process.env.GMAIL_USER, + pass: process.env.GMAIL_PASS } - }); - + }); + const mailOptions = { - from: 'your_email@example.com', + from: process.env.GMAIL_USER, to: email, subject: 'Password Reset Request', text: `You are receiving this email because you (or someone else) have requested the reset of the password for your account.\n\n @@ -121,7 +120,7 @@ const passwordReset = async (req, res) => { const { password } = req.body; // Verify token - jwt.verify(token, process.env.JWT_SECRET, async (err, decoded) => { + jwt.verify(token, process.env.JWT_SECRETE_KEY, async (err, decoded) => { if (err) { return res.status(400).json({ error: 'Invalid or expired token' }); } diff --git a/README.md b/README.md index 36445c2..867c033 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,10 @@ Before you start testing, ensure you follow these steps: 1. Checkout the 'buildAPI_V1' branch. 2. Create a `.env` file and include the following line: ``` - JWT_SECRET_KEY=generateSecret() + JWT_SECRETE_KEY = generateSecret() + +GMAIL_USER=your_gmail_email_address +GMAIL_PASS=your_gmail_password_or_app_specific_password ``` 3. Run `npm install`. 4. Spin up the server with `npm run dev`. From 83b61760a5ea70f026ce341564553a1b128a01fd Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Wed, 20 Mar 2024 15:02:04 -0400 Subject: [PATCH 11/34] add more readme --- InventoryManagementApp/server/controllers/AuthController.js | 2 -- README.md | 5 ++--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/InventoryManagementApp/server/controllers/AuthController.js b/InventoryManagementApp/server/controllers/AuthController.js index e2b78b6..88f4bec 100644 --- a/InventoryManagementApp/server/controllers/AuthController.js +++ b/InventoryManagementApp/server/controllers/AuthController.js @@ -4,8 +4,6 @@ const jwt = require('jsonwebtoken'); const nodemailer = require('nodemailer'); require('dotenv').config(); -require('dotenv').config(); - // Create New User const SignupUser = async (req, res) => { diff --git a/README.md b/README.md index 867c033..bcb10c2 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,8 @@ Before you start testing, ensure you follow these steps: 2. Create a `.env` file and include the following line: ``` JWT_SECRETE_KEY = generateSecret() - -GMAIL_USER=your_gmail_email_address -GMAIL_PASS=your_gmail_password_or_app_specific_password + GMAIL_USER=your_gmail_email_address + GMAIL_PASS=your_gmail_password_or_app_specific_password ``` 3. Run `npm install`. 4. Spin up the server with `npm run dev`. From 5eb4f84a9edc12f42dbc216b895a2e95e5a7726f Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Wed, 20 Mar 2024 15:06:02 -0400 Subject: [PATCH 12/34] correction of Read me --- README.md | 293 ------------------------------------------------------ 1 file changed, 293 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index bcb10c2..0000000 --- a/README.md +++ /dev/null @@ -1,293 +0,0 @@ -# User Authentication API - -## Prerequisites -Before you start testing, ensure you follow these steps: - -1. Checkout the 'buildAPI_V1' branch. -2. Create a `.env` file and include the following line: - ``` - JWT_SECRETE_KEY = generateSecret() - GMAIL_USER=your_gmail_email_address - GMAIL_PASS=your_gmail_password_or_app_specific_password - ``` -3. Run `npm install`. -4. Spin up the server with `npm run dev`. -5. Start testing the endpoints. - -## User Endpoint - - -### Get All Users - -- **Description**: Endpoint to retrieve all users. -- **HTTP Method**: GET -- **URL**: `/api/users` -- **Response**: - - `200 OK`: Successfully retrieved all users. Returns an array of user objects. - - `500 Internal Server Error`: An error occurred while processing the request. - -### Update User - -- **Description**: Endpoint to update a user. -- **HTTP Method**: PUT -- **URL**: `/api/users/:userId` -- **Request Parameters**: - - `userId` (string): ID of the user to be updated. -- **Request Body**: - ```json - { - "name": "Updated Name", - "email": "updatedemail@example.com" - } - ``` -- **Response**: - - `200 OK`: Successfully updated the user. Returns the updated user object. - - `404 Not Found`: User with the specified ID not found. - - `500 Internal Server Error`: An error occurred while processing the request. - -### Delete User - -- **Description**: Endpoint to delete a user. -- **HTTP Method**: DELETE -- **URL**: `/api/users/:userId` -- **Request Parameters**: - - `userId` (string): ID of the user to be deleted. -- **Response**: - - `200 OK`: Successfully deleted the user. - - `404 Not Found`: User with the specified ID not found. - - `500 Internal Server Error`: An error occurred while processing the request. - - -## Auth Endpoint - -### Login User - -- **Description**: Endpoint to login a user. -- **HTTP Method**: POST -- **URL**: `/api/auth/login` -- **Request Body**: - ```json - { - "email": "lucas1@gmail.com", - "password":"luckiday" -} - ``` -- **Response**: - - `200 OK`: Successfully logged in. Returns a JWT token for authentication. - - `401 Unauthorized`: Invalid credentials provided. - - `500 Internal Server Error`: An error occurred while processing the request. - -### Signup New User - -- **Description**: Endpoint to signup a new user. -- **HTTP Method**: POST -- **URL**: `/api/users/signup` -- **Request Body**: - ```json - { - "name": "James doh", - "email": "james@gmail.com", - "password": "domeidoyou", - "role":"user" - } - ``` -- **Response**: - - `201 Created`: Successfully created a new user. Returns the newly created user object. - - `500 Internal Server Error`: An error occurred while processing the request. - -## Password Reset Endpoints - -### Request Password Reset - -Endpoint: `POST /api/auth/password/reset/request` - -This endpoint is used to request a password reset for a user. - -#### Request Body - -{ - "email": "lucas1@gmail.com" -} - -#### Response - -- Status Code: `200 OK` - - Description: Password reset email sent successfully. -- Status Code: `400 Bad Request` - - Description: Invalid request body. -- Status Code: `404 Not Found` - - Description: User not found with the provided email. -- Status Code: `500 Internal Server Error` - - Description: Failed to send password reset email. - -### Reset Password - -Endpoint: `POST /api/auth/password/reset/:token` - -This endpoint is used to reset the password for a user. - -#### URL Parameters - -| Parameter | Type | Description | -|-----------|--------|-------------------------------| -| token | String | The password reset token | - -#### Request Body - -| Field | Type | Description | -|----------|--------|------------------------------| -| password | String | The new password for the user | - -#### Response - -- Status Code: `200 OK` - - Description: Password updated successfully. -- Status Code: `400 Bad Request` - - Description: Invalid or expired token. -- Status Code: `404 Not Found` - - Description: User not found. -- Status Code: `500 Internal Server Error` - - Description: Internal server error. - - - - ---- - -## Inventory Management API - -This API allows you to manage inventory items. - -### Endpoints - -#### 1. Create a new inventory item - -- **URL:** `/api/inventory/create` -- **Method:** `POST` --**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` -- **Request Body:** - - `desc` (String, required): Description of the inventory item. - - Other fields: Refer to the Inventory Model for additional fields. - -##### Example Request: - -```json -{ - "desc": "Product description example", - "qtysold": 100, - "exchqty": 50, - "refqty": 20, - "qty": 200, - "caseqty": 10, - "discount": 5, - "discper": 0.1, - "refund": 30, - "return": 15, - "amount": 1000, - "grossamt": 1200, - "price": 25, - "barcode": "1234567890123", - "itemcode": "ITEM123", - "otherbc": "9876543210987", - "lastsold": "2024-03-19T12:00:00Z", - "dept": "Electronics" -} - -``` - -##### Example Response: - -```json -{ - "_id": "60ad642112fb7c001e7e7ae0", - "desc": "New Item", - // Other fields... -} -``` - -#### 2. Get all inventory items - -- **URL:** `/api/inventory` -- **Method:** `GET` --**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` -##### Example Response: - -```json -[ - { - "_id": "60ad642112fb7c001e7e7ae0", - "desc": "New Item 1", - // Other fields... - }, - { - "_id": "60ad642112fb7c001e7e7ae1", - "desc": "New Item 2", - // Other fields... - }, - // Additional items... -] -``` - -#### 3. Get a single inventory item by ID - -- **URL:** `/api/inventory/:itemId` -- **Method:** `GET` --**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` -- **URL Params:** - - `itemId`: `65fb2742eebc1b5834807a5b` - -##### Example Response: - -```json -{ - "_id": "60ad642112fb7c001e7e7ae0", - "desc": "New Item", - // Other fields... -} -``` - -#### 4. Update an existing inventory item - -- **URL:** `/api/inventory/:itemId` -- **Method:** `PUT` --**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` -- **URL Params:** - - `itemId`: `65fb2742eebc1b5834807a5b` -- **Request Body:** Fields to update. - -##### Example Request: - -```json -{ - "desc": "Updated Item", - // Other fields to update... -} -``` - -##### Example Response: - -```json -{ - "_id": "60ad642112fb7c001e7e7ae0", - "desc": "Updated Item", - // Other updated fields... -} -``` - -#### 5. Delete an existing inventory item - -- **URL:** `/api/inventory/:itemId` -- **Method:** `DELETE` --**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` -- **URL Params:** - - `itemId`: ID of the inventory item to delete. - -##### Example Response: - -```json -{ - "message": "Inventory item deleted successfully" -} -``` - ---- From 77e52d4b453e87e1f55ce54846638dd673071bbf Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Fri, 22 Mar 2024 18:08:09 -0400 Subject: [PATCH 13/34] adding the bulk upload endpoint --- InventoryManagementApp/package-lock.json | 485 +++++++++++++++++- InventoryManagementApp/package.json | 8 +- InventoryManagementApp/server.js | 15 + .../server/controllers/AuthController.js | 21 +- .../server/controllers/InventoryController.js | 43 +- InventoryManagementApp/server/express.js | 11 +- .../server/middleware/authenticateUsers.js | 2 +- .../server/models/InventoryModel.js | 11 +- .../server/routes/AuthRouter.js | 1 + .../server/routes/InventoryRouter.js | 26 +- InventoryManagementApp/yarn.lock | 316 +++++++++++- 11 files changed, 900 insertions(+), 39 deletions(-) diff --git a/InventoryManagementApp/package-lock.json b/InventoryManagementApp/package-lock.json index b456b3d..64d8b18 100644 --- a/InventoryManagementApp/package-lock.json +++ b/InventoryManagementApp/package-lock.json @@ -11,8 +11,14 @@ "dependencies": { "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", + "csv-parser": "^3.0.0", + "fs": "^0.0.1-security", + "google-auth-library": "^9.7.0", "jsonwebtoken": "^9.0.2", - "nodemailer": "^6.9.13" + "moment": "^2.30.1", + "multer": "^1.4.5-lts.1", + "nodemailer": "^6.9.13", + "xlsx": "^0.18.5" }, "devDependencies": { "@babel/core": "^7.23.6", @@ -2303,6 +2309,14 @@ "acorn": "^8" } }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2422,6 +2436,11 @@ "node": ">= 8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -2512,6 +2531,25 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/bcrypt": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", @@ -2530,6 +2568,14 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2639,9 +2685,18 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } }, "node_modules/bytes": { "version": "3.1.2", @@ -2689,6 +2744,18 @@ ], "license": "CC-BY-4.0" }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2795,6 +2862,14 @@ "node": ">=12" } }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2892,6 +2967,47 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/concurrently": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", @@ -3046,6 +3162,11 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -3060,6 +3181,31 @@ "node": ">= 0.10" } }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/csv-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", + "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -3418,6 +3564,11 @@ "node": ">= 0.8" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3508,6 +3659,14 @@ "node": ">= 0.6" } }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -3518,6 +3677,11 @@ "node": ">= 0.6" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -3579,6 +3743,96 @@ "node": ">=10" } }, + "node_modules/gaxios": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.3.0.tgz", + "integrity": "sha512-p+ggrQw3fBwH2F5N/PAI4k/G/y1art5OxKpb2J2chwNNHM4hHuAOtivjPuirMF4KNKwTTUal/lPfL2+7h2mEcg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/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==" + }, + "node_modules/gcp-metadata": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gcp-metadata/node_modules/gaxios": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3675,6 +3929,53 @@ "node": ">=4" } }, + "node_modules/google-auth-library": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.7.0.tgz", + "integrity": "sha512-I/AvzBiUXDzLOy4iIZ2W+Zq33W4lcukQv1nl7C8WUA6SQwyQwUwu3waNmWNAvzds//FG8SZ+DnKnW/2k6mQS8A==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-auth-library/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -3695,6 +3996,37 @@ "dev": true, "peer": true }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3935,6 +4267,22 @@ "node": ">=0.12.0" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -3986,6 +4334,14 @@ "node": ">=4" } }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -4196,7 +4552,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -4283,7 +4638,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -4293,7 +4647,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -4323,6 +4676,14 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -4370,6 +4731,14 @@ "node": ">=10" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, "node_modules/mongodb": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz", @@ -4505,6 +4874,34 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -4833,6 +5230,11 @@ "node": ">= 0.6.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -5313,6 +5715,17 @@ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -5323,6 +5736,14 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -5611,7 +6032,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -5621,6 +6041,11 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -5912,6 +6337,22 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5935,6 +6376,34 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/InventoryManagementApp/package.json b/InventoryManagementApp/package.json index 86970d8..f154a9f 100644 --- a/InventoryManagementApp/package.json +++ b/InventoryManagementApp/package.json @@ -32,7 +32,13 @@ "dependencies": { "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", + "csv-parser": "^3.0.0", + "fs": "^0.0.1-security", + "google-auth-library": "^9.7.0", "jsonwebtoken": "^9.0.2", - "nodemailer": "^6.9.13" + "moment": "^2.30.1", + "multer": "^1.4.5-lts.1", + "nodemailer": "^6.9.13", + "xlsx": "^0.18.5" } } diff --git a/InventoryManagementApp/server.js b/InventoryManagementApp/server.js index 872e700..48003b6 100644 --- a/InventoryManagementApp/server.js +++ b/InventoryManagementApp/server.js @@ -3,6 +3,10 @@ const config = require('./server/config/config.js'); const app = require('./server/express.js'); const mongoose = require('mongoose'); +const fs = require('fs'); + +const uploadDir = './uploads'; + mongoose.Promise = global.Promise; @@ -22,6 +26,17 @@ mongoose.connect(config.mongoUri) +// Check if the directory exists, if not create it +if (!fs.existsSync(uploadDir)) { + fs.mkdirSync(uploadDir); + console.log('Upload directory created'); +} else { + console.log('Upload directory already exists'); +} + + + + // Handle MongoDB connection errors mongoose.connection.on('error', (err) => { console.error("MongoDB connection error:", err); diff --git a/InventoryManagementApp/server/controllers/AuthController.js b/InventoryManagementApp/server/controllers/AuthController.js index 88f4bec..7a3a040 100644 --- a/InventoryManagementApp/server/controllers/AuthController.js +++ b/InventoryManagementApp/server/controllers/AuthController.js @@ -1,4 +1,4 @@ -const User = require("../models/UserModel"); +const User = require("../models/UserModel"); const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); const nodemailer = require('nodemailer'); @@ -53,8 +53,8 @@ const loginUser = async (req, res) => { } // Generate JWT token - const jwtSecret = process.env.JWT_SECRETE_KEY; - const token = jwt.sign({ userId: user._id }, jwtSecret , { expiresIn: '1h' }); + const jwtSecret = process.env.JWT_SECRET_KEY; + const token = jwt.sign({ userId: user._id }, jwtSecret, { expiresIn: '1h' }); res.status(200).json({ token }); } catch (error) { @@ -75,7 +75,7 @@ const passwordResetRequest = async (req, res) => { } // Generate password reset token - const token = jwt.sign({ userId: user._id }, process.env.JWT_SECRETE_KEY, { expiresIn: '1h' }); + const token = jwt.sign({ userId: user._id }, process.env.JWT_SECRET_KEY, { expiresIn: '1h' }); // Send password reset email const transporter = nodemailer.createTransport({ @@ -129,7 +129,15 @@ const passwordReset = async (req, res) => { if (!user) { return res.status(404).json({ error: 'User not found' }); } - user.password = password; // Update password (you may need to hash it) + + // Inside the passwordReset endpoint, before saving the new password + bcrypt.hash(password, saltRounds, async (err, hashedPassword) => { + if (err) { + return res.status(500).json({ error: 'Error hashing password' }); + } + user.password = hashedPassword; // Use the hashed password + }); + await user.save(); res.status(200).json({ message: 'Password updated successfully' }); @@ -141,6 +149,5 @@ const passwordReset = async (req, res) => { }; -module.exports = { SignupUser,loginUser, passwordResetRequest, passwordReset }; +module.exports = { SignupUser, loginUser, passwordResetRequest, passwordReset }; - \ No newline at end of file diff --git a/InventoryManagementApp/server/controllers/InventoryController.js b/InventoryManagementApp/server/controllers/InventoryController.js index 53285be..92301bd 100644 --- a/InventoryManagementApp/server/controllers/InventoryController.js +++ b/InventoryManagementApp/server/controllers/InventoryController.js @@ -1,4 +1,8 @@ const Inventory = require('../models/InventoryModel'); +const fs = require('fs'); +const csv = require('csv-parser'); +const XLSX = require('xlsx'); +const moment = require('moment'); // For date handling // Create a new inventory item const createInventoryItem = async (req, res) => { @@ -64,10 +68,47 @@ const deleteInventoryItem = async (req, res) => { } }; + +// Bulk upload controller +const uploadBulkInventory = async (req, res) => { + try { + const workbook = XLSX.readFile(req.file.path); + const sheetName = workbook.SheetNames[0]; // Assuming data is in the first sheet + const worksheet = workbook.Sheets[sheetName]; + const json = XLSX.utils.sheet_to_json(worksheet); + + const processedData = json.map(item => { + // Parse and validate the lastsold date + if (item.lastsold && typeof item.lastsold === 'string') { + const parsedDate = moment(item.lastsold, 'DD-MMM-YY'); + if (parsedDate.isValid()) { + item.lastsold = parsedDate.toDate(); + } else { + // Handle invalid dates as needed + item.lastsold = undefined; // or set to a default value + } + } + return item; + }); + + // Bulk insert into MongoDB + const insertedItems = await Inventory.insertMany(processedData); + res.status(201).json(insertedItems); + } catch (error) { + console.error(error); + res.status(500).json({ error: error.message }); + } finally { + // Cleanup: delete the uploaded file after processing + fs.unlinkSync(req.file.path); + } +}; + + module.exports = { createInventoryItem, getAllInventoryItems, getInventoryItemById, updateInventoryItem, - deleteInventoryItem + deleteInventoryItem, + uploadBulkInventory }; diff --git a/InventoryManagementApp/server/express.js b/InventoryManagementApp/server/express.js index 693b1fe..2f709b8 100644 --- a/InventoryManagementApp/server/express.js +++ b/InventoryManagementApp/server/express.js @@ -3,7 +3,12 @@ const bodyParser = require('body-parser'); const cors = require('cors'); const userRoutes = require('./routes/UserRoute'); const authRoutes = require('./routes/AuthRouter') -const inventoryRoutes = require('./routes/InventoryRouter') +const inventoryRoutes = require('./routes/InventoryRouter'); +const multer = require('multer'); + + + + const app = express() @@ -12,7 +17,10 @@ app.get('/', (req, res) => { }) app.use(express.json()); +app.use(express.urlencoded({ extended: true })); +// Middleware to handle file uploads +//app.use(upload.single('csv')); // 'csv' should match the name attribute in the file input of your form app.use(bodyParser.json()) @@ -29,5 +37,4 @@ app.use('/api/auth', authRoutes); app.use('/api/inventory', inventoryRoutes); - module.exports = app diff --git a/InventoryManagementApp/server/middleware/authenticateUsers.js b/InventoryManagementApp/server/middleware/authenticateUsers.js index 28a3540..153215e 100644 --- a/InventoryManagementApp/server/middleware/authenticateUsers.js +++ b/InventoryManagementApp/server/middleware/authenticateUsers.js @@ -11,7 +11,7 @@ const authenticateUser = (req, res, next) => { try { // Verify the token - const decoded = jwt.verify(token, process.env.JWT_SECRETE_KEY); + const decoded = jwt.verify(token, process.env.JWT_SECRET_KEY); // Attach the decoded user information to the request object req.user = decoded; diff --git a/InventoryManagementApp/server/models/InventoryModel.js b/InventoryManagementApp/server/models/InventoryModel.js index 2b82d07..7b15166 100644 --- a/InventoryManagementApp/server/models/InventoryModel.js +++ b/InventoryManagementApp/server/models/InventoryModel.js @@ -2,7 +2,7 @@ const mongoose = require('mongoose'); const { Schema } = mongoose; const inventorySchema = new mongoose.Schema({ - rank: { type: Number, auto: true }, + rank: { type: Number, required: true }, desc: { type: String, required: true }, qtysold: { type: Number, required: false }, exchqty: { type: Number, required: false }, @@ -20,7 +20,14 @@ const inventorySchema = new mongoose.Schema({ itemcode: { type: String, required: true }, otherbc: { type: String }, lastsold: { type: Date }, - dept: { type: String, required: true } + dept: { type: String, required: true }, + category: { type: String }, + division: { type: String }, + group: { type: String }, + brand: { type: String }, + supplier: { type: String }, + size: { type: Schema.Types.Mixed }, // Can be either String or Number + unit: { type: String } }); module.exports = mongoose.model('Inventory', inventorySchema); diff --git a/InventoryManagementApp/server/routes/AuthRouter.js b/InventoryManagementApp/server/routes/AuthRouter.js index 9e93835..dbc4f3a 100644 --- a/InventoryManagementApp/server/routes/AuthRouter.js +++ b/InventoryManagementApp/server/routes/AuthRouter.js @@ -1,6 +1,7 @@ const express = require('express'); const router = express.Router(); + const {SignupUser, loginUser, passwordResetRequest, passwordReset } = require('../controllers/AuthController') diff --git a/InventoryManagementApp/server/routes/InventoryRouter.js b/InventoryManagementApp/server/routes/InventoryRouter.js index 9dbce84..5de77d2 100644 --- a/InventoryManagementApp/server/routes/InventoryRouter.js +++ b/InventoryManagementApp/server/routes/InventoryRouter.js @@ -1,29 +1,45 @@ const express = require('express'); const router = express.Router(); const authenticateUser = require('../middleware/authenticateUsers'); +const multer = require('multer'); + const { createInventoryItem, getAllInventoryItems, getInventoryItemById, updateInventoryItem, - deleteInventoryItem + deleteInventoryItem, + uploadBulkInventory } = require('../controllers/InventoryController'); +// Set up multer storage and file upload +const storage = multer.diskStorage({ + destination: function (req, file, cb) { + cb(null, 'uploads/'); // Destination directory for uploaded files + }, + filename: function (req, file, cb) { + cb(null, file.originalname); // Keep the original file name + } +}); +const upload = multer({ storage: storage }); // Route to create a new inventory item -router.post('/create', authenticateUser ,createInventoryItem); +router.post('/create', authenticateUser, createInventoryItem); // Route to get all inventory items -router.get('/', authenticateUser,getAllInventoryItems); +router.get('/', authenticateUser, getAllInventoryItems); // Route to get a single inventory item by ID router.get('/:itemId', authenticateUser, getInventoryItemById); // Route to update an existing inventory item -router.put('/:itemId', authenticateUser,updateInventoryItem); +router.put('/:itemId', authenticateUser, updateInventoryItem); // Route to delete an existing inventory item -router.delete('/:itemId', authenticateUser,deleteInventoryItem); +router.delete('/:itemId', authenticateUser, deleteInventoryItem); + +// Route to upload bulk inventory from CSV +router.post('/upload', authenticateUser, upload.single('csvFile'), uploadBulkInventory); module.exports = router; diff --git a/InventoryManagementApp/yarn.lock b/InventoryManagementApp/yarn.lock index 1565523..f564cf0 100644 --- a/InventoryManagementApp/yarn.lock +++ b/InventoryManagementApp/yarn.lock @@ -1205,6 +1205,18 @@ acorn@^8, acorn@^8.7.1, acorn@^8.8.2: resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +adler-32@~1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz" + integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== + +agent-base@^7.0.2: + version "7.1.0" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -1278,6 +1290,11 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" + integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== + "aproba@^1.0.3 || ^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" @@ -1333,6 +1350,11 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.0: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + bcrypt@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz" @@ -1346,6 +1368,11 @@ bcryptjs@^2.4.3: resolved "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz" integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== +bignumber.js@^9.0.0: + version "9.1.2" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" @@ -1427,6 +1454,13 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +busboy@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" @@ -1451,6 +1485,14 @@ caniuse-lite@^1.0.30001565: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz" integrity sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ== +cfb@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz" + integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA== + dependencies: + adler-32 "~1.3.0" + crc-32 "~1.2.0" + chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" @@ -1502,6 +1544,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +codepage@~1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz" + integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" @@ -1566,6 +1613,16 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concurrently@^8.2.0: version "8.2.2" resolved "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz" @@ -1633,6 +1690,11 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.2" +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@^2.8.5: version "2.8.5" resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" @@ -1641,6 +1703,18 @@ cors@^2.8.5: object-assign "^4" vary "^1" +crc-32@~1.2.0, crc-32@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +csv-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz" + integrity sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ== + dependencies: + minimist "^1.2.0" + date-fns@^2.30.0: version "2.30.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" @@ -1676,6 +1750,13 @@ debug@^4.3.1: dependencies: ms "2.1.2" +debug@^4.3.4, debug@4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -1690,13 +1771,6 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@4.x: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" @@ -1743,7 +1817,7 @@ dotenv@^16.4.5: resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== -ecdsa-sig-formatter@1.0.11: +ecdsa-sig-formatter@^1.0.11, ecdsa-sig-formatter@1.0.11: version "1.0.11" resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== @@ -1875,6 +1949,11 @@ express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" +extend@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -1926,6 +2005,11 @@ forwarded@0.2.0: resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== +frac@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== + fresh@0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" @@ -1943,6 +2027,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fs@^0.0.1-security: + version "0.0.1-security" + resolved "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz" + integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -1963,6 +2052,42 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" +gaxios@^5.0.0: + version "5.1.3" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz" + integrity sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA== + dependencies: + extend "^3.0.2" + https-proxy-agent "^5.0.0" + is-stream "^2.0.0" + node-fetch "^2.6.9" + +gaxios@^6.0.0, gaxios@^6.1.1: + version "6.3.0" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-6.3.0.tgz" + integrity sha512-p+ggrQw3fBwH2F5N/PAI4k/G/y1art5OxKpb2J2chwNNHM4hHuAOtivjPuirMF4KNKwTTUal/lPfL2+7h2mEcg== + dependencies: + extend "^3.0.2" + https-proxy-agent "^7.0.1" + is-stream "^2.0.0" + node-fetch "^2.6.9" + +gcp-metadata@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz" + integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== + dependencies: + gaxios "^5.0.0" + json-bigint "^1.0.0" + +gcp-metadata@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz" + integrity sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg== + dependencies: + gaxios "^6.0.0" + json-bigint "^1.0.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" @@ -2020,6 +2145,18 @@ globals@^11.1.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +google-auth-library@^9.7.0: + version "9.7.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.7.0.tgz" + integrity sha512-I/AvzBiUXDzLOy4iIZ2W+Zq33W4lcukQv1nl7C8WUA6SQwyQwUwu3waNmWNAvzds//FG8SZ+DnKnW/2k6mQS8A== + dependencies: + base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" + gaxios "^6.1.1" + gcp-metadata "^6.1.0" + gtoken "^7.0.0" + jws "^4.0.0" + gopd@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" @@ -2032,6 +2169,14 @@ graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +gtoken@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz" + integrity sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== + dependencies: + gaxios "^6.0.0" + jws "^4.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" @@ -2095,6 +2240,14 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +https-proxy-agent@^7.0.1: + version "7.0.4" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + dependencies: + agent-base "^7.0.2" + debug "4" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -2115,7 +2268,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@2, inherits@2.0.4: +inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2161,6 +2314,16 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" @@ -2185,6 +2348,13 @@ jsesc@~0.5.0: resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -2230,6 +2400,15 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" +jwa@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz" + integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + jws@^3.2.2: version "3.2.2" resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" @@ -2238,6 +2417,14 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" +jws@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz" + integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + dependencies: + jwa "^2.0.0" + safe-buffer "^5.0.1" + kareem@2.5.1: version "2.5.1" resolved "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz" @@ -2387,6 +2574,11 @@ minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + minipass@^3.0.0: version "3.3.6" resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" @@ -2407,11 +2599,23 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" +mkdirp@^0.5.4: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +moment@^2.30.1: + version "2.30.1" + resolved "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + mongodb-connection-string-url@^2.6.0: version "2.6.0" resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz" @@ -2469,6 +2673,19 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +multer@^1.4.5-lts.1: + version "1.4.5-lts.1" + resolved "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz" + integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== + dependencies: + append-field "^1.0.0" + busboy "^1.0.0" + concat-stream "^1.5.2" + mkdirp "^0.5.4" + object-assign "^4.1.1" + type-is "^1.6.4" + xtend "^4.0.0" + negotiator@0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" @@ -2484,7 +2701,7 @@ node-addon-api@^5.0.0: resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz" integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== -node-fetch@^2.6.7: +node-fetch@^2.6.7, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -2631,6 +2848,11 @@ pkg-dir@^7.0.0: dependencies: find-up "^6.3.0" +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + process@^0.11.10: version "0.11.10" resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" @@ -2693,6 +2915,19 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" @@ -2790,6 +3025,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-buffer@5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" @@ -2969,11 +3209,23 @@ spawn-command@0.0.2: resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz" integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== +ssf@~0.11.2: + version "0.11.2" + resolved "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz" + integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g== + dependencies: + frac "~1.1.2" + statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -2981,6 +3233,13 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -3114,7 +3373,7 @@ tslib@^2.1.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -type-is@~1.6.18: +type-is@^1.6.4, type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -3122,6 +3381,11 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + undefsafe@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" @@ -3175,7 +3439,7 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -3266,6 +3530,16 @@ wide-align@^1.1.2: dependencies: string-width "^1.0.2 || 2 || 3 || 4" +wmf@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== + +word@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/word/-/word-0.3.0.tgz" + integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA== + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" @@ -3280,6 +3554,24 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +xlsx@^0.18.5: + version "0.18.5" + resolved "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz" + integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ== + dependencies: + adler-32 "~1.3.0" + cfb "~1.2.1" + codepage "~1.15.0" + crc-32 "~1.2.1" + ssf "~0.11.2" + wmf "~1.0.1" + word "~0.3.0" + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" From 833c3ee42ab3d9cbbcbd8090b5b92886a7810ca5 Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Sat, 23 Mar 2024 20:42:06 -0400 Subject: [PATCH 14/34] fixing passwordrest --- InventoryManagementApp/package-lock.json | 128 +++++++ InventoryManagementApp/package.json | 2 + .../server/config/config.js | 5 + .../server/controllers/AuthController.js | 76 ++-- .../server/helpers/helperFunctions.js | 2 +- InventoryManagementApp/yarn.lock | 80 ++++- README.md | 330 ++++++++++++++++++ 7 files changed, 584 insertions(+), 39 deletions(-) create mode 100644 README.md diff --git a/InventoryManagementApp/package-lock.json b/InventoryManagementApp/package-lock.json index 64d8b18..ee0f0b7 100644 --- a/InventoryManagementApp/package-lock.json +++ b/InventoryManagementApp/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { + "@sendgrid/mail": "^8.1.1", "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", "csv-parser": "^3.0.0", @@ -18,6 +19,7 @@ "moment": "^2.30.1", "multer": "^1.4.5-lts.1", "nodemailer": "^6.9.13", + "uuid": "^9.0.1", "xlsx": "^0.18.5" }, "devDependencies": { @@ -2027,6 +2029,41 @@ "sparse-bitfield": "^3.0.3" } }, + "node_modules/@sendgrid/client": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.1.tgz", + "integrity": "sha512-pg0gYhAdyQil3Aga7/xHVcZFpvDAjAQMNBgMy5njTSkjACoWHmpSi1nWBZM7nIH/ptcRNMpnBbm9B5EvQ8fX2w==", + "dependencies": { + "@sendgrid/helpers": "^8.0.0", + "axios": "^1.6.4" + }, + "engines": { + "node": ">=12.*" + } + }, + "node_modules/@sendgrid/helpers": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-8.0.0.tgz", + "integrity": "sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==", + "dependencies": { + "deepmerge": "^4.2.2" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@sendgrid/mail": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-8.1.1.tgz", + "integrity": "sha512-tNtmgWLtBA7ZxKtPuEGOaIdEZP1vZSXsj5zg9iuoDBPVj/fNz+7LWzndvTcKumHk5eaDrS0UPXJqBm61m3+H1A==", + "dependencies": { + "@sendgrid/client": "^8.1.1", + "@sendgrid/helpers": "^8.0.0" + }, + "engines": { + "node": ">=12.*" + } + }, "node_modules/@types/eslint": { "version": "8.56.5", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", @@ -2465,6 +2502,21 @@ "dev": true, "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", @@ -2898,6 +2950,17 @@ "color-support": "bin.js" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -3240,6 +3303,14 @@ "dev": true, "license": "MIT" }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-data-property": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", @@ -3255,6 +3326,14 @@ "node": ">= 0.4" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -3649,6 +3728,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -5249,6 +5360,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -6170,6 +6286,18 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/InventoryManagementApp/package.json b/InventoryManagementApp/package.json index f154a9f..c1bf933 100644 --- a/InventoryManagementApp/package.json +++ b/InventoryManagementApp/package.json @@ -30,6 +30,7 @@ "preview": "vite preview" }, "dependencies": { + "@sendgrid/mail": "^8.1.1", "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", "csv-parser": "^3.0.0", @@ -39,6 +40,7 @@ "moment": "^2.30.1", "multer": "^1.4.5-lts.1", "nodemailer": "^6.9.13", + "uuid": "^9.0.1", "xlsx": "^0.18.5" } } diff --git a/InventoryManagementApp/server/config/config.js b/InventoryManagementApp/server/config/config.js index f0ac16e..605844e 100644 --- a/InventoryManagementApp/server/config/config.js +++ b/InventoryManagementApp/server/config/config.js @@ -1,4 +1,7 @@ const config = { + SENDGRID_EMAIL: process.env.SENDGRID_EMAIL, + SENDGRID_TEMPLATE: process.env.SENDGRID_TEMPLATE, + SENDGRID_BEARER: process.env.SENDGRID_BEARER, env: process.env.NODE_ENV || 'development', port: process.env.PORT || 3000, jwtSecret: process.env.JWT_SECRET || "YOUR_secret_key", @@ -8,6 +11,8 @@ const config = { (process.env.MONGO_PORT || '27017') + '/mernproject' } + + module.exports= config diff --git a/InventoryManagementApp/server/controllers/AuthController.js b/InventoryManagementApp/server/controllers/AuthController.js index 7a3a040..6ed633c 100644 --- a/InventoryManagementApp/server/controllers/AuthController.js +++ b/InventoryManagementApp/server/controllers/AuthController.js @@ -3,6 +3,7 @@ const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); const nodemailer = require('nodemailer'); require('dotenv').config(); +const sgMail = require('@sendgrid/mail') // Create New User @@ -78,47 +79,45 @@ const passwordResetRequest = async (req, res) => { const token = jwt.sign({ userId: user._id }, process.env.JWT_SECRET_KEY, { expiresIn: '1h' }); // Send password reset email - const transporter = nodemailer.createTransport({ - host: 'smtp.gmail.com', - port: 587, - secure: false, // Use TLS - auth: { - user: process.env.GMAIL_USER, - pass: process.env.GMAIL_PASS - } - }); - const mailOptions = { - from: process.env.GMAIL_USER, - to: email, - subject: 'Password Reset Request', - text: `You are receiving this email because you (or someone else) have requested the reset of the password for your account.\n\n - Please click on the following link, or paste this into your browser to complete the process:\n\n - http://${req.headers.host}/api/password/reset/${token}\n\n - If you did not request this, please ignore this email and your password will remain unchanged.\n` - }; - transporter.sendMail(mailOptions, (error, info) => { - if (error) { - console.error('Error sending password reset email:', error); - return res.status(500).json({ error: 'Failed to send password reset email' }); - } - console.log('Password reset email sent:', info.response); - res.status(200).json({ message: 'Password reset email sent successfully' }); - }); + // Send password reset email + + sgMail.setApiKey(process.env.SENDGRID_API_KEY) + + const msg = { + to: email, // Change to your recipient + from: 'maxafangsco@gmail.com', // Change to your verified sender + subject: 'Password Reset from WinterDev', + text: 'Click the link below to set a new password:', + html: ` +

    Click to set a new password: Reset password

    + ` + } + + sgMail + .send(msg) + .then((response) => { + console.log(response[0].statusCode) + console.log(response[0].headers) + }) + .catch((error) => { + console.error(error) + }) + + } catch (error) { console.error('Error requesting password reset:', error); res.status(500).json({ error: 'Internal server error' }); } }; -// Password Reset Endpoint const passwordReset = async (req, res) => { try { const { token } = req.params; const { password } = req.body; // Verify token - jwt.verify(token, process.env.JWT_SECRETE_KEY, async (err, decoded) => { + jwt.verify(token, process.env.JWT_SECRET_KEY, async (err, decoded) => { if (err) { return res.status(400).json({ error: 'Invalid or expired token' }); } @@ -130,17 +129,20 @@ const passwordReset = async (req, res) => { return res.status(404).json({ error: 'User not found' }); } - // Inside the passwordReset endpoint, before saving the new password - bcrypt.hash(password, saltRounds, async (err, hashedPassword) => { - if (err) { - return res.status(500).json({ error: 'Error hashing password' }); - } - user.password = hashedPassword; // Use the hashed password - }); + // Define saltRounds + const saltRounds = 10; - await user.save(); + // Inside the passwordReset endpoint, before saving the new password + try { + const hashedPassword = await bcrypt.hash(password, saltRounds); + user.hashed_password = hashedPassword;// Use the hashed password + await user.save(); + res.status(200).json({ message: 'Password updated successfully' }); + } catch (error) { + console.error('Error hashing password:', error); + return res.status(500).json({ error: 'Error hashing password' }); + } - res.status(200).json({ message: 'Password updated successfully' }); }); } catch (error) { console.error('Error resetting password:', error); diff --git a/InventoryManagementApp/server/helpers/helperFunctions.js b/InventoryManagementApp/server/helpers/helperFunctions.js index b1baade..c710fd2 100644 --- a/InventoryManagementApp/server/helpers/helperFunctions.js +++ b/InventoryManagementApp/server/helpers/helperFunctions.js @@ -1,7 +1,7 @@ const crypto = require('crypto'); // Generate a random string of 32 characters -const generateSecret = () => { +export const generateSecret = () => { return crypto.randomBytes(16).toString('hex'); }; diff --git a/InventoryManagementApp/yarn.lock b/InventoryManagementApp/yarn.lock index f564cf0..ddffd33 100644 --- a/InventoryManagementApp/yarn.lock +++ b/InventoryManagementApp/yarn.lock @@ -1005,6 +1005,29 @@ dependencies: sparse-bitfield "^3.0.3" +"@sendgrid/client@^8.1.1": + version "8.1.1" + resolved "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.1.tgz" + integrity sha512-pg0gYhAdyQil3Aga7/xHVcZFpvDAjAQMNBgMy5njTSkjACoWHmpSi1nWBZM7nIH/ptcRNMpnBbm9B5EvQ8fX2w== + dependencies: + "@sendgrid/helpers" "^8.0.0" + axios "^1.6.4" + +"@sendgrid/helpers@^8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-8.0.0.tgz" + integrity sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA== + dependencies: + deepmerge "^4.2.2" + +"@sendgrid/mail@^8.1.1": + version "8.1.1" + resolved "https://registry.npmjs.org/@sendgrid/mail/-/mail-8.1.1.tgz" + integrity sha512-tNtmgWLtBA7ZxKtPuEGOaIdEZP1vZSXsj5zg9iuoDBPVj/fNz+7LWzndvTcKumHk5eaDrS0UPXJqBm61m3+H1A== + dependencies: + "@sendgrid/client" "^8.1.1" + "@sendgrid/helpers" "^8.0.0" + "@types/eslint-scope@^3.7.3": version "3.7.7" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" @@ -1313,6 +1336,20 @@ array-flatten@1.1.1: resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.6.4: + version "1.6.8" + resolved "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz" + integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-loader@^9.1.3: version "9.1.3" resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz" @@ -1578,6 +1615,13 @@ color-support@^1.1.2: resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^2.20.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -1778,6 +1822,11 @@ debug@4.x: dependencies: ms "2.1.2" +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" @@ -1787,6 +1836,11 @@ define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + delegates@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" @@ -2000,6 +2054,20 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" @@ -2548,7 +2616,7 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -2866,6 +2934,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + pstree.remy@^1.1.8: version "1.1.8" resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" @@ -3449,6 +3522,11 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" diff --git a/README.md b/README.md new file mode 100644 index 0000000..02b9792 --- /dev/null +++ b/README.md @@ -0,0 +1,330 @@ +# User Authentication API + +## Prerequisites +Before you start testing, ensure you follow these steps: + +1. Checkout the 'buildAPI_V1' branch. +2. Create a `.env` file and include the following line: + ``` + JWT_SECRET_KEY = generateSecret() + GMAIL_USER=your_gmail_email_address + GMAIL_PASS=your_gmail_password_or_app_specific_password + ``` +3. Run `npm install`. +4. Spin up the server with `npm run dev`. +5. Start testing the endpoints. + +## User Endpoint + + +### 1 Get All Users + +- **Description**: Endpoint to retrieve all users. +- **HTTP Method**: GET +- **URL**: `/api/users` +- **Response**: + - `200 OK`: Successfully retrieved all users. Returns an array of user objects. + - `500 Internal Server Error`: An error occurred while processing the request. + +### 2 Update User + +- **Description**: Endpoint to update a user. +- **HTTP Method**: PUT +- **URL**: `/api/users/:userId` +- **Request Parameters**: + - `userId` (string): ID of the user to be updated. +- **Request Body**: + ```json + { + "name": "Updated Name", + "email": "updatedemail@example.com" + } + ``` +- **Response**: + - `200 OK`: Successfully updated the user. Returns the updated user object. + - `404 Not Found`: User with the specified ID not found. + - `500 Internal Server Error`: An error occurred while processing the request. + +### 3 Delete User + +- **Description**: Endpoint to delete a user. +- **HTTP Method**: DELETE +- **URL**: `/api/users/:userId` +- **Request Parameters**: + - `userId` (string): ID of the user to be deleted. +- **Response**: + - `200 OK`: Successfully deleted the user. + - `404 Not Found`: User with the specified ID not found. + - `500 Internal Server Error`: An error occurred while processing the request. + + +## Auth Endpoint + +### 4 Login User + +- **Description**: Endpoint to login a user. +- **HTTP Method**: POST +- **URL**: `/api/auth/login` +- **Request Body**: + ```json + { + "email": "lucas1@gmail.com", + "password":"luckiday" +} + ``` +- **Response**: + - `200 OK`: Successfully logged in. Returns a JWT token for authentication. + - `401 Unauthorized`: Invalid credentials provided. + - `500 Internal Server Error`: An error occurred while processing the request. +``` +### 5 Signup New User +``` +- **Description**: Endpoint to signup a new user. +- **HTTP Method**: POST +- **URL**: `/api/auth/signup` +- **Request Body**: + ```json + { + "name": "James doh", + "email": "james@gmail.com", + "password": "domeidoyou", + "role":"user" + } + ``` +- **Response**: + - `201 Created`: Successfully created a new user. Returns the newly created user object. + - `500 Internal Server Error`: An error occurred while processing the request. + +## Password Reset Endpoints + +### 6 Request Password Reset + +Endpoint: `POST /api/auth/password/reset/request` + +This endpoint is used to request a password reset for a user. + +#### Request Body + +{ + "email": "lucas1@gmail.com" +} + +#### Response + +- Status Code: `200 OK` + - Description: Password reset email sent successfully. +- Status Code: `400 Bad Request` + - Description: Invalid request body. +- Status Code: `404 Not Found` + - Description: User not found with the provided email. +- Status Code: `500 Internal Server Error` + - Description: Failed to send password reset email. + +### 7 Reset Password + +Endpoint: `POST /api/auth/password/reset/:token` + +This endpoint is used to reset the password for a user. + +#### URL Parameters + +| Parameter | Type | Description | +|-----------|--------|-------------------------------| +| token | String | The password reset token | + +#### Request Body + +| Field | Type | Description | +|----------|--------|------------------------------| +| password | String | The new password for the user | + +#### Response + +- Status Code: `200 OK` + - Description: Password updated successfully. +- Status Code: `400 Bad Request` + - Description: Invalid or expired token. +- Status Code: `404 Not Found` + - Description: User not found. +- Status Code: `500 Internal Server Error` + - Description: Internal server error. + + + + +--- + +## Inventory Management API + +This API allows you to manage inventory items. + +### Endpoints + +#### 8. Create a new inventory item + +- **URL:** `/api/inventory/create` +- **Method:** `POST` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **Request Body:** + - `desc` (String, required): Description of the inventory item. + - Other fields: Refer to the Inventory Model for additional fields. + +##### Example Request: + +```json +{ + "rank" : 908 + "desc": "Product description example", + "qtysold": 100, + "exchqty": 50, + "refqty": 20, + "qty": 200, + "caseqty": 10, + "discount": 5, + "discper": 0.1, + "refund": 30, + "return": 15, + "amount": 1000, + "grossamt": 1200, + "price": 25, + "barcode": "1234567890123", + "itemcode": "ITEM123", + "otherbc": "9876543210987", + "lastsold": "2024-03-19T12:00:00Z", + "dept": "Electronics" +} + +``` + +##### Example Response: + +```json +{ + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "New Item", + // Other fields... +} +``` + +#### 9. Get all inventory items + +- **URL:** `/api/inventory` +- **Method:** `GET` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +##### Example Response: + +```json +[ + { + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "New Item 1", + // Other fields... + }, + { + "_id": "60ad642112fb7c001e7e7ae1", + "desc": "New Item 2", + // Other fields... + }, + // Additional items... +] +``` + +#### 10. Get a single inventory item by ID + +- **URL:** `/api/inventory/:itemId` +- **Method:** `GET` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **URL Params:** + - `itemId`: `65fb2742eebc1b5834807a5b` + +##### Example Response: + +```json +{ + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "New Item", + // Other fields... +} +``` + +#### 11. Update an existing inventory item + +- **URL:** `/api/inventory/:itemId` +- **Method:** `PUT` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **URL Params:** + - `itemId`: `65fb2742eebc1b5834807a5b` +- **Request Body:** Fields to update. + +##### Example Request: + +```json +{ + "desc": "Updated Item", + // Other fields to update... +} +``` + +##### Example Response: + +```json +{ + "_id": "60ad642112fb7c001e7e7ae0", + "desc": "Updated Item", + // Other updated fields... +} +``` + +#### 12. Delete an existing inventory item +``` +- **URL:** `/api/inventory/:itemId` +- **Method:** `DELETE` +-**Authorization:** `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NWZhZWNhY2IyMTUwYjMwMWMwZjA2N2EiLCJpYXQiOjE3MTA5NTc3NTQsImV4cCI6MTcxMDk2MTM1NH0.sMFJgYbKLi4oSfVyuyjfYes2mqYsbmP_6GjkkRRg2xo` +- **URL Params:** + - `itemId`: ID of the inventory item to delete. + +##### Example Response: + +```json +{ + "message": "Inventory item deleted successfully" +} +``` + + +Given your specifics for the CSV file upload endpoint, here's the updated documentation section for the Bulk Upload via CSV File Endpoint, tailored to your application's requirements: + + +## Bulk Upload via CSV File Endpoint + +### 13 Upload CSV File for Inventory Data Import + +- **Description**: This endpoint facilitates the bulk uploading of inventory data through a CSV file. It's designed to parse the uploaded CSV file on the server and insert each row as a separate record in the database, enabling efficient mass data import. + +- **HTTP Method**: POST + +- **URL**: `/api/inventory/upload` + +- **Authorization**: Required. A valid JWT token must be included in the request headers to authenticate the request. +``` +- **Request Headers**: + - `Content-Type`: `multipart/form-data` + - `Authorization`: `Bearer [Your_JWT_Token_Here]` + Replace `[Your_JWT_Token_Here]` with the actual JWT token provided after authentication. +``` +- **Form Data**: + - `csvFile`: The CSV file containing inventory data to be uploaded. This file should adhere to the expected format, with the first row containing column headers that match the inventory entity's attributes, followed by rows representing individual inventory records. + +- **CSV Format Example**: + The CSV file must include column headers corresponding to the inventory item attributes. Each subsequent row represents a single inventory item. For instance: + + Upload the file with a key: `csvFile` + + Ensure the CSV file adheres to this structure for successful parsing and import. +``` +- **Response**: + - `200 OK`: The upload and data import were successful. The response body may include a summary of the import process, such as the count of records imported. + - `400 Bad Request`: The request was malformed. Possible reasons include an improperly formatted CSV file, absence of the `csvFile` in the form data, or data type mismatches. + - `401 Unauthorized`: The request lacked a valid JWT token or the token was invalid, indicating the user is not authenticated or lacks the permissions for the operation. + - `500 Internal Server Error`: An unexpected error occurred on the server during the file processing or data insertion phase +--- From da4f13666edecc8b9eaf0b1e5a2c6e84a2abb778 Mon Sep 17 00:00:00 2001 From: Maxmillian Date: Sat, 23 Mar 2024 20:55:12 -0400 Subject: [PATCH 15/34] clearing console --- .../server/controllers/AuthController.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/InventoryManagementApp/server/controllers/AuthController.js b/InventoryManagementApp/server/controllers/AuthController.js index 6ed633c..987b5bb 100644 --- a/InventoryManagementApp/server/controllers/AuthController.js +++ b/InventoryManagementApp/server/controllers/AuthController.js @@ -90,20 +90,15 @@ const passwordResetRequest = async (req, res) => { subject: 'Password Reset from WinterDev', text: 'Click the link below to set a new password:', html: ` -

    Click to set a new password: Reset password

    - ` +

    Click to set a new password: Reset password

    + ` } + sgMail .send(msg) - .then((response) => { - console.log(response[0].statusCode) - console.log(response[0].headers) - }) - .catch((error) => { - console.error(error) - }) - + // Send a response back to the client to stop the spinner + res.status(200).json({ message: 'Email sent successfully' }); } catch (error) { console.error('Error requesting password reset:', error); From cbc1fae7acdbe7d4c9eafb691f497a42f9454f98 Mon Sep 17 00:00:00 2001 From: Maxmillian Afanga <39309700+Maxafangsco@users.noreply.github.com> Date: Sat, 23 Mar 2024 21:01:29 -0400 Subject: [PATCH 16/34] Update README.md --- README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 02b9792..e3a11d3 100644 --- a/README.md +++ b/README.md @@ -66,11 +66,14 @@ Before you start testing, ensure you follow these steps: - **HTTP Method**: POST - **URL**: `/api/auth/login` - **Request Body**: - ```json - { + ``` + { "email": "lucas1@gmail.com", "password":"luckiday" -} + } +``` + ```json + ``` - **Response**: - `200 OK`: Successfully logged in. Returns a JWT token for authentication. @@ -104,11 +107,11 @@ Endpoint: `POST /api/auth/password/reset/request` This endpoint is used to request a password reset for a user. #### Request Body - +``` { "email": "lucas1@gmail.com" } - +``` #### Response - Status Code: `200 OK` From 567eaebbe761db8fe8719b02d48fdbec8c3b1249 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Sun, 24 Mar 2024 12:39:17 -0400 Subject: [PATCH 17/34] created createMUITheme branch --- .../client/package-lock.json | 4487 +++++++++++++++++ InventoryManagementApp/client/yarn.lock | 841 ++- 2 files changed, 4830 insertions(+), 498 deletions(-) create mode 100644 InventoryManagementApp/client/package-lock.json diff --git a/InventoryManagementApp/client/package-lock.json b/InventoryManagementApp/client/package-lock.json new file mode 100644 index 0000000..43f6bbc --- /dev/null +++ b/InventoryManagementApp/client/package-lock.json @@ -0,0 +1,4487 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "client", + "version": "0.0.0", + "dependencies": { + "concurrently": "^8.2.2", + "global": "^4.4.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.55.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "nodemon": "^3.0.2", + "vite": "^5.0.8" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.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.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.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, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", + "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "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.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "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.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001570", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", + "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/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==", + "license": "MIT" + }, + "node_modules/concurrently/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "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, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.615", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz", + "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==", + "dev": true, + "license": "ISC" + }, + "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==", + "license": "MIT" + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "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.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "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, + "license": "MIT", + "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.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "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.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "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", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "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.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", + "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "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, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "license": "BSD-3-Clause", + "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, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "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, + "license": "BSD-2-Clause", + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true, + "license": "ISC" + }, + "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, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "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, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "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==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "ISC", + "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" + } + }, + "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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "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, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "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, + "license": "ISC", + "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, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.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==", + "license": "MIT" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", + "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/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, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nodemon/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, + "license": "ISC" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "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.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "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, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "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, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "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, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.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, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "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" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "license": "MIT", + "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==", + "license": "MIT", + "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, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", + "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.1", + "@rollup/rollup-android-arm64": "4.9.1", + "@rollup/rollup-darwin-arm64": "4.9.1", + "@rollup/rollup-darwin-x64": "4.9.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", + "@rollup/rollup-linux-arm64-gnu": "4.9.1", + "@rollup/rollup-linux-arm64-musl": "4.9.1", + "@rollup/rollup-linux-riscv64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-musl": "4.9.1", + "@rollup/rollup-win32-arm64-msvc": "4.9.1", + "@rollup/rollup-win32-ia32-msvc": "4.9.1", + "@rollup/rollup-win32-x64-msvc": "4.9.1", + "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" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/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, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/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, + "license": "ISC" + }, + "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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==" + }, + "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==", + "license": "MIT", + "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.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "license": "ISC", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "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, + "license": "MIT", + "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, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "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, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "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, + "license": "ISC", + "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, + "license": "MIT", + "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-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "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/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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "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==", + "license": "MIT" + }, + "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, + "license": "ISC" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "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, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/InventoryManagementApp/client/yarn.lock b/InventoryManagementApp/client/yarn.lock index 8882566..6ea90f9 100644 --- a/InventoryManagementApp/client/yarn.lock +++ b/InventoryManagementApp/client/yarn.lock @@ -4,12 +4,12 @@ "@aashutoshrathi/word-wrap@^1.2.3": version "1.2.6" - resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== "@ampproject/remapping@^2.2.0": version "2.2.1" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: "@jridgewell/gen-mapping" "^0.3.0" @@ -17,7 +17,7 @@ "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": version "7.23.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== dependencies: "@babel/highlight" "^7.23.4" @@ -25,12 +25,12 @@ "@babel/compat-data@^7.23.5": version "7.23.5" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.23.5": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.23.5": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz" integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== dependencies: "@ampproject/remapping" "^2.2.0" @@ -51,7 +51,7 @@ "@babel/generator@^7.23.6": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz" integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== dependencies: "@babel/types" "^7.23.6" @@ -61,7 +61,7 @@ "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== dependencies: "@babel/compat-data" "^7.23.5" @@ -72,12 +72,12 @@ "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== "@babel/helper-function-name@^7.23.0": version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: "@babel/template" "^7.22.15" @@ -85,21 +85,21 @@ "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: "@babel/types" "^7.22.5" "@babel/helper-module-imports@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: "@babel/types" "^7.22.15" "@babel/helper-module-transforms@^7.23.3": version "7.23.3" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" @@ -110,41 +110,41 @@ "@babel/helper-plugin-utils@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== "@babel/helper-simple-access@^7.22.5": version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== dependencies: "@babel/types" "^7.22.5" "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== dependencies: "@babel/types" "^7.22.5" "@babel/helper-string-parser@^7.23.4": version "7.23.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== "@babel/helper-validator-option@^7.23.5": version "7.23.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== "@babel/helpers@^7.23.6": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz#d03af2ee5fb34691eec0cda90f5ecbb4d4da145a" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz" integrity sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA== dependencies: "@babel/template" "^7.22.15" @@ -153,7 +153,7 @@ "@babel/highlight@^7.23.4": version "7.23.4" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: "@babel/helper-validator-identifier" "^7.22.20" @@ -162,33 +162,33 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== "@babel/plugin-transform-react-jsx-self@^7.23.3": version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz" integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-source@^7.23.3": version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz" integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/runtime@^7.21.0": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz" integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ== dependencies: regenerator-runtime "^0.14.0" "@babel/template@^7.22.15": version "7.22.15" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: "@babel/code-frame" "^7.22.13" @@ -197,7 +197,7 @@ "@babel/traverse@^7.23.6": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz" integrity sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ== dependencies: "@babel/code-frame" "^7.23.5" @@ -213,143 +213,33 @@ "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6": version "7.23.6" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz" integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== dependencies: "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@esbuild/aix-ppc64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" - integrity sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q== - -"@esbuild/android-arm64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz#ef31015416dd79398082409b77aaaa2ade4d531a" - integrity sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q== - -"@esbuild/android-arm@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz#1c23c7e75473aae9fb323be5d9db225142f47f52" - integrity sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w== - -"@esbuild/android-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz#df6a4e6d6eb8da5595cfce16d4e3f6bc24464707" - integrity sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw== - "@esbuild/darwin-arm64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz#8462a55db07c1b2fad61c8244ce04469ef1043be" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz" integrity sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA== -"@esbuild/darwin-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz#d1de20bfd41bb75b955ba86a6b1004539e8218c1" - integrity sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA== - -"@esbuild/freebsd-arm64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz#16904879e34c53a2e039d1284695d2db3e664d57" - integrity sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg== - -"@esbuild/freebsd-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz#8ad9e5ca9786ca3f1ef1411bfd10b08dcd9d4cef" - integrity sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag== - -"@esbuild/linux-arm64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz#d82cf2c590faece82d28bbf1cfbe36f22ae25bd2" - integrity sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ== - -"@esbuild/linux-arm@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz#477b8e7c7bcd34369717b04dd9ee6972c84f4029" - integrity sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg== - -"@esbuild/linux-ia32@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz#d55ff822cf5b0252a57112f86857ff23be6cab0e" - integrity sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg== - -"@esbuild/linux-loong64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz#a9ad057d7e48d6c9f62ff50f6f208e331c4543c7" - integrity sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA== - -"@esbuild/linux-mips64el@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz#b011a96924773d60ebab396fbd7a08de66668179" - integrity sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A== - -"@esbuild/linux-ppc64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz#5d8b59929c029811e473f2544790ea11d588d4dd" - integrity sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ== - -"@esbuild/linux-riscv64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz#292b06978375b271bd8bc0a554e0822957508d22" - integrity sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA== - -"@esbuild/linux-s390x@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz#d30af63530f8d4fa96930374c9dd0d62bf59e069" - integrity sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA== - -"@esbuild/linux-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz#898c72eeb74d9f2fb43acf316125b475548b75ce" - integrity sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA== - -"@esbuild/netbsd-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz#fd473a5ae261b43eab6dad4dbd5a3155906e6c91" - integrity sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q== - -"@esbuild/openbsd-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz#96eb8992e526717b5272321eaad3e21f3a608e46" - integrity sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg== - -"@esbuild/sunos-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz#c16ee1c167f903eaaa6acf7372bee42d5a89c9bc" - integrity sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA== - -"@esbuild/win32-arm64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz#7e417d1971dbc7e469b4eceb6a5d1d667b5e3dcc" - integrity sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw== - -"@esbuild/win32-ia32@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz#2b52dfec6cd061ecb36171c13bae554888b439e5" - integrity sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ== - -"@esbuild/win32-x64@0.19.10": - version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz#bd123a74f243d2f3a1f046447bb9b363ee25d072" - integrity sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA== - "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.6.1": version "4.10.0" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^2.1.4": version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" @@ -364,12 +254,12 @@ "@eslint/js@8.56.0": version "8.56.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz" integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== "@humanwhocodes/config-array@^0.11.13": version "0.11.13" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: "@humanwhocodes/object-schema" "^2.0.1" @@ -378,17 +268,17 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" @@ -397,22 +287,22 @@ "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.20" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -420,7 +310,7 @@ "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -428,85 +318,25 @@ "@nodelib/fs.stat@2.0.5": version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.8": version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@rollup/rollup-android-arm-eabi@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz#beaf518ee45a196448e294ad3f823d2d4576cf35" - integrity sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig== - -"@rollup/rollup-android-arm64@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz#6f76cfa759c2d0fdb92122ffe28217181a1664eb" - integrity sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ== - "@rollup/rollup-darwin-arm64@4.9.1": version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz#9aaefe33a5481d66322d1c62f368171c03eabe2b" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz" integrity sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA== -"@rollup/rollup-darwin-x64@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz#707dcaadcdc6bd3fd6c69f55d9456cd4446306a3" - integrity sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og== - -"@rollup/rollup-linux-arm-gnueabihf@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz#7a4dbbd1dd98731d88a55aefcef0ec4c578fa9c7" - integrity sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q== - -"@rollup/rollup-linux-arm64-gnu@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz#967ba8e6f68a5f21bd00cd97773dcdd6107e94ed" - integrity sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q== - -"@rollup/rollup-linux-arm64-musl@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz#d3a4e1c9f21eef3b9f4e4989f334a519a1341462" - integrity sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw== - -"@rollup/rollup-linux-riscv64-gnu@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz#415c0533bb752164effd05f5613858e8f6779bc9" - integrity sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw== - -"@rollup/rollup-linux-x64-gnu@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz#0983385dd753a2e0ecaddea7a81dd37fea5114f5" - integrity sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg== - -"@rollup/rollup-linux-x64-musl@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz#eb7494ebc5199cbd2e5c38c2b8acbe2603f35e03" - integrity sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw== - -"@rollup/rollup-win32-arm64-msvc@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz#5bebc66e3a7f82d4b9aa9ff448e7fc13a69656e9" - integrity sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g== - -"@rollup/rollup-win32-ia32-msvc@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz#34156ebf8b4de3b20e6497260fe519a30263f8cf" - integrity sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg== - -"@rollup/rollup-win32-x64-msvc@4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz#d146db7a5949e10837b323ce933ed882ac878262" - integrity sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA== - "@types/babel__core@^7.20.5": version "7.20.5" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: "@babel/parser" "^7.20.7" @@ -517,14 +347,14 @@ "@types/babel__generator@*": version "7.6.8" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz" integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.4" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" @@ -532,26 +362,26 @@ "@types/babel__traverse@*": version "7.20.4" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz#ec2c06fed6549df8bc0eb4615b683749a4a92e1b" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz" integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== dependencies: "@babel/types" "^7.20.7" "@types/prop-types@*": version "15.7.11" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz" integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== "@types/react-dom@^18.2.17": version "18.2.18" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz" integrity sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.2.43": version "18.2.45" - resolved "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz#253f4fac288e7e751ab3dc542000fb687422c15c" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz" integrity sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg== dependencies: "@types/prop-types" "*" @@ -560,17 +390,17 @@ "@types/scheduler@*": version "0.16.8" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz" integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== "@ungap/structured-clone@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== "@vitejs/plugin-react@^4.2.1": version "4.2.1" - resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" + resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz" integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== dependencies: "@babel/core" "^7.23.5" @@ -581,22 +411,22 @@ abbrev@1: version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.9.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0: version "8.11.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== ajv@^6.12.4: version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -606,26 +436,33 @@ ajv@^6.12.4: ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.0.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^4.1.0: + 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" anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -633,12 +470,12 @@ anymatch@~3.1.2: argparse@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-buffer-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== dependencies: call-bind "^1.0.2" @@ -646,7 +483,7 @@ array-buffer-byte-length@^1.0.0: array-includes@^3.1.6: version "3.1.7" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" @@ -657,7 +494,7 @@ array-includes@^3.1.6: array.prototype.flat@^1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" @@ -667,7 +504,7 @@ array.prototype.flat@^1.3.1: array.prototype.flatmap@^1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" @@ -677,7 +514,7 @@ array.prototype.flatmap@^1.3.1: array.prototype.tosorted@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz" integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== dependencies: call-bind "^1.0.2" @@ -688,7 +525,7 @@ array.prototype.tosorted@^1.1.1: arraybuffer.prototype.slice@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" @@ -701,29 +538,29 @@ arraybuffer.prototype.slice@^1.0.2: asynciterator.prototype@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + resolved "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz" integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== dependencies: has-symbols "^1.0.3" available-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -731,14 +568,14 @@ brace-expansion@^1.1.7: braces@~3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.22.2: +browserslist@^4.22.2, "browserslist@>= 4.21.0": version "4.22.2" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== dependencies: caniuse-lite "^1.0.30001565" @@ -748,7 +585,7 @@ browserslist@^4.22.2: call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: function-bind "^1.1.2" @@ -757,26 +594,34 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001565: version "1.0.30001570" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz#b4e5c1fa786f733ab78fc70f592df6b3f23244ca" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz" integrity sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw== chalk@^2.4.2: version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.2: +chalk@^4.0.0: version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -784,7 +629,7 @@ chalk@^4.0.0, chalk@^4.1.2: chokidar@^3.5.2: version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -799,7 +644,7 @@ chokidar@^3.5.2: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -808,36 +653,36 @@ cliui@^8.0.1: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + 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" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concurrently@^8.2.2: version "8.2.2" - resolved "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" + resolved "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz" integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== dependencies: chalk "^4.1.2" @@ -852,12 +697,12 @@ concurrently@^8.2.2: convert-source-map@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cross-spawn@^7.0.2: version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -866,31 +711,31 @@ cross-spawn@^7.0.2: csstype@^3.0.2: version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== date-fns@^2.30.0: version "2.30.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== dependencies: "@babel/runtime" "^7.21.0" debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: get-intrinsic "^1.2.1" @@ -899,7 +744,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.1: define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: define-data-property "^1.0.1" @@ -908,36 +753,36 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dom-walk@^0.1.0: version "0.1.2" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== electron-to-chromium@^1.4.601: version "1.4.615" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz#b1c41839962d2e4e63dca05519da9040e34848c2" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz" integrity sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== es-abstract@^1.22.1: version "1.22.3" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz" integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" @@ -982,7 +827,7 @@ es-abstract@^1.22.1: es-iterator-helpers@^1.0.12: version "1.0.15" - resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz" integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== dependencies: asynciterator.prototype "^1.0.0" @@ -1002,7 +847,7 @@ es-iterator-helpers@^1.0.12: es-set-tostringtag@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz" integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: get-intrinsic "^1.2.2" @@ -1011,14 +856,14 @@ es-set-tostringtag@^2.0.1: es-shim-unscopables@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -1027,7 +872,7 @@ es-to-primitive@^1.2.1: esbuild@^0.19.3: version "0.19.10" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz#55e83e4a6b702e3498b9f872d84bfb4ebcb6d16e" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz" integrity sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA== optionalDependencies: "@esbuild/aix-ppc64" "0.19.10" @@ -1056,32 +901,32 @@ esbuild@^0.19.3: escalade@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-plugin-react-hooks@^4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react-refresh@^0.4.5: version "0.4.5" - resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz#6b9b307bad3feba2244ef64a1a15485ac70a2d0f" + resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz" integrity sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w== eslint-plugin-react@^7.33.2: version "7.33.2" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: array-includes "^3.1.6" @@ -1103,7 +948,7 @@ eslint-plugin-react@^7.33.2: eslint-scope@^7.2.2: version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" @@ -1111,12 +956,12 @@ eslint-scope@^7.2.2: eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.55.0: +"eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.55.0, eslint@>=7: version "8.56.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz" integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -1160,7 +1005,7 @@ eslint@^8.55.0: espree@^9.6.0, espree@^9.6.1: version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: acorn "^8.9.0" @@ -1169,67 +1014,67 @@ espree@^9.6.0, espree@^9.6.1: esquery@^1.4.2: version "1.5.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: version "1.16.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz" integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== dependencies: reusify "^1.0.4" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -1237,7 +1082,7 @@ find-up@^5.0.0: flat-cache@^3.0.4: version "3.2.0" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" @@ -1246,34 +1091,34 @@ flat-cache@^3.0.4: flatted@^3.2.9: version "3.2.9" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== for-each@^0.3.3: version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" @@ -1283,22 +1128,22 @@ function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: functions-have-names@^1.2.3: version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: version "1.2.2" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: function-bind "^1.1.2" @@ -1308,7 +1153,7 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" @@ -1316,21 +1161,21 @@ get-symbol-description@^1.0.0: glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob@^7.1.3: version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -1342,7 +1187,7 @@ glob@^7.1.3: global@^4.4.0: version "4.4.0" - resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: min-document "^2.19.0" @@ -1350,94 +1195,94 @@ global@^4.4.0: globals@^11.1.0: version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" globalthis@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" gopd@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" graphemer@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" hasown@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: function-bind "^1.1.2" ignore-by-default@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== ignore@^5.2.0: version "5.3.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz" integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -1445,12 +1290,12 @@ import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -1458,12 +1303,12 @@ inflight@^1.0.4: inherits@2: version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== internal-slot@^1.0.5: version "1.0.6" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz" integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: get-intrinsic "^1.2.2" @@ -1472,7 +1317,7 @@ internal-slot@^1.0.5: is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" @@ -1481,28 +1326,28 @@ is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: is-async-function@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== dependencies: has-tostringtag "^1.0.0" is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" @@ -1510,84 +1355,84 @@ is-boolean-object@^1.1.0: is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0: version "2.13.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-finalizationregistry@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz" integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== dependencies: call-bind "^1.0.2" is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.10: version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-map@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -1595,52 +1440,52 @@ is-regex@^1.1.4: is-set@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + 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== dependencies: call-bind "^1.0.2" is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: which-typed-array "^1.1.11" is-weakmap@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-weakset@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== dependencies: call-bind "^1.0.2" @@ -1648,17 +1493,17 @@ is-weakset@^2.0.1: isarray@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== iterator.prototype@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: define-properties "^1.2.1" @@ -1669,44 +1514,44 @@ iterator.prototype@^1.1.2: "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json5@^2.2.3: version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.5" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: array-includes "^3.1.6" @@ -1716,14 +1561,14 @@ json5@^2.2.3: keyv@^4.5.3: version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" levn@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -1731,79 +1576,79 @@ levn@^0.4.1: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + 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" lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" min-document@^2.19.0: version "2.19.0" - resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: dom-walk "^0.1.0" minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== nanoid@^3.3.7: version "3.3.7" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== node-releases@^2.0.14: version "2.0.14" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== nodemon@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz#222dd0de79fc7b7b3eedba422d2b9e5fc678621e" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz" integrity sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA== dependencies: chokidar "^3.5.2" @@ -1819,34 +1664,34 @@ nodemon@^3.0.2: nopt@~1.0.10: version "1.0.10" - resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== dependencies: abbrev "1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.assign@^4.1.4: version "4.1.5" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: call-bind "^1.0.5" @@ -1856,7 +1701,7 @@ object.assign@^4.1.4: object.entries@^1.1.6: version "1.1.7" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz" integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: call-bind "^1.0.2" @@ -1865,7 +1710,7 @@ object.entries@^1.1.6: object.fromentries@^2.0.6: version "2.0.7" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" @@ -1874,7 +1719,7 @@ object.fromentries@^2.0.6: object.hasown@^1.1.2: version "1.1.3" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz" integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== dependencies: define-properties "^1.2.0" @@ -1882,7 +1727,7 @@ object.hasown@^1.1.2: object.values@^1.1.6: version "1.1.7" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" @@ -1891,14 +1736,14 @@ object.values@^1.1.6: once@^1.3.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" optionator@^0.9.3: version "0.9.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: "@aashutoshrathi/word-wrap" "^1.2.3" @@ -1910,58 +1755,58 @@ optionator@^0.9.3: p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== postcss@^8.4.32: version "8.4.32" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz" integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== dependencies: nanoid "^3.3.7" @@ -1970,17 +1815,17 @@ postcss@^8.4.32: prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== process@^0.11.10: version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -1989,22 +1834,22 @@ prop-types@^15.8.1: pstree.remy@^1.1.8: version "1.1.8" - resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== punycode@^2.1.0: version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== react-dom@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + 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" @@ -2012,31 +1857,31 @@ react-dom@^18.2.0: react-is@^16.13.1: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-refresh@^0.14.0: version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== react@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" reflect.getprototypeof@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== dependencies: call-bind "^1.0.2" @@ -2048,12 +1893,12 @@ reflect.getprototypeof@^1.0.4: regenerator-runtime@^0.14.0: version "0.14.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: version "1.5.1" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" @@ -2062,17 +1907,17 @@ regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^2.0.0-next.4: version "2.0.0-next.5" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: is-core-module "^2.13.0" @@ -2081,19 +1926,19 @@ resolve@^2.0.0-next.4: reusify@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rollup@^4.2.0: version "4.9.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz#351d6c03e4e6bcd7a0339df3618d2aeeb108b507" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz" integrity sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw== optionalDependencies: "@rollup/rollup-android-arm-eabi" "4.9.1" @@ -2113,21 +1958,21 @@ rollup@^4.2.0: run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" rxjs@^7.8.1: version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" safe-array-concat@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" @@ -2137,7 +1982,7 @@ safe-array-concat@^1.0.1: safe-regex-test@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: call-bind "^1.0.2" @@ -2146,26 +1991,26 @@ safe-regex-test@^1.0.0: scheduler@^0.23.0: version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" semver@^6.3.1: version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.5.3: version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" set-function-length@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz" integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== dependencies: define-data-property "^1.1.1" @@ -2175,7 +2020,7 @@ set-function-length@^1.1.1: set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: define-data-property "^1.0.1" @@ -2184,24 +2029,24 @@ set-function-name@^2.0.0, set-function-name@^2.0.1: shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.8.1: version "1.8.1" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -2210,24 +2055,24 @@ side-channel@^1.0.4: simple-update-notifier@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz" integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== dependencies: semver "^7.5.3" source-map-js@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== spawn-command@0.0.2: version "0.0.2" - resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz" integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + 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" @@ -2236,7 +2081,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: string.prototype.matchall@^4.0.8: version "4.0.10" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" @@ -2251,7 +2096,7 @@ string.prototype.matchall@^4.0.8: string.prototype.trim@^1.2.8: version "1.2.8" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" @@ -2260,7 +2105,7 @@ string.prototype.trim@^1.2.8: string.prototype.trimend@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" @@ -2269,7 +2114,7 @@ string.prototype.trimend@^1.0.7: string.prototype.trimstart@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" @@ -2278,91 +2123,91 @@ string.prototype.trimstart@^1.0.7: strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.1.1: version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== text-table@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" touch@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: nopt "~1.0.10" tree-kill@^1.2.2: version "1.2.2" - resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== tslib@^2.1.0: version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== typed-array-buffer@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== dependencies: call-bind "^1.0.2" @@ -2371,7 +2216,7 @@ typed-array-buffer@^1.0.0: typed-array-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== dependencies: call-bind "^1.0.2" @@ -2381,7 +2226,7 @@ typed-array-byte-length@^1.0.0: typed-array-byte-offset@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== dependencies: available-typed-arrays "^1.0.5" @@ -2392,7 +2237,7 @@ typed-array-byte-offset@^1.0.0: typed-array-length@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== dependencies: call-bind "^1.0.2" @@ -2401,7 +2246,7 @@ typed-array-length@^1.0.4: unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -2411,12 +2256,12 @@ unbox-primitive@^1.0.2: undefsafe@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== update-browserslist-db@^1.0.13: version "1.0.13" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" @@ -2424,14 +2269,14 @@ update-browserslist-db@^1.0.13: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" -vite@^5.0.8: +"vite@^4.2.0 || ^5.0.0", vite@^5.0.8: version "5.0.10" - resolved "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz#1e13ef5c3cf5aa4eed81f5df6d107b3c3f1f6356" + resolved "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz" integrity sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw== dependencies: esbuild "^0.19.3" @@ -2442,7 +2287,7 @@ vite@^5.0.8: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -2453,7 +2298,7 @@ which-boxed-primitive@^1.0.2: which-builtin-type@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== dependencies: function.prototype.name "^1.1.5" @@ -2471,7 +2316,7 @@ which-builtin-type@^1.1.3: which-collection@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: is-map "^2.0.1" @@ -2481,7 +2326,7 @@ which-collection@^1.0.1: which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: version "1.1.13" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" @@ -2492,14 +2337,14 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + 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" @@ -2508,32 +2353,32 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^3.0.2: version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.7.2: version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -2546,5 +2391,5 @@ yargs@^17.7.2: yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 3855736b5a0282d249aa8217b89e6220c0e42058 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Sun, 24 Mar 2024 12:50:04 -0400 Subject: [PATCH 18/34] installed babel react preset --- InventoryManagementApp/.babelrc | 21 +- InventoryManagementApp/package.json | 1 + InventoryManagementApp/yarn.lock | 661 ++++++---------------------- 3 files changed, 147 insertions(+), 536 deletions(-) diff --git a/InventoryManagementApp/.babelrc b/InventoryManagementApp/.babelrc index 4886c88..8aa20d4 100644 --- a/InventoryManagementApp/.babelrc +++ b/InventoryManagementApp/.babelrc @@ -1,11 +1,16 @@ { "presets": [ - ["@babel/preset-env", - { - "targets": { - "node": "current" - } - } + [ + "@babel/preset-env", + { + "targets": { + "node": "current" + } + } + ], + "@babel/preset-react" + ], + "plugins": [ + "react-hot-loader/babel" ] - ] - } \ No newline at end of file +} \ No newline at end of file diff --git a/InventoryManagementApp/package.json b/InventoryManagementApp/package.json index c1bf933..e714f6e 100644 --- a/InventoryManagementApp/package.json +++ b/InventoryManagementApp/package.json @@ -8,6 +8,7 @@ "devDependencies": { "@babel/core": "^7.23.6", "@babel/preset-env": "^7.23.6", + "@babel/preset-react": "^7.24.1", "babel-loader": "^9.1.3", "body-parser": "^1.20.2", "compression": "^1.7.4", diff --git a/InventoryManagementApp/yarn.lock b/InventoryManagementApp/yarn.lock index ddffd33..76aed2e 100644 --- a/InventoryManagementApp/yarn.lock +++ b/InventoryManagementApp/yarn.lock @@ -23,7 +23,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.23.6", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": +"@babel/core@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz" integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== @@ -171,6 +171,11 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" + integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" @@ -349,6 +354,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" @@ -720,6 +732,39 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-react-display-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" + integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-regenerator@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz" @@ -897,6 +942,18 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" + integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-react-display-name" "^7.24.1" + "@babel/plugin-transform-react-jsx" "^7.23.4" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.24.1" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" @@ -943,6 +1000,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.23.4": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" @@ -962,20 +1028,12 @@ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.20" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== @@ -1028,28 +1086,7 @@ "@sendgrid/client" "^8.1.1" "@sendgrid/helpers" "^8.0.0" -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.56.5" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz" - integrity sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -1074,137 +1111,6 @@ "@types/node" "*" "@types/webidl-conversions" "*" -"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - abbrev@1: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" @@ -1218,28 +1124,11 @@ accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn@^8, acorn@^8.7.1, acorn@^8.8.2: - version "8.11.3" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - adler-32@~1.3.0: version "1.3.1" resolved "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz" integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== -agent-base@^7.0.2: - version "7.1.0" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" - integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== - dependencies: - debug "^4.3.4" - agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -1247,6 +1136,13 @@ agent-base@6: dependencies: debug "4" +agent-base@^7.0.2: + version "7.1.0" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" @@ -1254,11 +1150,6 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - ajv-keywords@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" @@ -1266,17 +1157,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.5, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.9.0: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -1415,13 +1296,13 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -body-parser@^1.20.2: - version "1.20.2" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" - content-type "~1.0.5" + content-type "~1.0.4" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -1429,17 +1310,17 @@ body-parser@^1.20.2: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.2" + raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +body-parser@^1.20.2: + version "1.20.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" - content-type "~1.0.4" + content-type "~1.0.5" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -1447,7 +1328,7 @@ body-parser@1.20.1: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.1" + raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -1466,7 +1347,7 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.10, browserslist@^4.22.2, "browserslist@>= 4.21.0": +browserslist@^4.22.2: version "4.22.2" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== @@ -1567,11 +1448,6 @@ chownr@^2.0.0: resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - cliui@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" @@ -1600,16 +1476,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-support@^1.1.2: version "1.1.3" resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" @@ -1622,11 +1498,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" @@ -1766,41 +1637,6 @@ date-fns@^2.30.0: dependencies: "@babel/runtime" "^7.21.0" -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.1.1: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.3.1: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.3.4, debug@4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -1815,13 +1651,20 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@4.x: +debug@4, debug@4.x, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + deepmerge@^4.2.2: version "4.3.1" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" @@ -1871,7 +1714,7 @@ dotenv@^16.4.5: resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== -ecdsa-sig-formatter@^1.0.11, ecdsa-sig-formatter@1.0.11: +ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: version "1.0.11" resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== @@ -1898,19 +1741,6 @@ encodeurl@~1.0.2: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.15.0: - version "5.15.1" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz" - integrity sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -es-module-lexer@^1.2.1: - version "1.4.1" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz" - integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== - escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" @@ -1926,31 +1756,6 @@ escape-string-regexp@^1.0.5: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" @@ -1961,11 +1766,6 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - express@^4.18.2: version "4.18.2" resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" @@ -2013,11 +1813,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-json-stable-stringify@^2.0.0: - 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== - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" @@ -2100,6 +1895,11 @@ fs@^0.0.1-security: resolved "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz" integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -2120,16 +1920,6 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" -gaxios@^5.0.0: - version "5.1.3" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz" - integrity sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA== - dependencies: - extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.9" - gaxios@^6.0.0, gaxios@^6.1.1: version "6.3.0" resolved "https://registry.npmjs.org/gaxios/-/gaxios-6.3.0.tgz" @@ -2140,14 +1930,6 @@ gaxios@^6.0.0, gaxios@^6.1.1: is-stream "^2.0.0" node-fetch "^2.6.9" -gcp-metadata@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz" - integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== - dependencies: - gaxios "^5.0.0" - json-bigint "^1.0.0" - gcp-metadata@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz" @@ -2183,11 +1965,6 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@^7.1.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" @@ -2232,11 +2009,6 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - gtoken@^7.0.0: version "7.1.0" resolved "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz" @@ -2336,7 +2108,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2392,15 +2164,6 @@ isarray@~1.0.0: resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -2423,16 +2186,6 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" -json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - 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== - json-schema-traverse@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" @@ -2498,11 +2251,6 @@ kareem@2.5.1: resolved "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz" integrity sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA== -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - locate-path@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" @@ -2591,11 +2339,6 @@ merge-descriptors@1.0.1: resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - method-override@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz" @@ -2611,12 +2354,12 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -2726,11 +2469,6 @@ mquery@5.0.0: dependencies: debug "4.x" -ms@^2.1.1, ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -2741,6 +2479,11 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multer@^1.4.5-lts.1: version "1.4.5-lts.1" resolved "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz" @@ -2759,11 +2502,6 @@ negotiator@0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - node-addon-api@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz" @@ -2956,13 +2694,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" @@ -3093,44 +2824,21 @@ rxjs@^7.8.1: dependencies: tslib "^2.1.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - schema-utils@^4.0.0: version "4.2.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" @@ -3151,14 +2859,7 @@ semver@^6.0.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5: - version "7.6.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.4: +semver@^7.3.5, semver@^7.5.4: version "7.6.0" resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -3189,13 +2890,6 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - serve-static@1.15.0: version "1.15.0" resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" @@ -3257,19 +2951,6 @@ simple-update-notifier@^1.0.7: dependencies: semver "~7.0.0" -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - sparse-bitfield@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" @@ -3299,6 +2980,15 @@ streamsearch@^1.1.0: resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + 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" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -3313,15 +3003,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - 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" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -3343,13 +3024,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^8.1.1: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" @@ -3362,11 +3036,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - tar@^6.1.11: version "6.2.0" resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" @@ -3379,27 +3048,6 @@ tar@^6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" -terser-webpack-plugin@^5.3.10: - version "5.3.10" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.26.0: - version "5.29.1" - resolved "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz" - integrity sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" @@ -3492,7 +3140,7 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -3532,14 +3180,6 @@ vary@^1, vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" @@ -3550,41 +3190,6 @@ webidl-conversions@^7.0.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.1.0, webpack@>=5: - version "5.90.3" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz" - integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - whatwg-url@^11.0.0: version "11.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" From 8f86caef64beb7246f9e1d2f27835e4e2d0dadde Mon Sep 17 00:00:00 2001 From: DM Brar Date: Sun, 24 Mar 2024 12:54:56 -0400 Subject: [PATCH 19/34] set up dist folder --- InventoryManagementApp/server/dist/bundle.js | 0 InventoryManagementApp/server/express.js | 6 ++++++ 2 files changed, 6 insertions(+) create mode 100644 InventoryManagementApp/server/dist/bundle.js diff --git a/InventoryManagementApp/server/dist/bundle.js b/InventoryManagementApp/server/dist/bundle.js new file mode 100644 index 0000000..e69de29 diff --git a/InventoryManagementApp/server/express.js b/InventoryManagementApp/server/express.js index 2f709b8..61ee412 100644 --- a/InventoryManagementApp/server/express.js +++ b/InventoryManagementApp/server/express.js @@ -5,6 +5,7 @@ const userRoutes = require('./routes/UserRoute'); const authRoutes = require('./routes/AuthRouter') const inventoryRoutes = require('./routes/InventoryRouter'); const multer = require('multer'); +const path = require('path') @@ -12,6 +13,8 @@ const multer = require('multer'); const app = express() +const CURRENT_WORKING_DIR = process.cwd() + app.get('/', (req, res) => { res.status(200).send("Welcome ") }) @@ -36,5 +39,8 @@ app.use('/api/auth', authRoutes); // Mount inventory routes app.use('/api/inventory', inventoryRoutes); +app.use('/dist', express.static(path.join(CURRENT_WORKING_DIR, 'dist'))) + + module.exports = app From 77dfc89e0f1ba315c885e26136f162ac63e76398 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Sun, 24 Mar 2024 13:04:13 -0400 Subject: [PATCH 20/34] installed react and react dom --- InventoryManagementApp/client/package.json | 5 +- InventoryManagementApp/client/yarn.lock | 233 ++++++++++++++++++--- 2 files changed, 207 insertions(+), 31 deletions(-) diff --git a/InventoryManagementApp/client/package.json b/InventoryManagementApp/client/package.json index 6e0a95c..0376fe1 100644 --- a/InventoryManagementApp/client/package.json +++ b/InventoryManagementApp/client/package.json @@ -13,7 +13,9 @@ "concurrently": "^8.2.2", "global": "^4.4.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router": "^6.22.3", + "react-router-dom": "^6.22.3" }, "devDependencies": { "@types/react": "^18.2.43", @@ -27,5 +29,4 @@ "vite": "^5.0.8" }, "dev": "concurrently 'vite' 'nodemon server.js'" - } diff --git a/InventoryManagementApp/client/yarn.lock b/InventoryManagementApp/client/yarn.lock index 6ea90f9..9df26e9 100644 --- a/InventoryManagementApp/client/yarn.lock +++ b/InventoryManagementApp/client/yarn.lock @@ -28,7 +28,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.23.5": +"@babel/core@^7.23.5": version "7.23.6" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz" integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== @@ -220,11 +220,121 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@esbuild/aix-ppc64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" + integrity sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q== + +"@esbuild/android-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz#ef31015416dd79398082409b77aaaa2ade4d531a" + integrity sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q== + +"@esbuild/android-arm@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.10.tgz#1c23c7e75473aae9fb323be5d9db225142f47f52" + integrity sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w== + +"@esbuild/android-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.10.tgz#df6a4e6d6eb8da5595cfce16d4e3f6bc24464707" + integrity sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw== + "@esbuild/darwin-arm64@0.19.10": version "0.19.10" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz" integrity sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA== +"@esbuild/darwin-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz#d1de20bfd41bb75b955ba86a6b1004539e8218c1" + integrity sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA== + +"@esbuild/freebsd-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz#16904879e34c53a2e039d1284695d2db3e664d57" + integrity sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg== + +"@esbuild/freebsd-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz#8ad9e5ca9786ca3f1ef1411bfd10b08dcd9d4cef" + integrity sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag== + +"@esbuild/linux-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz#d82cf2c590faece82d28bbf1cfbe36f22ae25bd2" + integrity sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ== + +"@esbuild/linux-arm@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz#477b8e7c7bcd34369717b04dd9ee6972c84f4029" + integrity sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg== + +"@esbuild/linux-ia32@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz#d55ff822cf5b0252a57112f86857ff23be6cab0e" + integrity sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg== + +"@esbuild/linux-loong64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz#a9ad057d7e48d6c9f62ff50f6f208e331c4543c7" + integrity sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA== + +"@esbuild/linux-mips64el@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz#b011a96924773d60ebab396fbd7a08de66668179" + integrity sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A== + +"@esbuild/linux-ppc64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz#5d8b59929c029811e473f2544790ea11d588d4dd" + integrity sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ== + +"@esbuild/linux-riscv64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz#292b06978375b271bd8bc0a554e0822957508d22" + integrity sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA== + +"@esbuild/linux-s390x@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz#d30af63530f8d4fa96930374c9dd0d62bf59e069" + integrity sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA== + +"@esbuild/linux-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz#898c72eeb74d9f2fb43acf316125b475548b75ce" + integrity sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA== + +"@esbuild/netbsd-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz#fd473a5ae261b43eab6dad4dbd5a3155906e6c91" + integrity sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q== + +"@esbuild/openbsd-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz#96eb8992e526717b5272321eaad3e21f3a608e46" + integrity sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg== + +"@esbuild/sunos-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz#c16ee1c167f903eaaa6acf7372bee42d5a89c9bc" + integrity sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA== + +"@esbuild/win32-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz#7e417d1971dbc7e469b4eceb6a5d1d667b5e3dcc" + integrity sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw== + +"@esbuild/win32-ia32@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz#2b52dfec6cd061ecb36171c13bae554888b439e5" + integrity sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ== + +"@esbuild/win32-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz#bd123a74f243d2f3a1f046447bb9b363ee25d072" + integrity sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -329,11 +439,76 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@remix-run/router@1.15.3": + version "1.15.3" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" + integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w== + +"@rollup/rollup-android-arm-eabi@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz#beaf518ee45a196448e294ad3f823d2d4576cf35" + integrity sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig== + +"@rollup/rollup-android-arm64@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz#6f76cfa759c2d0fdb92122ffe28217181a1664eb" + integrity sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ== + "@rollup/rollup-darwin-arm64@4.9.1": version "4.9.1" resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz" integrity sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA== +"@rollup/rollup-darwin-x64@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz#707dcaadcdc6bd3fd6c69f55d9456cd4446306a3" + integrity sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz#7a4dbbd1dd98731d88a55aefcef0ec4c578fa9c7" + integrity sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q== + +"@rollup/rollup-linux-arm64-gnu@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz#967ba8e6f68a5f21bd00cd97773dcdd6107e94ed" + integrity sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q== + +"@rollup/rollup-linux-arm64-musl@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz#d3a4e1c9f21eef3b9f4e4989f334a519a1341462" + integrity sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw== + +"@rollup/rollup-linux-riscv64-gnu@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz#415c0533bb752164effd05f5613858e8f6779bc9" + integrity sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw== + +"@rollup/rollup-linux-x64-gnu@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz#0983385dd753a2e0ecaddea7a81dd37fea5114f5" + integrity sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg== + +"@rollup/rollup-linux-x64-musl@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz#eb7494ebc5199cbd2e5c38c2b8acbe2603f35e03" + integrity sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw== + +"@rollup/rollup-win32-arm64-msvc@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz#5bebc66e3a7f82d4b9aa9ff448e7fc13a69656e9" + integrity sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g== + +"@rollup/rollup-win32-ia32-msvc@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz#34156ebf8b4de3b20e6497260fe519a30263f8cf" + integrity sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg== + +"@rollup/rollup-win32-x64-msvc@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz#d146db7a5949e10837b323ce933ed882ac878262" + integrity sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA== + "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" @@ -419,7 +594,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0: +acorn@^8.9.0: version "8.11.2" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== @@ -446,14 +621,7 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: - 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" - -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -573,7 +741,7 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.22.2, "browserslist@>= 4.21.0": +browserslist@^4.22.2: version "4.22.2" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== @@ -611,15 +779,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -665,16 +825,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" @@ -959,7 +1119,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -"eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.55.0, eslint@>=7: +eslint@^8.55.0: version "8.56.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz" integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== @@ -1849,7 +2009,7 @@ queue-microtask@^1.2.2: react-dom@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" @@ -1865,9 +2025,24 @@ react-refresh@^0.14.0: resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== +react-router-dom@^6.22.3: + version "6.22.3" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.22.3.tgz#9781415667fd1361a475146c5826d9f16752a691" + integrity sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw== + dependencies: + "@remix-run/router" "1.15.3" + react-router "6.22.3" + +react-router@6.22.3, react-router@^6.22.3: + version "6.22.3" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.22.3.tgz#9d9142f35e08be08c736a2082db5f0c9540a885e" + integrity sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ== + dependencies: + "@remix-run/router" "1.15.3" + react@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" @@ -2274,7 +2449,7 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -"vite@^4.2.0 || ^5.0.0", vite@^5.0.8: +vite@^5.0.8: version "5.0.10" resolved "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz" integrity sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw== From f87ea719df062ccc243987a8114a5d9eb10c4aa2 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 12:01:52 -0400 Subject: [PATCH 21/34] installed mui --- InventoryManagementApp/client/package.json | 2 + InventoryManagementApp/client/yarn.lock | 232 ++++++++++++++++++++- 2 files changed, 232 insertions(+), 2 deletions(-) diff --git a/InventoryManagementApp/client/package.json b/InventoryManagementApp/client/package.json index 0376fe1..24f6c7d 100644 --- a/InventoryManagementApp/client/package.json +++ b/InventoryManagementApp/client/package.json @@ -10,6 +10,8 @@ "preview": "vite preview" }, "dependencies": { + "@material-ui/core": "^4.12.4", + "@material-ui/icons": "^4.11.3", "concurrently": "^8.2.2", "global": "^4.4.0", "react": "^18.2.0", diff --git a/InventoryManagementApp/client/yarn.lock b/InventoryManagementApp/client/yarn.lock index 9df26e9..c45073a 100644 --- a/InventoryManagementApp/client/yarn.lock +++ b/InventoryManagementApp/client/yarn.lock @@ -186,6 +186,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" + integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" @@ -220,6 +227,11 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + "@esbuild/aix-ppc64@0.19.10": version "0.19.10" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" @@ -418,6 +430,77 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@material-ui/core@^4.12.4": + version "4.12.4" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.12.4.tgz#4ac17488e8fcaf55eb6a7f5efb2a131e10138a73" + integrity sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/styles" "^4.11.5" + "@material-ui/system" "^4.12.2" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.3" + "@types/react-transition-group" "^4.2.0" + clsx "^1.0.4" + hoist-non-react-statics "^3.3.2" + popper.js "1.16.1-lts" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + react-transition-group "^4.4.0" + +"@material-ui/icons@^4.11.3": + version "4.11.3" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.11.3.tgz#b0693709f9b161ce9ccde276a770d968484ecff1" + integrity sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA== + dependencies: + "@babel/runtime" "^7.4.4" + +"@material-ui/styles@^4.11.5": + version "4.11.5" + resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.5.tgz#19f84457df3aafd956ac863dbe156b1d88e2bbfb" + integrity sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/hash" "^0.8.0" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.3" + clsx "^1.0.4" + csstype "^2.5.2" + hoist-non-react-statics "^3.3.2" + jss "^10.5.1" + jss-plugin-camel-case "^10.5.1" + jss-plugin-default-unit "^10.5.1" + jss-plugin-global "^10.5.1" + jss-plugin-nested "^10.5.1" + jss-plugin-props-sort "^10.5.1" + jss-plugin-rule-value-function "^10.5.1" + jss-plugin-vendor-prefixer "^10.5.1" + prop-types "^15.7.2" + +"@material-ui/system@^4.12.2": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.12.2.tgz#f5c389adf3fce4146edd489bf4082d461d86aa8b" + integrity sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.3" + csstype "^2.5.2" + prop-types "^15.7.2" + +"@material-ui/types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2" + integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== + +"@material-ui/utils@^4.11.3": + version "4.11.3" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.3.tgz#232bd86c4ea81dab714f21edad70b7fdf0253942" + integrity sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg== + dependencies: + "@babel/runtime" "^7.4.4" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -554,6 +637,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.2.0": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" + integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18.2.43": version "18.2.45" resolved "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz" @@ -811,6 +901,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clsx@^1.0.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" @@ -869,6 +964,19 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + dependencies: + "@babel/runtime" "^7.8.3" + is-in-browser "^1.0.2" + +csstype@^2.5.2: + version "2.6.21" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== + csstype@^3.0.2: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" @@ -925,6 +1033,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" @@ -1430,6 +1546,18 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" @@ -1563,6 +1691,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== + is-map@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" @@ -1709,6 +1842,76 @@ json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jss-plugin-camel-case@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz#27ea159bab67eb4837fa0260204eb7925d4daa1c" + integrity sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.10.0" + +jss-plugin-default-unit@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz#db3925cf6a07f8e1dd459549d9c8aadff9804293" + integrity sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-global@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz#1c55d3c35821fab67a538a38918292fc9c567efd" + integrity sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-nested@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz#db872ed8925688806e77f1fc87f6e62264513219" + integrity sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz#67f4dd4c70830c126f4ec49b4b37ccddb680a5d7" + integrity sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-rule-value-function@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz#7d99e3229e78a3712f78ba50ab342e881d26a24b" + integrity sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-vendor-prefixer@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz#c01428ef5a89f2b128ec0af87a314d0c767931c7" + integrity sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.8" + jss "10.10.0" + +jss@10.10.0, jss@^10.5.1: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.10.0.tgz#a75cc85b0108c7ac8c7b7d296c520a3e4fbc6ccc" + integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^3.0.2" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.5" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" @@ -1964,6 +2167,11 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +popper.js@1.16.1-lts: + version "1.16.1-lts" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05" + integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== + postcss@^8.4.32: version "8.4.32" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz" @@ -1983,7 +2191,7 @@ process@^0.11.10: resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -prop-types@^15.8.1: +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -2015,11 +2223,16 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-is@^16.13.1: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +"react-is@^16.8.0 || ^17.0.0": + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-refresh@^0.14.0: version "0.14.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" @@ -2040,6 +2253,16 @@ react-router@6.22.3, react-router@^6.22.3: dependencies: "@remix-run/router" "1.15.3" +react-transition-group@^4.4.0: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -2339,6 +2562,11 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" From 3380404e7b4affea5c2c776e55a82abe4df59aa8 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 20:30:26 -0400 Subject: [PATCH 22/34] updated main.jsx --- InventoryManagementApp/client/index.html | 1 + InventoryManagementApp/client/src/App.css | 1 + InventoryManagementApp/client/src/index.css | 2 +- InventoryManagementApp/client/src/main.jsx | 16 +++++++--------- InventoryManagementApp/template.js | 14 +++++++++----- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/InventoryManagementApp/client/index.html b/InventoryManagementApp/client/index.html index b910ca0..2973c2d 100644 --- a/InventoryManagementApp/client/index.html +++ b/InventoryManagementApp/client/index.html @@ -2,6 +2,7 @@ + WinterDevs diff --git a/InventoryManagementApp/client/src/App.css b/InventoryManagementApp/client/src/App.css index b9d355d..bfbde34 100644 --- a/InventoryManagementApp/client/src/App.css +++ b/InventoryManagementApp/client/src/App.css @@ -1,4 +1,5 @@ #root { + font-family: proxima-nova, sans-serif; max-width: 1280px; margin: 0 auto; padding: 2rem; diff --git a/InventoryManagementApp/client/src/index.css b/InventoryManagementApp/client/src/index.css index 6119ad9..3c9cc4b 100644 --- a/InventoryManagementApp/client/src/index.css +++ b/InventoryManagementApp/client/src/index.css @@ -1,5 +1,5 @@ :root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + font-family: proxima-nova, Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; diff --git a/InventoryManagementApp/client/src/main.jsx b/InventoryManagementApp/client/src/main.jsx index 54b39dd..06a8cde 100644 --- a/InventoryManagementApp/client/src/main.jsx +++ b/InventoryManagementApp/client/src/main.jsx @@ -1,10 +1,8 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' +const React = require('react') +const ReactDOM = require('react-dom/client') +const App = require('./App.jsx') +require('./index.css') -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) +const container = document.getElementById('root'); +const root = ReactDOM.createRoot(container); +root.render(React.createElement(App, {tab: "home"})); diff --git a/InventoryManagementApp/template.js b/InventoryManagementApp/template.js index 2dd7208..6fbff61 100644 --- a/InventoryManagementApp/template.js +++ b/InventoryManagementApp/template.js @@ -1,13 +1,17 @@ -export default () => { +export default () => { return ` WinterDevs-Backend + + + -
    Skeleton Backend
    +
    Skeleton Backend + + - ` - } - \ No newline at end of file + ` +} From dabe89bc084be377168c52ac4bc0ee4da17fdf67 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 20:58:28 -0400 Subject: [PATCH 23/34] updated main.jsx --- InventoryManagementApp/client/src/main.jsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/InventoryManagementApp/client/src/main.jsx b/InventoryManagementApp/client/src/main.jsx index 06a8cde..a581638 100644 --- a/InventoryManagementApp/client/src/main.jsx +++ b/InventoryManagementApp/client/src/main.jsx @@ -1,8 +1,6 @@ -const React = require('react') -const ReactDOM = require('react-dom/client') -const App = require('./App.jsx') -require('./index.css') - +import React from 'react' +import App from './App.jsx' +import { createRoot } from 'react-dom/client'; const container = document.getElementById('root'); -const root = ReactDOM.createRoot(container); -root.render(React.createElement(App, {tab: "home"})); +const root = createRoot(container); +root.render() From 1d1135175866f46e7891104e01fc207357c07f1a Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 21:00:05 -0400 Subject: [PATCH 24/34] added theme.jsx --- InventoryManagementApp/client/theme.jsx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 InventoryManagementApp/client/theme.jsx diff --git a/InventoryManagementApp/client/theme.jsx b/InventoryManagementApp/client/theme.jsx new file mode 100644 index 0000000..c01a24e --- /dev/null +++ b/InventoryManagementApp/client/theme.jsx @@ -0,0 +1,25 @@ +import { createTheme } from '@material-ui/core/styles' +import { pink } from '@material-ui/core/colors' +const theme = createTheme({ + typography: { + useNextVariants: true, + }, + palette: { + primary: { + light: '#5c67a3', + main: '#3f4771', + dark: '#2e355b', + contrastText: '#fff', + }, + secondary: { + light: '#ff79b0', + main: '#ff4081', + dark: '#c60055', + contrastText: '#000', + }, + openTitle: '#3f4771', + protectedTitle: pink['400'], + type: 'light' + } +}) +export default theme From d1cbd05204f5af69b5f7544a125f9ebd8126b8e8 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 21:05:11 -0400 Subject: [PATCH 25/34] added MainRouter --- InventoryManagementApp/client/MainRouter.jsx | 12 +++++ InventoryManagementApp/client/src/App.jsx | 49 ++++++-------------- InventoryManagementApp/client/src/index.css | 2 +- InventoryManagementApp/client/theme.jsx | 14 ++++++ 4 files changed, 42 insertions(+), 35 deletions(-) create mode 100644 InventoryManagementApp/client/MainRouter.jsx diff --git a/InventoryManagementApp/client/MainRouter.jsx b/InventoryManagementApp/client/MainRouter.jsx new file mode 100644 index 0000000..2c98366 --- /dev/null +++ b/InventoryManagementApp/client/MainRouter.jsx @@ -0,0 +1,12 @@ +import React from 'react' +import { Route, Routes } from 'react-router-dom' +import Home from './core/Home' +const MainRouter = () => { + return (
    + + } /> + +
    + ) +} +export default MainRouter diff --git a/InventoryManagementApp/client/src/App.jsx b/InventoryManagementApp/client/src/App.jsx index b8b8473..4993019 100644 --- a/InventoryManagementApp/client/src/App.jsx +++ b/InventoryManagementApp/client/src/App.jsx @@ -1,35 +1,16 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' - -function App() { - const [count, setCount] = useState(0) - +import React from 'react'; +import { BrowserRouter as Router } from 'react-router-dom'; +import { ThemeProvider } from '@material-ui/styles'; +import MainRouter from '../MainRouter'; +import theme from '../theme'; +//import { hot } from 'react-hot-loader' +const App = () => { return ( - <> - -

    Vite + React

    -
    - -

    - Edit src/App.jsx and save to test HMR -

    -
    -

    - Click on the Vite and React logos to learn more -

    - - ) -} - -export default App + + + + + + ); +}; +export default App; diff --git a/InventoryManagementApp/client/src/index.css b/InventoryManagementApp/client/src/index.css index 3c9cc4b..09af4f0 100644 --- a/InventoryManagementApp/client/src/index.css +++ b/InventoryManagementApp/client/src/index.css @@ -1,5 +1,5 @@ :root { - font-family: proxima-nova, Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + font-family: proxima-nova, sans-serif; line-height: 1.5; font-weight: 400; diff --git a/InventoryManagementApp/client/theme.jsx b/InventoryManagementApp/client/theme.jsx index c01a24e..5197cfb 100644 --- a/InventoryManagementApp/client/theme.jsx +++ b/InventoryManagementApp/client/theme.jsx @@ -3,6 +3,20 @@ import { pink } from '@material-ui/core/colors' const theme = createTheme({ typography: { useNextVariants: true, + fontFamily: [ + 'proxima-nova', + 'futura-pt', + '-apple-system', + 'BlinkMacSystemFont', + '"Segoe UI"', + 'Roboto', + '"Helvetica Neue"', + 'Arial', + 'sans-serif', + '"Apple Color Emoji"', + '"Segoe UI Emoji"', + '"Segoe UI Symbol"', + ].join(','), }, palette: { primary: { From a22ee0ac6d40978e2e3986c31be80f920a25f739 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 21:13:13 -0400 Subject: [PATCH 26/34] set up theme --- .../images/WinterDevLogo_PrimaryLogoLight.svg | 45 +++++++++++++++++++ InventoryManagementApp/client/core/Home.jsx | 39 ++++++++++++++++ InventoryManagementApp/client/index.html | 28 ++++++++---- InventoryManagementApp/client/src/App.jsx | 1 - 4 files changed, 104 insertions(+), 9 deletions(-) create mode 100644 InventoryManagementApp/client/assets/images/WinterDevLogo_PrimaryLogoLight.svg create mode 100644 InventoryManagementApp/client/core/Home.jsx diff --git a/InventoryManagementApp/client/assets/images/WinterDevLogo_PrimaryLogoLight.svg b/InventoryManagementApp/client/assets/images/WinterDevLogo_PrimaryLogoLight.svg new file mode 100644 index 0000000..a4e5d85 --- /dev/null +++ b/InventoryManagementApp/client/assets/images/WinterDevLogo_PrimaryLogoLight.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/InventoryManagementApp/client/core/Home.jsx b/InventoryManagementApp/client/core/Home.jsx new file mode 100644 index 0000000..ad860d1 --- /dev/null +++ b/InventoryManagementApp/client/core/Home.jsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import CardMedia from '@material-ui/core/CardMedia'; +import Typography from '@material-ui/core/Typography'; +import wdLogo from './../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; + +const useStyles = makeStyles(theme => ({ + card: { + maxWidth: 600, + margin: 'auto', + marginTop: theme.spacing(5), + }, + title: { + padding: theme.spacing(3, 2.5, 2), + color: theme.palette.openTitle, + }, + media: { + minHeight: 400, + }, +})); +export default function Home() { + const classes = useStyles() + return ( + + + Home Page + + + + Welcome to the MERN Skeleton home page. + + + + ) +} + diff --git a/InventoryManagementApp/client/index.html b/InventoryManagementApp/client/index.html index 2973c2d..1cc04a1 100644 --- a/InventoryManagementApp/client/index.html +++ b/InventoryManagementApp/client/index.html @@ -1,14 +1,26 @@ + - - - - -WinterDevs + + + + + Vite App + -
    Skeleton Frontend -
    +
    Welcome to Frontend +
    + + + - + + \ No newline at end of file diff --git a/InventoryManagementApp/client/src/App.jsx b/InventoryManagementApp/client/src/App.jsx index 4993019..f1a2061 100644 --- a/InventoryManagementApp/client/src/App.jsx +++ b/InventoryManagementApp/client/src/App.jsx @@ -3,7 +3,6 @@ import { BrowserRouter as Router } from 'react-router-dom'; import { ThemeProvider } from '@material-ui/styles'; import MainRouter from '../MainRouter'; import theme from '../theme'; -//import { hot } from 'react-hot-loader' const App = () => { return ( From fec75ccf545b6ee8ab518e0e0dd5c682b4458ce7 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 21:25:19 -0400 Subject: [PATCH 27/34] added favion --- .../client/assets/images/WinterDevLogo_Fav.png | Bin 0 -> 25713 bytes InventoryManagementApp/client/core/Home.jsx | 3 ++- InventoryManagementApp/client/index.html | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 InventoryManagementApp/client/assets/images/WinterDevLogo_Fav.png diff --git a/InventoryManagementApp/client/assets/images/WinterDevLogo_Fav.png b/InventoryManagementApp/client/assets/images/WinterDevLogo_Fav.png new file mode 100644 index 0000000000000000000000000000000000000000..ba64d93a63220445c34f7f510fc5b04362057cf0 GIT binary patch literal 25713 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 literal 0 HcmV?d00001 diff --git a/InventoryManagementApp/client/core/Home.jsx b/InventoryManagementApp/client/core/Home.jsx index ad860d1..8040e02 100644 --- a/InventoryManagementApp/client/core/Home.jsx +++ b/InventoryManagementApp/client/core/Home.jsx @@ -30,7 +30,8 @@ export default function Home() { image={wdLogo} title="Winter Devs" /> - Welcome to the MERN Skeleton home page. + TEMP DESIGN FOR TESTING. + REPLACE THIS WITH ACTUAL HOME. diff --git a/InventoryManagementApp/client/index.html b/InventoryManagementApp/client/index.html index 1cc04a1..112bc4a 100644 --- a/InventoryManagementApp/client/index.html +++ b/InventoryManagementApp/client/index.html @@ -4,9 +4,9 @@ - + - Vite App + WDInv Inventory Management App | WinterDevs From bb935f8de304bbad978215783c4f1246dda41822 Mon Sep 17 00:00:00 2001 From: DM Brar Date: Mon, 25 Mar 2024 21:30:53 -0400 Subject: [PATCH 28/34] create /test for testing component styles --- InventoryManagementApp/client/MainRouter.jsx | 2 ++ InventoryManagementApp/client/core/Test.jsx | 38 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 InventoryManagementApp/client/core/Test.jsx diff --git a/InventoryManagementApp/client/MainRouter.jsx b/InventoryManagementApp/client/MainRouter.jsx index 2c98366..521bcbf 100644 --- a/InventoryManagementApp/client/MainRouter.jsx +++ b/InventoryManagementApp/client/MainRouter.jsx @@ -1,10 +1,12 @@ import React from 'react' import { Route, Routes } from 'react-router-dom' import Home from './core/Home' +import Test from './core/Test' const MainRouter = () => { return (
    } /> + } />
    ) diff --git a/InventoryManagementApp/client/core/Test.jsx b/InventoryManagementApp/client/core/Test.jsx new file mode 100644 index 0000000..89d9e78 --- /dev/null +++ b/InventoryManagementApp/client/core/Test.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import CardMedia from '@material-ui/core/CardMedia'; +import Typography from '@material-ui/core/Typography'; +import wdLogo from './../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; + +const useStyles = makeStyles(theme => ({ + // card: { + // maxWidth: 600, + // margin: 'auto', + // marginTop: theme.spacing(5), + // }, + // title: { + // padding: theme.spacing(3, 2.5, 2), + // color: theme.palette.openTitle, + // }, + // media: { + // minHeight: 400, + // }, +})); +export default function Test() { + const classes = useStyles() + return ( + + + Test Page + This page is for testing the component styles + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + + ) +} + From d33f34924d120fca17b7b8fb245f43d3134df80e Mon Sep 17 00:00:00 2001 From: DM Brar Date: Tue, 26 Mar 2024 11:01:39 -0400 Subject: [PATCH 29/34] updated test --- InventoryManagementApp/client/core/Test.jsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/InventoryManagementApp/client/core/Test.jsx b/InventoryManagementApp/client/core/Test.jsx index 89d9e78..1170396 100644 --- a/InventoryManagementApp/client/core/Test.jsx +++ b/InventoryManagementApp/client/core/Test.jsx @@ -2,9 +2,7 @@ import React from 'react'; import { makeStyles } from '@material-ui/core/styles'; import Card from '@material-ui/core/Card'; import CardContent from '@material-ui/core/CardContent'; -import CardMedia from '@material-ui/core/CardMedia'; import Typography from '@material-ui/core/Typography'; -import wdLogo from './../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; const useStyles = makeStyles(theme => ({ // card: { @@ -26,7 +24,7 @@ export default function Test() { Test Page - This page is for testing the component styles + This page is for testing the component styles Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. From 19705c48ebf24ad708e35ff8b4b2b583eb75e481 Mon Sep 17 00:00:00 2001 From: cyrilvergara Date: Thu, 28 Mar 2024 00:43:16 -0400 Subject: [PATCH 30/34] added home/customcard/footer components with MUI theme --- InventoryManagementApp/client/MainRouter.jsx | 4 +- InventoryManagementApp/client/core/Home.jsx | 40 --------- .../client/src/assets/react.svg | 1 - .../client/src/components/CustomCard.jsx | 81 +++++++++++++++++++ .../client/src/components/Footer.jsx | 22 +++++ .../client/src/pages/Home.jsx | 73 +++++++++++++++++ .../client/{core => src/pages}/Test.jsx | 0 InventoryManagementApp/client/theme.jsx | 1 + 8 files changed, 179 insertions(+), 43 deletions(-) delete mode 100644 InventoryManagementApp/client/core/Home.jsx delete mode 100644 InventoryManagementApp/client/src/assets/react.svg create mode 100644 InventoryManagementApp/client/src/components/CustomCard.jsx create mode 100644 InventoryManagementApp/client/src/components/Footer.jsx create mode 100644 InventoryManagementApp/client/src/pages/Home.jsx rename InventoryManagementApp/client/{core => src/pages}/Test.jsx (100%) diff --git a/InventoryManagementApp/client/MainRouter.jsx b/InventoryManagementApp/client/MainRouter.jsx index 521bcbf..65721b6 100644 --- a/InventoryManagementApp/client/MainRouter.jsx +++ b/InventoryManagementApp/client/MainRouter.jsx @@ -1,7 +1,7 @@ import React from 'react' import { Route, Routes } from 'react-router-dom' -import Home from './core/Home' -import Test from './core/Test' +import Home from './src/pages/Home' +import Test from './src/pages/Test' const MainRouter = () => { return (
    diff --git a/InventoryManagementApp/client/core/Home.jsx b/InventoryManagementApp/client/core/Home.jsx deleted file mode 100644 index 8040e02..0000000 --- a/InventoryManagementApp/client/core/Home.jsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardMedia from '@material-ui/core/CardMedia'; -import Typography from '@material-ui/core/Typography'; -import wdLogo from './../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; - -const useStyles = makeStyles(theme => ({ - card: { - maxWidth: 600, - margin: 'auto', - marginTop: theme.spacing(5), - }, - title: { - padding: theme.spacing(3, 2.5, 2), - color: theme.palette.openTitle, - }, - media: { - minHeight: 400, - }, -})); -export default function Home() { - const classes = useStyles() - return ( - - - Home Page - - - - TEMP DESIGN FOR TESTING. - REPLACE THIS WITH ACTUAL HOME. - - - - ) -} - diff --git a/InventoryManagementApp/client/src/assets/react.svg b/InventoryManagementApp/client/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/InventoryManagementApp/client/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/InventoryManagementApp/client/src/components/CustomCard.jsx b/InventoryManagementApp/client/src/components/CustomCard.jsx new file mode 100644 index 0000000..258f395 --- /dev/null +++ b/InventoryManagementApp/client/src/components/CustomCard.jsx @@ -0,0 +1,81 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import Typography from '@material-ui/core/Typography'; +import TextField from '@material-ui/core/TextField'; +import Button from '@material-ui/core/Button'; +import { ThemeProvider } from '@material-ui/core/styles'; +import theme from '../../theme'; + +const useStyles = makeStyles(theme => ({ + card: { + margin: 'auto', + marginTop: theme.spacing(1), + width: '70%', + }, + content: { + padding: theme.spacing(1), + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + }, + title: { + fontSize: '2rem', + fontWeight: 'bold', + marginBottom: theme.spacing(4), + }, + input: { + marginBottom: theme.spacing(2), + width: '100%', + }, + button: { + width: '100%', + }, +})); + +const CustomCard = () => { + const classes = useStyles(); + + return ( + + + + + Welcome! + +
    + + + + + + +
    +
    +
    + ); +}; + +export default CustomCard; diff --git a/InventoryManagementApp/client/src/components/Footer.jsx b/InventoryManagementApp/client/src/components/Footer.jsx new file mode 100644 index 0000000..7a15409 --- /dev/null +++ b/InventoryManagementApp/client/src/components/Footer.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import Typography from '@material-ui/core/Typography'; +import { ThemeProvider } from '@material-ui/core/styles'; +import theme from '../../theme'; +import logo from '../../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; + +const Footer = () => { + return ( + +
    +
    + POWERED BY +
    +
    + Winter Devs Logo +
    +
    +
    + ); +}; + +export default Footer; diff --git a/InventoryManagementApp/client/src/pages/Home.jsx b/InventoryManagementApp/client/src/pages/Home.jsx new file mode 100644 index 0000000..d9799b9 --- /dev/null +++ b/InventoryManagementApp/client/src/pages/Home.jsx @@ -0,0 +1,73 @@ +import React from "react"; +import { makeStyles, ThemeProvider } from "@material-ui/core/styles"; +import Typography from "@material-ui/core/Typography"; +import CustomCard from "../components/CustomCard"; +import Footer from "../components/Footer"; +import theme from "../../theme"; + +const useStyles = makeStyles((theme) => ({ + container: { + backgroundColor: theme.palette.background.default, + minHeight: "80vh", + borderRadius: theme.shape.borderRadius, + boxShadow: theme.shadows[5], + padding: theme.spacing(10), + }, + grid: { + display: "grid", + gridTemplateColumns: "repeat(2, 1fr)", + gap: theme.spacing(6), + marginTop: theme.spacing(20), + marginLeft: theme.spacing(10), + }, + title: { + fontSize: "5rem", + fontWeight: "bold", + marginBottom: theme.spacing(6), + }, + titleColor: { + color: theme.palette.customColorBlue, + }, + subTitle: { + fontSize: "6xl", + color: theme.palette.text.secondary, + }, + description: { + color: theme.palette.text.secondary, + }, +})); + +export default function Home() { + const classes = useStyles(); + + return ( + +
    +
    +
    +
    + + wd + inv + + + + Effortless Inventory Control Awaits + +
    + + Simplify your stock control with WDInv, the intuitive inventory + management solution. Enjoy real-time tracking, streamlined + ordering, and actionable insights-all in one place. Get ready to + elevate your inventory efficiency. + +
    +
    + +
    +
    +
    +
    +
    + ); +} diff --git a/InventoryManagementApp/client/core/Test.jsx b/InventoryManagementApp/client/src/pages/Test.jsx similarity index 100% rename from InventoryManagementApp/client/core/Test.jsx rename to InventoryManagementApp/client/src/pages/Test.jsx diff --git a/InventoryManagementApp/client/theme.jsx b/InventoryManagementApp/client/theme.jsx index 5197cfb..7844241 100644 --- a/InventoryManagementApp/client/theme.jsx +++ b/InventoryManagementApp/client/theme.jsx @@ -33,6 +33,7 @@ const theme = createTheme({ }, openTitle: '#3f4771', protectedTitle: pink['400'], + customColorBlue: '#0bc4ff', type: 'light' } }) From 22b45100bd1905dd7688987102a3a4b1f9bee84b Mon Sep 17 00:00:00 2001 From: cyrilvergara Date: Thu, 28 Mar 2024 23:45:02 -0400 Subject: [PATCH 31/34] home, login, signup components --- InventoryManagementApp/client/MainRouter.jsx | 25 +- InventoryManagementApp/client/package.json | 4 + .../client/src/components/CustomCard.jsx | 81 ---- .../src/components/{ => footer}/Footer.jsx | 4 +- .../client/src/components/form/Login.jsx | 204 +++++++++ .../src/components/form/LoginSignupForm.jsx | 59 +++ .../client/src/components/form/Signup.jsx | 254 +++++++++++ .../pages/Dashboard.jsx} | 4 +- .../src/{ => components}/pages/Home.jsx | 12 +- InventoryManagementApp/client/theme.jsx | 6 +- InventoryManagementApp/client/yarn.lock | 397 +++++++++++++++++- 11 files changed, 935 insertions(+), 115 deletions(-) delete mode 100644 InventoryManagementApp/client/src/components/CustomCard.jsx rename InventoryManagementApp/client/src/components/{ => footer}/Footer.jsx (86%) create mode 100644 InventoryManagementApp/client/src/components/form/Login.jsx create mode 100644 InventoryManagementApp/client/src/components/form/LoginSignupForm.jsx create mode 100644 InventoryManagementApp/client/src/components/form/Signup.jsx rename InventoryManagementApp/client/src/{pages/Test.jsx => components/pages/Dashboard.jsx} (85%) rename InventoryManagementApp/client/src/{ => components}/pages/Home.jsx (89%) diff --git a/InventoryManagementApp/client/MainRouter.jsx b/InventoryManagementApp/client/MainRouter.jsx index 65721b6..5f08494 100644 --- a/InventoryManagementApp/client/MainRouter.jsx +++ b/InventoryManagementApp/client/MainRouter.jsx @@ -1,14 +1,15 @@ -import React from 'react' -import { Route, Routes } from 'react-router-dom' -import Home from './src/pages/Home' -import Test from './src/pages/Test' +import React from "react"; +import { Route, Routes } from "react-router-dom"; +import Home from "./src/components/pages/Home"; +import Dashboard from "./src/components/pages/Dashboard"; const MainRouter = () => { - return (
    - - } /> - } /> - + return ( +
    + + } /> + } /> +
    - ) -} -export default MainRouter + ); +}; +export default MainRouter; diff --git a/InventoryManagementApp/client/package.json b/InventoryManagementApp/client/package.json index 24f6c7d..393fbee 100644 --- a/InventoryManagementApp/client/package.json +++ b/InventoryManagementApp/client/package.json @@ -10,8 +10,12 @@ "preview": "vite preview" }, "dependencies": { + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.0", "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.11.3", + "@mui/icons-material": "^5.15.14", + "@mui/material": "^5.15.14", "concurrently": "^8.2.2", "global": "^4.4.0", "react": "^18.2.0", diff --git a/InventoryManagementApp/client/src/components/CustomCard.jsx b/InventoryManagementApp/client/src/components/CustomCard.jsx deleted file mode 100644 index 258f395..0000000 --- a/InventoryManagementApp/client/src/components/CustomCard.jsx +++ /dev/null @@ -1,81 +0,0 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import Typography from '@material-ui/core/Typography'; -import TextField from '@material-ui/core/TextField'; -import Button from '@material-ui/core/Button'; -import { ThemeProvider } from '@material-ui/core/styles'; -import theme from '../../theme'; - -const useStyles = makeStyles(theme => ({ - card: { - margin: 'auto', - marginTop: theme.spacing(1), - width: '70%', - }, - content: { - padding: theme.spacing(1), - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }, - title: { - fontSize: '2rem', - fontWeight: 'bold', - marginBottom: theme.spacing(4), - }, - input: { - marginBottom: theme.spacing(2), - width: '100%', - }, - button: { - width: '100%', - }, -})); - -const CustomCard = () => { - const classes = useStyles(); - - return ( - - - - - Welcome! - -
    - - - - - - -
    -
    -
    - ); -}; - -export default CustomCard; diff --git a/InventoryManagementApp/client/src/components/Footer.jsx b/InventoryManagementApp/client/src/components/footer/Footer.jsx similarity index 86% rename from InventoryManagementApp/client/src/components/Footer.jsx rename to InventoryManagementApp/client/src/components/footer/Footer.jsx index 7a15409..307484d 100644 --- a/InventoryManagementApp/client/src/components/Footer.jsx +++ b/InventoryManagementApp/client/src/components/footer/Footer.jsx @@ -1,8 +1,8 @@ import React from 'react'; import Typography from '@material-ui/core/Typography'; import { ThemeProvider } from '@material-ui/core/styles'; -import theme from '../../theme'; -import logo from '../../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; +import theme from "../../../theme"; +import logo from '../../../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; const Footer = () => { return ( diff --git a/InventoryManagementApp/client/src/components/form/Login.jsx b/InventoryManagementApp/client/src/components/form/Login.jsx new file mode 100644 index 0000000..7853ebe --- /dev/null +++ b/InventoryManagementApp/client/src/components/form/Login.jsx @@ -0,0 +1,204 @@ +import React, { useState } from "react"; +import { + TextField, + InputAdornment, + FormControl, + InputLabel, + IconButton, + Button, + Input, + Checkbox, + Alert, + Stack, +} from "@mui/material"; +import Visibility from "@mui/icons-material/Visibility"; +import VisibilityOff from "@mui/icons-material/VisibilityOff"; +import LoginIcon from "@mui/icons-material/Login"; +import { ThemeProvider } from '@mui/material/styles'; +import theme from "../../../theme"; + +// Email Validation +const isEmail = (email) => + /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(email); + +export default function Login() { + const [showPassword, setShowPassword] = React.useState(false); + + //Inputs + const [emailInput, setEmailInput] = useState(); + const [passwordInput, setPasswordInput] = useState(); + const [rememberMe, setRememberMe] = useState(); + + // Inputs Errors + const [emailError, setEmailError] = useState(false); + const [passwordError, setPasswordError] = useState(false); + + // Overall Form Validity + const [formValid, setFormValid] = useState(); + const [success, setSuccess] = useState(); + + // Handles Display and Hide Password + const handleClickShowPassword = () => setShowPassword((show) => !show); + const handleMouseDownPassword = (event) => { + event.preventDefault(); + }; + + // Label for Checkbox + const label = { inputProps: { "aria-label": "Checkbox demo" } }; + + // Validation for onBlur Email + const handleEmail = () => { + console.log(isEmail(emailInput)); + if (!isEmail(emailInput)) { + setEmailError(true); + return; + } + + setEmailError(false); + }; + + // Validation for onBlur Password + const handlePassword = () => { + if ( + !passwordInput || + passwordInput.length < 5 || + passwordInput.length > 20 + ) { + setPasswordError(true); + return; + } + + setPasswordError(false); + }; + + //handle Submittion + const handleSubmit = () => { + setSuccess(null); + //First of all Check for Errors + + // If Email error is true + if (emailError || !emailInput) { + setFormValid("Email is Invalid. Please Re-Enter"); + return; + } + + // If Password error is true + if (passwordError || !passwordInput) { + setFormValid( + "Password is set btw 5 - 20 characters long. Please Re-Enter" + ); + return; + } + setFormValid(null); + + // Proceed to use the information passed + console.log("Email : " + emailInput); + console.log("Password : " + passwordInput); + console.log("Remember : " + rememberMe); + + //Show Successfull Submittion + setSuccess("Form Submitted Successfully"); + }; + + return ( + +
    +
    + { + setEmailInput(event.target.value); + }} + /> +
    +
    + + + Password + + { + setPasswordInput(event.target.value); + }} + value={passwordInput} + endAdornment={ + + + {showPassword ? : } + + + } + /> + +
    + +
    + setRememberMe(event.target.checked)} + /> + Remember Me +
    + +
    + +
    + + {/* Show Form Error if any */} + {formValid && ( + + + {formValid} + + + )} + + {/* Show Success if no issues */} + {success && ( + + + {success} + + + )} + + {/*
    + Forgot Password +
    + Do you have an account ?{" "} + + Sign Up + +
    */} +
    +
    + ); +} diff --git a/InventoryManagementApp/client/src/components/form/LoginSignupForm.jsx b/InventoryManagementApp/client/src/components/form/LoginSignupForm.jsx new file mode 100644 index 0000000..8d794bc --- /dev/null +++ b/InventoryManagementApp/client/src/components/form/LoginSignupForm.jsx @@ -0,0 +1,59 @@ +import React from "react"; +import Paper from "@mui/material/Paper"; +import { makeStyles, ThemeProvider } from "@material-ui/core/styles"; +import theme from "../../../theme"; +import Chip from "@mui/material/Chip"; +import FaceIcon from "@mui/icons-material/Face"; +import AcUnitIcon from "@material-ui/icons/AcUnit"; +import Switch from "@material-ui/core/Switch"; +import Signup from "./Signup"; +import Login from "./Login"; + +const useStyles = makeStyles((theme) => ({ + root: { + textAlign: "center", + width: 450, + margin: "30px auto 0", + padding: theme.spacing(2), + }, +})); + +function LoginSignupForm() { + const classes = useStyles(); + const [checked, setChecked] = React.useState(false); + const handleChange = (event) => { + setChecked(event.target.checked); + }; + + return ( + +
    + + {checked ? ( + } + label="Signup" + variant="outlined" + color="primary" + style={{ fontSize: "15px", fontFamily: theme.typography.fontFamily, color: theme.palette.text.secondary }} + /> + ) : ( + } + label="Login" + variant="outlined" + color="primary" + style={{ fontSize: "15px", fontFamily: theme.typography.fontFamily, color: theme.palette.text.secondary }} + /> + )} +
    + +
    + {checked ? : } +
    +
    +
    + ); +} + +export default LoginSignupForm; diff --git a/InventoryManagementApp/client/src/components/form/Signup.jsx b/InventoryManagementApp/client/src/components/form/Signup.jsx new file mode 100644 index 0000000..79e9fc7 --- /dev/null +++ b/InventoryManagementApp/client/src/components/form/Signup.jsx @@ -0,0 +1,254 @@ +import React, { useState } from "react"; +import { + TextField, + InputAdornment, + FormControl, + InputLabel, + IconButton, + Button, + Input, + Checkbox, + Alert, + Stack, +} from "@mui/material"; +import Visibility from "@mui/icons-material/Visibility"; +import VisibilityOff from "@mui/icons-material/VisibilityOff"; +import LoginIcon from "@mui/icons-material/Login"; +import { ThemeProvider } from '@mui/material/styles'; +import theme from "../../../theme"; + +// API function for user signup +const signupUser = async (userData) => { + try { + const response = await fetch('/api/auth/signup', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(userData), + }); + + if (!response.ok) { + throw new Error('Signup failed'); + } + + const data = await response.json(); + return data; + } catch (error) { + throw new Error(error.message); + } + }; + +// Validations +// Email +const isEmail = (email) => + /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(email); + +export default function Login() { + const [showPassword, setShowPassword] = React.useState(false); + + //Inputs + const [usernameInput, setUsernameInput] = useState(); + const [emailInput, setEmailInput] = useState(); + const [passwordInput, setPasswordInput] = useState(); + + // Inputs Errors + const [usernameError, setUsernameError] = useState(false); + const [emailError, setEmailError] = useState(false); + const [passwordError, setPasswordError] = useState(false); + + // Overall Form Validity + const [formValid, setFormValid] = useState(); + const [success, setSuccess] = useState(); + + // Handles Display and Hide Password + const handleClickShowPassword = () => setShowPassword((show) => !show); + const handleMouseDownPassword = (event) => { + event.preventDefault(); + }; + + // Label for Checkbox + const label = { inputProps: { "aria-label": "Checkbox demo" } }; + + // Validation for onBlur Username + const handleUsername = () => { + if (!usernameInput) { + setUsernameError(true); + return; + } + + setUsernameError(false); + }; + + // Validation for onBlur Email + const handleEmail = () => { + console.log(isEmail(emailInput)); + if (!isEmail(emailInput)) { + setEmailError(true); + return; + } + + setEmailError(false); + }; + + // Validation for onBlur Password + const handlePassword = () => { + if ( + !passwordInput || + passwordInput.length < 5 || + passwordInput.length > 20 + ) { + setPasswordError(true); + return; + } + + setPasswordError(false); + }; + + //handle Submittion + const handleSubmit = () => { + setSuccess(null); + //First of all Check for Errors + + // IF username error is true + if (usernameError || !usernameInput) { + setFormValid( + "Username is set btw 5 - 15 characters long. Please Re-Enter" + ); + return; + } + + // If Email error is true + if (emailError || !emailInput) { + setFormValid("Email is Invalid. Please Re-Enter"); + return; + } + + // If Password error is true + if (passwordError || !passwordInput) { + setFormValid( + "Password is set btw 5 - 20 characters long. Please Re-Enter" + ); + return; + } + setFormValid(null); + + // Proceed to use the information passed + console.log("Username : " + usernameInput); + console.log("Email : " + emailInput); + console.log("Password : " + passwordInput); + + //Show Successfull Submittion + setSuccess("Form Submitted Successfully"); + }; + + return ( + +
    +
    + { + setUsernameInput(event.target.value); + }} + onBlur={handleUsername} + /> +
    + +
    + { + setEmailInput(event.target.value); + }} + /> +
    +
    + + + Password + + { + setPasswordInput(event.target.value); + }} + value={passwordInput} + endAdornment={ + + + {showPassword ? : } + + + } + /> + +
    + +
    + +
    + + {/* Show Form Error if any */} + {formValid && ( + + + {formValid} + + + )} + + {/* Show Success if no issues */} + {success && ( + + + {success} + + + )} + + {/*
    + Forgot Password +
    + Do you have an account ?{" "} + + Sign Up + +
    */} +
    +
    + ); +} diff --git a/InventoryManagementApp/client/src/pages/Test.jsx b/InventoryManagementApp/client/src/components/pages/Dashboard.jsx similarity index 85% rename from InventoryManagementApp/client/src/pages/Test.jsx rename to InventoryManagementApp/client/src/components/pages/Dashboard.jsx index 1170396..634a4d4 100644 --- a/InventoryManagementApp/client/src/pages/Test.jsx +++ b/InventoryManagementApp/client/src/components/pages/Dashboard.jsx @@ -23,8 +23,8 @@ export default function Test() { return ( - Test Page - This page is for testing the component styles + Dashboard + This page is for testing the component styles and for the dashboard after the user logs in Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. diff --git a/InventoryManagementApp/client/src/pages/Home.jsx b/InventoryManagementApp/client/src/components/pages/Home.jsx similarity index 89% rename from InventoryManagementApp/client/src/pages/Home.jsx rename to InventoryManagementApp/client/src/components/pages/Home.jsx index d9799b9..0472079 100644 --- a/InventoryManagementApp/client/src/pages/Home.jsx +++ b/InventoryManagementApp/client/src/components/pages/Home.jsx @@ -1,9 +1,9 @@ import React from "react"; import { makeStyles, ThemeProvider } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import CustomCard from "../components/CustomCard"; -import Footer from "../components/Footer"; -import theme from "../../theme"; +import LoginSignupForm from "../form/LoginSignupForm"; +import Footer from "../footer/Footer"; +import theme from "../../../theme"; const useStyles = makeStyles((theme) => ({ container: { @@ -11,13 +11,13 @@ const useStyles = makeStyles((theme) => ({ minHeight: "80vh", borderRadius: theme.shape.borderRadius, boxShadow: theme.shadows[5], - padding: theme.spacing(10), + padding: theme.spacing(7.8), }, grid: { display: "grid", gridTemplateColumns: "repeat(2, 1fr)", gap: theme.spacing(6), - marginTop: theme.spacing(20), + marginTop: theme.spacing(3), marginLeft: theme.spacing(10), }, title: { @@ -63,7 +63,7 @@ export default function Home() {
    - +
    diff --git a/InventoryManagementApp/client/theme.jsx b/InventoryManagementApp/client/theme.jsx index 7844241..e86c1df 100644 --- a/InventoryManagementApp/client/theme.jsx +++ b/InventoryManagementApp/client/theme.jsx @@ -21,7 +21,7 @@ const theme = createTheme({ palette: { primary: { light: '#5c67a3', - main: '#3f4771', + main: '#0bc4ff', dark: '#2e355b', contrastText: '#fff', }, @@ -34,6 +34,10 @@ const theme = createTheme({ openTitle: '#3f4771', protectedTitle: pink['400'], customColorBlue: '#0bc4ff', + background: { + default: '#eff6f9', + paper: '#fff', + }, type: 'light' } }) diff --git a/InventoryManagementApp/client/yarn.lock b/InventoryManagementApp/client/yarn.lock index c45073a..667dc35 100644 --- a/InventoryManagementApp/client/yarn.lock +++ b/InventoryManagementApp/client/yarn.lock @@ -15,6 +15,14 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@babel/code-frame@^7.0.0": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" @@ -90,6 +98,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-module-imports@^7.16.7": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" @@ -160,6 +175,16 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz" @@ -179,6 +204,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" + integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.21.0": version "7.23.6" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz" @@ -186,13 +218,6 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" - integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== - dependencies: - regenerator-runtime "^0.14.0" - "@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" @@ -227,11 +252,127 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/is-prop-valid@^1.2.1": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" + integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.11.4": + version "11.11.4" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" + integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.3.tgz#84b77bfcfe3b7bb47d326602f640ccfcacd5ffb0" + integrity sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/styled@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" + integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/is-prop-valid" "^1.2.1" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "@esbuild/aix-ppc64@0.19.10": version "0.19.10" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" @@ -379,6 +520,33 @@ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz" integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== +"@floating-ui/core@^1.0.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" + integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== + dependencies: + "@floating-ui/utils" "^0.2.1" + +"@floating-ui/dom@^1.6.1": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.3.tgz#954e46c1dd3ad48e49db9ada7218b0985cee75ef" + integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw== + dependencies: + "@floating-ui/core" "^1.0.0" + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/react-dom@^2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.8.tgz#afc24f9756d1b433e1fe0d047c24bd4d9cefaa5d" + integrity sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw== + dependencies: + "@floating-ui/dom" "^1.6.1" + +"@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== + "@humanwhocodes/config-array@^0.11.13": version "0.11.13" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" @@ -501,6 +669,97 @@ prop-types "^15.7.2" react-is "^16.8.0 || ^17.0.0" +"@mui/base@5.0.0-beta.40": + version "5.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40.tgz#1f8a782f1fbf3f84a961e954c8176b187de3dae2" + integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== + dependencies: + "@babel/runtime" "^7.23.9" + "@floating-ui/react-dom" "^2.0.8" + "@mui/types" "^7.2.14" + "@mui/utils" "^5.15.14" + "@popperjs/core" "^2.11.8" + clsx "^2.1.0" + prop-types "^15.8.1" + +"@mui/core-downloads-tracker@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.14.tgz#f7c57b261904831877220182303761c012d05046" + integrity sha512-on75VMd0XqZfaQW+9pGjSNiqW+ghc5E2ZSLRBXwcXl/C4YzjfyjrLPhrEpKnR9Uym9KXBvxrhoHfPcczYHweyA== + +"@mui/icons-material@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.14.tgz#333468c94988d96203946d1cfeb8f4d7e8e7de34" + integrity sha512-vj/51k7MdFmt+XVw94sl30SCvGx6+wJLsNYjZRgxhS6y3UtnWnypMOsm3Kmg8TN+P0dqwsjy4/fX7B1HufJIhw== + dependencies: + "@babel/runtime" "^7.23.9" + +"@mui/material@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.14.tgz#a40bd5eccfa9fc925535e1f4d70c6cef77fa3a75" + integrity sha512-kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/base" "5.0.0-beta.40" + "@mui/core-downloads-tracker" "^5.15.14" + "@mui/system" "^5.15.14" + "@mui/types" "^7.2.14" + "@mui/utils" "^5.15.14" + "@types/react-transition-group" "^4.4.10" + clsx "^2.1.0" + csstype "^3.1.3" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.14.tgz#edd9a82948ed01586a01c842eb89f0e3f68970ee" + integrity sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/utils" "^5.15.14" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.14.tgz#168b154c4327fa4ccc1933a498331d53f61c0de2" + integrity sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw== + dependencies: + "@babel/runtime" "^7.23.9" + "@emotion/cache" "^11.11.0" + csstype "^3.1.3" + prop-types "^15.8.1" + +"@mui/system@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.14.tgz#8a0c6571077eeb6b5f1ff7aa7ff6a3dc4a14200d" + integrity sha512-auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/private-theming" "^5.15.14" + "@mui/styled-engine" "^5.15.14" + "@mui/types" "^7.2.14" + "@mui/utils" "^5.15.14" + clsx "^2.1.0" + csstype "^3.1.3" + prop-types "^15.8.1" + +"@mui/types@^7.2.14": + version "7.2.14" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.14.tgz#8a02ac129b70f3d82f2f9b76ded2c8d48e3fc8c9" + integrity sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ== + +"@mui/utils@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.14.tgz#e414d7efd5db00bfdc875273a40c0a89112ade3a" + integrity sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA== + dependencies: + "@babel/runtime" "^7.23.9" + "@types/prop-types" "^15.7.11" + prop-types "^15.8.1" + react-is "^18.2.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -522,6 +781,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + "@remix-run/router@1.15.3": version "1.15.3" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" @@ -625,11 +889,21 @@ dependencies: "@babel/types" "^7.20.7" +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + "@types/prop-types@*": version "15.7.11" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz" integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== +"@types/prop-types@^15.7.11": + version "15.7.12" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + "@types/react-dom@^18.2.17": version "18.2.18" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz" @@ -637,7 +911,7 @@ dependencies: "@types/react" "*" -"@types/react-transition-group@^4.2.0": +"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.10": version "4.4.10" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== @@ -806,6 +1080,15 @@ available-typed-arrays@^1.0.5: resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -906,6 +1189,11 @@ clsx@^1.0.4: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== +clsx@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" + integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" @@ -950,11 +1238,27 @@ concurrently@^8.2.2: tree-kill "^1.2.2" yargs "^17.7.2" +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" @@ -977,7 +1281,7 @@ csstype@^2.5.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -csstype@^3.0.2: +csstype@^3.0.2, csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== @@ -1056,6 +1360,13 @@ emoji-regex@^8.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + es-abstract@^1.22.1: version "1.22.3" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz" @@ -1348,6 +1659,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" @@ -1546,7 +1862,7 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" -hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -1612,6 +1928,11 @@ is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: get-intrinsic "^1.2.0" is-typed-array "^1.1.10" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-async-function@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" @@ -1827,6 +2148,11 @@ json-buffer@3.0.1: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" @@ -1937,6 +2263,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -2137,6 +2468,16 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -2157,6 +2498,11 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" @@ -2233,6 +2579,11 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-refresh@^0.14.0: version "0.14.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" @@ -2253,7 +2604,7 @@ react-router@6.22.3, react-router@^6.22.3: dependencies: "@remix-run/router" "1.15.3" -react-transition-group@^4.4.0: +react-transition-group@^4.4.0, react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== @@ -2313,6 +2664,15 @@ resolve-from@^4.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve@^1.19.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.4: version "2.0.0-next.5" resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" @@ -2463,6 +2823,11 @@ source-map-js@^1.0.2: resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + spawn-command@0.0.2: version "0.0.2" resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz" @@ -2531,6 +2896,11 @@ strip-json-comments@^3.1.1: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -2774,6 +3144,11 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" From 5d5a19084816e9841a852e89b868d7eb91017b1d Mon Sep 17 00:00:00 2001 From: cyrilvergara Date: Fri, 29 Mar 2024 10:38:47 -0400 Subject: [PATCH 32/34] added business logic but not yet done --- .../src/components/auth/LoginContainer.jsx | 49 +++ .../src/components/auth/SignupContainer.jsx | 56 ++++ .../client/src/components/form/Login.jsx | 228 ++++---------- .../client/src/components/form/Signup.jsx | 287 +++++------------- 4 files changed, 236 insertions(+), 384 deletions(-) create mode 100644 InventoryManagementApp/client/src/components/auth/LoginContainer.jsx create mode 100644 InventoryManagementApp/client/src/components/auth/SignupContainer.jsx diff --git a/InventoryManagementApp/client/src/components/auth/LoginContainer.jsx b/InventoryManagementApp/client/src/components/auth/LoginContainer.jsx new file mode 100644 index 0000000..4801084 --- /dev/null +++ b/InventoryManagementApp/client/src/components/auth/LoginContainer.jsx @@ -0,0 +1,49 @@ +// LoginContainer.jsx +import React, { useState } from "react"; +import Login from "./Login"; + +const LoginContainer = () => { + // State management for form inputs, errors, and success message + const [emailInput, setEmailInput] = useState(""); + const [emailError, setEmailError] = useState(false); + const [passwordInput, setPasswordInput] = useState(""); + const [passwordError, setPasswordError] = useState(false); + const [formValid, setFormValid] = useState(null); + const [success, setSuccess] = useState(null); + const [rememberMe, setRememberMe] = useState(false); + + // Validation for onBlur Email + const handleEmail = () => { + // Your email validation logic + }; + + // Validation for onBlur Password + const handlePassword = () => { + // Your password validation logic + }; + + // Handle form submission + const handleSubmit = () => { + // Your form submission logic, including API calls + }; + + return ( + + ); +}; + +export default LoginContainer; diff --git a/InventoryManagementApp/client/src/components/auth/SignupContainer.jsx b/InventoryManagementApp/client/src/components/auth/SignupContainer.jsx new file mode 100644 index 0000000..1fd66d0 --- /dev/null +++ b/InventoryManagementApp/client/src/components/auth/SignupContainer.jsx @@ -0,0 +1,56 @@ +import React, { useState } from "react"; +import Signup from "../form/Signup"; +import { signupUser } from "../../../server/controllers/AuthController"; + +const SignupContainer = () => { + const [emailInput, setEmailInput] = useState(""); + const [emailError, setEmailError] = useState(false); + const [passwordInput, setPasswordInput] = useState(""); + const [passwordError, setPasswordError] = useState(false); + const [formValid, setFormValid] = useState(null); + const [success, setSuccess] = useState(null); + + const handleSubmit = async () => { + setSuccess(null); + + if (emailError || !emailInput) { + setFormValid("Email is Invalid. Please Re-Enter"); + return; + } + + if (passwordError || !passwordInput) { + setFormValid("Password is set btw 5 - 20 characters long. Please Re-Enter"); + return; + } + + setFormValid(null); + + try { + const userData = { + email: emailInput, + password: passwordInput + }; + await signupUser(userData); + + setSuccess("Form Submitted Successfully"); + } catch (error) { + setFormValid("Signup failed. Please try again."); + } + }; + + return ( + + ); +}; + +export default SignupContainer; \ No newline at end of file diff --git a/InventoryManagementApp/client/src/components/form/Login.jsx b/InventoryManagementApp/client/src/components/form/Login.jsx index 7853ebe..174cabe 100644 --- a/InventoryManagementApp/client/src/components/form/Login.jsx +++ b/InventoryManagementApp/client/src/components/form/Login.jsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React from "react"; import { TextField, InputAdornment, @@ -8,7 +8,6 @@ import { Button, Input, Checkbox, - Alert, Stack, } from "@mui/material"; import Visibility from "@mui/icons-material/Visibility"; @@ -17,188 +16,77 @@ import LoginIcon from "@mui/icons-material/Login"; import { ThemeProvider } from '@mui/material/styles'; import theme from "../../../theme"; -// Email Validation -const isEmail = (email) => - /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(email); - export default function Login() { const [showPassword, setShowPassword] = React.useState(false); + const [emailInput, setEmailInput] = React.useState(''); + const [passwordInput, setPasswordInput] = React.useState(''); + const [rememberMe, setRememberMe] = React.useState(false); - //Inputs - const [emailInput, setEmailInput] = useState(); - const [passwordInput, setPasswordInput] = useState(); - const [rememberMe, setRememberMe] = useState(); - - // Inputs Errors - const [emailError, setEmailError] = useState(false); - const [passwordError, setPasswordError] = useState(false); - - // Overall Form Validity - const [formValid, setFormValid] = useState(); - const [success, setSuccess] = useState(); - - // Handles Display and Hide Password const handleClickShowPassword = () => setShowPassword((show) => !show); const handleMouseDownPassword = (event) => { event.preventDefault(); }; - // Label for Checkbox const label = { inputProps: { "aria-label": "Checkbox demo" } }; - // Validation for onBlur Email - const handleEmail = () => { - console.log(isEmail(emailInput)); - if (!isEmail(emailInput)) { - setEmailError(true); - return; - } - - setEmailError(false); - }; - - // Validation for onBlur Password - const handlePassword = () => { - if ( - !passwordInput || - passwordInput.length < 5 || - passwordInput.length > 20 - ) { - setPasswordError(true); - return; - } - - setPasswordError(false); - }; - - //handle Submittion - const handleSubmit = () => { - setSuccess(null); - //First of all Check for Errors - - // If Email error is true - if (emailError || !emailInput) { - setFormValid("Email is Invalid. Please Re-Enter"); - return; - } - - // If Password error is true - if (passwordError || !passwordInput) { - setFormValid( - "Password is set btw 5 - 20 characters long. Please Re-Enter" - ); - return; - } - setFormValid(null); - - // Proceed to use the information passed - console.log("Email : " + emailInput); - console.log("Password : " + passwordInput); - console.log("Remember : " + rememberMe); - - //Show Successfull Submittion - setSuccess("Form Submitted Successfully"); - }; - return ( -
    -
    - { - setEmailInput(event.target.value); - }} - /> -
    -
    - - - Password - - { - setPasswordInput(event.target.value); - }} - value={passwordInput} - endAdornment={ - - - {showPassword ? : } - - - } +
    +
    + setEmailInput(event.target.value)} /> - -
    - -
    - setRememberMe(event.target.checked)} - /> - Remember Me -
    - -
    - +
    +
    + + + Password + + setPasswordInput(event.target.value)} + value={passwordInput} + endAdornment={ + + + {showPassword ? : } + + + } + /> + +
    + +
    + setRememberMe(event.target.checked)} + /> + Remember Me +
    + +
    + +
    - - {/* Show Form Error if any */} - {formValid && ( - - - {formValid} - - - )} - - {/* Show Success if no issues */} - {success && ( - - - {success} - - - )} - - {/*
    - Forgot Password -
    - Do you have an account ?{" "} - - Sign Up - -
    */} -
    ); } diff --git a/InventoryManagementApp/client/src/components/form/Signup.jsx b/InventoryManagementApp/client/src/components/form/Signup.jsx index 79e9fc7..c0cbd97 100644 --- a/InventoryManagementApp/client/src/components/form/Signup.jsx +++ b/InventoryManagementApp/client/src/components/form/Signup.jsx @@ -7,8 +7,6 @@ import { IconButton, Button, Input, - Checkbox, - Alert, Stack, } from "@mui/material"; import Visibility from "@mui/icons-material/Visibility"; @@ -17,33 +15,6 @@ import LoginIcon from "@mui/icons-material/Login"; import { ThemeProvider } from '@mui/material/styles'; import theme from "../../../theme"; -// API function for user signup -const signupUser = async (userData) => { - try { - const response = await fetch('/api/auth/signup', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(userData), - }); - - if (!response.ok) { - throw new Error('Signup failed'); - } - - const data = await response.json(); - return data; - } catch (error) { - throw new Error(error.message); - } - }; - -// Validations -// Email -const isEmail = (email) => - /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(email); - export default function Login() { const [showPassword, setShowPassword] = React.useState(false); @@ -52,203 +23,91 @@ export default function Login() { const [emailInput, setEmailInput] = useState(); const [passwordInput, setPasswordInput] = useState(); - // Inputs Errors - const [usernameError, setUsernameError] = useState(false); - const [emailError, setEmailError] = useState(false); - const [passwordError, setPasswordError] = useState(false); - - // Overall Form Validity - const [formValid, setFormValid] = useState(); - const [success, setSuccess] = useState(); - // Handles Display and Hide Password const handleClickShowPassword = () => setShowPassword((show) => !show); const handleMouseDownPassword = (event) => { event.preventDefault(); }; - // Label for Checkbox - const label = { inputProps: { "aria-label": "Checkbox demo" } }; - - // Validation for onBlur Username - const handleUsername = () => { - if (!usernameInput) { - setUsernameError(true); - return; - } - - setUsernameError(false); - }; - - // Validation for onBlur Email - const handleEmail = () => { - console.log(isEmail(emailInput)); - if (!isEmail(emailInput)) { - setEmailError(true); - return; - } - - setEmailError(false); - }; - - // Validation for onBlur Password - const handlePassword = () => { - if ( - !passwordInput || - passwordInput.length < 5 || - passwordInput.length > 20 - ) { - setPasswordError(true); - return; - } - - setPasswordError(false); - }; - - //handle Submittion - const handleSubmit = () => { - setSuccess(null); - //First of all Check for Errors - - // IF username error is true - if (usernameError || !usernameInput) { - setFormValid( - "Username is set btw 5 - 15 characters long. Please Re-Enter" - ); - return; - } - - // If Email error is true - if (emailError || !emailInput) { - setFormValid("Email is Invalid. Please Re-Enter"); - return; - } - - // If Password error is true - if (passwordError || !passwordInput) { - setFormValid( - "Password is set btw 5 - 20 characters long. Please Re-Enter" - ); - return; - } - setFormValid(null); - - // Proceed to use the information passed - console.log("Username : " + usernameInput); - console.log("Email : " + emailInput); - console.log("Password : " + passwordInput); - - //Show Successfull Submittion - setSuccess("Form Submitted Successfully"); - }; - return ( -
    -
    - { - setUsernameInput(event.target.value); - }} - onBlur={handleUsername} - /> -
    - -
    - { - setEmailInput(event.target.value); - }} - /> -
    -
    - - - Password - - +
    + { - setPasswordInput(event.target.value); + setUsernameInput(event.target.value); }} - value={passwordInput} - endAdornment={ - - - {showPassword ? : } - - - } /> - -
    - -
    - +
    + +
    + { + setEmailInput(event.target.value); + }} + /> +
    +
    + + + Password + + { + setPasswordInput(event.target.value); + }} + value={passwordInput} + endAdornment={ + + + {showPassword ? : } + + + } + /> + +
    + +
    + +
    + + {/*
    + Forgot Password +
    + Do you have an account ?{" "} + + Sign Up + +
    */}
    - - {/* Show Form Error if any */} - {formValid && ( - - - {formValid} - - - )} - - {/* Show Success if no issues */} - {success && ( - - - {success} - - - )} - - {/*
    - Forgot Password -
    - Do you have an account ?{" "} - - Sign Up - -
    */} -
    ); } From 5e211fb50d692d9988538d5dafe6bd28190180fa Mon Sep 17 00:00:00 2001 From: cyrilvergara Date: Fri, 29 Mar 2024 12:28:32 -0400 Subject: [PATCH 33/34] link home to dashboard --- InventoryManagementApp/client/MainRouter.jsx | 2 +- .../client/src/components/form/Login.jsx | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/InventoryManagementApp/client/MainRouter.jsx b/InventoryManagementApp/client/MainRouter.jsx index 5f08494..25dcbe7 100644 --- a/InventoryManagementApp/client/MainRouter.jsx +++ b/InventoryManagementApp/client/MainRouter.jsx @@ -7,7 +7,7 @@ const MainRouter = () => {
    } /> - } /> + } />
    ); diff --git a/InventoryManagementApp/client/src/components/form/Login.jsx b/InventoryManagementApp/client/src/components/form/Login.jsx index 174cabe..b103280 100644 --- a/InventoryManagementApp/client/src/components/form/Login.jsx +++ b/InventoryManagementApp/client/src/components/form/Login.jsx @@ -13,13 +13,14 @@ import { import Visibility from "@mui/icons-material/Visibility"; import VisibilityOff from "@mui/icons-material/VisibilityOff"; import LoginIcon from "@mui/icons-material/Login"; -import { ThemeProvider } from '@mui/material/styles'; +import { ThemeProvider } from "@mui/material/styles"; import theme from "../../../theme"; +import { Link } from "react-router-dom"; export default function Login() { const [showPassword, setShowPassword] = React.useState(false); - const [emailInput, setEmailInput] = React.useState(''); - const [passwordInput, setPasswordInput] = React.useState(''); + const [emailInput, setEmailInput] = React.useState(""); + const [passwordInput, setPasswordInput] = React.useState(""); const [rememberMe, setRememberMe] = React.useState(false); const handleClickShowPassword = () => setShowPassword((show) => !show); @@ -67,7 +68,13 @@ export default function Login() {
    -
    +
    } - onClick={() => console.log("LOGIN button clicked")} // Placeholder onClick + component={Link} + to="/dashboard" > LOGIN From 1c2a4688d709b8c80691779bdb2266158066a285 Mon Sep 17 00:00:00 2001 From: cyrilvergara Date: Fri, 29 Mar 2024 15:20:11 -0400 Subject: [PATCH 34/34] dashboard and sidebar component --- .../client/src/components/footer/Footer.jsx | 33 +++++--- .../client/src/components/pages/Dashboard.jsx | 81 ++++++++++++------ .../client/src/components/pages/Home.jsx | 15 ++-- .../client/src/components/sidebar/Sidebar.jsx | 69 +++++++++++++++ InventoryManagementApp/client/theme.jsx | 83 +++++++++---------- 5 files changed, 196 insertions(+), 85 deletions(-) create mode 100644 InventoryManagementApp/client/src/components/sidebar/Sidebar.jsx diff --git a/InventoryManagementApp/client/src/components/footer/Footer.jsx b/InventoryManagementApp/client/src/components/footer/Footer.jsx index 307484d..cded718 100644 --- a/InventoryManagementApp/client/src/components/footer/Footer.jsx +++ b/InventoryManagementApp/client/src/components/footer/Footer.jsx @@ -1,21 +1,32 @@ import React from 'react'; import Typography from '@material-ui/core/Typography'; -import { ThemeProvider } from '@material-ui/core/styles'; -import theme from "../../../theme"; +import { makeStyles } from '@material-ui/core/styles'; import logo from '../../../assets/images/WinterDevLogo_PrimaryLogoLight.svg'; +const useStyles = makeStyles((theme) => ({ + footerContainer: { + padding: theme.spacing(5), + textAlign: 'center', + }, + logoImage: { + width: 250, + margin: 'auto', + marginTop: theme.spacing(2), + }, +})); + const Footer = () => { + const classes = useStyles(); + return ( - -
    -
    - POWERED BY -
    -
    - Winter Devs Logo -
    +
    + + POWERED BY + +
    + Winter Devs Logo
    - +
    ); }; diff --git a/InventoryManagementApp/client/src/components/pages/Dashboard.jsx b/InventoryManagementApp/client/src/components/pages/Dashboard.jsx index 634a4d4..8c2e467 100644 --- a/InventoryManagementApp/client/src/components/pages/Dashboard.jsx +++ b/InventoryManagementApp/client/src/components/pages/Dashboard.jsx @@ -3,34 +3,61 @@ import { makeStyles } from '@material-ui/core/styles'; import Card from '@material-ui/core/Card'; import CardContent from '@material-ui/core/CardContent'; import Typography from '@material-ui/core/Typography'; +import Sidebar from '../sidebar/Sidebar'; -const useStyles = makeStyles(theme => ({ - // card: { - // maxWidth: 600, - // margin: 'auto', - // marginTop: theme.spacing(5), - // }, - // title: { - // padding: theme.spacing(3, 2.5, 2), - // color: theme.palette.openTitle, - // }, - // media: { - // minHeight: 400, - // }, +const useStyles = makeStyles((theme) => ({ + root: { + display: 'flex', + height: '97vh', + }, + sidebar: { + width: 300, + flexShrink: 0, + }, + content: { + flexGrow: 1, + backgroundColor: theme.palette.background.default, + padding: theme.spacing(3), + }, + card: { + maxWidth: 600, + margin: 'auto', + marginTop: theme.spacing(5), + borderRadius: theme.shape.borderRadius, + boxShadow: theme.shadows[5], + }, + title: { + color: theme.palette.customColorBlue, + fontSize: '5rem', + fontWeight: 'bold', + }, + description: { + color: theme.palette.text.secondary, + marginTop: theme.spacing(2), + }, })); -export default function Test() { - const classes = useStyles() - return ( - - Dashboard - This page is for testing the component styles and for the dashboard after the user logs in - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - - - - ) -} +export default function Dashboard() { + const classes = useStyles(); + return ( +
    + +
    + + + Dashboard + + + This page is for testing the component styles and for the dashboard after the user logs in + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + +
    +
    + ); +} diff --git a/InventoryManagementApp/client/src/components/pages/Home.jsx b/InventoryManagementApp/client/src/components/pages/Home.jsx index 0472079..e8efb9d 100644 --- a/InventoryManagementApp/client/src/components/pages/Home.jsx +++ b/InventoryManagementApp/client/src/components/pages/Home.jsx @@ -8,16 +8,16 @@ import theme from "../../../theme"; const useStyles = makeStyles((theme) => ({ container: { backgroundColor: theme.palette.background.default, - minHeight: "80vh", + minHeight: "88vh", borderRadius: theme.shape.borderRadius, boxShadow: theme.shadows[5], - padding: theme.spacing(7.8), + padding: theme.spacing(4), }, grid: { display: "grid", gridTemplateColumns: "repeat(2, 1fr)", - gap: theme.spacing(6), - marginTop: theme.spacing(3), + gap: theme.spacing(3), + marginTop: theme.spacing(1), marginLeft: theme.spacing(10), }, title: { @@ -35,6 +35,9 @@ const useStyles = makeStyles((theme) => ({ description: { color: theme.palette.text.secondary, }, + footer: { + marginTop: theme.spacing(9), + }, })); export default function Home() { @@ -66,8 +69,10 @@ export default function Home() {
    +
    +
    ); -} +} \ No newline at end of file diff --git a/InventoryManagementApp/client/src/components/sidebar/Sidebar.jsx b/InventoryManagementApp/client/src/components/sidebar/Sidebar.jsx new file mode 100644 index 0000000..2cc1e39 --- /dev/null +++ b/InventoryManagementApp/client/src/components/sidebar/Sidebar.jsx @@ -0,0 +1,69 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Drawer from '@mui/material/Drawer'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemText from '@mui/material/ListItemText'; +import Typography from '@mui/material/Typography'; +import Footer from '../footer/Footer'; +// import theme from '../../../theme'; + +const drawerWidth = 300; + +const useStyles = makeStyles((theme) => ({ + drawer: { + width: drawerWidth, + flexShrink: 0, + }, + drawerPaper: { + width: drawerWidth, + backgroundColor: theme.palette.customColorDarkBlue, + display: 'flex', + flexDirection: 'column', + justifyContent: 'space-between', + height: '100%', + }, + title: { + textAlign: 'center', + marginTop: theme.spacing(2), + color: theme.palette.primary.contrastText, + }, + listItem: { + color: theme.palette.primary.contrastText, + }, + footer: { + justifyContent: 'center', + }, +})); + +const Sidebar = () => { + const classes = useStyles(); + + return ( + +
    + + wdinv + + + {['View Records', 'Create New Record', 'Update Records', 'Delete Records', 'View Users'].map((text, index) => ( + + + + ))} + +
    +
    +
    +
    +
    + ); +}; + +export default Sidebar; diff --git a/InventoryManagementApp/client/theme.jsx b/InventoryManagementApp/client/theme.jsx index e86c1df..5f46087 100644 --- a/InventoryManagementApp/client/theme.jsx +++ b/InventoryManagementApp/client/theme.jsx @@ -1,44 +1,43 @@ -import { createTheme } from '@material-ui/core/styles' -import { pink } from '@material-ui/core/colors' +import { createTheme } from '@material-ui/core/styles'; + const theme = createTheme({ - typography: { - useNextVariants: true, - fontFamily: [ - 'proxima-nova', - 'futura-pt', - '-apple-system', - 'BlinkMacSystemFont', - '"Segoe UI"', - 'Roboto', - '"Helvetica Neue"', - 'Arial', - 'sans-serif', - '"Apple Color Emoji"', - '"Segoe UI Emoji"', - '"Segoe UI Symbol"', - ].join(','), + typography: { + useNextVariants: true, + fontFamily: [ + 'proxima-nova', + 'futura-pt', + '-apple-system', + 'BlinkMacSystemFont', + '"Segoe UI"', + 'Roboto', + '"Helvetica Neue"', + 'Arial', + 'sans-serif', + '"Apple Color Emoji"', + '"Segoe UI Emoji"', + '"Segoe UI Symbol"', + ].join(','), + }, + palette: { + primary: { + light: '#5c67a3', + main: '#0bc4ff', + dark: '#2e355b', + contrastText: '#fff', }, - palette: { - primary: { - light: '#5c67a3', - main: '#0bc4ff', - dark: '#2e355b', - contrastText: '#fff', - }, - secondary: { - light: '#ff79b0', - main: '#ff4081', - dark: '#c60055', - contrastText: '#000', - }, - openTitle: '#3f4771', - protectedTitle: pink['400'], - customColorBlue: '#0bc4ff', - background: { - default: '#eff6f9', - paper: '#fff', - }, - type: 'light' - } -}) -export default theme + secondary: { + light: '#ff79b0', + main: '#ff4081', + dark: '#c60055', + contrastText: '#000', + }, + openTitle: '#3f4771', + customColorBlue: '#0bc4ff', + customColorDarkBlue: '#022537', + background: { + default: '#eff6f9', + }, + }, +}); + +export default theme;

jy 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 literal 0 HcmV?d00001 diff --git a/sampleData/SampleData_DIN02222024.xlsx b/sampleData/SampleData_DIN02222024.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..cd1cbf78b3e1e3678126882ab8ebdfabf157344a GIT binary patch literal 174633 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