From 9defc7e218a9bd3cb3196a202347983071f02fb4 Mon Sep 17 00:00:00 2001 From: Gabriela Wongchuig Date: Thu, 9 Feb 2023 12:51:38 -0500 Subject: [PATCH 1/5] se hizo un espacio de prueba --- lab-notes/.gitignore | 24 ++++++++++++ lab-notes/index.html | 13 +++++++ lab-notes/package.json | 21 +++++++++++ lab-notes/public/vite.svg | 1 + lab-notes/src/App.css | 43 +++++++++++++++++++++ lab-notes/src/App.jsx | 34 +++++++++++++++++ lab-notes/src/assets/react.svg | 1 + lab-notes/src/index.css | 69 ++++++++++++++++++++++++++++++++++ lab-notes/src/main.jsx | 10 +++++ lab-notes/vite.config.js | 7 ++++ 10 files changed, 223 insertions(+) create mode 100644 lab-notes/.gitignore create mode 100644 lab-notes/index.html create mode 100644 lab-notes/package.json create mode 100644 lab-notes/public/vite.svg create mode 100644 lab-notes/src/App.css create mode 100644 lab-notes/src/App.jsx create mode 100644 lab-notes/src/assets/react.svg create mode 100644 lab-notes/src/index.css create mode 100644 lab-notes/src/main.jsx create mode 100644 lab-notes/vite.config.js diff --git a/lab-notes/.gitignore b/lab-notes/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/lab-notes/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/lab-notes/index.html b/lab-notes/index.html new file mode 100644 index 00000000..79c47019 --- /dev/null +++ b/lab-notes/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/lab-notes/package.json b/lab-notes/package.json new file mode 100644 index 00000000..aadc0c58 --- /dev/null +++ b/lab-notes/package.json @@ -0,0 +1,21 @@ +{ + "name": "lab-notes", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@vitejs/plugin-react": "^3.1.0", + "vite": "^4.1.0" + } +} \ No newline at end of file diff --git a/lab-notes/public/vite.svg b/lab-notes/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/lab-notes/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lab-notes/src/App.css b/lab-notes/src/App.css new file mode 100644 index 00000000..da788834 --- /dev/null +++ b/lab-notes/src/App.css @@ -0,0 +1,43 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} + diff --git a/lab-notes/src/App.jsx b/lab-notes/src/App.jsx new file mode 100644 index 00000000..ef0adc0d --- /dev/null +++ b/lab-notes/src/App.jsx @@ -0,0 +1,34 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( +
+
+ + Vite logo + + + React logo + +
+

Vite + React

+
+ +

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

+
+

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

+
+ ) +} + +export default App diff --git a/lab-notes/src/assets/react.svg b/lab-notes/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/lab-notes/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lab-notes/src/index.css b/lab-notes/src/index.css new file mode 100644 index 00000000..2c3fac68 --- /dev/null +++ b/lab-notes/src/index.css @@ -0,0 +1,69 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/lab-notes/src/main.jsx b/lab-notes/src/main.jsx new file mode 100644 index 00000000..5cc59919 --- /dev/null +++ b/lab-notes/src/main.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')).render( + + + , +) diff --git a/lab-notes/vite.config.js b/lab-notes/vite.config.js new file mode 100644 index 00000000..5a33944a --- /dev/null +++ b/lab-notes/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 84110f337b0105eb6e1f4cb2e3a76886411e7f65 Mon Sep 17 00:00:00 2001 From: Gabriela Wongchuig Date: Thu, 9 Feb 2023 12:57:38 -0500 Subject: [PATCH 2/5] se hace un espacion de prueba --- lab-notes/src/App.css | 1 + 1 file changed, 1 insertion(+) diff --git a/lab-notes/src/App.css b/lab-notes/src/App.css index da788834..b01b766e 100644 --- a/lab-notes/src/App.css +++ b/lab-notes/src/App.css @@ -39,5 +39,6 @@ .read-the-docs { color: #888; + } From 1dea00e3decf1fbbc946024c584a28a8d4b59712 Mon Sep 17 00:00:00 2001 From: Gabriela Wongchuig Date: Tue, 14 Feb 2023 14:09:43 -0500 Subject: [PATCH 3/5] componente Home y HomeItems --- lab-notes/.firebase/hosting.c3Jj.cache | 7 + lab-notes/.firebaserc | 5 + lab-notes/database.rules.json | 6 + lab-notes/firebase.json | 74 + lab-notes/firestore.indexes.json | 4 + lab-notes/firestore.rules | 9 + lab-notes/functions/.eslintrc.js | 14 + lab-notes/functions/.gitignore | 1 + lab-notes/functions/index.js | 9 + lab-notes/functions/package-lock.json | 3307 ++++++++++++++++++++++++ lab-notes/functions/package.json | 26 + lab-notes/package-lock.json | 2378 +++++++++++++++++ lab-notes/package.json | 6 +- lab-notes/remoteconfig.template.json | 1 + lab-notes/src/App.css | 42 - lab-notes/src/App.jsx | 30 +- lab-notes/src/Components/Home.jsx | 30 + lab-notes/src/Components/HomeItems.jsx | 16 + lab-notes/src/Components/Login.jsx | 0 lab-notes/src/Components/Register.jsx | 0 lab-notes/src/dataFirebase.js | 21 + lab-notes/src/firebase.js | 0 lab-notes/src/index.html | 89 + lab-notes/src/main.jsx | 16 +- lab-notes/storage.rules | 8 + 25 files changed, 6028 insertions(+), 71 deletions(-) create mode 100644 lab-notes/.firebase/hosting.c3Jj.cache create mode 100644 lab-notes/.firebaserc create mode 100644 lab-notes/database.rules.json create mode 100644 lab-notes/firebase.json create mode 100644 lab-notes/firestore.indexes.json create mode 100644 lab-notes/firestore.rules create mode 100644 lab-notes/functions/.eslintrc.js create mode 100644 lab-notes/functions/.gitignore create mode 100644 lab-notes/functions/index.js create mode 100644 lab-notes/functions/package-lock.json create mode 100644 lab-notes/functions/package.json create mode 100644 lab-notes/package-lock.json create mode 100644 lab-notes/remoteconfig.template.json create mode 100644 lab-notes/src/Components/Home.jsx create mode 100644 lab-notes/src/Components/HomeItems.jsx create mode 100644 lab-notes/src/Components/Login.jsx create mode 100644 lab-notes/src/Components/Register.jsx create mode 100644 lab-notes/src/dataFirebase.js create mode 100644 lab-notes/src/firebase.js create mode 100644 lab-notes/src/index.html create mode 100644 lab-notes/storage.rules diff --git a/lab-notes/.firebase/hosting.c3Jj.cache b/lab-notes/.firebase/hosting.c3Jj.cache new file mode 100644 index 00000000..63c09036 --- /dev/null +++ b/lab-notes/.firebase/hosting.c3Jj.cache @@ -0,0 +1,7 @@ +App.css,1675965570860,686bb85d20df67f3c0384c485b790aa66196fd1f5a9108a9a624259e9fe66fc8 +main.jsx,1675882368346,e4f7fc4b590475eb92592f534d9b39ffd909657a78d11cb6ca02b5d8f6742168 +index.html,1675984138380,402d1d5b7329f5f91f1edfbab26ab9cfd5fa49fab78e5c38330267b0244c7b8b +App.jsx,1675882368343,7c55428b13a53e68f5f505423bb5674e9d3aee6f07b525946e29b3625549e0ea +index.css,1675882368345,81d690787ff93f0c8f46a39a80c69607f0ead485ed924ba8abfb4ffbef9edaf1 +assets/react.svg,1675882368344,96fa57a7a9fa9c1e3db657f96bbe831a14f8bdb17eef3a63d243ce523394a656 +firebase.js,1675980097511,e3d49b9381b1c6b34aa715aad5210a088a848bd2fe23bffcc376a8628f63aa71 diff --git a/lab-notes/.firebaserc b/lab-notes/.firebaserc new file mode 100644 index 00000000..831cb550 --- /dev/null +++ b/lab-notes/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "lab-notes-ea2a9" + } +} diff --git a/lab-notes/database.rules.json b/lab-notes/database.rules.json new file mode 100644 index 00000000..c0aa595d --- /dev/null +++ b/lab-notes/database.rules.json @@ -0,0 +1,6 @@ +{ + "rules": { + ".read": "auth != null", + ".write": "auth != null" + } +} \ No newline at end of file diff --git a/lab-notes/firebase.json b/lab-notes/firebase.json new file mode 100644 index 00000000..6ed0ac59 --- /dev/null +++ b/lab-notes/firebase.json @@ -0,0 +1,74 @@ +{ + "database": { + "rules": "database.rules.json" + }, + "firestore": { + "rules": "firestore.rules", + "indexes": "firestore.indexes.json" + }, + "functions": [ + { + "source": "functions", + "codebase": "default", + "ignore": [ + "node_modules", + ".git", + "firebase-debug.log", + "firebase-debug.*.log" + ], + "predeploy": [ + "npm --prefix \"$RESOURCE_DIR\" run lint" + ] + } + ], + "hosting": { + "public": "src", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + "storage": { + "rules": "storage.rules" + }, + "emulators": { + "auth": { + "port": 9099 + }, + "functions": { + "port": 5001 + }, + "firestore": { + "port": 8080 + }, + "database": { + "port": 9000 + }, + "hosting": { + "port": 5000 + }, + "pubsub": { + "port": 8085 + }, + "storage": { + "port": 9199 + }, + "eventarc": { + "port": 9299 + }, + "ui": { + "enabled": false + }, + "singleProjectMode": true + }, + "remoteconfig": { + "template": "remoteconfig.template.json" + } +} diff --git a/lab-notes/firestore.indexes.json b/lab-notes/firestore.indexes.json new file mode 100644 index 00000000..415027e5 --- /dev/null +++ b/lab-notes/firestore.indexes.json @@ -0,0 +1,4 @@ +{ + "indexes": [], + "fieldOverrides": [] +} diff --git a/lab-notes/firestore.rules b/lab-notes/firestore.rules new file mode 100644 index 00000000..1a3e5e48 --- /dev/null +++ b/lab-notes/firestore.rules @@ -0,0 +1,9 @@ +rules_version = '2'; +service cloud.firestore { + match /databases/{database}/documents { + match /{document=**} { + allow read, write: if + request.time < timestamp.date(2023, 3, 11); + } + } +} \ No newline at end of file diff --git a/lab-notes/functions/.eslintrc.js b/lab-notes/functions/.eslintrc.js new file mode 100644 index 00000000..973030b2 --- /dev/null +++ b/lab-notes/functions/.eslintrc.js @@ -0,0 +1,14 @@ +module.exports = { + root: true, + env: { + es6: true, + node: true, + }, + extends: [ + "eslint:recommended", + "google", + ], + rules: { + quotes: ["error", "double"], + }, +}; diff --git a/lab-notes/functions/.gitignore b/lab-notes/functions/.gitignore new file mode 100644 index 00000000..40b878db --- /dev/null +++ b/lab-notes/functions/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/lab-notes/functions/index.js b/lab-notes/functions/index.js new file mode 100644 index 00000000..081873b3 --- /dev/null +++ b/lab-notes/functions/index.js @@ -0,0 +1,9 @@ +const functions = require("firebase-functions"); + +// // Create and Deploy Your First Cloud Functions +// // https://firebase.google.com/docs/functions/write-firebase-functions +// +// exports.helloWorld = functions.https.onRequest((request, response) => { +// functions.logger.info("Hello logs!", {structuredData: true}); +// response.send("Hello from Firebase!"); +// }); diff --git a/lab-notes/functions/package-lock.json b/lab-notes/functions/package-lock.json new file mode 100644 index 00000000..56381c92 --- /dev/null +++ b/lab-notes/functions/package-lock.json @@ -0,0 +1,3307 @@ +{ + "name": "functions", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "functions", + "dependencies": { + "firebase-admin": "^10.0.2", + "firebase-functions": "^3.18.0" + }, + "devDependencies": { + "eslint": "^8.9.0", + "eslint-config-google": "^0.14.0", + "firebase-functions-test": "^0.2.0" + }, + "engines": { + "node": "16" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@fastify/busboy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz", + "integrity": "sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==", + "dependencies": { + "text-decoding": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==", + "peer": true + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.7.tgz", + "integrity": "sha512-yA/dTveGGPcc85JP8ZE/KZqfGQyQTBCV10THdI8HTlP1GDvNrhr//J5jAt58MlsCOaO3XmC4DqScPBbtIsR/EA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.21.tgz", + "integrity": "sha512-12MMQ/ulfygKpEJpseYMR0HunJdlsLrwx2XcEs40M18jocy2+spyzHHEwegN3x/2/BLFBjR5247Etmz0G97Qpg==", + "dependencies": { + "@firebase/util": "1.7.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.13.10.tgz", + "integrity": "sha512-KRucuzZ7ZHQsRdGEmhxId5jyM2yKsjsQWF9yv0dIhlxYg0D8rCVDZc/waoPKA5oV3/SEIoptF8F7R1Vfe7BCQA==", + "dependencies": { + "@firebase/auth-interop-types": "0.1.7", + "@firebase/component": "0.5.21", + "@firebase/logger": "0.3.4", + "@firebase/util": "1.7.3", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.2.10.tgz", + "integrity": "sha512-fK+IgUUqVKcWK/gltzDU+B1xauCOfY6vulO8lxoNTkcCGlSxuTtwsdqjGkFmgFRMYjXFWWJ6iFcJ/vXahzwCtA==", + "dependencies": { + "@firebase/component": "0.5.21", + "@firebase/database": "0.13.10", + "@firebase/database-types": "0.9.17", + "@firebase/logger": "0.3.4", + "@firebase/util": "1.7.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.9.17", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.17.tgz", + "integrity": "sha512-YQm2tCZyxNtEnlS5qo5gd2PAYgKCy69tUKwioGhApCFThW+mIgZs7IeYeJo2M51i4LCixYUl+CvnOyAnb/c3XA==", + "dependencies": { + "@firebase/app-types": "0.8.1", + "@firebase/util": "1.7.3" + } + }, + "node_modules/@firebase/database-types/node_modules/@firebase/app-types": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.8.1.tgz", + "integrity": "sha512-p75Ow3QhB82kpMzmOntv866wH9eZ3b4+QbUY+8/DA5Zzdf1c8Nsk8B7kbFpzJt4wwHMdy5LTF5YUnoTc1JiWkw==" + }, + "node_modules/@firebase/logger": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.4.tgz", + "integrity": "sha512-hlFglGRgZEwoyClZcGLx/Wd+zoLfGmbDkFx56mQt/jJ0XMbfPqwId1kiPl0zgdWZX+D8iH+gT6GuLPFsJWgiGw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/util": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.7.3.tgz", + "integrity": "sha512-wxNqWbqokF551WrJ9BIFouU/V5SL1oYCGx1oudcirdhadnQRFH5v1sjgGL7cUV/UsekSycygphdrF2lxBxOYKg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@google-cloud/firestore": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.15.1.tgz", + "integrity": "sha512-2PWsCkEF1W02QbghSeRsNdYKN1qavrHBP3m72gPDMHQSYrGULOaTi7fSJquQmAtc4iPVB2/x6h80rdLHTATQtA==", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^2.24.1", + "protobufjs": "^6.8.6" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@google-cloud/paginator": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", + "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", + "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/storage": { + "version": "5.20.5", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.20.5.tgz", + "integrity": "sha512-lOs/dCyveVF8TkVFnFSF7IGd0CJrTm91qiK6JLu+Z8qiT+7Ag0RyVhxZIWkhiACqwABo7kSHDm8FdH8p2wxSSw==", + "optional": true, + "dependencies": { + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "abort-controller": "^3.0.0", + "arrify": "^2.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "configstore": "^5.0.0", + "duplexify": "^4.0.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "gaxios": "^4.0.0", + "google-auth-library": "^7.14.1", + "hash-stream-validation": "^0.2.2", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "pumpify": "^2.0.0", + "retry-request": "^4.2.2", + "stream-events": "^1.0.4", + "teeny-request": "^7.1.3", + "uuid": "^8.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.12.tgz", + "integrity": "sha512-JmvQ03OTSpVd9JTlj/K3IWHSz4Gk/JMLUTtW7Zb0KvO1LcOYGATh5cNuRYzCAeDR3O8wq+q8FZe97eO9MBrkUw==", + "optional": true, + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", + "optional": true, + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", + "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==", + "optional": true + }, + "node_modules/@grpc/proto-loader": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", + "optional": true, + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.11.3", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "optional": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "optional": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "optional": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "optional": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "optional": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "optional": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "optional": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "optional": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "optional": true + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "optional": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", + "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==", + "dev": true + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "optional": true + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "node_modules/@types/node": { + "version": "18.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", + "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "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==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/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==", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "optional": true, + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/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" + } + ], + "optional": true + }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/body-parser": { + "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.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/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/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "optional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "devOptional": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "optional": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "optional": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "optional": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "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==" + }, + "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==", + "optional": true + }, + "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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "optional": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "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, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "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==", + "devOptional": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==", + "optional": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firebase-admin": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-10.3.0.tgz", + "integrity": "sha512-A0wgMLEjyVyUE+heyMJYqHRkPVjpebhOYsa47RHdrTM4ltApcx8Tn86sUmjqxlfh09gNnILAm7a8q5+FmgBYpg==", + "dependencies": { + "@fastify/busboy": "^1.1.0", + "@firebase/database-compat": "^0.2.0", + "@firebase/database-types": "^0.9.7", + "@types/node": ">=12.12.47", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^2.0.2", + "node-forge": "^1.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "optionalDependencies": { + "@google-cloud/firestore": "^4.15.1", + "@google-cloud/storage": "^5.18.3" + } + }, + "node_modules/firebase-functions": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.24.1.tgz", + "integrity": "sha512-GYhoyOV0864HFMU1h/JNBXYNmDk2MlbvU7VO/5qliHX6u/6vhSjTJjlyCG4leDEI8ew8IvmkIC5QquQ1U8hAuA==", + "dependencies": { + "@types/cors": "^2.8.5", + "@types/express": "4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "lodash": "^4.17.14", + "node-fetch": "^2.6.7" + }, + "bin": { + "firebase-functions": "lib/bin/firebase-functions.js" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + }, + "peerDependencies": { + "firebase-admin": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0" + } + }, + "node_modules/firebase-functions-test": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.2.3.tgz", + "integrity": "sha512-zYX0QTm53wCazuej7O0xqbHl90r/v1PTXt/hwa0jo1YF8nDM+iBKnLDlkIoW66MDd0R6aGg4BvKzTTdJpvigUA==", + "dev": true, + "dependencies": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "firebase-admin": ">=6.0.0", + "firebase-functions": ">=2.0.0" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "optional": true + }, + "node_modules/gaxios": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "optional": true, + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "optional": true, + "dependencies": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "optional": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "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, + "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, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/google-auth-library": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", + "integrity": "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-gax": { + "version": "2.30.5", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.30.5.tgz", + "integrity": "sha512-Jey13YrAN2hfpozHzbtrwEfEHdStJh1GwaQ2+Akh1k0Tv/EuNVSuBtHZoKSBm5wBMvNsxTsEIZ/152NrYyZgxQ==", + "optional": true, + "dependencies": { + "@grpc/grpc-js": "~1.6.0", + "@grpc/proto-loader": "^0.6.12", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^7.14.0", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^0.1.8", + "protobufjs": "6.11.3", + "retry-request": "^4.0.0" + }, + "bin": { + "compileProtos": "build/tools/compileProtos.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-p12-pem": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", + "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", + "optional": true, + "dependencies": { + "node-forge": "^1.3.1" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "optional": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/gtoken": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", + "optional": true, + "dependencies": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.1.3", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-stream-validation": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", + "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==", + "optional": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "optional": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "optional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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, + "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==", + "devOptional": true, + "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, + "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==" + }, + "node_modules/ipaddr.js": { + "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==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "optional": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jose": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.6.tgz", + "integrity": "sha512-FVoPY7SflDodE4lknJmbAHSUjLCzE2H1F6MS0RYKMQ8SR+lNccpMf8R4eqkNYyyUjR5qZReOzZo5C5YiHOCjjg==", + "dependencies": { + "@panva/asn1.js": "^1.0.0" + }, + "engines": { + "node": ">=10.13.0 < 13 || >=13.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/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==", + "optional": true, + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "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": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/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/jsonwebtoken/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/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "optional": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwks-rsa": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.1.5.tgz", + "integrity": "sha512-IODtn1SwEm7n6GQZnQLY0oxKDrMh7n/jRH1MzE8mlxWMrh2NnMyOsXTebu8vJ1qCpmuTJcL4DdiE0E4h8jnwsA==", + "dependencies": { + "@types/express": "^4.17.14", + "@types/jsonwebtoken": "^8.5.9", + "debug": "^4.3.4", + "jose": "^2.0.6", + "limiter": "^1.1.5", + "lru-memoizer": "^2.1.4" + }, + "engines": { + "node": ">=10 < 13 || >=14" + } + }, + "node_modules/jwks-rsa/node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "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==", + "optional": true, + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.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, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "optional": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "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.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "optional": true + }, + "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==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-memoizer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz", + "integrity": "sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==", + "dependencies": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "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==", + "optional": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "optional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "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==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "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-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "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==", + "devOptional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proto3-json-serializer": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.9.tgz", + "integrity": "sha512-A60IisqvnuI45qNRygJjrnNjX2TMdQGMY+57tR3nul3ZgO2zXkR9OGR8AXxJhkqx84g0FTnrfi3D5fWMSdANdQ==", + "optional": true, + "dependencies": { + "protobufjs": "^6.11.2" + } + }, + "node_modules/protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/proxy-addr": { + "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==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "optional": true, + "dependencies": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/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==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", + "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", + "optional": true, + "dependencies": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "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/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==", + "optional": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "optional": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "optional": true + }, + "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==", + "optional": true, + "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==", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "devOptional": true, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "optional": true + }, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/teeny-request": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.2.0.tgz", + "integrity": "sha512-SyY0pek1zWsi0LRVAALem+avzMLc33MKW/JLLakdP4s9+D7+jHcy5x6P+h94g2QNZsAqQNfX5lsbd3WSeJXrrw==", + "optional": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-decoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz", + "integrity": "sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "optional": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "optional": true + }, + "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==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "optional": true, + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "devOptional": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "optional": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/lab-notes/functions/package.json b/lab-notes/functions/package.json new file mode 100644 index 00000000..70089faf --- /dev/null +++ b/lab-notes/functions/package.json @@ -0,0 +1,26 @@ +{ + "name": "functions", + "description": "Cloud Functions for Firebase", + "scripts": { + "lint": "eslint .", + "serve": "firebase emulators:start --only functions", + "shell": "firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "engines": { + "node": "16" + }, + "main": "index.js", + "dependencies": { + "firebase-admin": "^10.0.2", + "firebase-functions": "^3.18.0" + }, + "devDependencies": { + "eslint": "^8.9.0", + "eslint-config-google": "^0.14.0", + "firebase-functions-test": "^0.2.0" + }, + "private": true +} diff --git a/lab-notes/package-lock.json b/lab-notes/package-lock.json new file mode 100644 index 00000000..ab5f45ff --- /dev/null +++ b/lab-notes/package-lock.json @@ -0,0 +1,2378 @@ +{ + "name": "lab-notes", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lab-notes", + "version": "0.0.0", + "dependencies": { + "firebase": "^9.17.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.8.1" + }, + "devDependencies": { + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@vitejs/plugin-react": "^3.1.0", + "vite": "^4.1.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "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/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.3.tgz", + "integrity": "sha512-XdYHBi6RvHYVAHGyLxXX0uRPwZmGeqw1JuWS1rMEeRF/jvbxnrL81kcFAHZVRkEvG9bXAJgL2fX9wmDo3e622w==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/installations": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.3.tgz", + "integrity": "sha512-HmvbB4GMgh8AUlIDIo/OuFENLCGRXxMvtOueK+m8+DcfqBvG+mkii0Mi9ovo0TnMM62cy3oBYG7PHdjIQNLSLA==", + "dependencies": { + "@firebase/analytics": "0.9.3", + "@firebase/analytics-types": "0.8.0", + "@firebase/component": "0.6.3", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", + "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + }, + "node_modules/@firebase/app": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.3.tgz", + "integrity": "sha512-G79JUceVDaHRZ4WkA11GyVldVXhdyRJRwWVQFFvAAVfQJLvy2TA6lQjeUn28F6FmeUWxDGwPC30bxCRWq7Op8Q==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "idb": "7.0.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.3.tgz", + "integrity": "sha512-T9f9ceFLs7x4D2T6whu5a6j7B3qPuYHiZHZxW6DkMh/FoMmRA4/q/HVyu01i9+LyJJx2Xdo6eCcj6ofs9YZjqA==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/app-check-compat": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.3.tgz", + "integrity": "sha512-25AQ4W7WUL8OWas40GsABuNU622Dm1ojbfeZ03uKtLj5Af7FerJ25u7zkgm+11pc6rpr5v8E5oxEG9vmNRndEA==", + "dependencies": { + "@firebase/app-check": "0.6.3", + "@firebase/app-check-types": "0.5.0", + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.2.0.tgz", + "integrity": "sha512-+3PQIeX6/eiVK+x/yg8r6xTNR97fN7MahFDm+jiQmDjcyvSefoGuTTNQuuMScGyx3vYUBeZn+Cp9kC0yY/9uxQ==" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", + "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.3.tgz", + "integrity": "sha512-sX6rD1KFX6K2CuCnQvc9jZLOgAFZ+sv2jKKahIl4SbTM561D682B8n4Jtx/SgDrvcTVTdb05g4NhZOws9hxYxA==", + "dependencies": { + "@firebase/app": "0.9.3", + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "node_modules/@firebase/auth": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.21.3.tgz", + "integrity": "sha512-HPbcwgArLBVTowFcn4qaQr6LCx7BidI9yrQ5MRbQNv4PsgK/3UGpzCYaNPPbvgr9fe+0jNdJO+uC0+dk4xIzCQ==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/auth-compat": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.3.3.tgz", + "integrity": "sha512-9asUuGtkzUVELH3LYXdiom1nVVV9bqEPqzHohanoofHL/oVTNcHZ4AQ5CXjNATfb6c1WH32U+nEuPiYg26UUIw==", + "dependencies": { + "@firebase/auth": "0.21.3", + "@firebase/auth-types": "0.12.0", + "@firebase/component": "0.6.3", + "@firebase/util": "1.9.2", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", + "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", + "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.3.tgz", + "integrity": "sha512-rnhq5SOsB5nuJphZF50iwqnBiuuyg9kdnlUn1rBrKfu7/cUVJZF5IG1cWrL0rXXyiZW1WBI/J2pmTvVO8dStGQ==", + "dependencies": { + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.3.tgz", + "integrity": "sha512-J76W6N7JiVkLaAtPyjaGRkrsIu9pi6iZikuGGtGjqvV19vkn7oiL4Hbo5uTYCMd4waTUWoL9iI08eX184W+5GQ==", + "dependencies": { + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.3.tgz", + "integrity": "sha512-r+L9jTbvsnb7sD+xz6UKU39DgBWqB2pyjzPNdBeriGC9Ssa2MAZe0bIqjCQg51RRXYc/aa/zK1Q2/4uesZeVgQ==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/database": "0.14.3", + "@firebase/database-types": "0.10.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.3.tgz", + "integrity": "sha512-Hu34CDhHYZsd2eielr0jeaWrTJk8Hz0nd7WsnYDnXtQX4i49ppgPesUzPdXVBdIBLJmT0ZZRvT7qWHknkOT+zg==", + "dependencies": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.9.2" + } + }, + "node_modules/@firebase/firestore": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.8.3.tgz", + "integrity": "sha512-4xR3Mqj95bxHg3hZnz0O+LQrHkjq+siT2y+B9da6u68qJ8bzzT42JaFgd1vifhbBpVbBzpFaS2RuCq2E+kGv9g==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "@firebase/webchannel-wrapper": "0.9.0", + "@grpc/grpc-js": "~1.7.0", + "@grpc/proto-loader": "^0.6.13", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/firestore-compat": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.3.tgz", + "integrity": "sha512-fMTsSC0s2cF5w2+JoB0dWD/o4kXtLrUCPGnZPuz4S0bqTN2t0vHr3gdAsQLtnadgwB78ACtinYmf4Udwx7TzDg==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/firestore": "3.8.3", + "@firebase/firestore-types": "2.5.1", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz", + "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.9.3.tgz", + "integrity": "sha512-tPJgYY2ROQSYuzvgxZRoHeDj+Ic07/bWHwaftgTriawtupmFOkt5iikuhJSJUhaOpFh9TB335OvCXJw1N+BIlQ==", + "dependencies": { + "@firebase/app-check-interop-types": "0.2.0", + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.3", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.2", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/functions-compat": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.3.tgz", + "integrity": "sha512-UIAJ2gzNq0p/61cXqkpi9DnlQt0hdlGqgmL5an7KuJth2Iv5uGpKg/+OapAZxPuiUNZgTEyZDB7kNBHvnxWq5w==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/functions": "0.9.3", + "@firebase/functions-types": "0.6.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", + "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" + }, + "node_modules/@firebase/installations": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.3.tgz", + "integrity": "sha512-20JFWm+tweNoRjRbz8/Y4I7O5pUJGZsFKCkLl1qNxfNYECSfrZUuozIDJDZC/MeVn5+kB9CwjThDlgQEPrfLdg==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/util": "1.9.2", + "idb": "7.0.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/installations-compat": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.3.tgz", + "integrity": "sha512-K9rKM/ym06lkpaKz7bMLxzHK/HEk65XfLJBV+dJkIuWeO0EqqC9VFGrpWAo0QmgC4BqbU58T6VBbzoJjb0gaFw==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/installations": "0.6.3", + "@firebase/installations-types": "0.5.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", + "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.3.tgz", + "integrity": "sha512-a3ZKcGDiV2sKmQDB56PpgL1yjFxXCtff2+v1grnAZZ4GnfNQ74t2EHCbmgY7xRX7ThzMqug54oxhuk4ur0MIoA==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/installations": "0.6.3", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.2", + "idb": "7.0.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.3.tgz", + "integrity": "sha512-MmuuohXV2YRzIoJmDngI5qqO/cF2q7SdAaw7k4r61W3ReJy7x4/rtqrIvwNVhM6X/X8NFGBbsYKsCfRHWjFdkg==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/messaging": "0.12.3", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", + "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" + }, + "node_modules/@firebase/performance": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.3.tgz", + "integrity": "sha512-NQmQN6Ete7i9jz1mzULJZEGvsOmwwdUy6vpqnhUxSFMYPnlBKjX+yypCUUJDDN5zff5+kfwSD1qCyUAaS0xWUA==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/installations": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/performance-compat": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.3.tgz", + "integrity": "sha512-I3rqZsIhauXn4iApfj1ttKQdlti/r8OZBG4YK10vxKSdhAzTIDWDKEsdoCXvvKLwplcMv36sM3WPAPGQLqY5MQ==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/performance": "0.6.3", + "@firebase/performance-types": "0.2.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", + "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.3.tgz", + "integrity": "sha512-Q6d4jBWZoNt6SYq87bjtDGUHFkKwAmGnNjWyRjl14AZqE1ilgd9NZHmutharlYJ3LvxMsid80HdK5SgGEpIPfg==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/installations": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.3.tgz", + "integrity": "sha512-w/ZL03YgYaXq03xIRyJ5oPhXZi6iDsY/v0J9Y7I7SqxCYytEnHVrL9nvBqd9R94y5LRAVNPCLokJeeizaUz4VQ==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/logger": "0.4.0", + "@firebase/remote-config": "0.4.3", + "@firebase/remote-config-types": "0.3.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", + "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" + }, + "node_modules/@firebase/storage": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.11.1.tgz", + "integrity": "sha512-Xv8EG2j52ugF2xayBz26U9J0VBXHXPMVxSN+ph3R3BSoHxvMLaPu+qUYKHavSt+zbcgPH2GyBhrCdJK6SaDFPA==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/util": "1.9.2", + "node-fetch": "2.6.7", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/storage-compat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.1.tgz", + "integrity": "sha512-6HaTvWsT5Yy3j4UpCZpMcFUYEkJ2XYWukdyTl02u6VjSBRLvkhOXPzEfMvgVWqhnF/rYVfPdjrZ904wk5OxtmQ==", + "dependencies": { + "@firebase/component": "0.6.3", + "@firebase/storage": "0.11.1", + "@firebase/storage-types": "0.8.0", + "@firebase/util": "1.9.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz", + "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/util": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.2.tgz", + "integrity": "sha512-9l0uMGPGw3GsoD5khjMmYCCcMq/OR/OOSViiWMN+s2Q0pxM+fYzrii1H+r8qC/uoMjSVXomjLZt0vZIyryCqtQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", + "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", + "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", + "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + }, + "node_modules/@grpc/proto-loader": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.11.3", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "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, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@remix-run/router": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", + "integrity": "sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/node": { + "version": "18.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", + "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", + "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", + "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.12", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.27.0", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.1.0-beta.0" + } + }, + "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==", + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001451", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz", + "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "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 + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.292", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.292.tgz", + "integrity": "sha512-ESWOSyJy5odDlE8wvh5NNAMORv4r6assPwIPGHEMWrWD0SONXcG/xT+9aD9CQyeRwyYDPo6dJT4Bbeg5uevVQQ==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/firebase": { + "version": "9.17.1", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.17.1.tgz", + "integrity": "sha512-MSZaTRaaRLgDFLqoEnoPYK8zkLwQNvYeLZ3YSKdcQxG8hDifNO22ywS1cSA1ZCGHlQeOsDtfDwBejKcANf/RQw==", + "dependencies": { + "@firebase/analytics": "0.9.3", + "@firebase/analytics-compat": "0.2.3", + "@firebase/app": "0.9.3", + "@firebase/app-check": "0.6.3", + "@firebase/app-check-compat": "0.3.3", + "@firebase/app-compat": "0.2.3", + "@firebase/app-types": "0.9.0", + "@firebase/auth": "0.21.3", + "@firebase/auth-compat": "0.3.3", + "@firebase/database": "0.14.3", + "@firebase/database-compat": "0.3.3", + "@firebase/firestore": "3.8.3", + "@firebase/firestore-compat": "0.3.3", + "@firebase/functions": "0.9.3", + "@firebase/functions-compat": "0.3.3", + "@firebase/installations": "0.6.3", + "@firebase/installations-compat": "0.2.3", + "@firebase/messaging": "0.12.3", + "@firebase/messaging-compat": "0.2.3", + "@firebase/performance": "0.6.3", + "@firebase/performance-compat": "0.2.3", + "@firebase/remote-config": "0.4.3", + "@firebase/remote-config-compat": "0.2.3", + "@firebase/storage": "0.11.1", + "@firebase/storage-compat": "0.3.1", + "@firebase/util": "1.9.2" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "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==", + "engines": { + "node": "6.* || 8.* || >= 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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/idb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", + "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz", + "integrity": "sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==", + "dependencies": { + "@remix-run/router": "1.3.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.1.tgz", + "integrity": "sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==", + "dependencies": { + "@remix-run/router": "1.3.2", + "react-router": "6.8.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.14.0.tgz", + "integrity": "sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz", + "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.14", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=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==", + "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==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + } + } +} diff --git a/lab-notes/package.json b/lab-notes/package.json index aadc0c58..660ecc67 100644 --- a/lab-notes/package.json +++ b/lab-notes/package.json @@ -9,8 +9,10 @@ "preview": "vite preview" }, "dependencies": { + "firebase": "^9.17.1", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "^6.8.1" }, "devDependencies": { "@types/react": "^18.0.27", @@ -18,4 +20,4 @@ "@vitejs/plugin-react": "^3.1.0", "vite": "^4.1.0" } -} \ No newline at end of file +} diff --git a/lab-notes/remoteconfig.template.json b/lab-notes/remoteconfig.template.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/lab-notes/remoteconfig.template.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/lab-notes/src/App.css b/lab-notes/src/App.css index b01b766e..139597f9 100644 --- a/lab-notes/src/App.css +++ b/lab-notes/src/App.css @@ -1,44 +1,2 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; - -} diff --git a/lab-notes/src/App.jsx b/lab-notes/src/App.jsx index ef0adc0d..8d2b8c28 100644 --- a/lab-notes/src/App.jsx +++ b/lab-notes/src/App.jsx @@ -1,32 +1,16 @@ import { useState } from 'react' import reactLogo from './assets/react.svg' import './App.css' +import Home from './Components/Home.jsx' +import { + Routes, + Route, +} from "react-router-dom"; function App() { - const [count, setCount] = useState(0) - return ( -
-
- - Vite logo - - - React logo - -
-

Vite + React

-
- -

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

-
-

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

+
+
) } diff --git a/lab-notes/src/Components/Home.jsx b/lab-notes/src/Components/Home.jsx new file mode 100644 index 00000000..b6cb7b69 --- /dev/null +++ b/lab-notes/src/Components/Home.jsx @@ -0,0 +1,30 @@ +import HomeItems from "./HomeItems"; + + +function Home() { + return ( + <>
DAILY NOTES
+
    +

    + Bienvenida! en Daily notes podrás llevar un control de todas las actividades del día a día,

    + si ya estas lista para organizar tu vida! Registrate, ingresa y comencemos!

    + + +
+

Si aún no te has registrado, dale click aquí:

+
    + +
+
+ ) +}; +export default Home; \ No newline at end of file diff --git a/lab-notes/src/Components/HomeItems.jsx b/lab-notes/src/Components/HomeItems.jsx new file mode 100644 index 00000000..e81c38e0 --- /dev/null +++ b/lab-notes/src/Components/HomeItems.jsx @@ -0,0 +1,16 @@ +import { Link } from "react-router-dom"; + +function HomeItems(props) { + return ( +
  • + + {props.text} + +
  • + ) +} + + + + +export default HomeItems \ No newline at end of file diff --git a/lab-notes/src/Components/Login.jsx b/lab-notes/src/Components/Login.jsx new file mode 100644 index 00000000..e69de29b diff --git a/lab-notes/src/Components/Register.jsx b/lab-notes/src/Components/Register.jsx new file mode 100644 index 00000000..e69de29b diff --git a/lab-notes/src/dataFirebase.js b/lab-notes/src/dataFirebase.js new file mode 100644 index 00000000..3dfc3c33 --- /dev/null +++ b/lab-notes/src/dataFirebase.js @@ -0,0 +1,21 @@ +// Import the functions you need from the SDKs you need +import { initializeApp } from "firebase/app"; +import { getAnalytics } from "firebase/analytics"; +// TODO: Add SDKs for Firebase products that you want to use +// https://firebase.google.com/docs/web/setup#available-libraries + +// Your web app's Firebase configuration +// For Firebase JS SDK v7.20.0 and later, measurementId is optional +const firebaseConfig = { + apiKey: "AIzaSyC35i8iZoqYXSMaZsnIgWvsqyUnHwlxpts", + authDomain: "lab-notes-ea2a9.firebaseapp.com", + projectId: "lab-notes-ea2a9", + storageBucket: "lab-notes-ea2a9.appspot.com", + messagingSenderId: "652856611298", + appId: "1:652856611298:web:b5f1a9d7167382690169bb", + measurementId: "G-6PD9BZEBLX" +}; + +// Initialize Firebase +const app = initializeApp(firebaseConfig); +const analytics = getAnalytics(app); \ No newline at end of file diff --git a/lab-notes/src/firebase.js b/lab-notes/src/firebase.js new file mode 100644 index 00000000..e69de29b diff --git a/lab-notes/src/index.html b/lab-notes/src/index.html new file mode 100644 index 00000000..920a87bc --- /dev/null +++ b/lab-notes/src/index.html @@ -0,0 +1,89 @@ + + + + + + Welcome to Firebase Hosting + + + + + + + + + + + + + + + + + + + +
    +

    Welcome

    +

    Firebase Hosting Setup Complete

    +

    You're seeing this because you've successfully setup Firebase Hosting. Now it's time to go build something extraordinary!

    + Open Hosting Documentation +
    +

    Firebase SDK Loading…

    + + + + diff --git a/lab-notes/src/main.jsx b/lab-notes/src/main.jsx index 5cc59919..06b88844 100644 --- a/lab-notes/src/main.jsx +++ b/lab-notes/src/main.jsx @@ -1,10 +1,18 @@ import React from 'react' import ReactDOM from 'react-dom/client' -import App from './App' +import { + BrowserRouter, +} from "react-router-dom"; + +import App from './App.jsx' +import Home from './Components/Home.jsx' import './index.css' + ReactDOM.createRoot(document.getElementById('root')).render( - - - , + + + + + ) diff --git a/lab-notes/storage.rules b/lab-notes/storage.rules new file mode 100644 index 00000000..9f33d22c --- /dev/null +++ b/lab-notes/storage.rules @@ -0,0 +1,8 @@ +rules_version = '2'; +service firebase.storage { + match /b/{bucket}/o { + match /{allPaths=**} { + allow read, write: if false; + } + } +} From c645c58505bfbaa1287ea6e70c60916723bb1857 Mon Sep 17 00:00:00 2001 From: Gabriela Wongchuig Date: Wed, 15 Feb 2023 11:41:04 -0500 Subject: [PATCH 4/5] Se uso react router --- lab-notes/package-lock.json | 41 ++++++++++++++++--------- lab-notes/package.json | 4 +-- lab-notes/src/App.css | 41 ++++++++++++++++++++++++- lab-notes/src/App.jsx | 25 ++++++++++----- lab-notes/src/Components/Home.jsx | 13 ++++---- lab-notes/src/Components/HomeItems.jsx | 2 +- lab-notes/src/Components/Login.jsx | 7 +++++ lab-notes/src/Components/Register.jsx | 5 +++ lab-notes/src/img/background.jpg | Bin 0 -> 82879 bytes lab-notes/src/index.css | 13 +++++--- lab-notes/src/index.html | 3 ++ lab-notes/src/main.jsx | 8 +++-- 12 files changed, 123 insertions(+), 39 deletions(-) create mode 100644 lab-notes/src/img/background.jpg diff --git a/lab-notes/package-lock.json b/lab-notes/package-lock.json index ab5f45ff..f33e981d 100644 --- a/lab-notes/package-lock.json +++ b/lab-notes/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.0", "dependencies": { "firebase": "^9.17.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", "react-router-dom": "^6.8.1" }, "devDependencies": { @@ -1903,6 +1903,14 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "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", @@ -1965,26 +1973,28 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dependencies": { - "loose-envify": "^1.1.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" }, "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==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "17.0.2" } }, "node_modules/react-refresh": { @@ -2087,11 +2097,12 @@ ] }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "dependencies": { - "loose-envify": "^1.1.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, "node_modules/semver": { diff --git a/lab-notes/package.json b/lab-notes/package.json index 660ecc67..c970277e 100644 --- a/lab-notes/package.json +++ b/lab-notes/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "firebase": "^9.17.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", "react-router-dom": "^6.8.1" }, "devDependencies": { diff --git a/lab-notes/src/App.css b/lab-notes/src/App.css index 139597f9..650abc23 100644 --- a/lab-notes/src/App.css +++ b/lab-notes/src/App.css @@ -1,2 +1,41 @@ +body { +background-image: url("img/background.jpg"); +background-size: cover; +} - +#root{ + display: flex; + flex-direction: column; + justify-content: space-evenly; + align-items: center; + +} +.Home-header { + display: flex; + font-family: 'Mogra', cursive; + font-size: 150px; + color:black +} +.Home-section { + display: flex; + flex-direction: column; + align-items: center; +} +.Home-msnwelcome { + display: flex; + font-size: 25px; + text-align: center; + color:black +} +.Home-welcome { + display: flex; + flex-direction: column; + text-align: center; + color:black +} +.Home-lista { + font-size: 20px; + list-style: none; + color:black + +} \ No newline at end of file diff --git a/lab-notes/src/App.jsx b/lab-notes/src/App.jsx index 8d2b8c28..65359474 100644 --- a/lab-notes/src/App.jsx +++ b/lab-notes/src/App.jsx @@ -1,18 +1,29 @@ import { useState } from 'react' import reactLogo from './assets/react.svg' import './App.css' -import Home from './Components/Home.jsx' import { - Routes, - Route, -} from "react-router-dom"; + BrowserRouter, + Routes, + Route, + Link, + } from "react-router-dom"; + + +import Home from './Components/Home.jsx' +import Login from './Components/Login.jsx' +import Register from './Components/Register.jsx' + function App() { return ( -
    - -
    + + } /> + }/> + } /> + + ) } + export default App diff --git a/lab-notes/src/Components/Home.jsx b/lab-notes/src/Components/Home.jsx index b6cb7b69..b6e39dde 100644 --- a/lab-notes/src/Components/Home.jsx +++ b/lab-notes/src/Components/Home.jsx @@ -3,11 +3,12 @@ import HomeItems from "./HomeItems"; function Home() { return ( - <>
    DAILY NOTES
    -
      -

      - Bienvenida! en Daily notes podrás llevar un control de todas las actividades del día a día,

      - si ya estas lista para organizar tu vida! Registrate, ingresa y comencemos!

      + <>
      Daily notes
      +
        +

        + Bienvenida! a Daily notes

        + Aquí podrás llevar un control de todas las actividades del día a día.

        +

      -

      Si aún no te has registrado, dale click aquí:

      +

      Si aún no te has registrado, dale click aquí:

        +
      • {props.text} diff --git a/lab-notes/src/Components/Login.jsx b/lab-notes/src/Components/Login.jsx index e69de29b..0c69a5a8 100644 --- a/lab-notes/src/Components/Login.jsx +++ b/lab-notes/src/Components/Login.jsx @@ -0,0 +1,7 @@ +function Login(){ + return (
        Login
        ) +} + + + +export default Login; \ No newline at end of file diff --git a/lab-notes/src/Components/Register.jsx b/lab-notes/src/Components/Register.jsx index e69de29b..ff52a4f2 100644 --- a/lab-notes/src/Components/Register.jsx +++ b/lab-notes/src/Components/Register.jsx @@ -0,0 +1,5 @@ +function Register(){ + return (
        Register
        ) +} + +export default Register; \ No newline at end of file diff --git a/lab-notes/src/img/background.jpg b/lab-notes/src/img/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..313c360ce74780faaf4d9c934e7f1e2901f00ffe GIT binary patch literal 82879 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/W0hwK%LJw0= z=-p3Hvk8j0IQo|FVGb|n6|1hRsk|)F%sbPzv-~bY}{y$BaqpG0uPQq zH|j@Fgnh%@j3tFVskF_`Qe?P$j>@~+DkvFJ$cAGhX=wpB6cO}g!^j8grKf1Tf`W{U z3UP;0)7;!2%uft@zKBg@A#&6~2S#Q^;oS7(eLgUl=1*;^K?ZbBbKGCe z3^u&-2z{Mo@b-g~-9V5+Tk-yZfewcy#mYEhdSJxVLSd9~hbb~=%v((=??c{%!TBuH zsn4+cy*EyL>N~-N^5RD2v5jW^dU}mx+uzBiDya@?<>f=e8MxNCD*Po3!yc7(lun(y zw2%~#BwKn4kUi6TV|M;rg}EKud{B0T-n+-=FPBuXY9YV1!)N*>x7vqoZHl4V!G27J zxceTsdaXxhZO@(=PWG?Jgez-kVq7{GXa|2HHv@%oN4EF)s=JDWk#r5quC~hvlsAF^{)@f3zz&3NYpT)}e{GLgu zc;;>a`vZr4U0=dt%r}^*25H7mx)N?CJYCnGiZrA9K>j`O;1t*?;qH5oRQ)Or zCpScB`WtNdOPllte2Qn0uB)mz>XwT0Y~H6AC=y zt+-daR>DQ#IV*h%tm-W&*jV+%7ngi}6frv@2D}k=Jq2Xwa(T!oAA&aB zBbIN_w#9AC4qUub{8ogaq{AzhJX^C?QKvPn-JPJj!%K!jF^kkVI@#zrZHce{?Q;i3 z885iNJP)M*oH=8ap~#ykRbyXf(N#?;;l3_^>3M_lpJ~<_f@zu%`krQ5ZTZ}9Yb0w_ zU853`*4$odi%?*yNxkJx&aDwCGJ>ET!PQkQ>Fz`XHtBUjYAZocl}V}Dw zR!^707>;-IzH}EHEO|-#^MjUoyFFHO-DVe_qy)3OKGK-PtvU2u8Ps4uviV!&4tho_ zD)+t|jQ)eCr>gi8FB{RVycsAPxm8%|oLp@)JKh}fm(#GfJRCUva{xF;zf%Fl7@uBvp5N8J&)>ugzX84EAhaFry8p!aMz7&TJ=kpGWtAbV?5<5~@r8u+4kS?}%4_9SS1a z7-U|~wsLFH_V-fLb_TX}+}osgw)5=RzrQ6>!n~l0LMt3adHJ0Je79cbG>z>X3=t4^ z59oyKo&pT2T()4sVmT!I(W2KU`cBaDfnGNsbbwYh;HdG~31n+vXwgT5qa(5l-deWs zecJzA4bmH(fek^$GhS%t9Rybdv*Il7JUazgE+5%qnZjsa$oH+ds-FS@Bk=cg5^4A9 zY|QY>RsFYp&Px|VZv!y*1A?^Y&6^7ZC7?l%37+jvTkh{ipPY~ZRVqe@ZZD6HT26s* zVzzhH@e$-UPm|{>6GWG)y+><<94d@RcXt~t zANmZt2uWSH_))8Y4KmVtvEneH(eRYxiO4Np-UJ=Om*c246~tFJne(p+o05ykR~mHh zI$Ss5G>VVrB#)Azx?_LW%YI}+=hf?Uvk$R-@iFs+%}j@mlGD>OLW$_s$1u%OYGMHs zh{9({Qa9tt{Hp3xfO2Yunr^+|Nw;E5ZK>j|I>|iTfX)Y(`JmS&CpSmAUaQ!c2i%`J zA5ES}RzJVc)3V)LTA(rhSwH)$Y;ZvHy~HQIo^4|x@5U%PXKA(XK6+s7d`-*gqpFrf z7vU+u{Ji+b)e1(pG5R~<9~%Zoi^64qCFf-P$!3dL579h>NLkjGSbg^Fkf*{Xoy!P! z@!TL$;b3F2$ zjpDpTXq8!!Y(e7ogNVWJ?cN79z&3u8;>451eVW5xJ<6GokbHxt6z0}jAqf8=LHb(7 zz|7g`#d=$)q2f~Y3lCnVJK747ia#>|{GDJU>u7((PdC;>LE%pUE!p1R-kr_3N@}p@ zh`Cho(;3#GAy*r=3wv_mqwP6I1`Hq<zDb~g6z=_Ck{`1R&QvCuqzbB0}U#M zm!%>A!Mv_ULcM%Gp)mu4Z9;+wX1s9($RIQFm{o3@4NpGBi=-LekD&r^l9$qIzBGW4 zFvq?ncXGo^s_BqU#RWaMNyb@9y%3lthgq!)-zhKDrNIZpJ%O@}qAZV6vwb7J0EnSpRPj`f zP}IAkaHJ#^@zd%$*^Lba6%}km@F}3#_d4Tb_!M|mU6Sw2X0au^XB&mUzyFI+{#6D9T9J^oKGFK^V{x-a)hI!ssf`V9Z=cWYYIq5KX(ohRf{lq$ zMP0nX1M?&KI3S()O6_tLTEc-N(w%KUB>2Zks7r0)3p!yBoS9Mj-Sl1#?*tvzk{1)- zD>6qO6WG%aG#`ZvoYd5K5E%|V*JV>5v*JPLxAf4>F^@VToog;ApD5r?ST~R_iuvBh z`;xFxS7BL|H<8P$G84D7LJe1bs+$x6Ze6p>+2Lg6WQ+a@oQ@;5zVuYR=Yz?qau&2o zekOeKnH~26H>7z!kSSGould=>gtDN-o|A|Q<&svLWbG!M!KiNnR_^HJb9M)$$4bIvOwbP(*gAZ{fyc)w=&goX?x$piZ@g$+4C8b zepMx1MW5sbl)T%Wj~C0rF27En>sV|M#Ld(_Y2L*jBw0HPUVs1i#^}6c-^i?3=rFgE zS!c%WrdK{o_=TVwh2(XjOvNu2(}+dUb-2D%R}`O%U1k26TTdCLdw}kV<*H&!X>P$f z*7)x9t}tGhZMoBw;5E5)SLPXm-puoRj}QB|{J1lZdG!fnW=KYdwj~+Lo(82Odb;Nk z9g6g7%`M z-meJ2c@itl1u%Jyt=|LedCIdUnNDart>a?ZcH}F?wE-qd@j7}82MVyKFnGwd3HIdu z(b>;YmaVa*ro4Kf2R+8fP^*<xJDPI|x z>^$(IriVLaR9-ebUfR98bsH9$omHmEVJRTOHDBx9BVDYn!LCGx-5@9m4vdN)$8l{% zj>;#<^SV>E@ufq(2yG`OxVQ8BjBW}U*V3eM=W>5zcpD<6Mox9qN8)YZnw6pc@xj1+ zE~p#7w~~!KQ6qovget|5i6_1=HNC`L3O^FiZ6S~%i_4^tSLAz6qEE8__+1d025Vm+ z16;&YnIiWfoX?58m_3mR2z9wrC`kFBT%ZRk z)C+R?3aOLFdUkoAggO~r3LGVu^y+IzsP z$N-;nDKQ+7J;+f$7|Flf%`KStOg`WgxP~IIbBEtZ)D2ZgEoq1=xmwk|d*mWVjqOzR zPT52eYq;Y2xRN%bf_-y|;D)nC{9Rm;a}kAR>`DgoUFP9AKZ^2tJOf*BVAdRrHr%9k z{)CB)gfqEsA;O}V8%!@bvD_s^>79cz;uI5p`Zkj6BKT#{s?Xp)cp7&YRa0cIXQOu5 znViKvS2Qj@`_L7y7SyReP-_B7{yU{1d$SM`U=#cj1(V@~Q5Z1x>X_~ip zy7gj-lHRaNvrPv>W*Lt{uHMo=B?%OlTXqzEl5hXS=2<3FwOyXp7cg%lOM<%Oe(e~y zf8c-`U%Xs^C|Qvyj7wG(M57`-rh)8tHFwR2J?2Nzjc?xLXE2p3si({P+p-Z{e>}vD zJpHrei+o4VB^|}F#NNi>4?ayb>F2_*Nd3d$kt(CAv@cq+PCie#?~5+>Hu$e-Y#$g2 zf4y5Oykqi-P{Y~f29podd`|n`fx%(0Fy-XUU8%fVL|Lz*q`{-y9C>EWA(DZOi{jq) z2$mkr1o4^hgM((v}#N0aR8+UWd?(wiPqfmR&MXbMbVCWuG zb_&?51bPricC;s47A%O4i#t1MQrxd?#OVLHP?YxO!Ii~S!m;_xFw23I&daq@L7Jp) zc?pJ|Wd=~`mB3R#-lfqgsIW8^9)s80k9rtc@5~)<9T?=SJv(-HcxFs6OH03e(brbdfvY@Dfji;fGNOnl)?Ejl(pEP2KA+##TMF-~ zh*loe)2cGozmGZ^Q9N^f*i80}lbix{&Q2txx7!axK7TP|_;|3~=u-zK?jkL2VoA&T zDto^6P0g6k!bLeI8u_k$?ya&a6Bn6}+whfPQbBeIRd~QL4`JSDVR|s#)p}@hBZ)op zYeT2}Cua^SB^8AFUP*(t-u=-B5WUYs1yBZ2J1d;Oz$>@&LS4c@uyw^;tal* zyD?9R9@UdFBiJO$LtUF`Q>j)!`OPNzWi>mEsPk3a!*r(ryIu!JFS^82CZyMBe~54i zpZ`L9TX*c^TNZRTK88H`E80~yK}a2{Vp8I+M&`u8j}I>+FC#U1C}B!}gv$Rvf(pO< z8+aIeknO_n#1i<3E?XfwKQeim3Br>9{G)mTmucN?>ee#?&5H`EKWl5PGd^Jrn>nfZ zIB_*ZW2^#jn6AfC>}1`J=iM-TNCv7$sk!5Zf`@QE0p#MSupFJOxfJKm>HCO@cfli_ zU($B5Q33dv?ep6=A3{TL^z$Tz(4TNK_J9`FH1&O}-h$kDObR|CP;}EoT0V%}ktBjN z(mur6+My2&`O=L&F zUE{2%wS!r=PQ2B63$?lwT38DU6I;K%+7*P8=9;Y5B8_qTY1WMN?mx9MlYPN;J?;RJP3x3&v|nr69;4HQ}K3=U~My~&^@@zFxH z66*@I38WL)IpQ;GFr1Q%BI$b+rM^?x6g`*>`P#xwPx8pwj@kXgm7z{IGdd8Wj=9Ou zl^3Uu%!{^jO!$~5oL*Z>+#Vq{T>pYC{k#gJaT81N_%kCL?e2udWw+iodfo(5!f~{N z|L9ZnA=XnJM>OVt`A$f@a7MlqPQGhsEMI-YCS&e0QU3bun8Oo#^@?u`aaAkt^`>eg z3}SNil1qE!e9Qd4KZ1@9VEoyQN{XHPMh3Z(uM;_fS2blQOrLgWl~a?NhhGeus*bmM zcuCs32UA*hnet(#T=}N3qNT^G;Ud9?m=y}F+6kg(#UVLflxTdu!FU~IAty$l1ZGcA zV?Ajsv2hkcBjp@(<-ebMVecVyH5tp-T|gYMSlZ)Fq&Z^7=4kt|KJTH}vjSfGG%q!9 zHZPLY&)ki({=ly=S#eI?KPBf$j*fP?jPCn4lXO9j()~)g9}Rl8&Ix9du1{q~&WRNe zQ3PIl*tS9F61S`P1-c(~p{o*8A@59n_fl4Qd~w7@>*L^&*O?WVbb7fU)>FVhAj!kx zlkCIpJJM)f+Sc{fsBl&t95iO;o_D7@7h%%A9wiNv&~?^E@MdwK8>fBix?B|chjx+{ zk8YDj3zwAQ#X^9il*`u1)z?;o$(@y)4CSeIr}|YSr~L!PwWJPCjT*B+^XO*FtqutS zR}YbweQiuzpXahrBDxFmP%N1pMVZEhYQkpQ=|WkcbDGA@I{wr0i3EUL^OW^n?!s7v zJxi=qij1tZ-K>C+K%h!sk84fLijQ~z;6g#M=14YHe==F;?d@WXz0#Vv6AnXsuungt zhf96JyOJRP%xm&mbX(shT*;6pmkggxk$Cv}6!;vASHcPttb2}lPs_yjiKxXzJD}knk~n!tunU`Q3@N#}Z!$4ao9}+Ru5*pCFGFUIy8GQJfj3UL@y)?>XM6 zcwRMA()s~liMn(Obm(7C4D_&BX~#PBXEJUOeop2Xz-sYx=y)6e?*`d03JMIGHH&A1Ql3$5>qE{zVXUg z)CqC$SSIeoShg+m$F$_65o@X2ZSBzKG_RSqzL|_o;>A~`l?`i`_{28zP&b0epD>RM zq%hXgc^rce*Mb(a8>lwONx|}g&u^>No&qB2wl%RTnC~SsPf7Xr>cQ{AS+dI7k?kaU zHTq0;J9zi@7|_HQ7p68BaZO+7MhZ&76-VE)nxV#`|15!C69;ToC)Kvyn=?K*2#<%P zMmH!^<*W|y0AyV7pK{-!bn@W`V;^N%uf|%orD*Lq0*<@HS6TAQD4hi@c%9wRB9hOgSg- zoFneZvI(_uqvWAGdFpT@x$v4ET&;^LYMt&D;&aInAN_*C4SUamTzL@p!4T10$XlXh z3CB2htR5x600jt3n2$@kjmQQcO5xmtZC~7~VtY8CG2l;*VO3UXv$-;bm8C{(0jfbP zsU_wlAT&L_v^2NEN6J(`Le8XgaKb)1!Imqr#+Z%1yNmPaYXlb;r{9z|i1VdOkgUpP zd;8@9&Ft)x)K*vo+{}4N^z(Qc88O*)@2-6ba{)GTlQ$E7HX{9>heng7rsyYM*#ZoV zdrst5o&ke}RJBLB{ znT6j?bo$B|?-EKPr7zloSh%8XBB4 zxtxaEV;h@ufBQrnWcMzOs7xHw5V_C6Dz;1B74hTZY5b;6xx>{f}}5{ z;V~CVMqlbvz6McD*1-Nb&OC0pkzDe)wwUfg7hAVU`k*~<-rj-UJ6{lO!dFkkw^0c| z)wp|F9~DfMA)+5y2caiqR+pHa{1R29aOVx~t$N&NKHF3|2B_+%Zga|oSK`_7@oW}d z0?oih?Y61R{_3*0d6ocdj%BfnpuinFpily6c?ec3!fV*1`+bT*|Jy&E;mln_OSw#oFtHNQr?>0gD!h4=B+W z9VZILVQnM7WsjllU+Gh-UVOQaSNSflj|xrRhUKS4c;(DyEA1^Owl=QIp2)GabWif5 zCT&&p1?%^0BRhPjERUjJ{OsyhOuMV&jSoHd?3Gq8%OKrs^}bS1;&lZIADsIyv%ddJ zxTis6_X{l>`CVjF*q!o`Grvsge59Jaiaj<&h!*yguj zpFeSJzE)u)+Eg<&BQ@kn7@yI=tw@)QTpIxwA-G_MUAL3@ z=9+t!?t@P+W5@S^QB5^>i2KazKK8xLGU{)92z4wzSt4sQ8;|jKhx;z{*VDU5p zI2_Z*Yr_Tm_(zoLpW;wD9O+!_ubaYI+Ytx4)9s3)e9dw9H-ZuB#ywJG5p8rGRxU!e zbGr3HGInEk1-x#+)QKrZM6-7|t^KMWXeM~Q2@a1Dz4YPXN8ON5HefpWK>6he3Yz=Y zV_xsxrEXe&;L5b~VGgTKQf;EZu4Y>8NHjfc%>+fMUcAE#xN(B%xxA#0mM86(_bAl* zVa0m*m}FMhNM@h97Y#o?rADbs`4$1JQN?NS`}{7eri$Uri_NVT<^blUeG{+d_tps@ zG)3=|@VDK9aklR@p>ml71I6soK=2qGZP#gMu~EDLu6tjoog3f4mi?6NgqES=c<#A0 zxL7+#mmt|*DB(ujg0`3%D@OgP5nua{)~(J^b+lJEGVcN5Xf|&fv2q+}jN+ayVTx0T z+mw1IB4vNfDG$vj;_pfJT@)_F{KPiuBG>oO3pbf-FYek!cXoA-v_k>7PNmO{@o~!_<=R((b6!_Lg zNR(&?RSDm9@+eQxaabzQ%g^Jgi}qAwy+|hFHKyQX zx`PI)`EWC-i3qf+<4mXXO5dIfv58|bAz0EQ>DzFE&_3H9hHe4A=L!U+A!ymQPRjfgz$P zJJ@i}{Ru{TTM&`;Sjv8Qius7U7_(;PX2a63)bS15DG7t4&G6RON3by0H9u8^K$jES zHuK;%diWcI7PtvzkF~nk&|D^iRh(jDvTk7vToUhh4)?!-cPqvZ4@_zZzAJF;4f7BU z7`zkS`j+p_mS&Vjh%$k?g7vjU!d$|PZ5iIVPJ|(T*Qn#x-5wZTuv|P|YEcz}FMTzHVB7mN3 z{iN(H*{>N2#;;@CpQBtFHY_fxX{(uSQ-w=iOI-t-o$Dzg zOC~^o?akBwFhK}7Hu4vo3Bo` z&7?-cHiAZT(x(bFD~VW|Pk~sPj}H8s%q{P1!25f-b~ggi{I39Is|6jpeo<__Go{E) z-L|}D=7SSoSAgB0TXa5?vfKIhrL8I+=7pmsyFsvd2PM`osxsX{UaGV}2s%V*%j@~sB z{-9HI3y>bvOI*0+!`SR;Li4>C1>KPVUD6_%r@7B&dp;%QXDFYYU+NZ9JAn-Qfn7rN z*X0PLzIOzoI!F&RKz}8-4M5~{MqCLys?fk4)^|WY`SD_yP85m?KsNFEeCzX|QGCk8 z>R2*26vv&{C5;xPin8@O%EhE4RO5)Ou4!PBz0}@HD%lQ<)_*_O8G3<(z#=OxwNy@I z1=O{03);hY3&iPB_9VrhsfAu)C%6?kjw6Zcoo7ziIH(vB_k-VhzbEO-s{x z@MH~dFa77=DV(Xp|J_ok)5yn{rm*zFY2#K*K9WE8%+4gd(vdDU=X`Ja^+Oxk*3!c^ zCS>#XxmUYl0!Cuh>G0a2jW8#(p~LVT(~Y~xAF8Nv_}lg8!RzR+PE8j#gLfsVZ@b*< z_n@7ftVvB5@4Fm$DJ105pnEvkybUDDvMJ=b{L0Q+K29gz;?a|z_w~kJ?lBG}e9T!8 z6M=_m7|WaJy_npHjw6j&Ppzdm3x%+*j7t$23EAWqACV?F1;}~$DcPK z#7-90z&a`kSD#FMDAPa(`z(zv%vV#9*`QjG$vJ2Cv_i;Zl3a8$XX3y}$Dn%J;8o@Q zSt#R`9PgPEUx!AH=MTs((BPB7k*0tquT!qjRhlzfRZHb8(_EJThBV~?@f4!_0UDdQ z;S50ZZ|S9H37;f*p5xQdb)7)YXU0El9LYoF<3poo3yBX)U9pStl6iW*ME&Uv7FB_B z__QG}nFlIO4O4hGzsP1d!$47I>K>c%gwvdY>-St7@-AS%uT38+W6ON(Y(ZDFcJ!&o ze47@#LR%_-LRu3ogP<#~2=apc264AJ1&rhC zJ=$oRy^`C7W~v7J{Qh zw^$qwscy|FAQl-r2M?rq-cecDS{uMWg67Z33GAX{Rw^Rm8Te|kyzpf=Z??$`SGrg1 z$`nKI<>~LGD5F=?=*|^~7?cRQFs~C7bt7H(uscZ#x4E}&Dm<&I=B4uqT;M< zU(zo|QpLZ!yFE1@5@B~Sn)u!_gTGU?Y=G zymcJTy-8={ktXzaN#r7SFL1j0@UUSS3BAam3A3Z;Y}no@447o%PhOF}0mf)W^u8C{ z==#Cx;_@o_dCW6K?XcLbyoh@hV>X_c$du7lZAQC3yRh|0xGd<{IpHh*zw-GdpuNIb zwr|`QJLej8W4&whXqnu2T*B9Qh(oydMjZJ;v{wDAD!P`#wq82|EkLMHTga1rHk7|1a&rgJ5fB8xOD&rNo@#RFQ4CKep_lr25I5) zVRA@{{lR~q5n_4g6u`ihY8o5|v_%t?a!IXmo_?xR(u6Pfm*G~Tvr&xn_&i3BrgTOv zf&j&rn+4uH^LABO+r$@ufX-X>eRZ%bXeXB-fwZM71RpTmSuO*y@n?cYS#jf$O%#u+ z-cJqE0C~!FPe9+Yx{6;anyyx38aoMsbMa~A_V28ex(C5ijk9tfdw{O9CC;#VPrS5B zB8ylJt}&$Vn`QZ1=Q@b|&2jjD>sqR}fkdJcH^!^|X=3remKlPcIT;OZYj2M9PS$Ld zwc{h*qyuZa9cE>FyPlTQ5?6Q|#eY(Us*qn48{@8thCN#Y54=vHhm(S*S7aHSV*Bbu z+xH9&v1VKwhTnWN0lDd#%S;gqM3D|Lir0+m__5-r}In?MoU;{I@J>ciMevXv#Jx7zLG@n$n zhc;6ddvYs87hVP^m=GUWNYR^PMMGCo_7FOq(CIP6mftR#?%|DO5=;xTSg5>n#AMRP zIM=qM)gk={6kqci6f(!eN{#n;6|jEAmr|)7A47K01j&XL=tL23l$TmDORCs?)H{EV z{i>w^^o2GNIz$Vu*4fkIBJ;&DJy3#j1CW#el`gJ@st$H5!POct3aQzq=>i|pF@*w3 zNzH~}uKT;|>Yz5?3)!-J5<~*Jj_=g!_B%M;ulCt_=ncxNT+^z@t2-v!gAsZT)ZCqo z;$oUHAgMtcGn}aWQ@7;-mt83rXj!wcPU<>o_drl$Yl-r+1f6tVZ zEdH6MJ7m5>oD5!m2$qi2UY__Q>cMUHO33+tw^z=ZOiUg2)Wx$M_pS zIv?;V>e$JufTznPA;5J=R6lFpeV^igG503WQ2zh__cdl1WRDtIhA3;Yr5Ox^FodyF zDLe5&wya_7rLj|D7-d&kijagXGbjp`5NgJrC2Q91tIzlM{r>LXeeVDL`~UvucmL1- z9Ouk6=eo?fW;w6->-~B?p3fHqHB+#lf%|ooqd4e?WZU&Ggk3%qZD`S~tI6(LqZnGE znud+{=kRN46GNksvnA)Ux6`hOWH5JYLQS-}na$-@zvpGP2Kp2c-38wR&{rW24-KG< z6*wn~;;p7R3`U9uKV@>I3^Sh|Lw5{lo8pKeaI*xo_&Zy~#-_0wh(LPNw?C_=4$Pa? z?5sB031(aGeN7aO-5pLm(+!tcF;zIFVQbxSY*vJ$sJ8f~G+PzNP=V=^2q1B=3*5#Q!SAu@9~t4;C{gS@+Y{e!(CzUm-mFf>U7g6iQKCHsAkshY z9|i(R7t)XONX1P_$xt-1YH!_^M`)Vh@o$Q_veRv*0T($GD{2noX(#v5ZECjKE+CT} z#-!jcC_g&FkD!TLJY@TFN;`e-OPA)f?G};ICq6~Ntn<5yTXGY;g2v12?_=tcvmA`N z+QRwms$1S4j`=sR%sFirrX#2TVO@e3iq!|H1{o9iVM4L7pG*F(fgb%6B*pWkRr{+u zje@|P>~q9_rC0JlbFF3i!DvcxYKh0i?|%o%!M_9Lpa1-VbfSL@=#gkz@a()T#9Biw zm)A#hU5M*GZ)i67u;qdG(x^Tg_D9j_@)1wH8Cst-w~^z}@b2)n{x`MdCYX2fqz}5+ zvy*xL2;;lK#QHyRuE4_5fF3Z(&bfjMMIkLNZrN;J4sx2gz-!q(sx=pNBKhO}6$U9= zITbJ^bdW6RLOTb|l}58YdLj!%tp8%o^yJ`!Y?nFOJ-OWPyT_9O#{CD%o zUo}?IQz=Ei-($9V;ZOMn>Z8s(01{(urTu`xP(C7Lr}%BTVa~UVzeUeB0N&aWE4z* z3bHwWeu{cwS;!8G5Z$3ei^l1fs3T(>1~TtsN7HkNE{akZW|T7EGh(h1Bs=bH)`jw( zXdkIELCvn0b{ohBNs2XLT0Gv#{ScEg2?xc=u(TMHA2mw@u!HMITGQU5dnkCYS&eDC z^JZz{tHSuOSG>454HmHp&54(;epoAc3&2Prz=h?hv@kqR(gB(=9 zuId|cy<2INR2J$w4hY5%*smW*am9PFx9=St9&(C!0_iz3pdMAQ!4`0|MQ?Uo->)D% z$%ob`d*#kDe*K++^z^Qeh@-(&L`bQOwBFT}lV%0v^Fq1|NU?i_&>Z!cEZUHCb4g^(%9vPX%92P_P7PKswe#o2G$6m$=%pyx< z;L;q^mmvJ7^JQ;0jw6T>??Wjy4VuGY!Ne%-&~XxHAW=y!TPwC$b8u~xz|^MrZIs?#WqnRB z-|-tH@Zy?P02K(8@)g{@{8bKh9L3ROIrQHT7p9&KrHxf7mI+4{QHA>AutP!jpL7LZ9KB_yT)gzJp1>%eGQ4QeC#HtkKTlmj_TFXe-LU)(xTC)%NIeCw6dS$ENG-3p$As~1y=>tV z6(9Ym-JexzOaL_+fVUMa&|?&7;$wIk%B-4UjOMmj-ux3cZ(l+4Q+YREm}vWn* z#PvsnW9c8S`kF{S%HcX7A3QV^5gIvUD0!4-=NX58`D%A)`{<{PBnNOc5cyX(kG}H2 zdUw&U-CZN)`D=|vsBO#}Lgi&n ztInbpb=!0j((?p@!$>Y$C2`*p-qKwSx^<;Sk9*z&d=bHa1WxW&9np2ZYP9`zEbM`# zuWzvXNUCA#tR#bfsBqnKxk})IUYJus4vR$f-bn&`&j)`SxG=48cj!|8Qky$GeJ{U}X$9XnaRlcjQ= zmVUuSfk9mq#uhfH-_R?X$1eeIDuiII0eKp*#c=-={9W?+%{k5;-X2Tj*YeI#c9Or} z*t~frVb5e(Q{{(WF5t*b;m^{GRe${vsG;D)bWz#U_9Y6+)yYth{Rh&9dNb2$l?oApYJ3^J zf;H|36x}7p!&|C2dn&~bS84I~YXh4iGp4nt5XRmJX|f^h7nP`IM#qc(d?&{Hwf{q% z3&%!>h}HNL4d;H2kV06H!0Ro%tNN_+7DV2@041{V2>-y6N1=cP0a^*vb<-Keh`VkC zp+-iv#J8Ni*u@KNJEtB(Vn}q3C|0LN4=j7r?cMJrun~6b=Yd*;2LamZ=UgAsraoxs z`)iJwIw1V(VG`3=JexiwSsCR%-s!N>KL5+Sh8Z$mLgJ9OlvF1Ll1`!8d80VWNWs!Tb zlyT?juA8~;Cn6fDnj-WF8N)wy(VE{t;INgc1XK$VX;^*3;VypBJVPOUQ_|JwNb z@DE7#YQEpkvn{G_fpgASGGlI*>jKD#kq(nQLEg)@WkOFh_7Ie%9G;HZ4*AZ^vYqoA z`1$7*pIlxM)B!X%hr#E{+(9Ai47>TohY$F`Q%|3*Xf94s4*WFttpwzL1G9C=Z4gTP zY2}tA$LPp6pjKt0`GXR@KgV@3HFw!-Pnz@K-roq>r?vFxP~X>662F0?7q>z|VCP^+J)8& z48^z)EF(!};P?1%`TMWk6RsL^n}LU-7acdubZ>I~hs>T>IWn#ko4#4{4*~9y0DJ$$f7pn9>isB z+c|VT^D~LQZktPlOJ2PqLqt~Zbg3sYKaQI)u?(Cc-X6)&8W3?WW6Jcja}FBn_EmLn z7$gWatN9)goQP!Vf$cYRyv{g3XN1OzVopAOVsfk(P@9PEF`*2EV01Ne+>>hLgVS-V@Q ztCnlE_Vr2{^G-|TD{~0HFJcYxa}LitUdt+uFx7*XDTl^?Br%PB!AW3RRZY3j-Jy$< z^SJ=bMR5rx6A;~xr|IOU^O^E#O~q16scolw#Mo2(Bf_J0=N)l5^omhcCNJ6~=rfcf z?R9EZFJQ%lnU^FJupVGmGtL??yc*Fwn4kvlTbr$}=w=7hg1_E$LY(!AA{!!9zP<7- zsy2+emvLIme`FynV1CEkXfG6U6-Oh5zlSnB>%5pwbgwqVa(v8C0=*ySyHw9jkunPu zakVcnz}ZRM$zLITm%Kij z-wc;|LvoHaF?&_p&oISJzMRZ;tldd12|)NrPTlN>JK`!wv_yA8=SQ<&G#8i{%(e~> zzRiR83|O?$O(Bi9yOGn5Jz!_cp*${z7rGr0vQYtHq`YJH%ehG z;ZQi(=+Sb;b`Z}4VMAj62txavtwjri0S>=8g&2H^lc%gLBq=sSqw)Kr{=qf?;0FS? zHO7Y$dpiloueXaM*C!HW#ibQ1eW4sugeR44J0wVfYNX{n1ay3{OJU|8_>^ATcbv0s zwZw1pot}&T)nX$?5hAHVQ1Gy^5YDB4lb;rCY+x-9P%*yY>z_#Aio09g6q|8fbeK>q zxG^3cSj^BMl3bF)!MwjyN`)#?3qj48@TP2~n5ivYVahpn$?Q%01Fbe{KXX6&(1~!& zG=|a3#T|OX++cRI*iJBh0*4+oLG2Eul`a(tl7wmX@(fkeJMidOEGsu}MnL@B@z49Y zmZndR2lsYn{_%Rf6K~DhL{Z-Ujv4W~IUWih;$`DE;lE@_#)q9UO$us&!)W#AB3(pH zAaubs$>1{xE7MDO^n81vmatunJjhQ5D}TS$*uf?xfdFs0E|k@P!GsAO8Fdi2)c0JD z<)-)stso0v)YoZ*5G92MKmk2UcPx`S5IGqSNuPuPaPgsbQA$7X16Y{{{WPRl0fnJP zir54x8tu>_?jFE46}D&brt;D9IDy0_+-mq&Mj>-74#A_Po(VbYxqvYmz z??Q*qH{uqrEzIT2_MMH=8uOm~PR?mOe0iB3+p|^d1hFI11Gmb`nM*D!Qp@;77*vO@ zY^R~DCBujX9$mKbl2Jh|sdnb^R^~VW(k|2`a*}vIQ<7;0q8HJ+yD54Kk*0STA`Gsa zx2FxppWIFPlj&9nTsJ)_O7$Xg#7^8z>9DPNptDMOVek%B!Fo0EEt9`~l+h4fy7gqd zn>qH-wm4`6>i>=;m=e1$$yJW^wJ)T{4qT2mjS;t#6pN!=D|r1;%ITtN?dTN2U;$GB zH>RKk1E-t_h+mm8CcJFf>ZzV-u9s?w&V-_h@(=zlYi+QY5L!~^Ot-pI=Zn77X=EoGWAw9j<+Y}+WLSA3I8kA42(Q2-0&;3*|W2GYTC&*;Ko-ePI z@wuQ4`kE*GYh(EjT=XtrW>|?g^e=mA9_#dyUl(T@geqP;nBS9vEAs1V_H7q|e_yER zv|efB*iUH^7>|FPG34bKb_ipQ?7Ewil#~a3Zx%g|A4ybT=R3z6j+CDfErJi0J|fq0 zI0+(kF4payxR-=U;&2iv8_arGAz5kpNX|{SZr9v$I1V~&`4W@(R#*38U6@&PN=(^E z&CJQ7dQEpsNZI>}^Nr)TuUFI>OR{s^os)A?m72z|pYAZ9rv~d>uVCQVXto*5E$+xk zA|t~h;U#><9$&^yY{0izFaAHzH2v3bQkk@2Abc;Q+<-%0V)E(DP3mOn;@&+k5jMRr z_rd2CwIvv;^GzNpCld&QBDT2me(9y9NwfZ(YLt?ZNR5AGaWHjhbH%W=Sr&BA6^fGX z9Ohlq@pdW#XoBH;<~%bnSGFJUBL(CGAE}k~Zr1dc1ZJ_-{p)vbyE-sUqu@f}ri|gC z;swWd4AZpliSZ+5Q#MsIa8@EQYDiCkcdiGtv@l6Civ3}WGN~J4hcs1-h^(`NCqL4_ z$%ZIj7`v$GniGgv8d@u6jc3@om8NIHvS?VVl<`I6rfeB3!Wa-}cb-uY2=kjnelzM_ zwP96B(f71_o*@2QFw*j%^8!N}R+4C0EcT zEu!MG`Y|`Jqiy1D1hy<9l)yaQnynuPofX$3#e|3DK4<_8!~s$~%j+r9lksow?=kJ|m9$=_@Z z>hTja)I-aN>Gp1ge*XZ2npg3*-&Nph&qwnGv4&Wn`k_z3Ob)B9(*9dtym&z)*vzpA zA}hqoBfnx$kL=HSpkWRC68pb_OcRF;M~>yl`4ucvJ24|f2=2Hb^;~{k{p}Rzx222Z z^p~5{Q3IY{4@S@&L94vJQh+{@2=FCN2>wiI?N4VGxWjKTnbJ~W!_2WE8cL5OnRhPO z0NjWlk~Q6p0Kvd(6Pntce^0%qKSZ1Zf9|N7cc*dkWG8;D0>Y-$ECz!d@-o|q>pl4@ zkZNIUfMAbXC3nml>T&jW%ZjI|ghBIw?@OO|Q464dy<>zi1Tk2Fr=2jUWxP zd)&oBS@Cdw+PKBVDWS(p1rx(Sm+Xi(r(GH+6UjvA5|tHfBKaML7CIQrh^n)BV=$@f z4>Nz|t=xnTwTPU6I9!Y$`{?@xcz+SF0jdKQB0R=;*9j&lcIv>+idm(Suo~AT+`KN~ zYFke}MY9thkYq3a$kEw{NkDye|2xT0$@LkhFY2MIVl#37D-KG~+?}Wch8+og4L2N^ zRNn`ek8)biVWhRkECg`AN^79=MO^ls4_CEl?6Fi{k<*kF+hgN|DWs?F$U@f@H5LJ8 zN{N{Kh;|H%82R#F)ORw=5*m#Q9^vrw zE(T75I_bZYtgC0h>gXk(gohOsDydplr~v*lCuwOfPAy&iTBHI87^Or_BgzBA;R<}b zONq);v90G=Njb~6=c!F-j5HRQlYA;>I9iKlgh6%r>hJtNV&;D@X8+%T?N6@^A8A_i zyXW)uuktD#bL3BjEE0JlU}M1WA03>ol*k)7Jj^~5Q->I-pXI@)?!X%{CX5Ox2VYg_ zT&fu!OZCpOS{-Tr3L8M!r_&w&7pE$89n-?5!iETHZz4YJf|%rx>rq5o|M3bS$}pY3 z)9C$_i#PkyBx3)%Hs5X5@Y*Tz`Vww-J7=NTyKT{Q>``|kd^=)IiL!G}Iwp=6?FJ)+ zLMI3(BAwR>&HcQ>`~JF^Enfige6xr5%Spz2Ix+KY*BXUZuXkIjd@l}Y5C(riZ}d#` z-g6+%`r*AFpvRh=U*zA*IukvI0SzMzr-(==QgPTu!LaGwcRK(M{)Uk=rAI11C#H`JM&EXaVQp z$`r3hibNlzBCV`pvlylt-x>5G(nq4vu9A5wHT>uSqiwrni4|2W-UqcvEirEg%<9%m zREI1xh<4sW31LIW%`(uV0%37FL$&)-eu?yD=LOVkQZj!7XLjhEZO}#q%iaQAWtr1) zqgWyFR1DYAGikQL6$wktnakB8puKc)s6|`Pw#2G(UsI>|3DI$_onQ0_$#JN!xR-<@ z2B57yOySM2twyy|4AZ~3LQcx@{svf3U93x7JN$ZZ*|4D+?s(>XI+r3l`k8|aKjZ6p zcw;HwSZg0joCiIHTrDxBG_4EpZy>d>tYKVN;9{$bg9(8y3ip`#{TibT^~bS5hD}D> z&8@OmF?>X1&I`N|=g(p&!qJqyiy*78F%=;>acFyCAVbGW*IQX zq3C)hqb+E682f-PjqruPZ3V=C%d%MN&O(v$@EA;moztVGGut`bJ(wxga|FYJ)NVn>csLk1?$Yq7b-6%s}$!EU-ZrZ)#Q%M9u z{D8P$x-Nl7M>1rDPl3jmSQT<0Q#Hh*8qtKgRZH$|lJFx`Dk@Q09sa7WK|D(&-YQBO zOy^UP09z-{T>o7=zyF=DQ+34@x-PdSA{Jvx8_jJJneq=48n-@OoP;QMKU;U!RNtgU`b@dtJ*zXrX-ed$9PtzK zcBN?XpxNAvtF^VG0R==o&K5wABxR~XKrih?#YvhbH3<4G(g}4HC~Gr4uZ!-s`L~&q|OU|SA2!E zA0%*ZJ9u}$M?+rj{=_F4|CE^$4wgfIPsa&XK>>r!QcbqwXQGKy{%{K{hm)PtH2^(u z%|j@sr`}&cu$J}|#UTDI6a!#%F*-2d*_u3)rhORTm>LT3Il*<_4>EQi@wRJ#gh5Bs zkBd1-1jdTV5IHSOj>LNpyxAqvzY|~)c{vRG?(;fTk*ieo%^oNpH%yWqO!YVcK5WsctLOvP&x>yie7bibC`&oTlso1X5G7nMI+2)}J@8eGTwciJpPo^v zL*%1``DfI+_G?_@{fT>^*WP3Am+Qg)d9LL6eP_SYs?Q0Qa~&5Yu!dT6 zp=S9RW2YQa@L|kjGm@e<0=TWMLU?`~&Spr+N$l~o73N!H*#ew zUM(bfTLH)t+4L7!(}2&QBye2uF`$S=CSEhvY~)}OV#ajIzkJmCpqWiy#D)A6H}#xH zKmxJ&S!09kI{ckE%E1IZ<=&#IXoaAQvH1-{H%klK#b@1DcXI*XL0;{nWu>5`mDyU< zO2hPcsSVLwsH(U5MfGa*f)+Ag%#|^mYF~Tq~14+4-I>@8sPU zz&G)JtIL3kmHQN>M3n#%lSn1L0Y<;2{l*dz5)W?_XuI0ds%q`MEO?79lvkUgWbC(o ze0-!|Eiw=|kL~%W=dZR6;>As3+l742$!)74bDkzgW$E7CVSXvY-Ntj!>HCEP;_C%j zZN_D8HW@`h2J^YT-x@`p2mH{;V&YNg5pjmA4?6QmUV^Z;aDuI?d=bW85Jq*^7(TX> zvgtDL?(@k!K@R~zcSZm9yy=1J?@}u#A2D}dJW7OQNJ3J62nxr(P~9U>n?Jd=GL`19 zsJd?YC{cuKsm^%@=DZ)7H4oJ*gscU22N*#<8fw5oHDVbPKM&?NL&ew&3Od7vxOIez z8O=T1@An1?B(P9STFN1Q_t^|k2--xh)%v{v;;jz;@5#L*%>Fc4PNN{E;*P2#%d>_3 zp__%wAMbc2b}titk}L*tCf~3|CosiL9G5KuTmlLXHwaz>)}UF>JdTO&{*mnjH2(nd z+oyQT(aG~BDw)kcEBGu=E}4{VfZ`Rb7vGVBoPnnRn|eaBFXHGM`l?4UOc&k%A+wq`B{oHXW1e?0-^miy=Wk=m6RWUqNpH+Jo)RGy-2Cv3Bh*=Sy%|>vC^_o}NZMznDPk>d!U`&4@84wJ`@ybgo%RvO!E70kmjh zDB=2JSAwwY>HT_28)b^Ge<&{5YjsOPs7f)hr}R_`>TV#k3u7mRFj6@_N8IG$Y#b;) zrDLLo(o;ediNXz#Y5Ha;;zm`U3If^Ooavw%kz!AIxYp)7jLVl+;Fv`DoK)3irB;DE zJ2+ljh*i;E8)|a^PiZ-K*1QjPem*n`0M(}-}2OD=ZxY-)Wp$rzx+*FbM;KnG3I0#G z-sV(!>c;$=jK{47`0A3I^*x@Bxx2o6xbc5@D5#(1#!GE5UB)WHu~^AqWD zlgfRVI{~g~c%ggz8Tkx;e#tiXww~(gwc{dC;^2OvYqwP*{#NitF+b0(L=hr!tJq;@ z$L<)4zOjA42nbw}?NC!9{xrGM&T$cVRe_0OWfkeyXvD0~8&A9wzq^JQCbHcugjZot z%7;PBvbk%%4yfgcW#ZeVyR-md&ep=>Q+aCIF=#X|FzwVy&dY#H)XOW_SP%5IPx(qw zb+}#uC!{zeb*Ff386Yck7k6?1`Db#rRHc?`|Dr!!Qa1U5#t}qTloBE znrVt2T0(P>aH9Q1jU8ms1gT6o`_?8S0{?lnw9}U(WL7wl7v29I#R|^r0KJpNA@(f7 zxbA?(MIBxzKvNSSU+~m@jk4Y$N zm^rBv-h0J^mTGbxk^`{trWt@tWN-rItDXDwvPY{7uI(skvs+JU(Crel2=6@6ISI>j z!BzSaZyLN;_uQBBC)G-~_8yZ257dTAWNIob5j`7F;n))3))(Iv2#iB(KJ9uVYhV9V ziwWnu$$6ay>|U(Y-kYMG7a5f*+cfpPVM5Hibsx-gBc`JT0ultca%!SfHb&XwB z@x^O~l}(~~534Gh)Fu^fEGIP{c{M9WUVrxw;6GY2O!0+07PO1V^7dz~wG^gJ+*3d9 zotFx)z7c>M8+1-FKq{!uVp=dVN6nsoarW(ykSWkS`-XIs-xRm}gt9L+K$y{`r}3V* z_tZ9AS_c#==qczzM)>waQ(==q`cEVA<|PZFpbKbk^OT(`(2$|nSpc6liEor;GAy9| zq!u!Y$7TU(iq=Jawc~FeHX#Ni*2=I`wLpen`o?T-U|)WW%1#zhmCtFCtW<<}_oc7ICLvfyXg;A+1pS?jQtv=3F;Wa7 zlO$+Pk+WNN;3cJ~a^#fBJ{Xq|+LCDfhGl6o0Fv+a%#sFWj$;jaV5GCvG{X{xY`WA| zzY?xDSo&EaY{TpwpnL-ccd$S)Hgi7J?9YDs)-^g2u??-4n7}G@hr$auk@1EM)r#`e zLmb_DGb_ z9M}&+B#(2i_P^zRU`gYroW2Vb(;eH`!j=}3E=aJoO{=|-l;aQ5xb(a)Y^X?@3A$gn zU(_NmYJGLO&p*t$P`EYT;NFB*`xtfC^s1KVa5kKE1eq*(D_(9yqH#{M1W?3h_pqGgk%gCXj4GlXhIMB36Wj2(i?p`mQAto-TFz{}2 z5sUD}ir(oC_`GQBzD9@aKpV`AKy6rTfgh2Uqz@;$oWEM=yjsS^F`nh2uy`O<$g6V17q>?p*_qQI7%ew$_zWOL-RmsIz5=Z`l z#~{PNeQDcOkOgB^WbrOeF$vqAzv`0%3@x?&h~2RfFZKa^7eA!ZLl+BVo(#5KRUMHz z#vp%QxGbfhJAzeux`WZN^})~|5VEWw)^ZD>N=I4r>xlUE>b}}JRm+d}rPgm5u%dRnmxzxK z*M*w)V>!DCO^RBfB42}j+s7)kq^!VDysxJblP5I&iR{OFUe_(gxmNs4O!61JVC=}| z0E{&JS42SI*bk?#0BW6I%Vt-oBlQ;dd~U+-l>Pki530&GW~aYD=>N1p zi6TL~`*JtlbNMAW4FzSOPlL-4&# z+8=l(B{9%nhe!EF{dr=K0@1d=kCHO(#`nCU9emjNFpFH~?0-~TC}#{F9oB_X_Q+3l zE@JKO_k&>VW?_F+)9$dc>G9K`401#>UpQ(HzFvO)(Kr7ang_8vN$S6WEzTL~6OxT~ zdEiItaOjk(d62N*rK5ZNNX9|Y;e&=5$vQSJf9{2RU30ysRpC%MqWCv3AhA#R zH6$f@B;#Mt1`o;(A85{Kc0YOq-eDxDWj7+PBWe1hn)8{5WSW`z`{Uw!_yfhLw^7Lq zQ^*~+-$2=~;lLd5hDK`~v(dcuW{AfwHxF-m*eb@To?tq|3(j9_Qrm&NehHQbro%Qg zX;)qSb7QKeb#Yi}5x3s|}paBtM*1{GUsQ{R+`%U=16-ca9M+AJT= zAd0n#Y&vHa6oDSfk6tE!F|p*1Uc6YJM9+++nrmh&H_JFN%8vA$E@4{}kx8Shu%&hr zL~kuQ_#%8m`=y-uk)dfd{kUS8>9sK&Jh`m31&7yjgR9fjBY7db#&6@zaofVh5#Lb* zgT=BBAxGNgi3gG$u8o4L`VUtQq?$T1v9^^|z4-Ezcq%D(H&Ok4>Fl zrIo6FIIWYiOj%A13u|V=XRf%*4ih~5_|>$==8Zg{1cVBX(pR9#J@iz=fZ@f(TTQ?e zEpx@#4w)TkC3ti^3BbjO%bZwdjRlpdsNHR4T7&0`k1Yqe1H`KNL_@`;+UcAYW<1Cc z`z$EQ*AL4e)Ew>5M*_m%z#9%PIYv@*MG}_?kQyS(nBJpmwJ{V zypL05;MLOxF;CiD)AdCP*tu6GlM97k37!C~ro0?j(}y|qJw4DnZ&dIbCB(#2Jt9&) zke8fck==I3;OxWDB_k$|B43Fz!M*pEg^*_m;>J{N08E5SmFUw$_ZwR+K}wn`ULkGG z5cnGz6mvw_IHR7TeGd@OgF$I!he1_eTz@Fo`Fd*N;@ySyo(1DOz64+q6HF^H2?pJm z76KZgKZD;SPVfb5YriT7JnXNtRGeCh-ZD7Gm+$HofSd!)a-)`}*Z03Au}yI#6kD=! z-uT8#X!1^qlaagV_gP2^2&BiqshtuA%6sn|$;>ZH2PI`~KgN^3>?`dKN}|CZi{K_W z`nOQt;hDP!Kfva^X!v%q3810i!$W%8{zn04^{tYQn(hOtU-Tqtea9)gTg}&Hk0x51 z1~N%D?_{dUCn*DHiFuhNkfXLGl1)MRjV-qTs3HPaQf2U<1H?Mb#qXHvSf~T%#B^TcrawqI8Maq zx?7)fqt%)j+>88pNLj@Bq`D&WtuazfPcTpJPU{v0PJZQ$C~0A|?kQ3ZHwfmiytH?5 z_l(4-{Q$d`Bju*f3dB2N z`XxhNRGurW|C;{%-`*FA{;)W_@Z)7_9p!*GNO)^U9^5*^T z(A(bNd&3MI-pPn#BkRoSf&q4MLh}G-wNUghih2}GhN?q;0~_2n72xcM04-u=X$?jF2o9 z`B$@|$)4rwyYR=JN@}&qHCT!09?JYxYYz#(ddKUG?ef~M9bVQc_ne?;xw-J67 z(<)^8!OQe66#a%>{5CYk<4I*u=63XcfQd9THhOhjsENHD#kyTB0f*7PE}M2wB$U@usUpI!;!FTR^au0r5_4$;Ink zqUjBLocEElqcP;Bt8bNv&`B^D7*D|vW9g)7a}S^|Dnqo}<- zg%5t4i#R~P$@T}wl?ph_>_oZveJ5M)6n)V0E$d-&%uQK8;$Y5pHdG{<$F`BqQ>`G?>3X0<vK^KZRfv44r87;5v0@%I1(#eiI2_pDowYqM6Fx2J~BgWLoaI3Y+yB?p)>T4O;ugMBHsqXjM!n?n-fJv#Jv70-#*OCs69VhD;1j7RK9yf}C zqOCJ(dtg*NVIX*fyIrhi1f4k4!*g))WtX!I`U9Y9yeE)&Y1-? z>3JQalrY1qmYM?Un;inntGNBvV@WQIo>|3D7>XdV{h{phlPQ}B(?JKuuf#MIQx5YK zFJ9pn%=yT`xsmzFpWm36nA-Orr-fuGaw)1#omkxXb{7HPW2pLP^{_UL=v(^yvEg(4 zHJO4|?J2Rq(!u&u0VhDF-K34ze5#;3`RQDgv~1@oIb*r*!}np+!%~_ao|J~t`1r|1 zHA#`v@ZY^x{}pjSu>QYr%)pJ}@k(RFG?m)v-THbEfvNCuwpJ(3kbNdxY;U}JbpmEx z#CM|?Z|Fj;d;leVkG73z$`3!(lhJ(Ia7fH}={a+AWe4%(@Wte=q9NCV4^3(3sg?T8 z&b!vvnrG^)W1XP03VW2pkiMnMoB2-<`s{ZXK<4S>WiI*mZzo4yMsh1`fgu<4kPi&E z`q6jL`S(V|%A4~L`!ebvobnqeOlrn*&)6?Z9Bf6sA^!6U%Pez#wuA^GHB2I!TQ z?XQ7Qah*6a2ac8)g5zy~cdF!QD&s&AH!0*=P0{@FpmU&zge`uO!0H ze2ne#zj)E-@RDNWPsM$M5|BRWNRzqf4(zz0JZ-2Jk+S zc(K~;txDwT{jse&@H1YD*KR;hNGrakzWVzWc=EFIOlxy!PDhi`S@w69B-T)x(Es z7mTl2t8{kuIx`{Vqc|T7OeaOU94hH_keg5HlUdL}>^w>J}tVLja^ql^UYQEv? z=buItx2w0_ib3qA`H>g3v)jA7#(NGxz0K>^-C;NUa`gfD+Mi02aMMI}ld8lbDXQ|q zBfWo}D14y#vUM9w2rrX$0VTz#n^7y(hxPoKdyhfW(anktQ>c=}qr<2JPsLwzt@#>B zfcpUWC_O6}{mY`fkfDr_T()Sn(A7GwdD-C(*g|Awoj!N;?tFu9Nk7K;=FJ{Y=kr4` z=*f1qX@Q=VxTiC}IV})9uz~R79H@3AtLn zN~L*LEyrb!M`&RR&c# zZ`fZB&wrPJFB7YZsDKCb=5TewhS)UXNl|dh_Oo9z7m+T(crg!7_V#nIsKn&KR?&zmt?Q$K3 zy(VjsS*F{z-8RsmmGuM9)-Nym-*IbL1WeNkR6+RB=)$Bzn^Pzn^$=^~*H~?I;#Qtt zllH4PuQ3v9GL)hBl5KQM7;Uu_TGMe)^o}|srj=S8WZGA^0#oBxW}(XBoqI&Qg|ek_1lv0CU@~tzy;asqkUXX9fZqGb1Q?jYbw5hgG|)919hS zLW0H#Q1*2?F)Z3dXDyC3sNf3uvS&0g1=5WbWYy-jcWm=f8t4tPEadAujZ^27NZ%;` zno|Mya~=;nh+?&3LoB(+|bnbms$G3O4&7!CtZr?{W0J;asM=| zohW>Uesin*yW3iWP~VSn5RspV3urEs&`i8mH=_+su?#y#BbNZmxL~d?uub9Db*;hW zUt@_!i56GhMar{KB>1FyOdEk9)ci&lASO8;gfiD(EjU7Q5dAjg^y#p3*EXpN-+%vv1hCL^mUw_nvWrRcQ z%Es!?1bx3Sc>Be3omeS^#Lq*}f!#w*=Ml;x_1qg|nf<)Y#ucmQgG&#!h$3#=&OPNG z=bb(!&G5ZTcwVZ#ZMtCWFD8&L-ZOP`kvxB8S9fk$`InFO(gfOGn}glzC!!^T@?(qp zhDSfeE4n`XlUozd{58ImcdjR`MfE101l-$~Y>?bmO_Je!6BcvTW6|eF7#1aFQ&|@~qcO~qeo%RH zk>_>POTX0qwDCSER)>)$`aPz6JxqCH)u{m0?R}zk)Rh|t{HFqEn({-Ux^&zkmRdJl zvP6}N-Hr@@@~K-e|4iQTJZPPdt1r7W`i()&2rO#ZAa@upb194pRBxRo59~Kn#tzbL zUUhBnR~97x21KrE9=3qR#`n6{9unRyuI!w+N}F6$UXVn51s~6m%NJE%-dd&jy9oRE zwujh1^|1PDQRc6?&R{>;BsBkmMx1#h_Emq-%rd)v*X5`$$agr)d# z+;s`iV_7@JF)p01Ss-JBA3CGFI_VN8>hmGQlAlFT8V{;^7$~IRy3R-ne@^1@+i?eH zZ32)sL31;K48;w0Okkg4%G-5nFm4PlF<94-y4AXpiGNhpc|PF5=X>GCPM@t}_)jMv zcS))QLGVNUjmp6X`xk>AB-qM|!jgOamy#CeDyF4y^!;;>M@Qy)IzkTZYSeDU2~p-W znx2#u(Cx1*2B)9@LccE%lo=1Ma_(zY-88+SWx2=?=bkCI81w)K`Z_kJVx%6*_noM_ z;P6n;eA;=)$)!_u&E_Wrc`U?+>TPQdKWAPvRylG$Mk#F_M^t1PC~Nhc ze_Cg(I_fB^QZ6VMW8f9(R(IVDe)8V^zl6!ILUmWDT0N4Xn0HquFan1=$_vsTpuwqn z;DT)|?648FM+egu)g-{@=iKCWPtjXpaL)Fv+?!_r{a0a{2cXgG{kQhuX6QBNFN@lX zSni$J51`;T_K7(nrZC1sC&Nk2ePUW>IR%Hf0eH`<{z4J+D9! zgYFzifp&~-b6~_XZbD0bnbQJ^xnmd3)cKrZ=7$AtbU~t>FscQlDRU7kwOBsu|BJBq zj)!Y|+s0=M1`$FCqQ^v+=w|eh7$tg-5Q0RBHo8eL2to# z%{}~eqE}K6L3`rgW-4Q@^$FuLWMouN#S}%A4b8uYLd~1qbyb^j-=q2=mhOE>K){a` zDPtgsAnY9!U5Udo;?P6Mf(%fQXfTc%d8d-n&CrG`1~?5p8;+uMYZU4 znCHrRJ$C&acuRUw5BEG`{Bj@1*>)M%r_aS*YV6aS>d0MTW|>ee#FV1gAVLz$2|wi>4~2=bulk<$!Us1 zxHcb!wqtgn0qr@dz9G-MW2M>Ru|_iZm})K2j|MSYuyE=QY!JqIKOgzo$@RJc6bo-T z$g{2%4y)j5IudW@peXiso=aul{XGQuwmBhIPDRv$u5OFseyL;MTV6e1R5|a9GDnfi`imDUUXDed{RrSx2O05aF0!Oc z>yaqF;i0VM5IJc+$Z;icQ?p^FugC2p=8Vnr(?+ha8<5s9cIYwn@okvnbiC$-!SHx*3dO?ufr) z9k%4+O1&B-D&YKHLWtsvjyr6CK7QY)chJ8v@}AbAa=}32?R|lJWVqK?`G0*5PEL54*{*>jIQ5|!r;c((HlXeDAQdB1E z7vSk{+BeE}aFp5fDg1lo?MgaN!>s^z3y1WlH_E*19E3{moBGvn=&9y)2sndU4geBO znx~}R#}C4q(l5Ls?}ue^alfnDglHMv%k#a}c@(qc_hqm2FA&3q{bF@w%9hu>k$yA# z^zo3^M5Ua^ZSDCodA;475%2uyUq6X)q?kjz{(tfZ7$Ol|UJ8It8r{kl{Eb8Fm7~#$<)w->jnBaWN z+2HY5Mgoumug?eU;GG6ck|j&LC9@<#bBI*X*Il}8ap)~SWyh~Kl$mAA3tx3UffL1g zla@+HM9uh=bI~GisD?#$xbdr7{aqbW_^2VsekqjCaPd``j{hb|^B?j9QIMbJt%Lpi z0YzGJYP1$D)v1BF4)I)Y|KK-_j_Rr%efVnOi?9uK*ghTjCSCuA7BKDp-wRBN5Uphq zH3lnxflOvii95@B=iIeYUYt6_?2evk6xXdYNd@RCo#iF@zR%Jfw{8#6R}9y5H{CuB z+fdwrFtQ zQhLIOF;9^&!+WYaJb>O*{;7dpq*|YQpGr?)+|b2-jj4@V3_M+%+v{p04 z?E9KFb`!I}w7*;_K}6uOC&=7$$9Wc@S__+vxq_&F4`XSnXhIHvYSBD@H>@?BCq1lM z_{z0N@+Wid1UY+#Wy@x#hr!TaK;BQr5ZQ_7>j~Uc|Kg=63%vNzTu3ts2xeVNSkNsp zgi+G>F>U}%R8hO%NmKN0w5b#%@rT~@qTBDO^-8s_D$ZkVhj6{|XjB_)yJ4vpZ1*Q2B+Z z1P=BF1ji4Sxc-1tJ**8LYM$jsji4uv6REfR%!{LkvGg6KP53W{=)~K0e4Krflnlh_ryL z5;`MM0as+)&+I9JC@MK_E7OH^=wB}%in;`eRtM<`=RBeM9uuv8C)PWsoD^=MuBfI1 zBQddjjJc>N)KJQDbwl}VE0V2rJLZ4KQvvD7v{KYU0?VTJwif$(AW7g4ZI`b2m?he_ zd!ENS4A;Zc@;($-K)EW)JSSX8>R4ZzLRGw+`~(M#Nwzj0?A48%v$n?qXf)b57cJC{of{l^4}0lhE&i*vh2MH!?4V^`Nf zt~yZg61A(8(LYRoM>CpCd{0@bn{5wjVG8mDh$4Th@95j;tQv+QGfA0W23vb+zvX^& zBX$Ke_w5O@Pcz7?#4Ea9kmXk!(bUTvaQ}Q{F6Dd~5w#Na;2U&WFq9>N#H#U$LpV%I zarEJG-w%WuABzOa72xH89KU zsV=lp`LV-B&IV{e9LKF0Ig9^({QTV#hVF?~E{48WWHaLJ%hibRrQ*V7urO$ELy>ks zciv*V0EjZ%are&l{zRGmqU!vD|LzQg2Ykvn1mdRapxDIh)}~qQlexb@k&LfTfRDm+ z_FuWgRR#~9oSz2#IY#q+Kp!Bp1VpFeU*+;Bs+aKY{7* zW_I?Z)ahRI`EP{<)OgdsuLzU~+|}&vfWpPA-J^u|BIUo(fz~Ts4yi{)gcV1PZi_C>vo<4Kq zz5F&KK1-GegBea~;bDoH!izqI*$G!#$v;{}4;3JCZ|*Qd%KfWo-CRjke^8e}$g4aF z+=0 z7xbiKJmll)om%U3#W4^bT-0=QHJp?>Ubb)@Flov%k=|O@zN1RYaVZFSX{Z9av3)Oa z_lj_ER$st|676;v$@{n+oaKIQWUR?>lrbN{#ka{eu+nn^DIM2~?4+^ZsctS4Y4D?*9vt5MK)aG65rxWSz<2R-~T zwS0QiPSfB_=nr^nWW4O$UXO?g9CkIZ6M_TGQ4C@i9zFD`&>w;gf!59IgK_B7Lhzk% zE>2Zq%9YV|d*K+)sWHUdejAMd=a=2MW`f!9iv%8LiVVYT4YE-#SS2h749&_zQ3a|J zA6f?7(Y%B^3J_i=pQFMIaFDXls7n8$=97Ix%$DP z*=yRy~C`T$Kp z&^xTb+zM2#jT7ZvQo&OPH%` z0Qf@jWt;b$b8;qLm|xMz7mZKQTMO{_o&vUw&;c*k*yII(*T* zz$&0jOgiQ2z(sXRr~meXuED#5!oojl&{0{#MKB@}yla58u=fhOU8JUF1W+cm+$GAi zEFC|3IY*6FHv_c=f>=B@w6d|3kz*abViCN}y{@7@J;EpkOFct8m zFUX>k&0DW^rGoK5eZ;W-opOV#L0>r7s^*ZZ?usOms)HuuFhh?=L8YQ(1-gpl*9GnV zxRz3og6Qw*50*)AG&#HyY-H6UD;d_ctkc&Ta`IU1GQE3M!8aOqruiT{0^*+hi&N6H zH>I#Xj_8RLhu=)od;q`sJ@XUGYZ&ge@|%piAP$Z#-|g**dIXJ)(mVcl>12=a4gyc_ zJ=0OHqESw7praffPjHX#_t+mg)f@RSIRTe)mg|JTPkTH}dyA-EJ1wj2c1*!6=PCg) z+=`Ob<(*}jhNqz)8gQ0yrjEli2RQ{KjrprarSBEDRHg;t7N27^?LsFo?;p;f5@!&s zl#X4DS?jq`34z7tW)8{0_Lyf$^V+|ECwct^vN2XMbYT-*BO8uwhQ`O=xmHLR<>+m3wbWUN&RTu=C)lsNlwXOqDtia0FHOh)%WTkU!Y& zUFwuW4;}kgYxOej-)5NU;SY-#Bhm3?4r3oErnP7AFs=M`wa1T=!ASH0fFrD@g|F<< z_ZuUM{ZHDj14g^qOwiF~g%jSAbI##WjkmVMzS}#kpU#^?^!z#R8`NM>|o!v%;uRXk&O` zxzuNG&07tgH@`}Ex`qrq$YSc-S=&thQB;7Iu*{Ab*S#l0qT30Zqfni`srakDK0QPW zna?@=KT;9uq^fjaQP&{Abuw|0%F8>7u{+av*%y^4I2Iejk|Q=sk7fS0R-Jb zpiKv|n(y)#=uzQ}`{DJAz}WYEK^LGip)bbhSviSB?VgQfLUlD}0%~XTnEMWyfd$5O zkRRPN&4qt9c2H2A=G_~!8uwq4bjqGf zd>iE}Bsno_tGl6uBxwCz=vBrsTgBN$la{-8tdkoT@&$crzWR76A`(m8O}%WVlYK*2 zluFoVVX#tyRwOQ!$hbncO#$|aj{Tvsa7<|D98eYX9n1EBzmgy{<(*H|(M3mD={|r? zmJIp=vjJ)HZ`m8Xg<(mBp%N_RCAS8u&V1R`71ga--WbDHAd^E8A))u(x+7GWeTzg} zU4>g+)y@rwd2=hKSLAj8O)V0|+{i{Slsj29+zjiQ6HBE@*3>xNSi`%;uSotwMJ|*V zj9&@h;_#N^n>L87V+#gE%`b7q7NWi%QwMy;#|lIIdbJxtGH4~D6}e%|nf>N&2%yQj z5TxBmTjcfvSVf2(>y?C9Rdhn5?6F@CkuaBDQjAqX%z>*fgbROJjCj*otEFX2t)Qk` z>1Rnl1aK>3pnyMdK9lyhFr{Hl!A?`N1n{GHWYCpZMy}d|TUXL@Vn%E8A%-=V0~xQ5 z1z-{-K;iVM!i+8Fw|w%8OWm$Lc1c<+_klJddg*XP)6j_CJ4OU&XUqW zeuH|Rsig<;6JHotqm||$L1jY)IOKt-caL;H)|Ld1S2a9BqlnxmUoE$ownroGGh6wc zhk?C7}gYnWixse0fmB)G~}Y!m}LKXICoQXPMfeqa31vdIGupN@-)eEby6znHhMD-zGELyB zbU#>+nsx9Nu#7B=*k#$s}fb*sJ zQnTl!^8+;))(*VOI{8@@#KXhbgDSX6+gy(F2FGmoFkAEOgmRiJE~Wz5dU2|_<9+R( zV8zQ8Gpf0_e&8_H^f$QY+I)$>2g=z;oa_5<-GzC{4tdi*ehexwuWH7mjhQ$4F1q79 zBu4CkO3)?fNl=|m^HT0yOkAHuSACiS`=j6s-x`*KGQJBZ#x^=#(>FBg{tl1%5U@d= z|JAl8KdB!}G)FoevXHt`4J5?ujgGqNI$3ONgl_lLQr?|S_Ej1A!GMK|+*gg&pN(yz5yj^M% z)PWS{Uvn*0w}oO0Vij2Qwwb$j@uEHpfMmQUT|`T~DBb`UL`|BArLg&>BCAQ)!6wPb zkGbwg2O7&!%`sWfDa@hB$)qRAi)_q|`$)5CpYkjBCr@Em2VlyyifS~p}_ueo-Bh~sc7qFokfs;P_Y9; zj$yp{^iho6Pf2=och9OqA5s0QNdER^7s+QP=~_RGD@I33HjeLq8j58$kNK#i!PGrc?0s@_A?DhY2*Xf6_4#|sYgEDtZ_W)8+J6|^y3m;26EFR>c5NKa z!bHXdRJA3jd_g;mUW=y313E_;H4_Stsi?djhlt@J82U;B>svm~hqYRZp(2OGtbTU8GI z938p>Jpmoc?`IT_tzS1!u?TqDwZnahYq5kD1Jd3rcDs3ZgSRx`l3e$M#l-EK_H4Gd zq`X)a@*E9$+)UpZ#89afuG@Xu1OeRa%zw)gK`10WvVG8fqT-tx_STelriQAE)1U;k zXhr_^YlSpgiwB)ABIYICFnpcjgJOz|t0Ic!(h=&Wigdav@_WtdyxI5*EZ~wd9kA^C zFJRzbfB^W*TBu+uDrX1E#zg~v0m)1~8_YlqP@SR7{e7Kx3TP3cO9?B?aowi_KFBT> z+Y~@BK#ILqP;-)>S+se+mQR)l+;3*NzOGF9miwVMUTq=I)3eKgGkNQ~`_60l;opkB zg_LB(I4Mit%pzLalDH@oI&edqMEzRxkx#Gmbq~in_jP!wrfLT-7Ea9m6<*LTf2Z~q zxm>YWWSshr-0j+8@Mug8u?j7pp39H#Wr#4uf({y9YD?8fkVa@-mVC! z_%ZO?aFCkC5%gp9RCbDl2(X38YNZAp_uzEZJ_nG8BjeUxK`I|v>l*RQR9yK$suK{L zP&l3}LcY4(LP6~32Dhgh>h6Ti%=2AB>oNR^`?zYL`0rgEIl3ku*`cnbMaP$^jyw_4Xq? zV#QeDDXl26^i0+@T)ztH>n5viL7Vh9QOk@n49;*?wPhTnHn1Ju2Z&eECrLX^ZtvxF zf&;z<0j6a$IeH?stb|WgB zC0|vr7sFa0fu5Hmi&8RSksWZ(gT4ABSAa{0V%)=IT*rEeerdo}$3EN-({SHAwO5R@ zC8jpp9c>f_sUdiXZ6JYBc5Vg&d{epfi1YZdS6uutkpv#D*_l*Bvqcs>5OTV&+kuhO z_{=Q}0%T|~fx){|z*(svc(0%Y!S(2_Q0L_~By;Qn&L-m{Iu12=Z5@BNFeGWOd3!(m zN~p>%(N2Sj6gW&)2Oc1j>cj}bST_o`66;5{x}rqdIA}GpWB_lwa!K4`xu2hdQt^P} z+Nw0m^+*Ug%$5(Y(m7@;{!|_l% zGw2iKr&XmCb!+;reT)1{A!u=DyjO0GbvW)VZKhWz2WAMIdJXF8a;T-CzEO3-Q_iMX zT%hooDEJ-5s*>mV0dh?TGHO}I2gtprzu{{pl*wn~mrC?G<8_rG6uh~fRKo7K;1;eU z9ijnE{&6do9bqs8GCR7zsW?Lcslq+)8OnGBK&imuSaUWo(TH7g%3ALD*F?N%B0m|- zlWFbZ(V+uIa!|%$c?-+u9;Db?x^=zd(*q_tJ4kGtar$4NwrfT90%h-1uYi2er*{FW zm$z%;hj)EEQ<3*ro*CaRLQ;hl+v^t#zYo`N9P8}tRXbc!2r>R8*>JFd3T=Z)Heh3| za)~e@^vPb0U#oj_P{X7JRy6`wQRH0qh_!8Fhy27>PPvnOpNsG2rU&P%6^zZa1du0w zJ8WkxcU9rqFnS|&jURrCGb12|U+wLtQz;d777%D%ak!)Xo>Ttm8-G>2C(r25(g4!s zuC1N+burd~iPQ8%8ES8}Al{+tI&Q=+>10>K`1jjL$s!sh+rw1m1PE&?$MBcuH$l?Q;99 zRFbL8O1O+R2(zn5ot52I{&)86*sJ z5KAWZPbhMJz^O1U@|JGu--$X{HNPYKp$0zjP;B_wNF!Y`Yp>*rrXN(Vx+(lg!wblA z+*g|*vE%aui&iP)iLy7f4{U=z(*klWB;gAZ)A~=sxx;f3?zDfQEXbn2#kDNTVEAsR z>YlyqH_ID3FAEakYkI%^A8fobt{oQs^wc?0a=~Fp=s6;P(u`b>wwua8h8Ft$T%tmg zXPDWXr~vRzrFaVm8PWoDH=@52(EzYr!eJp2E_XsvZIDmgHO9Jn^=63fZjeubdc><# zw%Xzn@x+y+hl&ApQ3_(}&J#ukl0!UlCgspYyDP_+>8^vG-l+V_AGgK#$spjO#5G16 zc<+}~&e{Mje$M&)xxqRgs82|twkhHEYxYBiodR7A(jznw5eD$fR{iNW1=+@DOj&fr zqb`1@DRVF{6#xg)`Pu`6T(F>A{&Yw4D{S3fy7CXA8{rB#5u8R$o#Ej{SlR;8{ z+W)g_72p8`sthMNJAjVJGLv|$2{_eU!GLgfP{l(|9I$thS8nR3|G|01{fuP-z7ZLsVpw7V~I(1*DYai zC5kMI$>=Hw_v%`D$#Jl@sY{5gg)q+9=vmUzlJA6)u?uh66FbsHj#=pUI;i%3L-B<^ zB8;Ro+*E~;?6KNsGB6`sbT@F+=cx664`A02;B7k1g`=*8;1-1^7at}U7D;~1) zbqb17H^IeMIQUaTl$oX&f!tOE6BraGw6h?G=u=o}6u4W<`I48gjG`lZ8p8JQr^5I` zC=iqO5Aq|R?t%T*8NGPFK^n=xojKgXDajR5kt@`Wkc~gnSV5d4Weuh3y210dFrYl( z#}nTLZ~QwVg4Nr_;Elba&Y31YzNl9J_{#EMT%tcSgPT_(yuqRkULs$t12^}xP;=gF zzdIJKM?$+$T?|l0COKY`z)N@}%niYl$HADVI>kuL)R*}W(hFd^9c?ssKhF_q^^cvF zlnMs5LK%A`NQ!9*xhkqh+= zJd`5G)jItiRnE_X0Yyr|E|z%MZ4H(K&3k_w~y#Dnlfo zqHN_8cE9@5+n|XFa!zvYWu+{|IY5rAr1Iko^QSaewQp%|fT)yKu`hea0=?uLTlW$N zf_?+;3$1mh3X{Tld39Vv|G<3*SgZpZ$0cIn>h!es73Xq+y!Rg>dMDr<=9QVv>?3(c zHEbzpLb*L8BhKxu&}6xMb+!>_L(=u5&_4a@1`}A_C%ms~`-3IM?fvDq`(=8M{GOsE zQYL1brxs7kn^pjh)%B5730TBE-_w#5?`}6QX#aUa(gamjp*iaK+pr6r-?du>dyIwl zvr0p#-h$!>V`C{{o(Qw{%$=3D^d0vf+P^D(EuDPNH$Z@W8tW0p( zRocWCR2G{`mR!SUJo@%X_#O?X4LSac{A_R7vvrE;%k1R$HSKN1dP8p`4omN!1OvGx z{;wmk7FX8uCpsz;>*q}Ox+yB+%`vCD zhWj$(o=yh#Mzl%aAKE5hehpJQ&zjnglb5_VHhJIBNRyYhJ)X0uR%MgXo;N5+n)Y-t zJU2zq6V2$8AL3}@)%em5er(6Jo@pKV$`C!M9dgUrTS_|jp&MjZUhLX4C z!EM0W4o+vxvv6;L|FZm;SpE5dQ|hKJz*bl2s;NR)r>IuhCB1w3d3ThhPL z!wdd8pJe&w7;`0VAr+X4D9Nihj4T-{5z_=W-^`=H2h5Bsfrmba8y9nH?G{IgCFRx+ zzeYg3Uob++J!pZSIVb?qBmGw5%yj}$Q^nCOzZ--9G;68}jM$`%zV2U#rffDt#9nji zh7!A{1}VJ8Y?7)zQR%RhT(qIaT&<0(J?6{&WN?Ly(2XQ0X!j;CyLRe*j0x7T8UWP0 z7MULD>svE2?HB0$rvw)$h%1DBPubA>TFW`!vM-_k)l1=1eCH;Pf|zhMSv?(Q9)a%V zO?A=@oTW1{0?y+D4U)@>(1koW**w-S%!f$U98T`gIVsEnfG;0VV&rwP&;A`Xbars2 z@EKSJFjY3K>2otH@NPwS4w&z!F=M?d}o#R4>IfZ?IC z)O30f_oq4FXp?8L>ARjTz^ZlvhRFEm;Qzf97~Q%Ib5gLOWANWo$9#StXQo&Jm?opk1xm{Gb-HG|TWtl=gaU`Z)tlMhpr{6^ zdF0lLi+lB%lQ6+U$HUkqd1v}C_~y)OG>-%CqNm)2l)Pr1`F+%b4>A!{-Yh$fRDQf} zW+ATx$5x`^M+E~$hK-H9NTv6g#$mvn zKwVYPMhLfD4ijC>ChvpD%vASdeY{A!D;a!abR<@(Sl(a_@3XP}TOWK=PP-=vPV9M@ zOZ=jp>Os)(NBRvMRT@0^ImjTCzywKFly=nkRrjbCb77S;z#nS>RE@Gf+!N#Hl@nm*J3Vkg*)W4R(Hw+eo{Q(9Jg#g)9E-UZ5PoVtMM!?2>}yFrv6rLyRjNpcL&?6I9R zDfs)1JMcDcc|`)xXjIkGUmzo6I|@vOgN}w{=?gpozQ00*4@R3e#NXJQvlVZH5?coo zNYk46soaC{h+LzaQA&}iD>dq*GBTYS#QM$0gGIiEA2wAw2rOs~@Efi9ENcBV)nHI4 zrAkFLh|g7uABUTx0y5?p8{ytTLba$!bs#%04-czIg!2eZ&>dTausQpe%nsVI=>8y? z2(*?IEj5CF%2F5K=Bn}#-5UT@OW7Q~Ue@ttB+!N4h;9Ck^4(a|u30vksAH5ZB_hRG}{6z`<{QJc#laYM^%iaF>(`II%&d`{ObdGi+R z3h*r>aV)h?dzB7m`8CRzzv2+c`Yi|GB=R$SMq z@0_F6`pcIY{intD&J?6UmK4IOGSSnpRPY}CsD14TC1blJrB$8OV{G8H|!Xa0sG z_A8P)9w&g7NOe8{TH9064NJfZ@ch!l-T%Gjh&R`9QwH6@VmtEgRJuN5^4?joT3ok` zdl34!SN1|>2@o9q_h%=V$uN|WNGz2mSt(c$0DUY|hX7?=Y;#2q9*ST|jxrfBAo8Kr zPGR=3B*pA*o@;6V6K1fVXRZtybLcQ}-Ci{VA*6rJAQD6U4U{Vo>Xs<4R0Q z;0VC;LK36zj&QsjpPX$^yqn5C4?1TbNfQ6sNOWpu|5jq^HXFh0wE0)Yu(8oqimdy9 zl%;!yV=~oGmdMh87ap5ayZRjw%W!kdqz+!W$iabL>cx(6+N+ToPwgw8ZV8_h&uJ*2= z?;cwfXkJvrU`E+^f@=9-h21ntHP`i$Hn;YSj;nn9ewf1}I+E=O@++F6L=4uH>C8Ai z-Yt80h>}yr#lLV{Y89sL_!yx0KJ+*s!~T#J-6?xXejaqiS#pegplZ@^S5=8YwvGR zT#)9qBV`bRaUS4d7+`%m`?T|J%{Qmo)PNrpl-qaZ_}X%n3oB?Cp>joS?Hnu54_TYO zB&$Y4t=@v`tWS#_LjS?{r2&h=!`k2&P)bA+6W|8xV0(h#nR zG^|xqX9K8mOF>YF+1~P~Mb5Zs1fMRywlY*Ld!=OPQWV*i9Szfj8#7dPhabgh{QRZ7 zsk2F~brq#8<4S~cyQeW!j*R{5ey+&<8a^XRDfW861RxJYq#hU8e?4Yrsy;9#I4-&? zyQ7n9nQ5<`IuFEx;IF0h>C2Nhq7*h@{RntzIv@nsMKoiL^~N~L$pJZh@IYEB z<>I5-#rZUj&youva%f#*3K&Px6IPMgk@!r%Vo@_!#wb9v;*tOgd`#1)j(!7qezf=K z%+9?=Ch!S@5mND8lR{C?trcg9R-fZ1>zmf^ghXKE=@OS*jnm^}Yqn!_z9ZMx?Yzt! z+qEr_5ujHtkKsIJa8i>mA}x?iIZZ?d$J-XJR4`#MUVvUGlsXC|OPzP^a%fPC;}VCx7|p&zA^51=QN?JZO)x~rE#yn^deR2H$9B@x89)~i@oH9ZBv z!Qgsrp(wE_%zRvIW+=Q*J|9aev>U?XmioBS{w7}R@=48Ad`YwT>TBY}rS}cN$!cVe zS3&Inov|ECOsv*BUpGhPvzN(2r0+#{I?m#!pzfwhuXt&fCb~UlXEm^Mw&l@~cr(>t zFMuBAlPa?MY1KD19q{GQ?yg!}$2|E8&^(r2}L^cWNmDx*WZhwp- zgTkn0yE2wJ^f|v=5v$3f1BoT*h%#`n1ezNGU=y2;b$*N48ylxAQSx?Iwet7cTt9>@ zotU9)f2%DadQFDxwYg)f#V&A0n!uZ`ZLV&L1o?LS5msKZvad^in{6cn<4Fg4b9Ar? zZ};{()&qhWmW6<6C=kp5FdssJas8cO<=Fj>ubdnmI&&wt_fJcTYEV&Rv8b8#OfgKV zXSsf>*R_%Q-W1pHrSNj8?r}JeTgI>QFoUL7nl-*FakxiU>s%aO?0XB9(T5E03z$oC z9BN0-dMb9hWEQL)_B&kr{LFUhO-n}$w10#&#$IBIVDhb>)*z{WPZ_We**V=1Kn`t5 z@ILm@K{d;#11_Se0w|y6IAtow4>W!=8kkx|%DYp4O>s3WWXg z*!6jt2fjRMAKHUq-+-jz&Fnh4+h$D-qnT04G(Buys#&A*FP>y*{F{ZmK%f8oAVCXJ@w$qaMamf|%NJq| z7Lv^*=e^N5aMXDfkPk`3oM0CACx4Q_`&u@WOF_|TDP z))Tpmk_3+@MXklZhT$9Zsd?DO^BOxWx}L0?w8!mWggg5N3G z7An!lcEHL(MEObXK-zf0Jc8CqH!nOGwVr3<%~;x{!&D1Or97vLPtT;E{B1Q*=FvY$ z#HRl-cnlzW$?tcJiPLB7t9eJ#eo=J)uyh9?}J~53jw7}$&Cz|)tRZ}Dyc)&@y%9idm%^n@wKh2%`9PKe_W=XUk+xyQ{) zW6Gi4->XbJyq6OB`0R2yaa~Qm@qSu-vSTNz8A%265td@T(dQVRvpwFccQL9Nhy52* z*U>NUM1_-8JwWh~%_?A42@uZ^?qTq~3b>y$WdpNr_{H=X8=R&LlFK+3-wE=VZKQ|it ze~fzC_P>wG3r=?o_;V{-Mn=%5kUhkOM{W9SR^jCfsQll88p`5DOLX99BjONd%?SI2m$QE%9hj~KhYpS8DH>E9%2AuP4u^Qv z!a$e>w&`NyTe?WCHx_xQk}6fzW?=DqXIU(k;_ai+I7KS6_E&Lu--RY|r-1K*xx2g8 zbfqaKm+P8)#ZHUi<2JAtR=zA=H?VBFS&tCg8yckbL0&Z?c=wnf?aVwX*Ww?~=AsDI(x{unZVN6Ix)B<;Km_N!ralbl z>TS`4^R0pO+`)`}M;wAB+SGo6(OT}=UjFGxvw3UOwDw=1Vmt-3;|^~#q1&fpLpvJI zh=8X1|Wb^G81ao?P7d%6XP-4>q| zzp4q5@4B=ONQztb3+`~8Pk82`F}}`Hn{j(4)(9GP2|OId2TGWvy&5ayt_s}-8wV-m zi6@%p8Q#~faJKVc22UAW#d)9dDoUn)xN~`SW#Sb!D_ZXbwb{XO|NVsV=yLVo(MB#+ zH`NZuy~F1Dms*c`aJ!wXn!+s2)M+mt;b{H*6cR)dOgXw0A+eY; zMfd9{dQ38|yxqbawV3?y7N|7fMVC%hOu&1Z_WF>!S{lkyXEVhv% zxZ`2YL~?^yOr5{WYe*cRXHx`GNJR4cog`aI41hYUVm(O1MQMUTUU8kyBw}1p9*?k0 zwrar;rF2&Sk_QX>`byAu3PXkBYq_)ONx}dp z{GvHWt3oZEbr~^H%0sN=NfCPaTx8rZ+y1KX9chAvN;2x|cXHsSeX$jXs zNONM++L55(+Fw9Wi!pBhS+dgv;Rtd+cUMP34|6dYX2*J9ET`)Oe>B#o4bDc2u7MM? z@mV8uE>Q*au}6v=o{qQNtR*ZdQVeV|LgErz)`c;~#!t|Xs5wq^V$4$bzS^=aR(oDE zxpu8fnvAehX1`@CcOka(KjYAnA`@icB;zfEgkB^Iy?pk2Cs{Fj$_>FCO}Ea&y9FHn z^mWSIajfGh^J;8DR6kntlFGZm=>^a|@iWq~3Hxhr-+p=Vm0HPHp|@f{xw_Wk9!rGT zmwcZLT_+XZxQeb5wT{yZaq4!9s}}8*;ar263L>(;VW;Q!%hTs4E+t$-Q@REAONSCx z^lk{+(MlNVHd6?b+|u1;`SwoCr`HhdHQ5YW08vR(|EAad6}hOtp7_DdnMSF(OGQ>v z+K=Svdb0W2@cC?>HjBHouQO~_rQ*)!kuEfhL-MM!&+^kZQHLqDE)FSjF~$#)uP2;d ze;lW}glaqDf|4|V1m2`^r?<|oOV80m9HSo;o!37xCocQ3k>4g41qcUvVl5IDdcRonB0GZ} z;{fTKQW30@!S&wq#S~W7(~WU0$SsOincZ`=p@hKAf#(v^k4$|JN;=c;hcEhxBzq4b zZ%(aU-Y=|)@=h0zP^5VO)@)@%zkTBdG%}%ohe-=r{y^pDp2d?;^9S9DDD6a1t+95o zAeGEU(MuB7M4b4uX@L@x{ip{*n*g?b{Gn8m&aN9k1S+9OI@tzOjOxE|4#f_x& zJB!ClgVf$dHq=zGW3%TgD@^J~O2nmf$LuS^U2GOtvZ?h=N5yV7evDIfjVZF;qwlhp zLXVA4ZAi5;zskQMzJQ>7+J%Gc?f2-}LVM@Yg+Qg0NM@@up3DI|%Z5+SYkn2q&wrYob?Lc7G919qX zT(w9CZa@k7%H;W%O_Gb(6Q2e=hEcj|^ZSvl85QPp^*D1r^G)Y7ewx)n&+1*DALCNU zx*eZH3AI?48I_X?b)k6~nH}?tW$xTC?v)t&u@Fhn`oU!VwaKF(g)*mgNnpiT!w~75 z`7z$S2d@_w){NddBXZ0ydjM&9H9X?(qqm@Jip~K=&NQH z0iSSvLAy{pbf)>m1s`c z573OHmq5e_iU=4(=Iy}Pu309gD$8o-#!dmQ8&2SLHZ|ytwTh9_2lc(;I_r~ z?G@BT_PP*AZ_|NNMo+%%=FMcxvZpa$WWjR))inQpS{0(8dNg#Cgey!Qr&-#t8y{!7+X*rq+f@~7gz!T=g9&|mQTRTf#xx?#e-)5 zTtg*=O<{y*MXPx)uNiPfxj3@#?r9ssM7RsDQVF!tr2%Eyt?U4Ff4$5oixIiqBTnY` zC&ypCrML4u-Mm+>t~|d^Q)7O8rKuZp@Hbpgni3uZVs~E>pAYNQI2(v=Pk=?U!xt%o zpz4ntgP62HtcVqW6#jN!*>I}BZJ*ftFbjN_R5YhkV0g65noEiCUa97Q>Chm>F!SX5kapbXhakDnu*M?GLI1a~raC9WViYytIb zH-*?PIOh?;xv_7rK;2)jgPo}bNP#8X?ovd6cLM?176kVADAgLVBCGp?_daX9HPpp{ zRP@emuDG~CJXvVJiN{y>=!XG)c^s4>7LAFH(FJ8(k+qaw35*8^1+UE)ZHj9k0I2LN z&@6;UD-wvLf<)5lj+2$b>}(gK($C{xX5Lz25_A)__r{BQrP}UhDwUH7Rln3hP62RB zNHoXemvVquOfw$$W-2$ju^E8N^vds8(w<;DFSPDks0@Tz)mYa|Y?n5oNTE9g%2UGN zJ~_8KvN+Y z>9uxc?m5@b@71zi??W+<(F#UU<4lZE2SfQI`PDWF5Dd*}0q%U|sF=#<#G46Ac^^k& zX{bM8zgTZYMfH2SOhZg}xdDr>&FA9)sw$mlug&2Ih zReZF4PIg3AzXYYa=9-y0aQNtv6YPhmM+k1ydw@JuY3&pEzJ+4D1A7VvP~p0D==J;5 z^V=`^(J!g&5gU|%DeR}=n~WkT;XPC7gEI6y+vU>h^8g2m_9SBs8%1R+lvKqxQ~;~} zP5Aa)Y#bweAR;EaaL$b?x&I2T8;){1J)G$rNMoV29bZa`sklgC1C>k19w zJQkRFd4{}7?9<238VYl#McPyZVmamqNK-ih!B-BZ@Nt)S=P78+_O?&0VBu&_A8M=31@mARTD*%t<|l@*WAyHV^o@2v|PYeLrK+#1y*+uh(7 zo%egddFoTO78fkhXrvg4u#J*QZ)?Gw@j>UU-BVtBV;I^%{AM?bJdTP<$zgdI+_GA0Zje6x(mf4uH(BYSG?7qMll1C z&V9vf?}A=dg^V+y&D|?WDpd?bvS$FpSYwMpd%bR<7u;IN8E}hSjnBh7DsPhIyctJc zetgbtIXIlC^%b!=Lqy=JbpGJ!4~aBb=IxVd{0H{D|Qq+#@JHHjwJBF-Iz-BtmK zEH6imCpHOTe=mWaGoxq1`A~&*G(hXf5_u(O3 zdG~?S^wP69J8c%4(Cz}V3_7<~xx6JSv{IS;r6HnW6P8wF9Y5y#%Jm*e zbk9-8pvaBm=sfL7pR*%Zv7!W4G!#>vOrVu=$>u)VjUri$4E#a1uemXP&o$na`CxKV zJ;gh?X@`eDFKy`&T7sKM*l9+8`E(MiIDFHHjb`q={i887=#&jv&3?Gm+M$|$Uram^ zx5VS6BC8+(6$ShL2m@DH^%`L+g31H<3rH;T z8#o5zz>9GVT$RZsk&B$(t4wBb3Hc4ru?^>|#v3KXhYP_jD5YBAj7b^oY3_>!0XjHY z_)e~%f>X#`o|ed-v%*(n-WbR2Jnc*nGKwty!!Rc%Q`}^%ce&9_72h2I)6-QEo7P0v zLRpaYyZBQS&tGX0>6uJ*6r-Uz=;gf};bM;>Lj9`Zph;oD@cD2-^y@)*+CG7@UL`GV zNhDApqYvebB4%_SmO7p=AW^}gD`>0ZbqtcQK>)Z#ZEXvEj`y7SldU=F(c9OlPKMw0 zY$xm0kh9P3rz=jM70$D;u4F!gLv*24ArU4b10nT|Ox}z`;QExr-;PvFB}I29z%RlfvGEvZRc^pn7abmlh>9@x>K`Y*<~bX62DaCkC~@>!S-r1uh_`Z7vW{`6 z+yuAMf6kw#;=kkDPPU<aVam4r7Vw z$*?X|`ZOWrfj)3}kRajxF>;^{|L%&7EA~Oz6pJYkuzBR?i z=J0fW70RH0Vu}w5etSm`Cq+dkf>S`NlK*{ybM%~i;>#XACPK_Kg%zOzi;oKGeyU3@ zVids^Il_oRxh1XoV&se&5I{3zH6iqv9J=Y2Jn{6ReRkLaO7K#VMS%-TX`)5wrWYG0 z0JM#Wa!oqYu&9rBEf%qlHYPo7rxBY>Y@-SEhM4zeT>1so0-EZyAP8E&)~bYzKIccuzXC|&arJlf>1R~4`E%(vD`@ZvKnZ->p%%eXMiJgs+v<< z{g5Y}E!@L+qiPx^X#Lj9*Qu$5{Tb4Ww?79_Xnh4|y~QRcOb| zc6d#&Y8!MCUORo=JN%vYkcPs$h>fzx!&VX%`dQNrJRM>cH$$UNhSvTh&K0v6RI-50 zE{2IrJWxp{RZs__?w)cgeSzy^wa>M1?~m0UQ0a1`$#z@4$bmEHy_GKF|EO}SM2!DY`Tb}Zm( zRqFxbaS^n?RI>l(8Od90nCw=wp^-%Ld=ICvGzE$|&+J#em3*LPgfF=&VXrKc+npi_ zI?nS=czTFwxbf0p6Q*74QOcBK?V9}FVXgOh{3^=AO32TlrJo>P>8`7+L)-uB%0U1g&-%{k6=baZ?GO;&||S8G{o)3YVi zY`XGJjEw%83tQ}ErC0@ul_rX(5k)uSj`qq$wEX?wMqUPKizB@<+lVQHHGWp#putBuJ&okp1n2P9F?(CRh^Ki9BgDM`oKxMxru+?W2%6R{!&=L2N~5iE`sRCSeok=f zIfXT&J%KjeOv`eZ;Eq z=#C@6{*4%WAtpL~vTA{*d}es9z#3^A1$^(JN*9l(b*MBmFGpxeLQ5q<=L+h^Q58Wo z=}-I8$aesEh`i^ucz&lD2{#jBxScg=rB2Y1O$EaxW%OJ--isq?=(*gNWrUNmzQxAguUHRwjG+RE2C`Fg~2;vE}hzp%75z0$(A`;g@%U*5;n2%`v zTI}I-hWSveE_}ARK#1mHan(IVJ>WDDf24A_W4Jdk6r>}m2v1kDvS7_I!s?}qbk z3Eq*R;|laoJtd<$gHguTv>nFM;49M5Ae4b#67?a!GEHB^k`@&Y+HCgazg1xl-4k62 zzuuQbwE;=8M?=d%=-Rrh>Jf_?m%`tv6m$p8N6=sgJO;5G&zawS&2Rp&poZUW3i42{ z#6hJcMxm*^QB{xgqjF3QEF51G8u!XIJXX|6G=ABxTvaVqE(AzL21Qk!`U|`%7*7_} z7A(jRfyZ&RQ;^g!FS^(-C0F7gyuH`WR|R~% z*X%)iH~?O~MYbM2yLXlXQU;LWp*-%tIVRfJaYT{kR(f zBBzw(WMyv?lJWsqHu%`eP6K;}rW>H$NzrPERH@O54cA5rT`Tyx_qJAq>og3pG-;F>D>ymPXi@xu4 z3ux-JK3;$7&S~{kZgzja&Ght8Z8B)O@~}JKiW=rM=HMlvz-H*=e9773rkF2OLZJNk z$N_->!1l<-J3Lw*)@xzd@Id#&0KG_cP*mXDm+d_YebJ9Hhy~(6!|>JO!J#5hP(#i9 zU_?R-F91y)|AE+CfOwaA6E#G?e8zE3yn^E>f}NbB@B>D3=Pc&IR#o3)d@ zL!c-kV`jttPDj@Ydcye_!eA7>7Dw22g3FnjaikI?ffuPjBk1Jm5q_TOUls{ZX#p4A zgiRPW2n=xDj?qRp@{|55XwFGJ&qNJ5;HA1( zbi61cY(7%a7Tsp#jL=i9bb3+Ah%6S@QmW8B` zCZ7<%-1u<*nK%g%UZfB~u)P(?#%AHs-aF7)h*;5wH+N2+-VB6{hc+9O*L}eF|2p*z zUNp+9&~+{lJZ)5UBMJy-Qz5wcU_s#>-IJt7d`*E2a(KS1Pf4__YWWaXKldx3b0;*P z-R;16n(C78OG*=Sr-$o&LFkK(fse|2+f+a=phYFn$7>8pVOk(s(A+1k4^WyFhyjITYaH`#O>j?Jd$v#m_;hP{^4+&-zGxD!GP@ zQ$|HX+a%DIn2G#8+-#w^U+xVb)%MhTxEI9pyz7pzTG~eDnH8J_nmp;1S~FaH98kul z2xbC7_lt5i#|*FYJj_f)0dbrZl)HNd3?6jfL4I#bX$=hvKW3CcPi|7*+&7lA2S*{a zC|Hewy_+)KN3d35>1pH5U>X#JYjivHTmg6HcO$$c7x@Ur^zY1x+XX|N<-=U_XJ!{s z7R`kxPqPI%AI(n-15{#MM$?;mgu|;nCNjRl2hnz38yk_3I4X7L${G*Dwd7cG)7gED-j;j01l`S=9R4O*c2qQfen~>dJ zn!?=Nabv6PB>rl4O(ZQBM8k2-JUK*;NVAX^H2IsziOdIny$$cdS4dI}fH zUlGplS-9yVK!@w^x%>a4`|;m-pDAk6;GTa~Z6kpy;G(>_NneK3lN!ZhL5A|n#cwI0 z>U9!&G;u)RRS_!ENn=&F0}{B?b;F-i`l}zS8o?g_)U#}1Z46F_h4rO4wbaUMDSH*^ z{01^WeU2TneytKs@|6nS<7^@s9la;OdTH+w!G3 z?S=yiv`i=heIYCd6T;|EM`=XIi+FJ;)e7RJi1Z^}MH9q}k#31+6SqU~SAe6LCZw{R zZ|4(?lmul-&Qcr$6?2NS5M#U)%T-Co=%L(2>mqu=2i7AhieHe?5xAfijCGwYJ@T?5PlBA5;pWTwd5yfhWBpp4qmOQlW< z?0$gMN2eQ}WM$1qIVQaBkpzLZJi%2n;}E!B1i=$PuE~&$uHT^~4h4m#PUf^}L1Bst z?!3@Az%71osL6nL(bqe;NDk5LE6R+s7#srUCJtE;zvl$rOi6K;(FC(2OhV{mWMTJ< zx0ksgTyv$w+kDJeAjW81yE(_6iK(=7nNY{nb@CAF8bkOb1R3#*UxzlIQrL49BE-7c9Z@{G&m8# z$ud|e5eVUqrj-jm2d%NPedE+Ux5I=ErHN_cEDMe_s*;}e8I(V^xRM2Tm>=E=lpl+| z-!!Y{gQx^?i$)a@>6Xq!mcA8}mAv9rK{>u%pGz0_Pd8j&u7{S<#6>-ope;e@rBGB> z5_R0>{I;hd{f@e+_lH!Wkn=^RM4&-j0<}11#F2wqfvHFdhL2{&kq1XGKXc=B&x`ykEBHibV4KERpJfW$h zh*rcoJ<(cT3(wDUhZo>|93vlx^DBM*V(|Rw$6mUI$?;zxV&lRed>z=apj`^BQs1z$ z`Kjg-oS$bO?#J}XQ4?Gb<(x7-UCWDmASR#OmgYEhCKiC2{`qe@BmYp8{LiK`L^@lN z+HARgAvNmH*;~CGwZFTD2TD27&}6JZ(zv2MGloN$B9fA|_%0x6bZeFt**{Fk-%{qP zM2UNE0()gy7bf2Y(pRcGnaFBW8y_`^DENp=;04qrWEk2clMkXLLev_TVOKy z(`IoHh*gHJZF(*dOEDu3Qy|>qB9GWCv{0|=Xwq3`STU9Zo8K82fazr4Fm>($>xi&d zjw8p3N(hb*ADR-=GLZ1@SiZ1Jit}9zN3n}t!#+y%TC8*w!3pq=_Iu(Lq%s{r|Ay|Xm4wy_mD*9v=DWF-?J=k zj6`!?Z}AA91Ql4DhGq$WNcN=iN`oQ`wR^4Ar&f$?yL}_niGLh%nL$j;4uynk zrz+BEhQjsSLLHdnBNBDC7hOH1biW z9mygF_V+_DCE`Hc<5I6Vk5pu=Of`&&L5?8_z2@lp(sw&p=+b$8VqG6sjGEP=4niQ8 zK{DOKR@GDeY#5B8u16O{;24q)(8@(S#ZHa!mc-lsDrN-JP^8_Av%4ZKWAo)W>UZl@ z&QoQd#D*eeMig4D7+89ZwmqDWb}X@X{IvaqUn6=3^9iS_jtPDzF$cY&YrIh_L%>NH z=%axXKQAbih&4-~I?Y_?LJl<5z^KFCMu~7#PcV{YH{+(Z@M*2CIqGFiK8a5F?AP#yGV)0WO&|TXrO-(~k z^?QU!T;ryA^zvRAa`R?=2-rBlUOoUEXDtKpbW}+YYIOg%SG~GD%3#5yda-qP#Z{0M z9i^F3f%%&;&CkH_LNkL`A@DB~j^V(z1Ui%WUpNT>euIokqv1DrX9&A;I@E+v)Vm@F z6j7SU1e5>;0)!sq z4>XJ?)I>Vxu$yRY;fLi`&|ad{TbS`#634_$v|3@vY?uVjVRNQi4f3mCoAL?m#qnTg zv&%*b>jerLQg$Z{Fr;-@cC)#UH0g^M{FwcF>m45X4lmmhXr~)<30z zAfvlLSL(D~&A~BzLF48tX=)%5fR0hgf4?>S=7*D4S5%+S?Y#xhAYqU;>d@O6%Gf}u z%$(UyzS+S(R7At*wncyNugff%Eu&pyQ65&IH15qEhAi??l{$aQdaI=6%X4%y`8s^uRnBNR!7QCe1&!e(d>6 z;BC+tDb6Y(F)(xYKvj#!j8|exU&Iq3D)*;GGqNve2kFn_3ICKe5v7!8FGyLM4>Z}a z;_?FAqR!O4huA}H$Bdxy>>9~1+egBkXR`;l*=VSuzd#^9#XDEOM@9Bw36HKU;MPpp zn}j~P0IiB1dIZ^!A=spanLpDlU)h`nUTKJi^gy~VuA9$O3Cllow*S$W`2XmCAA2hGSH2%)6^RTih=KnV>-V>+FiU*Ykn4ePz}BL?7fC6d)%5WyGEZY(wf zH{&-47g&cLLlnWaJ7cNg6+ z#k9Jnzd$a?iZH=L2>SPbeVF=JhrK^v54qp9TVAz96TBCuo;j8NRf153>o>xrDw|mq zA;wmD+pCmaQG$mI0v|>7RVRIZ60VEO-ERIG9w4Pm@IXr?%Shk?`UQ&jPqsG%cPp+~ z>SGU9NvOX#jyM8;OLjrMWrD>zQ`N94t0`o+<^Y-S9$l@;S>Eu6{vlE(wmp1TiTsr7 z2vcw%>s#{D@7dK@Kem7R-ZA7K0=;<_oDKTRU_O!>31hO45!&Fh{3KH${fKqBIh@GF zT;`l2gp*QynLU}@oH-QgFQsIMk&Zi-Rza~o+9-`B7nX~9@ufe2trz=W+P8oBtnzuh z^tqnUQ0{Z8-DeBDH*6a|F0LV-XBf0wA@-aOQJzgd?DKq)=Y zFy#R$fO;vIkj|tM5*G5DocyyT0pCX}0kk=MouP6sgsz|Ewocmq(3hBy4(SlM%cmDE zMMhcI*vUk-wL3UmKVzW_c?&zYBla=QFMgpTA2^wAI#uPqeD+QsGClYxJ=umRIVLXEER+YZE$>ei) zj;F_jMJCe1QXOG5uMHF14XHDma?CyZ;3zO)y(zkWbo`}_2m!1>4L zIcL2>ffiHd@lcs)mb~jVhXyPa(19W&TwIYrXg4Wlm#5&=x1fAo~!> zUNybZH7PJn*a!Ps_bG*h)kZO|Hcu1wlMlf2(dhv8r0!zv(YBb*NdR4zi~0o$pQSw4w}iB&MC7pq4$a4@kG*d4XMkS z4`E{8E+;7TdbWUx%A}t4kQS4|+2tZ0O(n(f>=%d;g$L3YYX8l83^Ym?x9XjV^H(!OnEK$m$;Zjv z?8|O@5^wY0Jy9aHn1oyOU5j3@H`ZaqshfAc{rT}68w<-Fef??pJ7P(`yFd<^okE}Q zU@$Y#1D*gZ@#xqobA2sLkOYa?mh{JeTb|UbeO_R`@V9Z}2 z%$HCeF5;(DTYE~-S#{#OubF5&g@PX;+gtVuz_4xSWN(WaW=#0TnKTjr8z2!%>Y9Y= z%$5o`e*&WC5_q_QNyn39!~szM68l}-{%bOc2EtcBGM=}7!J*qFI43{;mGOgAV7y{% zXlS`OLU=nVXfC^^tge-RO_7ClU8Ze2wkZsd42u7H&m`$fY9hAU&)~AcP9D*n2GESe zza0oxu&EPB?75=r1lq?DUdul(D1FLMZuaFo>tGk3({-WC&w(UGCsqmB;Bqt9>vid+ z6fE6@zU^vx@!nbzEjyi^7N0iQgM*C<_9R35Y^T|)nnZZ8>XpX;96RLxypano3&?!@ zZ-5&701BDmUfJ#TR0 z&|>qQ1p9QvgsMAJJ=MoHE0ClU zE6Y2r_#CK5+{#DnSP3qGS3Y`Q#oQyoKg-UVcLc^8fa#~UH@`q3Ii@{FuX64ud(NIE z5-4>tMk@gLdto`i{s!9sR~$oe zkjnR|gLa9eVSBkUW!&y)GAF;Y$I1Kgw6pS+lX!Zn=Ou61{5sZE;ASHz-ju9?-3C`u z>RJAMzqP8Oh|>*s7A+uIlR)H>28i2MOioey){p&k<;xG^s49sUfLkHZeuURoVIYf{ zJ;$Zr9~EkH468jd(%Of82ZF!Q8n83#0$cgs&qlQ^@&R*hnfeP)7rRqDx;8(=IWN8g zD0i*xJ&tA@?YmvKQ&nGSJh^@46CHIx01Z@cnPNWBVjlh)Au%I*7p667Cp=&xxMG@( zkJ4tfAt)HBw`a%A{hYQh_6!o7an|*$J8D|oZM(Z#95Xy@EG{zQ9=*~_lQxVswd~O( z$60Ip`F`llWb>00EY~wdu~%eXT__ETC-;mWK2^}9!^jMsD(_E)6gVK%GOchda!NA7 z6&1`UJtXzD#HybG_PB<-wfYJ>^SZitcSPC3rf#`6*J_s!9J-bBnbJK*%S%;WicES7 zI+jsy-VTzS%s^8!zNPoRAP|{iyU*7N0bXOOytqc{MR3*YM(8oeS^Nk@ha_eS^g`eH;*6*+$yJA?q6(d0pn zVFdk|+&)q9wB-b=t3{4Rw|pgMkcOCd1i4IZjmh9gcQPH=lF1K`9H78N?-`>`P@F0g z{(hPg+_zot?Cbp#oQCBurGKf_avcUc4}~U`+rGc)S{Tz}R+{UavD6l2_Ni+reO(s# zzJ{IbpYzC;63eb1qdUZlANMP0r9r%> z&P_I?X)g24sBxq2I`_brs=D`LE@~*FZucl_*7;Kx(g(Fe$Gnzr^d!OyfM9_x6PEo+ z(X;IJ5K-LM`r7vg9M3hlMKjZvJ2f<>AKN?O1uz)DyX!kI`pgGKPQn^$Jz?vwXhD)0 zp@1k(70GjV801%u1ncmjcg`mRrScSjjmpIxO{}hQL+Axg4 zmwP{Af7WHCzlS&fdS0ixMuu_8wN7F6-%28T9!-I$d%HNXJ!F_O-TsBA8 zJC9D;F@1NFEKT}iCp#qTZ<96b&@~C+_Zk<@7o!M~OgiSyKu%ao^>5MiZzJoUjz^{k zpr#}EcFV%^E{qPMQT}g^7c;(9WWQG`2B{N+T!}Kg1P=@pK9Fc#EmVy-@PMS+5*6=| zYc1fJQr_8RvoCazkENG92?9rz${WbnPjC&Cl%O=#M$^wmQN;$bgd=yv?fZ>4qxVfi zy?N41A)BrJEfJSA*CTty5K_>1Jw8jVoPd2S74}TGE_rhFzoFb75N`lI*k9nw+GSZY zcF*kzbegtZN)nr{&_y7@+yxRKv-=ppxeL`1rAZy@cLGqfFERFeSYZ1v0Wb(xAF-RK zHe$}HfbJ=B9k9Xp$z3L_jcC4UoOmAMU<|$8th5$O5@c5-34b>(J)-V{2yUNpyQIkV znoar zEV8hf^Sn1kXH2ngf4){k;inf!BKO-5f~=}B+YZc%dgt-yEnw7J^xZD~0tJ_6qfz-2 zh7iRJh!DAUclx|5O-aL1NH=*>Hffp~_mT=c=qSa6ZEC8$cUoV?vNu;7e)8iKAjPL# z`reeSwcuTDE3S0?Ce{cL8ZMvdpopbZFU!s1kLi}V>MNlH=&=r-Z?&z91@mD|mJNM> ze~bygBQjE9wIMua`7FJ@IXHUhbe@T+JOK%DF~&B^o?%`sSY3&{9QnphO9`?r;u+rg6$v zwRm1latoF4EPfbbg_4!UT`#q7rj$7?mE zZ#|jhBKUa^^UWaiF6}5M@C}7IA}#bl6~JkAdm>qq9R4fkFHn}+P}ABetpCevo&zUP z&!~CnmEgw_(xim`d%1#h*=Mnq# zE5h5cU!ZmqAblywPQ-QRxN1re?r(&tc_(JHISRP$J-&uh9h3Oh2{w!1TYOP*0}M8h zDpt*(BzBnOuPL6D5URiglv2fo%#kSH~m+q#K5Z%cESn?nI53$BM9Xs`fvKDuf zm9stgHoG?eWgp;8|DJ2&AKhzTQwVHXJ^6HQ4kI?2_LF67PN7NHq-XM+x!MQP=SaxWgGsVI4T*g%Yr+HOmwdIRTeY@a2X;%DLLz zo@Xmqu?5QEDIMAdl>esxRQ^kLdC%`5TS=nTe>Vqj3*pGO(LIGa3wyhTc!Vyw82syboa<_+#MhqzqaY(HpSt*MU z*<4@)%5eg@?e-)R!FW;Nkpi-zuD0 z+uIHj;XF~U5?lDxQucr!*#Msq2t*8mI{1fHnY|&~gJb+QwN3%x174#IKL{!OdE`73)g?owx z=wTR*ojGS@x@XUPxh+adJa0QEjjG$~-*XinMt@~66kF$0fdjwuxG2;4tsKA@*d0+Y zLLF76{0wqB#oYZ1bTz&LtMdr~4Zub|2c!ro*tp8Y5G^CGPr^^Ot!?v3k?H=IFEQf8)XX zYYy_4T;$<-XnZ8Yy>QWPp^V-S8xq9s4>_uNY9R~LQ>4}~EY`IOjR|je;|^P0lQ2{^O>s?dH>rUBYbxyRFGD5W*{*JJ*Nt$CtLf=lb0|=;6iof`ka2 zBYq;7L1h8IR(;oMynHBc`7Won*vS5N*9memCUsc~kZku{X1Jr2WV`nPr9)Gg;X|gX zGNMx5`qb7gE3QXPlkCH!3z6ObmAsQ_58)o~zUpqDvfe((mbRzr-kP+!s44fMEM3F= zk1_Ip`kF~fMo?BbE=?2Yg-8nps=auoOUk7zVQ2b>ehh0duXV#mfAO zMODZqwAGrG7)Wpo5P(?Cm7`a!T7QsRV=q@Y2++wsv|K=zWAY&{;}AOcc04#z0~G$y zv!GAMKT62NXt6NwQDlds+3{3Y{1L$f6SS{jX?;9+rh4kN;?4e0dVB5i$*1IvN6u(1 z&b3#2MyL8Grk+OEaBG1SOTsr-ezF-k3^X_2`~U0V=f4=T-~}>%UM1X5Xt}iTE@B3J zmo8=O&))=Ux*>z3|5NMv$N$fG7!UP&=%lF?FC{xVU#O~6bg_g1+Ncfezw4^#i*Eu) zW`3~Rxh9;NSn`CI`K9`B!KD%2ly%08SlE)z$e!eKGBJ65uoUQiM@w+!VVrSa;s|uX z6~_$a1*ro6fPPx5v3%-Y#u>WQaXetma}+*ZB}+Iv%vBR1z3zX2%Y z5srC1Z?#hhV~e^AhPA*a*B8g)T+$d|ZUm5!dvW@s;I7QMN0^u)=5q?JAD;TdKz=_} z5i|f+WVnZnO%w!3J_;3P`*NC&aa}soI(Vn6_C?QzGW+C7kF3kzKFUJ5^VpM=cnD|E z-@@5Lm^8a@PzFL;?K1mA$rO6$QlBxvwR6!blq$vi3(zS##@~F!?BnMB0WQx*mhiH<#bBpZ9M0CO~6;Z*NSTl!b8Qnzd(gw0JCm!dGuh` zF@RZ9Jd|S1fcnWIKokLPHeGS^G$(kz`QSNOzEl+~NI#J)oC5qSbM7Ee^Yg05*%f)b z^LH(Re=chLgc#Yc2Ju)q-g~?Mz`GF`+Y~?ATvNq|zBv$@y%~yM3m~~ zDfL+S-mM0nYqk$L(wUvshfzC`VPAtvZ9`+#!ZH1XGhgk-)!v} ztUe|qvL|jk48V!rzNKje8Dv*~J}_Rsx6P|tyRvr2v;}Tz1Ni3!c)q^s#4F(uT~kwV zG0pHN57QUhfg!p&9XrBg`hO#r)utsunc z-DDojrtYp?*cnW{?swzrZ+A<=*&b=oNB^O51|uN^f*t^y0)BpD-JYS?1|F$Of7M!O zI~miB^5z~O_po=!V*mKIhWcaMQQiaY$y((h-}@d9{t25XU!_>$K1=uoA|LRvVjM~@ zFnQNyTb>my`W?ZmW3N?0xA-car=j@K=^RP>?iQ7eH|Mx7v$8gHX8$qIi-!0wA+%=% zKr^7-hd2jD_XuDN-}Y!brUwJSJ4Be;pN!ImSza5f3Y(nzDqk#UBN||L%FB zr)@Vse`^)x6iB-E7K{eS+dZ=f62(#D-@T;Tiw5@Dxjw;`kj$N&rx7A3O}q&EYO1d* zvGKPwY9deScQFm3>~L1(K~~B#WTnBBJQ}LKj80fAAW@{ey3f@zNT1ndp1r81QkmI} z=ASrxqP_AiwNaByMv@T<&-Xyz9(Et+Z9f!LAq?40n?svETW!-3o-Lh+_6(;GjYq84 zq+kJNEDSlP(dAM_p!Sj|2tso`o#}ly??&~Q0f<) z4T0zQ(;Du4c3GZ;S8Mmvg0BXC%lOSh`ag8?n?|GNHa(gEU%zq6e{`3K2_q`Z!C`JEzzo0x9#r0jSi1*b^ha!2&Y%?* zdd(^>HaNo0=wUC%n%80O097y)2cQs?@ZXqJ<7?tuBf67=ib~E$T<<@=zlGeXKm46) z=P6V0VNb-CJTl2c_p=Z3GZ~Z|^5Mtz?djn1F-zM3p?5sw2xwMypP)=qWx|yks<igTS{pKx+kf!#5=+6;<3Dk?Mrpbn0gp(l5u0zaZQR;Y69k3aD+Ae0(BQ;$9?NC2{X|z zWD{;G_)TOp+m|1mfrd{)I6J;s`S-{s;L=L)ScWq!tc&*RAt^L4luejRW`B8} z7P9JBL{rjX-|L%;fepgCKqK3gVw5vRG2{En967WO(Ny{0vYp z|FWE~Xin4iLRrxv^4blL!G=7(gLNr{_!LKWu{7xyXk1X<7JRHDGV$Ve*tKGZHva)L z`FFSqWJOHXZj*GbXwL8YqA17Qv0eg(p*p?thTE;V`G5_1MI@Y;h0r6A{b>H)aOb&) zt6y+sw>GzYH3y^yqIs~X&kcax-apxtx;oHO_|wL#N`j5kmV1cfP?43X_xwPVNr+6HXGL9BLa=TjHmItyK(^}GKv4)jTCrox%I^&=+g)*Jt>+&b=08x)ND;xT#RqwEW*J zJ^k*rHC`71Sro$k*xitohIui>BW$m+FuhC4DUMKCD>;xRi0Kp;r-%foD^bt#?K7L~ zl8l_?^hI7YMtZ}qU#m^3HkOKSu-{JfL#giq!RCs;tsUJvD=P*#oZ0NdytXCd<-xH_ zUFh}dZdzFyubIQr43+r!c0&ZhHXHl&NX* zjOt5mE{YP4Z3_S!z*8o|2orFEn90P&`}gLhmd z&bGQ{rw000d(0`;cU=pTfc<)dV`0dVWQ3~J@qFv};tya;8hD&_#XsJ!CCu5z{p>o( zCAfJkB7H-dUHA)RgvvMJg0V07R+KI|<7#00yvt@xg!p>e)}t&uGhnn98+!f}l1F!W zD&C!A=4lpQdSb75yUPI))EFX!(-}~z`6551siXkeO$q9mCNeKHu$Xf>J8G^8+}z(n znp=k<^4(iCTyl4UPqDw-Q&U7615hf@2Pjn`f^o=DjjcW_zQD|neBW(OvB6N@b$S3* znWYi;@8S)AH(mIHDERMvmMEjd<pr~$YqQ1<9+FtS^TEVKqa>F+Gp6%$&h z?krC$w))4md5q;&qG6_!ch7YWhZ5CqOZxg|8^5E=V{S?Lu%uZKi4LlZ0)b zJz<77%4(P7loH;zsPktTHAcgsA&l$0rvazcm3Kvb1$?)M|7VL|p7qz3H`2Hm{_OGz zpJPWm-c(;HyO#I<_ff6pbrouTVKOIHy5^Wp;r*imysKhOqIQFXe9YxxQ>R z$lpu%gM&FP@UR5_2(32LE3(%A@wNYDaDc|zz!~@&uR%s_ECwuc3oc!BkPNP<_nqXd z0-RGyoAICFw0D}p_Ge4dKQ60Je^qw>&L-7abpd(~yL zfV^|(51S@B1TX>jo@lPBJy~r0V8f}&h6>*pzAUjSPVZ#1J(_Vb{6y=SGY^-WSF%6# zGI<|a|MAv^MSU(ZXO@^edG{vs&>`6+sheNV+U{x>qL&uZcT6=vUZ=JybZNjUps8;( zGZw0}0+)w)WY*Vtr}5h<>pGqLSsr=U z(L%OnJ8%E`r3{f6jb<{YZb&g>Mc(5~-J1caefD#GUHJoyT3e2EgUi8tiyvc8J^6xcbl-*(AHp2tPMx>^P2JQUgZO?0mV zLy5%7l8Z6VV#p1<}nq|@#3!$g9rU(g777Wp9SioS-6{WFC1-00v&$tY_ zomx}hO-`)2y>89JNq* + + + diff --git a/lab-notes/src/main.jsx b/lab-notes/src/main.jsx index 06b88844..acb76e1b 100644 --- a/lab-notes/src/main.jsx +++ b/lab-notes/src/main.jsx @@ -1,5 +1,5 @@ import React from 'react' -import ReactDOM from 'react-dom/client' +import ReactDOM from 'react-dom' import { BrowserRouter, } from "react-router-dom"; @@ -9,10 +9,12 @@ import Home from './Components/Home.jsx' import './index.css' -ReactDOM.createRoot(document.getElementById('root')).render( +ReactDOM.render( - + , + document.getElementById('root') + ) From 88afb8762cf0c20036b4604ac11b279cfcaa9896 Mon Sep 17 00:00:00 2001 From: Gabriela Wongchuig Date: Mon, 20 Feb 2023 09:24:48 -0500 Subject: [PATCH 5/5] autenticacion de la pag --- lab-notes/src/App.css | 6 +- lab-notes/src/App.jsx | 34 +++++--- lab-notes/src/Components/Home.jsx | 87 +++++++++++++------ lab-notes/src/Components/HomeItems.jsx | 6 +- lab-notes/src/Components/Login.jsx | 7 -- lab-notes/src/Components/Muro.jsx | 18 ++++ lab-notes/src/Components/Register.jsx | 5 -- lab-notes/src/Function_Firebase/Alert.js | 8 ++ lab-notes/src/Function_Firebase/LogGoogle.js | 17 ++++ lab-notes/src/Function_Firebase/LogOut.js | 12 +++ lab-notes/src/Function_Firebase/Register.js | 24 +++++ lab-notes/src/Function_Firebase/SignIn.js | 36 ++++++++ .../{ => Function_Firebase}/dataFirebase.js | 6 +- lab-notes/src/firebase.js | 26 ++++++ lab-notes/src/main.jsx | 2 +- 15 files changed, 238 insertions(+), 56 deletions(-) delete mode 100644 lab-notes/src/Components/Login.jsx create mode 100644 lab-notes/src/Components/Muro.jsx delete mode 100644 lab-notes/src/Components/Register.jsx create mode 100644 lab-notes/src/Function_Firebase/Alert.js create mode 100644 lab-notes/src/Function_Firebase/LogGoogle.js create mode 100644 lab-notes/src/Function_Firebase/LogOut.js create mode 100644 lab-notes/src/Function_Firebase/Register.js create mode 100644 lab-notes/src/Function_Firebase/SignIn.js rename lab-notes/src/{ => Function_Firebase}/dataFirebase.js (79%) diff --git a/lab-notes/src/App.css b/lab-notes/src/App.css index 650abc23..88f97266 100644 --- a/lab-notes/src/App.css +++ b/lab-notes/src/App.css @@ -31,11 +31,11 @@ background-size: cover; display: flex; flex-direction: column; text-align: center; - color:black + color:black } -.Home-lista { +.Home-button { font-size: 20px; list-style: none; - color:black + } \ No newline at end of file diff --git a/lab-notes/src/App.jsx b/lab-notes/src/App.jsx index 65359474..b3457cf7 100644 --- a/lab-notes/src/App.jsx +++ b/lab-notes/src/App.jsx @@ -1,4 +1,4 @@ -import { useState } from 'react' + import reactLogo from './assets/react.svg' import './App.css' import { @@ -9,20 +9,30 @@ import { } from "react-router-dom"; -import Home from './Components/Home.jsx' -import Login from './Components/Login.jsx' -import Register from './Components/Register.jsx' - +import Home from './Components/Home.jsx'; +import Muro from './Components/Muro.jsx'; +import { onAuthStateChanged } from 'firebase/auth'; +import { auth } from '/src/Function_Firebase/dataFirebase.js'; +import React, { useState } from 'react'; function App() { + //Creamos un estado, que será inicialñizado en null + const [user, setUser] = useState(null); + //devolvemos la vista de Muro, osea si el usuario existe entonces devolvemos Muro, si por el contrario + //el usuario no existe regresar la vista de Home +onAuthStateChanged(auth, userFirebase => { + if(userFirebase){ +setUser(userFirebase); + } else{ + setUser(null); + }; +}); + return ( - - } /> - }/> - } /> - - - ) + + : } /> + +) } diff --git a/lab-notes/src/Components/Home.jsx b/lab-notes/src/Components/Home.jsx index b6e39dde..9964ad18 100644 --- a/lab-notes/src/Components/Home.jsx +++ b/lab-notes/src/Components/Home.jsx @@ -1,31 +1,68 @@ +import React, { useState } from 'react' +import SignIn from '/src/Function_Firebase/SignIn' +import SignUp from '/src/Function_Firebase/Register' +import LoginWithGoogle from '/src/Function_Firebase/LogGoogle' import HomeItems from "./HomeItems"; -function Home() { +const Home = () => { + //Si estoy loginIn o no estoy(setIsLoginIn), por defecto sería falso..osea que no estoy iniciando sesion sino que estoy en el registro + const [isLoginIn, setIsLoginIn] = useState(false); + + const submitHandler = async (e) => { + e.preventDefault(); + const email = e.target.email.value; + const password = e.target.password.value; + + if (isLoginIn) { + await SignIn(email, password); + } else { + await SignUp(email, password); + } + } + return ( - <>
        Daily notes
        -
          -

          - Bienvenida! a Daily notes

          - Aquí podrás llevar un control de todas las actividades del día a día.

          -

          - - -
        -

        Si aún no te has registrado, dale click aquí:

        -
          - -
        -
        - ) + <>
        Daily notes

        + Bienvenida!a Daily notes

        + Aquí podrás llevar un control de todas las actividades del día a día.

        +

        +
        +

        {isLoginIn ? 'Inicia Sesión' : 'Registrate'}

        +
        + + + + + +
        + + +
        +
        + ); }; + export default Home; \ No newline at end of file diff --git a/lab-notes/src/Components/HomeItems.jsx b/lab-notes/src/Components/HomeItems.jsx index 295e4c5d..b2fbaadf 100644 --- a/lab-notes/src/Components/HomeItems.jsx +++ b/lab-notes/src/Components/HomeItems.jsx @@ -1,16 +1,18 @@ import { Link } from "react-router-dom"; -function HomeItems(props) { +const HomeItems = (props)=> { return ( -
      • +
      • {props.text}
      • + ) } + export default HomeItems \ No newline at end of file diff --git a/lab-notes/src/Components/Login.jsx b/lab-notes/src/Components/Login.jsx deleted file mode 100644 index 0c69a5a8..00000000 --- a/lab-notes/src/Components/Login.jsx +++ /dev/null @@ -1,7 +0,0 @@ -function Login(){ - return (
        Login
        ) -} - - - -export default Login; \ No newline at end of file diff --git a/lab-notes/src/Components/Muro.jsx b/lab-notes/src/Components/Muro.jsx new file mode 100644 index 00000000..2aca5050 --- /dev/null +++ b/lab-notes/src/Components/Muro.jsx @@ -0,0 +1,18 @@ + +import LogOut from '/src/Function_Firebase/LogOut' + + +const Muro = () => { + + return ( +
        Muro + +
        + ); + +} + +export default Muro; \ No newline at end of file diff --git a/lab-notes/src/Components/Register.jsx b/lab-notes/src/Components/Register.jsx deleted file mode 100644 index ff52a4f2..00000000 --- a/lab-notes/src/Components/Register.jsx +++ /dev/null @@ -1,5 +0,0 @@ -function Register(){ - return (
        Register
        ) -} - -export default Register; \ No newline at end of file diff --git a/lab-notes/src/Function_Firebase/Alert.js b/lab-notes/src/Function_Firebase/Alert.js new file mode 100644 index 00000000..acf91451 --- /dev/null +++ b/lab-notes/src/Function_Firebase/Alert.js @@ -0,0 +1,8 @@ + + + const showErrorMessage = (message, idSpan) => { + idSpan.style.display = 'block'; + idSpan.textContent = message; + } + + export default showErrorMessage \ No newline at end of file diff --git a/lab-notes/src/Function_Firebase/LogGoogle.js b/lab-notes/src/Function_Firebase/LogGoogle.js new file mode 100644 index 00000000..af4f277d --- /dev/null +++ b/lab-notes/src/Function_Firebase/LogGoogle.js @@ -0,0 +1,17 @@ +import { auth } from './dataFirebase.js'; +import { + GoogleAuthProvider, + signInWithPopup, + signInWithRedirect, +} from 'firebase/auth'; + +const LoginWithGoogle = async () => { + try{ + const provider = new GoogleAuthProvider(); + signInWithRedirect (auth, provider); + }catch(error){ + console.log(error); + }; +}; + +export default LoginWithGoogle; \ No newline at end of file diff --git a/lab-notes/src/Function_Firebase/LogOut.js b/lab-notes/src/Function_Firebase/LogOut.js new file mode 100644 index 00000000..a6d5b463 --- /dev/null +++ b/lab-notes/src/Function_Firebase/LogOut.js @@ -0,0 +1,12 @@ +import { auth } from './dataFirebase.js'; +import { signOut } from 'firebase/auth'; + +const LogOut = async ()=> { + try{ + await signOut(auth); + } catch (error){ + console.log(error); + } +} + +export default LogOut; \ No newline at end of file diff --git a/lab-notes/src/Function_Firebase/Register.js b/lab-notes/src/Function_Firebase/Register.js new file mode 100644 index 00000000..cc03ffe1 --- /dev/null +++ b/lab-notes/src/Function_Firebase/Register.js @@ -0,0 +1,24 @@ +import { auth } from './dataFirebase.js'; +import { createUserWithEmailAndPassword } from 'firebase/auth'; +import showErrorMessage from './Alert.js'; + +const SignUp = async (email, password) => { + try { + const user = await createUserWithEmailAndPassword(auth, email, password); + console.log(user); + } catch (error) { + const errorCode = error.code; + if (errorCode.includes('auth/email-already-in-use')) { + showErrorMessage('Tu email ya se encuentra registrado.', idSpan); + } + if (errorCode.includes('auth/internal-error')) { + showErrorMessage('Correo inválido.', idSpan); + } + if (errorCode.includes('auth/weak-password')) { + showErrorMessage('La contraseña debe tener al menos 6 caracteres.', idSpan); + }; + + }; +}; + +export default SignUp; \ No newline at end of file diff --git a/lab-notes/src/Function_Firebase/SignIn.js b/lab-notes/src/Function_Firebase/SignIn.js new file mode 100644 index 00000000..148637b4 --- /dev/null +++ b/lab-notes/src/Function_Firebase/SignIn.js @@ -0,0 +1,36 @@ +import { auth } from './dataFirebase.js'; +import { signInWithEmailAndPassword } from 'firebase/auth'; + +const signIn = async (email, password) => { + try { + const user = await signInWithEmailAndPassword(auth, email, password); + console.log(user); + //en mi project anterior usé el onAuthStateChanged con esta función para poder traer al usuario + } catch (error) { + + if (errorCode.includes('auth/user-not-found')) { + showErrorMessage( + 'El correo electrónico que ingresaste no está conectado a una cuenta.', + idSpan, + ); + } + if (errorCode.includes('auth/wrong-password')) { + showErrorMessage('La contraseña que ingresaste es inválida.', idSpan); + } + if (errorCode.includes('auth/invalid-email')) { + showErrorMessage( + 'Debes ingresar tu correo y contraseña para iniciar sesión o verifica que el correo electrónico es válido.', + idSpan, + ); + } + if (errorCode.includes('auth/internal-error')) { + const errorCode = error.code; + showErrorMessage( + 'Debes ingresar tu contraseña para iniciar sesión.', + idSpan, + ); + } + }; +}; + +export default signIn; \ No newline at end of file diff --git a/lab-notes/src/dataFirebase.js b/lab-notes/src/Function_Firebase/dataFirebase.js similarity index 79% rename from lab-notes/src/dataFirebase.js rename to lab-notes/src/Function_Firebase/dataFirebase.js index 3dfc3c33..91bfce51 100644 --- a/lab-notes/src/dataFirebase.js +++ b/lab-notes/src/Function_Firebase/dataFirebase.js @@ -1,6 +1,8 @@ // Import the functions you need from the SDKs you need import { initializeApp } from "firebase/app"; import { getAnalytics } from "firebase/analytics"; +import { getAuth } from "firebase/auth"; +import { getFirestore } from 'firebase/auth'; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries @@ -18,4 +20,6 @@ const firebaseConfig = { // Initialize Firebase const app = initializeApp(firebaseConfig); -const analytics = getAnalytics(app); \ No newline at end of file +const analytics = getAnalytics(app); +export const auth = getAuth(app); +export const firestore = getFirestore(app); \ No newline at end of file diff --git a/lab-notes/src/firebase.js b/lab-notes/src/firebase.js index e69de29b..2b0e4b17 100644 --- a/lab-notes/src/firebase.js +++ b/lab-notes/src/firebase.js @@ -0,0 +1,26 @@ +// import { +// createUserWithEmailAndPassword, signInWithEmailAndPassword, signInWithPopup, +// GoogleAuthProvider, sendPasswordResetEmail, getAuth, onAuthStateChanged, signOut, +// } from 'firebase/auth'; + +// export const auth = getAuth(app); + +// //Crear cuenta +// export const singup = (email, password) => createUserWithEmailAndPassword(auth, email, password); + +// //Ingresar a Sesión +// export const signIn = (email, password) => signInWithEmailAndPassword(auth, email, password); + +// //Si olvidó contraseña +// export const resetPassword = (email) => sendPasswordResetEmail(auth, email); + +// //Ingresar por la cuenta de google +// export const signInGoogle = () => { +// const provider = new GoogleAuthProvider(); +// return signInWithPopup(auth, provider); +// }; + +// export const stateChanged = (user) => onAuthStateChanged(auth, (user)); + +// //Cerrar sesión +// export const signOut2 = () => signOut(auth); diff --git a/lab-notes/src/main.jsx b/lab-notes/src/main.jsx index acb76e1b..958d6fb0 100644 --- a/lab-notes/src/main.jsx +++ b/lab-notes/src/main.jsx @@ -12,7 +12,7 @@ import './index.css' ReactDOM.render( - + , document.getElementById('root')