From 3fcdf7e5efb7afaf5538e5564a9e8c5c50b051a9 Mon Sep 17 00:00:00 2001 From: MrPatator230 Date: Thu, 19 Mar 2026 15:46:03 +0000 Subject: [PATCH] Initial commit Created from https://vercel.com/new --- .env | 3 + .gitignore | 23 + .idea/.gitignore | 10 + .idea/copilot.data.migration.ask2agent.xml | 6 + .idea/copilotDiffState.xml | 26 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + README.md | 70 + afficeheurs-ferrovia..iml | 10 + package-lock.json | 17887 ++++++++++++++++ package.json | 46 + public/favicon.ico | Bin 0 -> 3870 bytes public/fonts/achemine_bold.ttf | Bin 0 -> 14956 bytes public/fonts/achemine_italic.ttf | Bin 0 -> 15416 bytes public/fonts/achemine_regular.ttf | Bin 0 -> 14792 bytes public/fonts/avenir-black.woff | Bin 0 -> 28996 bytes public/fonts/avenir-book.woff | Bin 0 -> 68096 bytes public/fonts/avenir-heavy.woff | Bin 0 -> 22056 bytes public/fonts/avenir-lighter.woff | Bin 0 -> 29611 bytes public/fonts/avenir-medium.woff | Bin 0 -> 16952 bytes public/fonts/avenir-roman.woff | Bin 0 -> 28256 bytes public/fonts/icons/icons.eot | Bin 0 -> 51336 bytes public/fonts/icons/icons.svg | 588 + public/fonts/icons/icons.ttf | Bin 0 -> 51180 bytes public/fonts/icons/icons.woff | Bin 0 -> 27772 bytes public/fonts/icons/icons.woff2 | Bin 0 -> 23080 bytes public/index.html | 43 + public/logo192.png | Bin 0 -> 5347 bytes public/logo512.png | Bin 0 -> 9664 bytes public/manifest.json | 25 + public/robots.txt | 3 + public/type/aleop.svg | 164 + public/type/data.json | 384 + public/type/lio.svg | 43 + public/type/logo-aleop.svg | 164 + public/type/logo-auvergerhonealpes.svg | 88 + public/type/logo-breizhgo.svg | 108 + public/type/logo-cfl.svg | 9 + public/type/logo-db.svg | 5 + public/type/logo-eurostar.svg | 314 + public/type/logo-fluo.svg | 40 + public/type/logo-frecciarossa.svg | 74 + public/type/logo-hautsdefrance.svg | 221 + public/type/logo-ice.svg | 1 + public/type/logo-inoui.svg | 1 + public/type/logo-intercites.svg | 107 + public/type/logo-ler.svg | 214 + public/type/logo-lio.svg | 43 + public/type/logo-lunea.svg | 74 + public/type/logo-lyria.svg | 1 + public/type/logo-metrolor.svg | 338 + public/type/logo-mobigo.svg | 332 + public/type/logo-nomad.svg | 13 + public/type/logo-occitanie.svg | 145 + public/type/logo-ouigo-classique.svg | 578 + public/type/logo-ouigo.svg | 73 + public/type/logo-remi.svg | 381 + public/type/logo-renfeave.svg | 72 + public/type/logo-rer-a.svg | 111 + public/type/logo-rer-b.svg | 119 + public/type/logo-rer-c.svg | 116 + public/type/logo-rer-d.svg | 113 + public/type/logo-rer-e.svg | 198 + public/type/logo-sbb.svg | 5 + public/type/logo-sncb.svg | 11 + public/type/logo-sncf.svg | 99 + public/type/logo-sncf1985.svg | 63 + public/type/logo-sncf1992.svg | 132 + public/type/logo-t-h.svg | 116 + public/type/logo-t-j.svg | 123 + public/type/logo-t-k.svg | 125 + public/type/logo-t-l.svg | 124 + public/type/logo-t-n.svg | 138 + public/type/logo-t-p.svg | 134 + public/type/logo-t-r.svg | 138 + public/type/logo-t-u.svg | 133 + public/type/logo-teoz.svg | 74 + public/type/logo-ter-rhone-alpes.svg | 401 + public/type/logo-ter.svg | 1 + public/type/logo-teralsace.svg | 146 + public/type/logo-teraquitaine.svg | 133 + public/type/logo-terbassenormandie.svg | 254 + public/type/logo-terbourgogne.svg | 120 + public/type/logo-terbretagne.svg | 186 + public/type/logo-tercentre.svg | 64 + public/type/logo-terlanguedocroussillon.svg | 10 + public/type/logo-termidipyrenees.svg | 10 + public/type/logo-ternordpasdecalais.svg | 293 + public/type/logo-terpoitoucharentes.svg | 367 + public/type/logo-tgv.svg | 211 + public/type/logo-thalys.svg | 94 + public/type/logo-thello.svg | 678 + public/type/logo-tramtrain.svg | 112 + public/type/logo-trenitalia.svg | 74 + public/type/logo-zou.svg | 29 + public/type/mobigo.svg | 332 + public/type/quais/data-color.json | 384 + public/type/quais/logo-aleop-color.svg | 164 + .../quais/logo-auvergerhonealpes-color.svg | 88 + public/type/quais/logo-breizhgo-color.svg | 108 + public/type/quais/logo-cfl-color.svg | 1 + public/type/quais/logo-db-color.svg | 20 + public/type/quais/logo-eurostar-color.svg | 11436 ++++++++++ public/type/quais/logo-fluo-color.svg | 41 + public/type/quais/logo-frecciarossa-color.svg | 10 + .../type/quais/logo-hautsdefrance-color.svg | 221 + public/type/quais/logo-ice-color.svg | 11 + public/type/quais/logo-inoui-color.svg | 53 + public/type/quais/logo-intercite-color.svg | 104 + public/type/quais/logo-lio-color.svg | 43 + public/type/quais/logo-lunea-color.svg | 1 + public/type/quais/logo-lyria-color.svg | 139 + public/type/quais/logo-metrolor-color.svg | 542 + public/type/quais/logo-mobigo-color.svg | 332 + public/type/quais/logo-nomad-color.svg | 1 + .../quais/logo-nouvelleaquitaine-color.svg | 121 + public/type/quais/logo-occitanie-color.svg | 229 + .../type/quais/logo-ouigo-classique-color.svg | 1 + public/type/quais/logo-ouigo-color.svg | 52 + public/type/quais/logo-remi-color.svg | 381 + public/type/quais/logo-renfeave-color.svg | 75 + public/type/quais/logo-sbb-color.svg | 6 + public/type/quais/logo-sncb-color.svg | 15 + public/type/quais/logo-sncf-color.svg | 88 + public/type/quais/logo-teoz-color.svg | 1 + public/type/quais/logo-ter-color.svg | 18 + public/type/quais/logo-ter-rhone-alpes.svg | 401 + public/type/quais/logo-teralsace-color.svg | 146 + public/type/quais/logo-teraquitaine-color.svg | 264 + .../quais/logo-terbassenormandie-color.svg | 254 + public/type/quais/logo-terbourgogne-color.svg | 120 + public/type/quais/logo-terbretagne-color.svg | 186 + public/type/quais/logo-tercentre-color.svg | 79 + .../type/quais/logo-terfranchecomte-color.svg | 1 + .../logo-terlanguedocroussillon-color.svg | 10 + .../type/quais/logo-termidipyrenees-color.svg | 10 + .../quais/logo-ternordpasdecalais-color.svg | 293 + .../quais/logo-terpoitoucharentes-color.svg | 357 + public/type/quais/logo-tgv-color.svg | 211 + public/type/quais/logo-thalys-color.svg | 1 + public/type/quais/logo-thello-color.svg | 678 + public/type/quais/logo-tramtrain-color.svg | 112 + public/type/quais/logo-trenitalia-color.svg | 1 + public/type/quais/logo-zou-color.svg | 29 + public/type/quais/row-background-arrival.svg | 122 + .../type/quais/row-background-departure.svg | 158 + public/type/sncf-voyageurs-logo.png | Bin 0 -> 9597 bytes public/type/track-car.svg | 25 + src/App.css | 85 + src/App.js | 182 + src/App.test.js | 8 + src/components/WcsButton.js | 23 + src/index.css | 13 + src/index.js | 17 + src/lib/sessionMemory.js | 18 + src/lib/supabase.js | 28 + src/logo.svg | 1 + src/pages/Arrivees.js | 114 + src/pages/Departs.js | 115 + src/pages/Displays.js | 113 + src/pages/TestClassiques.js | 0 .../classiques/ClassiquesArrivees.css | 398 + .../classiques/ClassiquesArrivees.js | 746 + .../classiques/ClassiquesDeparts.css | 398 + .../classiques/ClassiquesDeparts.js | 1038 + .../quais/ClassiquesArriveesQuais.css | 475 + .../quais/ClassiquesArriveesQuais.js | 871 + .../quais/ClassiquesDepartsQuais.css | 488 + .../quais/ClassiquesDepartsQuais.js | 898 + src/reportWebVitals.js | 13 + src/setupTests.js | 5 + 172 files changed, 52525 insertions(+) create mode 100644 .env create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/copilot.data.migration.ask2agent.xml create mode 100644 .idea/copilotDiffState.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 README.md create mode 100644 afficeheurs-ferrovia..iml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/fonts/achemine_bold.ttf create mode 100644 public/fonts/achemine_italic.ttf create mode 100644 public/fonts/achemine_regular.ttf create mode 100644 public/fonts/avenir-black.woff create mode 100644 public/fonts/avenir-book.woff create mode 100644 public/fonts/avenir-heavy.woff create mode 100644 public/fonts/avenir-lighter.woff create mode 100644 public/fonts/avenir-medium.woff create mode 100644 public/fonts/avenir-roman.woff create mode 100644 public/fonts/icons/icons.eot create mode 100644 public/fonts/icons/icons.svg create mode 100644 public/fonts/icons/icons.ttf create mode 100644 public/fonts/icons/icons.woff create mode 100644 public/fonts/icons/icons.woff2 create mode 100644 public/index.html create mode 100644 public/logo192.png create mode 100644 public/logo512.png create mode 100644 public/manifest.json create mode 100644 public/robots.txt create mode 100644 public/type/aleop.svg create mode 100644 public/type/data.json create mode 100644 public/type/lio.svg create mode 100644 public/type/logo-aleop.svg create mode 100644 public/type/logo-auvergerhonealpes.svg create mode 100644 public/type/logo-breizhgo.svg create mode 100644 public/type/logo-cfl.svg create mode 100644 public/type/logo-db.svg create mode 100644 public/type/logo-eurostar.svg create mode 100644 public/type/logo-fluo.svg create mode 100644 public/type/logo-frecciarossa.svg create mode 100644 public/type/logo-hautsdefrance.svg create mode 100644 public/type/logo-ice.svg create mode 100644 public/type/logo-inoui.svg create mode 100644 public/type/logo-intercites.svg create mode 100644 public/type/logo-ler.svg create mode 100644 public/type/logo-lio.svg create mode 100644 public/type/logo-lunea.svg create mode 100644 public/type/logo-lyria.svg create mode 100644 public/type/logo-metrolor.svg create mode 100644 public/type/logo-mobigo.svg create mode 100644 public/type/logo-nomad.svg create mode 100644 public/type/logo-occitanie.svg create mode 100644 public/type/logo-ouigo-classique.svg create mode 100644 public/type/logo-ouigo.svg create mode 100644 public/type/logo-remi.svg create mode 100644 public/type/logo-renfeave.svg create mode 100644 public/type/logo-rer-a.svg create mode 100644 public/type/logo-rer-b.svg create mode 100644 public/type/logo-rer-c.svg create mode 100644 public/type/logo-rer-d.svg create mode 100644 public/type/logo-rer-e.svg create mode 100644 public/type/logo-sbb.svg create mode 100644 public/type/logo-sncb.svg create mode 100644 public/type/logo-sncf.svg create mode 100644 public/type/logo-sncf1985.svg create mode 100644 public/type/logo-sncf1992.svg create mode 100644 public/type/logo-t-h.svg create mode 100644 public/type/logo-t-j.svg create mode 100644 public/type/logo-t-k.svg create mode 100644 public/type/logo-t-l.svg create mode 100644 public/type/logo-t-n.svg create mode 100644 public/type/logo-t-p.svg create mode 100644 public/type/logo-t-r.svg create mode 100644 public/type/logo-t-u.svg create mode 100644 public/type/logo-teoz.svg create mode 100644 public/type/logo-ter-rhone-alpes.svg create mode 100644 public/type/logo-ter.svg create mode 100644 public/type/logo-teralsace.svg create mode 100644 public/type/logo-teraquitaine.svg create mode 100644 public/type/logo-terbassenormandie.svg create mode 100644 public/type/logo-terbourgogne.svg create mode 100644 public/type/logo-terbretagne.svg create mode 100644 public/type/logo-tercentre.svg create mode 100644 public/type/logo-terlanguedocroussillon.svg create mode 100644 public/type/logo-termidipyrenees.svg create mode 100644 public/type/logo-ternordpasdecalais.svg create mode 100644 public/type/logo-terpoitoucharentes.svg create mode 100644 public/type/logo-tgv.svg create mode 100644 public/type/logo-thalys.svg create mode 100644 public/type/logo-thello.svg create mode 100644 public/type/logo-tramtrain.svg create mode 100644 public/type/logo-trenitalia.svg create mode 100644 public/type/logo-zou.svg create mode 100644 public/type/mobigo.svg create mode 100644 public/type/quais/data-color.json create mode 100644 public/type/quais/logo-aleop-color.svg create mode 100644 public/type/quais/logo-auvergerhonealpes-color.svg create mode 100644 public/type/quais/logo-breizhgo-color.svg create mode 100644 public/type/quais/logo-cfl-color.svg create mode 100644 public/type/quais/logo-db-color.svg create mode 100644 public/type/quais/logo-eurostar-color.svg create mode 100644 public/type/quais/logo-fluo-color.svg create mode 100644 public/type/quais/logo-frecciarossa-color.svg create mode 100644 public/type/quais/logo-hautsdefrance-color.svg create mode 100644 public/type/quais/logo-ice-color.svg create mode 100644 public/type/quais/logo-inoui-color.svg create mode 100644 public/type/quais/logo-intercite-color.svg create mode 100644 public/type/quais/logo-lio-color.svg create mode 100644 public/type/quais/logo-lunea-color.svg create mode 100644 public/type/quais/logo-lyria-color.svg create mode 100644 public/type/quais/logo-metrolor-color.svg create mode 100644 public/type/quais/logo-mobigo-color.svg create mode 100644 public/type/quais/logo-nomad-color.svg create mode 100644 public/type/quais/logo-nouvelleaquitaine-color.svg create mode 100644 public/type/quais/logo-occitanie-color.svg create mode 100644 public/type/quais/logo-ouigo-classique-color.svg create mode 100644 public/type/quais/logo-ouigo-color.svg create mode 100644 public/type/quais/logo-remi-color.svg create mode 100644 public/type/quais/logo-renfeave-color.svg create mode 100644 public/type/quais/logo-sbb-color.svg create mode 100644 public/type/quais/logo-sncb-color.svg create mode 100644 public/type/quais/logo-sncf-color.svg create mode 100644 public/type/quais/logo-teoz-color.svg create mode 100644 public/type/quais/logo-ter-color.svg create mode 100644 public/type/quais/logo-ter-rhone-alpes.svg create mode 100644 public/type/quais/logo-teralsace-color.svg create mode 100644 public/type/quais/logo-teraquitaine-color.svg create mode 100644 public/type/quais/logo-terbassenormandie-color.svg create mode 100644 public/type/quais/logo-terbourgogne-color.svg create mode 100644 public/type/quais/logo-terbretagne-color.svg create mode 100644 public/type/quais/logo-tercentre-color.svg create mode 100644 public/type/quais/logo-terfranchecomte-color.svg create mode 100644 public/type/quais/logo-terlanguedocroussillon-color.svg create mode 100644 public/type/quais/logo-termidipyrenees-color.svg create mode 100644 public/type/quais/logo-ternordpasdecalais-color.svg create mode 100644 public/type/quais/logo-terpoitoucharentes-color.svg create mode 100644 public/type/quais/logo-tgv-color.svg create mode 100644 public/type/quais/logo-thalys-color.svg create mode 100644 public/type/quais/logo-thello-color.svg create mode 100644 public/type/quais/logo-tramtrain-color.svg create mode 100644 public/type/quais/logo-trenitalia-color.svg create mode 100644 public/type/quais/logo-zou-color.svg create mode 100644 public/type/quais/row-background-arrival.svg create mode 100644 public/type/quais/row-background-departure.svg create mode 100644 public/type/sncf-voyageurs-logo.png create mode 100644 public/type/track-car.svg create mode 100644 src/App.css create mode 100644 src/App.js create mode 100644 src/App.test.js create mode 100644 src/components/WcsButton.js create mode 100644 src/index.css create mode 100644 src/index.js create mode 100644 src/lib/sessionMemory.js create mode 100644 src/lib/supabase.js create mode 100644 src/logo.svg create mode 100644 src/pages/Arrivees.js create mode 100644 src/pages/Departs.js create mode 100644 src/pages/Displays.js create mode 100644 src/pages/TestClassiques.js create mode 100644 src/pages/afficheurs/classiques/ClassiquesArrivees.css create mode 100644 src/pages/afficheurs/classiques/ClassiquesArrivees.js create mode 100644 src/pages/afficheurs/classiques/ClassiquesDeparts.css create mode 100644 src/pages/afficheurs/classiques/ClassiquesDeparts.js create mode 100644 src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.css create mode 100644 src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js create mode 100644 src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.css create mode 100644 src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js create mode 100644 src/reportWebVitals.js create mode 100644 src/setupTests.js diff --git a/.env b/.env new file mode 100644 index 0000000..0b018df --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ + +REACT_APP_SUPABASE_URL=https://snkpkkewlpetcqhfxotm.supabase.co +REACT_APP_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNua3Bra2V3bHBldGNxaGZ4b3RtIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzAxMzYyMDEsImV4cCI6MjA4NTcxMjIwMX0.zLyNKXHSM2Kz58DFwTPySnhLjnSY_T3LtdYbXM2nVVY diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/copilot.data.migration.ask2agent.xml b/.idea/copilot.data.migration.ask2agent.xml new file mode 100644 index 0000000..1f2ea11 --- /dev/null +++ b/.idea/copilot.data.migration.ask2agent.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/copilotDiffState.xml b/.idea/copilotDiffState.xml new file mode 100644 index 0000000..f49a839 --- /dev/null +++ b/.idea/copilotDiffState.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..4b151ab --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2db149c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..58beeac --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. + +The page will reload when you make changes.\ +You may also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can't go back!** + +If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. + +You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `npm run build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/afficeheurs-ferrovia..iml b/afficeheurs-ferrovia..iml new file mode 100644 index 0000000..78aaf41 --- /dev/null +++ b/afficeheurs-ferrovia..iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5ff4546 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17887 @@ +{ + "name": "afficeheurs-ferrovia.", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "afficeheurs-ferrovia.", + "version": "0.1.0", + "dependencies": { + "dependencies": "^0.0.1", + "@supabase/supabase-js": "^2.35.0", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^13.5.0", + "autoprefixer": "^10.4.27", + "eslint-plugin-react-hooks": "^7.0.1", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "react-router-dom": "^6.30.3", + "react-scripts": "5.0.1", + "wcs-core": "^7.5.1", + "wcs-react": "^7.5.1", + "web-vitals": "^2.1.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "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==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", + "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "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==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.7.tgz", + "integrity": "sha512-6Fqi8MtQ/PweQ9xvux65emkLQ83uB+qAVtfHkC9UodyHMIZdxNI01HjLCLUtybElp2KY2XNE0nOgyP1E1vXw9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", + "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", + "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "license": "MIT" + }, + "node_modules/@csstools/normalize.css": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", + "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==", + "license": "CC0-1.0" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "license": "CC0-1.0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.17.tgz", + "integrity": "sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==", + "license": "MIT", + "dependencies": { + "ansi-html": "^0.0.9", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^4.2.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x || 5.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@remix-run/router": { + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "license": "MIT" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz", + "integrity": "sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==", + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@supabase/auth-js": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.99.1.tgz", + "integrity": "sha512-x7lKKTvKjABJt/FYcRSPiTT01Xhm2FF8RhfL8+RHMkmlwmRQ88/lREupIHKwFPW0W6pTCJqkZb7Yhpw/EZ+fNw==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.99.1.tgz", + "integrity": "sha512-WQE62W5geYImCO4jzFxCk/avnK7JmOdtqu2eiPz3zOaNiIJajNRSAwMMDgEGd2EMs+sUVYj1LfBjfmW3EzHgIA==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.99.1.tgz", + "integrity": "sha512-gtw2ibJrADvfqrpUWXGNlrYUvxttF4WVWfPpTFKOb2IRj7B6YRWMDgcrYqIuD4ZEabK4m6YKQCCGy6clgf1lPA==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.99.1.tgz", + "integrity": "sha512-9EDdy/5wOseGFqxW88ShV9JMRhm7f+9JGY5x+LqT8c7R0X1CTLwg5qie8FiBWcXTZ+68yYxVWunI+7W4FhkWOg==", + "license": "MIT", + "dependencies": { + "@types/phoenix": "^1.6.6", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.99.1.tgz", + "integrity": "sha512-mf7zPfqofI62SOoyQJeNUVxe72E4rQsbWim6lTDPeLu3lHija/cP5utlQADGrjeTgOUN6znx/rWn7SjrETP1dw==", + "license": "MIT", + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.99.1.tgz", + "integrity": "sha512-5MRoYD9ffXq8F6a036dm65YoSHisC3by/d22mauKE99Vrwf792KxYIIr/iqCX7E4hkuugbPZ5EGYHTB7MKy6Vg==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.99.1", + "@supabase/functions-js": "2.99.1", + "@supabase/postgrest-js": "2.99.1", + "@supabase/realtime-js": "2.99.1", + "@supabase/storage-js": "2.99.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "license": "MIT", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/phoenix": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", + "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "license": "MIT" + }, + "node_modules/@types/q": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.11.tgz", + "integrity": "sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.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==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", + "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" + }, + "node_modules/axe-core": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz", + "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-loader": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", + "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.4", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.16.tgz", + "integrity": "sha512-xaVwwSfebXf0ooE11BJovZYKhFjIvQo7TsyVpETuIeH2JHv0k/T6Y5j22pPTvqYqmpkxdlPAJlyJ0tfOJAoMxw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.7", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.1.tgz", + "integrity": "sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.7", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.7.tgz", + "integrity": "sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.7" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "license": "MIT" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", + "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.7", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.7.tgz", + "integrity": "sha512-1ghYO3HnxGec0TCGBXiDLVns4eCSx4zJpxnHrlqFQajmhfKMQBzUGDdkMK7fUW7PTHTeLf+j87aTuKuuwWzMGw==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001778", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001778.tgz", + "integrity": "sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/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==", + "license": "MIT" + }, + "node_modules/coa/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/coa/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", + "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.48.0.tgz", + "integrity": "sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "license": "MIT", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "license": "CC0-1.0", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" + }, + "node_modules/cssdb": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", + "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "CC0-1.0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "license": "BSD-2-Clause" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependencies": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/dependencies/-/dependencies-0.0.1.tgz", + "integrity": "sha512-geDgiSknEUQ3IV0hr8EnkrZRdgdybxMzySyWRE8P/TE4teCV7g1rRrHAjd6TdlOLIkZVQm+tZU9AxdLv/m57kg==", + "license": "BSD", + "dependencies": { + "async": "*", + "node-walker": "*", + "request": "*", + "underscore": "*" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz", + "integrity": "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", + "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", + "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@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-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "license": "BSD-3-Clause", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "license": "MIT", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/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==", + "license": "Python-2.0" + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "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.8" + }, + "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==", + "license": "ISC", + "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==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "license": "Unlicense" + }, + "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==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "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/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.6", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz", + "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "license": "MIT", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "license": "MIT", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "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==", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.3.0.tgz", + "integrity": "sha512-0kjkYHJBkAy50Z5QzArZ7udmvxrJzkpKYW27fiF//BrMY7TQibYLl+FYIXN2BiYmwMIVzSfD8aDRj6IzgBX2/w==", + "license": "MIT", + "dependencies": { + "esprima": "1.2.5", + "static-eval": "2.1.1", + "underscore": "1.13.6" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/launch-editor": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.1.tgz", + "integrity": "sha512-lPSddlAAluRKJ7/cjRFoXUFzaX7q/YKI7yPHuEvSJVqoXvFnJov1/Ud87Aa4zULIbA9Nja4mSPK8l0z/7eV2wA==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.1.tgz", + "integrity": "sha512-k7G3Y5QOegl380tXmZ68foBRRjE9Ljavx835ObdvmZjQ639izvZD8CS7BkWw1qKPPzHsGL/JDhl0uyU1zc2rJw==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-exports-info/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "license": "MIT" + }, + "node_modules/node-walker": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/node-walker/-/node-walker-0.1.0.tgz", + "integrity": "sha512-oC1skUd/BuOroGKhTnUJn1B20ETn9SFaHjRRfS911XcdQxTlzDEWTaK0KJpgluI66tHvFBC3QnN5x7YlZb5SeQ==", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "license": "MIT" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.9.tgz", + "integrity": "sha512-mt8YM6XwsTTovI+kdZdHSxoyF2DI59up034orlC9NfweclcWOt7CVascNNLp6U+bjFVCVCIh9PwS76tDM/rH8g==", + "license": "MIT", + "dependencies": { + "array.prototype.reduce": "^1.0.8", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "gopd": "^1.2.0", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "license": "CC0-1.0", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "license": "MIT", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/postcss-svgo/node_modules/sax": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz", + "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.2.tgz", + "integrity": "sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==", + "license": "MIT", + "dependencies": { + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "sax": "^1.5.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "license": "MIT", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-error-overlay": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", + "license": "MIT" + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", + "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", + "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.2", + "react-router": "6.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regex-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.5.tgz", + "integrity": "sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "license": "ISC" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.80.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz", + "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "license": "CC0-1.0" + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "license": "MIT" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/static-eval": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", + "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", + "license": "MIT", + "dependencies": { + "escodegen": "^2.1.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/svgo/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==", + "license": "MIT" + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "license": "BSD-2-Clause" + }, + "node_modules/svgo/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svgo/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/svgo/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/tailwindcss/node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/tailwindcss/node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "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==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "license": "MIT" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" + }, + "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==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "license": "MIT" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "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==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcs-core": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/wcs-core/-/wcs-core-7.5.1.tgz", + "integrity": "sha512-3p19wOmHolJ++Nb9GqrIescBxm/jm2xkhsOSK/I2hfF2/ZyAQIdUppP1JoF2uIq6qsjgWIsgKfvjZKYbN1qmQA==", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.9.3", + "chalk": "^4.1.0", + "lodash-es": "^4.17.21", + "tippy.js": "^6.3.7", + "uuid": "^8.3.2", + "xstate": "^4.11.0" + } + }, + "node_modules/wcs-react": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/wcs-react/-/wcs-react-7.5.1.tgz", + "integrity": "sha512-5KHUlvzi8pKLYFs+9iTTvtqfFZZcxKERYNrtnsPnubB5frho9ESlWiOebnizQwkf5pO21y92rNleLh/fyrnJyw==", + "license": "ISC", + "workspaces": [ + "../" + ], + "dependencies": { + "tslib": "*", + "wcs-core": "7.5.1" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.105.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", + "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "license": "MIT", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", + "license": "MIT" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/xstate": { + "version": "4.38.3", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.38.3.tgz", + "integrity": "sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..722197f --- /dev/null +++ b/package.json @@ -0,0 +1,46 @@ +{ + "name": "afficeheurs-ferrovia.", + "version": "0.1.0", + "private": true, + "dependencies": { + "@supabase/supabase-js": "^2.35.0", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^13.5.0", + "autoprefixer": "^10.4.27", + "dependencies": "^0.0.1", + "eslint-plugin-react-hooks": "^7.0.1", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "react-router-dom": "^6.30.3", + "react-scripts": "5.0.1", + "wcs-core": "^7.5.1", + "wcs-react": "^7.5.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/public/fonts/achemine_bold.ttf b/public/fonts/achemine_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0aa810e4c40ffc861c71929fd863f83ddceee2ff GIT binary patch literal 14956 zcmdUW33Ob=m1y1SO;Ss(-n-SCy8HFM_j|plweON8*^*`B-Iioo#>Vo#UZ(`Et$T0Xd+XM%Cjx|!dU82YknX|3<%>5fUI`P@I)SyW@nvcLnui8{O9%|(^YrZY znO((0wK+mmFJavmFPz!Ct5U&{q?NVTTsVJd^Jj0q=N&?7Zz3f0)RwuKP3i~Qy0Pt9 zOoc62p+21W298zYb70H%eFt}Sm^<yl@l$=*)D-LB$aT1?v2xYbS!EyA>$_hdfH)H#g%9seL+E(pQ$7(=JW{8TkBgJf{ zb03P&6n;h@BPvkR$LLkqbfTKWzY?AxM<}ULAkma4FDK-IZsHxrKH_I$_2e=vcwrK8 zP?J%`1LQYe0tVIyrx7N$5vWpvHMLS|C2Qa<(n`lkEv7ET)g({vCnj)_D729Amczdh zyYdn;LGLCCdYr7L50RuogZVy8qnLh;&kC{{TCqGxwDeBWLyKg!;gW&D4f8y@vE}ApO)& zJameTP!+UPU?| zB#m?(8KQbZ6GwG$t_3VR{qS_Xk+_>uMeHyxPXvF~N@sQS@N>cFet~B_1pv zz_cIRF2vMP&8dT|rxvW&kSQ9&x{a99)tv6c`n#p{5W;a*VIj{6;`{ED!e>m#zjr0% z9YGr2oz~&=`KcbqpzI_4gyu0F#plZ~zXlVIhp*whOmk0Q>LK^Sk1$6X6{x+8HpN@j zXOTBpPtl6tIuSaLX%yQTeY+9PAxyoPF2K6QSciBqKCwD^EZioQ@4}q%6qCY=ee774 zcp=XDGCm`J6#sy2E-bTo2QaZQ2e2-PDOpYQMyx~Y#b{>hB(58-rE(hU7|ea=QM` zizkw)bSBFSxqPA6Qfh5$@96C6?&gMYX*PX1pqwdRfZ);Q9joRC^FKFMX-&KE0{i*ub8`KSA zQ|`a@9W)J^mj6HaZZ!RW^hIr0Q~4v*GJk>?2r&r;4Hs7A3IcDnnAMy=wDqKGjjJ&e zj$|^CaE3lse)#jBFaIDIiv_s^Ghnzs?S=2rS4k5QaD1*%wCNNUv$YvKU@_|`=TFh% z2iCR@^=7m-bG^Z6P^+|7pUuYE>RO zuUf*>4)l+lq?wQ)r{RiRQ4o`$5sH{JoS3*U)OKJ%Hm&2!h`2eZ$VH#4G4o*7-<$K!Ua&he>skIezB4G3rTnN6p4)Pb%FVH5#Mc>2M;HOol?`sSjy@ zKP^79doiw~sq!{`l)gfAWD#PY0?w~P? z#T{XWD+>^yZ{u2{93s37sf*xwS$DQ$;tbugXC7qcXdz?F%*?r(Zf#0)dTWs(1 zTll%{hj4pmc-at!S%M+r6c(7|>Zr!X#qBkj&P$ro0jtTMaUUE!w0(}>^8DV|wmp0J z!hr+3GdMm4_rXQ<=fsUG)eK!=YlNa;;lj#7c?v}CegqENt0=+r9DK8a|ozn z2;aixx%5{r{VM*!HK$G;eCQ$U7pn}A*T|RAE|KB~^7yq6;_>i@vlw9}$rErJ6q&zM z%=;`!*!jf87h`=}0{D54DhJ|7C@SsJfqXd<9;8hIQ=9wQ7JXA%w^ z{o2ukiXDvql=$$(q(!+fktlY}rO*6O5 zApTuA+t<)eFkeX%4hjYilJ|FmddHPCKY!sJXL#%*8hgZzBSc^*bODnPR527^)GORB zbhHt4pz&D}_C!~tXb(FZw`7OC?VUS1W-s<+JDPj5StYFK<0pDsoB@Nw6LxJ*I4_L) zwp^I(&BZK9?*NCsEY77zKGfh`MYP-^)gfkAWjm$GGc^`1DdSId{;EaOprxfXk)fH= zlKqKUTUTpm-%u&x@!8_0CQm8b6c4!T+l1{M$?2o_lJ z%rl1%m%j(5FD#~O%J=NQ@x~+YWVv`TqbZ3r8E_o(?*nK;E}DE6pGIK3^iXOD^sXxo z987J|cM2`-9YU_dIA?{=mS3z>H1%@)vJU_6itBm<`GL_$VYGXwrx@bk)_spRyPDha z*u!Kgg!Aci)OQvYD8NpSxL0}$UswLYhbcgi{Y8^|a$4g#+*Q!^#2S?fqqh>Ds{mA5{7Yv^~FxuEO%VkDZ$D-lp z(s%|@WQQ6?Gc_XZI(*P6G+d{m=*#=4v2!A0p`TW9ovT{Q$Kc=ThW>*KU)sCt-m4F^ z9%B2e3u(}aG`PjRiy1R%-PI;k4>bG|P3M#Y_W;rQ$(x+Uqc~-5j+g_nLMYt&f-RV~ z$Fp52Thwb@2=}iqCRYx`mUcT*ep9$-Su#D@!CASa&6AJVsJkiXGS?bgmPqge-rncX0R8#FWtH?)2yTf;ymvMX|!tqRU-c(OO#H z8-PERhRj^bS?U{TU2?;&KBMnKmz7_ftZwHKMgg4^J`yOdE^p(D^Rp%1j`c^CWpo#1&QA z6CgX2eg0@`GTj?*Qn%J-T?!7aJ?mDY%*03u^<^o>&WI@=#GM2;kr>?F`uo|9e=31< zO_Uf7_C`Ho-!%MdnG@5S2S*Nyb|pqy5auL<2^JM@M`y8J1HdH*U9w0)H0Uiyj&9(uF)Cmwm1XpmK6GuzFzSf1jZ?kdC` z#i=91%Wv4$&d=O1!y1z8_F)<)8k5c8WT@rtV$l9bS78axF{B|Zq->EHOV!{*RQyGW1*qBfI&Gb^5RA0g`Qd8 zsxP6|7#J^PS0W_QucZBsw)MTHF1NcF>RR2>bX|Pib(?xG9va%y9$vL_ygdLrJEwa& zrSeRrRudfDGCX!-YnM(>AJ(X99oZ#&MBQ4AleXcS;fe_cNd-|2SHsKYe}H89MOZ_h zn}2BQEAz+;);EKFF~V$Os%qeH#4jOLeqjM#rc+;=FF!$_6N4n@_=Z}jI=gWpmqhHi-`zV{e?G6eB~H#RiZ^I)*6b)hZEzS6F}7w5 z&wHyh`3ww8qzn`Fm%qKR06h!PS^f@vuKZI7po>)PPkxF0QGU@MFsxo+@`?4@%4v8D z>(MudcN_k^L4da$?Q^50-TBtws1OsJH4C8c+A< z1aZ4d3_t;yK;;?5_C`W{3a*ew;QOwx9eFed&Y)eq4^hzm&r`{B>$S zOE*PEu(kJrh#d2W43sNBLXX}FgY+o&eEr-AB!#3=SAUQCU?O2e@m;n}7EpGis~R^t z#I%fw$p@G@Xwz-j5Y-Fx`^6Jf{ z-1Nc)tFM~o`3+Yxoxq9NeLy{n35feK9?C`YQ1u^BBRI(>z;k20j;z^{a}IP}-Q2%z z)S0v`DTeJgJ`>v+%ICGBT)|s^tr@gs3xpu>BfzO^vC6*l=TY6||G`alX zDCUvd&5^G7_$p(xE4gIVOB$8A$*exAHrvc~@YNLy>$CakE0@Z7Zbhem{xH9yixbzo z%7<%2+aU73>H~_5=%gk^3gU2<529@}!840`40em9!H{w|bJ3=zTWjoAVWHyy&-h`F zmV7^eGo2-%6n>&m)H&ki0GM<&<(DPC^anaKTwVFwD2q8<_cmO2=9QkW3mAjI6R_mE zNym3_+rmhag0{tnr}8}?8z=}f#Zu3r$>5?EE&5J3 zo6j5A9SW4PgJ!$dl^ziCOL7jIW4qmHa{C+O!3Jx+JJE}{pf1rA$}M^gjAC@;EwFLn zS?Z-5&fG;e?AnEWRv^B2VITBzPzB|cYnVNzEmDh3<)krb}$a#K)9%D^nvQ!J`O}>gS&4i|M|Kn=~Gvs zs(cggq;N_?D*vgt7xf-DMz9H}^Cs~Zl{Cz0@K*qhPN_dO{RzFQas4eXY+5jCjGx^4 z!@HpE(!+41e1!d;>4MAVx0kP=Pgd<3+h6aK^i>NSJH-?Q1yJ=j?)y9_Pk-S{cijF5 zP=cZS?{G1!eCM6==gWBc0F^S1yAp9hJvS+2L=4=Y-}&kZy~^;(JKwnpC_GZGj4mdX z@=*B67JGFCH9X=VMaw zz-yK3*j#M8LVw4-dpFki(>8G6y@(Pga+8R&gZTKUU(bh0eL<&XW zcAsa_nR6~$8w&`YJ4L&}Y_-Aa_3^Yu@3IPQdQ>T@c7}LQpgZNvEnXdLZ;l6+CqvyE zvRkIqmKU9&8mp=?C-mhk9f zhZ+|jvYHIGF8?hJPK-=0++@+wZ2{Y2856AZ$2^&KPoO>C)M%J7>lO}`HV#GWni77I zE;f%vq$|YEHKIAi06_*zVU9t z;E^-@I!4s0?7~e7cKKD^zm!OuLp;&@su9We`s87W$5dH0C;k4;Y6GsBtWu%9k7)u%$KwdHMa^V)a}1GiR;@uL(6DlTe8+;xck zGK@o=cgDcrG>e*|K(L^&LiD(*Vb$}4tJOWz5*DLAoWFVwmqY$f8O=i_OVn#NImhCe zbRwSNqnTBG;dqn_`fXNw01u_+kiqEInLD|n-rKg6@6OcJ`TP$p8VL4nplY8nn`V5` z*;Vi(AsH`~;+f2uSwo;03TL(T`9P>(w3N6+cg&(vDwUK@)q1%|cdE&vHfU`|l}Fp% zp6E&7ohI^b1Q*MOvVpww8LFzrB%b+la@4~BC;h2Ns=iKh>=-qT6$%64Mo6O?d2HFH zH_^dEf%cb1qGcBKVVcBZw+d##nU{kR+_MqCkz*#F<9L?fbh(}$tCo2}+1nuEI4$v_ zwK;E$0;7}6NswY(ofP+!U&&BRwPx3hz%7rI+$p==tydpA3-ioea>UO^Z1zoNquv=X z(>jq}+%;$p?Vg@l9cDWXUBGTT@OFg*W#+_*#3ydO61w}~*1KMP6H3C1XO^~}`If_=sherQ$s}GYR-;^@ z2}WMC@MYD!Fbgg*+t#TNBQq$x=XHSV@MvN?ZwW#zVY^1_3iG}~e@J)iY%8QKoU^gI zFmM`m(&&vhS>irRb$!lnKD+kh1J+(f$MVr@FHRvXy`=MDq_2TlG&!bLwKmd`QnqMt zM@J#oW$?rt`Of1^sf%lS0-?UCQp>t-?ynQ8R!xMuQccqnrH#YUVE=S`=S+Vf(6>Rf z(IK?a1a%&5+52oXoa1EmelBczpOr3u;jD$e0gajAy=J;RNS_m}*-BorW>tF@LL18F z#l7KuHnbY)urZTUb!gvfL62X5tZNI~8mdnAe#1kWG@AV(q70QP=knpgt zWi-ZbEC~M5kUM2-?qU``)HdiVj)ZwMbDEu=RaXG}&_y`|A%Q|mS6<}{P}M#SgK_|6Qz>4LF2c98D?W|oWM&4jcU!Ixu0 z&BfukVRG`={r4;N%`UUgp*Pm~TSg-wGG4f-{?cd!`0@{B<5jL_I3l~K4&k9csI!as<^kWoB?8nZ5)nj1w5Qx9@vfaBC`*uHYWE2^AQ5H2X+hhuMsZ7fyC z`;U(;ds;;9)o1W<#n3~44m*DrVdK$U$Rmf*kMvoZLGc&3xmf?Y5A!O zMVJ}%{Vt`Cvz@t!CO^*?Iv`hQ0}C1?^svN3AM>=tno$0e$yh8|Y(H9bJJW7=+UY4A zZE0ICgf5CEo+%9NcY7aABvp0FTL{Z>ijs1V5!a;$6LrMCdGUT*Dx0nYpfQiX9%>lA1=6EDGwshod0;K4L&Af@N{AL zJs9*N27vE}X{j5YV3Ax?HH=k_C5a-)46jF6$~71GjKdtY3E^&+C&%+HM@IlI4S5V^ zLxW-7Wii@}Ry^1+c>nkBB>#Tj4M1Aq>!Lq}I~9|M_us&3KCl+P{y~?9ANbP3hu+qH z=t~O<^q1dOY{D~x7OimU+z!K>u^{uG)f$zr>UxQe=DCY+=0;obYDC;x;l|c{uB|PX zYl8_@B%H`KKyUd$+BVGfBodwL_~Hh?cWrBNb*G=}T~`vOyxuh(rE$Ub*NKsliLuGa zTe(;`G~GRBGjFzAIL;Rg_D#2SPWN-1*UNDoOVRA1MfrPu@8j=sZSfs97JF(_oHT|o zE=2Siatb3LPhq`yPNdIaeLvQ#$yH1pKcIf$HP*n+R1Wb>#qMmGOt2V9)dfMB(6E;r zsy6}XPD)NZlbbLeht9qnfzi|V9k?PxoTe_6wg*#IEANb(od&a|QDf2h8?09K+>Q@B ziWzj&pi_mT?yz0kXl*l^v^7Sm&8zCn^|~wO&mPi{9(G1kigcof%IL)FQ%2`|>ra^& zolF;4|F`gL&at~^5Ny@+IsA>I7Law9?TFc%a+~4Wzj5fIZ#_29-8EQ#KFf z;C4ORX7UgMDm5DPPE8Wt341(lC<;Qye#Y#4rY?iy1&DH%lkC*h~?|!m_>=es$ z__PE6Ghh$dgndb5HtJorq;D|cz=}z%y%1-e7iS`qa~JNPpTSF> zkA{;(TzBG_P49!4?A_3wi>r zXmi?02kFE&b-Hl{dvPuM$pA{v5E;hz;zn?F$H-!osBvWSQe44hWI4HjtRO4ND%^S2 zkhNqTSx+{QDKbrFFtn=zHE75^_|DQCxrl5-p6({QME+hvz6v!^3w5By`~3!dqo)z{ zU;rbSzzi0!f(`7@1P*Y53j--0yqNcb5BwNM4nPn>5QYduA%?dI2}t4|m4*ytfyaB? z9OR*ZvDy|WK`XRDJ9@#L_?}od^gu84K|c(@APm7UEP@djg)vwROJE$|RbC2{und;N z1+W5E!YWt|YhW#`gY~chreGRoU?a@JCYXcGa3O4gt#A=+gL&8vJ76d5g59tOeZGCL z9}Zwh`yd>GkHIByDO?5^9*4`}<8Tx{0aw5=xDq}I3ve8+f~(;KTm#p_b#Oi004L!_ zxCw5CPr;|*7WfR@3ZKPy!ET2;;7<6Q8vh|_*OqKG<2CztY|Ug!axO^EIVta}cFR?> zd^Ianvtl)C(NqCuq+F2lTs0S@dLb)4^HMJL6XbsRYJILy&GS;fyac}>!6`^^3Q~JP zf>V&-6eKtW2~MF{g;$i|l%#$osb5LzSCaabDc59j6Kd{*ki%V_X2KwbvO%K&*9ATI;tWq^VVP>=x% zGC)D5OOPQ8GGsx9EXa@r8L}Wl&dHE-GUS{LIVVHT$&hn0P^D^YT3^^}D&dZSVGUU7rIWI#l$dC&%%mt@E#8FER6T#_K;eqNPKJ|jWqGZJJzBSGdf5@bFjLFO|OWIiK7<}(sx zJ|jbxb%)Q&kh3!6tPELJD_&MBUREn!Rx3U$LzdNwm(_}w)ryzZisxm>vVQThe(|z? u@v?sLvVQThe(|z?@d8Hu@B`@QvYi^(!w)|n`2)+pGb237a{M36z5g3J$Yh8B literal 0 HcmV?d00001 diff --git a/public/fonts/achemine_italic.ttf b/public/fonts/achemine_italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a6fde889766d9da32d18d47b581844c3ab9cb239 GIT binary patch literal 15416 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 literal 0 HcmV?d00001 diff --git a/public/fonts/achemine_regular.ttf b/public/fonts/achemine_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..84be0af52597ea3ada4e4e9ccbc3025ac5baad10 GIT binary patch literal 14792 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 literal 0 HcmV?d00001 diff --git a/public/fonts/avenir-black.woff b/public/fonts/avenir-black.woff new file mode 100644 index 0000000000000000000000000000000000000000..db1de7120ac87abe845f1e9f670eef2a282a0203 GIT binary patch literal 28996 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 ba>Gd617k%T literal 0 HcmV?d00001 diff --git a/public/fonts/avenir-medium.woff b/public/fonts/avenir-medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..5dcebc25aa1a01af324b19ef2ec2825bab2c7f37 GIT binary patch literal 16952 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 literal 0 HcmV?d00001 diff --git a/public/fonts/avenir-roman.woff b/public/fonts/avenir-roman.woff new file mode 100644 index 0000000000000000000000000000000000000000..05e78f1c5a924f4677491ab37946ff37cd3921d3 GIT binary patch literal 28256 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 V>U+ng<+b;C4SxRsep0^E002tM?UMii literal 0 HcmV?d00001 diff --git a/public/fonts/icons/icons.eot b/public/fonts/icons/icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..9c0a213510283564932cbb679b09bfbe7897ebbd GIT binary patch literal 51336 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�r((R_{0QO3p;mU^nfxid`K7LaG;?0 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/icons/icons.ttf b/public/fonts/icons/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c8bf316e948c19db4ae038adbb39242e3cb7cb2e GIT binary patch literal 51180 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 literal 0 HcmV?d00001 diff --git a/public/fonts/icons/icons.woff b/public/fonts/icons/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..82eca21aeea70b7520c1ad0afce9c2f7d3ee6995 GIT binary patch literal 27772 zcmV)rK$*XHPew)n0RR910Bn2!3jhEB0LSbA0RR91000000000000000000000000- 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

EX@y25}K0}~(#;3UDM%ie9zt=aE> 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 Tq%oJCS>gB4(El@6jH3Vm=YCLu literal 0 HcmV?d00001 diff --git a/public/fonts/icons/icons.woff2 b/public/fonts/icons/icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6bcc8d8ecedece785c023cbef884a1b4cf6d18cb GIT binary patch literal 23080 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 H00000)8gFF literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..aa069f2 --- /dev/null +++ b/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +

+ + + diff --git a/public/logo192.png b/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/public/type/aleop.svg b/public/type/aleop.svg new file mode 100644 index 0000000..5f5165b --- /dev/null +++ b/public/type/aleop.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/data.json b/public/type/data.json new file mode 100644 index 0000000..c1787ef --- /dev/null +++ b/public/type/data.json @@ -0,0 +1,384 @@ +{ + "generatedAt": "2025-10-24T21:56:22.827Z", + "logos": [ + { + "file": "logo-aleop.svg", + "path": "/img/type/logo-aleop.svg", + "slug": "aleop", + "name": "Aleop" + }, + { + "file": "logo-auvergerhonealpes.svg", + "path": "/img/type/logo-auvergerhonealpes.svg", + "slug": "auvergerhonealpes", + "name": "Auvergerhonealpes" + }, + { + "file": "logo-breizhgo.svg", + "path": "/img/type/logo-breizhgo.svg", + "slug": "breizhgo", + "name": "Breizhgo" + }, + { + "file": "logo-cfl.svg", + "path": "/img/type/logo-cfl.svg", + "slug": "cfl", + "name": "CFL" + }, + { + "file": "logo-db.svg", + "path": "/img/type/logo-db.svg", + "slug": "db", + "name": "DB" + }, + { + "file": "logo-eurostar.svg", + "path": "/img/type/logo-eurostar.svg", + "slug": "eurostar", + "name": "Eurostar" + }, + { + "file": "logo-fluo.svg", + "path": "/img/type/logo-fluo.svg", + "slug": "fluo", + "name": "Fluo" + }, + { + "file": "logo-frecciarossa.svg", + "path": "/img/type/logo-frecciarossa.svg", + "slug": "frecciarossa", + "name": "Frecciarossa" + }, + { + "file": "logo-hautsdefrance.svg", + "path": "/img/type/logo-hautsdefrance.svg", + "slug": "hautsdefrance", + "name": "Hautsdefrance" + }, + { + "file": "logo-ice.svg", + "path": "/img/type/logo-ice.svg", + "slug": "ice", + "name": "ICE" + }, + { + "file": "logo-intercites.svg", + "path": "/img/type/logo-intercites.svg", + "slug": "intercites", + "name": "Intercités" + }, + { + "file": "logo-ler.svg", + "path": "/img/type/logo-ler.svg", + "slug": "ler", + "name": "Ler" + }, + { + "file": "logo-lio.svg", + "path": "/img/type/logo-lio.svg", + "slug": "lio", + "name": "Lio" + }, + { + "file": "logo-lunea.svg", + "path": "/img/type/logo-lunea.svg", + "slug": "lunea", + "name": "Lunea" + }, + { + "file": "logo-metrolor.svg", + "path": "/img/type/logo-metrolor.svg", + "slug": "metrolor", + "name": "Metrolor" + }, + { + "file": "logo-mobigo.svg", + "path": "/img/type/logo-mobigo.svg", + "slug": "mobigo", + "name": "Mobigo" + }, + { + "file": "logo-nomad.svg", + "path": "/img/type/logo-nomad.svg", + "slug": "nomad", + "name": "Nomad" + }, + { + "file": "logo-occitanie.svg", + "path": "/img/type/logo-occitanie.svg", + "slug": "occitanie", + "name": "Occitanie" + }, + { + "file": "logo-ouigo.svg", + "path": "/img/type/logo-ouigo.svg", + "slug": "ouigo", + "name": "OUIGO" + }, + { + "file": "logo-ouigo-classique.svg", + "path": "/img/type/logo-ouigo-classique.svg", + "slug": "ouigo-classique", + "name": "OUIGO Trains Classiques" + }, + { + "file": "logo-remi.svg", + "path": "/img/type/logo-remi.svg", + "slug": "remi", + "name": "Remi" + }, + { + "file": "logo-renfeave.svg", + "path": "/img/type/logo-renfeave.svg", + "slug": "renfeave", + "name": "Renfe AVE" + }, + { + "file": "logo-rer-a.svg", + "path": "/img/type/logo-rer-a.svg", + "slug": "rer-a", + "name": "RER A" + }, + { + "file": "logo-rer-b.svg", + "path": "/img/type/logo-rer-b.svg", + "slug": "rer-b", + "name": "RER B" + }, + { + "file": "logo-rer-c.svg", + "path": "/img/type/logo-rer-c.svg", + "slug": "rer-c", + "name": "RER C" + }, + { + "file": "logo-rer-d.svg", + "path": "/img/type/logo-rer-d.svg", + "slug": "rer-d", + "name": "RER D" + }, + { + "file": "logo-rer-e.svg", + "path": "/img/type/logo-rer-e.svg", + "slug": "rer-e", + "name": "RER E" + }, + { + "file": "logo-sbb.svg", + "path": "/img/type/logo-sbb.svg", + "slug": "sbb", + "name": "SBB" + }, + { + "file": "logo-sncb.svg", + "path": "/img/type/logo-sncb.svg", + "slug": "sncb", + "name": "SNCB" + }, + { + "file": "logo-sncf.svg", + "path": "/img/type/logo-sncf.svg", + "slug": "sncf", + "name": "Sncf" + }, + { + "file": "sncf-voyageurs-logo.png", + "path": "/img/type/sncf-voyageurs-logo.png", + "slug": "sncf-voyageurs-logo", + "name": "SNCF" + }, + { + "file": "logo-sncf1985.svg", + "path": "/img/type/logo-sncf1985.svg", + "slug": "sncf1985", + "name": "Sncf1985" + }, + { + "file": "logo-sncf1992.svg", + "path": "/img/type/logo-sncf1992.svg", + "slug": "sncf1992", + "name": "Sncf1992" + }, + { + "file": "logo-t-h.svg", + "path": "/img/type/logo-t-h.svg", + "slug": "t-h", + "name": "T H" + }, + { + "file": "logo-t-j.svg", + "path": "/img/type/logo-t-j.svg", + "slug": "t-j", + "name": "T J" + }, + { + "file": "logo-t-k.svg", + "path": "/img/type/logo-t-k.svg", + "slug": "t-k", + "name": "T K" + }, + { + "file": "logo-t-l.svg", + "path": "/img/type/logo-t-l.svg", + "slug": "t-l", + "name": "T L" + }, + { + "file": "logo-t-n.svg", + "path": "/img/type/logo-t-n.svg", + "slug": "t-n", + "name": "T N" + }, + { + "file": "logo-t-p.svg", + "path": "/img/type/logo-t-p.svg", + "slug": "t-p", + "name": "T P" + }, + { + "file": "logo-t-r.svg", + "path": "/img/type/logo-t-r.svg", + "slug": "t-r", + "name": "T R" + }, + { + "file": "logo-t-u.svg", + "path": "/img/type/logo-t-u.svg", + "slug": "t-u", + "name": "T U" + }, + { + "file": "logo-teoz.svg", + "path": "/img/type/logo-teoz.svg", + "slug": "teoz", + "name": "Teoz" + }, + { + "file": "sncf-voyageurs-logo.png", + "path": "/img/type/sncf-voyageurs-logo.png", + "slug": "ter", + "name": "TER" + }, + { + "file": "logo-ter-rhone-alpes.svg", + "path": "/img/type/logo-ter-rhone-alpes.svg", + "slug": "ter-rhone-alpes", + "name": "TER Rhone Alpes" + }, + { + "file": "logo-teralsace.svg", + "path": "/img/type/logo-teralsace.svg", + "slug": "teralsace", + "name": "Teralsace" + }, + { + "file": "logo-teraquitaine.svg", + "path": "/img/type/logo-teraquitaine.svg", + "slug": "teraquitaine", + "name": "Teraquitaine" + }, + { + "file": "logo-terbassenormandie.svg", + "path": "/img/type/logo-terbassenormandie.svg", + "slug": "terbassenormandie", + "name": "Terbassenormandie" + }, + { + "file": "logo-terbourgogne.svg", + "path": "/img/type/logo-terbourgogne.svg", + "slug": "terbourgogne", + "name": "Terbourgogne" + }, + { + "file": "logo-terbretagne.svg", + "path": "/img/type/logo-terbretagne.svg", + "slug": "terbretagne", + "name": "Terbretagne" + }, + { + "file": "logo-tercentre.svg", + "path": "/img/type/logo-tercentre.svg", + "slug": "tercentre", + "name": "Tercentre" + }, + { + "file": "logo-terlanguedocroussillon.svg", + "path": "/img/type/logo-terlanguedocroussillon.svg", + "slug": "terlanguedocroussillon", + "name": "Terlanguedocroussillon" + }, + { + "file": "logo-termidipyrenees.svg", + "path": "/img/type/logo-termidipyrenees.svg", + "slug": "termidipyrenees", + "name": "Termidipyrenees" + }, + { + "file": "logo-ternordpasdecalais.svg", + "path": "/img/type/logo-ternordpasdecalais.svg", + "slug": "ternordpasdecalais", + "name": "Ternordpasdecalais" + }, + { + "file": "logo-terpoitoucharentes.svg", + "path": "/img/type/logo-terpoitoucharentes.svg", + "slug": "terpoitoucharentes", + "name": "Terpoitoucharentes" + }, + { + "file": "logo-tgv.svg", + "path": "/img/type/logo-tgv.svg", + "slug": "tgv", + "name": "TGV" + }, + { + "file": "logo-inoui.svg", + "path": "/img/type/logo-inoui.svg", + "slug": "inoui", + "name": "TGV InOui" + }, + { + "file": "logo-lyria.svg", + "path": "/img/type/logo-lyria.svg", + "slug": "lyria", + "name": "TGV Lyria" + }, + { + "file": "logo-thalys.svg", + "path": "/img/type/logo-thalys.svg", + "slug": "thalys", + "name": "Thalys" + }, + { + "file": "logo-thello.svg", + "path": "/img/type/logo-thello.svg", + "slug": "thello", + "name": "Thello" + }, + { + "file": "track-car.svg", + "path": "/img/type/track-car.svg", + "slug": "track-car", + "name": "Track Car" + }, + { + "file": "logo-tramtrain.svg", + "path": "/img/type/logo-tramtrain.svg", + "slug": "tramtrain", + "name": "Tramtrain" + }, + { + "file": "logo-trenitalia.svg", + "path": "/img/type/logo-trenitalia.svg", + "slug": "trenitalia", + "name": "Trenitalia" + }, + { + "file": "logo-zou.svg", + "path": "/img/type/logo-zou.svg", + "slug": "zou", + "name": "Zou" + } + ] +} + diff --git a/public/type/lio.svg b/public/type/lio.svg new file mode 100644 index 0000000..6d98c14 --- /dev/null +++ b/public/type/lio.svg @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/public/type/logo-aleop.svg b/public/type/logo-aleop.svg new file mode 100644 index 0000000..5f5165b --- /dev/null +++ b/public/type/logo-aleop.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-auvergerhonealpes.svg b/public/type/logo-auvergerhonealpes.svg new file mode 100644 index 0000000..eb0f7a9 --- /dev/null +++ b/public/type/logo-auvergerhonealpes.svg @@ -0,0 +1,88 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-breizhgo.svg b/public/type/logo-breizhgo.svg new file mode 100644 index 0000000..66374ce --- /dev/null +++ b/public/type/logo-breizhgo.svg @@ -0,0 +1,108 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/logo-cfl.svg b/public/type/logo-cfl.svg new file mode 100644 index 0000000..bbe7eeb --- /dev/null +++ b/public/type/logo-cfl.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-db.svg b/public/type/logo-db.svg new file mode 100644 index 0000000..e0097ae --- /dev/null +++ b/public/type/logo-db.svg @@ -0,0 +1,5 @@ + + + + diff --git a/public/type/logo-eurostar.svg b/public/type/logo-eurostar.svg new file mode 100644 index 0000000..d8bcd0e --- /dev/null +++ b/public/type/logo-eurostar.svg @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ‘ + + + + + + + + + + + diff --git a/public/type/logo-fluo.svg b/public/type/logo-fluo.svg new file mode 100644 index 0000000..ca4808e --- /dev/null +++ b/public/type/logo-fluo.svg @@ -0,0 +1,40 @@ + + + + + + + + + + diff --git a/public/type/logo-frecciarossa.svg b/public/type/logo-frecciarossa.svg new file mode 100644 index 0000000..a6d51a2 --- /dev/null +++ b/public/type/logo-frecciarossa.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/public/type/logo-hautsdefrance.svg b/public/type/logo-hautsdefrance.svg new file mode 100644 index 0000000..7920781 --- /dev/null +++ b/public/type/logo-hautsdefrance.svg @@ -0,0 +1,221 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/logo-ice.svg b/public/type/logo-ice.svg new file mode 100644 index 0000000..04edf83 --- /dev/null +++ b/public/type/logo-ice.svg @@ -0,0 +1 @@ +ice \ No newline at end of file diff --git a/public/type/logo-inoui.svg b/public/type/logo-inoui.svg new file mode 100644 index 0000000..2e7aff3 --- /dev/null +++ b/public/type/logo-inoui.svg @@ -0,0 +1 @@ +inoui \ No newline at end of file diff --git a/public/type/logo-intercites.svg b/public/type/logo-intercites.svg new file mode 100644 index 0000000..4ca3e44 --- /dev/null +++ b/public/type/logo-intercites.svg @@ -0,0 +1,107 @@ + + + +image/svg+xml + + + \ No newline at end of file diff --git a/public/type/logo-ler.svg b/public/type/logo-ler.svg new file mode 100644 index 0000000..654c54d --- /dev/null +++ b/public/type/logo-ler.svg @@ -0,0 +1,214 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-lio.svg b/public/type/logo-lio.svg new file mode 100644 index 0000000..6d98c14 --- /dev/null +++ b/public/type/logo-lio.svg @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/public/type/logo-lunea.svg b/public/type/logo-lunea.svg new file mode 100644 index 0000000..269d090 --- /dev/null +++ b/public/type/logo-lunea.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/public/type/logo-lyria.svg b/public/type/logo-lyria.svg new file mode 100644 index 0000000..6cab5c2 --- /dev/null +++ b/public/type/logo-lyria.svg @@ -0,0 +1 @@ +lyria \ No newline at end of file diff --git a/public/type/logo-metrolor.svg b/public/type/logo-metrolor.svg new file mode 100644 index 0000000..167f70d --- /dev/null +++ b/public/type/logo-metrolor.svg @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-mobigo.svg b/public/type/logo-mobigo.svg new file mode 100644 index 0000000..378c87b --- /dev/null +++ b/public/type/logo-mobigo.svg @@ -0,0 +1,332 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-nomad.svg b/public/type/logo-nomad.svg new file mode 100644 index 0000000..7bcfed0 --- /dev/null +++ b/public/type/logo-nomad.svg @@ -0,0 +1,13 @@ + + + + + Logo Nomad Normandie 2020Plan de travail 8 + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-occitanie.svg b/public/type/logo-occitanie.svg new file mode 100644 index 0000000..8e16d69 --- /dev/null +++ b/public/type/logo-occitanie.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-ouigo-classique.svg b/public/type/logo-ouigo-classique.svg new file mode 100644 index 0000000..d71246d --- /dev/null +++ b/public/type/logo-ouigo-classique.svg @@ -0,0 +1,578 @@ + + + + + + + + + + diff --git a/public/type/logo-ouigo.svg b/public/type/logo-ouigo.svg new file mode 100644 index 0000000..1df8e54 --- /dev/null +++ b/public/type/logo-ouigo.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-remi.svg b/public/type/logo-remi.svg new file mode 100644 index 0000000..5ce6f2e --- /dev/null +++ b/public/type/logo-remi.svg @@ -0,0 +1,381 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/logo-renfeave.svg b/public/type/logo-renfeave.svg new file mode 100644 index 0000000..c2ad14b --- /dev/null +++ b/public/type/logo-renfeave.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-rer-a.svg b/public/type/logo-rer-a.svg new file mode 100644 index 0000000..88c53a9 --- /dev/null +++ b/public/type/logo-rer-a.svg @@ -0,0 +1,111 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-rer-b.svg b/public/type/logo-rer-b.svg new file mode 100644 index 0000000..a436c13 --- /dev/null +++ b/public/type/logo-rer-b.svg @@ -0,0 +1,119 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-rer-c.svg b/public/type/logo-rer-c.svg new file mode 100644 index 0000000..b193af0 --- /dev/null +++ b/public/type/logo-rer-c.svg @@ -0,0 +1,116 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-rer-d.svg b/public/type/logo-rer-d.svg new file mode 100644 index 0000000..87cc429 --- /dev/null +++ b/public/type/logo-rer-d.svg @@ -0,0 +1,113 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-rer-e.svg b/public/type/logo-rer-e.svg new file mode 100644 index 0000000..104ca17 --- /dev/null +++ b/public/type/logo-rer-e.svg @@ -0,0 +1,198 @@ + + + +image/svg+xml + + .st0{display:none;} + .st1{display:inline;fill:none;} + .st2{display:inline;fill:#050D9E;} + .st3{fill:#FFFFFF;} + .st4{fill:none;} + .st5{fill:#5E9620;} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-sbb.svg b/public/type/logo-sbb.svg new file mode 100644 index 0000000..290a9a2 --- /dev/null +++ b/public/type/logo-sbb.svg @@ -0,0 +1,5 @@ + + +SBB CFF FFS logo notext + + diff --git a/public/type/logo-sncb.svg b/public/type/logo-sncb.svg new file mode 100644 index 0000000..b0b4ef8 --- /dev/null +++ b/public/type/logo-sncb.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/type/logo-sncf.svg b/public/type/logo-sncf.svg new file mode 100644 index 0000000..1ff9399 --- /dev/null +++ b/public/type/logo-sncf.svg @@ -0,0 +1,99 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-sncf1985.svg b/public/type/logo-sncf1985.svg new file mode 100644 index 0000000..8148792 --- /dev/null +++ b/public/type/logo-sncf1985.svg @@ -0,0 +1,63 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/public/type/logo-sncf1992.svg b/public/type/logo-sncf1992.svg new file mode 100644 index 0000000..30bf7d8 --- /dev/null +++ b/public/type/logo-sncf1992.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-t-h.svg b/public/type/logo-t-h.svg new file mode 100644 index 0000000..d9a48bc --- /dev/null +++ b/public/type/logo-t-h.svg @@ -0,0 +1,116 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-t-j.svg b/public/type/logo-t-j.svg new file mode 100644 index 0000000..22264bc --- /dev/null +++ b/public/type/logo-t-j.svg @@ -0,0 +1,123 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-t-k.svg b/public/type/logo-t-k.svg new file mode 100644 index 0000000..ecb584b --- /dev/null +++ b/public/type/logo-t-k.svg @@ -0,0 +1,125 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-t-l.svg b/public/type/logo-t-l.svg new file mode 100644 index 0000000..25b1040 --- /dev/null +++ b/public/type/logo-t-l.svg @@ -0,0 +1,124 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-t-n.svg b/public/type/logo-t-n.svg new file mode 100644 index 0000000..429d848 --- /dev/null +++ b/public/type/logo-t-n.svg @@ -0,0 +1,138 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-t-p.svg b/public/type/logo-t-p.svg new file mode 100644 index 0000000..7352116 --- /dev/null +++ b/public/type/logo-t-p.svg @@ -0,0 +1,134 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-t-r.svg b/public/type/logo-t-r.svg new file mode 100644 index 0000000..8b3a779 --- /dev/null +++ b/public/type/logo-t-r.svg @@ -0,0 +1,138 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-t-u.svg b/public/type/logo-t-u.svg new file mode 100644 index 0000000..ea80349 --- /dev/null +++ b/public/type/logo-t-u.svg @@ -0,0 +1,133 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-teoz.svg b/public/type/logo-teoz.svg new file mode 100644 index 0000000..dfa76cc --- /dev/null +++ b/public/type/logo-teoz.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/public/type/logo-ter-rhone-alpes.svg b/public/type/logo-ter-rhone-alpes.svg new file mode 100644 index 0000000..73114e9 --- /dev/null +++ b/public/type/logo-ter-rhone-alpes.svg @@ -0,0 +1,401 @@ + + + + diff --git a/public/type/logo-ter.svg b/public/type/logo-ter.svg new file mode 100644 index 0000000..7218a81 --- /dev/null +++ b/public/type/logo-ter.svg @@ -0,0 +1 @@ +ter \ No newline at end of file diff --git a/public/type/logo-teralsace.svg b/public/type/logo-teralsace.svg new file mode 100644 index 0000000..d3792b4 --- /dev/null +++ b/public/type/logo-teralsace.svg @@ -0,0 +1,146 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-teraquitaine.svg b/public/type/logo-teraquitaine.svg new file mode 100644 index 0000000..17fb86d --- /dev/null +++ b/public/type/logo-teraquitaine.svg @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-terbassenormandie.svg b/public/type/logo-terbassenormandie.svg new file mode 100644 index 0000000..ee82ffd --- /dev/null +++ b/public/type/logo-terbassenormandie.svg @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-terbourgogne.svg b/public/type/logo-terbourgogne.svg new file mode 100644 index 0000000..983d201 --- /dev/null +++ b/public/type/logo-terbourgogne.svg @@ -0,0 +1,120 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-terbretagne.svg b/public/type/logo-terbretagne.svg new file mode 100644 index 0000000..47a3c07 --- /dev/null +++ b/public/type/logo-terbretagne.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-tercentre.svg b/public/type/logo-tercentre.svg new file mode 100644 index 0000000..03d9542 --- /dev/null +++ b/public/type/logo-tercentre.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + diff --git a/public/type/logo-terlanguedocroussillon.svg b/public/type/logo-terlanguedocroussillon.svg new file mode 100644 index 0000000..8453520 --- /dev/null +++ b/public/type/logo-terlanguedocroussillon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-termidipyrenees.svg b/public/type/logo-termidipyrenees.svg new file mode 100644 index 0000000..fee1a9b --- /dev/null +++ b/public/type/logo-termidipyrenees.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-ternordpasdecalais.svg b/public/type/logo-ternordpasdecalais.svg new file mode 100644 index 0000000..c6aaa8f --- /dev/null +++ b/public/type/logo-ternordpasdecalais.svg @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-terpoitoucharentes.svg b/public/type/logo-terpoitoucharentes.svg new file mode 100644 index 0000000..33c1838 --- /dev/null +++ b/public/type/logo-terpoitoucharentes.svg @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-tgv.svg b/public/type/logo-tgv.svg new file mode 100644 index 0000000..657ba99 --- /dev/null +++ b/public/type/logo-tgv.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/public/type/logo-thalys.svg b/public/type/logo-thalys.svg new file mode 100644 index 0000000..41a6abc --- /dev/null +++ b/public/type/logo-thalys.svg @@ -0,0 +1,94 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/type/logo-thello.svg b/public/type/logo-thello.svg new file mode 100644 index 0000000..6a6513e --- /dev/null +++ b/public/type/logo-thello.svg @@ -0,0 +1,678 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/logo-tramtrain.svg b/public/type/logo-tramtrain.svg new file mode 100644 index 0000000..4e66679 --- /dev/null +++ b/public/type/logo-tramtrain.svg @@ -0,0 +1,112 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/public/type/logo-trenitalia.svg b/public/type/logo-trenitalia.svg new file mode 100644 index 0000000..4924915 --- /dev/null +++ b/public/type/logo-trenitalia.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/public/type/logo-zou.svg b/public/type/logo-zou.svg new file mode 100644 index 0000000..2936f2f --- /dev/null +++ b/public/type/logo-zou.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/type/mobigo.svg b/public/type/mobigo.svg new file mode 100644 index 0000000..378c87b --- /dev/null +++ b/public/type/mobigo.svg @@ -0,0 +1,332 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/data-color.json b/public/type/quais/data-color.json new file mode 100644 index 0000000..766a30d --- /dev/null +++ b/public/type/quais/data-color.json @@ -0,0 +1,384 @@ +{ + "generatedAt": "2025-10-24T21:56:22.827Z", + "logos": [ + { + "file": "logo-aleop-color.svg", + "path": "/img/type/logo-aleop-color.svg", + "slug": "aleop", + "name": "Aleop" + }, + { + "file": "logo-auvergerhonealpes-color.svg", + "path": "/img/type/logo-auvergerhonealpes-color.svg", + "slug": "auvergerhonealpes", + "name": "Auvergerhonealpes" + }, + { + "file": "logo-breizhgo-color.svg", + "path": "/img/type/logo-breizhgo-color.svg", + "slug": "breizhgo", + "name": "Breizhgo" + }, + { + "file": "logo-cfl-color.svg", + "path": "/img/type/logo-cfl-color.svg", + "slug": "cfl", + "name": "CFL" + }, + { + "file": "logo-db-color.svg", + "path": "/img/type/logo-db-color.svg", + "slug": "db", + "name": "DB" + }, + { + "file": "logo-eurostar-color.svg", + "path": "/img/type/logo-eurostar-color.svg", + "slug": "eurostar", + "name": "Eurostar" + }, + { + "file": "logo-fluo-color.svg", + "path": "/img/type/logo-fluo-color.svg", + "slug": "fluo", + "name": "Fluo" + }, + { + "file": "logo-frecciarossa-color.svg", + "path": "/img/type/logo-frecciarossa-color.svg", + "slug": "frecciarossa", + "name": "Frecciarossa" + }, + { + "file": "logo-hautsdefrance-color.svg", + "path": "/img/type/logo-hautsdefrance-color.svg", + "slug": "hautsdefrance", + "name": "Hautsdefrance" + }, + { + "file": "logo-ice-color.svg", + "path": "/img/type/logo-ice-color.svg", + "slug": "ice", + "name": "ICE" + }, + { + "file": "logo-intercites-color.svg", + "path": "/img/type/logo-intercites-color.svg", + "slug": "intercites", + "name": "Intercités" + }, + { + "file": "logo-ler-color.svg", + "path": "/img/type/logo-ler-color.svg", + "slug": "ler", + "name": "Ler" + }, + { + "file": "logo-lio-color.svg", + "path": "/img/type/logo-lio-color.svg", + "slug": "lio", + "name": "Lio" + }, + { + "file": "logo-lunea-color.svg", + "path": "/img/type/logo-lunea-color.svg", + "slug": "lunea", + "name": "Lunea" + }, + { + "file": "logo-metrolor-color.svg", + "path": "/img/type/logo-metrolor-color.svg", + "slug": "metrolor", + "name": "Metrolor" + }, + { + "file": "logo-mobigo-color.svg", + "path": "/img/type/logo-mobigo-color.svg", + "slug": "mobigo", + "name": "Mobigo" + }, + { + "file": "logo-nomad-color.svg", + "path": "/img/type/logo-nomad-color.svg", + "slug": "nomad", + "name": "Nomad" + }, + { + "file": "logo-occitanie-color.svg", + "path": "/img/type/logo-occitanie-color.svg", + "slug": "occitanie", + "name": "Occitanie" + }, + { + "file": "logo-ouigo-color.svg", + "path": "/img/type/logo-ouigo-color.svg", + "slug": "ouigo", + "name": "OUIGO" + }, + { + "file": "logo-ouigo-classique-color.svg", + "path": "/img/type/logo-ouigo-classique-color.svg", + "slug": "ouigo-classique", + "name": "OUIGO Trains Classiques" + }, + { + "file": "logo-remi-color.svg", + "path": "/img/type/logo-remi-color.svg", + "slug": "remi", + "name": "Remi" + }, + { + "file": "logo-renfeave-color.svg", + "path": "/img/type/logo-renfeave-color.svg", + "slug": "renfeave", + "name": "Renfe AVE" + }, + { + "file": "logo-rer-a-color.svg", + "path": "/img/type/logo-rer-a-color.svg", + "slug": "rer-a", + "name": "RER A" + }, + { + "file": "logo-rer-b-color.svg", + "path": "/img/type/logo-rer-b-color.svg", + "slug": "rer-b", + "name": "RER B" + }, + { + "file": "logo-rer-c-color.svg", + "path": "/img/type/logo-rer-c-color.svg", + "slug": "rer-c", + "name": "RER C" + }, + { + "file": "logo-rer-d-color.svg", + "path": "/img/type/logo-rer-d-color.svg", + "slug": "rer-d", + "name": "RER D" + }, + { + "file": "logo-rer-e-color.svg", + "path": "/img/type/logo-rer-e-color.svg", + "slug": "rer-e", + "name": "RER E" + }, + { + "file": "logo-sbb-color.svg", + "path": "/img/type/logo-sbb-color.svg", + "slug": "sbb", + "name": "SBB" + }, + { + "file": "logo-sncb-color.svg", + "path": "/img/type/logo-sncb-color.svg", + "slug": "sncb", + "name": "SNCB" + }, + { + "file": "logo-sncf-color.svg", + "path": "/img/type/logo-sncf-color.svg", + "slug": "sncf", + "name": "Sncf" + }, + { + "file": "sncf-voyageurs-logo-color.png", + "path": "/img/type/sncf-voyageurs-logo-color.png", + "slug": "sncf-voyageurs-logo", + "name": "SNCF" + }, + { + "file": "logo-sncf1985.svg", + "path": "/img/type/logo-sncf1985.svg", + "slug": "sncf1985", + "name": "Sncf1985" + }, + { + "file": "logo-sncf1992.svg", + "path": "/img/type/logo-sncf1992.svg", + "slug": "sncf1992", + "name": "Sncf1992" + }, + { + "file": "logo-t-h.svg", + "path": "/img/type/logo-t-h.svg", + "slug": "t-h", + "name": "T H" + }, + { + "file": "logo-t-j.svg", + "path": "/img/type/logo-t-j.svg", + "slug": "t-j", + "name": "T J" + }, + { + "file": "logo-t-k.svg", + "path": "/img/type/logo-t-k.svg", + "slug": "t-k", + "name": "T K" + }, + { + "file": "logo-t-l.svg", + "path": "/img/type/logo-t-l.svg", + "slug": "t-l", + "name": "T L" + }, + { + "file": "logo-t-n.svg", + "path": "/img/type/logo-t-n.svg", + "slug": "t-n", + "name": "T N" + }, + { + "file": "logo-t-p.svg", + "path": "/img/type/logo-t-p.svg", + "slug": "t-p", + "name": "T P" + }, + { + "file": "logo-t-r.svg", + "path": "/img/type/logo-t-r.svg", + "slug": "t-r", + "name": "T R" + }, + { + "file": "logo-t-u.svg", + "path": "/img/type/logo-t-u.svg", + "slug": "t-u", + "name": "T U" + }, + { + "file": "logo-teoz.svg", + "path": "/img/type/logo-teoz.svg", + "slug": "teoz", + "name": "Teoz" + }, + { + "file": "sncf-voyageurs-logo.png", + "path": "/img/type/sncf-voyageurs-logo.png", + "slug": "ter", + "name": "TER" + }, + { + "file": "logo-ter-rhone-alpes.svg", + "path": "/img/type/logo-ter-rhone-alpes.svg", + "slug": "ter-rhone-alpes", + "name": "TER Rhone Alpes" + }, + { + "file": "logo-teralsace.svg", + "path": "/img/type/logo-teralsace.svg", + "slug": "teralsace", + "name": "Teralsace" + }, + { + "file": "logo-teraquitaine.svg", + "path": "/img/type/logo-teraquitaine.svg", + "slug": "teraquitaine", + "name": "Teraquitaine" + }, + { + "file": "logo-terbassenormandie.svg", + "path": "/img/type/logo-terbassenormandie.svg", + "slug": "terbassenormandie", + "name": "Terbassenormandie" + }, + { + "file": "logo-terbourgogne.svg", + "path": "/img/type/logo-terbourgogne.svg", + "slug": "terbourgogne", + "name": "Terbourgogne" + }, + { + "file": "logo-terbretagne.svg", + "path": "/img/type/logo-terbretagne.svg", + "slug": "terbretagne", + "name": "Terbretagne" + }, + { + "file": "logo-tercentre.svg", + "path": "/img/type/logo-tercentre.svg", + "slug": "tercentre", + "name": "Tercentre" + }, + { + "file": "logo-terlanguedocroussillon.svg", + "path": "/img/type/logo-terlanguedocroussillon.svg", + "slug": "terlanguedocroussillon", + "name": "Terlanguedocroussillon" + }, + { + "file": "logo-termidipyrenees.svg", + "path": "/img/type/logo-termidipyrenees.svg", + "slug": "termidipyrenees", + "name": "Termidipyrenees" + }, + { + "file": "logo-ternordpasdecalais.svg", + "path": "/img/type/logo-ternordpasdecalais.svg", + "slug": "ternordpasdecalais", + "name": "Ternordpasdecalais" + }, + { + "file": "logo-terpoitoucharentes.svg", + "path": "/img/type/logo-terpoitoucharentes.svg", + "slug": "terpoitoucharentes", + "name": "Terpoitoucharentes" + }, + { + "file": "logo-tgv.svg", + "path": "/img/type/logo-tgv.svg", + "slug": "tgv", + "name": "TGV" + }, + { + "file": "logo-inoui.svg", + "path": "/img/type/logo-inoui.svg", + "slug": "inoui", + "name": "TGV InOui" + }, + { + "file": "logo-lyria.svg", + "path": "/img/type/logo-lyria.svg", + "slug": "lyria", + "name": "TGV Lyria" + }, + { + "file": "logo-thalys.svg", + "path": "/img/type/logo-thalys.svg", + "slug": "thalys", + "name": "Thalys" + }, + { + "file": "logo-thello.svg", + "path": "/img/type/logo-thello.svg", + "slug": "thello", + "name": "Thello" + }, + { + "file": "track-car.svg", + "path": "/img/type/track-car.svg", + "slug": "track-car", + "name": "Track Car" + }, + { + "file": "logo-tramtrain.svg", + "path": "/img/type/logo-tramtrain.svg", + "slug": "tramtrain", + "name": "Tramtrain" + }, + { + "file": "logo-trenitalia.svg", + "path": "/img/type/logo-trenitalia.svg", + "slug": "trenitalia", + "name": "Trenitalia" + }, + { + "file": "logo-zou.svg", + "path": "/img/type/logo-zou.svg", + "slug": "zou", + "name": "Zou" + } + ] +} + diff --git a/public/type/quais/logo-aleop-color.svg b/public/type/quais/logo-aleop-color.svg new file mode 100644 index 0000000..0a7045d --- /dev/null +++ b/public/type/quais/logo-aleop-color.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-auvergerhonealpes-color.svg b/public/type/quais/logo-auvergerhonealpes-color.svg new file mode 100644 index 0000000..f7970f0 --- /dev/null +++ b/public/type/quais/logo-auvergerhonealpes-color.svg @@ -0,0 +1,88 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-breizhgo-color.svg b/public/type/quais/logo-breizhgo-color.svg new file mode 100644 index 0000000..0a8390b --- /dev/null +++ b/public/type/quais/logo-breizhgo-color.svg @@ -0,0 +1,108 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-cfl-color.svg b/public/type/quais/logo-cfl-color.svg new file mode 100644 index 0000000..2e8cead --- /dev/null +++ b/public/type/quais/logo-cfl-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-db-color.svg b/public/type/quais/logo-db-color.svg new file mode 100644 index 0000000..68f9ae7 --- /dev/null +++ b/public/type/quais/logo-db-color.svg @@ -0,0 +1,20 @@ + + +Deutsche Bahn AG logo + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-eurostar-color.svg b/public/type/quais/logo-eurostar-color.svg new file mode 100644 index 0000000..e6c9791 --- /dev/null +++ b/public/type/quais/logo-eurostar-color.svg @@ -0,0 +1,11436 @@ + +image/svg+xml13 DECEMBER 2015 - 28 MAY 2016 + \ No newline at end of file diff --git a/public/type/quais/logo-fluo-color.svg b/public/type/quais/logo-fluo-color.svg new file mode 100644 index 0000000..993406b --- /dev/null +++ b/public/type/quais/logo-fluo-color.svg @@ -0,0 +1,41 @@ + + + + + + + + + + diff --git a/public/type/quais/logo-frecciarossa-color.svg b/public/type/quais/logo-frecciarossa-color.svg new file mode 100644 index 0000000..4212dca --- /dev/null +++ b/public/type/quais/logo-frecciarossa-color.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/public/type/quais/logo-hautsdefrance-color.svg b/public/type/quais/logo-hautsdefrance-color.svg new file mode 100644 index 0000000..7525f3b --- /dev/null +++ b/public/type/quais/logo-hautsdefrance-color.svg @@ -0,0 +1,221 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-ice-color.svg b/public/type/quais/logo-ice-color.svg new file mode 100644 index 0000000..71f7c5d --- /dev/null +++ b/public/type/quais/logo-ice-color.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/public/type/quais/logo-inoui-color.svg b/public/type/quais/logo-inoui-color.svg new file mode 100644 index 0000000..cce0cc4 --- /dev/null +++ b/public/type/quais/logo-inoui-color.svg @@ -0,0 +1,53 @@ + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-intercite-color.svg b/public/type/quais/logo-intercite-color.svg new file mode 100644 index 0000000..e5bf2bc --- /dev/null +++ b/public/type/quais/logo-intercite-color.svg @@ -0,0 +1,104 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-lio-color.svg b/public/type/quais/logo-lio-color.svg new file mode 100644 index 0000000..cb2552c --- /dev/null +++ b/public/type/quais/logo-lio-color.svg @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-lunea-color.svg b/public/type/quais/logo-lunea-color.svg new file mode 100644 index 0000000..d453b49 --- /dev/null +++ b/public/type/quais/logo-lunea-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-lyria-color.svg b/public/type/quais/logo-lyria-color.svg new file mode 100644 index 0000000..8988703 --- /dev/null +++ b/public/type/quais/logo-lyria-color.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-metrolor-color.svg b/public/type/quais/logo-metrolor-color.svg new file mode 100644 index 0000000..18fe280 --- /dev/null +++ b/public/type/quais/logo-metrolor-color.svg @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-mobigo-color.svg b/public/type/quais/logo-mobigo-color.svg new file mode 100644 index 0000000..51f20cb --- /dev/null +++ b/public/type/quais/logo-mobigo-color.svg @@ -0,0 +1,332 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-nomad-color.svg b/public/type/quais/logo-nomad-color.svg new file mode 100644 index 0000000..e467251 --- /dev/null +++ b/public/type/quais/logo-nomad-color.svg @@ -0,0 +1 @@ +Logo Nomad Normandie 2020Plan de travail 8 \ No newline at end of file diff --git a/public/type/quais/logo-nouvelleaquitaine-color.svg b/public/type/quais/logo-nouvelleaquitaine-color.svg new file mode 100644 index 0000000..5ec6da6 --- /dev/null +++ b/public/type/quais/logo-nouvelleaquitaine-color.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-occitanie-color.svg b/public/type/quais/logo-occitanie-color.svg new file mode 100644 index 0000000..e0c3332 --- /dev/null +++ b/public/type/quais/logo-occitanie-color.svg @@ -0,0 +1,229 @@ + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-ouigo-classique-color.svg b/public/type/quais/logo-ouigo-classique-color.svg new file mode 100644 index 0000000..f86964d --- /dev/null +++ b/public/type/quais/logo-ouigo-classique-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-ouigo-color.svg b/public/type/quais/logo-ouigo-color.svg new file mode 100644 index 0000000..1efd32a --- /dev/null +++ b/public/type/quais/logo-ouigo-color.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/type/quais/logo-remi-color.svg b/public/type/quais/logo-remi-color.svg new file mode 100644 index 0000000..dce8e59 --- /dev/null +++ b/public/type/quais/logo-remi-color.svg @@ -0,0 +1,381 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-renfeave-color.svg b/public/type/quais/logo-renfeave-color.svg new file mode 100644 index 0000000..5faa192 --- /dev/null +++ b/public/type/quais/logo-renfeave-color.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-sbb-color.svg b/public/type/quais/logo-sbb-color.svg new file mode 100644 index 0000000..8e46c7d --- /dev/null +++ b/public/type/quais/logo-sbb-color.svg @@ -0,0 +1,6 @@ + + +SBB CFF FFS logo notext + + + diff --git a/public/type/quais/logo-sncb-color.svg b/public/type/quais/logo-sncb-color.svg new file mode 100644 index 0000000..52b36b7 --- /dev/null +++ b/public/type/quais/logo-sncb-color.svg @@ -0,0 +1,15 @@ + + +image/svg+xml + + + + + + + + + + + + \ No newline at end of file diff --git a/public/type/quais/logo-sncf-color.svg b/public/type/quais/logo-sncf-color.svg new file mode 100644 index 0000000..5b4eaff --- /dev/null +++ b/public/type/quais/logo-sncf-color.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-teoz-color.svg b/public/type/quais/logo-teoz-color.svg new file mode 100644 index 0000000..f21e75d --- /dev/null +++ b/public/type/quais/logo-teoz-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-ter-color.svg b/public/type/quais/logo-ter-color.svg new file mode 100644 index 0000000..39b0633 --- /dev/null +++ b/public/type/quais/logo-ter-color.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/public/type/quais/logo-ter-rhone-alpes.svg b/public/type/quais/logo-ter-rhone-alpes.svg new file mode 100644 index 0000000..c0bae43 --- /dev/null +++ b/public/type/quais/logo-ter-rhone-alpes.svg @@ -0,0 +1,401 @@ + + + + diff --git a/public/type/quais/logo-teralsace-color.svg b/public/type/quais/logo-teralsace-color.svg new file mode 100644 index 0000000..abaa9d7 --- /dev/null +++ b/public/type/quais/logo-teralsace-color.svg @@ -0,0 +1,146 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-teraquitaine-color.svg b/public/type/quais/logo-teraquitaine-color.svg new file mode 100644 index 0000000..f11c239 --- /dev/null +++ b/public/type/quais/logo-teraquitaine-color.svg @@ -0,0 +1,264 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-terbassenormandie-color.svg b/public/type/quais/logo-terbassenormandie-color.svg new file mode 100644 index 0000000..ec1af24 --- /dev/null +++ b/public/type/quais/logo-terbassenormandie-color.svg @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-terbourgogne-color.svg b/public/type/quais/logo-terbourgogne-color.svg new file mode 100644 index 0000000..b5981e3 --- /dev/null +++ b/public/type/quais/logo-terbourgogne-color.svg @@ -0,0 +1,120 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-terbretagne-color.svg b/public/type/quais/logo-terbretagne-color.svg new file mode 100644 index 0000000..60fcf95 --- /dev/null +++ b/public/type/quais/logo-terbretagne-color.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-tercentre-color.svg b/public/type/quais/logo-tercentre-color.svg new file mode 100644 index 0000000..d5e7c06 --- /dev/null +++ b/public/type/quais/logo-tercentre-color.svg @@ -0,0 +1,79 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/public/type/quais/logo-terfranchecomte-color.svg b/public/type/quais/logo-terfranchecomte-color.svg new file mode 100644 index 0000000..63def6c --- /dev/null +++ b/public/type/quais/logo-terfranchecomte-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-terlanguedocroussillon-color.svg b/public/type/quais/logo-terlanguedocroussillon-color.svg new file mode 100644 index 0000000..c399d89 --- /dev/null +++ b/public/type/quais/logo-terlanguedocroussillon-color.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/public/type/quais/logo-termidipyrenees-color.svg b/public/type/quais/logo-termidipyrenees-color.svg new file mode 100644 index 0000000..d1f3a80 --- /dev/null +++ b/public/type/quais/logo-termidipyrenees-color.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/public/type/quais/logo-ternordpasdecalais-color.svg b/public/type/quais/logo-ternordpasdecalais-color.svg new file mode 100644 index 0000000..324049a --- /dev/null +++ b/public/type/quais/logo-ternordpasdecalais-color.svg @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-terpoitoucharentes-color.svg b/public/type/quais/logo-terpoitoucharentes-color.svg new file mode 100644 index 0000000..edd3375 --- /dev/null +++ b/public/type/quais/logo-terpoitoucharentes-color.svg @@ -0,0 +1,357 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-tgv-color.svg b/public/type/quais/logo-tgv-color.svg new file mode 100644 index 0000000..bdf61b8 --- /dev/null +++ b/public/type/quais/logo-tgv-color.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/public/type/quais/logo-thalys-color.svg b/public/type/quais/logo-thalys-color.svg new file mode 100644 index 0000000..b18892c --- /dev/null +++ b/public/type/quais/logo-thalys-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-thello-color.svg b/public/type/quais/logo-thello-color.svg new file mode 100644 index 0000000..165add0 --- /dev/null +++ b/public/type/quais/logo-thello-color.svg @@ -0,0 +1,678 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/public/type/quais/logo-tramtrain-color.svg b/public/type/quais/logo-tramtrain-color.svg new file mode 100644 index 0000000..0d60dde --- /dev/null +++ b/public/type/quais/logo-tramtrain-color.svg @@ -0,0 +1,112 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/logo-trenitalia-color.svg b/public/type/quais/logo-trenitalia-color.svg new file mode 100644 index 0000000..ee1f988 --- /dev/null +++ b/public/type/quais/logo-trenitalia-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/type/quais/logo-zou-color.svg b/public/type/quais/logo-zou-color.svg new file mode 100644 index 0000000..e697473 --- /dev/null +++ b/public/type/quais/logo-zou-color.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/row-background-arrival.svg b/public/type/quais/row-background-arrival.svg new file mode 100644 index 0000000..37a0690 --- /dev/null +++ b/public/type/quais/row-background-arrival.svg @@ -0,0 +1,122 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/quais/row-background-departure.svg b/public/type/quais/row-background-departure.svg new file mode 100644 index 0000000..3fc37da --- /dev/null +++ b/public/type/quais/row-background-departure.svg @@ -0,0 +1,158 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/type/sncf-voyageurs-logo.png b/public/type/sncf-voyageurs-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..88d4d343249ac8425b9085e83e263ec2b5cd4ae3 GIT binary patch literal 9597 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 literal 0 HcmV?d00001 diff --git a/public/type/track-car.svg b/public/type/track-car.svg new file mode 100644 index 0000000..a7f0b0e --- /dev/null +++ b/public/type/track-car.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..ca7b500 --- /dev/null +++ b/src/App.css @@ -0,0 +1,85 @@ +@import "wcs-core/dist/wcs/wcs.css"; + +/* styles.scss SNCF HOLDING */ +@import "wcs-core/design-tokens/dist/sncf-holding.css"; +/* styles.scss SNCF VOYAGEURS*/ +@import "wcs-core/design-tokens/dist/sncf-voyageurs.css"; +/* styles.scss SNCF RÉSEAU*/ +@import "wcs-core/design-tokens/dist/sncf-reseau.css"; +/* styles.scss SNCF GROUPE */ +@import "wcs-core/design-tokens/dist/sncf-groupe.css"; +@font-face { + font-family: Avenir; + src: url("/public/fonts/avenir-lighter.woff"); + font-weight: 100; +} + +@font-face { + font-family: Avenir; + src: url("/public/fonts/avenir-book.woff"); + font-weight: 300; +} + +@font-face { + font-family: Avenir; + src: url("/public/fonts/avenir-roman.woff"); + font-weight: 400; +} + +@font-face { + font-family: Avenir; + src: url("/public/fonts/avenir-medium.woff"); + font-weight: 500; +} + +@font-face { + font-family: Avenir; + src: url("/public/fonts/avenir-heavy.woff"); + font-weight: 800; +} + +@font-face { + font-family: Avenir; + src: url("/public/fonts/avenir-black.woff"); + font-weight: 900; +} +@font-face { + font-family: "icons"; + src: url("/public/fonts/icons/icons.eot?#iefix") format("embedded-opentype"), + url("/public/fonts/icons/icons.woff2") format("woff2"), + url("/public/fonts/icons/icons.woff") format("woff"), + url("/public/fonts/icons/icons.ttf") format("truetype"), + url("/public/fonts/icons/icons.svg#icons") format("svg"); +} + +/* Include material icons fonts */ +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialicons/v139/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2'); +} +@font-face { + font-family: 'Material Icons Outlined'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialiconsoutlined/v108/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUce.woff2) format('woff2'); +} +@font-face { + font-family: 'Material Icons Two Tone'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialiconstwotone/v111/hESh6WRmNCxEqUmNyh3JDeGxjVVyMg4tHGctNCu0.woff2) format('woff2'); +} +@font-face { + font-family: 'Material Icons Round'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialiconsround/v107/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmP.woff2) format('woff2'); +} +@font-face { + font-family: 'Material Icons Sharp'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialiconssharp/v108/oPWQ_lt5nv4pWNJpghLP75WiFR4kLh3kvmvR.woff2) format('woff2'); +} \ No newline at end of file diff --git a/src/App.js b/src/App.js new file mode 100644 index 0000000..d841d89 --- /dev/null +++ b/src/App.js @@ -0,0 +1,182 @@ +import React, { useEffect, useState } from 'react'; +import './App.css'; + +import { applyPolyfills, defineCustomElements } from 'wcs-core/loader'; +import Departs from './pages/Departs'; +import Arrivees from './pages/Arrivees'; +import Displays from './pages/Displays'; +import ClassiquesDeparts from './pages/afficheurs/classiques/ClassiquesDeparts'; +import ClassiquesArrivees from './pages/afficheurs/classiques/ClassiquesArrivees'; +import ClassiquesDepartsQuais from './pages/afficheurs/classiques/quais/ClassiquesDepartsQuais'; +import sessionMemory from './lib/sessionMemory'; +import ClassiquesArriveesQuais from "./pages/afficheurs/classiques/quais/ClassiquesArriveesQuais"; +applyPolyfills().then(() => defineCustomElements(window)); + +// Petit routeur client sans dépendances externes +function useSimpleRouter() { + function normalizePath(p) { + if (!p) return '/'; + // retirer query string et hash pour normaliser le chemin utilisé en internal route + p = String(p).split(/[?#]/)[0]; + // traiter les cas comme /index.html + if (p.indexOf('index.html') !== -1) return '/'; + // supprimer espaces en début/fin + p = p.trim(); + // supprimer slashs finaux sauf pour la racine + if (p !== '/') p = p.replace(/\/+$/, ''); + return p || '/'; + } + + const [route, setRoute] = useState(() => normalizePath(window.location.pathname || '/')); + + useEffect(() => { + const onPop = () => { + const p = normalizePath(window.location.pathname || '/'); + console.debug('[router] popstate ->', p); + setRoute(p); + }; + window.addEventListener('popstate', onPop); + return () => window.removeEventListener('popstate', onPop); + }, []); + + function navigate(path) { + const target = normalizePath(path); + // toujours pousser l'URL complète (path peut contenir query/hash), + // mais stocker en internal state la version normalisée (sans query/hash) + // comparer l'URL complète (pathname + search + hash) afin de permettre + // des navigations qui ne changent que la querystring (ex. ?gare=...) + const currentFull = window.location.pathname + (window.location.search || '') + (window.location.hash || ''); + if (currentFull !== path) { + console.debug('[router] navigate ->', path, '(normalized ->', target, ')'); + try { + window.history.pushState({}, '', path); + } catch (e) { + // fallback si path est invalide + try { window.history.pushState({}, '', target); } catch (err) { /* ignore */ } + } + // mettre à jour la route interne (sans query/hash) + setRoute(target); + } else { + // si l'URL complète est identique, forcer un update de state pour + // déclencher un rendu si besoin (rare) + setRoute(target); + } + } + + return { route, navigate }; +} + +function App() { + const { route, navigate } = useSimpleRouter(); + + // Composant Home explicite (panels cliquables) + function Home({ navigate }) { + useEffect(() => { + console.debug('[Home] monté, pathname =', window.location.pathname); + }, []); + const panelStyle = { + width: '40%', + cursor: 'pointer', + padding: 24, + borderRadius: 8, + boxShadow: '0 2px 8px rgba(0,0,0,0.12)', + background: '#fff', + textAlign: 'center' + }; + + return ( +
+
+

Accueil

+

Choisissez une section ci-dessous

+
+
+
{ try { sessionMemory.set('afficheurMode', 'departs'); } catch (e) {} navigate('/departs'); }} + onKeyDown={(e) => (e.key === 'Enter' || e.key === ' ' ? (function(){ try { sessionMemory.set('afficheurMode', 'departs'); } catch (e) {} navigate('/departs'); })() : null)} + style={panelStyle} + aria-label="Accéder aux départs" + > +

Départs

+

Consultez les prochains départs d'une gare. Cliquez pour choisir une gare et voir les horaires.

+
+ +
{ try { sessionMemory.set('afficheurMode', 'arrivees'); } catch (e) {} navigate('/arrivees'); }} + onKeyDown={(e) => (e.key === 'Enter' || e.key === ' ' ? (function(){ try { sessionMemory.set('afficheurMode', 'arrivees'); } catch (e) {} navigate('/arrivees'); })() : null)} + style={panelStyle} + aria-label="Accéder aux arrivées" + > +

Arrivées

+

Consultez les prochaines arrivées d'une gare. Cliquez pour choisir une gare et voir les informations.

+
+
+
+ ); + } + + // Routes pour afficheurs : format /afficheurs/{mode}/{type}?gare=... + // route plus spécifique pour l'afficheur "quais" + if (route.startsWith('/afficheurs/departs/classiques/quais')) { + return ; + } + if (route.startsWith('/afficheurs/arrivees/classiques/quais')) { + return ; + } + if (route.startsWith('/afficheurs/departs/classiques')) { + return ; + } + if (route.startsWith('/afficheurs/arrivees/classiques')) { + return ; + } + + let content; + if (route === '/departs') { + content = navigate('/')} navigate={navigate} />; + } else if (route === '/arrivees') { + content = navigate('/')} navigate={navigate} />; + } else if (route.startsWith('/afficheurs')) { + content = navigate('/')} navigate={navigate} />; + } else { + content = ; + } + + return ( +
+ ); +} + +export default App; diff --git a/src/App.test.js b/src/App.test.js new file mode 100644 index 0000000..1f03afe --- /dev/null +++ b/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/src/components/WcsButton.js b/src/components/WcsButton.js new file mode 100644 index 0000000..c0e405f --- /dev/null +++ b/src/components/WcsButton.js @@ -0,0 +1,23 @@ +import React from 'react'; + +// Remplacé le rendu natif + + )} + + )} + +
+ +
+ + ); +} + + diff --git a/src/pages/Departs.js b/src/pages/Departs.js new file mode 100644 index 0000000..f5a5059 --- /dev/null +++ b/src/pages/Departs.js @@ -0,0 +1,115 @@ +import React, { useEffect, useState } from 'react'; +import supabase from '../lib/supabase'; +import sessionMemory from '../lib/sessionMemory'; + +export default function Departs({ onBack, navigate }) { + const [gares, setGares] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const [selected, setSelected] = useState(''); + const [search, setSearch] = useState(''); + + useEffect(() => { + let mounted = true; + + async function loadGares() { + setLoading(true); + setError(null); + if (!supabase) { + // Le client Supabase n'a pas pu être initialisé (variables d'env manquantes) + if (mounted) { + setError( + "Supabase non initialisé : vérifiez REACT_APP_SUPABASE_URL et REACT_APP_SUPABASE_ANON_KEY dans votre .env et redémarrez le serveur de développement (npm start)." + ); + setLoading(false); + } + return; + } + try { + const { data, error } = await supabase.from('gares').select('nom'); + if (error) throw error; + if (mounted) setGares(Array.isArray(data) ? data.map((r) => r.nom) : []); + } catch (err) { + console.error('Supabase error:', err); + if (mounted) setError(err.message || String(err)); + } finally { + if (mounted) setLoading(false); + } + } + + loadGares(); + + return () => { + mounted = false; + }; + }, []); + + return ( +
+

Départs

+ + {loading &&

Chargement des gares...

} + {error &&

Erreur : {error}

} + + {!loading && !error && ( +
+ {/* Barre de recherche centrée */} +
+ setSearch(e.target.value)} + style={{ width: '60%', padding: '10px 12px', borderRadius: 6, border: '1px solid #ccc' }} + aria-label="Rechercher une gare" + /> +
+ + {/* Résultats sous forme de lignes */} +
+ {gares + .filter((nom) => nom.toLowerCase().includes(search.trim().toLowerCase())) + .map((nom) => ( +
+
{ + setSelected(nom); + try { sessionMemory.set('afficheurMode', 'departs'); } catch (e) {} + if (navigate) navigate(`/afficheurs/${encodeURIComponent(nom)}?mode=departs`); + }} + onKeyDown={(e) => (e.key === 'Enter' ? (navigate ? navigate(`/afficheurs/${encodeURIComponent(nom)}?mode=departs`) : setSelected(nom)) : null)} + tabIndex={0} + > +
{nom}
+ {selected === nom &&
Sélectionnée
} +
+
+
+ ))} +
+ + {selected && ( +
+

Gare sélectionnée : {selected}

+ +
+ )} +
+ )} + +
+ +
+
+ ); +} + + diff --git a/src/pages/Displays.js b/src/pages/Displays.js new file mode 100644 index 0000000..1364ab8 --- /dev/null +++ b/src/pages/Displays.js @@ -0,0 +1,113 @@ +import React from 'react'; +import WcsButton from '../components/WcsButton'; +import sessionMemory from '../lib/sessionMemory'; + +export default function Displays({ onBack, navigate }) { + const types = [ + { id: 'classiques', label: 'Classiques' }, + { id: 'eva', label: 'EVA' }, + { id: 'afl', label: 'AFL' }, + { id: 'transilien', label: 'TRANSILIEN' } + ]; + + // Récupérer la gare : soit dans le pathname (/afficheurs/), + // soit via la querystring ?gare=... si la route est déjà /afficheurs// + const parts = typeof window !== 'undefined' ? window.location.pathname.split('/').filter(Boolean) : []; + const typeIds = types.map(t => t.id); + let gare = null; + if (parts[0] === 'afficheurs' && parts[1] && !typeIds.includes(parts[1])) { + // cas /afficheurs/ + try { + gare = decodeURIComponent(parts.slice(1).join('/')); + } catch (e) { + gare = parts.slice(1).join('/'); + } + } else { + // si l'URL est /afficheurs//, regarder dans la querystring ?gare=... + const paramsForGare = new URLSearchParams(window.location.search || ''); + const g = paramsForGare.get('gare'); + if (g) { + try { + // décoder puis remplacer les tirets par des espaces pour l'affichage + gare = decodeURIComponent(String(g).replace(/\+/g, ' ')).replace(/-/g, ' '); + } catch (e) { + gare = String(g).replace(/-/g, ' '); + } + } + } + + // déterminer le mode (departs/arrivees) : querystring > localStorage > default('departs') + const params = new URLSearchParams(window.location.search || ''); + let mode = params.get('mode'); + if (!mode) { + try { + const stored = sessionMemory.get('afficheurMode'); + if (stored) mode = stored; + } catch (e) { + // ignore + } + } + if (!mode) mode = 'departs'; + + return ( +
+

Choisissez un type d'afficheur

+ {gare &&

Gare sélectionnée : {gare}

} +

Mode sélectionné : {mode === 'arrivees' ? 'Arrivées' : 'Départs'}

+ + {/* Boutons directs pour afficher les afficheurs classiques supprimés */} + +
+ {types.map((t) => ( +
{ + // Si un navigate est fourni par le routeur simple, on l'utilise + if (typeof navigate === 'function') { + // construire l'URL finale au format strict demandé : + // /afficheurs/{mode}/{type}?gare= + const kebab = gare ? String(gare).trim().replace(/\s+/g, '-').replace(/\//g, '/') : ''; + const gareQuery = kebab ? `?gare=${encodeURIComponent(kebab)}` : ''; + // Construire l'URL au format demandé : /afficheurs/{mode}/{type}?gare=... + navigate(`/afficheurs/${mode}/${t.id}${gareQuery}`); + return; + } + alert(`${t.label} pour ${gare || '—'}`); + }}> +

{t.label}

+

Afficher le style {t.label} pour la gare {gare || ''}.

+
+ ))} +
+ +
+ {/* Bouton de retour au style WCS SNCF */} + { + // Appelle le callback fourni par le routeur simple si disponible + try { + if (typeof onBack === 'function') { + onBack(); + return; + } + } catch (e) { + // ignore + } + + // Fallback : si l'historique du navigateur permet un back, on l'utilise + if (typeof window !== 'undefined' && window.history && window.history.length > 1) { + window.history.back(); + } else { + // Redirection sûre vers la racine + window.location.href = '/'; + } + }} + label="Retour" + /> +
+
+ ); +} + diff --git a/src/pages/TestClassiques.js b/src/pages/TestClassiques.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/afficheurs/classiques/ClassiquesArrivees.css b/src/pages/afficheurs/classiques/ClassiquesArrivees.css new file mode 100644 index 0000000..1f81e6c --- /dev/null +++ b/src/pages/afficheurs/classiques/ClassiquesArrivees.css @@ -0,0 +1,398 @@ +/* Copié depuis ClassiquesDeparts.css — styles identiques pour les arrivées */ + +:where(.classiques-arrivees-container, .aff-quais__container--arrivees) { + /* variables locales aux composants Arrivées (ne pas définir sur :root) */ + --green-dark: #2d522c; /* bande foncée */ + --green: #38723c; /* bande claire */ + --accent-yellow: #e1c14c; /* heure */ + --white: #f3f3f3; + --rows: 9; /* 9 horaires visibles + 1 footer */ + --footer-height: 100px; /* hauteur de la dernière 'ligne' servant de footer */ + --watermark-green: rgb(75, 154, 84); +} + +/* Déclaration des fontes Achemine (dans public/fonts/) */ +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_italic.ttf') format('truetype'); + font-weight: 400; + font-style: italic; + font-display: swap; +} + +.classiques-arrivees-container{ + position: relative; + width: 100%; + height: 100vh; + /* autoriser l'affichage des boîtes agrandies qui débordent des lignes */ + overflow: visible; + font-family: "Achemine", "Helvetica Neue", Arial, sans-serif; + background: var(--green-dark); + /* plus de padding-bottom : le footer sera superposé en position absolute */ +} + +.station-box-arrivees{ + position: absolute; + left: 18px; + top: 12px; + color: #ffffff; + background: rgba(0,0,0,0.08); + padding: 6px 10px; + border-radius: 6px; + font-weight: 700; + z-index: 40; +} + +.classiques-arrivees-container{ + border-bottom-right-radius: 10px; + border-bottom-left-radius: 4px; +} + +.arrivees-list{ + list-style: none; + margin: 0; + padding: 0; + /* La liste occupe toute la hauteur de l'écran; le footer sera affiché + en position absolue par-dessus la partie inférieure. */ + height: 100vh; + display: flex; + flex-direction: column; +} + +.arrivee-row{ + display: flex; + /* laisser les colonnes occuper toute la hauteur de la ligne, puis centrer leur contenu */ + align-items: stretch; + box-sizing: border-box; + padding: 0 1.2vw; + /* Répartit l'espace en var(--rows) parts ; on utilise 100% / var(--rows) pour que + 9 lignes + 1 footer occupent l'écran de façon uniforme. */ + flex: 0 0 calc(100% / var(--rows)); + min-height: 50px; /* garde une bonne hauteur sur petits écrans */ + max-height: 120px; + position: relative; /* pour positionner la .platform-box en absolu */ + overflow: visible; /* laisser la platform-box déborder si agrandie */ +} + +.arrivee-row:nth-child(odd){ + background: var(--green); +} +.arrivee-row:nth-child(even){ + background: var(--green-dark); +} + +/* Cacher la dernière ligne qui sera sous le footer */ +/* ne plus cacher la dernière ligne — on laisse le footer la recouvrir visuellement */ + +.col-logo-arrivees{ + max-width: 100px; + display:flex; + /* organiser verticalement les éléments et les centrer verticalement */ + flex-direction: column; + justify-content: center; /* centre verticalement le contenu (logo + meta) */ + align-items: flex-start; /* garder l'alignement horizontal à gauche */ + flex: 0 0 10%; /* largeur fixe pour se comporter comme une colonne de tableau */ +} +.logo-box-arrivees{ + /* pastille/logo : ne pas forcer la hauteur pour permettre l'empilement vertical */ + height: auto; + width: 100px; + display:flex; + align-items:flex-start; + justify-content:center; + font-weight:800; + font-size: clamp(14px, 1.6vw, 20px); + box-sizing: border-box; + flex: 0 0 auto; + align-self: flex-start; /* centrer la pastille dans la colonne */ +} + +/* Logo SVG chargé depuis public/type */ +.op-logo-arrivees{ + max-width: 90%; + max-height: 100%; + height: auto; +} + +/* Texte à l'intérieur de la pastille/logo (quai) */ +.logo-text-arrivees{ + text-align: center; + /* taille plus grande, responsive ; s'assure qu'elle reste lisible sur petits et grands écrans */ + font-size: 20px; + line-height: 1; + letter-spacing: 0.5px; +} + + +.col-time-arrivees{ + max-width: 15%; + padding-left: 20px; + display:flex; + /* colonne verticale : centrer verticalement l'heure */ + flex-direction: column; + align-items: center; + justify-content: center; + flex: 0 0 18%; /* largeur fixe pour alignement table-like */ +} +.time-arrivees{ + color: var(--accent-yellow); + font-weight:850; + /* tailles responsives similaires à l'image */ + font-size: clamp(26px, 7.5vw, 70px); + line-height: 1; + display: flex; + align-items: baseline; /* centre le chiffre verticalement */ + height: auto; + width: 100%; /* occupe toute la colonne pour être centré */ + text-align: center; +} + +.col-destination-arrivees{ + flex: 1 1 auto; /* colonne flexible qui prend l'espace restant */ + display: flex; + /* colonne verticale : centrer verticalement la destination */ + flex-direction: column; + justify-content: center; + align-items: flex-start; /* garder le texte aligné à gauche */ +} +.destination-arrivees{ + color: var(--white); + font-weight: 500; + font-size: clamp(28px, 8vw, 80px); + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.col-platform-arrivees{ + /* La colonne laisse la boîte gérer sa taille ; on aligne la boîte à droite + et l'on centre verticalement pour qu'elle suive la hauteur de la ligne. */ + display:flex; + flex: 0 0 8%; + align-items: center; + justify-content: flex-end; + padding-right: 0.5vw; + box-sizing: border-box; +} +.platform-box-arrivees{ + /* Boîte quai : garder un format carré mais ne pas forcer l'étirement vertical */ + height: 90px; /* limite maximale, garde l'aspect visuel */ + width: 90px; + aspect-ratio: 1 / 1; /* carré strict */ + display:flex; + align-items:center; + justify-content:center; + background: transparent; /* intérieur transparent pour montrer la couleur de la ligne */ + border-radius: 12px; + box-sizing: border-box; + border: 4px solid #ffffff; /* bord blanc épais */ + padding: 8px; /* espace intérieur pour éloigner le texte du bord */ + flex: 0 0 auto; + align-self: center; +} +.platform-text-arrivees{ + color: #ffffff; + font-weight: 900; + /* réduire légèrement la taille du texte afin qu'il ne touche pas la bordure */ + font-size: clamp(60px, 2.6vw, 100px); + line-height:1; + letter-spacing: 0.8px; +} +/* removed duplicated/corrupted block */ + +.col-train-type-arrivees{ + max-width: 9%; + display:flex; + /* colonne verticale : centrer verticalement l'heure */ + flex-direction: column; + align-items: stretch; + justify-content: center; + flex: 0 0 18%; /* largeur fixe pour alignement table-like */ +} +.train-type-box-arrivees{ + height: auto; + aspect-ratio: 1 / 1; + display:flex; + align-items:center; + justify-content:center; + background: transparent; + border-radius: 10px; + box-sizing: border-box; +} +.train-type-fallback-arrivees{ text-align:center; } + + +.train-meta-arrivees{ + flex-direction:column; + align-items:flex-start; + /* centrer verticalement sans forcer la hauteur (pour permettre l'empilement) */ + justify-content: center; + color: #ffffff; + height: auto; + flex: 0 0 auto; +} +.train-meta-arrivees .op-name-arrivees{ + font-weight:900; + font-size:1.50rem; /* plus visible */ + padding-left: 20px; + line-height:1; + justify-content: flex-start; + text-align: left; /* aligner à gauche dans la colonne */ +} +.train-meta-arrivees .op-number-arrivees{ + font-weight:500; + font-size:1.25rem; + padding-left: 20px; + text-align: left; /* aligner à gauche */ + margin: 0 0 2px 0; +} + +.train-meta-arrivees.status-delayed-arrivees .op-name-arrivees, +.train-meta-arrivees.status-delayed-arrivees .op-number-arrivees, +.train-meta-arrivees.status-suppressed-arrivees .op-name-arrivees, +.train-meta-arrivees.status-suppressed-arrivees .op-number-arrivees{ + color: var(--accent-yellow); +} + +/* Si on veut un alignement plus spécifique quand train-meta apparaît dans la colonne de type */ +.col-train-type-arrivees .train-meta-arrivees{ align-items: flex-start; justify-content: center; } +.col-train-type-arrivees .train-meta-arrivees .op-name-arrivees, +.col-train-type-arrivees .train-meta-arrivees .op-number-arrivees{ text-align: left; } + +.watermark-arrivees{ + position: absolute; + /* placer strictement à droite et faire déborder le watermark en dehors de l'afficheur */ + right: -6vw; /* décalage vers l'extérieur pour qu'il soit strictement à droite */ + top: 50%; + transform: translateY(-50%) rotate(-90deg); + transform-origin: center; + font-size: 10.8vw; + color: var(--watermark-green); + font-weight:800; + letter-spacing: 6px; + pointer-events: none; + user-select: none; + /* s'assurer qu'il soit au-dessus des lignes */ + z-index: 45; +} + +.helpline-arrivees{ + position: absolute; + right: 18px; + top: 12px; + width:80px; + height:80px; + border-radius:6px; + border:3px solid #fff; + color:#fff; + display:flex; + align-items:center; + justify-content:center; + font-weight:900; +} + +.clock-container-arrivees{ + position: relative; /* contenu positionné par le footer */ + pointer-events: none; + z-index: 30; /* au-dessus du footer */ + display: inline-flex; + align-items: center; + height: 100%; /* prendra la hauteur de la ligne footer */ +} +.clock-box-arrivees{ + display: inline-flex; + align-items: center; + justify-content: center; + background: var(--green-dark); /* fond foncé interne comme sur la maquette */ + border-radius: 10px; + padding: 4px 8px; /* réduire padding pour diminuer légèrement la taille globale */ + border: 6px solid #ffffff; /* bordure un peu moins épaisse */ + box-shadow: 0 2px 0 rgba(0,0,0,0.12); + box-sizing: border-box; + overflow: hidden; + /* hauteur adaptée pour rentrer exactement dans la ligne footer */ + height: calc(var(--footer-height) - 12px); + min-height: 34px; +} + +.afficheur-footer-arrivees{ + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: var(--footer-height); + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; + z-index: 20; /* en dessous de l'horloge */ +} +.afficheur-footer-arrivees .footer-inner-arrivees{ + width: 100%; + height: 100%; + position: relative; + display: flex; + align-items: center; /* centre verticalement le contenu (la clock) */ + justify-content: flex-end; /* place la clock à droite */ + padding-right: 12px; /* espace entre le bord et la clock pour le coin arrondi */ + /* léger dégradé pour donner l'effet de bande plus claire en haut */ + background: linear-gradient(to bottom, rgba(11,123,180,0.18) 0%, var(--green-dark) 30%); + box-shadow: inset 0 6px 0 rgba(0,0,0,0.08); + /* arrondir côté droit comme sur la maquette */ + +} + +/* légère ligne (accent) en haut du footer pour séparer visuellement */ +.afficheur-footer-arrivees .footer-inner-arrivees::before{ + content: ''; + position: absolute; + left: 0; + right: 0; + top: 0; + height: 8px; + background: rgba(255,255,255,0.03); + pointer-events: none; + border-top-right-radius: 12px; +} +.clock-main-arrivees{ + color: #ffffff; + font-weight: 800; + /* légèrement plus petit pour tenir dans le footer */ + font-size: clamp(28px, 4.2vw, 60px); + line-height: 1; + font-family: "Achemine", "Helvetica Neue", Arial, sans-serif; + margin-right: 6px; +} +.clock-seconds-arrivees{ + color: var(--accent-yellow); + font-weight: 800; + font-size: clamp(16px, 2.8vw, 36px); + line-height: 1; +} + +/* Ajustements pour petits écrans */ +@media (max-width: 700px){ + .col-logo-arrivees{width: 18%;} + .col-time-arrivees{width: 24%;} + .watermark-arrivees{display:none} +} + + + + + + diff --git a/src/pages/afficheurs/classiques/ClassiquesArrivees.js b/src/pages/afficheurs/classiques/ClassiquesArrivees.js new file mode 100644 index 0000000..89a8e56 --- /dev/null +++ b/src/pages/afficheurs/classiques/ClassiquesArrivees.js @@ -0,0 +1,746 @@ +import React, { useEffect, useState, useCallback } from 'react'; +import './ClassiquesArrivees.css'; +import supabase from '../../../lib/supabase'; + +// Helper utilitaire : format HHhMM sans secondes (ex: 06h44) +const formatTimeNoSeconds = (v) => { + if (v == null) return ''; + const tryDate = new Date(v); + if (!isNaN(tryDate.getTime())) { + const hh = String(tryDate.getHours()).padStart(2, '0'); + const mm = String(tryDate.getMinutes()).padStart(2, '0'); + return `${hh}h${mm}`; + } + if (typeof v === 'string') { + const m = v.match(/(\d{1,2}):(\d{2})(?::\d{2})?/); + if (m) return `${String(m[1]).padStart(2,'0')}h${m[2]}`; + const m2 = v.match(/T(\d{2}):(\d{2})/); + if (m2) return `${m2[1]}h${m2[2]}`; + return v.slice(0,5).replace(':','h'); + } + return String(v).slice(0,5).replace(':','h'); +}; + +function Logo({op}){ + const mapping = { + 'TGV inOUI': 'logo-inoui.svg', + 'TGV inOUI ': 'logo-inoui.svg', + 'TGV': 'logo-tgv.svg', + 'TER': 'sncf-voyageurs-logo.png', + 'MOBIGO': 'logo-mobigo.svg', + 'TGV Lyria': 'logo-lyria.svg', + 'TGV Lyria ': 'logo-lyria.svg', + }; + const defaultFileFromOp = (name) => { + if (!name) return null; + const slug = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''); + return `logo-${slug}.svg`; + }; + const fileName = mapping[op] || mapping[op && op.split && op.split(' ')[0]] || defaultFileFromOp(op); + const [hasImg, setHasImg] = React.useState(true); + return ( +
+ {hasImg && fileName ? ( + {op} setHasImg(false)} + /> + ) : ( +
{(op||'').split(' ')[0]}
+ )} +
+ ); +} + +function Clock(){ + const [now, setNow] = useState(new Date()); + useEffect(() => { + const id = setInterval(() => setNow(new Date()), 1000); + return () => clearInterval(id); + }, []); + const hh = String(now.getHours()).padStart(2, '0'); + const mm = String(now.getMinutes()).padStart(2, '0'); + const ss = String(now.getSeconds()).padStart(2, '0'); + return ( +
+
+
{hh}:{mm}
+
{ss}
+
+
+ ); +} + +export default function ClassiquesArrivees(){ + // lire le paramètre de requête ?gare=Nom-de-la-gare + const params = new URLSearchParams(window.location.search); + const gareParam = params.get('gare'); + // support pour ?gare_id=123 ou ?gareId=123 + const gareIdParam = params.get('gare_id') || params.get('gareId'); + const gareDisplay = gareParam ? decodeURIComponent(String(gareParam).replace(/\+/g, ' ')).replace(/-/g, ' ') : null; + + const debugEnabled = (params.get('debug') === '1' || String(params.get('debug')).toLowerCase() === 'true'); + const debug = useCallback((...args)=>{ if (debugEnabled) console.debug(...args); }, [debugEnabled]); + + // État pour alterner l'affichage toutes les 3 secondes + const [showStatus, setShowStatus] = useState(false); + useEffect(() => { + const id = setInterval(() => setShowStatus(s => !s), 3000); + return () => clearInterval(id); + }, []); + + // Données + const [horaires, setHoraires] = useState([]); + const [allHoraires, setAllHoraires] = useState([]); + const [perturbations, setPerturbations] = useState([]); + // type de la gare affichée (valeurs attendues: 'interurbaine', 'ville', ...) + const [stationType, setStationType] = useState(null); + const [, setTravaux] = useState([]); + const [, setLoading] = useState(false); + const [, setError] = useState(null); + const [rawDebug, setRawDebug] = useState({ count: 0, sample: [] }); + + const normalizeName = useCallback((s) => { + if (!s) return ''; + try { const t = String(s).normalize('NFD').replace(/\p{M}/gu,'').toLowerCase().trim(); return t.replace(/[-_]+/g,' ').replace(/\s+/g,' '); } catch (e) { return String(s).toLowerCase().trim(); } + }, []); + + const safeParseArrets = useCallback((p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return []; + if (Array.isArray(raw)) return raw; + try { const parsed = JSON.parse(raw); if (parsed && typeof parsed === 'object') { if (Array.isArray(parsed.arrets)) return parsed.arrets; return parsed; } return []; } catch (e) { return []; } + }, []); + + const getStops = useCallback((h) => { + if (!h) return []; + if (Array.isArray(h.stops) && h.stops.length) return h.stops; + if (Array.isArray(h.gares_desservies) && h.gares_desservies.length) return h.gares_desservies; + if (Array.isArray(h.garesDesservies) && h.garesDesservies.length) return h.garesDesservies; + const candidates = ['stops','gares_desservies','garesDesservies','gares_desservies_json']; + for (const key of candidates) { + const raw = h[key]; + if (!raw) continue; + if (Array.isArray(raw)) return raw; + if (typeof raw === 'string') { + try { const parsed = JSON.parse(raw); if (Array.isArray(parsed)) return parsed; } catch (e) { /* ignore */ } + } + } + return []; + }, []); + + const parsePerturbArretsObject = useCallback((p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return { arrets: [], jours: null }; + if (typeof raw === 'object') { if (Array.isArray(raw.arrets)) return { arrets: raw.arrets, jours: raw.jours_perturbation || raw.jours || null }; if (Array.isArray(raw)) return { arrets: raw, jours: null }; return { arrets: [], jours: null }; } + try { const parsed = JSON.parse(raw); if (parsed && typeof parsed === 'object') { return { arrets: Array.isArray(parsed.arrets) ? parsed.arrets : (Array.isArray(parsed) ? parsed : []), jours: parsed.jours_perturbation || parsed.jours || null }; } return { arrets: [], jours: null }; } catch (e) { return { arrets: [], jours: null }; } + }, []); + + const getPerturbationJours = useCallback((p) => { + if (!p) return null; + const candidate = p.jours_perturbation || p.jours || null; + const result = new Set(); + const pushDate = (d) => { if (!d) return; try { const dd = new Date(d); if (!isNaN(dd.getTime())) result.add(dd.toISOString().slice(0,10)); } catch (e) {} }; + if (candidate) { + if (Array.isArray(candidate)) candidate.forEach(item => pushDate(item.date || item)); + else if (typeof candidate === 'string') { try { const parsed = JSON.parse(candidate); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } catch (e) { pushDate(candidate); } } + else if (typeof candidate === 'object') { if (Array.isArray(candidate)) candidate.forEach(it => pushDate(it.date || it)); else pushDate(candidate.date || null); } + } + try { const parsedObj = parsePerturbArretsObject(p); const jp = parsedObj.jours; if (jp) { if (Array.isArray(jp)) jp.forEach(it => pushDate(it.date || it)); else if (typeof jp === 'string') { try { const parsed = JSON.parse(jp); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } catch (e) { pushDate(jp); } } else if (typeof jp === 'object') pushDate(jp.date || null); } } catch (e) {} + return result.size ? result : null; + }, [parsePerturbArretsObject]); + + const parseDelayMinutesFromArret = useCallback((arret) => { + if (!arret) return null; + const keys = ['retard_minutes','retard','delay_minutes','delay','retard_min']; + for (const k of keys) { + if (typeof arret[k] !== 'undefined' && arret[k] !== null && arret[k] !== '') { + const n = Number(arret[k]); + if (!isNaN(n)) return Math.round(n); + } + } + return null; + }, []); + + const formatTimeFromHM = useCallback((totalMinutes) => { + if (typeof totalMinutes !== 'number' || isNaN(totalMinutes)) return ''; + const m = ((totalMinutes % 1440) + 1440) % 1440; + const hh = String(Math.floor(m / 60)).padStart(2, '0'); + const mm = String(m % 60).padStart(2, '0'); + return `${hh}h${mm}`; + }, []); + + // parse HH:mm or ISO into minutes since midnight (utilisable dans le rendu) + const parseTimeHM = useCallback((s) => { + if (!s) return null; + if (typeof s === 'number') return s; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }, []); + + // retourne le threshold (en minutes) pour afficher le quai selon le type de gare + const thresholdForStationType = useCallback((type) => { + if (!type) return 0; + const t = String(type).toLowerCase(); + if (t.includes('interurb') || t.includes('interurbaine')) return 360; // 6 heures + if (t.includes('ville')) return 30; // 30 minutes + return 0; + }, []); + + const buildPerturbMap = useCallback((list = perturbations, horairesList = allHoraires) => { + const idx = { byHoraire: {}, byNumber: {}, byStopId: {}, byStopName: {}, global: [] }; + (list || []).forEach(p => { + const horaireId = p.horaire_id || p.horaire || p.horaireId || p.horaireID; + if (horaireId != null) { const k = String(horaireId); idx.byHoraire[k] = idx.byHoraire[k] || []; idx.byHoraire[k].push(p); } + const number = p.number || p.train_number || p.train || p.numero || p.numero_train; + if (number != null) { const kn = String(number); idx.byNumber[kn] = idx.byNumber[kn] || []; idx.byNumber[kn].push(p); } + const arrets = safeParseArrets(p); + if (Array.isArray(arrets) && arrets.length) { + arrets.forEach(a => { + const stopId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code_uic || a.gare_uic || a.code; + const stopName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + if (stopId != null) { const ks = String(stopId); idx.byStopId[ks] = idx.byStopId[ks] || []; idx.byStopId[ks].push({ perturbation: p, arret: a }); } + if (stopName) { const key = normalizeName(stopName); idx.byStopName[key] = idx.byStopName[key] || []; idx.byStopName[key].push({ perturbation: p, arret: a }); } + }); + } + if ((horaireId == null && number == null && (!Array.isArray(arrets) || !arrets.length))) { idx.global.push(p); } + }); + + if (Array.isArray(horairesList) && horairesList.length) { + try { + const byH = Object.keys(idx.byHoraire || {}); + if (byH && byH.length) { + for (const hid of byH) { + const h = horairesList.find(x => String(x.id || x.horaire_id || x.horaireId || x.numero) === String(hid)); + if (h) { + const num = h.numero_train || h.number || h.numero || null; + if (num != null) { + const numKey = String(num); + idx.byNumber[numKey] = idx.byNumber[numKey] || []; + (idx.byHoraire[hid] || []).forEach(p => idx.byNumber[numKey].push(p)); + } + } + } + } + } catch (e) {} + } + return idx; + }, [perturbations, allHoraires, safeParseArrets, normalizeName]); + + const findPerturbsForHoraireAndStop = useCallback((horaire, stationId, stationName, idx) => { + const res = []; + const map = idx || buildPerturbMap(); + const hId = horaire && (horaire.id || horaire.horaire_id || horaire.numero || horaire.numero_train); + const number = horaire && (horaire.numero_train || horaire.number || horaire.numero || horaire.train_number); + if (hId != null) { + const kh = String(hId); + if (map.byHoraire && map.byHoraire[kh]) res.push(...map.byHoraire[kh]); + } + if (number != null) { + const kn = String(number); + if (map.byNumber && map.byNumber[kn]) res.push(...map.byNumber[kn]); + } + if (stationId != null) { + const ks = String(stationId); + if (map.byStopId && map.byStopId[ks]) map.byStopId[ks].forEach(x => res.push(x.perturbation)); + } + if (stationName && map.byStopName) { + const key = normalizeName(stationName); + if (map.byStopName[key]) map.byStopName[key].forEach(x => res.push(x.perturbation)); + try { + const needle = key; + for (const existingKey of Object.keys(map.byStopName || {})) { + if (existingKey === needle) continue; + if (existingKey.includes(needle) || needle.includes(existingKey)) { + map.byStopName[existingKey].forEach(x => res.push(x.perturbation)); + } + } + } catch (e) {} + } + return Array.from(new Set(res)); + }, [buildPerturbMap, normalizeName]); + + const computeStatusForHoraireAtStop = useCallback((horaire, stationId, stationName, idx, serviceDate = null) => { + const found = findPerturbsForHoraireAndStop(horaire, stationId, stationName, idx) || []; + const toYMD = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return d.toISOString().slice(0,10); }; + let horaireYmd = toYMD(horaire && (horaire._date || horaire.date || horaire.date_service || horaire.service_date)); + if (!horaireYmd && serviceDate) horaireYmd = serviceDate; + let maxDelay = null; + for (const p of found) { + try { + if (horaireYmd) { + const pDate = toYMD(p.date || p.date_service || p.start_date || p.date_debut); + const db = toYMD(p.date_debut || p.start_date); + const df = toYMD(p.date_fin || p.end_date); + if (pDate && pDate !== horaireYmd) continue; + if (db && df && !(horaireYmd >= db && horaireYmd <= df)) continue; + } + } catch (e) {} + try { + const joursSet = getPerturbationJours(p); + if (joursSet && horaireYmd) { if (!joursSet.has(horaireYmd)) continue; } + } catch (e) {} + const parsedObj = parsePerturbArretsObject(p) || { arrets: [], jours: null }; + const arrets = parsedObj.arrets || []; + let matched = false; + for (const a of arrets) { + const aId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code; + const aName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + const na = normalizeName(aName || ''); + const ns = normalizeName(stationName || ''); + const nameMatches = stationName && (na === ns || na.includes(ns) || ns.includes(na)); + if ((stationId != null && String(aId) === String(stationId)) || nameMatches) { + matched = true; + const t = (a.type_perturbation || a.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(a) || parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + if (!matched) { + const ref = p.horaire_id || p.horaire || p.horaireId || p.numero_train || p.train_number || p.numero; + const numberRef = p.number || p.train_number || p.numero || p.numero_train; + const appliesByRef = ref && (String(ref) === String(horaire.id) || String(ref) === String(horaire.numero_train) || String(ref) === String(horaire.numero)); + const appliesByNumber = numberRef && (String(numberRef) === String(horaire.numero_train) || String(numberRef) === String(horaire.numero) || String(numberRef) === String(horaire.number)); + const isGlobal = (!Array.isArray(arrets) || arrets.length === 0) && !ref && !numberRef; + if (appliesByRef || appliesByNumber || isGlobal) { + const t = (p.type_perturbation || p.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + } + if (maxDelay != null) return { label: `retardé +${maxDelay}min.`, detail: '', delayMinutes: maxDelay }; + return { label: "à l'heure", detail: '', delayMinutes: null }; + }, [findPerturbsForHoraireAndStop, parsePerturbArretsObject, getPerturbationJours, parseDelayMinutesFromArret, normalizeName]); + + const applyPerturbationsToHoraires = useCallback((list = [], perturbList = perturbations, displayStationId = null, displayStationName = null, serviceDate = null) => { + const map = buildPerturbMap(perturbList || []); + const targetStationId = displayStationId || gareIdParam || null; + const targetStationName = displayStationName || gareDisplay || null; + return (list || []).map(h => { + const horaire = { ...h }; + const stops = getStops(horaire); + const stopsStatus = []; + for (let i = 0; i < stops.length; i++) { + const s = stops[i] || {}; + const stationId = s.gare_id || s.gareId || s.id || s.station_id || s.stationId || s.uic || s.code; + const stationName = s.gare_nom || s.nom || s.name || s.station_name || s.station_nom; + const st = computeStatusForHoraireAtStop(horaire, stationId, stationName, map, serviceDate); + stopsStatus.push({ stationId, stationName, status: st }); + } + // compute display time using delay at the display station (arrivée) + const displayStatus = computeStatusForHoraireAtStop(horaire, targetStationId, targetStationName, map, serviceDate); + let displayTime = horaire._displayTime || formatTimeNoSeconds(horaire.heure_arrivee || horaire.arrival_time || horaire.time || horaire.heure || ''); + if (displayStatus && typeof displayStatus.delayMinutes === 'number' && !isNaN(displayStatus.delayMinutes)) { + if (typeof horaire._arrHM === 'number') { + displayTime = formatTimeFromHM(horaire._arrHM + displayStatus.delayMinutes); + } else { + const tryParse = (s) => { + if (!s) return null; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }; + const base = tryParse(horaire._rawArrTime || horaire.heure_arrivee || horaire.arrival_time || horaire.time || horaire.heure || ''); + if (typeof base === 'number') displayTime = formatTimeFromHM(base + displayStatus.delayMinutes); + } + } + horaire._stopsStatus = stopsStatus; + // prefer platform from stop data (arrivée) if available — check several possible keys + const stopForStation = (stops || []).find(s => { + const sid = s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null; + const nm = s.gare_nom || s.nom || s.name || s.stop_name || ''; + const ns = normalizeName(nm || ''); + const target = normalizeName(targetStationName || ''); + return (targetStationId && String(sid) === String(targetStationId)) || (targetStationName && (ns === target || ns.includes(target) || target.includes(ns))); + }) || null; + horaire._status = displayStatus; + horaire._displayTime = displayTime; + // arrival platform keys preferred, then fallback to generic platform + horaire._displayPlatform = (stopForStation && (stopForStation.quai_arrivee || stopForStation.platform_arrivee || stopForStation.quay_arrivee || stopForStation.arrival_platform || stopForStation.quai || stopForStation.platform || stopForStation.quay)) || horaire.arrival_platform || horaire.platform || ''; + return horaire; + }); + }, [buildPerturbMap, computeStatusForHoraireAtStop, formatTimeFromHM, perturbations, gareDisplay, gareIdParam, getStops, normalizeName]); + + useEffect(() => { + let mounted = true; + let inFlight = false; + const fetchData = async () => { + if (!mounted) return; + if (inFlight) return; + inFlight = true; + if (!supabase) { + setError('Supabase non initialisé — vérifiez les variables d\'environnement'); + setLoading(false); + inFlight = false; + return; + } + setLoading(true); + setError(null); + try { + const [{ data: horairesData, error: hError }, { data: perturbData, error: pError }, { data: travauxData, error: tError }] = await Promise.all([ + supabase.from('horaires').select('id, *'), + supabase.from('perturbations').select('*'), + supabase.from('travaux').select('*') + ]); + if (!mounted) { inFlight = false; return; } + if (hError || pError || tError) { + setError((hError || pError || tError).message || String(hError || pError || tError)); + setLoading(false); + inFlight = false; + return; + } + debug('Supabase horaires fetched', { count: (horairesData || []).length }); + if (mounted) setRawDebug({ count: (horairesData || []).length, sample: (horairesData || []).slice(0,3) }); + let parsedHoraires = (horairesData || []).map(h => h || {}); + parsedHoraires = parsedHoraires.map(h => { + try { + if (h && typeof h.stops === 'string') { + const parsed = JSON.parse(h.stops); + if (Array.isArray(parsed)) return { ...h, stops: parsed }; + } + } catch (e) {} + return h; + }); + if (mounted) setAllHoraires(parsedHoraires || []); + + // Récupérer le type de gare depuis la table `gares` si possible + try { + let fetchedType = null; + if (gareIdParam) { + const { data: gdata, error: gerr } = await supabase.from('gares').select('id,type').eq('id', gareIdParam).limit(1); + if (!gerr && gdata && gdata.length) fetchedType = gdata[0] && gdata[0].type; + } else if (gareDisplay) { + const needle = `%${gareDisplay}%`; + try { + const { data: gdata, error: gerr } = await supabase.from('gares').select('id,type').or(`nom.ilike.${needle},name.ilike.${needle}`).limit(1); + if (!gerr && gdata && gdata.length) fetchedType = gdata[0] && gdata[0].type; + } catch (e) { + try { + const { data: gdata } = await supabase.from('gares').select('id,type').ilike('nom', needle).limit(1); + if (gdata && gdata.length) fetchedType = gdata[0] && gdata[0].type; + } catch (err) { /* ignore */ } + } + } + if (mounted) setStationType(fetchedType ? String(fetchedType).toLowerCase() : null); + } catch (e) { /* ignore errors reading gares table */ } + + // Filtrer par gare : garder uniquement les horaires qui DESSERVENT la gare ciblée en tant qu'ARRIVÉE + let displayHoraires = parsedHoraires.slice(); + if (gareDisplay) { + const normalized = normalizeName(String(gareDisplay).replace(/-/g, ' ')); + displayHoraires = displayHoraires.filter(h => { + // Exclure si la gare ciblée est la gare de départ (on veut les arrivées) + const departName = normalizeName((h.gare_depart_nom || h.gare_depart || '').toString()); + if (departName && (departName === normalized || departName.includes(normalized) || normalized.includes(departName))) return false; + + // Inclure si gare d'arrivée correspond + const arriveeName = normalizeName((h.gare_arrivee_nom || h.gare_arrivee || '').toString()); + if (arriveeName && (arriveeName === normalized || arriveeName.includes(normalized) || normalized.includes(arriveeName))) return true; + + // Chercher dans les arrêts desservis ; ignorer si l'arrêt est le terminus d'origine (index==0) + const stopsList = getStops(h); + if (Array.isArray(stopsList) && stopsList.length) { + // compute max index to detect terminus positions + let maxIdx = null; + for (const st of stopsList) { + if (typeof st.index !== 'undefined' && st.index !== null) { + const n = Number(st.index); + if (!Number.isNaN(n)) maxIdx = maxIdx == null ? n : Math.max(maxIdx, n); + } + } + for (const s of stopsList) { + const stopName = normalizeName((s.gare_nom || s.nom || s.name || s.stop_name || '').toString()); + if (!stopName) continue; + const isOrigin = Boolean(s.isFirst || s.is_first || (typeof s.index !== 'undefined' && Number(s.index) === 0)); + if (isOrigin) continue; + if (stopName === normalized || stopName.includes(normalized) || normalized.includes(stopName)) return true; + } + } + return false; + }); + } else if (gareIdParam) { + const gid = String(gareIdParam); + displayHoraires = displayHoraires.filter(h => { + const departId = (h.gare_depart_id || h.gare_depart || null); + if (departId != null && String(departId) === gid) return false; + const arriveeId = h.gare_arrivee_id || h.gare_arrivee || null; + if (arriveeId != null && String(arriveeId) === gid) return true; + const stopsList = getStops(h); + if (Array.isArray(stopsList) && stopsList.length) { + for (const s of stopsList) { + const stopId = s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null; + if (stopId == null) continue; + const isOrigin = Boolean(s.isFirst || s.is_first || (typeof s.index !== 'undefined' && Number(s.index) === 0)); + if (isOrigin) continue; + if (String(stopId) === gid) return true; + } + } + return false; + }); + } + + const dateKeys = ['date_depart','date','jour','service_date','date_service','date_dep']; + const normalizeDate = (o) => { + for (const k of dateKeys) { + if (!o) continue; + const v = o[k]; + if (!v) continue; + const d = new Date(v); + if (!isNaN(d.getTime())) return d.toISOString().slice(0,10); + } + return null; + }; + + const withDates = displayHoraires.map(h => ({ ...h, _date: normalizeDate(h) })); + + const now = new Date(); + const todayHM = now.getHours()*60 + now.getMinutes(); + const enrich = withDates.map(h => { + let raw = h.heure_arrivee || h.arrival_time || h.time || h.heure || ''; + const stopsListForH = getStops(h); + if ((gareIdParam || gareDisplay) && Array.isArray(stopsListForH)) { + const byId = gareIdParam ? stopsListForH.find(s => String(s.gare_id || s.gareId || s.id) === String(gareIdParam)) : null; + const byName = gareDisplay ? stopsListForH.find(s => normalizeName((s.gare_nom || s.nom || s.name || '').toString()) === normalizeName(gareDisplay)) : null; + const stop = byId || byName; + if (stop && (stop.heure_arrivee || stop.time || stop.heure)) raw = stop.heure_arrivee || stop.time || stop.heure; + } + const arrHM = parseTimeHM(raw); + const displayTime = formatTimeNoSeconds(raw); + return { ...h, _rawArrTime: raw, _arrHM: arrHM, _displayTime: displayTime }; + }); + + // travaux processing (copié et adapté) + const pad = (n) => String(n).padStart(2,'0'); + const localDateStr = (d) => `${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())}`; + const today = new Date(); + const todayStr = localDateStr(today); + const tomorrow = new Date(today); + tomorrow.setDate(today.getDate()+1); + const tomorrowStr = localDateStr(tomorrow); + + const weekdayIndex = (d) => d.getDay(); + const weekdayNameForColumn = (d) => { + const i = weekdayIndex(d); + switch(i) { case 1: return 'circule_lundi'; case 2: return 'circule_mardi'; case 3: return 'circule_mercredi'; case 4: return 'circule_jeudi'; case 5: return 'circule_vendredi'; case 6: return 'circule_samedi'; case 0: return 'circule_dimanche'; default: return null; } + }; + const circulatesOn = (h, d) => { + const col = weekdayNameForColumn(d); + if (!col) return true; + const v = h[col]; + if (typeof v === 'boolean') return v; + if (typeof v === 'number') return v === 1; + if (typeof v === 'string') { + const s = v.trim().toLowerCase(); + return s === 'true' || s === '1' || s === 't' || s === 'y' || s === 'yes'; + } + return (typeof v === 'undefined' || v === null) ? true : Boolean(v); + }; + + const travauxList = travauxData || []; + const parseDateOnly = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return new Date(d.getFullYear(), d.getMonth(), d.getDate()); }; + const parseJoursTravaux = (val) => { if (val == null) return null; if (Array.isArray(val)) return new Set(val.map(x => String(x).toLowerCase())); const s = String(val || ''); const parts = s.split(/[,;\s]+/).map(p => p.trim()).filter(Boolean); return parts.length ? new Set(parts.map(p => p.toLowerCase())) : null; }; + const weekdayShort = (i) => { switch(i) { case 0: return 'dim'; case 1: return 'lun'; case 2: return 'mar'; case 3: return 'mer'; case 4: return 'jeu'; case 5: return 'ven'; case 6: return 'sam'; default: return null; } }; + const travauxApplies = (t, h, date) => { + if (!t) return false; + const db = parseDateOnly(t.date_debut || t.dateDebut || t.start_date); + const df = parseDateOnly(t.date_fin || t.dateFin || t.end_date); + if (!db || !df) return false; + const d = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + if (d < db || d > df) return false; + const joursSet = parseJoursTravaux(t.jours_travaux || t.jours || t.days); + if (joursSet) { + const name = weekdayShort(d.getDay()); + if (!name) return false; + let ok = false; for (const v of joursSet) { if (v.includes(name) || name.includes(v)) { ok = true; break; } } + if (!ok) return false; + } + const startHM = parseTimeHM(t.heure_debut || t.heureDebut || t.start_time); + const endHM = parseTimeHM(t.heure_fin || t.heureFin || t.end_time); + if (startHM == null || endHM == null) return true; + if (typeof h._arrHM === 'number') return h._arrHM >= startHM && h._arrHM <= endHM; + return false; + }; + + const isSubstitution = (h) => { + if (!h) return false; + if (h.substitution_disponible === true) return true; + const subFlag = h.substitution === true || h.is_substitution === true || h.isSubstitution === true; + const subStr = (typeof h.substitution === 'string' && ['true','1','yes','y','t'].includes(h.substitution.toLowerCase())); + const typeMatch = h.type_train && /subst|substitut|remplac/i.test(String(h.type_train)); + const commentMatch = h.comment && /subst|substitut|remplac/i.test(String(h.comment)); + return Boolean(subFlag || subStr || typeMatch || commentMatch); + }; + + const enriched = enrich.map(h => { + let linked = false; let appliesToday = false; let appliesTomorrow = false; + for (const t of travauxList) { + const tLine = t.ligne_id || t.ligne || t.line_id || t.line || t.ligneId || t.lineId; + const hLine = h.ligne_id || h.ligne || h.line_id || h.line || h.ligneId || h.lineId; + if (typeof tLine !== 'undefined' && tLine !== null) { + if (typeof hLine === 'undefined' || hLine === null) continue; + if (String(tLine) !== String(hLine)) continue; + } + const ref = t.horaire_id || t.horaire || t.horaireId || t.numero_train || t.train_number || t.numero; + if (ref && (String(ref) === String(h.id) || String(ref) === String(h.numero_train) || String(ref) === String(h.numero))) linked = true; + if (!appliesToday && travauxApplies(t,h,today)) appliesToday = true; + if (!appliesTomorrow && travauxApplies(t,h,tomorrow)) appliesTomorrow = true; + if (linked && appliesToday && appliesTomorrow) break; + } + return { ...h, _linkedToTravaux: linked, _travauxAppliesToday: appliesToday, _travauxAppliesTomorrow: appliesTomorrow }; + }); + + const todayCandidates = enriched.filter(h => { + if (h._date && h._date !== todayStr) return false; + if (!circulatesOn(h, today)) return false; + if (typeof h._arrHM !== 'number') return false; + if (h._arrHM <= todayHM) return false; + if (h._travauxAppliesToday && !isSubstitution(h)) return false; + if (isSubstitution(h)) return Boolean(h.substitution_disponible === true && h._linkedToTravaux && h._travauxAppliesToday); + return true; + }); + + const tomorrowCandidates = enriched.filter(h => { + if (h._date && h._date !== tomorrowStr) return false; + if (!circulatesOn(h, tomorrow)) return false; + if (h._travauxAppliesTomorrow && !isSubstitution(h)) return false; + if (isSubstitution(h)) return Boolean(h.substitution_disponible === true && h._linkedToTravaux && h._travauxAppliesTomorrow); + return true; + }); + + let finalList; let serviceDateStr; + if (todayCandidates && todayCandidates.length > 0) { finalList = todayCandidates.slice().sort((a,b)=> (a._arrHM||99999)-(b._arrHM||99999)); serviceDateStr = todayStr; } + else { finalList = (tomorrowCandidates || []).slice().sort((a,b)=> (a._arrHM||99999)-(b._arrHM||99999)); serviceDateStr = tomorrowStr; } + + const localPerturbMap = buildPerturbMap(perturbData || [], parsedHoraires || []); + debug('localPerturbMap summary', { + horaireCount: Object.keys(localPerturbMap.byHoraire || {}).length, + numberCount: Object.keys(localPerturbMap.byNumber || {}).length, + }); + + const annotated = applyPerturbationsToHoraires(finalList, perturbData || [], null, null, serviceDateStr); + try { debug('annotated horaires sample', annotated.slice(0,6).map(a => ({ id: a.id, numero: a.numero_train || a.numero, _status: a._status, _displayTime: a._displayTime }))); } catch (e) {} + + setHoraires((annotated || []).slice(0, 9)); + setPerturbations(perturbData || []); + setTravaux(travauxData || []); + } catch (err) { + console.error('Erreur Supabase horaires (arrivees)', err); + if (mounted) setError(err.message || String(err)); + } finally { + if (mounted) setLoading(false); + inFlight = false; + } + }; + fetchData(); + const intervalMs = 15000; + const intervalId = setInterval(fetchData, intervalMs); + return () => { mounted = false; clearInterval(intervalId); }; + }, [gareDisplay, gareIdParam, buildPerturbMap, computeStatusForHoraireAtStop, findPerturbsForHoraireAndStop, normalizeName, applyPerturbationsToHoraires, debug, getStops, parseTimeHM]); + + return ( +
+
arrivées
+
    + {horaires.length === 0 ? ( +
  • +
    Aucun horaire disponible.
    +
    lignes brutes renvoyées : {rawDebug.count}
    + {rawDebug.count > 0 && rawDebug.sample && rawDebug.sample.length > 0 ? ( +
    {JSON.stringify(rawDebug.sample.slice(0,2), null, 2).slice(0,1000)}{JSON.stringify(rawDebug.sample.slice(0,2), null, 2).length > 1000 ? '…(truncated)' : ''}
    + ) : null} +
  • + ) : horaires.map((h, idx) => { + const horaire = h || {}; + const op = horaire.type_train || horaire.op || ''; + const number = horaire.numero_train || horaire.number || horaire.numero || ''; + let time = horaire._displayTime || formatTimeNoSeconds(horaire.heure_arrivee || horaire.arrival_time || horaire.time || horaire.heure || ''); + + // afficher la gare de départ à la place de la destination + const departure = horaire.gare_depart_nom || horaire.gare_depart || ''; + const platform = (horaire._displayPlatform || horaire.arrival_platform || horaire.platform || '').toString().trim(); + + const stationId = horaire.gare_arrivee_id || horaire.gare_arrivee || (gareIdParam || null); + const stationName = (gareDisplay) ? gareDisplay : (horaire.gare_arrivee_nom || horaire.gare_arrivee || null); + + const status = horaire._status || computeStatusForHoraireAtStop(horaire, stationId, stationName, buildPerturbMap(perturbations)); + + if (status && status.label === 'supprimé' && showStatus) { + time = ''; + } else if (!horaire._displayTime && status && typeof status.delayMinutes === 'number' && !isNaN(status.delayMinutes)) { + if (typeof horaire._arrHM === 'number') { + time = formatTimeFromHM(horaire._arrHM + status.delayMinutes); + } else { + const tryParse = (s) => { + if (!s) return null; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }; + const base = tryParse(horaire.heure_arrivee || horaire.arrival_time || horaire.time || horaire._rawArrTime || ''); + if (typeof base === 'number') time = formatTimeFromHM(base + status.delayMinutes); + } + } + + const statusClass = status && status.label === 'supprimé' ? 'status-suppressed-arrivees' : (status && status.label && String(status.label).startsWith('retardé') ? 'status-delayed-arrivees' : ''); + // Ne pas afficher le quai si le train est supprimé ou si aucun quai n'est défini + let showPlatform = !(status && status.label === 'supprimé') && Boolean(platform); + if (showPlatform) { + const now = new Date(); + const nowHM = now.getHours()*60 + now.getMinutes(); + const sched = (typeof horaire._arrHM === 'number') ? horaire._arrHM : parseTimeHM(horaire.heure_arrivee || horaire.arrival_time || horaire.time || horaire._rawArrTime || ''); + const threshold = thresholdForStationType(stationType); + if (typeof sched === 'number' && typeof threshold === 'number' && threshold > 0) { + // n'afficher le quai que si l'heure courante est au moins (scheduled - threshold) + showPlatform = (nowHM >= (sched - threshold)); + } + } + + return ( +
  • +
    +
    + {showStatus ? ( +
    +
    {status ? status.label : ''}
    +
    {status ? status.detail : ''}
    +
    + ) : ( +
    +
    {op}
    +
    {number}
    +
    + )} +
    +
    {time}
    +
    {departure}
    + {showPlatform ? ( +
    {platform}
    + ) : null} +
  • + ); + })} +
+
+
+
+
+ ); + } + + diff --git a/src/pages/afficheurs/classiques/ClassiquesDeparts.css b/src/pages/afficheurs/classiques/ClassiquesDeparts.css new file mode 100644 index 0000000..f552020 --- /dev/null +++ b/src/pages/afficheurs/classiques/ClassiquesDeparts.css @@ -0,0 +1,398 @@ + +.aff-classiques-departs__container{ + --blue-dark: #173771; /* bande foncée */ + --blue: #275e9f; /* bande claire */ + --accent-yellow: #e1c14c; /* heure */ + --white: #f3f3f3; + --rows: 9; /* 9 horaires visibles + 1 footer */ + --footer-height: 100px; /* hauteur de la dernière 'ligne' servant de footer */ + --watermark-blue: rgba(10,120,180,0.15); +} + +/* Déclaration des fontes Achemine (dans public/fonts/) */ +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_italic.ttf') format('truetype'); + font-weight: 400; + font-style: italic; + font-display: swap; +} + +/* Conteneur plein écran pour l'afficheur */ +.aff-classiques-departs__container{ + position: relative; + width: 100%; + height: 100vh; + /* autoriser l'affichage des boîtes agrandies qui débordent des lignes */ + overflow: visible; + font-family: "Achemine", "Helvetica Neue", Arial, sans-serif; + background: var(--blue-dark); + /* plus de padding-bottom : le footer sera superposé en position absolute */ +} + +/* Boîte affichant le nom de la gare configuré via ?gare=Nom-de-la-gare */ +.aff-classiques-departs__station-box{ + position: absolute; + left: 18px; + top: 12px; + color: #ffffff; + background: rgba(0,0,0,0.08); + padding: 6px 10px; + border-radius: 6px; + font-weight: 700; + z-index: 40; +} + +/* arrondir légèrement le bas de l'afficheur pour coller à la maquette */ +.aff-classiques-departs__container{ + border-bottom-right-radius: 10px; + border-bottom-left-radius: 4px; +} + +/* Liste des lignes (bandes horizontales) */ +.aff-classiques-departs__list{ + list-style: none; + margin: 0; + padding: 0; + /* La liste occupe toute la hauteur de l'écran; le footer sera affiché + en position absolue par-dessus la partie inférieure. */ + height: 100vh; + display: flex; + flex-direction: column; +} + +.aff-classiques-departs__row{ + display: flex; + /* laisser les colonnes occuper toute la hauteur de la ligne, puis centrer leur contenu */ + align-items: stretch; + box-sizing: border-box; + padding: 0 1.2vw; + /* Répartit l'espace en var(--rows) parts ; on utilise 100% / var(--rows) pour que + 9 lignes + 1 footer occupent l'écran de façon uniforme. */ + flex: 0 0 calc(100% / var(--rows)); + min-height: 50px; /* garde une bonne hauteur sur petits écrans */ + max-height: 120px; + position: relative; /* pour positionner la .platform-box en absolu */ + overflow: visible; /* laisser la platform-box déborder si agrandie */ +} + +.aff-classiques-departs__row:nth-child(odd){ + background: var(--blue); +} +.aff-classiques-departs__row:nth-child(even){ + background: var(--blue-dark); +} + +/* Colonne logo */ +.aff-classiques-departs__col-logo{ + max-width: 100px; + display:flex; + /* organiser verticalement les éléments et les centrer verticalement */ + flex-direction: column; + justify-content: center; /* centre verticalement le contenu (logo + meta) */ + align-items: flex-start; /* garder l'alignement horizontal à gauche */ + flex: 0 0 10%; /* largeur fixe pour se comporter comme une colonne de tableau */ +} +.aff-classiques-departs__logo-box{ + /* pastille/logo : ne pas forcer la hauteur pour permettre l'empilement vertical */ + height: auto; + width: 100px; + display:flex; + align-items:flex-start; + justify-content:center; + font-weight:800; + font-size: clamp(14px, 1.6vw, 20px); + box-sizing: border-box; + flex: 0 0 auto; + align-self: flex-start; /* centrer la pastille dans la colonne */ +} + +/* Logo SVG chargé depuis public/type */ +.aff-classiques-departs__op-logo{ + max-width: 90%; + max-height: 100%; + height: auto; +} + +/* Texte à l'intérieur de la pastille/logo (quai) */ +.aff-classiques-departs__logo-text{ + text-align: center; + /* taille plus grande, responsive ; s'assure qu'elle reste lisible sur petits et grands écrans */ + font-size: 20px; + line-height: 1; + letter-spacing: 0.5px; +} + + +/* Colonne heure */ +.aff-classiques-departs__col-time{ + max-width: 15%; + padding-left: 20px; + display:flex; + /* colonne verticale : centrer verticalement l'heure */ + flex-direction: column; + align-items: center; + justify-content: center; + flex: 0 0 18%; /* largeur fixe pour alignement table-like */ +} +.aff-classiques-departs__time{ + color: var(--accent-yellow); + font-weight:850; + /* tailles responsives similaires à l'image */ + font-size: clamp(26px, 7.5vw, 70px); + line-height: 1; + display: flex; + align-items: baseline; /* centre le chiffre verticalement */ + height: auto; + width: 100%; /* occupe toute la colonne pour être centré */ + text-align: center; +} + +/* Destination */ +.aff-classiques-departs__col-destination{ + flex: 1 1 auto; /* colonne flexible qui prend l'espace restant */ + display: flex; + /* colonne verticale : centrer verticalement la destination */ + flex-direction: column; + justify-content: center; + align-items: flex-start; /* garder le texte aligné à gauche */ +} +.aff-classiques-departs__destination{ + color: var(--white); + font-weight: 500; + font-size: clamp(28px, 8vw, 80px); + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +/* Colonne Platform (quai) affichée à droite de chaque ligne */ +.aff-classiques-departs__col-platform{ + /* La colonne laisse la boîte gérer sa taille ; on aligne la boîte à droite + et l'on centre verticalement pour qu'elle suive la hauteur de la ligne. */ + display:flex; + flex: 0 0 8%; + align-items: center; + justify-content: flex-end; + padding-right: 0.5vw; + box-sizing: border-box; +} +.aff-classiques-departs__platform-box{ + /* Boîte quai : garder un format carré mais ne pas forcer l'étirement vertical */ + height: 90px; /* limite maximale, garde l'aspect visuel */ + width: 90px; + aspect-ratio: 1 / 1; /* carré strict */ + display:flex; + align-items:center; + justify-content:center; + background: transparent; /* intérieur transparent pour montrer la couleur de la ligne */ + border-radius: 12px; + box-sizing: border-box; + border: 4px solid #ffffff; /* bord blanc épais */ + padding: 8px; /* espace intérieur pour éloigner le texte du bord */ + flex: 0 0 auto; + align-self: center; +} +.aff-classiques-departs__platform-text{ + color: #ffffff; + font-weight: 900; + /* réduire légèrement la taille du texte afin qu'il ne touche pas la bordure */ + font-size: clamp(60px, 2.6vw, 100px); + line-height:1; + letter-spacing: 0.8px; +} + +/* Colonne Type de train (victoire de la séparation avec la colonne logo) */ +.aff-classiques-departs__col-train-type{ + max-width: 9%; + display:flex; + /* colonne verticale : centrer verticalement l'heure */ + flex-direction: column; + align-items: stretch; + justify-content: center; + flex: 0 0 18%; /* largeur fixe pour alignement table-like */ +} +.aff-classiques-departs__train-type-box{ + height: auto; + aspect-ratio: 1 / 1; + display:flex; + align-items:center; + justify-content:center; + background: transparent; + border-radius: 10px; + box-sizing: border-box; +} +.aff-classiques-departs__train-type-fallback{ text-align:center; } + + +/* Numéro de train / opérateur (texte sous logo) */ +.aff-classiques-departs__train-meta{ + flex-direction:column; + align-items:flex-start; + /* centrer verticalement sans forcer la hauteur (pour permettre l'empilement) */ + justify-content: center; + color: #ffffff; + height: auto; + flex: 0 0 auto; +} +.aff-classiques-departs__train-meta .aff-classiques-departs__op-name{ + font-weight:900; + font-size:1.50rem; /* plus visible */ + padding-left: 20px; + line-height:1; + justify-content: flex-start; + text-align: left; /* aligner à gauche dans la colonne */ +} +.aff-classiques-departs__train-meta .aff-classiques-departs__op-number{ + font-weight:500; + font-size:1.25rem; + padding-left: 20px; + text-align: left; /* aligner à gauche */ + margin: 0 0 2px 0; +} + +/* Statuts spéciaux : retardé / supprimé doivent ressortir en jaune */ +.aff-classiques-departs__train-meta.aff-classiques-departs__train-meta--delayed .aff-classiques-departs__op-name, +.aff-classiques-departs__train-meta.aff-classiques-departs__train-meta--delayed .aff-classiques-departs__op-number, +.aff-classiques-departs__train-meta.aff-classiques-departs__train-meta--suppressed .aff-classiques-departs__op-name, +.aff-classiques-departs__train-meta.aff-classiques-departs__train-meta--suppressed .aff-classiques-departs__op-number{ + color: var(--accent-yellow); +} + +/* Si on veut un alignement plus spécifique quand train-meta apparaît dans la colonne de type */ +.aff-classiques-departs__col-train-type .aff-classiques-departs__train-meta{ align-items: flex-start; justify-content: center; } +.aff-classiques-departs__col-train-type .aff-classiques-departs__train-meta .aff-classiques-departs__op-name, +.aff-classiques-departs__col-train-type .aff-classiques-departs__train-meta .aff-classiques-departs__op-number{ text-align: left; } + +/* Watermark vertical à droite */ +.aff-classiques-departs__watermark{ + position: absolute; + right: 8px; + top: 50%; + transform: translateY(-50%) rotate(-90deg); + transform-origin: center; + font-size: 10.8vw; + color: var(--watermark-blue); + font-weight:800; + letter-spacing: 6px; + pointer-events: none; + user-select: none; +} + +/* Petite pastille H en haut à droite (optionnelle) */ +.aff-classiques-departs__helpline{ + position: absolute; + right: 18px; + top: 12px; + width:80px; + height:80px; + border-radius:6px; + border:3px solid #fff; + color:#fff; + display:flex; + align-items:center; + justify-content:center; + font-weight:900; +} + +/* Horloge en bas à droite, proche du bord droit (à 400px du bord droit) */ +.aff-classiques-departs__clock-container{ + position: relative; /* contenu positionné par le footer */ + pointer-events: none; + z-index: 30; /* au-dessus du footer */ + display: inline-flex; + align-items: center; + height: 100%; /* prendra la hauteur de la ligne footer */ +} +.aff-classiques-departs__clock-box{ + display: inline-flex; + align-items: center; + justify-content: center; + background: var(--blue-dark); /* fond foncé interne comme sur la maquette */ + border-radius: 10px; + padding: 4px 8px; /* réduire padding pour diminuer légèrement la taille globale */ + border: 6px solid #ffffff; /* bordure un peu moins épaisse */ + box-shadow: 0 2px 0 rgba(0,0,0,0.12); + box-sizing: border-box; + overflow: hidden; + /* hauteur adaptée pour rentrer exactement dans la ligne footer */ + height: calc(var(--footer-height) - 12px); + min-height: 34px; +} + +/* Footer visuel : barre foncée en bas qui chevauche la liste */ +.aff-classiques-departs__footer{ + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: var(--footer-height); + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; + z-index: 20; /* en dessous de l'horloge */ +} +.aff-classiques-departs__footer .aff-classiques-departs__footer-inner{ + width: 100%; + height: 100%; + position: relative; + display: flex; + align-items: center; /* centre verticalement le contenu (la clock) */ + justify-content: flex-end; /* place la clock à droite */ + padding-right: 12px; /* espace entre le bord et la clock pour le coin arrondi */ + /* léger dégradé pour donner l'effet de bande plus claire en haut */ + background: linear-gradient(to bottom, rgba(11,123,180,0.18) 0%, var(--blue-dark) 30%); + box-shadow: inset 0 6px 0 rgba(0,0,0,0.08); + /* arrondir côté droit comme sur la maquette */ + +} + +/* légère ligne (accent) en haut du footer pour séparer visuellement */ +.aff-classiques-departs__footer .aff-classiques-departs__footer-inner::before{ + content: ''; + position: absolute; + left: 0; + right: 0; + top: 0; + height: 8px; + background: rgba(255,255,255,0.03); + pointer-events: none; + border-top-right-radius: 12px; +} +.aff-classiques-departs__clock-main{ + color: #ffffff; + font-weight: 800; + /* légèrement plus petit pour tenir dans le footer */ + font-size: clamp(28px, 4.2vw, 60px); + line-height: 1; + font-family: "Achemine", "Helvetica Neue", Arial, sans-serif; + margin-right: 6px; +} +.aff-classiques-departs__clock-seconds{ + color: var(--accent-yellow); + font-weight: 800; + font-size: clamp(16px, 2.8vw, 36px); + line-height: 1; +} + +/* Ajustements pour petits écrans */ +@media (max-width: 700px){ + .aff-classiques-departs__col-logo{width: 18%;} + .aff-classiques-departs__col-time{width: 24%;} + +} diff --git a/src/pages/afficheurs/classiques/ClassiquesDeparts.js b/src/pages/afficheurs/classiques/ClassiquesDeparts.js new file mode 100644 index 0000000..cb85bb6 --- /dev/null +++ b/src/pages/afficheurs/classiques/ClassiquesDeparts.js @@ -0,0 +1,1038 @@ +import React, { useEffect, useState, useCallback } from 'react'; +import './ClassiquesDeparts.css'; +import supabase from '../../../lib/supabase'; + +// Helper utilitaire : format HHhMM sans secondes (ex: 06h44) +const formatTimeNoSeconds = (v) => { + if (v == null) return ''; + const tryDate = new Date(v); + if (!isNaN(tryDate.getTime())) { + const hh = String(tryDate.getHours()).padStart(2, '0'); + const mm = String(tryDate.getMinutes()).padStart(2, '0'); + return `${hh}h${mm}`; + } + if (typeof v === 'string') { + const m = v.match(/(\d{1,2}):(\d{2})(?::\d{2})?/); + if (m) return `${String(m[1]).padStart(2,'0')}h${m[2]}`; + const m2 = v.match(/T(\d{2}):(\d{2})/); + if (m2) return `${m2[1]}h${m2[2]}`; + return v.slice(0,5).replace(':','h'); + } + return String(v).slice(0,5).replace(':','h'); +}; + +// Données proviennent exclusivement de la table `horaires`. +function Logo({op}){ + // Tente de charger un logo SVG depuis /type/ en fonction de l'opérateur. + // mapping pour opérateurs connus -> noms de fichiers dans public/type + const mapping = { + 'TGV inOUI': 'logo-inoui.svg', + 'TGV inOUI ': 'logo-inoui.svg', + 'TGV': 'logo-tgv.svg', + 'TER': 'sncf-voyageurs-logo.png', + 'MOBIGO': 'logo-mobigo.svg', + 'TGV Lyria': 'logo-lyria.svg', + 'TGV Lyria ': 'logo-lyria.svg', + }; + + const defaultFileFromOp = (name) => { + if (!name) return null; + // nettoyer et fabriquer un nom plausible : "logo-.svg" + const slug = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''); + return `logo-${slug}.svg`; + }; + + const fileName = mapping[op] || mapping[op.split(' ')[0]] || defaultFileFromOp(op); + + const [hasImg, setHasImg] = React.useState(true); + + return ( +
+ {hasImg && fileName ? ( + {op} setHasImg(false)} + /> + ) : ( +
{op.split(' ')[0]}
+ )} +
+ ); +} + +// (La fonction TrainType a été retirée car la colonne affiche désormais directement les +// informations via .train-meta dans la colonne .col-train-type) + +function Clock(){ + const [now, setNow] = useState(new Date()); + useEffect(() => { + const id = setInterval(() => setNow(new Date()), 1000); + return () => clearInterval(id); + }, []); + + const hh = String(now.getHours()).padStart(2, '0'); + const mm = String(now.getMinutes()).padStart(2, '0'); + const ss = String(now.getSeconds()).padStart(2, '0'); + + return ( +
+
+
{hh}:{mm}
+
{ss}
+
+
+ ); +} + +export default function ClassiquesDeparts(){ + // lire le paramètre de requête ?gare=Nom-de-la-gare + const params = new URLSearchParams(window.location.search); + const gareParam = params.get('gare'); + // support pour ?gare_id=123 ou ?gareId=123 + const gareIdParam = params.get('gare_id') || params.get('gareId'); + // gérer les +, décoder et remplacer les tirets par des espaces + const gareDisplay = gareParam ? decodeURIComponent(String(gareParam).replace(/\+/g, ' ')).replace(/-/g, ' ') : null; + + // debug flag activable via ?debug=1 or ?debug=true + const debugEnabled = (params.get('debug') === '1' || String(params.get('debug')).toLowerCase() === 'true'); + const debug = useCallback((...args) => { if (debugEnabled) console.debug(...args); }, [debugEnabled]); + + // État pour alterner l'affichage toutes les 3 secondes + const [showStatus, setShowStatus] = useState(false); + + // Données depuis Supabase + const [horaires, setHoraires] = useState([]); + const [allHoraires, setAllHoraires] = useState([]); + const [perturbations, setPerturbations] = useState([]); + // type de la gare affichée (valeurs attendues: 'interurbaine', 'ville', ...) + const [stationType, setStationType] = useState(null); + const [, setTravaux] = useState([]); + const [, setLoading] = useState(false); + const [, setError] = useState(null); + // debug des données brutes renvoyées par Supabase + const [rawDebug, setRawDebug] = useState({ count: 0, sample: [] }); + + // --- Helpers pour perturbations (définis ici pour éviter use-before-define dans useEffect) --- + const normalizeName = useCallback((s) => { + if (!s) return ''; + try { + const t = String(s).normalize('NFD').replace(/\p{M}/gu, '').toLowerCase().trim(); + return t.replace(/[-_]+/g, ' ').replace(/\s+/g, ' '); + } catch (e) { + return String(s).toLowerCase().trim(); + } + }, []); + + const safeParseArrets = useCallback((p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return []; + if (Array.isArray(raw)) return raw; + try { + const parsed = JSON.parse(raw); + // some payloads wrap { arrets: [...], jours_perturbation: [...] } + if (parsed && typeof parsed === 'object') { + if (Array.isArray(parsed.arrets)) return parsed.arrets; + // if parsed itself is an array-like object, return it + return parsed; + } + return []; + } catch (e) { return []; } + }, []); + + // Retourne la liste d'arrêts d'un horaire, supporte plusieurs noms de champs (stops, gares_desservies...) + const getStops = useCallback((h) => { + if (!h) return []; + if (Array.isArray(h.stops) && h.stops.length) return h.stops; + if (Array.isArray(h.gares_desservies) && h.gares_desservies.length) return h.gares_desservies; + if (Array.isArray(h.garesDesservies) && h.garesDesservies.length) return h.garesDesservies; + // parfois la colonne est stockée sous forme de chaîne JSON + const candidates = ['stops','gares_desservies','garesDesservies','gares_desservies_json']; + for (const key of candidates) { + const raw = h[key]; + if (!raw) continue; + if (Array.isArray(raw)) return raw; + if (typeof raw === 'string') { + try { const parsed = JSON.parse(raw); if (Array.isArray(parsed)) return parsed; } catch (e) { /* ignore */ } + } + } + return []; + }, []); + + // parse perturbations_arrets as object to extract both arrets and jours_perturbation + const parsePerturbArretsObject = useCallback((p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return { arrets: [], jours: null }; + if (typeof raw === 'object') { + if (Array.isArray(raw.arrets)) return { arrets: raw.arrets, jours: raw.jours_perturbation || raw.jours || null }; + if (Array.isArray(raw)) return { arrets: raw, jours: null }; + return { arrets: [], jours: null }; + } + try { + const parsed = JSON.parse(raw); + if (parsed && typeof parsed === 'object') { + return { arrets: Array.isArray(parsed.arrets) ? parsed.arrets : (Array.isArray(parsed) ? parsed : []), jours: parsed.jours_perturbation || parsed.jours || null }; + } + return { arrets: [], jours: null }; + } catch (e) { + return { arrets: [], jours: null }; + } + }, []); + + // extrait un set de dates 'YYYY-MM-DD' depuis p.jours_perturbation (top-level) ou depuis perturbations_arrets.jours_perturbation + const getPerturbationJours = useCallback((p) => { + if (!p) return null; + // check top-level field first + const candidate = p.jours_perturbation || p.jours || null; + const result = new Set(); + const pushDate = (d) => { + if (!d) return; + try { + const dd = new Date(d); + if (!isNaN(dd.getTime())) result.add(dd.toISOString().slice(0,10)); + } catch (e) {} + }; + if (candidate) { + if (Array.isArray(candidate)) { + candidate.forEach(item => pushDate(item.date || item)); + } else if (typeof candidate === 'string') { + try { const parsed = JSON.parse(candidate); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } + catch (e) { pushDate(candidate); } + } else if (typeof candidate === 'object') { + if (Array.isArray(candidate)) candidate.forEach(it => pushDate(it.date || it)); + else pushDate(candidate.date || null); + } + } + // fallback: inspect perturbations_arrets object + try { + const parsedObj = parsePerturbArretsObject(p); + const jp = parsedObj.jours; + if (jp) { + if (Array.isArray(jp)) jp.forEach(it => pushDate(it.date || it)); + else if (typeof jp === 'string') { + try { const parsed = JSON.parse(jp); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } catch (e) { pushDate(jp); } + } else if (typeof jp === 'object') pushDate(jp.date || null); + } + } catch (e) {} + + return result.size ? result : null; + }, [parsePerturbArretsObject]); + + const parseDelayMinutesFromArret = useCallback((arret) => { + if (!arret) return null; + const keys = ['retard_minutes','retard','delay_minutes','delay','retard_min']; + for (const k of keys) { + if (typeof arret[k] !== 'undefined' && arret[k] !== null && arret[k] !== '') { + const n = Number(arret[k]); + if (!isNaN(n)) return Math.round(n); + } + } + return null; + }, []); + + // parse HH:mm or ISO into minutes since midnight (utilisable ailleurs dans le composant) + const parseTimeHM = useCallback((s) => { + if (!s) return null; + if (typeof s === 'number') return s; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }, []); + + // retourne le threshold (en minutes) pour afficher le quai selon le type de gare + const thresholdForStationType = useCallback((type) => { + if (!type) return 0; + const t = String(type).toLowerCase(); + if (t.includes('interurb') || t.includes('interurbaine')) return 360; // 6 heures + if (t.includes('ville')) return 30; // 30 minutes + return 0; + }, []); + + const formatTimeFromHM = useCallback((totalMinutes) => { + if (typeof totalMinutes !== 'number' || isNaN(totalMinutes)) return ''; + const m = ((totalMinutes % 1440) + 1440) % 1440; + const hh = String(Math.floor(m / 60)).padStart(2, '0'); + const mm = String(m % 60).padStart(2, '0'); + return `${hh}h${mm}`; + }, []); + + // buildPerturbMap now accepts an optional list of horaires to link horaire_id -> numero_train + const buildPerturbMap = useCallback((list = perturbations, horairesList = allHoraires) => { + const idx = { byHoraire: {}, byNumber: {}, byStopId: {}, byStopName: {}, global: [] }; + (list || []).forEach(p => { + const horaireId = p.horaire_id || p.horaire || p.horaireId || p.horaireID; + if (horaireId != null) { const k = String(horaireId); idx.byHoraire[k] = idx.byHoraire[k] || []; idx.byHoraire[k].push(p); } + const number = p.number || p.train_number || p.train || p.numero || p.numero_train; + if (number != null) { const kn = String(number); idx.byNumber[kn] = idx.byNumber[kn] || []; idx.byNumber[kn].push(p); } + const arrets = safeParseArrets(p); + if (Array.isArray(arrets) && arrets.length) { + arrets.forEach(a => { + const stopId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code_uic || a.gare_uic || a.code; + const stopName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + if (stopId != null) { const ks = String(stopId); idx.byStopId[ks] = idx.byStopId[ks] || []; idx.byStopId[ks].push({ perturbation: p, arret: a }); } + if (stopName) { const key = normalizeName(stopName); idx.byStopName[key] = idx.byStopName[key] || []; idx.byStopName[key].push({ perturbation: p, arret: a }); } + }); + } + if ((horaireId == null && number == null && (!Array.isArray(arrets) || !arrets.length))) { idx.global.push(p); } + }); + + // If we have horairesList, propagate horaire_id perturbations to byNumber using the matching horaire's numero_train + if (Array.isArray(horairesList) && horairesList.length) { + try { + const byH = Object.keys(idx.byHoraire || {}); + if (byH && byH.length) { + for (const hid of byH) { + const h = horairesList.find(x => String(x.id || x.horaire_id || x.horaireId || x.numero) === String(hid)); + if (h) { + const num = h.numero_train || h.number || h.numero || null; + if (num != null) { + const numKey = String(num); + idx.byNumber[numKey] = idx.byNumber[numKey] || []; + // append all perturbations that reference this horaire id + (idx.byHoraire[hid] || []).forEach(p => idx.byNumber[numKey].push(p)); + } + } + } + } + } catch (e) { + // ignore mapping errors + } + } + + return idx; + }, [perturbations, allHoraires, safeParseArrets, normalizeName]); + + + const findPerturbsForHoraireAndStop = useCallback((horaire, stationId, stationName, idx) => { + const res = []; + const map = idx || buildPerturbMap(); + try { debug('findPerturbsForHoraireAndStop', { horaireId: horaire && (horaire.id || horaire.horaire_id), numero: horaire && (horaire.numero_train || horaire.numero), stationId, stationName, counts: { byHoraire: Object.keys(map.byHoraire||{}).length, byNumber: Object.keys(map.byNumber||{}).length } }); } catch (e) {} + const hId = horaire && (horaire.id || horaire.horaire_id || horaire.numero || horaire.numero_train); + const number = horaire && (horaire.numero_train || horaire.number || horaire.numero || horaire.train_number); + if (hId != null) { + const kh = String(hId); + if (map.byHoraire && map.byHoraire[kh]) res.push(...map.byHoraire[kh]); + } + if (number != null) { + const kn = String(number); + if (map.byNumber && map.byNumber[kn]) res.push(...map.byNumber[kn]); + } + if (stationId != null) { + const ks = String(stationId); + if (map.byStopId && map.byStopId[ks]) map.byStopId[ks].forEach(x => res.push(x.perturbation)); + } + if (stationName && map.byStopName) { + const key = normalizeName(stationName); + if (map.byStopName[key]) map.byStopName[key].forEach(x => res.push(x.perturbation)); + + // recherche permissive : accepter les clés qui contiennent ou sont contenues par le needle + try { + const needle = key; + for (const existingKey of Object.keys(map.byStopName || {})) { + if (existingKey === needle) continue; + if (existingKey.includes(needle) || needle.includes(existingKey)) { + map.byStopName[existingKey].forEach(x => res.push(x.perturbation)); + } + } + } catch (e) { + // ignore + } + } + return Array.from(new Set(res)); + }, [buildPerturbMap, normalizeName, debug]); + + + // serviceDate (YYYY-MM-DD) optional: forces the evaluation date for perturbations when horaire._date is missing + const computeStatusForHoraireAtStop = useCallback((horaire, stationId, stationName, idx, serviceDate = null) => { + const found = findPerturbsForHoraireAndStop(horaire, stationId, stationName, idx) || []; + try { debug('computeStatusForHoraireAtStop', { id: horaire && horaire.id, numero: horaire && (horaire.numero_train || horaire.numero), stationId, stationName, found: found.length }); } catch (e) {} + + const toYMD = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return d.toISOString().slice(0,10); }; + let horaireYmd = toYMD(horaire && (horaire._date || horaire.date || horaire.date_service || horaire.service_date)); + if (!horaireYmd && serviceDate) horaireYmd = serviceDate; + + let maxDelay = null; + + for (const p of found) { + // date filter: if perturbation carries explicit dates or jours_perturbation, check they match horaireYmd + try { + if (horaireYmd) { + const pDate = toYMD(p.date || p.date_service || p.start_date || p.date_debut); + const db = toYMD(p.date_debut || p.start_date); + const df = toYMD(p.date_fin || p.end_date); + if (pDate && pDate !== horaireYmd) { debug('perturbation date mismatch', p.id); continue; } + if (db && df && !(horaireYmd >= db && horaireYmd <= df)) { debug('perturbation date-range mismatch', p.id); continue; } + } + } catch (e) { /* ignore date parse errors -> assume applies */ } + + // also check jours_perturbation (may be inside perturbations_arrets wrapper) + try { + const joursSet = getPerturbationJours(p); + if (joursSet && horaireYmd) { + if (!joursSet.has(horaireYmd)) { debug('perturbation jours mismatch', p.id); continue; } + } + } catch (e) {} + + const parsedObj = parsePerturbArretsObject(p) || { arrets: [], jours: null }; + const arrets = parsedObj.arrets || []; + let matched = false; + for (const a of arrets) { + const aId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code; + const aName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + const na = normalizeName(aName || ''); + const ns = normalizeName(stationName || ''); + const nameMatches = stationName && (na === ns || na.includes(ns) || ns.includes(na)); + if ((stationId != null && String(aId) === String(stationId)) || nameMatches) { + matched = true; + const t = (a.type_perturbation || a.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(a) || parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + + if (!matched) { + // top-level perturbation that references the horaire/numero + const ref = p.horaire_id || p.horaire || p.horaireId || p.numero_train || p.train_number || p.numero; + const numberRef = p.number || p.train_number || p.numero || p.numero_train; + const appliesByRef = ref && (String(ref) === String(horaire.id) || String(ref) === String(horaire.numero_train) || String(ref) === String(horaire.numero)); + const appliesByNumber = numberRef && (String(numberRef) === String(horaire.numero_train) || String(numberRef) === String(horaire.numero) || String(numberRef) === String(horaire.number)); + const isGlobal = (!Array.isArray(arrets) || arrets.length === 0) && !ref && !numberRef; + if (appliesByRef || appliesByNumber || isGlobal) { + const t = (p.type_perturbation || p.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + } + + if (maxDelay != null) return { label: `retardé +${maxDelay}min.`, detail: '', delayMinutes: maxDelay }; + return { label: "à l'heure", detail: '', delayMinutes: null }; + }, [findPerturbsForHoraireAndStop, parsePerturbArretsObject, getPerturbationJours, parseDelayMinutesFromArret, normalizeName]); + + // Applique les perturbations à une liste d'horaires : calcule status par arrêt et met à jour l'heure affichée + const applyPerturbationsToHoraires = useCallback((list = [], perturbList = perturbations, displayStationId = null, displayStationName = null, serviceDate = null) => { + const map = buildPerturbMap(perturbList || []); + // fallback to global display station context + const targetStationId = displayStationId || gareIdParam || null; + const targetStationName = displayStationName || gareDisplay || null; + + return (list || []).map(h => { + const horaire = { ...h }; + const stops = getStops(horaire); + const stopsStatus = []; + for (let i = 0; i < stops.length; i++) { + const s = stops[i] || {}; + const stationId = s.gare_id || s.gareId || s.id || s.station_id || s.stationId || s.uic || s.code; + const stationName = s.gare_nom || s.nom || s.name || s.station_name || s.station_nom; + const st = computeStatusForHoraireAtStop(horaire, stationId, stationName, map, serviceDate); + stopsStatus.push({ stationId, stationName, status: st }); + } + + // compute display time using delay at the display station if any + const displayStatus = computeStatusForHoraireAtStop(horaire, targetStationId, targetStationName, map, serviceDate); + let displayTime = horaire._displayTime || formatTimeNoSeconds(horaire.heure_depart || horaire.time || horaire.heure || ''); + if (displayStatus && typeof displayStatus.delayMinutes === 'number' && !isNaN(displayStatus.delayMinutes)) { + if (typeof horaire._depHM === 'number') { + displayTime = formatTimeFromHM(horaire._depHM + displayStatus.delayMinutes); + } else { + const tryParse = (s) => { + if (!s) return null; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }; + const base = tryParse(horaire._rawTime || horaire.heure_depart || horaire.time || horaire.heure || ''); + if (typeof base === 'number') displayTime = formatTimeFromHM(base + displayStatus.delayMinutes); + } + } + + horaire._stopsStatus = stopsStatus; + // prefer platform from stop data (quai) if available + const stopForStation = (stops || []).find(s => { + const sid = s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null; + const nm = s.gare_nom || s.nom || s.name || s.stop_name || ''; + const ns = normalizeName(nm || ''); + const target = normalizeName(targetStationName || ''); + return (targetStationId && String(sid) === String(targetStationId)) || (targetStationName && (ns === target || ns.includes(target) || target.includes(ns))); + }) || null; + horaire._status = displayStatus; + horaire._displayTime = displayTime; + horaire._displayPlatform = (stopForStation && (stopForStation.quai || stopForStation.platform || stopForStation.quay)) || horaire.platform || ''; + return horaire; + }); + }, [buildPerturbMap, computeStatusForHoraireAtStop, formatTimeFromHM, perturbations, gareDisplay, gareIdParam, getStops, normalizeName, debug]); + + useEffect(() => { + const id = setInterval(() => setShowStatus(s => !s), 3000); + return () => clearInterval(id); + }, []); + + // Récupération Supabase — maintenant avec polling pour synchroniser sans recharger la page + useEffect(() => { + let mounted = true; + let inFlight = false; // empêche les fetchs concurrents + + const fetchData = async () => { + if (!mounted) return; + if (inFlight) return; // éviter les appels simultanés si le fetch précédent n'est pas terminé + inFlight = true; + if (!supabase) { + // Supabase non initialisé — avertir et définir un message d'erreur pour l'UI + // eslint-disable-next-line no-console + console.warn('Supabase non initialisé — vérifiez REACT_APP_SUPABASE_URL et REACT_APP_SUPABASE_ANON_KEY'); + setError('Supabase non initialisé — vérifiez les variables d\'environnement'); + setLoading(false); + inFlight = false; + return; + } + setLoading(true); + setError(null); + try { + const [{ data: horairesData, error: hError }, { data: perturbData, error: pError }, { data: travauxData, error: tError }] = await Promise.all([ + // DEBUG: récupérer explicitement l'id et toutes les colonnes pour s'assurer que l'identifiant + // `id` est bien présent et peut être mis en correspondance avec `horaire_id` dans perturbations + supabase.from('horaires').select('id, *'), + supabase.from('perturbations').select('*'), + supabase.from('travaux').select('*') + ]); + + if (!mounted) { inFlight = false; return; } + + if (hError || pError || tError) { + if (mounted) setError((hError || pError || tError).message || String(hError || pError || tError)); + setLoading(false); + inFlight = false; + return; + } + + // debug: afficher ce que Supabase retourne + // eslint-disable-next-line no-console + debug('Supabase horaires fetched', { count: (horairesData || []).length, sample: (horairesData || []).slice(0,5) }); + if (mounted) setRawDebug({ count: (horairesData || []).length, sample: (horairesData || []).slice(0,3) }); + + // conserver la liste complète telle que renvoyée par la BDD (avant filtrage par gare) + let parsedHoraires = (horairesData || []).map(h => h || {}); + + // Certains champs (comme stops) peuvent arriver en tant que chaîne JSON depuis la BDD; + // essayer de parser pour garantir que stops est un tableau utilisable. + parsedHoraires = parsedHoraires.map(h => { + try { + if (h && typeof h.stops === 'string') { + const parsed = JSON.parse(h.stops); + if (Array.isArray(parsed)) { + return { ...h, stops: parsed }; + } + } + } catch (e) { + // ignore parse error + } + return h; + }); + + // debug: afficher après normalisation + // eslint-disable-next-line no-console + debug('Supabase horaires normalized', { count: parsedHoraires.length, sampleStopsExample: (parsedHoraires[0] && parsedHoraires[0].stops) || null }); + + // stocker la liste complète (non filtrée) pour associer horaire_id -> numero_train + if (mounted) setAllHoraires(parsedHoraires || []); + + // Récupérer le type de gare depuis la table `gares` si possible + try { + let fetchedType = null; + if (gareIdParam) { + const { data: gdata, error: gerr } = await supabase.from('gares').select('id,type').eq('id', gareIdParam).limit(1); + if (!gerr && gdata && gdata.length) fetchedType = gdata[0] && gdata[0].type; + } else if (gareDisplay) { + const needle = `%${gareDisplay}%`; + try { + const { data: gdata, error: gerr } = await supabase.from('gares').select('id,type').or(`nom.ilike.${needle},name.ilike.${needle}`).limit(1); + if (!gerr && gdata && gdata.length) fetchedType = gdata[0] && gdata[0].type; + } catch (e) { + try { + const { data: gdata } = await supabase.from('gares').select('id,type').ilike('nom', needle).limit(1); + if (gdata && gdata.length) fetchedType = gdata[0] && gdata[0].type; + } catch (err) { /* ignore */ } + } + } + if (mounted) setStationType(fetchedType ? String(fetchedType).toLowerCase() : null); + } catch (e) { /* ignore errors reading gares table */ } + // Filtrer par gare : garder uniquement les horaires qui DESSERVENT la gare ciblée + // (soit comme gare_depart, soit comme un arrêt intermédiaire dans `stops` / `gares_desservies`) + // Exclure les horaires pour lesquels la gare ciblée est la gare d'arrivée finale (terminus) + let displayHoraires = parsedHoraires.slice(); + if (gareDisplay) { + const normalized = normalizeName(String(gareDisplay).replace(/-/g, ' ')); + displayHoraires = displayHoraires.filter(h => { + // Exclure si la gare ciblée est la gare d'arrivée finale + const destName = normalizeName((h.gare_arrivee_nom || h.gare_arrivee || '').toString()); + if (destName && (destName === normalized || destName.includes(normalized) || normalized.includes(destName))) return false; + + // Inclure si gare de départ correspond + const departName = normalizeName((h.gare_depart_nom || h.gare_depart_name || h.gare_depart || '').toString()); + if (departName && (departName === normalized || departName.includes(normalized) || normalized.includes(departName))) return true; + + // Chercher dans les arrêts desservis ; ignorer si l'arrêt est le terminus (isLast ou index==max) + const stopsList = getStops(h); + if (Array.isArray(stopsList) && stopsList.length) { + let maxIdx = null; + for (const st of stopsList) { + if (typeof st.index !== 'undefined' && st.index !== null) { + const n = Number(st.index); + if (!Number.isNaN(n)) maxIdx = maxIdx == null ? n : Math.max(maxIdx, n); + } + } + for (const s of stopsList) { + const stopName = normalizeName((s.gare_nom || s.nom || s.name || s.stop_name || '').toString()); + if (!stopName) continue; + const isTerminus = Boolean(s.isLast || s.is_last || (typeof s.index !== 'undefined' && maxIdx != null && Number(s.index) === maxIdx)); + if (isTerminus) continue; + if (stopName === normalized || stopName.includes(normalized) || normalized.includes(stopName)) return true; + } + } + return false; + }); + } else if (gareIdParam) { + const gid = String(gareIdParam); + displayHoraires = displayHoraires.filter(h => { + // Exclure si gare d'arrivée finale correspond + const destId = (h.gare_arrivee_id || h.gare_arrivee || null); + if (destId != null && String(destId) === gid) return false; + + // Inclure si gare de départ correspond + const departId = h.gare_depart_id || h.gare_id || h.origin_id || null; + if (departId != null && String(departId) === gid) return true; + + // Chercher dans les arrêts desservis (ignorer terminus) + const stopsList = getStops(h); + if (Array.isArray(stopsList) && stopsList.length) { + let maxIdx = null; + for (const st of stopsList) { + if (typeof st.index !== 'undefined' && st.index !== null) { + const n = Number(st.index); + if (!Number.isNaN(n)) maxIdx = maxIdx == null ? n : Math.max(maxIdx, n); + } + } + for (const s of stopsList) { + const stopId = s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null; + if (stopId == null) continue; + const isTerminus = Boolean(s.isLast || s.is_last || (typeof s.index !== 'undefined' && maxIdx != null && Number(s.index) === maxIdx)); + if (isTerminus) continue; + if (String(stopId) === gid) return true; + } + } + return false; + }); + } + + // Normaliser date de service (si présente) + const dateKeys = ['date_depart','date','jour','service_date','date_service','date_dep']; + const normalizeDate = (o) => { + for (const k of dateKeys) { + if (!o) continue; + const v = o[k]; + if (!v) continue; + const d = new Date(v); + if (!isNaN(d.getTime())) return d.toISOString().slice(0,10); + } + return null; + }; + + const withDates = displayHoraires.map(h => ({ ...h, _date: normalizeDate(h) })); + + // parse HH:mm or HH:MM:SS into minutes since midnight + const parseTimeHM = (s) => { + if (!s) return null; + if (typeof s === 'number') return s; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }; + + // enrichir withDates avec heures en minutes pour aujourd'hui et demain + const now = new Date(); + const todayHM = now.getHours()*60 + now.getMinutes(); + const enrich = withDates.map(h => { + let raw = h.heure_depart || h.time || h.heure || ''; + // si stops contient la gare ciblée, préférer son heure + const stopsListForH = getStops(h); + if ((gareIdParam || gareDisplay) && Array.isArray(stopsListForH)) { + const byId = gareIdParam ? stopsListForH.find(s => String(s.gare_id || s.gareId || s.id) === String(gareIdParam)) : null; + const byName = gareDisplay ? stopsListForH.find(s => normalizeName((s.gare_nom || s.nom || s.name || '').toString()) === normalizeName(gareDisplay)) : null; + const stop = byId || byName; + if (stop && (stop.heure_depart || stop.time || stop.heure)) raw = stop.heure_depart || stop.time || stop.heure; + } + const depHM = parseTimeHM(raw); + const displayTime = formatTimeNoSeconds(raw); + return { ...h, _rawTime: raw, _depHM: depHM, _displayTime: displayTime }; + }); + + + // fonctions utilitaires de jours + const pad = (n) => String(n).padStart(2,'0'); + const localDateStr = (d) => `${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())}`; + const today = new Date(); + const todayStr = localDateStr(today); + const tomorrow = new Date(today); + tomorrow.setDate(today.getDate()+1); + const tomorrowStr = localDateStr(tomorrow); + + const weekdayIndex = (d) => d.getDay(); // 0 dimanche .. 6 samedi + const weekdayNameForColumn = (d) => { + const i = weekdayIndex(d); + switch(i) { + case 1: return 'circule_lundi'; + case 2: return 'circule_mardi'; + case 3: return 'circule_mercredi'; + case 4: return 'circule_jeudi'; + case 5: return 'circule_vendredi'; + case 6: return 'circule_samedi'; + case 0: return 'circule_dimanche'; + default: return null; + } + }; + + const circulatesOn = (h, d) => { + const col = weekdayNameForColumn(d); + if (!col) return true; + const v = h[col]; + if (typeof v === 'boolean') return v; + if (typeof v === 'number') return v === 1; + if (typeof v === 'string') { + const s = v.trim().toLowerCase(); + return s === 'true' || s === '1' || s === 't' || s === 'y' || s === 'yes'; + } + // si la colonne est undefined ou null, on considère que ça circule (fallback permissif) + return (typeof v === 'undefined' || v === null) ? true : Boolean(v); + }; + + // Construire listes pour aujourd'hui et demain en tenant compte des colonnes circule_* + // Calculer les travaux applicables et les substitutions + const travauxList = travauxData || []; + + const parseDateOnly = (v) => { + if (!v) return null; + const d = new Date(v); + if (isNaN(d.getTime())) return null; + return new Date(d.getFullYear(), d.getMonth(), d.getDate()); + }; + + const parseJoursTravaux = (val) => { + if (val == null) return null; + if (Array.isArray(val)) return new Set(val.map(x => String(x).toLowerCase())); + const s = String(val || ''); + const parts = s.split(/[,;\s]+/).map(p => p.trim()).filter(Boolean); + return parts.length ? new Set(parts.map(p => p.toLowerCase())) : null; + }; + + const weekdayShort = (i) => { + switch(i) { case 0: return 'dim'; case 1: return 'lun'; case 2: return 'mar'; case 3: return 'mer'; case 4: return 'jeu'; case 5: return 'ven'; case 6: return 'sam'; default: return null; } + }; + + const travauxApplies = (t, h, date) => { + if (!t) return false; + const db = parseDateOnly(t.date_debut || t.dateDebut || t.start_date); + const df = parseDateOnly(t.date_fin || t.dateFin || t.end_date); + if (!db || !df) return false; + const d = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + if (d < db || d > df) return false; + const joursSet = parseJoursTravaux(t.jours_travaux || t.jours || t.days); + if (joursSet) { + const name = weekdayShort(d.getDay()); + if (!name) return false; + let ok = false; + for (const v of joursSet) { if (v.includes(name) || name.includes(v)) { ok = true; break; } } + if (!ok) return false; + } + const startHM = parseTimeHM(t.heure_debut || t.heureDebut || t.start_time); + const endHM = parseTimeHM(t.heure_fin || t.heureFin || t.end_time); + if (startHM == null || endHM == null) return true; + if (typeof h._depHM === 'number') return h._depHM >= startHM && h._depHM <= endHM; + return false; + }; + + const isSubstitution = (h) => { + if (!h) return false; + // nouvelle colonne spécifique + if (h.substitution_disponible === true) return true; + // anciennes variantes + const subFlag = h.substitution === true || h.is_substitution === true || h.isSubstitution === true; + const subStr = (typeof h.substitution === 'string' && ['true','1','yes','y','t'].includes(h.substitution.toLowerCase())); + const typeMatch = h.type_train && /subst|substitut|remplac/i.test(String(h.type_train)); + const commentMatch = h.comment && /subst|substitut|remplac/i.test(String(h.comment)); + return Boolean(subFlag || subStr || typeMatch || commentMatch); + }; + + // compute linkage and travaux applicability per horaire + const enriched = enrich.map(h => { + let linked = false; + let appliesToday = false; + let appliesTomorrow = false; + for (const t of travauxList) { + // Extraire identifiants de ligne (différentes variantes possibles) + const tLine = t.ligne_id || t.ligne || t.line_id || t.line || t.ligneId || t.lineId; + const hLine = h.ligne_id || h.ligne || h.line_id || h.line || h.ligneId || h.lineId; + + // Si le travail a une ligne attribuée, n'appliquer le travail QUE si la ligne correspond + // (si hLine est absent on considère qu'on ne peut pas appliquer ce travail à cet horaire) + if (typeof tLine !== 'undefined' && tLine !== null) { + if (typeof hLine === 'undefined' || hLine === null) { + // pas de ligne sur l'horaire -> ignorer ce travail pour cet horaire + continue; + } + if (String(tLine) !== String(hLine)) { + // lignes différentes -> ignorer ce travail pour cet horaire + continue; + } + } + + const ref = t.horaire_id || t.horaire || t.horaireId || t.numero_train || t.train_number || t.numero; + if (ref && (String(ref) === String(h.id) || String(ref) === String(h.numero_train) || String(ref) === String(h.numero))) linked = true; + if (!appliesToday && travauxApplies(t,h,today)) appliesToday = true; + if (!appliesTomorrow && travauxApplies(t,h,tomorrow)) appliesTomorrow = true; + if (linked && appliesToday && appliesTomorrow) break; + } + return { ...h, _linkedToTravaux: linked, _travauxAppliesToday: appliesToday, _travauxAppliesTomorrow: appliesTomorrow }; + }); + + // Build today and tomorrow candidate lists + const todayCandidates = enriched.filter(h => { + if (h._date && h._date !== todayStr) return false; + if (!circulatesOn(h, today)) return false; + if (typeof h._depHM !== 'number') return false; + if (h._depHM <= todayHM) return false; + + // if travaux apply at this horaire today, hide regular horaires + if (h._travauxAppliesToday && !isSubstitution(h)) return false; + + if (isSubstitution(h)) { + // show substitution only if substitution_disponible AND linked to travaux that apply today + return Boolean(h.substitution_disponible === true && h._linkedToTravaux && h._travauxAppliesToday); + } + + return true; + }); + + const tomorrowCandidates = enriched.filter(h => { + if (h._date && h._date !== tomorrowStr) return false; + if (!circulatesOn(h, tomorrow)) return false; + + // hide regular horaires if travaux apply tomorrow during their time window + if (h._travauxAppliesTomorrow && !isSubstitution(h)) return false; + + if (isSubstitution(h)) { + // show substitution only if substitution_disponible AND linked to travaux that apply tomorrow + return Boolean(h.substitution_disponible === true && h._linkedToTravaux && h._travauxAppliesTomorrow); + } + + return true; + }); + + // final list: if there are any todayCandidates use them; otherwise use tomorrowCandidates + let finalList; + let serviceDateStr; + if (todayCandidates && todayCandidates.length > 0) { + finalList = todayCandidates.slice().sort((a,b)=> (a._depHM||99999)-(b._depHM||99999)); + serviceDateStr = todayStr; + } else { + finalList = (tomorrowCandidates || []).slice().sort((a,b)=> (a._depHM||99999)-(b._depHM||99999)); + serviceDateStr = tomorrowStr; + } + + // Construire un index local des perturbations à partir des données fraîchement récupérées + // Filtrer pour ne garder que les perturbations applicables aujourd'hui (éviter d'appliquer les perturbations d'hier) + const todayYmd = new Date().toLocaleDateString('en-CA'); + const filteredPerturb = (perturbData || []).filter(p => { + try { + const toYMD = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return d.toISOString().slice(0,10); }; + const pDate = toYMD(p.date || p.date_service || p.start_date || p.date_debut); + const db = toYMD(p.date_debut || p.start_date); + const df = toYMD(p.date_fin || p.end_date); + // si pDate fourni et ne correspond pas à aujourd'hui -> ignorer + if (pDate && pDate !== todayYmd) return false; + // si fourche de dates fournie et aujourd'hui n'est pas dans l'intervalle -> ignorer + if (db && df && !(todayYmd >= db && todayYmd <= df)) return false; + // si jours_perturbation fourni -> vérifier qu'aujourd'hui en fait partie + try { + const joursSet = getPerturbationJours(p); + if (joursSet && !joursSet.has(todayYmd)) return false; + } catch (e) { + // ignore parse errors and keep perturbation + } + return true; + } catch (e) { + return true; + } + }); + + const localPerturbMap = buildPerturbMap(filteredPerturb || [], parsedHoraires || []); + // Debug: afficher sommaire de l'index des perturbations + debug('localPerturbMap summary', { + horaireCount: Object.keys(localPerturbMap.byHoraire || {}).length, + numberCount: Object.keys(localPerturbMap.byNumber || {}).length, + stopIdCount: Object.keys(localPerturbMap.byStopId || {}).length, + stopNameCount: Object.keys(localPerturbMap.byStopName || {}).length, + globalCount: (localPerturbMap.global || []).length, + sampleStopNames: Object.keys(localPerturbMap.byStopName || {}).slice(0,10) + }); + + // Annoter chaque horaire avec un statut calculé (synchronisé avec la BDD) + // déterminer la date de service utilisée pour ces finalList (aujourd'hui ou demain) + const annotated = applyPerturbationsToHoraires(finalList, filteredPerturb || [], null, null, serviceDateStr); + + // Debug: log first few annotated horaires + try { debug('annotated horaires sample', annotated.slice(0,6).map(a => ({ id: a.id, numero: a.numero_train || a.numero, _status: a._status, _displayTime: a._displayTime }))); } catch (e) {} + + // afficher seulement les 9 premières lignes sur l'afficheur + setHoraires((annotated || []).slice(0, 9)); + setPerturbations(filteredPerturb || []); + setTravaux(travauxData || []); + } catch (err) { + // eslint-disable-next-line no-console + console.error('Erreur Supabase horaires', err); + if (mounted) setError(err.message || String(err)); + } finally { + if (mounted) setLoading(false); + inFlight = false; + } + }; + + // Exécuter immédiatement, puis périodiquement pour synchroniser sans recharger + fetchData(); + const intervalMs = 15000; // 15 secondes par défaut + const intervalId = setInterval(fetchData, intervalMs); + + return () => { mounted = false; clearInterval(intervalId); }; + }, [gareDisplay, gareIdParam, buildPerturbMap, computeStatusForHoraireAtStop, findPerturbsForHoraireAndStop, normalizeName, formatTimeFromHM, applyPerturbationsToHoraires, debug, getStops]); + + // Helpers pour perturbations (memoized plus haut) + + return ( +
+ {/* nom de la gare configurable via ?gare=Nom-de-la-gare */} +
départs
+
    + {horaires.length === 0 ? ( +
  • +
    Aucun horaire disponible.
    +
    lignes brutes renvoyées : {rawDebug.count}
    + {rawDebug.count > 0 && rawDebug.sample && rawDebug.sample.length > 0 ? ( +
    +				{JSON.stringify(rawDebug.sample.slice(0,2), null, 2).slice(0,1000)}{JSON.stringify(rawDebug.sample.slice(0,2), null, 2).length > 1000 ? '…(truncated)' : ''}
    +			  
    + ) : null} +
  • + ) : horaires.map((h, idx) => { + const horaire = h || {}; + const op = horaire.type_train || horaire.op || ''; + const number = horaire.numero_train || horaire.number || horaire.numero || ''; + // Use enriched display time (computed during fetch) — fallback to formatting raw fields + let time = horaire._displayTime || formatTimeNoSeconds(horaire.heure_depart || horaire.time || horaire.heure || ''); + + const destination = horaire.gare_arrivee_nom || ''; + const platform = (horaire._displayPlatform || horaire.platform || '').toString().trim(); + // attachedPerturbs/rowObj previously used for mocked status; status is now computed from perturbations per stop + + // determine station context (the display station) — prefer explicit gareIdParam/gareDisplay if provided + const stationId = horaire.gare_depart_id || horaire.gare_id || horaire.origin_id || (gareIdParam || null); + const stationName = (gareDisplay) ? gareDisplay : (horaire.gare_depart_nom || horaire.gare_depart || horaire.origin_name || null); + + // prefer precomputed status and display time (synchronisé depuis la BDD) — sinon calculer à la volée + const status = horaire._status || computeStatusForHoraireAtStop(horaire, stationId, stationName, buildPerturbMap(perturbations)); + + // if the status is 'supprimé' and the component is currently showing the status (showStatus toggles every 3s), hide the time + if (status && status.label === 'supprimé' && showStatus) { + time = ''; + } else if (!horaire._displayTime && status && typeof status.delayMinutes === 'number' && !isNaN(status.delayMinutes)) { + // if we have _depHM (minutes since midnight) use it + if (typeof horaire._depHM === 'number') { + time = formatTimeFromHM(horaire._depHM + status.delayMinutes); + } else { + // fallback: try to parse original time string + const tryParse = (s) => { + if (!s) return null; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }; + const base = tryParse(horaire.heure_depart || horaire.time || horaire.heure || horaire._rawTime || ''); + if (typeof base === 'number') time = formatTimeFromHM(base + status.delayMinutes); + } + } + const statusClass = status.label === 'supprimé' ? 'aff-classiques-departs__train-meta--suppressed' : (status.label && String(status.label).startsWith('retardé') ? 'aff-classiques-departs__train-meta--delayed' : ''); + + // Ne pas afficher le quai si le train est supprimé ou si aucun quai n'est défini + let showPlatform = !(status && status.label === 'supprimé') && Boolean(platform); + if (showPlatform) { + const now = new Date(); + const nowHM = now.getHours()*60 + now.getMinutes(); + const sched = (typeof horaire._depHM === 'number') ? horaire._depHM : parseTimeHM(horaire.heure_depart || horaire.time || horaire.heure || horaire._rawTime || ''); + const threshold = thresholdForStationType(stationType); + if (typeof sched === 'number' && typeof threshold === 'number' && threshold > 0) { + // n'afficher le quai que si l'heure courante est au moins (scheduled - threshold) + showPlatform = (nowHM >= (sched - threshold)); + } + } + + return ( +
  • +
    + +
    +
    + {showStatus ? ( +
    +
    {status.label}
    +
    {status.detail}
    +
    + ) : ( +
    +
    {op}
    +
    {number}
    +
    + )} +
    +
    +
    {time}
    +
    +
    +
    {destination}
    +
    + {showPlatform ? ( +
    +
    +
    {platform}
    +
    +
    + ) : null} +
  • + ); + })} +
+ {/* Footer visuel de l'afficheur — barre foncée en bas */} +
+
+ + +
+
+ +
+ ) +} + + diff --git a/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.css b/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.css new file mode 100644 index 0000000..7e50c87 --- /dev/null +++ b/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.css @@ -0,0 +1,475 @@ + + +.achemine-font-face { + /* helper placeholder (no output) */ +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} +.aff-quais__left--strict { + width: 100%; + max-width: 0; + min-width: 700px; + background: var(--white); + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + /* Remonter l'ensemble du contenu vers le bas pour laisser la place au logo en haut */ + padding: 140px 32px 24px 32px; + box-sizing: border-box; + position: relative; + /* leave space at bottom for the footer (height 86px) */ + height: calc(100vh - 86px); + overflow: hidden; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + box-shadow: none; +} +.aff-quais__left--strict, +.aff-quais__left--strict * { + font-family: 'Achemine', 'Helvetica Neue', Arial, sans-serif; + /* Ensure the left strict zone text uses the intended color (fallback to green-dark) */ + color: #2d522c; +} +.aff-quais__type-logo--strict{ + position: absolute; + top: 18px; + /* positionné à gauche dans la zone blanche (à droite du logo opérateur) */ + /* tout à gauche de la zone blanche */ + left: 32px; + width: 120px; + height: auto; + object-fit: contain; + z-index: 5; + pointer-events: none; +} +.aff-quais__sncf-logo--strict { + width: 86px; + height: auto; + margin-bottom: 18px; + margin-left: 0; + margin-top: 0; + position: absolute; + top: 18px; + /* placé à droite du logo du type */ + left: 140px; + z-index: 4; +} +.aff-quais__watermark { + position: absolute; + /* move watermark further to the right */ + right: -180px; + top: 70%; + transform: translateY(-50%) rotate(-90deg); + /* police agrandie de 200% */ + font-size: 200px; + color: var(--watermark-green); + opacity: 0.07; + font-weight: 800; + letter-spacing: 6px; + pointer-events: none; + user-select: none; + z-index: 0; +} +.aff-quais__row--time-status { + display: flex; + align-items: flex-end; + gap: 18px; + margin-bottom: 18px; + z-index: 1; +} +.aff-quais__time--strict { + color: var(--green-dark); + font-weight: 800; + /* police agrandie de 200% */ + font-size: 112px; + line-height: 1; + letter-spacing: 0.5px; + margin-right: 12px; +} + +/* Wrapper that contains both the big time and the smaller status when alternating. + Keeps the layout width/height stable so alternating does not reflow the surrounding text. */ +.aff-quais__time-status-wrapper { + position: relative; + display: inline-block; /* width is determined by the time element in normal flow */ + height: 112px; /* match .aff-quais__time font-size so status can be aligned at bottom */ + vertical-align: bottom; + overflow: visible; +} + +.aff-quais__time-status-wrapper .aff-quais__time--strict { + position: relative; /* keep in flow to define wrapper width */ + display: block; + top: 0; + left: 0; + transition: opacity 180ms linear; +} + +.aff-quais__time-status-wrapper .aff-quais__time-status--strict { + position: absolute; /* overlay on the same horizontal position */ + left: 0; + right: 0; + bottom: 0; /* align to bottom similar to previous align-self:flex-end */ + transition: opacity 180ms linear; +} + +.aff-quais__time-status-wrapper .hidden { opacity: 0; pointer-events: none; } +.aff-quais__time-status-wrapper .visible { opacity: 1; } +.aff-quais__time-status--strict { + color: var(--accent-yellow); + /* police agrandie de 200% */ + font-size: 44px; + font-weight: 400; + opacity: 1; + align-self: flex-end; + margin-bottom: 14px; +} +.aff-quais__destination--strict { + margin-top: 10px; + margin-bottom: 0; + color: var(--green-dark); + z-index: 1; +} +.aff-quais__destination-line1--strict { + /* police agrandie de 200% */ + font-size: 76px; + font-weight: 800; + line-height: 1.1; +} +.aff-quais__destination-line2--strict { + /* police agrandie de 200% */ + font-size: 76px; + font-weight: 800; + line-height: 1.1; +} +.aff-quais__train-id--strict { + margin-top: 12px; + color: var(--green-dark); + font-weight: 700; + /* police agrandie de 200% */ + font-size: 44px; + letter-spacing: 0.5px; + z-index: 1; +} +.aff-quais__train-number--strict { + color: var(--green-dark); + font-weight: 400; + /* police agrandie de 200% */ + font-size: 44px; +} +.aff-quais__quai{ + margin-top: 8px; + color: var(--green-dark); + font-weight:800; + background: rgba(255,255,255,0.08); + padding:6px 10px; + border-radius:6px; + display:inline-block; +} + +/* central divider */ +.aff-quais__divider{ + width:18px; + background: linear-gradient(180deg, rgba(0,0,0,0.12), rgba(0,0,0,0.18)); + display:flex; + justify-content:center; + align-items:flex-start; + padding-top:36px; +} +.aff-quais__divider:before{ + content:''; + width:6px; + background: transparent; + box-shadow: 0 18px 0 0 #f0e34f, 0 54px 0 0 #f0e34f, 0 90px 0 0 #f0e34f, 0 126px 0 0 #f0e34f, 0 162px 0 0 #f0e34f, 0 198px 0 0 #f0e34f; + display:block; + border-radius:4px; +} + +/* Right panel with stops */ +.aff-quais__right{ + flex:1; + background: linear-gradient(180deg,var(--green) 0%, var(--green-dark) 100%); + display:flex; + align-items:center; + box-sizing:border-box; + padding: 24px 36px; +} +.aff-quais__stops-box{ + width:100%; + max-width:820px; + margin-left:24px; +} +.aff-quais__stops-list{ + list-style:none; + margin:0; + padding:0; + width:100%; +} +.aff-quais__stop{ + display:flex; + align-items:center; + gap:18px; + padding: 10px 16px; + color:#fff; + font-size:30px; + line-height:1.1; +} +.aff-quais__bullet{ + width:14px; + height:14px; + background: #bbd258; /* yellow bullet */ + border-radius:50%; + display:inline-block; + box-shadow: 0 0 0 4px rgba(240,227,79,0.06) inset; +} +.aff-quais__stop--active{ + background: rgba(155,123,224,0.15); + border-radius:6px; +} +.aff-quais__stop--active .aff-quais__bullet{ + background:#9b7be0; /* purple for final */ +} +.aff-quais__stop-text{ + flex:1; + padding-left:6px; +} + +/* --- STRICT STYLES FOR RIGHT PANEL --- */ + +.aff-quais__right--strict { + flex: 1; + /* use arrivals green gradient */ + background: linear-gradient(180deg, var(--green) -100%, var(--green-dark) 100%); + display: flex; + align-items: flex-start; + justify-content: flex-start; + padding: 48px 0 48px 0; + min-width: 0; + /* leave space for footer */ + height: calc(100vh - 86px); + box-sizing: border-box; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + box-shadow: none; + position: relative; /* anchor for the stops rail */ +} + +.aff-quais__stops-list--strict { + list-style: none; + margin: 0; + /* variables pour contrôler la colonne de pastilles */ + --rail-gap: 72px; /* espacement vertical entre pastilles (ajuster si nécessaire) */ + --rail-offset: 24px; /* décalage vertical initial pour aligner la première pastille */ + --rail-left: 28px; /* position X du rail inside right panel */ + --rail-width: 12px; /* largeur du rail/pastille */ + --ul-padding: 56px; /* padding-left actuel de la liste */ + /* laisser un espace modéré à gauche pour la colonne de points */ + padding: 0 0 0 var(--ul-padding); + width: 100%; + max-width: 600px; + position: relative; +} + +/* élément rail explicite (utilisé pour afficher la colonne de pastilles) */ +.aff-quais__stops-rail{ + position: absolute; + /* position relative to the right panel container */ + left: calc(var(--rail-left) - 8px); + top: 0; + bottom: 0; + /* make rail clearly visible and wide enough */ + width: 30px; + z-index: 2; + pointer-events: none; + /* base color: same as destination rectangle */ + background-color: rgba(255,255,255,0.06); + overflow: visible; +} + +.aff-quais__rail-dot{ + display: block; + position: absolute; + left: 50%; + transform: translate(-50%, -50%); + /* size is set dynamically from JS to match rail width */ + width: auto; + height: auto; + border-radius: 50%; + background: var(--accent-yellow); + box-shadow: 0 0 0 4px rgba(255,230,102,0.06) inset; +} + +.aff-quais__stop--strict { + display: flex; + align-items: center; + /* agrandi de 150% */ + font-size: calc(2.1rem * 1.5); + color: #fff; + font-family: 'Achemine', 'Helvetica Neue', Arial, sans-serif; + font-weight: 400; + /* espacement augmenté entre les noms des gares */ + margin-bottom: 18px; + line-height: 1.18; + padding: 0 0 0 0; + position: relative; /* each li is positioned so its ::before aligns with the rail */ +} + +.aff-quais__stop-bullet--strict { + /* bullets individuels masqués : on utilise une barre verticale */ + display: none; +} + +/* pastille positionnée pour chaque item, alignée sur la colonne (rail) */ +.aff-quais__stop--strict::before{ + /* disable per-item pseudo pastille — rail handles the dots */ + display: none; +} + +/* barre verticale de points jaunes pour la liste des gares */ +/* removed ::before — using explicit .aff-quais__stops-rail element instead */ + +.aff-quais__stop-text--strict{ /* ensure text doesn't overlap the rail */ + padding-left: 6px; +} + +.aff-quais__status--alert{ + color: #ffe600; + font-weight: 800; +} + +.aff-quais__stop-text--strict { + display: inline-block; + font-size: inherit; + font-weight: inherit; + color: inherit; +} + +.aff-quais__stop--strict-dest { + font-weight: 800; + background: rgba(255,255,255,0.08); + color: var(--green-dark); + border-radius: 6px; + padding: 2px 32px 2px 0; + margin-left: -45px; + width: auto; + + padding-left: 45px; +} + +/* Ensure the highlighted destination stop text is white for readability */ +.aff-quais__stop--strict-dest .aff-quais__stop-text--strict { + color: #ffffff !important; +} + +.aff-quais__container--strict.aff-quais__container--arrivees { + display: flex; + flex-direction: row; + width: 100vw; + height: 100vh; + min-height: 0; + min-width: 0; + background: var(--green-dark); + box-sizing: border-box; + overflow: hidden; + /* make container positioned so the absolute footer can be placed relative to it */ + position: relative; +} + +.aff-quais__separator--strict { + width: 14px; + min-width: 14px; + max-width: 14px; + background: var(--green-dark); + /* align separator with the panels which leave room for footer */ + height: calc(100vh - 86px); + display: block; + z-index: 2; +} + +@media (max-width: 900px) { + .aff-quais__right--strict { + padding: 18px 0 18px 0; + } + /* moins d'espace en haut sur petits écrans */ + .aff-quais__left--strict { padding-top: 80px; } + .aff-quais__stops-list--strict { + padding-left: 12px; + } + .aff-quais__stop--strict { + font-size: 1.1rem; + } + .aff-quais__stop-bullet--strict { + width: 8px; + height: 8px; + margin-right: 8px; + } + .aff-quais__stop--strict-dest { + padding: 1px 6px 1px 0; + border-radius: 4px; + } +} + +/* --- END STRICT STYLES FOR RIGHT PANEL --- */ + +.aff-quais__footer{ + position:absolute; + left:0; + right:0; + bottom:0; + height:86px; + pointer-events:none; +} +.aff-quais__footer-inner{ + display:flex; + justify-content:space-between; + align-items:center; + height:100%; + padding: 0 28px; + background: linear-gradient(to bottom, rgba(0,0,0,0.15), rgba(0,0,0,0.25)); +} +.aff-quais__footer-left{ + color:#fff; + font-weight:700; + font-size:20px; +} +/* CLOCK BOX - unified */ +.aff-quais__clock-box{ + background: var(--green-dark); + color:#fff; + padding: 6px 12px; + border-radius: 6px; + border: 4px solid #ffffff; +} +.aff-quais__clock-main{ + font-size:18px; + font-weight:800; +} + +/* position the clock bottom-right inside a small white rounded box like on the image */ +.aff-quais__footer-right{ + position:relative; +} +.aff-quais__clock{ + position:relative; +} +@media (max-width: 900px){ + .aff-quais__left{width:42%;} + .aff-quais__destination-line1{font-size:36px} + .aff-quais__destination-line2{font-size:28px} + .aff-quais__time{font-size:48px} +} + + diff --git a/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js b/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js new file mode 100644 index 0000000..a1d9850 --- /dev/null +++ b/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js @@ -0,0 +1,871 @@ +import React, { useEffect, useState, useRef, useCallback } from 'react'; +import './ClassiquesArriveesQuais.css'; +import '../ClassiquesArrivees.css'; + +/* + ClassiquesArriveesQuais.js + Variante "Arrivées - quais" du composant quais. + + Différences principales avec la version départs: + - utilise `heure_arrivee` / `gare_arrivee_*` lorsque disponible pour afficher l'heure et la destination + - watermark affiché: "arrivée" + - styles importés depuis `ClassiquesArriveesQuais.css` qui reprend la palette de `ClassiquesArrivees.css` + + Champs utilisés pour le calcul/affichage: + - horaire.heure_arrivee, horaire.time, horaire.heure + - horaire.gare_arrivee_nom, horaire.gare_arrivee + - stop.heure_arrivee, stop.gare_nom, stop.gare_id + - perturbations: mêmes clés que pour les départs (retard, retard_minutes, perturbations_arrets, etc.) +*/ +import supabase from '../../../../lib/supabase'; + +// Hook pour récupérer la map des logos depuis /type/data.json +function useTypeLogos(){ + const [map, setMap] = useState({ default: '/type/quais/logo-sncf-color.svg' }); + useEffect(() => { + let mounted = true; + + const load = async () => { + const candidates = ['/type/quais/data-color.json', '/type/data.json']; + for(const url of candidates){ + try{ + const res = await fetch(url); + if(!res.ok) continue; + const data = await res.json(); + if(!mounted) return; + const logos = {}; + if(Array.isArray(data.logos)){ + data.logos.forEach(item => { + // item.file is expected (ex: logo-tgv.svg). If absent, try to extract from path + let file = item.file; + if(!file && item.path){ + const parts = String(item.path).split('/'); + file = parts[parts.length-1]; + } + if(!file) return; + const basename = file.replace(/\.[^/.]+$/, ''); + const semantic = basename.replace(/^logo-/, ''); + const key = semantic.toUpperCase().replace(/[^A-Z0-9]+/g, '-'); + // Prefer color logos in the 'quais' subfolder if data came from the quais file + if(url.includes('/quais/')){ + logos[key] = `/type/quais/${file}`; + } else { + logos[key] = `/type/${file}`; + } + }); + } + logos.default = logos['SNCF-VOYAGEURS-LOGO'] || logos['SNFC-VOYAGEURS-LOGO'] || logos['SNCF'] || '/type/sncf-voyageurs-logo.png'; + setMap(logos); + return; + }catch(e){ + // try next candidate (ignore error and continue loop) + } + } + // no candidate succeeded — keep fallback + }; + + load(); + return () => { mounted = false; }; + }, []); + return map; +} + +function getTypeLogo(type, TYPE_LOGOS_MAP){ + const map = TYPE_LOGOS_MAP || { default: '/type/sncf-voyageurs-logo.png' }; + if(!type) return map.default; + const norm = String(type).toUpperCase().replace(/[^A-Z0-9]+/g, '-'); + if(map[norm]) return map[norm]; + const keys = Object.keys(map).filter(k => k !== 'default'); + for(const k of keys){ + if(k.includes(norm) || norm.includes(k)) return map[k]; + } + return map.default; +} + +function Clock() { + const [now, setNow] = useState(new Date()); + useEffect(() => { + const id = setInterval(() => setNow(new Date()), 1000); + return () => clearInterval(id); + }, []); + const hh = String(now.getHours()).padStart(2,'0'); + const mm = String(now.getMinutes()).padStart(2,'0'); + const ss = String(now.getSeconds()).padStart(2,'0'); + return ( +
+
{hh}:{mm}:{ss}
+
+ ); +} + +export default function ClassiquesArriveesQuais(){ + const typeLogos = useTypeLogos(); + + const rightRef = useRef(null); + const stopsListRef = useRef(null); + const railRef = useRef(null); + + // fallback mock strict (utilisé uniquement si aucune donnée réelle n'est trouvée) + const mock = { + time: '16h44', + status: "à l'heure", + trainType: 'Fluo', + trainNumber: '891811', + destinationBig: 'Seurre', + destinationStation: '', + stops: [ + 'Ouges','Saulon','Longecourt','Aiserey','Brazey-en-Plaine','Saint-Jean-de-Losne','Chaugey','Pagny','Seurre','Mervans','Louhans','Saint-Amour','Bourg-en-Bresse' + ], + }; + + // état pour l'horaire sélectionné + const [selectedHoraire, setSelectedHoraire] = useState(null); + const [loadingHoraire, setLoadingHoraire] = useState(false); + const [horaireError, setHoraireError] = useState(null); + const [candidatesCount, setCandidatesCount] = useState(0); + // perturbations/travaux (récupérées depuis Supabase) + const [perturbations, setPerturbations] = useState([]); + const [, setTravaux] = useState([]); + + // helpers locaux (simples) — similaires à ceux du composant principal + const normalizeName = useCallback((s) => { + if (!s) return ''; + try { return String(s).normalize('NFD').replace(/\p{M}/gu,'').toLowerCase().trim().replace(/[-_]+/g,' ').replace(/\s+/g,' '); } catch (e) { return String(s).toLowerCase().trim(); } + }, []); + + const parseTimeHM = useCallback((s) => { + if (!s) return null; + if (typeof s === 'number') return s; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }, []); + + const formatTimeNoSeconds = useCallback((v) => { + if (v == null) return ''; + const tryDate = new Date(v); + if (!isNaN(tryDate.getTime())) { + const hh = String(tryDate.getHours()).padStart(2,'0'); + const mm = String(tryDate.getMinutes()).padStart(2,'0'); + return `${hh}h${mm}`; + } + if (typeof v === 'string') { + const m = v.match(/(\d{1,2}):(\d{2})(?::\d{2})?/); + if (m) return `${String(m[1]).padStart(2,'0')}h${m[2]}`; + const m2 = v.match(/T(\d{2}):(\d{2})/); + if (m2) return `${m2[1]}h${m2[2]}`; + return v.slice(0,5).replace(':','h'); + } + return String(v).slice(0,5).replace(':','h'); + }, []); + + // ...existing code... + + const formatTimeFromHM = useCallback((totalMinutes) => { + if (typeof totalMinutes !== 'number' || isNaN(totalMinutes)) return ''; + const m = ((totalMinutes % 1440) + 1440) % 1440; + const hh = String(Math.floor(m / 60)).padStart(2, '0'); + const mm = String(m % 60).padStart(2, '0'); + return `${hh}h${mm}`; + }, []); + + // lecture des query params pour gare & quai + const paramsForThis = new URLSearchParams(window.location.search || ''); + const gareParam = paramsForThis.get('gare'); + const gareIdParam = paramsForThis.get('gare_id') || paramsForThis.get('gareId'); + const quaiParam = paramsForThis.get('quai'); + const debugEnabled = (paramsForThis.get('debug') === '1' || String(paramsForThis.get('debug')).toLowerCase() === 'true'); + const gareDisplayParam = gareParam ? decodeURIComponent(String(gareParam).replace(/\+/g,' ')).replace(/-/g,' ') : null; + + // helper: obtenir la liste d'arrêts d'un horaire (supporte plusieurs noms de champs) + const getStops = (h) => { + if (!h) return []; + if (Array.isArray(h.stops) && h.stops.length) return h.stops; + if (Array.isArray(h.gares_desservies) && h.gares_desservies.length) return h.gares_desservies; + if (Array.isArray(h.garesDesservies) && h.garesDesservies.length) return h.garesDesservies; + if (Array.isArray(h.arrets) && h.arrets.length) return h.arrets; + const candidates = ['stops','gares_desservies','garesDesservies','gares_desservies_json','arrets','gares_desservies_json']; + for (const key of candidates) { + const raw = h[key]; + if (!raw) continue; + if (Array.isArray(raw)) return raw; + if (typeof raw === 'string') { + try { const parsed = JSON.parse(raw); if (Array.isArray(parsed)) return parsed; } catch (e) { /* ignore */ } + } + } + return []; + }; + + // --- Helpers pour perturbations (copiées/adaptées depuis ClassiquesDeparts) --- + const safeParseArrets = (p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return []; + if (Array.isArray(raw)) return raw; + try { + const parsed = JSON.parse(raw); + if (parsed && typeof parsed === 'object') { + if (Array.isArray(parsed.arrets)) return parsed.arrets; + return parsed; + } + return []; + } catch (e) { return []; } + }; + + const parsePerturbArretsObject = (p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return { arrets: [], jours: null }; + if (typeof raw === 'object') { + if (Array.isArray(raw.arrets)) return { arrets: raw.arrets, jours: raw.jours_perturbation || raw.jours || null }; + if (Array.isArray(raw)) return { arrets: raw, jours: null }; + return { arrets: [], jours: null }; + } + try { + const parsed = JSON.parse(raw); + if (parsed && typeof parsed === 'object') { + return { arrets: Array.isArray(parsed.arrets) ? parsed.arrets : (Array.isArray(parsed) ? parsed : []), jours: parsed.jours_perturbation || parsed.jours || null }; + } + return { arrets: [], jours: null }; + } catch (e) { + return { arrets: [], jours: null }; + } + }; + + const getPerturbationJours = useCallback((p) => { + if (!p) return null; + const candidate = p.jours_perturbation || p.jours || null; + const result = new Set(); + const pushDate = (d) => { + if (!d) return; + try { const dd = new Date(d); if (!isNaN(dd.getTime())) result.add(dd.toISOString().slice(0,10)); } catch(e){} + }; + if (candidate) { + if (Array.isArray(candidate)) candidate.forEach(item => pushDate(item.date || item)); + else if (typeof candidate === 'string') { + try { const parsed = JSON.parse(candidate); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } + catch (e) { pushDate(candidate); } + } else if (typeof candidate === 'object') { if (Array.isArray(candidate)) candidate.forEach(it => pushDate(it.date || it)); else pushDate(candidate.date || null); } + } + try { + const parsedObj = parsePerturbArretsObject(p); + const jp = parsedObj.jours; + if (jp) { + if (Array.isArray(jp)) jp.forEach(it => pushDate(it.date || it)); + else if (typeof jp === 'string') { + try { const parsed = JSON.parse(jp); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } catch (e) { pushDate(jp); } + } else if (typeof jp === 'object') pushDate(jp.date || null); + } + } catch (e) {} + return result.size ? result : null; + }, [parsePerturbArretsObject]); + + const parseDelayMinutesFromArret = (arret) => { + if (!arret) return null; + const keys = ['retard_minutes','retard','delay_minutes','delay','retard_min']; + for (const k of keys) { + if (typeof arret[k] !== 'undefined' && arret[k] !== null && arret[k] !== '') { + const n = Number(arret[k]); if (!isNaN(n)) return Math.round(n); + } + } + return null; + }; + + const buildPerturbMap = useCallback((list = []) => { + const idx = { byHoraire: {}, byNumber: {}, byStopId: {}, byStopName: {}, global: [] }; + (list || []).forEach(p => { + const horaireId = p.horaire_id || p.horaire || p.horaireId || p.horaireID; + if (horaireId != null) { const k = String(horaireId); idx.byHoraire[k] = idx.byHoraire[k] || []; idx.byHoraire[k].push(p); } + const number = p.number || p.train_number || p.train || p.numero || p.numero_train; + if (number != null) { const kn = String(number); idx.byNumber[kn] = idx.byNumber[kn] || []; idx.byNumber[kn].push(p); } + const arrets = safeParseArrets(p); + if (Array.isArray(arrets) && arrets.length) { + arrets.forEach(a => { + const stopId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code_uic || a.gare_uic || a.code; + const stopName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + if (stopId != null) { const ks = String(stopId); idx.byStopId[ks] = idx.byStopId[ks] || []; idx.byStopId[ks].push({ perturbation: p, arret: a }); } + if (stopName) { const key = normalizeName(stopName); idx.byStopName[key] = idx.byStopName[key] || []; idx.byStopName[key].push({ perturbation: p, arret: a }); } + }); + } + if ((horaireId == null && number == null && (!Array.isArray(arrets) || !arrets.length))) { idx.global.push(p); } + }); + return idx; + }, [normalizeName]); + + const findPerturbsForHoraireAndStop = (horaire, stationId, stationName, idx) => { + const res = []; + const map = idx || buildPerturbMap(perturbations || []); + const hId = horaire && (horaire.id || horaire.horaire_id || horaire.numero || horaire.numero_train); + const number = horaire && (horaire.numero_train || horaire.number || horaire.numero || horaire.train_number); + if (hId != null) { const kh = String(hId); if (map.byHoraire && map.byHoraire[kh]) res.push(...map.byHoraire[kh]); } + if (number != null) { const kn = String(number); if (map.byNumber && map.byNumber[kn]) res.push(...map.byNumber[kn]); } + if (stationId != null) { const ks = String(stationId); if (map.byStopId && map.byStopId[ks]) map.byStopId[ks].forEach(x => res.push(x.perturbation)); } + if (stationName && map.byStopName) { + const key = normalizeName(stationName); + if (map.byStopName[key]) map.byStopName[key].forEach(x => res.push(x.perturbation)); + try { + const needle = key; + for (const existingKey of Object.keys(map.byStopName || {})) { + if (existingKey === needle) continue; + if (existingKey.includes(needle) || needle.includes(existingKey)) { map.byStopName[existingKey].forEach(x => res.push(x.perturbation)); } + } + } catch (e) {} + } + return Array.from(new Set(res)); + }; + + const computeStatusForHoraireAtStop = useCallback((horaire, stationId, stationName, idx, serviceDate = null) => { + const found = findPerturbsForHoraireAndStop(horaire, stationId, stationName, idx) || []; + const toYMD = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return d.toISOString().slice(0,10); }; + let horaireYmd = toYMD(horaire && (horaire._date || horaire.date || horaire.date_service || horaire.service_date)); + if (!horaireYmd && serviceDate) horaireYmd = serviceDate; + let maxDelay = null; + for (const p of found) { + try { + if (horaireYmd) { + const pDate = toYMD(p.date || p.date_service || p.start_date || p.date_debut); + const db = toYMD(p.date_debut || p.start_date); + const df = toYMD(p.date_fin || p.end_date); + if (pDate && pDate !== horaireYmd) continue; + if (db && df && !(horaireYmd >= db && horaireYmd <= df)) continue; + } + } catch (e) {} + try { + const joursSet = getPerturbationJours(p); + if (joursSet && horaireYmd) { if (!joursSet.has(horaireYmd)) continue; } + } catch (e) {} + const parsedObj = parsePerturbArretsObject(p) || { arrets: [], jours: null }; + const arrets = parsedObj.arrets || []; + let matched = false; + for (const a of arrets) { + const aId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code; + const aName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + const na = normalizeName(aName || ''); + const ns = normalizeName(stationName || ''); + const nameMatches = stationName && (na === ns || na.includes(ns) || ns.includes(na)); + if ((stationId != null && String(aId) === String(stationId)) || nameMatches) { + matched = true; + const t = (a.type_perturbation || a.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(a) || parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + if (!matched) { + const ref = p.horaire_id || p.horaire || p.horaireId || p.numero_train || p.train_number || p.numero; + const numberRef = p.number || p.train_number || p.numero || p.numero_train; + const appliesByRef = ref && (String(ref) === String(horaire.id) || String(ref) === String(horaire.numero_train) || String(ref) === String(horaire.numero)); + const appliesByNumber = numberRef && (String(numberRef) === String(horaire.numero_train) || String(numberRef) === String(horaire.numero) || String(numberRef) === String(horaire.number)); + const isGlobal = (!Array.isArray(arrets) || arrets.length === 0) && !ref && !numberRef; + if (appliesByRef || appliesByNumber || isGlobal) { + const t = (p.type_perturbation || p.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + } + if (maxDelay != null) return { label: `retardé +${maxDelay}min.`, detail: '', delayMinutes: maxDelay }; + return { label: "à l'heure", detail: '', delayMinutes: null }; + }, [findPerturbsForHoraireAndStop, parseDelayMinutesFromArret, getPerturbationJours]); + + // Fetch perturbations & travaux from Supabase periodically + useEffect(() => { + let mounted = true; + let inFlight = false; + const fetchPerturb = async () => { + if (!mounted) return; + if (inFlight) return; + inFlight = true; + try { + if (!supabase) return; + const [{ data: perturbData, error: pError }, { data: travauxData, error: tError }] = await Promise.all([ + supabase.from('perturbations').select('*'), + supabase.from('travaux').select('*') + ]); + if (!mounted) return; + if (pError || tError) { + // ignore quietly — keep previous data + } else { + // Filtrer les perturbations pour ne conserver que celles valides aujourd'hui + const todayYmd = new Date().toLocaleDateString('en-CA'); + const filteredPerturb = (perturbData || []).filter(p => { + try { + const toYMD = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return d.toISOString().slice(0,10); }; + const pDate = toYMD(p.date || p.date_service || p.start_date || p.date_debut); + const db = toYMD(p.date_debut || p.start_date); + const df = toYMD(p.date_fin || p.end_date); + if (pDate && pDate !== todayYmd) return false; + if (db && df && !(todayYmd >= db && todayYmd <= df)) return false; + try { const joursSet = getPerturbationJours(p); if (joursSet && !joursSet.has(todayYmd)) return false; } catch (e) {} + return true; + } catch (e) { return true; } + }); + setPerturbations(filteredPerturb || []); + setTravaux(travauxData || []); + } + } catch (e) { + // ignore + } finally { + inFlight = false; + } + }; + fetchPerturb(); + const id = setInterval(fetchPerturb, 15000); + return () => { mounted = false; clearInterval(id); }; + }, []); + + // Annotate selectedHoraire with computed status when perturbations change + useEffect(() => { + if (!selectedHoraire || !selectedHoraire.horaire) return; + const horaire = selectedHoraire.horaire; + const stop = selectedHoraire.stop || null; + const stationId = stop ? (stop.gare_id || stop.gareId || stop.id || stop.stop_id || stop.stopId) : null; + const stationName = stop ? (typeof stop === 'string' ? stop : (stop.gare_nom || stop.nom || stop.name || stop.stop_name || '')) : null; + try { + const map = buildPerturbMap(perturbations || []); + const status = computeStatusForHoraireAtStop(horaire, stationId, stationName, map, null); + // keep original scheduled time for display (_displayTime) + const originalBase = parseTimeHM(selectedHoraire.rawTime || horaire.heure_depart || horaire.time || horaire.heure); + const displayTimeOriginal = (typeof originalBase === 'number') ? formatTimeFromHM(originalBase) : (selectedHoraire.rawTime ? formatTimeNoSeconds(selectedHoraire.rawTime) : (horaire.heure_depart || horaire.time || horaire.heure ? formatTimeNoSeconds(horaire.heure_depart || horaire.time || horaire.heure) : null)); + // compute updated time (delayed) but store separately — do not override the original displayed time + let updatedTime = null; + if (status && typeof status.delayMinutes === 'number' && !Number.isNaN(status.delayMinutes) && typeof originalBase === 'number') { + updatedTime = formatTimeFromHM(originalBase + status.delayMinutes); + } + setSelectedHoraire(prev => ({ ...(prev||{}), horaire: { ...(prev && prev.horaire ? prev.horaire : {}), _status: status }, _displayTime: displayTimeOriginal, _updatedTime: updatedTime })); + } catch (e) { /* ignore */ } + }, [selectedHoraire, perturbations, buildPerturbMap, computeStatusForHoraireAtStop, parseTimeHM, formatTimeFromHM, formatTimeNoSeconds]); + + // récupérer depuis Supabase le prochain départ correspondant au couple (gare, quai) + useEffect(() => { + let mounted = true; + async function loadNextForQuai() { + setLoadingHoraire(true); + setHoraireError(null); + setSelectedHoraire(null); + if (!supabase) { + setHoraireError('Supabase non initialisé'); + setLoadingHoraire(false); + return; + } + try { + const { data: all, error } = await supabase.from('horaires').select('id, *'); + if (error) { + if (mounted) setHoraireError(error.message || String(error)); + setLoadingHoraire(false); + return; + } + if (!mounted) return; + if (!Array.isArray(all) || all.length === 0) { + setLoadingHoraire(false); + return; + } + + const normalizedTarget = gareDisplayParam ? normalizeName(gareDisplayParam) : null; + const targetQuai = quaiParam ? String(quaiParam).toLowerCase().replace(/\s+/g,'') : null; + + const now = new Date(); + const nowHM = now.getHours()*60 + now.getMinutes(); + + const candidates = []; + + for (const h of all) { + if (!h) continue; + // build stops list (support multiple field names) + const stops = getStops(h); + + // compute max index for terminus detection if stops contain index + let maxIdx = null; + if (Array.isArray(stops) && stops.length) { + for (const st of stops) { + if (typeof st.index !== 'undefined' && st.index !== null) { + const n = Number(st.index); + if (!Number.isNaN(n)) maxIdx = maxIdx == null ? n : Math.max(maxIdx, n); + } + } + } + + // Match stop by name or id (prefer stop entry over horaire-level arrival) + let stopMatch = null; + if (Array.isArray(stops) && stops.length) { + // first try to match by id if gareIdParam present + if (gareIdParam) { + const gid = String(gareIdParam); + for (const s of stops) { + const sid = s && (s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null); + if (sid != null && String(sid) === gid) { stopMatch = s; break; } + } + } + // then try to match by normalized name + if (!stopMatch && normalizedTarget) { + for (const s of stops) { + const rawName = (typeof s === 'string') ? s : (s.gare_nom || s.nom || s.name || s.stop_name || s.station || s.station_name || ''); + const nm = normalizeName(rawName); + if (!nm) continue; + if (nm === normalizedTarget || nm.includes(normalizedTarget) || normalizedTarget.includes(nm)) { stopMatch = s; break; } + } + } + } + + // if no stopMatch found in stops, check horaire-level gare_arrivee (arrival terminus) + if (!stopMatch) { + const arriveeName = normalizeName(h.gare_arrivee_nom || h.gare_arrivee || ''); + if (arriveeName && normalizedTarget && (arriveeName === normalizedTarget || arriveeName.includes(normalizedTarget) || normalizedTarget.includes(arriveeName))) { + stopMatch = { heure_arrivee: h.heure_arrivee || h.time || h.heure, gare_nom: h.gare_arrivee_nom || h.gare_arrivee, gare_id: h.gare_arrivee_id || h.gare_arrivee }; + } + } + + if (!stopMatch) continue; // does not arrive at the targeted station + + // determine platform/quai for this stop/horaire + const platform = (stopMatch && (stopMatch.quai || stopMatch.platform || stopMatch.quay)) || h.platform || h.quai || ''; + const normPlatform = String(platform || '').toLowerCase().replace(/\s+/g,''); + // Only include horaires that have a platform/quai for the displayed station + if (!normPlatform) continue; + if (targetQuai) { + if (!(normPlatform === targetQuai || normPlatform.includes(targetQuai) || targetQuai.includes(normPlatform))) continue; + } + + // ensure we have an arrival time + const stopIsObject = stopMatch && typeof stopMatch === 'object'; + const hasArrival = stopIsObject && ( + typeof stopMatch.heure_arrivee !== 'undefined' || typeof stopMatch.arrival_time !== 'undefined' || typeof stopMatch.arrivee !== 'undefined' || typeof stopMatch.arrival !== 'undefined' || typeof stopMatch.time !== 'undefined' + ); + if (stopIsObject && !hasArrival) continue; + + // pick time (arrival) from stopMatch or fallback to horaire-level arrival + const rawTime = (hasArrival ? (stopMatch.heure_arrivee || stopMatch.time || stopMatch.heure || stopMatch.arrival_time || stopMatch.arrival) : (h.heure_arrivee || h.time || h.heure || h.arrival_time || h.arrivee)); + const depHM = parseTimeHM(rawTime); + if (depHM == null) continue; + + // compute minutes until arrival (allow next-day wrap) + let minutesUntil = depHM - nowHM; + if (minutesUntil < 0) minutesUntil = depHM + 24*60 - nowHM; + + candidates.push({ horaire: h, stop: stopMatch, depHM, minutesUntil, rawTime }); + } + + if (!candidates.length) { + setCandidatesCount(0); + setLoadingHoraire(false); + setSelectedHoraire(null); + return; + } + + // split into today (depHM > nowHM) and tomorrow (depHM <= nowHM) + const todayCandidates = candidates.filter(c => c.depHM > nowHM).sort((a,b) => a.depHM - b.depHM); + const tomorrowCandidates = candidates.filter(c => c.depHM <= nowHM).sort((a,b) => a.depHM - b.depHM); + + let chosen = null; + if (todayCandidates.length > 0) chosen = todayCandidates[0]; + else if (tomorrowCandidates.length > 0) chosen = tomorrowCandidates[0]; + + if (mounted) { + setCandidatesCount(candidates.length); + setSelectedHoraire(chosen || null); + } + } catch (err) { + console.error('Erreur supabase quai', err); + if (mounted) setHoraireError(err.message || String(err)); + } finally { + if (mounted) setLoadingHoraire(false); + } + } + + loadNextForQuai(); + return () => { mounted = false; }; + }, [gareDisplayParam, gareIdParam, quaiParam, parseTimeHM]); + + // toggle flag to alternate time/status when needed (observe selectedHoraire.status when present) + const [showTime, setShowTime] = useState(true); + // derive a simple status label string to use in the dependency array (avoids complex expressions) + const _selectedStatusLabel = (() => { + const horaireObj = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const computedLabel = horaireObj && horaireObj._status && horaireObj._status.label ? String(horaireObj._status.label) : null; + const rawStatus = horaireObj && horaireObj.status ? (typeof horaireObj.status === 'string' ? horaireObj.status : (horaireObj.status && horaireObj.status.label ? String(horaireObj.status.label) : null)) : null; + return String(computedLabel || rawStatus || mock.status || '').toLowerCase(); + })(); + + useEffect(()=>{ + let id = null; + if (/retard|supprim/.test(_selectedStatusLabel)) { + // ensure we start by showing the time + setShowTime(true); + id = setInterval(() => setShowTime(prev => !prev), 3000); + } else { + setShowTime(true); + } + return () => { if (id) clearInterval(id); }; + }, [_selectedStatusLabel, mock.status]); + + // compute and position the rail so it covers from first stop center to last stop center + useEffect(() => { + function updateRail(){ + const rail = railRef.current; + const list = stopsListRef.current; + const right = rightRef.current; + if(!rail || !list || !right) return; + const items = Array.from(list.querySelectorAll('li')); + if(items.length === 0) return; + const first = items[0]; + // find destination (last with dest class) or fallback to last item + const last = items.find(el => el.classList.contains('aff-quais__stop--strict-dest')) || items[items.length-1]; + + const rightRect = right.getBoundingClientRect(); + const firstRect = first.getBoundingClientRect(); + const lastRect = last.getBoundingClientRect(); + + const firstCenterY = firstRect.top + firstRect.height/4 - rightRect.top; + const lastCenterY = lastRect.top + lastRect.height/2 - rightRect.top; + + // add small padding so rail extends a bit beyond centers + const pad = 9; + const top = Math.max(0, firstCenterY - pad); + const height = Math.max(8, (lastCenterY - firstCenterY) + pad*2); + + // compute horizontal position so dots are centered next to the text + const firstText = first.querySelector('.aff-quais__stop-text--strict') || first.querySelector('.aff-quais__stop-text'); + const textRect = firstText ? firstText.getBoundingClientRect() : firstRect; + const centerX = (textRect.left - rightRect.left) - 28; // place rail left of text by ~20px + const railWidth = 35; + const left = centerX - railWidth/2; + + // apply styles for the rail rectangle + rail.style.top = `${Math.round(top)}px`; + rail.style.height = `${Math.round(height)}px`; + rail.style.left = `${Math.round(left)}px`; + rail.style.width = `${railWidth}px`; + // remove background-image reliance and render individual dots as DOM children + // clear existing dots + while (rail.firstChild) rail.removeChild(rail.firstChild); + + // create a dot element for each item and position it exactly at the item's vertical center + const railWidthComputed = parseInt(rail.style.width, 8) || railWidth; + items.forEach(it => { + const r = it.getBoundingClientRect(); + const centerY = r.top + r.height/2 - (rightRect.top + top); + const dot = document.createElement('span'); + dot.className = 'aff-quais__rail-dot'; + dot.style.position = 'absolute'; + dot.style.left = '50%'; + dot.style.transform = 'translate(-50%, -50%)'; + dot.style.top = `${Math.round(centerY)}px`; + // set dot diameter to rail width + dot.style.width = `${railWidthComputed}px`; + dot.style.height = `${railWidthComputed}px`; + dot.style.borderRadius = '50%'; + dot.style.background = '#ffe600'; + dot.style.boxShadow = '0 0 0 4px rgba(255,230,102,0.06) inset'; + rail.appendChild(dot); + }); + } + + updateRail(); + window.addEventListener('resize', updateRail); + const obs = new MutationObserver(updateRail); + const listNode = stopsListRef.current; + if(listNode) obs.observe(listNode, { childList:true, subtree:true }); + return ()=>{ + window.removeEventListener('resize', updateRail); + if(obs) obs.disconnect(); + }; + }, [selectedHoraire]); + // Observer changement des stops via selectedHoraire + // Re-run rail effect lorsque selectedHoraire change (les stops affichés changent) + + const displayTimeOrStatus = () => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const statusStrFromField = horaire ? (horaire.status || mock.status) : mock.status; + const statusObj = horaire && horaire._status ? horaire._status : null; + // prefer precomputed _displayTime if available + const time = selectedHoraire && selectedHoraire._displayTime ? selectedHoraire._displayTime : (horaire ? formatTimeNoSeconds(selectedHoraire.rawTime || horaire.heure_depart || horaire.time || horaire.heure) : mock.time); + + // build canonical status label when we have computed status object + let canonicalStatus = null; + if (statusObj) { + if (typeof statusObj.delayMinutes === 'number' && !Number.isNaN(statusObj.delayMinutes)) { + canonicalStatus = `retardé +${Math.round(statusObj.delayMinutes)} min.`; + } else if (statusObj.label && String(statusObj.label).toLowerCase().includes('supprim')) { + canonicalStatus = 'supprimé'; + } else if (statusObj.label) { + canonicalStatus = String(statusObj.label); + } + } + + const s = (canonicalStatus || statusStrFromField || '').toLowerCase(); + const isAlert = s.includes('retard') || s.includes('supprim'); + const label = canonicalStatus || statusStrFromField || ''; + // Always render both time and status inside a fixed-size wrapper to avoid layout shift + return ( + + {time} + {label} + + ); + } + + return ( +
+
+ {/* logo (depuis le type de train) */} + {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const trainType = horaire ? (horaire.trainType || horaire.train_type || horaire.type_train || horaire.op || horaire.operator) : mock.trainType; + return {trainType; + })()} + +
départ
+ {/* affichage des états de chargement / erreur pour debug */} + {horaireError ?
{horaireError}
: null} + {loadingHoraire ?
Chargement...
: null} + {debugEnabled ? ( +
+
Candidates: {candidatesCount}
+ {selectedHoraire ?
{JSON.stringify(selectedHoraire, null, 2)}
: null} +
+ ) : null} + {/* logo du type en haut à droite */} +
+ {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const status = horaire ? (horaire.status || (horaire._status && horaire._status.label) || mock.status) : mock.status; + const time = horaire ? formatTimeNoSeconds(selectedHoraire.rawTime || horaire.heure_depart || horaire.time || horaire.heure) : mock.time; + const isAlert = (status || '').toLowerCase().includes('retard') || (status || '').toLowerCase().includes('supprim'); + if (isAlert) return displayTimeOrStatus(); + return ( + <> + {time} + {status} + + ); + })()} +
+
+ {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const stop = selectedHoraire && selectedHoraire.stop ? selectedHoraire.stop : null; + // For arrivals: show the origin of the train (gare_depart_*) as the main station label + const destinationBig = horaire ? (horaire.gare_depart_nom || horaire.gare_depart || horaire.origin_name || '') : mock.destinationBig; + const rawDestinationStation = stop ? ((typeof stop === 'string') ? stop : (stop.gare_nom || stop.nom || stop.name || stop.stop_name || '')) : (horaire ? (horaire.destination_station || '') : mock.destinationStation); + return ( + <> +
{destinationBig}
+ {(rawDestinationStation && destinationBig && normalizeName(rawDestinationStation) !== normalizeName(destinationBig)) ? (
{rawDestinationStation}
) : null} + + ); + })()} +
+
{(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const trainType = horaire ? (horaire.trainType || horaire.train_type || horaire.type_train || horaire.op || horaire.operator) : mock.trainType; + const trainNumber = horaire ? (horaire.numero_train || horaire.numero || horaire.number || '') : mock.trainNumber; + return (<>{trainType}  {trainNumber}); + })()}
+
+
+
+ {/* barre verticale de points (élément explicite pour fiabilité) */} +
+
    + {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + // utiliser la helper getStops pour supporter plusieurs formats + let stops = horaire ? getStops(horaire) : []; + if (!Array.isArray(stops) || stops.length === 0) { + // fallback parsing si la colonne est une chaîne JSON + if (horaire && typeof horaire.stops === 'string') { + try { const p = JSON.parse(horaire.stops); if (Array.isArray(p)) stops = p; } catch (e) { /* ignore */ } + } + } + if (!Array.isArray(stops) || stops.length === 0) stops = mock.stops || []; + + // construire une liste propre en extrayant un label pour chaque stop + const labeled = stops.map((stop, idx) => { + let label = ''; + if (typeof stop === 'string') label = stop; + else if (stop && typeof stop === 'object') { + // vérifier plusieurs clés possibles + label = stop.gare_nom || stop.nom || stop.name || stop.stop_name || stop.stopName || stop.station_name || stop.station || stop.label || stop.stop || stop.name_gare || (stop.properties && (stop.properties.name || stop.properties.stop_name)) || ''; + // si l'objet possède une clé 'stop' qui est elle-même un objet + if (!label && stop.stop && typeof stop.stop === 'object') { + label = stop.stop.name || stop.stop.stop_name || ''; + } + } + label = String(label || '').trim(); + return { label, original: stop, idx }; + }).filter(it => it.label); + + if (labeled.length === 0) return null; + + // trouver l'index du stop correspondant à la gare demandée (selectedHoraire.stop) + let matchedIndex = -1; + try { + if (selectedHoraire && selectedHoraire.stop) { + const target = selectedHoraire.stop; + const targetName = (typeof target === 'string') ? normalizeName(target) : normalizeName((target.gare_nom || target.nom || target.name || target.stop_name || target.station || '')); + const targetId = (typeof target === 'object') ? (target.gare_id || target.gareId || target.id || target.stop_id || target.stopId || null) : null; + for (let i = 0; i < stops.length; i++) { + const s = stops[i]; + // compare by id first if available + if (targetId != null) { + const sid = (s && typeof s === 'object') ? (s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null) : null; + if (sid != null && String(sid) === String(targetId)) { matchedIndex = i; break; } + } + const name = (typeof s === 'string') ? normalizeName(s) : normalizeName((s && (s.gare_nom || s.nom || s.name || s.stop_name || s.station || '')) || ''); + if (name && targetName && name === targetName) { matchedIndex = i; break; } + } + } + } catch (e) { /* ignore */ } + + // For arrivals: show the stops served BEFORE the display station (i.e. previous stops) + // If we have a matchedIndex, keep only items with idx < matchedIndex. + // Display stops in the reverse direction relative to the route: show the farthest previous stop first + let subsequent = labeled.filter(it => (matchedIndex >= 0) ? (it.idx < matchedIndex) : true); + // sort ascending so the oldest (farthest) previous stop appears first -> reverse of travel direction + subsequent = subsequent.sort((a,b) => a.idx - b.idx); + // Remove consecutive duplicate labels (case-insensitive) to avoid repeated identical station names + if (subsequent.length > 1) { + const collapsed = []; + for (const it of subsequent) { + const prev = collapsed.length ? String(collapsed[collapsed.length-1].label).trim().toLowerCase() : null; + const cur = it.label ? String(it.label).trim().toLowerCase() : ''; + if (cur && prev && prev === cur) { + // skip duplicate consecutive entry + continue; + } + collapsed.push(it); + } + subsequent = collapsed; + } + // si aucun arrêt après (ou pas de match) on peut retourner null ou le fallback; ici on renvoie le fallback si tout échoue + if (subsequent.length === 0) return null; + + return subsequent.map((item, mapIndex) => { + const isLast = item.idx === (stops.length - 1); + return ( +
  • + + {item.label} +
  • + ); + }); + })()} +
+
+ {/* footer band same as classic departures with clock on the right */} +
+
+
+
+
+
+
+ ); +} + + diff --git a/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.css b/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.css new file mode 100644 index 0000000..846a653 --- /dev/null +++ b/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.css @@ -0,0 +1,488 @@ +/* Partie gauche strictement comme l'image */ +.achemine-font-face { + /* helper placeholder (no output) */ +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Achemine'; + src: url('/public/fonts/achemine_bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} +.aff-quais__left--strict { + width: 100%; + max-width: 0; + min-width: 700px; + background: #fff; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + /* Remonter l'ensemble du contenu vers le bas pour laisser la place au logo en haut */ + padding: 140px 32px 24px 32px; + box-sizing: border-box; + position: relative; + /* leave space at bottom for the footer (height 86px) */ + height: calc(100vh - 86px); + overflow: hidden; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + box-shadow: none; +} +.aff-quais__left--strict, +.aff-quais__left--strict * { + font-family: 'Achemine', 'Helvetica Neue', Arial, sans-serif; +} + +/* Apply blue color specifically for departures container only (avoid being overridden by arrivées stylesheet) + Use :not(.aff-quais__container--arrivees) to scope to departures */ +.aff-quais__container--strict:not(.aff-quais__container--arrivees) .aff-quais__left--strict, +.aff-quais__container--strict:not(.aff-quais__container--arrivees) .aff-quais__left--strict * { + color: #0d4a87; +} + +/* Strong override for departures container: ensure destination title isn't black/green due to other styles */ +.aff-quais__container--depart .aff-quais__left--strict, +.aff-quais__container--depart .aff-quais__left--strict * { + color: #0d4a87 !important; +} +.aff-quais__type-logo--strict{ + position: absolute; + top: 18px; + /* positionné à gauche dans la zone blanche (à droite du logo opérateur) */ + /* tout à gauche de la zone blanche */ + left: 32px; + width: 120px; + height: auto; + object-fit: contain; + z-index: 5; + pointer-events: none; +} +.aff-quais__sncf-logo--strict { + width: 86px; + height: auto; + margin-bottom: 18px; + margin-left: 0; + margin-top: 0; + position: absolute; + top: 18px; + /* placé à droite du logo du type */ + left: 140px; + z-index: 4; +} +.aff-quais__watermark { + position: absolute; + /* move watermark further to the right */ + right: -180px; + top: 70%; + transform: translateY(-50%) rotate(-90deg); + /* police agrandie de 200% */ + font-size: 200px; + color: rgba(23,55,113,0.07); + font-weight: 800; + letter-spacing: 6px; + pointer-events: none; + user-select: none; + z-index: 0; +} +.aff-quais__row--time-status { + display: flex; + align-items: flex-end; + gap: 18px; + margin-bottom: 18px; + z-index: 1; +} +.aff-quais__time--strict { + color: #0d4a87; + font-weight: 800; + /* police agrandie de 200% */ + font-size: 112px; + line-height: 1; + letter-spacing: 0.5px; + margin-right: 12px; +} + +/* Wrapper that contains both the big time and the smaller status when alternating. + Keeps the layout width/height stable so alternating does not reflow the surrounding text. */ +.aff-quais__time-status-wrapper { + position: relative; + display: inline-block; /* width is determined by the time element in normal flow */ + height: 112px; /* match .aff-quais__time font-size so status can be aligned at bottom */ + vertical-align: bottom; + overflow: visible; +} + +.aff-quais__time-status-wrapper .aff-quais__time--strict { + position: relative; /* keep in flow to define wrapper width */ + display: block; + top: 0; + left: 0; + transition: opacity 180ms linear; +} + +.aff-quais__time-status-wrapper .aff-quais__time-status--strict { + position: absolute; /* overlay on the same horizontal position */ + left: 0; + right: 0; + bottom: 0; /* align to bottom similar to previous align-self:flex-end */ + transition: opacity 180ms linear; +} + +.aff-quais__time-status-wrapper .hidden { opacity: 0; pointer-events: none; } +.aff-quais__time-status-wrapper .visible { opacity: 1; } +.aff-quais__time-status--strict { + color: #0d4a87; + /* police agrandie de 200% */ + font-size: 44px; + font-weight: 400; + opacity: 1; + align-self: flex-end; + margin-bottom: 14px; +} +.aff-quais__destination--strict { + margin-top: 10px; + margin-bottom: 0; + color: #0d4a87; + z-index: 1; +} +.aff-quais__destination-line1--strict { + /* police agrandie de 200% */ + font-size: 76px; + font-weight: 800; + line-height: 1.1; +} +.aff-quais__destination-line2--strict { + /* police agrandie de 200% */ + font-size: 76px; + font-weight: 800; + line-height: 1.1; +} +.aff-quais__train-id--strict { + margin-top: 12px; + color: #0d4a87; + font-weight: 700; + /* police agrandie de 200% */ + font-size: 44px; + letter-spacing: 0.5px; + z-index: 1; +} +.aff-quais__train-number--strict { + color: #0d4a87; + font-weight: 400; + /* police agrandie de 200% */ + font-size: 44px; +} +.aff-quais__quai{ + margin-top: 8px; + color:#0d4a87; + font-weight:800; + background: rgba(23,55,113,0.08); + padding:6px 10px; + border-radius:6px; + display:inline-block; +} + +/* central divider */ +.aff-quais__divider{ + width:18px; + background: linear-gradient(180deg, rgba(0,0,0,0.12), rgba(255, 255, 255, 0.18)); + display:flex; + justify-content:center; + align-items:flex-start; + padding-top:36px; +} +.aff-quais__divider:before{ + content:''; + width:6px; + background: transparent; + box-shadow: 0 18px 0 0 #f0e34f, 0 54px 0 0 #f0e34f, 0 90px 0 0 #f0e34f, 0 126px 0 0 #f0e34f, 0 162px 0 0 #f0e34f, 0 198px 0 0 #f0e34f; + display:block; + border-radius:4px; +} + +/* Right panel with stops */ +.aff-quais__right{ + flex:1; + background: linear-gradient(180deg,#205aa1 0%, #144b85 100%); + display:flex; + align-items:center; + box-sizing:border-box; + padding: 24px 36px; +} +.aff-quais__stops-box{ + width:100%; + max-width:820px; + margin-left:24px; +} +.aff-quais__stops-list{ + list-style:none; + margin:0; + padding:0; + width:100%; +} +.aff-quais__stop{ + display:flex; + align-items:center; + gap:18px; + padding: 10px 16px; + color:#fff; + font-size:30px; + line-height:1.1; +} +.aff-quais__bullet{ + width:14px; + height:14px; + background: #bbd258; /* yellow bullet */ + border-radius:50%; + display:inline-block; + box-shadow: 0 0 0 4px rgba(240,227,79,0.06) inset; +} +.aff-quais__stop--active{ + background: rgba(155,123,224,0.15); + border-radius:6px; +} +.aff-quais__stop--active .aff-quais__bullet{ + background:#9b7be0; /* purple for final */ +} +.aff-quais__stop-text{ + flex:1; + padding-left:6px; +} + +/* --- STRICT STYLES FOR RIGHT PANEL --- */ + +.aff-quais__right--strict { + flex: 1; + background: #205aa1; /* fond bleu uniforme */ + display: flex; + align-items: flex-start; + justify-content: flex-start; + padding: 48px 0 48px 0; + min-width: 0; + /* leave space for footer */ + height: calc(100vh - 86px); + box-sizing: border-box; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + box-shadow: none; + position: relative; /* anchor for the stops rail */ +} + +.aff-quais__stops-list--strict { + list-style: none; + margin: 0; + /* variables pour contrôler la colonne de pastilles */ + --rail-gap: 72px; /* espacement vertical entre pastilles (ajuster si nécessaire) */ + --rail-offset: 24px; /* décalage vertical initial pour aligner la première pastille */ + --rail-left: 28px; /* position X du rail inside right panel */ + --rail-width: 12px; /* largeur du rail/pastille */ + --ul-padding: 56px; /* padding-left actuel de la liste */ + /* laisser un espace modéré à gauche pour la colonne de points */ + padding: 0 0 0 var(--ul-padding); + width: 100%; + max-width: 600px; + position: relative; +} + +/* élément rail explicite (utilisé pour afficher la colonne de pastilles) */ +.aff-quais__stops-rail{ + position: absolute; + /* position relative to the right panel container */ + left: calc(var(--rail-left) - 8px); + top: 0; + bottom: 0; + /* make rail clearly visible and wide enough */ + width: 30px; + z-index: 2; + pointer-events: none; + /* base color: same as destination rectangle */ + background-color: #b6d2f7; + overflow: visible; +} + +.aff-quais__rail-dot{ + display: block; + position: absolute; + left: 50%; + transform: translate(-50%, -50%); + /* size is set dynamically from JS to match rail width */ + width: auto; + height: auto; + border-radius: 50%; + background: #b9d25a; + box-shadow: 0 0 0 4px rgba(255,230,102,0.06) inset; +} + +.aff-quais__stop--strict { + display: flex; + align-items: center; + /* agrandi de 150% */ + font-size: calc(2.1rem * 1.5); + color: #fff; + font-family: 'Achemine', 'Helvetica Neue', Arial, sans-serif; + font-weight: 400; + /* espacement augmenté entre les noms des gares */ + margin-bottom: 18px; + line-height: 1.18; + padding: 0 0 0 0; + position: relative; /* each li is positioned so its ::before aligns with the rail */ +} + +.aff-quais__stop-bullet--strict { + /* bullets individuels masqués : on utilise une barre verticale */ + display: none; +} + +/* pastille positionnée pour chaque item, alignée sur la colonne (rail) */ +.aff-quais__stop--strict::before{ + /* disable per-item pseudo pastille — rail handles the dots */ + display: none; +} + +/* barre verticale de points jaunes pour la liste des gares */ +/* removed ::before — using explicit .aff-quais__stops-rail element instead */ + +.aff-quais__stop-text--strict{ /* ensure text doesn't overlap the rail */ + padding-left: 6px; +} + +.aff-quais__status--alert{ + color: #ffe600; + font-weight: 800; +} + +.aff-quais__stop-text--strict { + display: inline-block; + font-size: inherit; + font-weight: inherit; + color: inherit; +} + +.aff-quais__stop--strict-dest { + font-weight: 800; + background: #b6d2f7; + color: #205aa1; + border-radius: 6px; + padding: 2px 32px 2px 0; + margin-left: -45px; + width: auto; + + padding-left: 45px; +} + +/* Ensure the highlighted destination stop text is always white for readability */ +.aff-quais__stop--strict-dest .aff-quais__stop-text--strict { + color: #ffffff !important; +} + +.aff-quais__container--strict { + display: flex; + flex-direction: row; + width: 100vw; + height: 100vh; + min-height: 0; + min-width: 0; + /* Palette locale pour l'afficheur départs : évite la palette arrivées importée ailleurs */ + --blue: #205aa1; + --blue-dark: #144b85; + --accent-yellow: #e1c14c; + --white: #ffffff; + --watermark-blue: rgba(23,55,113,0.07); + background: var(--blue); + box-sizing: border-box; + overflow: hidden; + /* make container positioned so the absolute footer can be placed relative to it */ + position: relative; +} + +.aff-quais__separator--strict { + width: 14px; + min-width: 14px; + max-width: 14px; + background: #205aa1; + /* align separator with the panels which leave room for footer */ + height: calc(100vh - 86px); + display: block; + z-index: 2; +} + +@media (max-width: 900px) { + .aff-quais__right--strict { + padding: 18px 0 18px 0; + } + /* moins d'espace en haut sur petits écrans */ + .aff-quais__left--strict { padding-top: 80px; } + .aff-quais__stops-list--strict { + padding-left: 12px; + } + .aff-quais__stop--strict { + font-size: 1.1rem; + } + .aff-quais__stop-bullet--strict { + width: 8px; + height: 8px; + margin-right: 8px; + } + .aff-quais__stop--strict-dest { + padding: 1px 6px 1px 0; + border-radius: 4px; + } +} + +/* --- END STRICT STYLES FOR RIGHT PANEL --- */ + +.aff-quais__footer{ + position:absolute; + left:0; + right:0; + bottom:0; + height:86px; + pointer-events:none; +} +.aff-quais__footer-inner{ + display:flex; + justify-content:space-between; + align-items:center; + height:100%; + padding: 0 28px; + background: linear-gradient(to bottom, rgba(0,0,0,0.15), rgba(0,0,0,0.25)); +} +.aff-quais__footer-left{ + color:#fff; + font-weight:700; + font-size:20px; +} +/* CLOCK BOX - unified */ +.aff-quais__clock-box{ + background: rgba(23,55,113,0.9); + color:#fff; + padding: 6px 12px; + border-radius: 6px; + border: 4px solid #ffffff; +} +.aff-quais__clock-main{ + font-size:18px; + font-weight:800; +} + +/* position the clock bottom-right inside a small white rounded box like on the image */ +.aff-quais__footer-right{ + position:relative; +} +.aff-quais__clock{ + position:relative; +} +@media (max-width: 900px){ + .aff-quais__left{width:42%;} + .aff-quais__destination-line1{font-size:36px} + .aff-quais__destination-line2{font-size:28px} + .aff-quais__time{font-size:48px} +} + diff --git a/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js b/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js new file mode 100644 index 0000000..738365c --- /dev/null +++ b/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js @@ -0,0 +1,898 @@ +import React, { useEffect, useState, useRef, useCallback } from 'react'; +import './ClassiquesDepartsQuais.css'; +import supabase from '../../../../lib/supabase'; + +// Hook pour récupérer la map des logos depuis /type/data.json +function useTypeLogos(){ + const [map, setMap] = useState({ default: '/type/quais/logo-sncf-color.svg' }); + useEffect(() => { + let mounted = true; + + const load = async () => { + const candidates = ['/type/quais/data-color.json', '/type/data.json']; + for(const url of candidates){ + try{ + const res = await fetch(url); + if(!res.ok) continue; + const data = await res.json(); + if(!mounted) return; + const logos = {}; + if(Array.isArray(data.logos)){ + data.logos.forEach(item => { + // item.file is expected (ex: logo-tgv.svg). If absent, try to extract from path + let file = item.file; + if(!file && item.path){ + const parts = String(item.path).split('/'); + file = parts[parts.length-1]; + } + if(!file) return; + const basename = file.replace(/\.[^/.]+$/, ''); + const semantic = basename.replace(/^logo-/, ''); + const key = semantic.toUpperCase().replace(/[^A-Z0-9]+/g, '-'); + // Prefer color logos in the 'quais' subfolder if data came from the quais file + if(url.includes('/quais/')){ + logos[key] = `/type/quais/${file}`; + } else { + logos[key] = `/type/${file}`; + } + }); + } + logos.default = logos['SNCF-VOYAGEURS-LOGO'] || logos['SNFC-VOYAGEURS-LOGO'] || logos['SNCF'] || '/type/sncf-voyageurs-logo.png'; + setMap(logos); + return; + }catch(e){ + // try next candidate (ignore error and continue loop) + } + } + // no candidate succeeded — keep fallback + }; + + load(); + return () => { mounted = false; }; + }, []); + return map; +} + +function getTypeLogo(type, TYPE_LOGOS_MAP){ + const map = TYPE_LOGOS_MAP || { default: '/type/sncf-voyageurs-logo.png' }; + if(!type) return map.default; + const norm = String(type).toUpperCase().replace(/[^A-Z0-9]+/g, '-'); + if(map[norm]) return map[norm]; + const keys = Object.keys(map).filter(k => k !== 'default'); + for(const k of keys){ + if(k.includes(norm) || norm.includes(k)) return map[k]; + } + return map.default; +} + +function Clock() { + const [now, setNow] = useState(new Date()); + useEffect(() => { + const id = setInterval(() => setNow(new Date()), 1000); + return () => clearInterval(id); + }, []); + const hh = String(now.getHours()).padStart(2,'0'); + const mm = String(now.getMinutes()).padStart(2,'0'); + const ss = String(now.getSeconds()).padStart(2,'0'); + return ( +
+
{hh}:{mm}:{ss}
+
+ ); +} + +export default function ClassiquesDepartsQuais(){ + const typeLogos = useTypeLogos(); + + const rightRef = useRef(null); + const stopsListRef = useRef(null); + const railRef = useRef(null); + + // fallback mock strict (utilisé uniquement si aucune donnée réelle n'est trouvée) + const mock = { + time: '16h44', + status: "à l'heure", + trainType: 'Fluo', + trainNumber: '891811', + destinationBig: 'Seurre', + destinationStation: '', + stops: [ + 'Ouges','Saulon','Longecourt','Aiserey','Brazey-en-Plaine','Saint-Jean-de-Losne','Chaugey','Pagny','Seurre','Mervans','Louhans','Saint-Amour','Bourg-en-Bresse' + ], + }; + + // état pour l'horaire sélectionné + const [selectedHoraire, setSelectedHoraire] = useState(null); + const [loadingHoraire, setLoadingHoraire] = useState(false); + const [horaireError, setHoraireError] = useState(null); + const [candidatesCount, setCandidatesCount] = useState(0); + // perturbations/travaux (récupérées depuis Supabase) + const [perturbations, setPerturbations] = useState([]); + const [, setTravaux] = useState([]); + + // helpers locaux (simples) — similaires à ceux du composant principal + const normalizeName = useCallback((s) => { + if (!s) return ''; + try { return String(s).normalize('NFD').replace(/\p{M}/gu,'').toLowerCase().trim().replace(/[-_]+/g,' ').replace(/\s+/g,' '); } catch (e) { return String(s).toLowerCase().trim(); } + }, []); + + const parseTimeHM = useCallback((s) => { + if (!s) return null; + if (typeof s === 'number') return s; + const m = String(s).match(/(\d{1,2}):(\d{2})/); + if (m) return parseInt(m[1],10)*60 + parseInt(m[2],10); + const d = new Date(s); + if (!isNaN(d.getTime())) return d.getHours()*60 + d.getMinutes(); + return null; + }, []); + + const formatTimeNoSeconds = useCallback((v) => { + if (v == null) return ''; + const tryDate = new Date(v); + if (!isNaN(tryDate.getTime())) { + const hh = String(tryDate.getHours()).padStart(2,'0'); + const mm = String(tryDate.getMinutes()).padStart(2,'0'); + return `${hh}h${mm}`; + } + if (typeof v === 'string') { + const m = v.match(/(\d{1,2}):(\d{2})(?::\d{2})?/); + if (m) return `${String(m[1]).padStart(2,'0')}h${m[2]}`; + const m2 = v.match(/T(\d{2}):(\d{2})/); + if (m2) return `${m2[1]}h${m2[2]}`; + return v.slice(0,5).replace(':','h'); + } + return String(v).slice(0,5).replace(':','h'); + }, []); + + // ...existing code... + + const formatTimeFromHM = useCallback((totalMinutes) => { + if (typeof totalMinutes !== 'number' || isNaN(totalMinutes)) return ''; + const m = ((totalMinutes % 1440) + 1440) % 1440; + const hh = String(Math.floor(m / 60)).padStart(2, '0'); + const mm = String(m % 60).padStart(2, '0'); + return `${hh}h${mm}`; + }, []); + + // lecture des query params pour gare & quai + const paramsForThis = new URLSearchParams(window.location.search || ''); + const gareParam = paramsForThis.get('gare'); + const gareIdParam = paramsForThis.get('gare_id') || paramsForThis.get('gareId'); + const quaiParam = paramsForThis.get('quai'); + const debugEnabled = (paramsForThis.get('debug') === '1' || String(paramsForThis.get('debug')).toLowerCase() === 'true'); + const gareDisplayParam = gareParam ? decodeURIComponent(String(gareParam).replace(/\+/g,' ')).replace(/-/g,' ') : null; + + // helper: obtenir la liste d'arrêts d'un horaire (supporte plusieurs noms de champs) + const getStops = (h) => { + if (!h) return []; + if (Array.isArray(h.stops) && h.stops.length) return h.stops; + if (Array.isArray(h.gares_desservies) && h.gares_desservies.length) return h.gares_desservies; + if (Array.isArray(h.garesDesservies) && h.garesDesservies.length) return h.garesDesservies; + if (Array.isArray(h.arrets) && h.arrets.length) return h.arrets; + const candidates = ['stops','gares_desservies','garesDesservies','gares_desservies_json','arrets','gares_desservies_json']; + for (const key of candidates) { + const raw = h[key]; + if (!raw) continue; + if (Array.isArray(raw)) return raw; + if (typeof raw === 'string') { + try { const parsed = JSON.parse(raw); if (Array.isArray(parsed)) return parsed; } catch (e) { /* ignore */ } + } + } + return []; + }; + + // --- Helpers pour perturbations (copiées/adaptées depuis ClassiquesDeparts) --- + const safeParseArrets = (p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return []; + if (Array.isArray(raw)) return raw; + try { + const parsed = JSON.parse(raw); + if (parsed && typeof parsed === 'object') { + if (Array.isArray(parsed.arrets)) return parsed.arrets; + return parsed; + } + return []; + } catch (e) { return []; } + }; + + const parsePerturbArretsObject = (p) => { + const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); + if (!raw) return { arrets: [], jours: null }; + if (typeof raw === 'object') { + if (Array.isArray(raw.arrets)) return { arrets: raw.arrets, jours: raw.jours_perturbation || raw.jours || null }; + if (Array.isArray(raw)) return { arrets: raw, jours: null }; + return { arrets: [], jours: null }; + } + try { + const parsed = JSON.parse(raw); + if (parsed && typeof parsed === 'object') { + return { arrets: Array.isArray(parsed.arrets) ? parsed.arrets : (Array.isArray(parsed) ? parsed : []), jours: parsed.jours_perturbation || parsed.jours || null }; + } + return { arrets: [], jours: null }; + } catch (e) { + return { arrets: [], jours: null }; + } + }; + + const getPerturbationJours = useCallback((p) => { + if (!p) return null; + const candidate = p.jours_perturbation || p.jours || null; + const result = new Set(); + const pushDate = (d) => { + if (!d) return; + try { const dd = new Date(d); if (!isNaN(dd.getTime())) result.add(dd.toISOString().slice(0,10)); } catch(e){} + }; + if (candidate) { + if (Array.isArray(candidate)) candidate.forEach(item => pushDate(item.date || item)); + else if (typeof candidate === 'string') { + try { const parsed = JSON.parse(candidate); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } + catch (e) { pushDate(candidate); } + } else if (typeof candidate === 'object') { if (Array.isArray(candidate)) candidate.forEach(it => pushDate(it.date || it)); else pushDate(candidate.date || null); } + } + try { + const parsedObj = parsePerturbArretsObject(p); + const jp = parsedObj.jours; + if (jp) { + if (Array.isArray(jp)) jp.forEach(it => pushDate(it.date || it)); + else if (typeof jp === 'string') { + try { const parsed = JSON.parse(jp); if (Array.isArray(parsed)) parsed.forEach(it => pushDate(it.date || it)); } catch (e) { pushDate(jp); } + } else if (typeof jp === 'object') pushDate(jp.date || null); + } + } catch (e) {} + return result.size ? result : null; + }, [parsePerturbArretsObject]); + + const parseDelayMinutesFromArret = (arret) => { + if (!arret) return null; + const keys = ['retard_minutes','retard','delay_minutes','delay','retard_min']; + for (const k of keys) { + if (typeof arret[k] !== 'undefined' && arret[k] !== null && arret[k] !== '') { + const n = Number(arret[k]); if (!isNaN(n)) return Math.round(n); + } + } + return null; + }; + + const buildPerturbMap = useCallback((list = []) => { + const idx = { byHoraire: {}, byNumber: {}, byStopId: {}, byStopName: {}, global: [] }; + (list || []).forEach(p => { + const horaireId = p.horaire_id || p.horaire || p.horaireId || p.horaireID; + if (horaireId != null) { const k = String(horaireId); idx.byHoraire[k] = idx.byHoraire[k] || []; idx.byHoraire[k].push(p); } + const number = p.number || p.train_number || p.train || p.numero || p.numero_train; + if (number != null) { const kn = String(number); idx.byNumber[kn] = idx.byNumber[kn] || []; idx.byNumber[kn].push(p); } + const arrets = safeParseArrets(p); + if (Array.isArray(arrets) && arrets.length) { + arrets.forEach(a => { + const stopId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code_uic || a.gare_uic || a.code; + const stopName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + if (stopId != null) { const ks = String(stopId); idx.byStopId[ks] = idx.byStopId[ks] || []; idx.byStopId[ks].push({ perturbation: p, arret: a }); } + if (stopName) { const key = normalizeName(stopName); idx.byStopName[key] = idx.byStopName[key] || []; idx.byStopName[key].push({ perturbation: p, arret: a }); } + }); + } + if ((horaireId == null && number == null && (!Array.isArray(arrets) || !arrets.length))) { idx.global.push(p); } + }); + return idx; + }, [normalizeName]); + + const findPerturbsForHoraireAndStop = (horaire, stationId, stationName, idx) => { + const res = []; + const map = idx || buildPerturbMap(perturbations || []); + const hId = horaire && (horaire.id || horaire.horaire_id || horaire.numero || horaire.numero_train); + const number = horaire && (horaire.numero_train || horaire.number || horaire.numero || horaire.train_number); + if (hId != null) { const kh = String(hId); if (map.byHoraire && map.byHoraire[kh]) res.push(...map.byHoraire[kh]); } + if (number != null) { const kn = String(number); if (map.byNumber && map.byNumber[kn]) res.push(...map.byNumber[kn]); } + if (stationId != null) { const ks = String(stationId); if (map.byStopId && map.byStopId[ks]) map.byStopId[ks].forEach(x => res.push(x.perturbation)); } + if (stationName && map.byStopName) { + const key = normalizeName(stationName); + if (map.byStopName[key]) map.byStopName[key].forEach(x => res.push(x.perturbation)); + try { + const needle = key; + for (const existingKey of Object.keys(map.byStopName || {})) { + if (existingKey === needle) continue; + if (existingKey.includes(needle) || needle.includes(existingKey)) { map.byStopName[existingKey].forEach(x => res.push(x.perturbation)); } + } + } catch (e) {} + } + return Array.from(new Set(res)); + }; + + const computeStatusForHoraireAtStop = useCallback((horaire, stationId, stationName, idx, serviceDate = null) => { + const found = findPerturbsForHoraireAndStop(horaire, stationId, stationName, idx) || []; + const toYMD = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return d.toISOString().slice(0,10); }; + let horaireYmd = toYMD(horaire && (horaire._date || horaire.date || horaire.date_service || horaire.service_date)); + if (!horaireYmd && serviceDate) horaireYmd = serviceDate; + let maxDelay = null; + for (const p of found) { + try { + if (horaireYmd) { + const pDate = toYMD(p.date || p.date_service || p.start_date || p.date_debut); + const db = toYMD(p.date_debut || p.start_date); + const df = toYMD(p.date_fin || p.end_date); + if (pDate && pDate !== horaireYmd) continue; + if (db && df && !(horaireYmd >= db && horaireYmd <= df)) continue; + } + } catch (e) {} + try { + const joursSet = getPerturbationJours(p); + if (joursSet && horaireYmd) { if (!joursSet.has(horaireYmd)) continue; } + } catch (e) {} + const parsedObj = parsePerturbArretsObject(p) || { arrets: [], jours: null }; + const arrets = parsedObj.arrets || []; + let matched = false; + for (const a of arrets) { + const aId = a.gare_id || a.gareId || a.id || a.station_id || a.stationId || a.uic || a.code; + const aName = a.gare_nom || a.nom || a.name || a.station_name || a.station_nom; + const na = normalizeName(aName || ''); + const ns = normalizeName(stationName || ''); + const nameMatches = stationName && (na === ns || na.includes(ns) || ns.includes(na)); + if ((stationId != null && String(aId) === String(stationId)) || nameMatches) { + matched = true; + const t = (a.type_perturbation || a.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(a) || parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + if (!matched) { + const ref = p.horaire_id || p.horaire || p.horaireId || p.numero_train || p.train_number || p.numero; + const numberRef = p.number || p.train_number || p.numero || p.numero_train; + const appliesByRef = ref && (String(ref) === String(horaire.id) || String(ref) === String(horaire.numero_train) || String(ref) === String(horaire.numero)); + const appliesByNumber = numberRef && (String(numberRef) === String(horaire.numero_train) || String(numberRef) === String(horaire.numero) || String(numberRef) === String(horaire.number)); + const isGlobal = (!Array.isArray(arrets) || arrets.length === 0) && !ref && !numberRef; + if (appliesByRef || appliesByNumber || isGlobal) { + const t = (p.type_perturbation || p.type || '').toString().toLowerCase(); + if (t.includes('arret_supprime') || /suppressed|supprim/.test(t)) return { label: 'supprimé', detail: '', delayMinutes: null }; + if (t.includes('retard') || t.includes('delay') || /retard/.test(t)) { + const d = parseDelayMinutesFromArret(p) || 0; + if (maxDelay == null || d > maxDelay) maxDelay = d; + } + } + } + } + if (maxDelay != null) return { label: `retardé +${maxDelay}min.`, detail: '', delayMinutes: maxDelay }; + return { label: "à l'heure", detail: '', delayMinutes: null }; + }, [findPerturbsForHoraireAndStop, parseDelayMinutesFromArret, getPerturbationJours]); + + // Fetch perturbations & travaux from Supabase periodically + useEffect(() => { + let mounted = true; + let inFlight = false; + const fetchPerturb = async () => { + if (!mounted) return; + if (inFlight) return; + inFlight = true; + try { + if (!supabase) return; + const [{ data: perturbData, error: pError }, { data: travauxData, error: tError }] = await Promise.all([ + supabase.from('perturbations').select('*'), + supabase.from('travaux').select('*') + ]); + if (!mounted) return; + if (pError || tError) { + // ignore quietly — keep previous data + } else { + // Filter perturbations to those applicable today + const todayYmd = new Date().toLocaleDateString('en-CA'); + const filteredPerturb = (perturbData || []).filter(p => { + try { + const toYMD = (v) => { if (!v) return null; const d = new Date(v); if (isNaN(d.getTime())) return null; return d.toISOString().slice(0,10); }; + const pDate = toYMD(p.date || p.date_service || p.start_date || p.date_debut); + const db = toYMD(p.date_debut || p.start_date); + const df = toYMD(p.date_fin || p.end_date); + if (pDate && pDate !== todayYmd) return false; + if (db && df && !(todayYmd >= db && todayYmd <= df)) return false; + try { const joursSet = getPerturbationJours(p); if (joursSet && !joursSet.has(todayYmd)) return false; } catch (e) {} + return true; + } catch (e) { return true; } + }); + setPerturbations(filteredPerturb || []); + setTravaux(travauxData || []); + } + } catch (e) { + // ignore + } finally { + inFlight = false; + } + }; + fetchPerturb(); + const id = setInterval(fetchPerturb, 15000); + return () => { mounted = false; clearInterval(id); }; + }, []); + + // Annotate selectedHoraire with computed status when perturbations change + useEffect(() => { + if (!selectedHoraire || !selectedHoraire.horaire) return; + const horaire = selectedHoraire.horaire; + const stop = selectedHoraire.stop || null; + const stationId = stop ? (stop.gare_id || stop.gareId || stop.id || stop.stop_id || stop.stopId) : null; + const stationName = stop ? (typeof stop === 'string' ? stop : (stop.gare_nom || stop.nom || stop.name || stop.stop_name || '')) : null; + try { + const map = buildPerturbMap(perturbations || []); + const status = computeStatusForHoraireAtStop(horaire, stationId, stationName, map, null); + // keep original scheduled time for display (_displayTime) + const originalBase = parseTimeHM(selectedHoraire.rawTime || horaire.heure_depart || horaire.time || horaire.heure); + const displayTimeOriginal = (typeof originalBase === 'number') ? formatTimeFromHM(originalBase) : (selectedHoraire.rawTime ? formatTimeNoSeconds(selectedHoraire.rawTime) : (horaire.heure_depart || horaire.time || horaire.heure ? formatTimeNoSeconds(horaire.heure_depart || horaire.time || horaire.heure) : null)); + // compute updated time (delayed) but store separately — do not override the original displayed time + let updatedTime = null; + if (status && typeof status.delayMinutes === 'number' && !Number.isNaN(status.delayMinutes) && typeof originalBase === 'number') { + updatedTime = formatTimeFromHM(originalBase + status.delayMinutes); + } + setSelectedHoraire(prev => ({ ...(prev||{}), horaire: { ...(prev && prev.horaire ? prev.horaire : {}), _status: status }, _displayTime: displayTimeOriginal, _updatedTime: updatedTime })); + } catch (e) { /* ignore */ } + }, [selectedHoraire, perturbations, buildPerturbMap, computeStatusForHoraireAtStop, parseTimeHM, formatTimeFromHM, formatTimeNoSeconds]); + + // récupérer depuis Supabase le prochain départ correspondant au couple (gare, quai) + useEffect(() => { + let mounted = true; + async function loadNextForQuai() { + setLoadingHoraire(true); + setHoraireError(null); + setSelectedHoraire(null); + if (!supabase) { + setHoraireError('Supabase non initialisé'); + setLoadingHoraire(false); + return; + } + try { + const { data: all, error } = await supabase.from('horaires').select('id, *'); + if (error) { + if (mounted) setHoraireError(error.message || String(error)); + setLoadingHoraire(false); + return; + } + if (!mounted) return; + if (!Array.isArray(all) || all.length === 0) { + setLoadingHoraire(false); + return; + } + + const normalizedTarget = gareDisplayParam ? normalizeName(gareDisplayParam) : null; + const targetQuai = quaiParam ? String(quaiParam).toLowerCase().replace(/\s+/g,'') : null; + + const now = new Date(); + const nowHM = now.getHours()*60 + now.getMinutes(); + + const candidates = []; + + for (const h of all) { + if (!h) continue; + // build stops list (support multiple field names) + const stops = getStops(h); + + // compute max index for terminus detection if stops contain index + let maxIdx = null; + if (Array.isArray(stops) && stops.length) { + for (const st of stops) { + if (typeof st.index !== 'undefined' && st.index !== null) { + const n = Number(st.index); + if (!Number.isNaN(n)) maxIdx = maxIdx == null ? n : Math.max(maxIdx, n); + } + } + } + + // find matching stop (by name or by gare_id) + let stopMatch = null; + // check horaire-level depart name first + if (normalizedTarget) { + // exclude horaires where the target gare is the final destination (terminus) + const destNameNorm = normalizeName(h.gare_arrivee_nom || h.gare_arrivee || ''); + if (destNameNorm && (destNameNorm === normalizedTarget || destNameNorm.includes(normalizedTarget) || normalizedTarget.includes(destNameNorm))) { + // gare ciblée est la gare d'arrivée finale -> ne pas considérer cet horaire + // skip to next horaire + } else { + const departName = normalizeName(h.gare_depart_nom || h.gare_depart || h.origin_name || ''); + if (departName && (departName === normalizedTarget || departName.includes(normalizedTarget) || normalizedTarget.includes(departName))) { + // créer un stopMatch initial à partir du niveau horaire + let initialStop = { heure_depart: h.heure_depart || h.time || h.heure, gare_nom: h.gare_depart_nom || h.gare_depart }; + // si la liste stops contient un objet correspondant à la gare de départ, préférer cet objet + if (Array.isArray(stops) && stops.length) { + for (const s of stops) { + const rawName = (typeof s === 'string') ? s : (s.gare_nom || s.nom || s.name || s.stop_name || s.station || ''); + const nm = normalizeName(rawName); + if (!nm) continue; + if (nm === normalizedTarget || nm.includes(normalizedTarget) || normalizedTarget.includes(nm)) { + // prefer the stops entry (it may contain platform/quai information) + // but preserve a horaire-level time if the stop entry lacks heure_depart + if (typeof s === 'object') { + if (!s.heure_depart && initialStop.heure_depart) s.heure_depart = initialStop.heure_depart; + initialStop = s; + } else { + // s is string name — keep initialStop but set gare_nom + initialStop.gare_nom = s; + } + break; + } + } + } + stopMatch = initialStop; + } + } + } + + // if gare_id param present, try to match by id as well + if (!stopMatch && gareIdParam) { + const gid = String(gareIdParam); + // check horaire-level id + const departId = h.gare_depart_id || h.gare_id || h.origin_id || null; + if (departId != null && String(departId) === gid) { + stopMatch = { heure_depart: h.heure_depart || h.time || h.heure, gare_id: departId, gare_nom: h.gare_depart_nom || h.gare_depart }; + } + // check stops list ids + if (!stopMatch && Array.isArray(stops) && stops.length) { + for (const s of stops) { + const sid = s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null; + if (sid != null && String(sid) === gid) { stopMatch = s; break; } + } + } + } + + // if still no match, try match by normalized name inside stops + if (!stopMatch && normalizedTarget && Array.isArray(stops) && stops.length) { + for (const s of stops) { + // support both string entries and object entries + const rawName = (typeof s === 'string') ? s : (s.gare_nom || s.nom || s.name || s.stop_name || s.stopName || s.station || s.station_name || ''); + const nm = normalizeName(rawName); + if (!nm) continue; + if (nm === normalizedTarget || nm.includes(normalizedTarget) || normalizedTarget.includes(nm)) { + // detect if this stop is a terminus (isLast / is_last / index == maxIdx) + const isTerminus = Boolean((typeof s === 'object') && (s.isLast || s.is_last || s.isTerminus || (typeof s.index !== 'undefined' && maxIdx != null && Number(s.index) === maxIdx))); + if (isTerminus) continue; // ne pas considérer les terminus + stopMatch = s; + break; + } + } + } + if (!stopMatch) continue; // this horaire does not serve the target gare (or match failed) + + // determine platform/quai for this stop/horaire + const platform = (stopMatch && (stopMatch.quai || stopMatch.platform || stopMatch.quay)) || h.platform || h.quai || ''; + const normPlatform = String(platform || '').toLowerCase().replace(/\s+/g,''); + + // if targetQuai is set, ensure it matches (loose compare: contains or equals) + if (targetQuai) { + if (!normPlatform) continue; // no platform info -> skip + if (!(normPlatform === targetQuai || normPlatform.includes(targetQuai) || targetQuai.includes(normPlatform))) continue; + } + + // Ne garder que les horaires qui ont un départ au stop (on ne veut pas afficher les arrivées) + const stopIsObject = stopMatch && typeof stopMatch === 'object'; + const hasDeparture = stopIsObject && ( + typeof stopMatch.heure_depart !== 'undefined' || typeof stopMatch.departure_time !== 'undefined' || typeof stopMatch.departure !== 'undefined' || typeof stopMatch.time !== 'undefined' || typeof stopMatch.departureTime !== 'undefined' || typeof stopMatch.horaire_time !== 'undefined' + ); + const hasArrivalOnly = stopIsObject && !hasDeparture && ( + typeof stopMatch.heure_arrivee !== 'undefined' || typeof stopMatch.arrival_time !== 'undefined' || typeof stopMatch.arrivee !== 'undefined' || typeof stopMatch.arrival !== 'undefined' + ); + // si le stop correspond mais n'a que l'heure d'arrivée (pas de départ), ignorer cet horaire — on veut uniquement des départs + if (stopIsObject && hasArrivalOnly) continue; + + // pick time from stopMatch (si on a une heure de départ) ou fallback au niveau horaire + const rawTime = (hasDeparture ? (stopMatch.heure_depart || stopMatch.time || stopMatch.heure || stopMatch.departure_time || stopMatch.departure || stopMatch.departureTime || stopMatch.horaire_time) : (h.heure_depart || h.time || h.heure || h.departure_time || h.departure || h.departureTime || h.horaire_time)); + const depHM = parseTimeHM(rawTime); + if (depHM == null) continue; + + // compute minutes until departure (allow next-day wrap) + let minutesUntil = depHM - nowHM; + if (minutesUntil < 0) minutesUntil = depHM + 24*60 - nowHM; + + candidates.push({ horaire: h, stop: stopMatch, depHM, minutesUntil, rawTime }); + } + + if (!candidates.length) { + setCandidatesCount(0); + setLoadingHoraire(false); + setSelectedHoraire(null); + return; + } + + // split into today (depHM > nowHM) and tomorrow (depHM <= nowHM) + const todayCandidates = candidates.filter(c => c.depHM > nowHM).sort((a,b) => a.depHM - b.depHM); + const tomorrowCandidates = candidates.filter(c => c.depHM <= nowHM).sort((a,b) => a.depHM - b.depHM); + + let chosen = null; + if (todayCandidates.length > 0) chosen = todayCandidates[0]; + else if (tomorrowCandidates.length > 0) chosen = tomorrowCandidates[0]; + + if (mounted) { + setCandidatesCount(candidates.length); + setSelectedHoraire(chosen || null); + } + } catch (err) { + console.error('Erreur supabase quai', err); + if (mounted) setHoraireError(err.message || String(err)); + } finally { + if (mounted) setLoadingHoraire(false); + } + } + + loadNextForQuai(); + return () => { mounted = false; }; + }, [gareDisplayParam, gareIdParam, quaiParam, parseTimeHM]); + + // toggle flag to alternate time/status when needed (observe selectedHoraire.status when present) + const [showTime, setShowTime] = useState(true); + // derive a simple status label string to use in the dependency array (avoids complex expressions) + const _selectedStatusLabel = (() => { + const horaireObj = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const computedLabel = horaireObj && horaireObj._status && horaireObj._status.label ? String(horaireObj._status.label) : null; + const rawStatus = horaireObj && horaireObj.status ? (typeof horaireObj.status === 'string' ? horaireObj.status : (horaireObj.status && horaireObj.status.label ? String(horaireObj.status.label) : null)) : null; + return String(computedLabel || rawStatus || mock.status || '').toLowerCase(); + })(); + + useEffect(()=>{ + let id = null; + if (/retard|supprim/.test(_selectedStatusLabel)) { + // ensure we start by showing the time + setShowTime(true); + id = setInterval(() => setShowTime(prev => !prev), 3000); + } else { + setShowTime(true); + } + return () => { if (id) clearInterval(id); }; + }, [_selectedStatusLabel, mock.status]); + + // compute and position the rail so it covers from first stop center to last stop center + useEffect(() => { + function updateRail(){ + const rail = railRef.current; + const list = stopsListRef.current; + const right = rightRef.current; + if(!rail || !list || !right) return; + const items = Array.from(list.querySelectorAll('li')); + if(items.length === 0) return; + const first = items[0]; + // find destination (last with dest class) or fallback to last item + const last = items.find(el => el.classList.contains('aff-quais__stop--strict-dest')) || items[items.length-1]; + + const rightRect = right.getBoundingClientRect(); + const firstRect = first.getBoundingClientRect(); + const lastRect = last.getBoundingClientRect(); + + const firstCenterY = firstRect.top + firstRect.height/4 - rightRect.top; + const lastCenterY = lastRect.top + lastRect.height/2 - rightRect.top; + + // add small padding so rail extends a bit beyond centers + const pad = 9; + const top = Math.max(0, firstCenterY - pad); + const height = Math.max(8, (lastCenterY - firstCenterY) + pad*2); + + // compute horizontal position so dots are centered next to the text + const firstText = first.querySelector('.aff-quais__stop-text--strict') || first.querySelector('.aff-quais__stop-text'); + const textRect = firstText ? firstText.getBoundingClientRect() : firstRect; + const centerX = (textRect.left - rightRect.left) - 28; // place rail left of text by ~20px + const railWidth = 35; + const left = centerX - railWidth/2; + + // apply styles for the rail rectangle + rail.style.top = `${Math.round(top)}px`; + rail.style.height = `${Math.round(height)}px`; + rail.style.left = `${Math.round(left)}px`; + rail.style.width = `${railWidth}px`; + // remove background-image reliance and render individual dots as DOM children + // clear existing dots + while (rail.firstChild) rail.removeChild(rail.firstChild); + + // create a dot element for each item and position it exactly at the item's vertical center + const railWidthComputed = parseInt(rail.style.width, 8) || railWidth; + items.forEach(it => { + const r = it.getBoundingClientRect(); + const centerY = r.top + r.height/2 - (rightRect.top + top); + const dot = document.createElement('span'); + dot.className = 'aff-quais__rail-dot'; + dot.style.position = 'absolute'; + dot.style.left = '50%'; + dot.style.transform = 'translate(-50%, -50%)'; + dot.style.top = `${Math.round(centerY)}px`; + // set dot diameter to rail width + dot.style.width = `${railWidthComputed}px`; + dot.style.height = `${railWidthComputed}px`; + dot.style.borderRadius = '50%'; + dot.style.background = '#ffe600'; + dot.style.boxShadow = '0 0 0 4px rgba(255,230,102,0.06) inset'; + rail.appendChild(dot); + }); + } + + updateRail(); + window.addEventListener('resize', updateRail); + const obs = new MutationObserver(updateRail); + const listNode = stopsListRef.current; + if(listNode) obs.observe(listNode, { childList:true, subtree:true }); + return ()=>{ + window.removeEventListener('resize', updateRail); + if(obs) obs.disconnect(); + }; + }, [selectedHoraire]); + // Observer changement des stops via selectedHoraire + // Re-run rail effect lorsque selectedHoraire change (les stops affichés changent) + + const displayTimeOrStatus = () => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const statusStrFromField = horaire ? (horaire.status || mock.status) : mock.status; + const statusObj = horaire && horaire._status ? horaire._status : null; + // prefer precomputed _displayTime if available + const time = selectedHoraire && selectedHoraire._displayTime ? selectedHoraire._displayTime : (horaire ? formatTimeNoSeconds(selectedHoraire.rawTime || horaire.heure_depart || horaire.time || horaire.heure) : mock.time); + + // build canonical status label when we have computed status object + let canonicalStatus = null; + if (statusObj) { + if (typeof statusObj.delayMinutes === 'number' && !Number.isNaN(statusObj.delayMinutes)) { + canonicalStatus = `retardé +${Math.round(statusObj.delayMinutes)} min.`; + } else if (statusObj.label && String(statusObj.label).toLowerCase().includes('supprim')) { + canonicalStatus = 'supprimé'; + } else if (statusObj.label) { + canonicalStatus = String(statusObj.label); + } + } + + const s = (canonicalStatus || statusStrFromField || '').toLowerCase(); + const isAlert = s.includes('retard') || s.includes('supprim'); + const label = canonicalStatus || statusStrFromField || ''; + // Always render both time and status inside a fixed-size wrapper to avoid layout shift + return ( + + {time} + {label} + + ); + } + + return ( +
+
+ {/* logo (depuis le type de train) */} + {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const trainType = horaire ? (horaire.trainType || horaire.train_type || horaire.type_train || horaire.op || horaire.operator) : mock.trainType; + return {trainType; + })()} + +
départ
+ {/* affichage des états de chargement / erreur pour debug */} + {horaireError ?
{horaireError}
: null} + {loadingHoraire ?
Chargement...
: null} + {debugEnabled ? ( +
+
Candidates: {candidatesCount}
+ {selectedHoraire ?
{JSON.stringify(selectedHoraire, null, 2)}
: null} +
+ ) : null} + {/* logo du type en haut à droite */} +
+ {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const status = horaire ? (horaire.status || (horaire._status && horaire._status.label) || mock.status) : mock.status; + const time = horaire ? formatTimeNoSeconds(selectedHoraire.rawTime || horaire.heure_depart || horaire.time || horaire.heure) : mock.time; + const isAlert = (status || '').toLowerCase().includes('retard') || (status || '').toLowerCase().includes('supprim'); + if (isAlert) return displayTimeOrStatus(); + return ( + <> + {time} + {status} + + ); + })()} +
+
+ {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const stop = selectedHoraire && selectedHoraire.stop ? selectedHoraire.stop : null; + // destinationBig is the final destination of the train (gare_arrivee_*). The second line should be the station name of the stop on the route (if present) — avoid duplicating final destination. + const destinationBig = horaire ? (horaire.gare_arrivee_nom || horaire.gare_arrivee || horaire.destination || '') : mock.destinationBig; + const rawDestExpr = (stop ? ((typeof stop === 'string') ? stop : (stop.gare_nom || stop.nom || stop.name || stop.stop_name || '')) : (horaire ? (horaire.destination_station || '') : mock.destinationStation)); + return ( + <> +
{destinationBig}
+ {(rawDestExpr && destinationBig && normalizeName(rawDestExpr) !== normalizeName(destinationBig)) ? ( +
{rawDestExpr}
+ ) : null} + + ); + })()} +
+
{(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + const trainType = horaire ? (horaire.trainType || horaire.train_type || horaire.type_train || horaire.op || horaire.operator) : mock.trainType; + const trainNumber = horaire ? (horaire.numero_train || horaire.numero || horaire.number || '') : mock.trainNumber; + return (<>{trainType}  {trainNumber}); + })()}
+
+
+
+ {/* barre verticale de points (élément explicite pour fiabilité) */} +
+
    + {(() => { + const horaire = selectedHoraire && selectedHoraire.horaire ? selectedHoraire.horaire : null; + // utiliser la helper getStops pour supporter plusieurs formats + let stops = horaire ? getStops(horaire) : []; + if (!Array.isArray(stops) || stops.length === 0) { + // fallback parsing si la colonne est une chaîne JSON + if (horaire && typeof horaire.stops === 'string') { + try { const p = JSON.parse(horaire.stops); if (Array.isArray(p)) stops = p; } catch (e) { /* ignore */ } + } + } + if (!Array.isArray(stops) || stops.length === 0) stops = mock.stops || []; + + // construire une liste propre en extrayant un label pour chaque stop + const labeled = stops.map((stop, idx) => { + let label = ''; + if (typeof stop === 'string') label = stop; + else if (stop && typeof stop === 'object') { + // vérifier plusieurs clés possibles + label = stop.gare_nom || stop.nom || stop.name || stop.stop_name || stop.stopName || stop.station_name || stop.station || stop.label || stop.stop || stop.name_gare || (stop.properties && (stop.properties.name || stop.properties.stop_name)) || ''; + // si l'objet possède une clé 'stop' qui est elle-même un objet + if (!label && stop.stop && typeof stop.stop === 'object') { + label = stop.stop.name || stop.stop.stop_name || ''; + } + } + label = String(label || '').trim(); + return { label, original: stop, idx }; + }).filter(it => it.label); + + if (labeled.length === 0) return null; + + // trouver l'index du stop correspondant à la gare demandée (selectedHoraire.stop) + let matchedIndex = -1; + try { + if (selectedHoraire && selectedHoraire.stop) { + const target = selectedHoraire.stop; + const targetName = (typeof target === 'string') ? normalizeName(target) : normalizeName((target.gare_nom || target.nom || target.name || target.stop_name || target.station || '')); + const targetId = (typeof target === 'object') ? (target.gare_id || target.gareId || target.id || target.stop_id || target.stopId || null) : null; + for (let i = 0; i < stops.length; i++) { + const s = stops[i]; + // compare by id first if available + if (targetId != null) { + const sid = (s && typeof s === 'object') ? (s.gare_id || s.gareId || s.id || s.stop_id || s.stopId || null) : null; + if (sid != null && String(sid) === String(targetId)) { matchedIndex = i; break; } + } + const name = (typeof s === 'string') ? normalizeName(s) : normalizeName((s && (s.gare_nom || s.nom || s.name || s.stop_name || s.station || '')) || ''); + if (name && targetName && name === targetName) { matchedIndex = i; break; } + } + } + } catch (e) { /* ignore */ } + + // filtrer pour ne garder que les prochains arrêts après la gare renseignée + let subsequent = labeled.filter(it => (matchedIndex >= 0) ? (it.idx > matchedIndex) : true); + // trier par idx pour être sûr + subsequent = subsequent.sort((a,b) => a.idx - b.idx); + // Remove consecutive duplicate labels (case-insensitive) + if (subsequent.length > 1) { + const collapsed = []; + for (const it of subsequent) { + const prev = collapsed.length ? String(collapsed[collapsed.length-1].label).trim().toLowerCase() : null; + const cur = it.label ? String(it.label).trim().toLowerCase() : ''; + if (cur && prev && prev === cur) { + continue; + } + collapsed.push(it); + } + subsequent = collapsed; + } + // si aucun arrêt après (ou pas de match) on peut retourner null ou le fallback; ici on renvoie le fallback si tout échoue + if (subsequent.length === 0) return null; + + return subsequent.map((item, mapIndex) => { + const isLast = item.idx === (stops.length - 1); + return ( +
  • + + {item.label} +
  • + ); + }); + })()} +
+
+ {/* footer band same as classic departures with clock on the right */} +
+
+
+
+
+
+
+ ); +} diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/src/setupTests.js b/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom';
+ + + { e.preventDefault(); navigate('/departs'); }}>Départs + + + { e.preventDefault(); navigate('/arrivees'); }}>Arrivées + + + +
+
+

Affichage Ferroviaire — Accueil

+
Route actuelle: {route}
+
+
+ +
+
{content}
+
+ + + + Contact + + + Mentions Légales + + +

4(P3}QOgMZR7%?`;~CSCwl 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 G$^QZqAw`q` literal 0 HcmV?d00001 diff --git a/public/fonts/avenir-book.woff b/public/fonts/avenir-book.woff new file mode 100644 index 0000000000000000000000000000000000000000..c2f1e82dde5dacb56f1b9b6cf4135abe2b836bc6 GIT binary patch literal 68096 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%0A7yHHS1a5(ciidD@FU_R~uxYyyTeLd?z5w~> zUVvi&55xD!iv&)=_edp9d@ms1Va$MsaGH1oR+L~&jM@*xNlCJD>n|){wu$w%f>ziuH#o| z{dNG?5cyUDd(Z)I;r0o<++zS5I55*?SD?@>g&SortM@3*G(s!vP;*;2lw8m= zlCwHH+&da;S>97i*P25q|6ZS}nHOtrjo0=J4RqzimbM2g<_)*CEoyIybw#Y188N2( zOV3xGDEnx&eKaG#P9u4>tn7xnS}$ybB`kuubP*0_1_8E$>3AaJ%5|MxJYmeO=N75w z26@1Ep?wBmJv6p=A6iC4An)$Aswt57;R%_hPoz zQ;Y1i$X-j?YbkpzWv`{|wUoVptMV*K(=*{-kkVr(e^I*1Mr!Y7yWdDh;gL zpvDj-5|rh%Dm!qFM#|AhIU4oEX&3C))@y`cex{M0X{2WwwU_SJ08!FQ<@f?Mpha;QOPdU^3u=#Yo zm``9AnhS6ix0XQ#`BBRwff5`OMA9!ySC(l@&XmwodXyvOxs7wiyQ~~>c<(4lnA=4r z_(k><$4GY@I3d9#wBTY^O#pv>7p40t9i+qp=cg(8*z|c3fmM{)m-vm8?x4i(#J@x7 z2qotFbJVq6vFL3%=Ey`HWJ=ouXp`)7d87rX;s8|~po#-jae&X^ujJ$_J(vZPO|J1X ztS-A~_W#fr*nE*b@ST+Y6bj>uAQgB?z=UW)>*L-ypI6$(*=vp8HPr~TOTwNA zYX!0o=0;zbeKFfJdGFdQ?DFZ~*xl3jO`p7bll^!0Bh#iWy zIsNznrJqpx1*O+0d3B*RdK|6BrlOhNG9fV(=D9l~`hL9sTn~$hNwXPc)!CJ5Ah8NF z+iFaitLa0oR=T@OuHp-}@&{{8`+_U^!b%*H3p=LV68rO6DYDlIage-Hx`N|MvmdT* z`4%e)4G2e-q%w5do#f8ihMmx)0OhgvL$bXGGVGl+SKZFx#g(0J#F}n&)3yLy0~T@& z;<1-$(S8dn_^&e8YpKD2=K=l^aTm`k@X;`tPs3!s#jhtM`3u;5{s!O$-A1#wi4JQ5 zCV6jTbNvN`KRyKT0>Bo4hXIZQ+yQU_;H=ttvU>Xhdc_60s@+Op52gK-qs1fYwgG>G zd@mBoo?<0mzWN$y;Wq%cV261YVE?Q=Cv#;6oP#PMm)pz-ZX*UOEPQs0 z*-!kH*-yAD*)}=U=Hcb;9xkR>WwXcIdYL2eA}h6@m|f2;QqK~}mv5=*1oP%Ih*>w7 z!Km+cGvbQjp=Xs#`vfj`v$Vfhr}H>VAt|wF)1zAi<&_-6bh@Yb1`OgA+_$@UnRnUg zzRQhL=VQqnsw!U^&eC&kr8t1UpTI#%-2SIkEaD^fAm4pok1|^3HMhaC>~)&5E>fDI zWU_?x#3fE(kkUFzTlwTzWjZ0M!pw5pu%g}%PU2|+on13C!cqTJ`fQ&0=G?eX318}? zCuWC=yGek4p=@zMXTDH2x+xo9DE*4tUt?5Dc3OS6NPSmJoB3;)I36%`92CVYD^mrI ztII;+S*R}kioDy*MXI4PRTt3%*LCgecY7MjFZBfCln|&cYqt`*7c}8T6>dlzAFlXx zm&orp^E;}oLTF;1p$V?{+ewdT=+Og3u8Q95V14|CK31kl7v%HXu7eBZbr7K3rQ#AU zD@bJpsjMKC6{NC)R92A63UXQO&pSwE1*xncl@+A-;+8rbg3|dh?WJgw=KPmgQGXku zk!)7Ay9B6s%u)w`&!j~J&K7>uGABIzmrv&#%>i>G^jNl9Mj~?%z+&L~@d+}Y8BAk5 z8~8$lx&*g{n+%E~G;@;$l(Rv&$$~gXesV-PT0>!$8)d9Y-LG3sGggO%-hgYR^@)_cJwV$yjzdv`gVc8Wd*9k{ z>$+%k-K`tGWjoW;D^{+2d-&cj4iA6v-r={0yEg1dBzA1*`dwe2-7{~?z1M8{#+G^R z{Cz}ZI$bK$u?vXk7bKy1FH3~Z)y4x>z6AkAD^|HyGr>`Loio4nl**jbt@EkfN(Edm zPqr)hJVM|}b%e)4l6E59cB1ii6_QN4GSer(>TSi77YWS3h2B=&9u#ne`fri?KO-}@ zIl13TU>Dpj4&iu2U8HEeEvUBz^|pwx%5kr1y)9R)*G@{kUrDmm$Mn;BeGP7ju>r!1 zJ1PrmmzO`yJ)upTXJnU8popy~Vh}HXF{6`oP1Ckq>$YWuw521-dM(SS!ez95T}H(( zqb4mgDvDdNftV4HR?behFK?7`hR|!*$)>x73Ncy`H=$>SzymW_&pfc+UWA3vw!UHA z-~{attUUW?88fe{!Y9+hVZV;CGl(mvF+A7H?3N0~ne<3JKWNK3Q;5uoSe-1_Vbe@8 z#q0!+vkiLq=E%tF`mm7?!~YdiY7mDua_VAH8!T6cC~wNdf15G>hBG7Dvcp<-!<%EY z#dT(01f9@p0mh))^gbq=6IKiA9#B&T&?)%Wr9e3S=xUr4 zZD|D0h}Er5gI=N^ui~ulOHj4G9pJbjo>mcJs!wP0EXxV{OFwapgEv!gY z_6io4JLhO# z_uh?AS2?SIhg2^ODOO(Sg)xSa+B`|%8AxqT%T+K(9n1@Lq%lX`e4+cY+>*J_%om#V zLWh_QF$>ioe(ITpVu~zM(m+5^bLeO&;x>Rcjq(X|re>-+0Xn!3;A;T?O8`@XoBMfu z>b(Hx0B!-eUciKe{w>nSPT>pQ0dRcoH|-EUFv<4wA*#rH%3r&mvO&~L=+d9!3!VqK z!TpqOrWfXZN>f4Fr~I`5C>oniT8WePhY1`;XP$#S`zl0OX(O-*aV>i>-8_VC#YqH$ z=b2~>aSnY1Di9O=7VNIv;K3aEcnsUIURWwb6?nz=<0*ukjNp*&DSWVH_yi9E^Z|@x zYzr93OtC z02bnwdx(4qAf)d7nDZ~CCrcrYEX9+?``R-D?vzGw; z;B1$JWxoK2Z+t4^mzuW9X|GmbDmewPUolW3;xT1?}jJdAKr9uPjrivHT%BF*S6diXLp9 zdT3qmff2G%rOMIUTvm@+v+u>Ia-&VVp?4QzobhtL0w$J+F}%(b_yAXP5YV&V;?SL5 zT=ha9!He7364}#G_vMDoQH+)rjGs*yB+CKZago5V*-zkc44X|L{$&^~8O}t`;&wJ} zCkTw;_72<*g6?0&NO&LMK~VU+00E4I497qFK-^nE(_RqnV^|rPxZlTg>XP$b(Cl99 z&$cLFnr$MQZGsk86UK-u{|;lY81S$HuNz{{kcBbdI|Neo&!OT=Ak{4Zm7wCya}Idk z0vHF)o(0$gsrm9b#JfrXM~&#Be(j>yvf(6Cd~qAs+pG%)wJ?bm0y%G@!nv;bvx`_% z8*U7{sJo+^MY+pvi?4~SG5FTbH4$e+LzpGA3%}4BF=$6yU)McrS#sMR-OzNk!ELb( zP5+0zFAtBay7GMYl~ko&DwWofR4S#9V zK{E5rf75)N&qudz-Fok?=brOB=fM4B&CGAjYw6C_W5a)R@r_9b8rjIEc9bx5{P#=1 z%t-uq`dIF8v)kJt?ctYvW|EO#ccdK^z#W-_6JR|Z z>L^Oh6R?L=sV}Es9;(ocT0o}?<{=|QoksW;Gx%1U?yJdkZ`af1D9Z1d6pT} zyjDX$R2$~JVL7Ov5(_HXu3rI6o(9X&09Qa$6*9@R7#||(oo*R_K?l7&qmsUokFW6n z>DAeQKg&C$N3Lc!BqPnF@ndd+XAsE74-J~fI)X81Stz@h&op_oZuyF?L7Bj#uk(h5tWo2@oSQF+k5I2L&&#oAJ)?5aj>%}R6J|_?{YP`WKAa*iz91zN zvisfu%x>9zUy#xX*!i}~xoKs?`iL+uBq0uZW4cP1-Ew?g;KRxV&)-28%`527!NNiZ z1D{@k%i;x~E0nK{M8{6}v=a_p+?sIq@070nko4$IVGhgIv^yC{Pj});k=rrm%(%pz z=}mTRq0}o8rbc>G_rMeIiYKH8ZkPAnoRl22R6GhVehu2mQ(pd)#6$vaD|Q~{+m!{f%Q0-)*h&=Azocb=`TsyqvO}6&r8b;EM)J6OqPfO`hp* zT{%!+);8RHd$XBV*E=5UUN=zVNbhx+?^|=-n*Q9XP;LLPuf4~s^`Mv4|1?jSm>G%B z;vXupl=W=UF#oH+uA{GHPg4EJp5r~SZ@%8B_HMf z+efAIwE<@^wy}`f=#@6Kg?)vTJjW%N;OxM7gmKn1^-lIQ-qkhE0Er?M+(mdLy+rMCXG3_IY3~$<7m&#=~N?e}MBNVZCvv zH*T1zZC|vWb&T5n6FqC6^g*8-gniO(pL9l_JbfQLeV+iP^v^ylz^X6%qs4n><{{v2c-80cmsM37|a%-4X?U%A21JdDOMSSDq~V*Oq64q@iT*88iOy5 zNtcc3{w6)-Wk;RDz||GTn)JI<&X?7gCZdH#a5bGFtCQ!;Mw(iaAmK!f)wEOhhd65@ z#*IZY910=*aOhM_F$}MA3LD^fy^SICqD5FrKYcqcq4PQD>?l+j4aME0m)``m4d@=A zeLxQbeFNw@)WU8c|0=Ylj6fl}m0+3-Tcf(e4+?WcU~dn=9pE8!j%5LCEq{#8Lt3|v zC32!I!}DsH&3zz&1qoY02NrbLj<^;qXyJloI#?2R*D{>}tUpA;RX?1a{XCe}z=ZIR z?d+$8*}sbE=<6>)w+7^}6I%)pNQA8gp|uu$bYf?=7|Zy*e=QiFS9Px@;5)eSslmC!S}u*{dEm9F4&ZpzzMg+_$3e>C;v#Fq{IV6$tgq5Q@z()xp^n$ zHu)61=_!&ZX=nG#QQ#NpDJ5+?ZSVT7cSx8gL^1w~?EEhaQ0c4ykbWi1MUK>pfZv$$ z1)#^!u*r34_sxdi?19F6;3ssO*WSg_#uQd4U310JSZ`>=EX9K?&^_ zW{)su#n5zCl21J%JIGVQoR&m5Zwm8@FfU1FsV&01!3?4uSHd4F_3mm7%?(K=LweCV zj|-)wR7y(a4a(%9%49(G72#Bp@yi?N5xY;A&&!DIOgcnszY-j}i;_X(q72`wf-}Q$ zd{fYkn9^cD&|w+5HzfM*SL6WwkuXmRd<;{I?B{sA4s!O=uc*iG6T&=_9MN8xf*KpP zRpNLf-0L8_tzkI4QR8(&dXbno2EvryTA!4WJ0aurdUC*YE+ZVd3qTsJwo*Pu#tP}` zvcbX@s)!9CM!86nDLeX9H-gC6Ijy8rk~Ek&@!!CO>iLu2mhzNXrZz0o!9(hZTW<TWu!d`Z_{y+SvV&*CgBbaKZZ#)9E@!9ow)u+YOA3r)Li8|=1i z^wVfu3)7}P4BP_RoEJia42)jL$HPK69u|@WqsTT>1A9VE%Jl$&hqbVntV@GlXD=}0 zqG$o9fzC=efD4iu_f>e3U-1e|C$Q-8IT+Cw1wtBy>%o}hs5v6)+HP5fW5OH}=CCZd zabb>ABz@Z0HS?A*FD6SC%08f(XM}lO1f-XVF=%%wmzAq=yO=onnBaDwmfOV(!pz@i z$E43r33F_YL+L4DemM``)=FKdJL^$kp60$pg>okxxt-!ar>(O`r3;TFyRb(}tevc1 zUcFyBwO{tSw=N>Ze8M00=sHL2KKG49MO^n>slq>L;cLkuveBSnWZEgI0 zz2S*K)V(m+6mKspYmYYt7rLW?iEzgJ$kQchS)SqRy1TC%u2(A9)a0#Gm7SxFjia5F zs?OWg6jUOg|Ap=-34Le!66_uAv?tiJd$Vxd1gl<$kT8J3umR?F>#k#OX9u-28b`@k ztB-GykzOuLC^gbcTs%-o)zJXbX9Hg(=C%)asW0g}&n*(<16v!!uWYBM*FJ-<5yMxg z6s!=oH)%cZjnv);lFyQ9JPypWm@owBJO%*6=C;X`t`H_H(~E8X^u-?dVh?<=2fomjIfbc;Fq4HcR{qGlR`N8$uf-r&|DNOm%tuFz^tHr3Dn1ZP~*?G@9oed^^hp! zwgGdGXc0nUU6DY0=60P;*dd+CO>bQHU|BUv=I8cufsR8so(e+ z&|3ZezYeNQw?LIJI)4>5nQp-*`I$kAg7GqI9hiS+q3ckJ9=1A!u1Wa}obrKHYCscw8KEH%>e3=b8xQkZ77FcCHd0+}79>+Cqb35Iw0~9a`uMNRu z3)U`qpALbP4@X-wov#?`w2J|w%jM1+5@w?aT!X^gEsQ~NBWUqpiGg4SzCcz>a8#WW zJZoM@v!KyPL5Sigs0T$l)6B<+!A__)8YOmZl^jL7Hy#6Kl6nKjFG#^H;wZ_>m=uvK z8nr7OZ`FEJI{t3*J!TaqYhZh|G82_-+MpQ|eA4|Qtluf|oe-3{mNQ#8C?ASGgf!z4 zx5Qmia=$Qd3A0Aj+E(bvE5bY`Ot%DAItk26qENpgSB9}9o>iBmi^-x}m@A@twUWNG zEl*oUGubklPDvdXQxt%>gJN3J$8QUBM%0FH3zIp=%6~?fw}r_Rd%hLD$I`~WDSq{c z`1z!mGbh-biGC{O&}ZdhL)MbTjUri~OZ}tbNq%xq&{T~Ih2Kb{v)YSSAi;4|2CR4pp0G{gw zo%kI&R1b(i7zJT)Os-@HIi$N>g4ghn66>j)PKm5_JZ?{`yyW9oqWUmBdwKA5zEX;&3*7C5T zu1?BKo|GAC%|%OhVTEpZJ&DXNmGxF8Pf$(~8|u>67d;hYI`r&K4yRRLtuk@Mqz2WAf z-nyQ$#{Bx?rsD3vv_Ck~S%u-Z^}i(lfy|{|AszZktwTroFBsPe)i%U!nblU1I-1qy zokr5124#{OlA~5xK3j%S8FvuGT+M};CuPr+@9m)P)x<4)H#+1r5*A#GVoip`L74Sj z^0P9Gp12JgzMSXCJgDvhf)BAwmx5czHos=InV>dN_861_-zfUL0tyfmgPw?ya}f4P z|C~OVwBGGTYO5h`gSPu+4nHnlg??o41s%pRW1YFwbP-0k!gzK5_~@_64kWog^^JtF z(v)3HBBq-hx5l7Q>eQR(1->^UjO8wMw~llv(R7^J6(9e`0Ip66;QE|w7@LGK1YWj} zN+=+{mtwkMCOFJun5k276rbaSNcFaW>uwugidh9eCeccS&P8}|PS#*cm;{&+-U zk?fI(m@#0+f!1L}O#I{x0fOxi=Eo9<K}KNURHZ-seGn1jL$$`Nq4 zFdKz=Efv^4%T+9Eo>+P~?j;g6?-d#DH|LIfhEal*GNH4x;Uvzce4|@2t0;d#5AI$W zTm%4~q`?(T1rD-q1%(7X$Un3O*?J7iyJ@qGb`+Q~8f}isEb$A`!OcgPg^U8!JfeQE z5=!)q?h6tKYZowkB@oteU{2E?IN-W6&gXhk&TBlh9{nkUM!Td0syLyv9d|lRt=K{TozovS=5UgE?$Sdg5+W$;hquk1{651Z8kam~la9 zUXh(~jNLKNpW6unpi@wWx^x2WV_P}AC-z4X^oNf1*(>omuZYZs=f^mURw!BeK?Koq z){g~{upgMiqI0z}t{~onrx*d-%?h zB7kBqwLmYm2o|(ep4bxaT4kAO#sUM!h*9r~k#sR0qbP}}45~LOszC~ig_rvl`G+fg zD3OI$_=o-b+D1_9s`Zuh)S?_#t3F-5x`V{7vXSZ$|LQRE73Cwr-IS+J6LS0(HsvnoFGM{~bux=;R z?IbrLhsat5GX?6$^qlWw9o}y4fk8qvG3GEaQ)%{@m!YIRC8HR+p^%!c-FTKX-N%iZ zbLl*yve<#1x`hC+obf2`mD8wq2~4LkeyFo7Y|4R+5NEL9~K44 zez`IpNrIxRe2{Lry13=)mYOOO*LfMNY8{#c{a#NBDE6cnSx*}JcK4KI zWKwj@$7N?aV>yr>5M@$NGC7E54kfdMxa8sV``H|tanZuty+%4Ky&a=1xCcyM zGi;WGLv2MdzPrUrBjMHpbNH=UcP_JI`hH)qBttH0StYe))8Dn$!=$wyZiMyl@pv|+ zVR#nkdqC%bFmFTp25X@Zbi-qWFp~r0oireDh+RsuDGklDK;Hv84|EAgH&8DP)I$UH z(m=f+r|M-tFeo&6z8blUs={YM z^BMC5Y$XBXHrqNkFm|S1Y#v-}9vkpiBZ1!|Wtd*lQ1ETsR#Efbg1H+UhKE+AUvuG( zbjzl#V$oO-V{}DS!0B@8_=&2%GfD|i15gxb3TqpVz_PC+AIV0b9-su!1khHXT|j$*4gz6B&Er6)fpRyX z0b5!|@il=hS5RW^QlKDE3}_r^9ncn_oj`kl4gehidJ5Gnq6Z&&5>)*pru!t%8kFNEp`xjrgEpuBPBviVccG^`0M`> zUnKtjb9@n41GqL;f*f6IMAg5foH;Sr-g`nAr9p&dj2McUA7cf{BsVBTb5bMb}q0xX*+$Ac33?9aWlZvCmo77L5x>(ypr*i@X)K8;#i)Ia(XnvU^bE=HwJ`(+}8nZ z0m8f_dw>oAVNBbyM+9~H;C!BMga?W+ayy%2lofc4M0%$AHE}*?Y z2Z0c`1IH_zbDhvQta*??If-a8Q(kGLJJ3y8$7kCW%$3n$v!FE`DNPkkPn{Z$PFJHG zi%1wm#Go8&hToZ5R#sb*WfxE%>)N+(`o39`tQB|cYK}Wba^YzkrsOk>DSfd4fVBY$pLiT{yheVl_OqbLW1fqAXCObXumisw+g4Mh|_U_ z%SOWk&!N(=h%|3JLH!zthzMll7%4vqZAvZ7OEolwNlfhhr@g7Nuy=YW8w)P8Jm`gT zT4piLu{TwpEQ3B+27R&&`k?>%V2t~qg+3V5K3E2QunhWO8T7$2=!0d@N4B=(K&OFn z=LluV(1s|4)%Y9~_Z&LfmF#Sf_PSB`B|AMmy{)lzsJ?D!ZD;qIUf=Xb9F^_;f$pn| zBF&NNfVY6hAig5u?{BNH4MlpIS>VxYq+#%yurDys=I!t|cbDd+SC(k`>pw4AUEUn6 zO3vlI)?B{bcyZpjJZzJrzE1UffP4^VT0VzOBo>=GV=atonDVYFqu^SoQCM?OfjX!}RG%QH773d7K^PeIP5+^ZfXbwC;25{jHPo%g8j_829#vM@IHN~3}>fS_R z`mTg}Vfrrf#3PTq)326Ke^Y&S)hdJbs2sAlUN-zHFXb(3LY!m>#mKTL%!rL*1fIy4 zZW&X{VHzD=cC}vB!DJ>wgT+}+6#0L=qL~j87yBnEMGo#QK<0K>5HdY zF=<*#ilH}op;pmJ$EVtof94d~*RCCoE>3TcG!FOo5C5|nI_&Y6=5Cyrepxw|tr+J7)^9ppb1xRn{p|ntJtg!(2;lXs7IlM_Qur zU5<>T5`y(D8SvcCm@rG=LjRqVC-=ec)?qeW48>k&yd_uiOkm1^nt*zN76YvZx&df6 z(EUJ%fF1?HOZ^#rCC`U{ecHVmUk+z%U4f*_G&mvO>^^!A9mDKC3jXyza@b7Db{$T( zIh-f`rF?~jKBSb6Q$Lz+m5y^17gtmu;U0!d`8e&JJWuY(<@taSz7DA$!E^0OS=%Ou zMmN#%g7VHd*pKZVxo`}Lo#`Qox`WA}w~6uPH7b4AbTUZ~=Ws^^-u}?=FgyhA!5EJK z<|jX=3ncvSY8yd;deB6){!%Kx+V~Zf=gs_9{X6a1ZFg)xBr%{eOvvHqFkukUv8`a(c9*)KWe-)ldkJ8ggsh6 z50wAo42E#Yp(5FbCLv=<5yTs62DvHp?W$|>1!?mBx({MP( zid`u3cDuS`?#R)zXVq2Hf4^!~LftqyHu>}63u9wr>LC0&8pGd${?1k#Q~K4(>&6M| z#%Zk^?o$aZD6##Vbnw%f%8@mdD{IQi@|P=%D;E}5F5fS)zcWIq$9>*x2?6^XfguXR zbfd2uw4tC41;3|^eLxiC){o9cwn}M?FV5hf#c;kGIb~=z1^oRU(0QOsK$x&FowMg< zSV4d(r^(&GJOK0%sIZ#gGGBw8|0>>+j$Dx%ghv9$q!kWda zr|(h=S1(?rZn4E9-OKSvNk{0lVZ}}`R*cr^*R6fvF)HuS>+~J259{|8^_tX&@=wp( z{_QG%zV<;D{sNU3rj*0_ea5iG`@EWCW8(c&HQTUPpJD73-9Nu+tADRmf0t^Ui$fzB z*0ZQYq)!Pmaoq8;19wQ0sJ!?6M$rPrw zMhy$yaHl3IiB7Rj%ZP%Y#7D6};Ny~sW{ZKK4F_uuW3YI}#g*bfGT2F`XydZPvY92# zWQ$o(>&zySOqJLRt7a+BjuV55J_}=eR+v8tlOZs5%ffoY9F3@z@%JiW#^hOJ!dTBb zD$i;~5qwirf9vI;9~I`JFc*@l%#^362SY|jck-q6DUVJYBbpvy&5YjB9cw$X%3DS^ z#m5uMJAFZQPRIY#gBzL_-TbL>_2l$V%zNt>-#lL2H#pc)t(K#@U}WoEz3V?Q(SrG8 z*zf*E^1JsLOP$xGXvLSn?V7aW=fw*Fwgo-OVM#Qf!@!2w;v;dIP`Q(^4`j1f1MdD;!%lj&AQqR|rt%QZ z+##DBG=>FZwt^@YL~Y`uj$TOxW0qfhHGGLvfL8OvSBu)dnj!^dk=A{vK=khzV!%rr zVh!r4jb^KjW=>bsY;e@Zs4>KEavuJ;MDe@gi09!j#ruQ>|81tGo!sWFQ)?y>0Rt^ei{Gu=~2=l5izZR&#PlY)tn1M$GXLL-M zKMGTZzU1tW5fTu-jtSu6a4Wd(dt{5!u>g+4?Fzm9&jP&(^e3Qn1}`k66rnm0qxQSZ zL}oh;>45aNX5JPiQ~aFX7O$o&5;kOl!vG-QE@8Yuw$2o<{nG-+CzBQll7gn2~f)VR!*Bf^{#=6RVt zF)<1qlX+qV0DOMd)IjK<2ATgDnAZhlep2AspOXpjx-ch&d07}M6XlBn#Y52D(*ni& zv&@DG2{G`tgcv9XrU@Og*eyoSkyA29-WI_5dSrO|=*dzp(`Qmj{wz$EeDo)YCh#;f zE|}N7Af@!emA;op9m)0f*g9LV^f58YPH8qNI7Cv2I~&Sy}7Cy2gR#l0-@%f!@EXEb8d$Dv7QesI41X z*V%hhP0i}T)bIgy^&=6V*e-mLMMWtQ1fo@q2j;9FD~i%zTJ8z!9Sa2q8aFpfMoK$GjP6 z2M}h_!uTYIfh2jewgHa7!W$t28rl{8A(l541q8bm!pmX{i1|Vlnnob(@$Nr)83C(wJjU z!N19e8FD1+6(%F#heIHr}OgOnPl5vT_!0W<-$6=)aGULed_b`EQWQ1M}-sAa|}(ds5~X&aE|iPRaaQ1N>4wzm`HDa}t4Cp`j>3SC!b}~7nL0`v+-9I1K=%Rd2RaON4Co|=&rOZUA{KLA3rlHc zv=qF{Jj?pOoo7R$gdc)=HYD?G2<90kf*68%HU#r*2go2~cb#qB;imSQ-lB!gMUB;-uKJ;zreI}N z$3RWTn$o`f&N_FX(%s&^s3Tq-sqqxfKiv`zcX4OX-;n9?6$Pp@^BsAWZ8de#T6aTx zu&Or0?e*07vJ0{obvDET8EK|{|GSm3_iEzRSAS#H{^nKn;PlPv!TxUz4}XiF z72W~f8KkhcQ=ZicmoK)Yqv{TAT;hLHqERJILX;RbUwduUnv+O9YaR?Jo9oi(7Z}e) z&?y2|X=n$!)@8%}C_BZuY75X#AoRRC0CWThL)4!F($J1GqrS`2R9mua+4a{C?@ZZ{b+OFgJFfZ;^%F{~BZW4eifq)xX-Rzti}ct^Q}E zzOh~F+_?U|R{dQm^-oysj~HLH)&D1}{%+$Jw)z*X`eT@vz^cF3s{auXd3AlW(ANH9 zj#UBmgJjEy8JAPe4n!~YB8rKS9f%XgU6LdG<-)BZNTcH^K*$}cAA$rrMenef{?u-z z)3BoC3aQ6}dRxI9yQy{y;808jI6oCnuPT^cRTzwcZYASD>wvZZ?F2&9+5w;=Ku-ak z0@Bl~ic~~6y%0Q6G#gAZs0i!ej=15dhs`;SSlWVZh~@v0G<7*f+Bz2$CyHvCni}$Q zgH25}MTz1Ck%nkV?i_QW!%^G3RN^*)-i=~ z4eety$06gdLz3RYv5<=8<%UyirLD^wywm>6+YG514L;TQmuGT_ zTFi`8DW09A1ljQ?T8_6EW7#F&6BQuGtI-1?3gHSGsAhIR7n1QTwm2}r$Yn43CA=wGEaD8Yh- zWxfHdEUlCS+@IzKP=-m913fY2M4jm+7~lr*B-Jb#;BlKPIqEpcls8jn{8ancaj~Tsz0+P$P<4;u z%B@yq1@67h%~@=;4xzL@+awPovfRMe!vp-kS7%AqM&(RMG@*vY_vRmBf#* z?tA{-4X^TuU{!AY=*AHyvDWb*R++#DT2lZ5GBw?>W~KVU%7#CkGh2Zz5G| z%sL%N+{*~;%Z`lEhdGYn+#~UfQ1M8LngX@_usC`EooXh%HD%1K= zHoRaPeggc_zatrQ$MGF6zq+Q!^D}^I@#lb5yALXdk}_)l8S>n5j}S8|*y$N%^!gI=j4Qn(&3!Cs-MBa zkT*NeopH^~Q4=tKg11ns>0s!hMvt0vFUS71>ob>GT8kMj!dP^-TwX#DS^NOGt}$7> zP*(yk!~{UGtUr~TtQ8sBPmLZVh$QnErN5~KwqyWmY8zb%~G&pGNaP*#K)R=4bjPNRtcC6I6V!A$>cVSA2-X9gTL2R5gYzuou#O{xm01Q6rLKE zIi4>g^cc>Jdd`1bVl=Y5Gj0};9X0sip}8T-O^>Z z^jgMQ%=-nnm71)Z4NTKvDq9GkqG8XzM_11Hb-dXTo@Dk@y9jTrUO>>TH?0X4;(tJxMZ6n}OS;M!KW{Cvt2B&lj^jv4p1=1c>8n)CO0cAxo6PX)a36GM`D*!hnWO0bHx zVw^KqUC7#Oua#ZMTF~Dx`z}$jp-=l>D%{q3JT#dXyR)sM;B2DCiVP(`r{U(KpNE!+ z71=NBmtU7F-rY9)R7s~6Zy$fs_*ZbCGDyocy=>#bWE4WK+c= zQQv7|r}o8D56*TkfLS-1m1ziZaEA4lSb&tE0fiZYw7?}9N)1(jM@s(}^mqvL_N>~J zZ_H#G62%E|u9RN@ZNd7b+gDl9TI+rj%$cw?o=fxd@7?cO@4&9-e%c8(&(8FQJ`vGDFoM+J=+gDvfi#0{fXhxS5Q57-jDbFk{X}*;{LnJXj6S%QRv>14qQ1jph8)GvWhyc zLNLpEWEf~t<5J5(81`tKC)Ru6lrN+~6TV`#co5zGYx_PL=+PfhB~DhQhH-x%1ALo? ze~q`(@qDE-Fv!-x22N&1cG{M7SiFUA`9&G{?W_z5O()*uHwpHamqCA79>&`8RI<5H zVk zn7CHb_OjUaYXUZG_;^Xy8)Fe8*bJBnd9XBT?BPEIc}*k9PHhmRXZe@f4RGLFq{q=t zLiMhDZK&U_4;y{=#@jCG=vM{-vLCK}kwN&N*`rp4l{#=00R$#&)|wk4I3lF9)}$ya zQT)1WXsg!P&^dv2{n8*W2s_EQ5%9u^g94IRCc&F;I|}hd`a0e55fROd0Y*RM1w5ugReMuw33nY`CCQ>^{MT%*;AZ#{?w}c@|>K7 zG=nPbyF+Sc>6QUQwXKs-=eM-Z@8^WLqgmGtDsdY!8F40s=xdS56X;JS8qe@kkl#pE zJBs}U@W|K^^j`+*SE=3Z71PY>R2R7+r=XFW#kWOQLv)yjHt27iNGmRr^Ty%j%bViNBYH#~W zYd0{9OLmb{#S0rmjFEi_ojaQkg3GzPDvK54uu(K9$Z9qsp>45P>k=MP*3b}ndn1_m zIM9E}0`8ObXhl#aBqX5HE4!=uhK^I_dDoy`zd^T077Jd~VsWqP!*B3f6VM{x{ss57 zTkWu;%mJ8btgct@sl;1kO83=Z8Qo}b_YP6IZm9OoZffw>s2RuFT&M|SuP2v`Mh0zi z^d883I@aSsjCp&T%pP_i{^@r3<)}THUi4W8A97R!IfuUac-+diHLB`cv-nDZ9!M*s z@e$`%WwFe38pZI0Qo}5D7FZ9Dxp&K=p?bZg`p=)xkl`gW4=WPb8b^EI?0IvK*NTfz zowObtM>`U&H89#sDGYg^=yS*6kL#B$^k&>9*%B2FOlhLYzac1v^a&*eCBiU zE4FL9e#mKSx?CHYurACHae3W5Xm`}oD2!o42g~n_EuWSu_eQNr(#nudN z;V;7IeN5wq&X@%s%-knMUo_lN-+(u={2P3xw~z^>1dJm9UK`Ipt?^N5Ljtow9{u)!-T5 zu|hPyOX-56qozxCSI}UPV{JaYTv+W+*9tHFw8-Rl zW`*bQZl3k+4e?lH7kW*fgrIa;J&RK9CQ+Ys6>4aJ(TkHZk5$|%B#b52wwI9$>|1Ld z#LxGbKc{oYv)6uLY)tYO%9l(ly4}h-vQ}zY^Gmy*8alX>B2qNrE{iTyRA%JD@el&!|4^*`v{_$CwD!|w~2yM{p(hc zN`+o#FW$+Rz4wUyYwWMfzX;>_!=>Evsg&~%?5%~M0{V?=`1b<%i({~->M~Dkd5c^n zJqB!Q2zj4jP;JPEAYNgLy9ir;oo;P~>myF5_UO(w6$?5O>QY4-iS?_{t>a-wlI&p~ zVkz3}I{**;%4|=NK!X!36LIcjxOoA%?Mfcn2?R~5<&1YL`-dHl2;SN}IO?*Tyl@(% zp41TK5Q>#zC>jB`uGKx zbv>SSRRZ27yzl4ucsxh5*U}>2P1|f~Ik^dhO^G8}nT4R&*P%Wx6U_EDNiK|gFkFG3 zRiLh19`4`tQCCyu%2kY{qeSVOb|jN_gj}!_iiioKURawi>TLbgv04dXCQ+rmVBr7{ z5-0g#FraoBai7&BXo~USk#pVxe#O?Gj+gq*<2K8>0k!nIFNu|%LMhi}mhs2YqpG%n zg*MuVuBE(eb3Y3@+e*kR^I4h3npOlj%@B|;VTvMAt9YBaQI1k`SkmrRhff#n)$b1Q zoZ9ZCfSkGQaMmNtsf!o2`zhswoxP6hSwqvzV_c^UwQmN(A}EizY-)9SKXvcR$3?WG8q5c3wBY>+|()d(s04!RFnx%(>fR3F|hc;ujf;ml0eo*Yac zmjYoB9750Min<2!7;2A-)fq{NHTC_9_aXru-V%IEMa1Lb>exSQ*g2%pX@RAv{&`m;cPQiaYxV$swf>4FKW2ImH|g%O7~ zWegQ?C{pW4+qslS-WZ66JhsK}*MzXLB`qH8AGJ!(3 zfexwo&QRF6bJLd0E`-phJGq>1TA2aN4+kU3*~y_qG0mx{ETr343QsW7Kw0(c!5Jb9b*n4KCDLGtRCb zrl>YzR-$AFe+R9AmWg^e?oQ(V?D>kHc!Fv&eI-z@-7}~CNxk#ZzJ#bUd-ms^rN=_W z_4Q^SDxk7P*q|oHfHMVjNn(L^jnk6QHP8*f%2!U97|wyv!Dfsr)<Fm&RXaou1yr6fb zHJ^d=Ge0sHvgE$rfrA~4#cYUEPl>b9xB^|)lj760H2;34?+Di*ly5qSHFOKME<=wu zh$SfcX5JRecA3}#BOwTV6JDq5j|zXjF}-h(ji_1=pa^~h`~V|NxZ>)L95yn8T@2~oG;(aa_2uEN}qIST-bz9>NK|v0m`c`?(h&LH9EIuc5GGb9nX*tp;aWAIG0Yf64IXT*Lb?5 zRot{Xw=YAUpcSe=EI}-5iA;E5*bEpX3^@&!>|$9}x)$eg&^}q7Ef4owOX)GpOb`Q7 z(G-M5P%$k-6?0J&s2ddago6O~fdJX~Ao))VgKCMlqMVLPg>jc$1|{(d7nVP;m8qQw z#t<_$XoopVGY`hxi2~{hKklH7MKU8b6f$D7LV*uN#k5(ljrz)#%TZ+zTpmGqKH~N; zi2sl<6}f`8ri2im`&jZn3a;yDTG>Ax`#2r`v2>L(0#D%j7OeO14YCGR+;ssjl3$Ms zjs-_f>1$v9iwwx7CoXHDK)9z06!-2!=9W7AtQ zwN?@W@L|2GJ$#+uK74n)2bWuFrrqgdm!WjSjWTAFgRX?D!pr2yg`)QJHP_uuh9c)N zaonHy_1mNm%J;+HSYls;JBTu0cxxdaR#w4q@+g4OUx$0*yA*B{#ir77q3G&3#YG}> zWy0qBQW!F6d7L~RI_SfS&X6cT)YdnUqbmqIzw86=DX;@YSsCCUu&ju1w>l^rtQ_x7 z5}1*r5Te?^ucFt^3zrd*ZBkFp(>CmdcW6o%R8*H|lDKGe0y}ZA1g~2o+{JQvbydTP zsE*PD#Ff`VtXD#;JCQeQ{-OkNb2MG>9x0G!@D2DHY+XK(CR+j!l`tl;8h8_g^}$Ts z03N^5PJpVLcR+oIL3|N{Cy(>>NY&zJ6a~Rb zf*~rt{|RLgVRP`%_*uw&&BZ|Qet;~-f|QYf{`E#+5gwW^EINUsi3t6)8zh5SxQgB= zmr!}dR|Zaf{G?l%!E{fDbR$o&zUJbxgP90 zu|BaceN9Hak1BVL)i~#8@Ji2R`ROW%4=3&E8tYJBl(k=r{R*m0S}IvsidmZWPqxFg z7KP}|H;k5g35q0~8Op?|XMUTg(+tO^?u=X!6vz4Kv>4oJ0U0uNrnW-p)+c(< zrNcu-vDt>17VBp^`>f6h7O;0s_`M%7sGw2|Pd;Kx2oh@jcS$Vaxd=z9S8vHAeNxyN z)AgcC+;xekv#qzYoAVXs%p2S>bJFOqnesO^Rt$S}v;Cro-xMh?e!>@GjyU6tn+1+V z12$t6)jzSWI)s2V-7T(2(~0W7j0&att3pGbMus{qlJoc}jW>k6S(lP5o}~v28o9P1 zZ}uo~qAXF3aV=tT?uv{{G;>SSwKw@kE4=5ir29DN zz>h^j0fmFxGwxK6&l|#tBl1&GSvSDEu}CZ zrZ7a^4~U|W#?BmvUef#+g7|h4^AatP7bvg;ja3&DPcQx}HVw5So9V|Y`$=t-elqm) z4@`Yf)bJ}!FI{bq@s2L*WQsL>8><-TQ!PJN56Qgl_O32?i-Vw(kUXvPs+#VlU1S$G z!P&F0HGY+a-{zIgK%tX-)OTnraMbE@y8SZv#zl|5u%;zH`s#MlGkamqjjT(46Vsl> z4LPm(6Nd>zk)}(%`QKxa98j6GPEVTwD7yzNezA4+JG%*xjQM1xg z{4f_%u~J)RhHnfjv7RIc11Nz)=pp~P9hbQ|^_Z0s3+qk{;)=|9O?eSs*;tuH#T?^r zsZMW?{Ps21&Etx)%KM<_w)M)@>wCoVVD2auC#4ThaDrFgnmvcp@uUXTE0pN_64CWD zYt_A#8p3G?z{xwSQI!)3LGF4wahtZ!$9qhJcZNWsiijkfsRwg03gcvcLo~H7si#M* z8-VW??K9v^e##+QC_hn)##hAEEIAsuA;2W@9~aT3LEEVRkc#$mVKp-r@BdIwz$% zvP5D7yxiUfR}x_dFqoaZ!-V|}aWj;NR-Fk6oMt*FR&u$8fIxCiO&%Z;-c*(ykjq$9 z9T-PP90Ar?Cr#c{q8M2awZ-n54+5P#OmYb;UQKs?4?a?5baUYII+F)1uzBp5wILvy z-fU_=j*)jM?po>~d^1|JOr#933k+@6ko|^s%g3Kqt4UX;RJvOcE?pnTi|;JjdP2T4 zFEpb?x2en?uRQ9oDs|nyD&ZzAGStO)zr!|MMU0#JI#C*DqMX2e!`R7*NqxpC!ylC9 z8@?(d^Tpk$?IikVl;G8FWc%S&)=N8=$^dBE*oc zcss%%!pmPnA{;X(%lp=4As`X_0AI(oej(DaBsJ_xO<7pG3g9KRB}o^fw%L~1Pi@GO zcY%`*xm|U&qD!~%)c-y-Z!E84?Ul#!!)Ch5{snXS)AH?RDijKTAKx%b%rE(M^r4b; z*=vlwJN=bodffczVt69^&a*dLDdrupH|@@QG5r*7CXwBGhptn&O{GIV-_cSXH_>U~ zE<7dVec1oZkgol^J0sEg#+toW(zTYfKxDs1o;8HE3DD9aRAy~tOvob4SNhGeJcWn0EQNX~yvwm;~xJI71o(_6_dtR1xHwW9>a5V!G=&(SP< zGn$@zp*H{z>bX_2Sr5W|*tSHF1LN*T_Cwd=k;p;O2ViuiY0}@TYb9;?#_b6vJg(!Y zDA`n!Jv$7C-8l@~zO|#Mt^{L1n%$ZoMMyh=J#0K$NQI7Hc?r$y?Xc!TelHW33QDp9 zFvB*IIo?vsp|(4?C8EIc@yt_`EHUGLZxA@8E_9200cN41J~UdSVWezEW;&ZWy-&8q z&ISc!Om-}ow#1T>`D6b4>|7XI7&;k7bIHO9NgEyQZuGhG8yuu!i8a&;oGrAk6FM=w zQ}|>Qr9V|(oXr&qsRYAW+6Ve{f_f!$1+MjjXu<+#-ze`0zj?8}AJ;q7< zDW*$btfzI|uQj5x(6J~fb)6JVwbfM)NhiJ^^)+7qQoI*=y`!O0gwj=C{qni+f3EKpDg zG+fgQYdT%+K~oEVR74y`f-~pR^_q~Znnq^mqBW^U)-nA0hCNslqyPc}0{Z6%N$meb zfue)VeFuUIe)NHW^l5+L`4dkdf3tX3d)om&03S)(Tn4>`7xt&iYrwl=O*|Kk6 zcwDpsd3UBwkZ7vb?YQfCrBNKTk*G8Tbw9UA6@-8rf@Mz=zyC%A^9WTz+UvVl2ioh>nKkxpI;1Rn%G0) zy^6=$^Fn{|G%wl`vd<`PbbUjsl-FKSDA_i9WtyCa8bEuTd(gjXv)>NXYdqA-qduSQ z@M~4^q(P@o5@#lbG#c+=*9k8~nZ~5q8uURgnj1P|HwxW>xegn0K#q<~0y*|;tft{z zXWYk23v4r*5A7taaX6zIc~K|Zll`9xhQiav1^CFY>6hd2E?S;i(k-UmD3kCKIrUz~ zGS}eW2Gyq%XK5R&yq#VB@gy@YM)^j#7T!JqV&akuk*pFq9%o8fN@ac{FO}Seo^kOm z@v(J%n>P4iPw|BK&93K8@e*6bZc5`~fQ;qhAr=sLn{(SMX6$1ggK!aL$=S5}1H4G*1fKge@X7#eUX z?IA7S4A>(JSBOtNKk1D>ZbpUF2HI$8(m*_iJVq%n?Xk_h^VWW}Yx1@A2*ty!p)2YX z9wsqcW-YD2NmdUA6;uM$<}dXApFI|X#3!P~SH(99d&m8}a7XxbOY)m*k&deULW7*Cooqni;y`Hgw!+YGk*Sx5H@P zziO*V+kP0ds^HL6*xIu!n(AK#_M5*m*(%8%yw)73R`)j7Vi{j~n}s|HZiKZbQTSz- z0|U2TU+1f@B#cS6!{93cZlKv zBU|mz!PAf7O3BboxTEL=s%k*#!B|tT)nCbT{AwFOJo97xg1sGS8345rntrLJV%^)l z)74Y?M$`<|%nhSisg17L#?nGwckqDpQFs60CaCNIcbNx|RXhSTT$ixQUi>Rp`1QY6 z9ffF!)Dxb=V( zj>~4H^PrVpT{5@|AkEfOBgM=R(IxP-IVg3=U1deE=}(M&K8V#+8=!TjM~u8jlI@HW zvm?hHJbVR_<@id)9c6M^!IIH`;|j{a=>f|C!0ZTLzU18MN&mR^?W(e!`;_Hg&{geS z;vE=s1A4#)tE^*P{Xl@Q!9ejc}=~lc@x`5YSBYL9-6gLu>89=wM^z#x8 z2=eYS67}Z0BE$e-xxXXG7`DwovS{ijQ|;5K`71Up*G2#df4 z(mSs^LC^oCf|1Xc_l%RaQYps!5}H951JlSKb&bKdCAIGJ(vv4ne4`?(h>_^-$85pk z>xsES-w4XyGg;~Rk~QeyO2n`;{Q%F~fA|2Vvq$rS>C+D@eZ@jAn)Dv1tXc)I&gf^j zlzf3g-f8wDPUc05er4BuG~NNdYxYBgW2T(R;ST`&*D^g>moDyPjOQO3*S1*&9|GJN zl~*9wRdowjNkcJnNH*6sx%Y3AZiVat1y{W39pR3DYhn)|-NVF}qMo5KmtT2%Tk3yP zy<2F;5L*6&WG-)hGKR5F7QwPg)tEU;)mx-#&7Y+iFEck5m9j`xnwd)}Sfr`XFQgSM z{r8aCnS;yv;d#^a)T0vn^(R{=LymKg=SkD<<1-+BBlktaeeF zh0Z(Zrn&w`R)p)EO-`1lD@(PN1{%Xn(fKLI>A?;X#MSLSPr4P=J1qIn4a8L(ViZJ;yU741d%%z5v0cDnLU z00A^gGQa;n2J6mQeQb@cJm&&e+~t6A~_M9urJt^ z0Az=AqXh{={s}N=R{#(j{uxb5D9Rb_NN~*lPk`(`o>M+B9~E~tTj3Vs7mRbAs}bl2 zyW{>InT7U@R}4Of0>4Sy;Ww&{@x80Rb>ON;$ZU@5zs9Pd?me5Tj2#RefW4vEr(6}W zPd}YD2z{u@Vn-MRSYN3=VjBVulx1SHk&wdL_8ZkDym55{my=qqyAQTqCuXyH_w*7uZ%j2wy$9b8k{hz`{m9-TtNsU8wOMlB*&Eo8h_pfvZ z(Bo$7V$!3V?c#Ooe=`vnhb|#a$&tJNuVq^KMR-&z%iI5qi%8Hc*#At9P1PzkDlGBeKwU@@*2phfrD!bzomhM@?E|Md`)z-k zz@@?q0{#kZC!wpd*Pp541=pw7S%X zWA+NeOD-ijQ(lD zN3`zy`t4Ggy}xGQ&wm$YJbkwT$Pc8v1ELQ&**o(i4+uCd0$g5K{SyK{K*;V0eZr1PYD;rYrUd*hnJ z>P#2gV`VtNbwq~nAM)4st~hs4@fAW=W8YsRgRlw1u2F}-$`zhAP-EkdoMXe~0S&F} zp~9oMtq`*STtvR~cmeep2zh`Z2B3R}PgmS3vKZP&dCSU=N0*jn z=h)p3{6Bu{3Bn<*kXH!XX}Aa?{RR)U|*WNKxXec{1L`6-@?0hA&MXHl1T&N zx9N*BGVJZgMyV+NPhm9cDVEPhSv>3~v;IeHI)DwvuiQ>bj4&Ml1o*LR)V`3}7Q3s6 z>7*MKPhLG=^>nWEu{zg8@SFj@bMMb10Z_TahcDT)dg812{?_<||8wIX#&<=x*#)^c z;re^CU;IlB!9V)y-*u(3|Dr45S^v?Mz&lRU{;rYyO{o1xZS8E_{*>YguChn% zN#X77DMR!h6cX3))xAffh>7e}W8<_`GvlJv|4%cmma*ed|20V0rN`f|`~E)(tkYV} z4vJFKjsGW^{QcW6S?R9Ud#z!IU$XwY>i$1rPOCZe_zOk>ZI-ghh$nU5wOC8Wq5fZj zXY?1^Z`s!b#8ZiByXQ=zejIQgwqK&b9Dea}v}3*RiD~g*^X_VN1DdbATzB9!BZzl~ zA7Ib>WUiPjbp|hPP#4 zXhLl*Y1TDyal{(dQiLN|8^m!>k@bwC3Sr|--SA)auuu)hTk;#rtG#Zz_LJ#EZm2sp z2es_Nehyff)*ET~jG)z#yfV_zk*ZOw!#}w|+jMOoK6_>zzIty>hs3{Km?(TNPN-K( zYZ6bZm37aTNoy4t8;>^zO4uCwCor3k?r;EOnPb-aj^{k5Fe?+cMt@>K764rth!T^O z#m3knw<<@m(Awgu2l?-;Q;aIS~kU^5!?`3G;p64@oC5zej{X zWdkqp3yEi6(C>;P3YdP&XPAIZ)n8KV^2u!9+@4$(N*{D5B+*yLf2+D3Z*dGF>U6bB zQeLT)F=$=*+#cCVS){9?0B<@9FRugLgC%$UA3BA zHSc*3BiQ`CSJ9s6juYs#pxA-EoND5*Ib8|ma_S5kY6#L}yi<@QYOC#ai=G;rWHh1* zk3_3!r65ukYew0&&O8K(x24=*GcCEOJwRM0B{`MBdOV&*P>}ZnZZ*WU=9W6E2~B7h z!nG5$I*@JfM&B(zkGkrIu7C@!ltMqver5icOw$!L`t_i!&LCYnUl$vZrBIcqf#+0* zcSOd|76Kj$yt+x?kaeGkpmve+=wM`E5J?<^QrLvHQ95$9d{euG4_$6y=1G6VF!J=> zBIh$9yz6;7lsNtSbGdX3_OQF7z|@w$Ya_BQmqp)he>G$D1-p`-dpJ~MMFw75WJENS zbpOx8nBnTMa7*H{saTtKMQxHdgJ}sAZ_4e zrgon>4#fN8heDWn3$92e&#?KS-&`04DYhB*+_1T|CY(~&5FCt-9%Lc^+o_ ztEzfl@wq!q+a%sxZZ%2I0p~g<)61*Bvu%NZ-#VAu1O4eo9m3t~u3Q5ZF0S1X7r?L! zz#-#dNGo>#**+)}Urzw)HF6m7?zq7VPT>X4TNEna?juB{%q%ZbmfUkj*L13v{{}p> zNh(*wmbjyIT()7APkowx?mLJnL5$O%O_Ps36;MAALl9^XB@l?e?U#VSfqZP8z}EcP zKXJ|Yr6Og6Ka5KxDsje{M1wE2emnPly~mkUfjHJcG6XD~goYYpG!_Gz1IZ<1e_(ub z@{AVuB*S5v2ZQ4-F7JryD7QP8znbR``d0N8`qphbRW0r_-MCpmUI`5ScBUI&Hqbys zAT(S1F|+0KgU#-;tLqb7x7!noozpI|pEimM_8ZQT@YPb^HrQ)hOYP+}e>aIWg9y(@ zOCDVJ>-v&}<>B{+Gyv__#rwUR%6n#pZGbDH8}4?lPY0_T=~n6rV4(xyj%)6Nf24ta zYjuTn1Zii4np9P#^{kLn`@Go={ZW*|qsK>4GRZz@A4T05;U6szA}9NxAF&NgCw*k1 zboKnJ8|o?TVYZS14AG*w3*q(-_DO2i{0M(9x%rLYsIXjT>&-jICS0e3@Q$>q`5pC0 zLx@jlX*7>iOJ;n*F-k#=HI7pzT(P*WIxcIpu|d7CEYnPFfj&P-k%OEoD6x=kj`OQq zGD}9Z#HL(Wm8qAmSWu~8n|1wH_;e)JT}rd`|9mCU16knE`jn`#H6AIK_{=*@8jPQkmw(7H+)C^|nx&W+ceWXS>qZsC>an1aS2H{n;0&uC-TH$xi48>4k z6((Y(T~(aHlM1utgke^72q|vAxy&MQr^U}9(k7EkLnRw&_&Q37&JIw+qHZF;c*8-D zx%HzCRO+am{O`r{I7-`;PkCDmu?hE0U1KXG6a-sk?eeN->I$82p?kQ2-{#q>aGCf) zgta+@-CcRF^uJDsOG=_0)E=7=pt>3)9Hf|zzD}_-CdTZWG*-3fmy{()1pu4EkZOUu z?x|)s~~MAxb*h}jsVwQC4{5PDrhtmH;A`FXx03C>l&+vK$fr?VgsqXZ~4n9nyR z#2fK2A`?##sCXDnIQc9r;PR*1agh1Y%o3h88&hrQFOj(uio8ZII?8W8?)Cqx0lmrNfc7J#e0xJVe$M3Dcup7Usxz0Be(d zw{9eRzPsMDD@w zWbBakPTXleb3x{OIahhG4rTEq@@?Dh;DK=J!GgbZ=aN4oDQbG)ukasym3xMfOmc~ApPm@pqCOkUh>bi< zScyqZ6-w*)T$=WJ>p13}5E{Zfu*f@(K38G6gHhM;arTnsi^= zRC~WXu!dpUDZhs}@rukH+V;EzdtJ85MzK*D{77~84&zM~wvW_JcH)Yrom$B_oikAn z0?MEk8f_&w{JNyYNj&DXKjb8N(hh{9u;MlM!9sL9e8hkoC|x;0pJ7=)spFeXx^NLl zalTF+;qJmvnp@Z?A7;r609Q@gGsvL8f7smT^(5|q?BFvdv#4V7`2M9y=ldaRw)W|R zw)O$8s7eryseVI>jXe0M$MG{Qq0xIX_4#0u$A%gCjK<)h(cx3MUG=qEtbteEJ@;P7 z9!$%5zCLi!Kv(=0Rhc|X28Tv{dvFXkOYzX7Bu&eccYjf#maOUq7;npa>pSpiqhbw_ z{)#N@6^kd0t=B0@J!P>!Hr2_zEK1E`e#S$yLl7O&q8cHm}LTF)wHJ zg{%0H)u4QxG*#0_(+^Y32eduuY+WctwNumC=T{;aG&b6FTJ&&rb<fhM4_7Xl59&?=i&e(YD0D_;8FNeW-6qxliN9N*eqtM5{9@So`p6vIwdJL;>TW-`U z+^c3ENQ}|ndU4lM35I*TzPxjavnRgN#@G$wXQDH_^O@geK;LjLdU`D8QcSzPMp_M7 zF1#${W_2uwXyTgaRl~L12{byYet1l$IBQLInq+=1%Hp%4&flj}u$$b{rpxy^yf+