From 040ffa064234e17e96b1f7380f4223726d97be27 Mon Sep 17 00:00:00 2001 From: Steve Barakat Date: Wed, 10 Apr 2024 11:47:25 -0400 Subject: [PATCH] Example - 7GUIs Flight Booker (#4843) --- .../7guis-flight-booker-react/.eslintrc.cjs | 18 + examples/7guis-flight-booker-react/.gitignore | 24 + examples/7guis-flight-booker-react/README.md | 14 + examples/7guis-flight-booker-react/index.html | 13 + .../package-lock.json | 3329 +++++++++++++++++ .../7guis-flight-booker-react/package.json | 31 + .../public/flight-booker.jpg | Bin 0 -> 68479 bytes .../7guis-flight-booker-react/public/vite.svg | 1 + .../7guis-flight-booker-react/src/App.tsx | 79 + .../src/DateInput.tsx | 22 + .../7guis-flight-booker-react/src/index.css | 116 + .../7guis-flight-booker-react/src/machine.ts | 74 + .../7guis-flight-booker-react/src/main.tsx | 13 + .../src/vite-env.d.ts | 1 + .../7guis-flight-booker-react/tsconfig.json | 25 + .../tsconfig.node.json | 11 + .../7guis-flight-booker-react/vite.config.ts | 7 + 17 files changed, 3778 insertions(+) create mode 100644 examples/7guis-flight-booker-react/.eslintrc.cjs create mode 100644 examples/7guis-flight-booker-react/.gitignore create mode 100644 examples/7guis-flight-booker-react/README.md create mode 100644 examples/7guis-flight-booker-react/index.html create mode 100644 examples/7guis-flight-booker-react/package-lock.json create mode 100644 examples/7guis-flight-booker-react/package.json create mode 100644 examples/7guis-flight-booker-react/public/flight-booker.jpg create mode 100644 examples/7guis-flight-booker-react/public/vite.svg create mode 100644 examples/7guis-flight-booker-react/src/App.tsx create mode 100644 examples/7guis-flight-booker-react/src/DateInput.tsx create mode 100644 examples/7guis-flight-booker-react/src/index.css create mode 100644 examples/7guis-flight-booker-react/src/machine.ts create mode 100644 examples/7guis-flight-booker-react/src/main.tsx create mode 100644 examples/7guis-flight-booker-react/src/vite-env.d.ts create mode 100644 examples/7guis-flight-booker-react/tsconfig.json create mode 100644 examples/7guis-flight-booker-react/tsconfig.node.json create mode 100644 examples/7guis-flight-booker-react/vite.config.ts diff --git a/examples/7guis-flight-booker-react/.eslintrc.cjs b/examples/7guis-flight-booker-react/.eslintrc.cjs new file mode 100644 index 0000000000..d6c9537953 --- /dev/null +++ b/examples/7guis-flight-booker-react/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/examples/7guis-flight-booker-react/.gitignore b/examples/7guis-flight-booker-react/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/examples/7guis-flight-booker-react/.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/examples/7guis-flight-booker-react/README.md b/examples/7guis-flight-booker-react/README.md new file mode 100644 index 0000000000..3fa1c7e9a8 --- /dev/null +++ b/examples/7guis-flight-booker-react/README.md @@ -0,0 +1,14 @@ +# XState v5 + React - 7GUIs Flight Booker + +The 7GUIs Fligt Booker App built with: + +- React 18 +- XState 5 +- Typescript +- Vite + +Visit the [7GUIs project](https://eugenkiss.github.io/7guis/tasks#flight/ "Flight Booker") for more info. + +## Screenshots + +![App Screenshot](public/flight-booker.jpg) diff --git a/examples/7guis-flight-booker-react/index.html b/examples/7guis-flight-booker-react/index.html new file mode 100644 index 0000000000..e4b78eae12 --- /dev/null +++ b/examples/7guis-flight-booker-react/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/examples/7guis-flight-booker-react/package-lock.json b/examples/7guis-flight-booker-react/package-lock.json new file mode 100644 index 0000000000..c681a7faca --- /dev/null +++ b/examples/7guis-flight-booker-react/package-lock.json @@ -0,0 +1,3329 @@ +{ + "name": "7guis-flight-booker-react", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "7guis-flight-booker-react", + "version": "0.0.0", + "dependencies": { + "@xstate/react": "^4.1.0", + "lucide-react": "^0.366.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "xstate": "^5.10.0" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz", + "integrity": "sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz", + "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/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/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@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": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "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/@rollup/rollup-android-arm-eabi": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz", + "integrity": "sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz", + "integrity": "sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz", + "integrity": "sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz", + "integrity": "sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz", + "integrity": "sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz", + "integrity": "sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz", + "integrity": "sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz", + "integrity": "sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz", + "integrity": "sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz", + "integrity": "sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz", + "integrity": "sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz", + "integrity": "sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz", + "integrity": "sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz", + "integrity": "sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.75", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.75.tgz", + "integrity": "sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.24", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.24.tgz", + "integrity": "sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz", + "integrity": "sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/type-utils": "7.6.0", + "@typescript-eslint/utils": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.6.0.tgz", + "integrity": "sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.6.0.tgz", + "integrity": "sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz", + "integrity": "sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/utils": "7.6.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.6.0.tgz", + "integrity": "sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz", + "integrity": "sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.6.0.tgz", + "integrity": "sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.6.0.tgz", + "integrity": "sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.6.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/@xstate/react": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@xstate/react/-/react-4.1.0.tgz", + "integrity": "sha512-Fh89luCwuMXIVXIua67d8pNuVgdGpqke2jHfIIL+ZjkfNh6YFtPDSwNSZZDhdNUsOW1zZYSbtUzbC8MIUyTSHQ==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.2", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "xstate": "^5.6.2" + }, + "peerDependenciesMeta": { + "xstate": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001608", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001608.tgz", + "integrity": "sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "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/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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "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/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/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.731", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.731.tgz", + "integrity": "sha512-+TqVfZjpRz2V/5SPpmJxq9qK620SC5SqCnxQIOi7i/U08ZDcTpKbT7Xjj9FU5CbXTMUb4fywbIr8C7cGv4hcjw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "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/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.6.tgz", + "integrity": "sha512-NjGXdm7zgcKRkKMua34qVO9doI7VOxZ6ancSvBELJSSoX97jyndXcSoa8XBh69JoB31dNz3EEzlMcizZl7LaMA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/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/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "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/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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/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/glob/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/glob/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/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/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "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/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "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==", + "dev": 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==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.366.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.366.0.tgz", + "integrity": "sha512-iUOsp/35wOkrgEzigZlZI/OhVxQZ8CmxjebdIjfSDzNBmrNYjQfKSpeKderaEFfGt3OycF1BE+wLlaqWRuoh4w==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-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/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.1.tgz", + "integrity": "sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.14.1", + "@rollup/rollup-android-arm64": "4.14.1", + "@rollup/rollup-darwin-arm64": "4.14.1", + "@rollup/rollup-darwin-x64": "4.14.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.1", + "@rollup/rollup-linux-arm64-gnu": "4.14.1", + "@rollup/rollup-linux-arm64-musl": "4.14.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1", + "@rollup/rollup-linux-riscv64-gnu": "4.14.1", + "@rollup/rollup-linux-s390x-gnu": "4.14.1", + "@rollup/rollup-linux-x64-gnu": "4.14.1", + "@rollup/rollup-linux-x64-musl": "4.14.1", + "@rollup/rollup-win32-arm64-msvc": "4.14.1", + "@rollup/rollup-win32-ia32-msvc": "4.14.1", + "@rollup/rollup-win32-x64-msvc": "4.14.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "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/typescript": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", + "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/vite": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", + "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", + "dev": true, + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xstate": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.10.0.tgz", + "integrity": "sha512-rn3AbPFHngLqtfFTe9KDXJ1wQX4ACDKnQyQ2ShjuKor3iVnxDSKyDL9llFLiOpaBQu+cFMKcZYlpXo5nb/q5rw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/examples/7guis-flight-booker-react/package.json b/examples/7guis-flight-booker-react/package.json new file mode 100644 index 0000000000..dceb4e4480 --- /dev/null +++ b/examples/7guis-flight-booker-react/package.json @@ -0,0 +1,31 @@ +{ + "name": "7guis-flight-booker-react", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@xstate/react": "^4.1.0", + "lucide-react": "^0.366.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "xstate": "^5.10.0" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0" + } +} diff --git a/examples/7guis-flight-booker-react/public/flight-booker.jpg b/examples/7guis-flight-booker-react/public/flight-booker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a2aa2efeaf92ed4405c32d3ce7f0e71af72c416 GIT binary patch literal 68479 zcmeFY3p7;k`!~EbG!8M&iWo&yLI;PEj7}s8orIVqIVBy)V9dxd=gL=#7=0zAF<~4+ zGtT;^awa3jj1G?3yBIrj@a}&9XZ@ewde`$F*8f@SUGI9{cbGNHvgh9WzV7S3uFv(k zKKJUU)d@iUxQ(3+Aht#fIEMTHtE0eSK1K?Sw5r(L;KYixxIhXUUZr+!DuK4=-2iyt?y&XmfkBE(nPe{C*l>8v`udIjJj~?gz zUHGi%d2vbUi^?i`bxm#E>-v_~w)T$BxBtBB>mL{#8vZoG;&3OweEs%)YI+9x`D<~B zw+#PY`7ozY%5ls50a zBdL7o{?m$PDV;s1K$S~3d!M69Eaty7v;Umff1ei%Sceir77wKW z-~bVB3Mg0;Ee&k_|3Cg~CRjH~1@vr73Q*dMo1<0#-)hOleLDW#C|#lQO~-xOx5aq{ za^LMi!}-O{+#g>)yHJF=C=Ei&xjJIEjY<$YN<4#d9KsH{34!)X+U9=M`l;Y%&(^ zdVkKpb|9?$mbE7C{{sg6f5J(=nX+ZrQvp@`4L=lK#rmZN?V?kzJ7|6XSvC8nA{qEr z@^AUfc-nc#N_nnK^r=Apu?t$$CeuoxJW^DZHTG!8dO%{*Z&4bbdYiup{PkxAB>?6B z@ki)hO~-@mXgfi){*+V!YTvXqnpTSsrWGMyh|ucXYgN~AV>UH)<#I&Nn)H2(I=}A- zUJJIOV&GWCRltXJ{OpOOlDk=*x<|kZjL*LY@1MktD2sjhm)B_B0ar`{`P0`eKLwr9 zS!#OV@N(De=Zzv|vDuBcoeE!J-{*f>(r5m;)Bo8M{^$Ru@5xDe-G8gYHWA~JOw+uF zpO3BrhMQt+R)O&5F+m9`^Iu7SMaDX5b8pDAqfS=MLFNYcbaQs;7TMUCFV5T;&i_k{ z`hRST|Gd+mOT;p1Z4ajEUs#l4FTT!=Z`yr$!-LJO`ui%CKc!1DZqJwMh|V4ce2(wqNU^ty*+ zyK*uhr4Is`Q(`87?@Gqo3DFVxC=5F153Z8Xw4Ng^e`c)_v{S;RFF7zSH{E}9ziD4P z5Y@$3Uj>>i$N~7#;&b(}6U8xqr!=n|eXnYz3l~lLKL@|JQl!*JPI(UbZsWUY_ zZ+$5T!SX!X3@em=|G>A$%DZLi09^2*BW#9kUsm7#nUKQk06*TR-L<3G_lTqeMB2Sx zkDXrGN8MfpxW0+Ba>HlZb9LFRJ$AJ_c(1%K0)o%NO7cV!yGDO5ku&DP-4Su^4phZC zm$u=}u%#`(P%B$)(lR^X-CdQ_zyxfM;a z`m&PwU^M+qf=@74d*OkTM&yYmsY?&hCrZVmmBm_#Nb0|5S}Tm>tO9-REa2zAa3|&n z9KH%*BeI1Nt*by`32N~F0*RrYojP{*lFj|GECmJ4v9U+n|JL>UX_)UpXO-E$6JzCmE^nU4TPj3$|g3%}A0-Q$Q zr*5eYR>H%V$BvwH_u6q)J=*FQgcE3BCQ}^L?F1V9i?FRHB;EPbKVKg{@B+5C2}~tc z{8K)SQy>OKtvmXP;SFE^@bPG=vKZ{lzd&kc(`)A(xshay;1*~w&AL{kQ=BLW}UM9-r{Gpm>#WY#UNYBpFq;oB+< z<6_cG5B15&ZeCwl(f3l-QP07*&F$;rP`!Sl$^P(z_EfwZv$CHXR&&Qluc0B~Q#AP? za~*kN1fQBSp5`A0Me_1sGB|soK4!z{LC`kZv^zO4z;{2X%c`st&gJ~2IPS*$L3`LC z({=v&?;xXvLg73Rj+sYLzHS6^FEGRx2yxLu6BVr5o6aP7(}aJc_!sLU#`=mv<$p<`$dkWuvlzSXv3R>on= zPq_@cc~%$9MnsKgQT^5PGC!z%%PXA@14qZFmusrp41X8~Kdr4x=7`=yGDSO`);a)J zX30M#2g!44i1$7F7Ht*&?}gAn4}w`u3s-?prx6^~SLcVCIu7i5^5sT?ZmMFzw*6VI zLuNkO@|EaA5znu`6I*!=E{h}+R{@EmFcq9^qNtIuqOMviZ4lkIAWewuBuNf$h8sY+ zjwpN!V`m?=@hE5PvR^%|Jy15%-oxFNS@p&~>Rju|H#K&OvL}Z$c!UAe7aA*&rzb2U zd#BmkAkf>N9HV6dJBc<2zNO3Bx+gjeTJEP^IB!_RcAwTV26@Hh@U2sgRp~!i_PH9G zSHhnrbESNe&K6!0``KY5)-7R=`t%}UOX7>@bi1iF6}XTIz%q1F<6w6XEVT+mDVnVU zkvbdR7NDL^NlB1gHi++PHIQr2&4@7TIoZ+~EdyYvIG^B8!Mr?S^%gkEpKnIAsD%@a zTRfy&+Zg+jzjt_wgUM6%rVFDND;sfO4k6ZBJ-RO2rg69b%8r~=-mG-^P>@MQB|yy1 z!tLBQBV+#1HTsH^YnFoGePX!E&pSmU*Sggef&JJ-h8Psqj>i&oIOOOMUkH=V(1BZ9 zJ=cI&qO)^IIVa54!?UlX9v@NCZO}cj>_Ga6z^_IyNgctqkwk7qstx; za~=cs4Nu^+CWA-ttt1)9w{uMTJJ+|xz?G=*RB!}*NSn-%^!z9E#^krYMrXYuj)U~F zvmbHW4X%BeKh=%x`Q7B+(x^y?Gi88ncN8GEe?md=N$}rZK7An0I(_#cAk`u?;baOqhDUuX;CDE*~Xj);0p$Ewos^%7+ zM+{V(LrS@nZ4r0BealB$WMJ{37~A^CIyTy<*TQGaE3`ChrDOY>TNA#W3sSZd8A&4b z%ASR4irir?b{*kq&`ZI=XRfpLCY|TO+tuY$=E1j$W>lB;=a%y?>)npwsPguIngo8b zB?-nIIQdXMPMRRoLfQf`lTFwE@aY$rb7W=CKt{|cmAq%m%MVYkV?4>%@jd&|jd1M--~(4Iz9kjZm`HJ-zf zP2)0kJ*4#lUGTkGPFQ@SMxk99+jWW+*-~2@=r6u|JV0&#iTcjuCHw4p2J@kz%LT^k z9O2~%U3!@xcOn-qzgKdLB*UUgnuvknzg$ zZS}E`l5ZI&2FeW$6Y_sCOqLreUe`Wu!rf)UMzwQT4s&EbFRsUGJJGPutJg|F)Vphz zHK(<)pZa&KE$G-5q#CIYB_tNMUbCd)T65+sYI3{fOej|7z#ub0TC|E$O7UNtPTiH zfcR#1978i$Rd5WBr?zqs7r7b`VRSb%&67}+V_-5!v@P{lH+koBSCX^HDdhkVkt z!kaIeu+Qs@1@ev}>HcT#pFfY0-sZgQWwrTS?qe8{x>;Y}C+};o&QF0ZiDrHrvYJ!9 z*L~Cd%TMzOc}y4O?kccOq)pU@o;QHA+>BVF?F3enaA}DyB)5!j?<=QA`JQNS(s-BO z0qNBJ9!QKih|RjO!Bsn4$LFS4>tt%)=ykhIn#uAvs#{{5D}L>!)ZvDL-o6#9u4?kW ze?RWt_nym}E@XZ2N={F0eE%#>yV0*v37`k@m9=yBd`Hr##VU|&Y0Td#FnSFa z(g?;jRS-If&L=Aq^jkVl^qI;`7Q2pXWN5(It>VL$D~u(_^jz z;#*gNn3u5kp`k{Ha?wA_JPZ9qdY=7-A>&nmb4`GHZEt97N6+Cqz23Eu_;G{Ke$O!{^B zsA;!4!TcoDk)$8nXs?!Z)!lZ$dBf(0$3a)0Bbz8p{v+i|q$~E@tHw8p%XG1yYs$H6 z?%C;j9n-&lU{~H}OyljZ?vgfss2TQ1CU3J4;g+r*Bk4HuEs3}qXn-swFcTR;({)fr z3~`Gvg)=q8$@z^=B_1xwvx9=n3_~iyZyvvB`|g3*&-QkDO|6=0RjJ*)-b0zYzc%<4 z#lOF~=19VBmBECs_Y&9pEtjFJHERz0fo8MrL5~ zjEi;&GU6`7rp^Vmo7;df=zF@r0A#nYD5;iSFWjeA^iou3leXM59Vnl;yW?t*&R<=j zCF6E?sXG|9`8G10ALyueBqO3O?8Cn(Kn;qt1h!z~Fi8f^;PmRA)7sp>DfR-mH26hg z@y*TgaaX+{V~@TuZe!I$siE_q#FfHN)!)PX3KkYKP_wH*m2oFC8H*ww^Yl2(SxByy zRW%q+(-HOepK>%mJ`kO<3tMyEE?75V_vw$nR8Fc!TOz;sPTWr|^2$<;$iaGJ)Ss#u z-NVus#F)_d5+kd?^xgv5?Ert0=YqKXMbT$=O=s(TB)5336Et&7Vu*p=sm1~nHLwf9 zaxsHG={%}pzj1{LfyPe5Hqe3Rd^Tg4qeMGh4*yUYsJeBvZO}ry7AIJ-SOU% zOJcKFloeXwAbdvJK`@v|Y-VC?x!p-j`6VejQxd-I;BC{Rc7{>gzhG*A7wZCPin9Jb zzy2zH%*H0$X&@*l^VI8pL_`cw} zjbJjL5c0F_x!&V2J4HIl9Rb$G;H*gUF#@cu;Hn7>ig*f+;v3=N#3qWO7|2iblnbcJ6ZnIJ!>USIzZ9O0GP=2P~bg5c!uD&`ep(to$jOOuo9bn2Su@3~A zNRp3?sSN73(_+Xdq7UEFp3{v~R&MbbofcnqAuqG1#-vF8$mYdLV+cs-15BZGhWo%Um> zL(+Kr=P3(-xuB#C+#pvX^*T3&<-pq_lib+8MM7$m~Oh;&S3rIQQ6mD zCEYI>jr9fZRk(Z375}a6U{hN3eu|dB5Y7c@&Xq{;Ct5(=t$FUJE7j9;i{M`^o|`~Y zVaX?YhUA-96_8wRvB$XU4#;s`_CxTW;Eng*K0kD@39ael6IL?rcK*D(V|XMvR3a;_ zsPT$>Zdcdic)BXD*Z6~O=7q-V9fjFOW-$b9>@?DK5FZsLG-~ptNFTMhElU3n@k)6-E^zq$d>wu3x@X+ShMFNeFm1I&bhzB zP(|uQcM#tm=y2O{-G%X^C9v;>`W{O>C+%j(uOpCtf@!2(xgo35qsJ)6AjOe>I9TV? zv8k1inz9|LzigxYBWjw&nW~LiR$E7i*sA9Flvm3*ughdL2ZsCHx-KT*A(6fX|0+0v=ntl?0zot}zlSTn zZR7;SDGRlB_S~$&vCdSHWP3*H-w~C+dm(`c=ER9kXKWYq)Z6|o28cyILqG4Hp3>Ucx5lPj zmm7^^EU*lC*Mucxzf}O%B?}a*Y=n=={$xqf`}*tzk%Z`@MRp3&andnu+yvHq7C5Aa z#BR@6|04h1K&^Fs)vlpkU3NnYPASJ<%Ri#_eOu{yf6t@S8oQC)926`v638R581YzK zCAm|oF_P~rIEmLJ1h?hy6u!bc42CijUd_~BrpTAm9X5A!wP-r{!2G=pJ;cM z6&!t*B;Qv}4Lp-`z;k*L1}rgLeSy+~ND6^4;_a{xDAURYPaPxs;Zl)Z9^ARG&W?+b z|3ut4z&-)eS`79X8G1DiZR&TygC0vAnViV7!JdStW#e$`8OY~H+RK?9czZ{WSzdtH zui^Py$e8j+1PVtjO@Q~;qtOWZt>f}NI|Q!K?kKy( z6bB6l=z@iLT(DuIJEtqIve$QzGe|XYh|sXDjEVqJb1(vYaIp4!X7v*aX#c5m{v3s# zJnq23!hSkj>OSIDwxUZ*t9xd%m`=U=nwjm7Ym!yqBlSCSTJ1QW1oq!ePW7M>@YF2F z^kJ?ib+W6M1u7{#H%RXp!vHdG#UzMOJuj>C_Bhrf06vapH+&Hy-)+=*d9W}$XJuq* zK{l{nbH@L=L)ezQ4+54?yy&UKn>SygvDr)|+yn(*$rLD+@zA{@J<)hR7E()J1+Fn! zSVxKztiZSMCz%WiG=0FbL!$14^`XH@74YpJqo*F=Fx0W~r`)n_#@>9J#*mCeEi8Y_ z7$uqLa9Qj(990(nOL@Vs$qaQfw|Jd0&64;G3i9&{!2s zzKjLWGC!4xWVS$~yb1>Nea;qI=DM`f?(_=|fLHFL6D_y#T?nHSqQ5N9J})mZ?OFt{ zC31tzI{JQ2e0I~Ve|fvAyl97Ww`G8r;#PDQ(jv3PU_?Dy@`JdE*Cc6SslcC$ze~{~ zs(@9Tj5vl4p{$)`KETimbjhJ4GB%3()IAz+68iCtgQh{GzV4&7{U&eB>{H6_$Y#aY z|h1~My0f%9NO#o*Mz%MgW zoGZilmWsng2dPJkJ4-wNQh1xKvTN@DvSKlS`#Yyx%U z+T!d^%rUqVvH7_0A=wMh$`(o9;<87$LEfH2jNPPOyj(^)X_E(>a(*C$tfeVOj*Uov z%zcBg9-tZh4Gv|~#sXRCr9sc8f29N(7<3sNs_ML0K7l<(`iw<0C+_1F$rDudOq|WClxzci%BKUm3hY;Ycl5>Vw%F*^f^rGGt(bCJStGv=c z!W7Fe&5p-w<2k_+aK;3)9V1UX*KcLWYNt-iya=#u-J>5P*#E*mUu)27pqhs93=Fft zCwLETP5>~Sjt#8tD_pp=}Txi}F69 z8qwWKpf;YSU2yf=_9Zaoc6NPmqEEiv%jD_%J2uN)#2`dr>~&@ZnZqEuh2pixSAkYj z0n+Y>yM99H#tojh(Jl-k(x3$~0 z+l4A(+$eT9*W>-VbfrzvxQ$lYGQLTZ+uK}Sm?E0ru&(I05wx5MY;I?s5@4t6%fBrCyDt$hQ;1J97OO1M2dL3DG2 zPoJ)Z#GM^6_rr-fJ}nNstliy;TLA$Dai&;->@azvlnlBp$cnmaw8Wt9CVLs|TL1d6 zB!N4GYN@rrB{$kl1f$!QBbcd+9^1W5)E+90+VPB~$1Z#b4!&Nw;fKwopSr-jf-(crFmJ=8iY1=D05HPM?J7B5C#jE?7MbbhBVj}q;5T13; zoNQ8)GJ%nKUXXM{BE3%YoRb(tnLCJV%>WReOxj8MG|a3ar!P_Dh!Vnt&?x*NIP=DY zcur?q{+^+^m!mF~$$bmX6$5O$%52-8#?S8r=??fjoH1B$H0O+?uSbn6kS8c)@Ps40 z6+PDg%}%NblulvNDUwz@NFUvZtd0h7c~Y-Xuj)D6f242jhp9%M%~lOJh`LlcGo(7K z^l4Vrb4#*@Oto3|xW*lyHQJb}5c~*^J3Nn=P<*p6nS>H(_Ffqv9_1oDp^B(yP&bb3 zL%_H8%(5O2St5I+Bu%G3B;`{7{)X^u#oxDI9jiRH!5SyaoOnT&Bwxgh;M=s+gxO4= zT&x1|Fx(IR?EA=`Tm?Ek+&eAWekJ1&F|vfyEzpIdoCbfLI^WE*^~rh(P2uW6 zPi}co+xYe3L~eDACS;4SK7zseRM5QVc4Z?y+0))VJlpem8d+F1WdL$X`{MPZ#tXGXsE z&hxrP|By*e4HT9Y7OaD#1Z9Q<@PA%vOESad_hlfR74&_iahbqVlDOChvL9h zK%TVGU;RPnw&d`u)i{N5*Ri z)50v08l1vay)(hY3KWCyGL{URP zu{%$Wb&v)h?{2FKbbRUWx#iB|EtP|oIHWCyo_fw5=dSN}-VkqXMMHerOY{*dy$bl^ zN6SRgBm4tIGxKpd*q!4TU*oy4uY9RXXxkR1u9_0*A7Zp*&^7xQM>jQnrKaRzVL2PR zx$V*+g}})-+2-?$`9pvrJ9dqlY zJ(LZ$1AS_kWrRy)RKUuIXG5yDJ4RbcTj()_EA{u^nLiO*Di$c>P6<;Maj-6P-lr&# zEJxbO$ePHt|DeO`sz`M1W6~|dxw$ejDUn?nag`MHBM;rkybIS^Hl`XGlCK->q~b~y zccP&vsLTm=ejzvqjTeH(M{q41-ZQ;Hkrt9vO6AO;S;#3b!Z#W*cFW< zu7`;Ct+C~4wSc0Gfr@^O_2l)IJ3ntrH%@Ms^FzTHWMN_QB_u(0SVjp`z92330PN=UeR%DH3`3mIOO*lo;HgdB(^BN66IM^jh%PNqBP=X6ktUZ{~X6W9&vK+n0 zMh9R(171`;<@|uat6=o=td?3ubw$GLd_;T^Lp$9zaF$#}uX-!Cz+8*8(}wV`!URhC zyomv%6~;~_X(N+JwS%xt2(xbwY4 z9kSM&;8J*H*uE-ik98l>{1(~E-;_r!3Ae^3<6f}^O0~RQAY~4X)J)AMk(DisV7Ac| z1iAynv*vLk1)?T=^!AD;b5e@lt?CJH{}E&(3SV?@7;`)ious@R@js_(rGu#23Z^}^ zhD@Ulx49?=+>W@G40Mkci==w_8iZV)6v!4RPl}|vUJ#G>isah4Z!Nb$-V+P$N&POv z0&MsTLQ7|J&1rvDs!~9$nR>!~Zi5i(IIuWx-jF4|elN;IcqDhs}$HyZAPO2(WGC2h$sjJ(GJB>~7Iet*dk&3((wc7}>N; z^X8Owr4> zp2iyxyW6vWz2Q()nhJp{R>1p>dt{`>e--_yu+?} zJBIj9^^E%Jev>XcLz7W?%mQ{YW9}E9OzOpgb_?*9^myc%k)rqMBsRgy97NLh65n!W z+-iWR12y1bo$wO)9C?JBz!wy_07Jh*6;mH*z5b&xZSIO zHzfuOIy;Umi)2iZF@J$rfwJ19ej7G9;$!JEQm>~092_`_%Rsiur0-MzFfu^eKE+yO zofy{{to9?~!d`S2`GW!1-6b{7xXVbDdmfvka;!1_uoqvAs3N4{CW^_RI|g?D-q|ED z4UD8=$StyvQoE;^`!h&2o2xRoxC$uPa`FznGgk0hPUFmPdEQ%n{)b5^6q~zNaN}ujl}_YPE3!Lm8Hx z_+Ze&mS)II4|Q`_fxB9|5U$xVhUqtCs(Eb{Z~d;94fENVj;6h5H613l0SiT_I=vT{>vJ5Z6`_F=uLvRqLE$R$hb{skzH@-DyWwx!B zDpw!!PY@CN0&QP*CU7e5RycrtS3Bn|MA%H(SpIf$i*1z%siI(i@*UhLgT&V7>xfio z2_$yjDxg0?u3{jS&MKhy{s)qy`lse6e_ZYEN}U_~D*LCyX~ibgc#n(N=K< zsNt!$C!4&g?bpQjIaJ1oCH0`~%qla}UWy4TNIeWdn1T2z6Fh-|^_a~Y$P-2Q3i90V zN%kGQ1WB9?*V@AIP$DOEsMP-jOCSa=#8tD`&AKVTS)BR6gOFDI%R{`C{M?de<+7W# zuh@sZBLnVQTLlZtn105eXuS1^vmPX5h@_aHJFg!6K3@fqI~k_0hLHzUfu-3e2Q8IA zfg8~gB)3sdyVShyHC<4K!;bVX7K6Q7>-*^oDsbZYLBWl(3-E)P4#VvZ=QNx!4#M&| zrWXb_vW;h631;nL29smh70d0+L{G8IX39p!M&h+Wfob7v4(UT7B3{5}sI^v;mg>>)YPVS>d367?k-Rr6WXS#>E zD`aUweVC)!A;J zrWd#{mob+~#ifv|a2x|Hm?OJiBrgux{me+X+;7!$AAX=Mg9ROe;cdfBm?S3XM1!~6 z&f_PUDOfoxNy2GvcAS;68&UNYyfC>SNi=VO^fE!F-H@d|XVg7V^H!V1#l|7yMJoE( zQ1u7Q@qucYvVBV(ufp?vBfFw8xg>2-AEk;WP^E~ZDs=JmjE>+txHaU7LULszD^;`( zLbn@ZiB_=jGr={aO&K^%ACo34%xbOg8MTMApZgb{7^0791)gt|g7lB|E`3XE^;8Nn@w?&|1$=8BEb+t2$hUvlU2;MF1YVzDX*H{@YZi}c+NGtGjlS_ig&Gq@r z@>v$I*p!i7IIZqU@d=N55g3v7wK}aRudz0}7I!&8BL@&7@is<8>d&!l3x>BEm2q(+ zv%I)|%W!a7Bu_M}iuHiap-ZD}BFRkm+C(>XYBsMpT5vGxY2KmU{PzL!)aC|TB$L&N zM@M!F_{aRS0s39NG^`Wd)mrfna53;fL}H)(5$C$fFcTQW zPL5@FN-oU?$0-PGz+{1Iavz3e`poN!K6a9CYx4hT0h-vx?V8V_*5G` zz^-K`lP7Y?;5l3(v#NMrAFAbjs23)Rj0L;ln=9t+l=%Gpurt?D5w3FW(`BSw7&I|P zO=ajO_(G~hMYE>@UB=ZQ`I75cLM#xQ6qZ8b<9iLL{a`u7?Beo5(6+; z?QZtD3{FOi<2vG55RpUvwlWA{*~TvrWx>{?y-3}ZSX&2u6&2p_eeRdRp{}0>;rx}E zZ|oEOKPDgjb6s2EQ8aD?bK-BThG-pOR3sw=8zynFRy&D%px_om^U3Tvhq5ujSrF+V zZ=(s!`WI=^_FxHIe5wKZnDt@|_8fKuKlLvu(Z)Z#*iw_eBN#{bspanwokxGBXyJk~ zMsBs>z#Gh_43@RvI_$%xMBm0r%^~DCCdE?%q9qD$O&q|Sfm~XGlk(S9MV)RVDK!q! z2|*zXiiFrBHIQ=ESX+)n{O9`T1-u^C18dwSWK-7R(4q}6j@Jn#b}S&u20E>o%+hEf zS7VZiLC`4{CN6(hPa{4Q$ zS!3eKmyB6t7hyWWa>cRfTG_t0Ua$!IcpvE89sk{jad#Ur)RE7A`Fnb)*^S(_%*bEX%!noyZAYOmJyoXoC1elVB-={gH~E zM)N{fTi+so3qlCJD#7%e&yn57jmmYi*43J4ZYclpW8($3NB92EpL@_c6PS1{8Q2w< zS}srt3@h}vG9I!`s>aC49?WgA@T7jVm{H4Fd-wZX#O8og;V$Y_x}vQ=gY_Y(Fj>Pi zVJC*WUnEn(4}*hwuY^xSjN|b#p@dLo9J#6gl`>c9G?yi4dfbLX|Xf;5YcA?2n-A4G!Sm#4wX5lj}bi>??K=Dmux#i zzqK3Y4=`tkutH61tx{|3QykK`RENzuNO5wScMPg+Ggc$`HZf$t@9k7`XGkrD=);vY zZnaYDF@fo0&JI7S%LB7(EUdCFSH8Vdz9e%uXmCU<%Og`8+p9L;%2y^K^!f~V zg2yep2NUidvnbU@=aoRU?p+?|OL zxqFuTpHGuEHS*ovrV{M!0}apETT+X1vvNNEI$dGo-Xb<2&>LI@E>Ymk-{%VX=WG!| zX4IF1nU9240p4Bk!*DE7hC{yNmVT$a`T5jJLT-4m|1fKrXPiWIUi(lb7=Mbve8ZqC z?6wVjetzcUi7Bx$fff??U%n2U=T3Ods6cjNrSr zq(<}&uEuoZ>0&ml8R}1TD5(A#yQaP^C+IJpQn(^@urXLaN9=bMGE*8zp7V!l@M0o1 zzEZ7&9g{uG)_56GMnNiYfS!@$i9)blF$cc^?^cMr`$MEozG|F8Rp%ag(ArkQQh%v- z8wwzut^R9zN3>?QKqCtpouD-_@3L$3oEvZssaIQErWsV(25uCy5FVbH&MEm8Eallm#Wl z()nu}(YI{eAL&Miy&Qj2`!J=XnmUwwfYFhbO7?!ZHm&ep*;d4PX`M6{c4BP>Qko!) zOUxyraW7*p5j#lIh0#c($$nuY(XyYU2kR|&YROc-f{xUhFOv+wJVt{N6Tu8y9rMD> zs9t^#d$Jy!s<`(BHP_7|i=^#9C61avrHp3*_?^ z!-6fG`OxPL$*jE#haLd?Gve`DB5|S)GUbQlW?waKXGcaHb6sw`mKYfW`;ayf4}-xm zUm(549F-Qkzx|5a+&(@QQp;@mZNK^7_6!0a9BYno=q&{VeeW-rFIo zT>>xoEJ(9MYApvxd+=i^WY8&+18s6?GdBZso|Jn19bmP6kltWu0~I_lx0jL044Inw zHj)+Vgk~aTqBhA)^nQGY@CgoqRTbY6VTC>?v5BcHAVUC-;Np@^WKk{k9T_E~ z>}iNS&H7js^~{e&f93H=db(zKAuQB;Q$v-Vf>Ry(mj+bK8Kkt}lE*D!AFs(^DZ#NS z(D5!UL?&31p!(DBaEsN}2zsvG0K{`-D!a?SclUDPsOB#GgN6MQGI zZAcX@`an?*ZHU4&tpXdC3}hB0XIXh)tIM;V!lEHucT=P8BH;_IHYOL2{D7MPj^sTsl9<{%}vZ(TV)^Q71$3`mO^ZcceTHt$YB? zb~kouzHZ%p?5r#hqGbUZ$6M*Z-lxIDRFm8w?}I~|*F^49dAh3$`$0nZg!hk1d-+p; zZACZF&aF9P9cO=EZ_;vrg1OzuZu+z^p-O{LT>Yf)m7r}a8MA(V!P2gb`t3FCf?Heb z@t&X`KU%uW0wey4*>AAEcT1k=^w&pTHv!y-R$e{~(M0`-i)nAZZ3^62{Bw8- zd)SZiQ?idar{;^u?zzz>C8!nTa8isV+`zj6)e024cwNH#B4g4pxvF!nf0CJw)v($+ zU5_Gq!H+?Ht9sG%$1jOmuu7me*Na0|f|)HVAIl0Z%vzYeepXZJz1=mpOV&+e!^ff` zyjwKJR~WuYp zSTDP?o2Ax7uEciW;_-@0*o^{Bh|*S;x8D}_rn%2};vjN*NTdhu>`*9Tum^_Qu^KR? zDI(#%(d%b34<8O&tsh!6gErnCW^KHvg1efLL9Q&GLmCv~c}TZD#)tHgLNAVE2H?}k zN>-aj3A5bpHfCI{n@#D2qg2gfq;(=IIM}drw*Fcfb^2kpBAZ~_!cgd;M@9vo9r$5L z|3G#b&PYrha=Ti9JwzI=!6P(}nnnxKSDi<0B0G&#od@75aDgKj$H3pg?~|lb&Knum z{>73|ziJP!#{K@~gwB@hGv3z2*Oq?M_m65&@yCZ2De}`YQN{_Tfd->%#BNRM3zWTi zwlG3HNFc?1%mw03*bX|~x>NKX`>LImEHHdQyahdc^EZs=e0=&MkSS|O+?}l|G8+2U zM;}>q#P}nzVJHogWR(86I6!Ojz>>Si=C!Xf?FU1(G0z$ikCCttJ|JHuvod%H84z<# z^a-aTk{&0$Wy&vh%Q5Hr`A4ToyTC1!RwM)Cr?Ik)n_dK*`v*Edvxjhe*1ZC18nC=E zfmI2pe>3=|Ha$cb+2ryI&%(pET80Y#Z0pX9c;vywNjs6I)LCx`#rfVIW!y~CYv`jh zlW@{R*8&0?$;#;=BqO?`!W2@~B$!4;I=-$QSbR*Sm52Pr%ysJdk%kCHit-T;JSdM| zM8qNz&cagBhFPRwuw%ko^jjBV$aLT6C2|r81$%&}?cv80%y_n%U|$KMl~SC>R%OJ8 zGzf8>TI%3)<_#_mlZIo zV=FQa2t4})dnPE-xDH8E$GccHVt8O7(wlP%poocfoIgK0qh$mo6b1f0HN;A&E;-L~ zYc?yoR?EtouTEXJ5*IT7kbaZe+10^wuQ~WX46SNchiI$t8DkA0xS66trDNf<<3_`x zokXi%fgz;bTnrDKv_x@b54V}E;8PoG>Z{Nqg|0k%+|`<<_t8%1PIAR^Cw2tI>qMT> zYMKcm>^f_7(&zhJE*Bq{zqb)mYjI3t7=sB#F9iFBE@gI%8$!3UNcCTa>TTn{*7uEe zSZzbdT#f--4Zd}@z9LAG-x`r6oDGNwx`+N`!HywcS%|}d*L>$QCvYRJ+zu*K+=OUU z<|5>3A?5|Jx*PEaIl);tEfhLE5oa+}g+vlo_16z=TC%Sq-|TO4J3BV^qagG{V9QFL zuxPy0JJe^#1U8=yB3L^Ehaw@zt(c%49xX72KY(Ri+Z2)paXr0{u^GlUA;=NSMS6a) z%qc9|3OyaWcwIqYTkXWUN3~#IsZ=O90>lA$Q9EBTNEwrk_ zX@qm%x=+_+p2#!xFdF`6z^>|3s081#K&uPs;-O}6$i}9E-4oyEhd~)$1FXUAop4NC zK}Q>l#E~J6WKU{-Chdlvxn&ix2q!f?9TojnIurZb)Jq`GJ6u`y@gTEzEt)o}b$5QK zG~qHM4MyKs{Ol98e2d&aDpO*7_1gTGT^B~i-A@=@tgFc)`F%|5ku z_%R%;$DZ$+SQxG4T?aecWDE~|9Oh;x%$qP}i2-1;qrd9Yr!e;&Ys{$nuUE;ok1Y)+ zw{51hS*Z*tj=fAZH+S3rxu*D8K!qC+bpsscn8%7#+zD}n0E6izM`bt}L963N(8<@~ zW(bp^IBVYb`GRd&`K;%m0|V+Idn8SAFRQXb8TnPFjW_Y0<6V2#ID(nYH;GQK;O0R8 zs3Le=R(-a$KI_Nh&`@t*ZkpE2KNl;jAcy2a*TCtbPhR7~g`|cW|OR(ap0ch~{r$^wP5V0OQSM z+U?;ZjS2tUekWSrABtwA8{ibD%+)5a9YOzv(`N?`yhVMk5VKy^jYgk3hROkOZ5eHf zk}ENiRukz1NNz>WrFQIVjWpX}gGf)zT(oaIaa!}BZGN}6{x!SYtr)Cc`>x4h{q^6X z*VuJ9?!}~&y!8&NHjlhH5+HZRO5@ece?R|Ra5;Wv{hZgm*NQ|6pG61PL1;JznZ@nbow9s_@1y%1u?8<`c^<& zOYVBao%HaxziV|iolbPIwOv=1Fe8cn%&egOsfC{j5#eW9MhwZMI=jW<4R;Jq;bf#D zgc7Fp&FzpU$A)QzGP#DfM~5z_TvnWAs0|2AOS`VTn*PNeVx_w z2jR*CgZWZOpnO(K7yI(Bljd4U;4hKYlJUw?;woV4gnr?K8orH7Nu6)W-}_JN66*Om zJ=uK60KlgE(D}@?wlBMu&h0Q)c=B_-Qpfq9$XV@wzUPnVX3IR8KiB;Z?SxG7(YhY7 ze4z8j@VcEA*PG_AE?s6ho{}LB0MBBdMB6UA8%6V4_W5j#jv$=@uJPXPT_>|oJYte? z_J&}~neFLjN)N0xdJ;S(yZ1UT>Rfb4eZ8MpnY^2H_~B>ZS>}_6`?_W6rQ#RAOKMg% z@4NTEvG=A?O|09xaADA>2oXVg2r7z-hz&gbik_ci!8o$@I_da*uZ=5^6z0SR7-207temO>2RI2Ko zHRpWie4b~1h4|F%(9SCt-ETM;t~Wdp61Dm8s&#Jk$UXqU#(wGs_MtN zDTobyIvghp)lt+piOoK`Uei-oqjJ$#v-skqx>^fYf-~7>H%wu7M2qwU@;uC#G#ou1 zX&$U9aVBwOaEW>Q;|E7?N?4okZDUj#zTUTxIv&eZ~>+e(?^p6$-)Pr9Ic`q{lCRfMVbamgK53H zi>Kz+$44Q@Cn>}*5NHzB4)6?G(P%>SDV}Arz`exHN2I}%Dmu_v=$%!%SgP0AUsjl) z7_vofXP(usF{jqLrz-TwBGO)tr?sYTPFVgewCVf&?RVkVAoSgjvA`n~8Fsume)aiu z`SK-3LJFk0JZ-n2i9Qsg8kLKD^vvSS!;qAoJ3T!gR8<`h)MEV7G!jqC5UCVtgR(yRS|Yn`5+F4Fu9Tx(P{ zi%8x26fP!7YeFWYF}+i3!OuMF7fZ!o8zs_{H`%>9q-dgWk9vQd)>gS;joXG7Gt76` z_S9rR8y4Q$y>SVwEZ(Gib^q*g^cVG~=VfEs~Rn3VmP@-#J!Z{NDA*gAZYu)!}EOLFbSex4r+7?Wvi=*(WRdzW72ot!tJR7p4Oj z_H8Ib=$q5o`4j?G?tvbIy-*+C+H{jzS6Rt3_OQiCeLQvqg67L^*u%RSx=I1tLLNg zfh$UO#igQPy2{uI=x@~fPqgH$9VuR3fO`Kc zOy%7zIDYU1)Vpc4`A;U!5-`@(r&J}dH<~T2$OS{mrJ$xxC;mVPQ6De zk_MQvx>{hf2k_0v>tNe!dP;G;mZyFH8?zN3f40X?K8^QTNmO3o>89LQqlxpvuB+|$ zef$GD*5_Xd=rW5>{$$=qxbQ5>iwTt0mBCUrdZSP1kkjKD+Dul=SW)qe(w*@a&*}YD zs_rLp*fXc;FQ}2NLkt33XO{uNK{j4;x?1UbT)ibrcznTps8ZG6 z>ILOQZ*VEfvF~FIy|*ew>qJdWzixv?@2B2RuS8>G?6EI{o}A~&h|hg|qUZy%U@njE zv@wLbY{*DHzf--o(4OOUU=<^yWb@kn*x9_pvSJJ_6J2v?oHT-~$_eL)l(aY?YuA^B z7+jEF)z}Hu;^si3Dq%AZ)DN=P1Er(}fQYBAn4(6&op1Wb+2oc8(FfdOIJ&Apq~Xx6 zBf7E^1cP7rgtayCgZ!5BdT1Opyku@NK*TWBDo2ZBk|~eFm}^ z-NI5FZ!3L2dEo+3VKQLMf#0wMX&0GoPW<%;^r;!hIQf$S(ui_osS;$zi7=8bZ^Z~jk0t;~$aMd5u_lqr46;2>?h)0D5I4^XHl4?N=X`iT@tb)~oy<5)I z@FXd5*zE!b-h67MiT1UTw?81es=+y3itNltehj_XzhJudehNKbvewPqqX<80d7vrm zY8pgHfvz$);wB`00TsiLyqK{Rg}L#QF@xyAs*yX!@&W!0xVEWj=-W|faXuEOBsu`V zn*(}w(PTN1CQ+mRTbb+Cb~xQz=0A7g-tP}<>e4(P z{`UK?juR$@h+*=dRuj;-)GaLO57(Jf=EYd{$ME7^#~!WjI(0D3?9XM*6H#oIz>dF_ z^5?Rq{C!z1g=(2UJMjtVKW$Ly?>0zTG1VCv0yc>I(_(d@KWz}b7>=)^i8RPRZP4@Y zHi(;AWcc6(RzIMhM)*_H?WYlvdp?r}8Sw2N5HP~>zZu~aFv4D8DVeuT1dP!AZ${Vy zj4+=MHpy&D!A~n}|C<&5Uv;};ZMEN1 zh}L>3iOUH?eqCS!`w<~tB!Q?P^KCTi?p~~r|$e4k`-_D>;P4gbz`?$8Hm5}s&uaQet^!x4w zUQ5+WXXOGkjDs7pI*@5%wEtRisPq5e59$EWQ*mEbesMl z9ce;@8@$YOcj(a*N;p2tJ~mM4>TlhT!3Pw0kDSeW?D8J82SXnC1Y9C}XtflMj_pZb zZba|@%g`uj!<`eymo7<1krpODx~NG-$St2>+l$JgOf9WohoUjBjPQifmTaIDjwxJ75I9C^Ivr!O=5DI@t`hyKc&xF*=y zYk;aCUV_gB2Hb1$pCF!nx^OS>qp$`LgYq3m<)Pe+FDnwkANWJ3xBrIdBHFNg{hLNI zm#{DVC*Jz{&in3Fe_mbRS7odJ@v**B^_@aT+knU3S;1qPsS-ltuq__dIf_TSlpjU~ z_WuQmuT@LgkG+*Tg^x4yoova4%(oeXAt8mAa=a!qw%&9z8_)0yDcsv=Q8Fzy&Eytt zsS*y>@GM!6qYJl;20re>rRoirOo(=RG;s0P>+SP&|G4(d(zodCuUAjGrs{Vi?3x?I z$(=s16DiBT-CaPJCVvxp0&6-mgESQcqxUQvCI9}H1j>zc4MwtOuyWE;G@fCOthKwzsxdF9g4xCecZIFUJPuSvFs+A zUb>nQ>b8ToeYvml664}IW!uVqO<_geEBCIZ2kfQhd5xrWHqbJI!&Iv(xi;!ZI{+!6 z9r^)19N^Z0?hI9tvE1{g@acaY{NM3Hko(z;xRIe4ZQm-(+MaLoD7W{f_h||B2BctB zMcROpd7s~#?sL;l76lsWF6IR@#v%6u1AIQYp6dwo75~~U*8GCSd}XYd zHoezv;SA$N!}IlWhFccSoz-%7CN#JBT=H7q;d^OyZGOGn>&=zBZy%D~54nd&Osc_# zhAW%I7Byudax59L()@hOBJz-G3ZyWp3LDNZT*Vz&tJY8msXRUTT7_k~C#2x+J4AZ* zJ{QhIV#mi%QBnnn^v}#P<4D2^&urc8X=4tJsO3IW)h$%CvrvRwCJ{pgbeT7X--OJr z4leP7Q7)o70I5 zYQ^YK%_(EyA@m8$6aTy&mug)?Xe>d&n%xoIt5TX$-^U#f5j2o4R7JB$k!6YKwRo{V z%qE}^rx!|@O%X5mGQu>Y=^BK~E#@H`dJkRV&^ExY_|Dbm@`e27A^Mu$GC_jW>xiVJ z-`%Y~*1tF*#`^6q1P#QnNIty)_5mzy?F7o1zQq*fqvdrjVS~2_6#EEO>(ckJ`)sr; z4{zIpb!k)l&1!SJx=P3EoVzOLcWv`jjV7018(*9h?A{3(8oqQNO&2K$Edu-Rb+3Zf zVK_+fij7cv_@pxB(sX!oYSelM^jL?uO#MaaTNbkyBa&$kFx{)pM~FNGo?=H?p{k7` zUB5>U8D6brThuU@ql zLT0LbE4#Py{uySMLPCDAIA;CH?`omFa(2jRF+*HXhQ_7S2N64L=5`+6w)3^h-H_W- z<0&<>^Gi|C^S{1Q8&KpofEoQyi~RiU>T`W_Av_@bAuz`6zyY^dC$hMV!CGDvi9^vB+Ad$^A?db%RR3VoJBLgY;vu_c*Ht6={EFEwqrpiI`9gV)>0x!LzGf!ZMiSqqwiV7V^a2?1Ob+>mXcgCgmc=new&B(QKzF1K zo7~1weJ2{gOKyP+xS!q;Whrc2Tq(vV;1K~Uc?uLmV!jmc%sz|c2j;FUe%QUxX74?6 zwH{h#wBpN2MdOUoP;+5YeJF2LON#@2J8uZ|+}1e~k5F420zP*;3tW0I25eMpZ8d|X z4T>s<>$vYT&x*9U9~sG&w#UCp(4Y_2Pn_P<9|SzK@d*)|K8xep(&Q+yj8$|EpbxgW zAXb-|pr#~zB)GtHw#;sJkgu(2lteBOxm}4Eul$#6pD>JNfo0h=UasDBywiK3Dg5*` z&*ZQ7jRz(M_I`7=VnYLcxbb^SBaGP@wq0s?Xe%mN9mb8%$6@t-oKk80eQ-ewbyfYL z2Y7FibOjH0gRUUB%5$IuxgKEyv?0{OuA$mr$I5?pTRjkLE92a!OHqA4QkKm&HAA$C z3`p%tagBhe8^uG$W4AhayQzXUvJZ>d%!~=|%#58#L{apqGQ@4gf>T^(YLFwK2M<7Y4soMf7~%k}8$U5fk|WC3@*EP0 z*1T;?$*^W9PohN$4YJ4zx>qKI`%ih1YT?Mby|E< zE=Mf;61NA)It4#+novjouAxSM(X#sFC-uu#Nf|;BH|hBo=^dZd_N&~G%`p@IM=f8X z_R3kAY5k4UH3lJ07i+4^ryXh|W2%dRPE-9<%}|EZrB8WzBh&IBgO9yRXZ`dd_e#7t z>HDc)d+Y5 zEj!6|Z@W#rSldU^6m{b_63w}jEOPT}yV&#@ef#Mg#eum!!IBPbSR<@%Z{Lv~+vEke z#ufh6q`|eI;z9*S`oEbY3o6ikxc4EvO!6tC#lSs%x`gZ+9?0Oe(ESgJ>CSvqH z^?#|N$yo9Zi~(qJn(2D$%1-n#?p$Mi?A0Op!AeyvP zJbMC1{TwEkpCBufh*^&1hA0I@#T zFN`OIJZrd$BWc&V-^Gk_nYc4!Wev5!u`$lB;rWY(+a-_j>6K9w+~F(#Tf>M_bztDE5)R=y*sz~`yP(ZSFx|5bN*b1@u6mP z9JxY61l9A7(T#bOmTV!OeGyQav~?TyF1VBr(R5$XX7xNtTi~)VHLaw})zQb3T1GZA z-u0R^1$?p^^c3U1m=RbCAHURQUfq8BscC}Ruwf^({hy{0Ap7vo;+m+jI5d5?GjR`m zn^)E~Zr+ioJ35Mn;0{-A&tSb`1ZR1pP8`vQqwT6ERI*zKxZ!=;cZX8SXg*$;o~jS^ zJ|CBJ(N>~vfRjAlwUN|87XOBmBlXj%>J4$Ge)b}3s6Lym+T#75EMi zp(mtX`QL1BLry%|w4v?a-s8MQrc%LdBka|Vxpof0zGy0hZ9n(YH zkfXs}1-mZmvHViM=hn&CcVkk;dJat+&^nd#@(N5WTKALhDApLRX+> zai}?Y*8CbcjnDo_X-P5p8JOsX0!+VO6$!ME2pj~FB_Kmow_*o%OLL_@^#AD8%%~!^cP&uKA^i`s+ znL<(L+N_)cb{7gyH16@$qb16LXIIs%fg@OwmaXVbm8N?qPj>5}<5%c+vuS;Y`n69j zzJtPmY*`npt69}&DTlY?cizgYnbX}QMF2b~q;G3tJts;R2+X-lRct_Az^|ff!k^kO z=W^Wy=CGGnWFEnLvN<$oPqevGYb`#7Xp=i7LJq!-V=-jB$27VjY!RHm-}#xLSQ7M3 zv<|jsrCw*F63Ara`?;MQku1d^(<16S(ynmUzgb@VN#lJL_`IS=GwA|s1D z6AJO>dEUll_xw~}bpstTZapW&%d$s+dOmS@FTscptL!<_P zIX9e}aT|ULFDrpy=FT-S=i+WwQZ|iFQ6)fh2 z#cg@sa!!|j6I+m{khafYP2t;5h_Ku4PR9&JmZ8ZZCb( z=ANLYD?x;y=X-oPHFaKklJ54;Ee3*9oMs&BYX=G-zC4>MkZoCtgX?_wXB^?UWALTN z=SV{#%(dE>2rm{x!n@YDCVGw}<=o-%$edfdPGA!%AI)GLsItknOVGNiHzlz2FLZgB zqhvIE`~hR5-W;-hFq4TCA<;^L6R_ArQ72;)R_o;j9%z_%fDtdgtga0(uEk9? zbr1j)*sUT6a3BkuVPtb=pDT=NQd4}||IK!@U$9W~OijO@EzTLD@jXO6P6n;CHKI36 zF`^8o0B{G$!v(CAj<~(_9jNu*SP7i8Ae8prX$0t4FwF-u`dYOvj5A|^y3`S_M@x;H zMs>8~^FERM_Hl|`d0qKwXaNvbs*!+AqJ(PJK@ofobG3!kCVw?S7!Yjs3jT1=?L`9+ zQXP?CQE$*U!*9D<4|t7j?agiItz@DErafQkwfzgq?vUM!U8gg{GfGRHT|U?P<|6yZ z;tU@qiqPEGj#Ys9MFO>6fdQ@sH=M^>N*M=n8@C?2hp@nsPbg(vCa?F-S;O^Dsy8Fa z!9O4iI3IkXi7O6qWnW@53t_+IdP(*#JiC-29eGbDKT7Gj$S6b?!P0zizrZ0m%yPBl^N~nsc%%^y~|q2vs}? z%-R;crs&q&0?b+7Kzq6{iLJe9Oj7=IpCIxvf#=jarYzjSu^QM~O+SxHtzC#(_v@_X z8@s!=H)L*6r3RhS%CrnrGIM_QtJ8$ozm;1BPmOT9D#O%6zfQq%k+PWMU zh~WDd05D7BICrcVTw*MPzW#^lQ$2q2#FGCP8ZYpVHYgB1!3R0h3Ubbbcd(hR25-qF z_*R-KiXZ}`)lHAP_l4Jm;2jnEG0k>`vPS`W#w!5cZONFYKHgvAXk5;BhFSm<7E7I>@Oe$K}7i>ew zFua9$%@I~%cbRjjVgz9jTI{|Di`io8!E#Huvf@Tx@g2NgW?s@38u_G^XuDLG;D--1zN(Du3kOPy_aT!B=^Rvo;3T)0RnsiNH`&yPEV$XGL`Z>Z$2IETJ@N!8k5FXz>e~*@UTE8wLbW4&$ZDZf3YUrF-h|HJ!QP>ILJ%%46w&P?q zoCIRPS@@J_3zyNJL`ycdya8^@l5LQpgTY1WHPpR-$u)8NN$3DT`!hp3Dq=@Z_R{w^ zmBJyfLPf(*Yx&3a0|}+XdP}|!yu@c~wlI}E$CSB5edb!y7J(D5D@t3>Mmr=Tn*lqG z?FC68*@vT9!P6^oO3sQH({4!eoOw{WGsYurAuboS53b?=0>^O-qDgA7eH&JatDWusYe;THcE0x`b)#b&d1}o@M zlnJ!fu>%8hL323sssW+{%{ymne`!$UZZY4-Uiw3|RRaUPUL(PU&JhwP4Q^k8HacsZ zjLKcbXqQf6t|AW~;O5vB0dE&)LeUm2Y_bb%`&mXHFjC1Apo;Kq##fLPWw`QlQW)w% zrQNc)7k){i0?Zr=FjG1$wuovizfV5A1mn3jM$`Mb_{Py^2j5xV5pgeJJY*rDv7cTB zrYsb5e`*?m9o_vStw7^w3*jK!F0O=lNa{i8gRz;MH9R>g+jr}bQ}prv#rvn`ZR!|( zrQ-t+ss?8L{H`E}=lo_}!WPB8piwv<*U)C5r5!VlQUnQrC9j4B)Bxi3adHJ*`8ElB ze1MmlJe-~1QhII}P%o7_TFCJX6!F4i8*F;%dr#xBgkZL-WeaIb&xOjGfy#)a*OL08 zR>Tu-+#HAJ&~(ZTKb5l{Hut5Ciu!Wogr!7enImj@iu)D(7>(sTqsWd1em@4I2}p17 zDzy0Y$YrVztHHi0XD2r^QJ0`=;;h^4-u=zwLeX=i6K?#Wn|{w8T}dR1)<_v%xGQz#P1^)$9BQXT)Zo+$U`{R_hbBd5p5!kJAlmr;-m9%+iTj}T9h7B z9z`bEMea74J0L)`5>foKfblF&e)ir;KWV%!2Jlf2_@Grt%0L6jtG1ux%nPXj9ZRfE zZ8@)b6pkGT#-S_=1v*@T++fy5?pVHR{-wze;+99#frLr3o}XF% z<_~ajW9@uwwj=MCk#)Qzmk&uFoad@#rn2s340eCca*HdUxP|zllgQ+rpv2-O>$QMB zg2yQCM$QiSPQGZADT%w%(ZIzukrUAyF!EtfzziHv`3m}Agx&oaYXT<$9Pnu#o}x#N zziLeb3KAq*u0WgX`#3rjb%RzzNE3Z}hgj$v&zz(1w8ky&jHk#nkEz1sQZF|o{JKnV zrTQ7~Y&vbsvTTO50}j?~o{MNv;sf!o9*uN>LAm)w=R(eqb>z0zT@mEKP=B_S{)jnH z;9gT#=;XaJR`ukaXO>6o6+KtG6O3x^SdxBuV4i14P0cC0HI&C)Y*&X?CE?ip{FWsj ztzDQyr88M2-6KZ=o_ITDJiJIhzv0P$H}=>V)R;l0B56EBz_sP<;ARsFTAT`^F~>zp zL*F9T)mx4WuO6i(zu+m!KhhO->*Qod4CaNhCHLEX+#r@=?4$BW{i*JHN_ zO=87)7J&eTtX`ig_!B4L&Or$`Q4;X*VL0yxbm!-+-@9B^kGP6uX_wl3-IrXMRFX*Z<#rIdn8m-fRaxR?W0B z3HheBpSY#WYiXY*&pJ4gTws35XRV^7USDaghj80IMcJr8kxBm^j0tNeR@DhVJiXG% zjQ6cS$x-gq2l@p^`^pyY8=UB?H)XvxwHW^NY(Pi%o!|&t>w|}VU)kQEmwSVqBa}@N z^808zZXwz{|8?RQvOu6Ww3sc=L&jF|sZYJs_VvxpI-l|!bJT4()jaXRODX1kKv9;B zq2ImIp>*>O)<-K??RiB`H0#t)wMZsl5>xy zTQ;1zxZwVN)5TP?KXTUrbHH=fO%Qj&zgZS?H4{5TF^_f$_s{<{9da^$(OLwmZ>)7} zs_4w0rikar3pW8E2Yi@N08H^TFvZNDAn9MIY`kb=&MshzXMic@1JrVlCY%W@Q8SUe zeCFS~90HUulh3=0Hse~~kl&@S9~vnb+CP@Hr?AhUL_N9UxYeTl=;cSuO@Oe+zR9yR zl_*8bdWwXAQU9u82bIg;UthC>cV+9IiU z{d|iabKUZNA0+IwZ1=^y#&~TlNvYolscin2(;pYPG~$_Fj7c!7LY0}ks3SEcQsg0H z9%V^HdYpOIy@%6_(PN`gmH`@CWlmiW&UvnAf4Wnk_^nQ&!L%%^dD6Dl;8xVXw)+1w zFYbSAn>e1AX#3YEaaaWJpx|OD9$BKfeFqDQ4M3Nj8%PCXmMtc)46L z?k_uDXnXx|Sz3`&;rf$X961R?K_@%9A;KPr{{Qc9Q)a}PTWrPKJe05@BfA?#AMY&J@%IP`>U28VvjTKX@}bs%B7}RPJupQSNh2_?$|# zOe?W#Y!e=cnf~R9Gx)-%a}mt4sDaTd-h)czw6}60TCcit57H)6IMXCS!M*xIG<$W(A50&6njH66XMae6+ABZG; zUi>E9DYnnfo#L{IydAmREw(5w+{|c>l8RIoE&FqG5mbvG5Zzg@6PoN{%x3^M2pKK< z^FRLYIAwKH$A>Fl!`;<`u`kqa2F{qRn<9Wop&=v2USaSywzkcuDM!tf>6K)r#s86y`|rGZF{Fag z_NATpyA|QPkX~S6V!&|szdk~0l|)hR$O!w>nGc)m57?={m3nvUkI1xp zA{zCSXXZj!W%Fe!8JEBMwofF=YTP+vW*?MoVY6^O$4FP~$gEHDydme_OUhkV*g`}O zvgorJ@?9L-XwvWpbnb0mY{z`q2mu>c3hjI*9;KLYd2Mdk?|WNUpTNA&_|_hb-38IbjaO zkYyAX48OhRL`QdJ&vXnWf>R-dOm&?xTz&I5en%(g!OT?TPBBvJ!IaKh`SHR}hs$QG zG0a+htlgpVitopvjl*IuuOT~ME+9XcIF~S*3I0c#K1IpT9x;4B+#bMx!`X9?Vqo~{ zY1gr0srD$D*(3bP=inCZKeZE7%_>^2P)>r!9O6&@fVPr(BM`Qo!Ne`g0J))Vu_Zkb z@S}fF1tC$Wa@zMU(JwzBP9+qXLZ*|yYJxs!E@IY4xbS(Yw&fmgwu?1;D19myH$_nsf>IfFQVpS~!DekY5F5p#%su8CBxjhx-Q zTJK~Ntj}&!{L*s64E0n;CG`SBz;@0{*M>H|3q$Q{gO&d;T!oR8gG=$$< zE`)zGL#Z~ZU-U?oVh2_^MQt2bZx4xXcet?W{NmOF*SU7zZ;Y$(PplHg5EP({jyExu zsv&~7z;H-^a?AbWV$h+>aePK%vS^#4{p`DK&%rWUi@Jngae&ZUuF1!J|Kq1q#I{m_ zdtq(^j*`EL461`f3UHqPcBcI7$?Gp&#&7Mr-%wFc`7S+LG-9?R3iY%=rQnU3%dRbV zlcNeQ4;n2WSKb})d{uy%%xLL{n-AH|Vdw8FYqXDw?dnmuipqn?GG=Nsx!%6TULoJp zBrEpqe~UOsS~(bJ^y_i!Nd(1gC*tzI7(96tIUj?SjQoItrT}d^_54?}^1~m+hotYx z{Z=T&G*H+>sucSpG9loe*dHA)@6mYsF4-%71v|BeT9u%Iis^)O-sMehmsc>{y>0}{ zzx8DFWTf*3=KG&(0ll?X@Xz);{j8(DJ%97N7yft7+%X77RzaHY`k+q->#mip`FOy> z{*7zX`e&`F+cRGuuu<_<*2NjEha@yK(OV2JH$$9t734R?H4|fX*`dE(Rg>tVU zUtLqZmGVfRwYAvzcBSt{*QV;6-*Zu;lvpy?28|H>0&4|taN7$f`S8tO^W|}KRG(ri zqOu29%T6@P?MekQg?hrQhkf7H#-)JSdw}K9NQ)UWfHU)Fj1A)VEOtpA%J*J7CO4={ zk@BgXhKL`yh$R(nS1W$lVClB-0ew56qg8Da56CdDCFF4oW`*OfYH!;=VzF&01iMup_6$91d)n2$t z&2|%=4TKI?P~PEYHi;C#fO|?R-Kcll4K}}tEG|-<3MK8}4Hi8roiTkR+A$EsKh33F zUmTq()2^bZ!s*Q`8`|C$K7A!N$9!rq`+;vH8oS>NiN7r6CS8%M z6D`28t%FBD$Tzx~@;(d}aj58-+Uom{2}fE+wt`8@PwT6CFp_Lrhc<(erA~um+^RcO zpNh>??La_M5E#O|@g&f%U?}+0ciFK%cmVvVKj_&qZ<3^4VdYrD$l^-_AaUb+;%(LB=rZBwXl{L`Vg);!u`hVV8${f=`vlsBerzz z-q*V-yVenk0ThWQQk_}?vn=WZ^?zs09X#`tC!(+$?3$}Hkh2%~IMPcx zPMA}V=V3XV1tLP2OIpt)T7%g`I|{f@zH`8Q9%@3kMM3aGLiG4his1ChFKXfy{XxpH z-NDq2Gc)7jJk2zZxy{%Qx;}b*(vx8QmgUJrZQ|= zG-x`6sLEKu*SXImk95#+Tv;yBiYNEmmHLCYn|XZ#Fw=RKy@ zQ~6rgKwX78H_z82?iAjoZwCc_W)me|Z3p~d+%BG3QPb?7oPpKj9nW-s=rR*ZGN~Bw zsITwUjW8i-f-yUU!IR7>C%S@Q4QeW@op^=Z1KvPvaHGH!CyDWS#`&ejL|fO^rWHU8 z%kl<10qB>6cjYpMpl zk$C39gU%9b+02ulLpEsC_E*Vxrdcjkm-m&HeR)`kQmD<+Ncfnb@G2J_Ng70R?En@~ zU<6Ayg&z7Ct%z^p>w>Lsp9Q)({3y1A?}U#8RthHu-(=S(DZNQ zC0YI`pMCi0faC)+;ZJtmg2JeCk$fcrddU-3<(t4W7Q7`I2Nh4=s0TD+mEafo5|KLz zxF)(0K$P6c2dYpQ?Lx0XfP?IJu;mAZ)RsLUhkdkt(h}iaUH#R`_$e}Wim^&ydWo+E z7lT=sgB8V}jZ=#_a{zzbWG8h_b?;6AzW80^2$iBIba-1`SNpshWAGRw_w;4KBejqh z2E*IyUCu{^59aap0qq0#w7r;bK~M(r(OsK~F5I|Qoz<{O2VH(ZAkFGpFEHpX!(6x& zNC@hbKSgO(+rqO;qy@bz?d~dL4ik>PvVQES9hChjrOXpCQz|1`=RWSgktogkErSkX z4{}ayoHE=8S{{{drA5=H2zxum^WTUxsxr^@k=A>LUz$L+kJO}I;I`V9PUq|_AI#~n zjqg~ZNR*~0tw4e)VJ2OCimX&`$%(Y<$QmqV;ct@H(b0q?wq|RWtk-@=dcH@2R|rKa z?ty1#VT<1FL4hq>v81xoSTVOYtZy#O+-HA0BsN8T=FmbOHsPQXz*k9S`wMjY$+Gkv zgfAVn_Zj0^Xo-4{(rG1J8xAcn8_eV3=2SU4!>?J7%eguD)l(}{_fgl?Uu3qSmFU}M za*UkkuxP|oa&^W$D_-+yU4K~_CSGvPW83KRxY{-@bLqVB_r>`U8CMVo^}TVGenq^8 z

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

9FAi(SS0wf~P9%cM_aPAF`Ht$Lojfro0 zJ@iS12d1imZU!-9Ch8_$(zw)B$@Fb!2Ha6i5w&Jz@3}3-n%`_lwToPVRW7@pCL4qXlUrKgDaGf3-!w|=S z=DHJZ}#P3Mz3Q(S8=Ywi=(C`PjsAN|Iw^wVb=yeKcO58>T?><7cc zCc?*=!BV@za2d38!= zouf2Frb9w!_#~P*vAU4v@YRP2!Ng^#jXYutnPrYC<9n$(h@3Id?quQq-hm=RaSn1Srv@K(Ng=nE!OLur^z%;xIiEsSOg}D zVkc4lA_YK}n*f>bgaKL30(r+k*i9hwOF-sq{uwa>z!eg(=Uaf#)j(eWaa55lTp_8W zkbwb|h*knc0d%YB1(24$2K;4CgOqdzSpv&~%1S0M01y<)(VlD3_~u)I0Xzi;;4id= z;{gJltO8lRzB}Uo?J$TV&EWc0`>=PiuWm2d?f&}*Q=hM}RJ<{~J3bOtff~J_*KA^= zh8V)80sn+b7LLHSt#gpyz5b>=Bz->WnNhbR3UF<7@fSs{u=6>norNBEaB7bX#wdLG zbn*R;3dB0qyWP6WOb=L_n?Vu%e@#LEQ6@NgbR6f>wkOz>y9Tcp)MMuein<|Ad)wAd z_LL!Rk~FS@r0y)Cfc8d>N_+1Ex(>E4ASp0KVVJg$E#r^Ii#h7}IVg11ZrKw>1+vG} z)*wgk-#$mZNWEfpq~Jm5t)=UnM-HO%8`Lduc^_D)`Ty`QgfBl2W*|Ks%_AfvXT$=T zZ?zwph2)wdM*No;1z=uWJtpqdAMLH0kZw4u`7MR~=2qtRJnNHBplGrr4?`UuaDIu8 zbPC9Pu`x={v8#pCL%+W^>_n8+I>A^r2k{nX`D(YDN0G4uahp(k61ueDNB#T^3tveI z5}eoQWksaje7C`(8+yC3)p`R-TYZT8U3hu*Sslvv4Hs&wXP;qgv0-jon8i@UysWf8 z3|{-r=%}~S+SIY*yF!ELg-=Ykel-VC3ojP*Mzr*0ePAiPSwI$iDr_tqXz|mVXsoKA z4f#g@bWxO#*Rw!$oc8Y9DUGw`p_my z82~$p_o9Ja<&v1@Ung1ompBQ+53J!E|G{44gT{lqX?1EzJ!vuYp2x|pvz06~GPO(O zI*h9fvUZv{MED7Id`dY+M_;4w?KI&!)`wpYZ$d&lVD0^91NGc)35Jl%Tn;e*(gd BtxW&` literal 0 HcmV?d00001 diff --git a/examples/7guis-flight-booker-react/public/vite.svg b/examples/7guis-flight-booker-react/public/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/examples/7guis-flight-booker-react/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/7guis-flight-booker-react/src/App.tsx b/examples/7guis-flight-booker-react/src/App.tsx new file mode 100644 index 0000000000..a36f575b06 --- /dev/null +++ b/examples/7guis-flight-booker-react/src/App.tsx @@ -0,0 +1,79 @@ +import { FlightContext } from "./machine"; +import { DateInput } from "./DateInput"; +import { useRef, useState } from "react"; +import { X } from "lucide-react"; + +const Flight = () => { + const dialogRef = useRef(null); + const { send } = FlightContext.useActorRef(); + const state = FlightContext.useSelector((state) => state); + + const { startDate, returnDate } = state.context; + const isValidDate = startDate && (!returnDate || returnDate >= startDate); + const canSubmit = state.matches("booking") && isValidDate; + + const trip = state.matches({ booking: "roundTrip" }) ? "roundTrip" : "oneWay"; + + return ( +

+ + +
+

+ Book Flight + +

+
+
+ + + send({ type: "CHANGE_START_DATE", value }) + } + label="Start date" + /> + + send({ type: "CHANGE_RETURN_DATE", value }) + } + disabled={trip === "oneWay" || !startDate} + label="Return date" + /> + + +
+
+ ); +}; + +const App = () => { + return ; +}; + +export default App; diff --git a/examples/7guis-flight-booker-react/src/DateInput.tsx b/examples/7guis-flight-booker-react/src/DateInput.tsx new file mode 100644 index 0000000000..62e1de0a6c --- /dev/null +++ b/examples/7guis-flight-booker-react/src/DateInput.tsx @@ -0,0 +1,22 @@ +export const DateInput: React.FC<{ + value?: string | Date; + onChange: (value: string) => void; + disabled?: boolean; + label: string; +}> = ({ value, onChange, disabled, label }) => { + return ( +
+ +
+ ); +}; diff --git a/examples/7guis-flight-booker-react/src/index.css b/examples/7guis-flight-booker-react/src/index.css new file mode 100644 index 0000000000..51df6499b2 --- /dev/null +++ b/examples/7guis-flight-booker-react/src/index.css @@ -0,0 +1,116 @@ +* { + box-sizing: border-box; +} +:root { + --white: rgba(255, 255, 255, 0.87); + --inner-shadow: rgba(0, 0, 0, 0.15) 0px 3px 3px 0px inset; + + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: var(--white); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.visually-hidden { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; +} + +body { + margin: 0; + display: grid; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + margin: 0 0 12px; + border-bottom: 1px solid var(--white); + display: flex; + gap: 8px; +} + +dialog { + background: #333; + border: none; + border-radius: 8px; + max-width: 200px; + & .close { + border-radius: 50%; + width: 32px; + height: 32px; + padding: 0; + display: grid; + place-items: center; + background: var(--white); + color: #808080; + } +} + +select { + padding: 8px; + border-radius: 8px; + margin-bottom: 16px; +} + +.text-input { + padding-bottom: 16px; + & input { + background: #222; + width: 100%; + padding: 8px; + border: none; + border-radius: 8px; + box-shadow: var(--inner-shadow); + &:disabled { + opacity: 0.5; + } + } +} +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; +} +input:focus { + outline: none; +} +button:focus-visible { + outline: 12px auto -webkit-focus-ring-color; +} + +.open { + position: absolute; + width: 140px; + left: calc(50% - 70px); +} + +.error { + background: hsla(1, 100%, 38%, 0.5); + padding: 6px 12px; + border-radius: 9.5px; + margin-bottom: 12px; +} diff --git a/examples/7guis-flight-booker-react/src/machine.ts b/examples/7guis-flight-booker-react/src/machine.ts new file mode 100644 index 0000000000..bed7fef1cc --- /dev/null +++ b/examples/7guis-flight-booker-react/src/machine.ts @@ -0,0 +1,74 @@ +import { setup, assign, assertEvent } from "xstate"; +import { createActorContext } from "@xstate/react"; + +const TODAY = new Date().toISOString().split("T")[0]; + +type FlightData = { + startDate?: string; + returnDate?: string; +}; +export const flightBookerMachine = setup({ + types: { + context: {} as FlightData, + events: {} as + | { type: "BOOK" } + | { type: "CHANGE_TRIP" } + | { type: "CHANGE_START_DATE"; value: string } + | { type: "CHANGE_RETURN_DATE"; value: string }, + }, + actions: { + setStartDate: assign(({ event }) => { + assertEvent(event, "CHANGE_START_DATE"); + return { startDate: event.value }; + }), + setReturnDate: assign(({ event }) => { + assertEvent(event, "CHANGE_RETURN_DATE"); + return { returnDate: event.value }; + }), + }, + guards: {}, +}).createMachine({ + context: { + startDate: TODAY, + returnDate: TODAY, + }, + id: "flightBookerMachine", + initial: "booking", + states: { + booking: { + initial: "oneWay", + on: { + CHANGE_START_DATE: { + actions: "setStartDate", + }, + BOOK: { + target: "booked", + }, + }, + states: { + oneWay: { + on: { + CHANGE_TRIP: { + target: "roundTrip", + }, + }, + }, + roundTrip: { + on: { + CHANGE_TRIP: { + target: "oneWay", + }, + CHANGE_RETURN_DATE: { + actions: "setReturnDate", + }, + }, + }, + }, + }, + booked: { + type: "final", + }, + }, +}); + +export const FlightContext = createActorContext(flightBookerMachine); diff --git a/examples/7guis-flight-booker-react/src/main.tsx b/examples/7guis-flight-booker-react/src/main.tsx new file mode 100644 index 0000000000..4fe57a2e55 --- /dev/null +++ b/examples/7guis-flight-booker-react/src/main.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import { FlightContext } from "./machine.ts"; +import App from "./App.tsx"; +import "./index.css"; + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + +); diff --git a/examples/7guis-flight-booker-react/src/vite-env.d.ts b/examples/7guis-flight-booker-react/src/vite-env.d.ts new file mode 100644 index 0000000000..11f02fe2a0 --- /dev/null +++ b/examples/7guis-flight-booker-react/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/7guis-flight-booker-react/tsconfig.json b/examples/7guis-flight-booker-react/tsconfig.json new file mode 100644 index 0000000000..a7fc6fbf23 --- /dev/null +++ b/examples/7guis-flight-booker-react/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/examples/7guis-flight-booker-react/tsconfig.node.json b/examples/7guis-flight-booker-react/tsconfig.node.json new file mode 100644 index 0000000000..97ede7ee6f --- /dev/null +++ b/examples/7guis-flight-booker-react/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/examples/7guis-flight-booker-react/vite.config.ts b/examples/7guis-flight-booker-react/vite.config.ts new file mode 100644 index 0000000000..5a33944a9b --- /dev/null +++ b/examples/7guis-flight-booker-react/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +})