From 14db43c67c90334d069e4118f1cf653a33897bd9 Mon Sep 17 00:00:00 2001 From: alekswilc Date: Sun, 22 Sep 2024 16:55:00 +0200 Subject: [PATCH 01/60] (feat): initialize for v3 --- package-lock.json | 163 +- package.json | 27 +- LICENSE => packages/backend/LICENSE | 0 packages/backend/package-lock.json | 1680 ++++++++++++ packages/backend/package.json | 33 + .../backend/scripts}/clear-redis.js | 0 .../backend/scripts}/mongo-migration.js | 0 .../backend/src}/http/routes/leaderboard.ts | 0 .../backend/src}/http/routes/profile.ts | 0 .../backend/src}/http/routes/stations.ts | 0 .../backend/src}/http/routes/trains.ts | 0 {src => packages/backend/src}/http/server.ts | 0 .../src}/http/views/_modules/footer.ejs | 0 .../src}/http/views/_modules/header.ejs | 0 .../backend/src}/http/views/home.ejs | 0 .../src}/http/views/leaderboard/index.ejs | 0 .../src}/http/views/leaderboard/station.ejs | 0 .../src}/http/views/leaderboard/train.ejs | 0 .../src}/http/views/profiles/index.ejs | 0 .../src}/http/views/profiles/private.ejs | 0 .../src}/http/views/stations/details.ejs | 0 .../src}/http/views/stations/index.ejs | 0 .../src}/http/views/trains/details.ejs | 0 .../backend/src}/http/views/trains/index.ejs | 0 {src => packages/backend/src}/index.ts | 112 +- .../backend/src}/modules/stations.ts | 100 +- .../backend/src}/modules/trains.ts | 2 +- .../backend/src}/mongo/blacklist.ts | 0 {src => packages/backend/src}/mongo/logs.ts | 120 +- .../backend/src}/mongo/profile.ts | 0 {src => packages/backend/src}/mongo/steam.ts | 0 .../backend/src}/mongo/trainLogs.ts | 0 {src => packages/backend/src}/types/player.ts | 136 +- .../backend/src}/types/typings.d.ts | 16 +- .../backend/src}/util/PlayerUtil.ts | 78 +- .../backend/src}/util/SimrailClient.ts | 436 ++-- .../backend/src}/util/SteamUtil.ts | 0 .../backend/src}/util/contants.ts | 0 {src => packages/backend/src}/util/git.ts | 0 {src => packages/backend/src}/util/time.ts | 0 .../backend/tsconfig.json | 2 +- packages/frontend/.gitignore | 24 + packages/frontend/README.md | 50 + packages/frontend/eslint.config.js | 28 + packages/frontend/index.html | 13 + packages/frontend/package.json | 29 + packages/frontend/public/vite.svg | 1 + packages/frontend/src/App.css | 42 + packages/frontend/src/App.tsx | 35 + packages/frontend/src/assets/react.svg | 1 + packages/frontend/src/index.css | 68 + packages/frontend/src/main.tsx | 10 + packages/frontend/src/vite-env.d.ts | 1 + packages/frontend/tsconfig.app.json | 24 + packages/frontend/tsconfig.json | 7 + packages/frontend/tsconfig.node.json | 22 + packages/frontend/vite.config.ts | 10 + yarn.lock | 2322 +++++++++++++++++ 58 files changed, 5061 insertions(+), 531 deletions(-) rename LICENSE => packages/backend/LICENSE (100%) create mode 100644 packages/backend/package-lock.json create mode 100644 packages/backend/package.json rename {scripts => packages/backend/scripts}/clear-redis.js (100%) rename {scripts => packages/backend/scripts}/mongo-migration.js (100%) rename {src => packages/backend/src}/http/routes/leaderboard.ts (100%) rename {src => packages/backend/src}/http/routes/profile.ts (100%) rename {src => packages/backend/src}/http/routes/stations.ts (100%) rename {src => packages/backend/src}/http/routes/trains.ts (100%) rename {src => packages/backend/src}/http/server.ts (100%) rename {src => packages/backend/src}/http/views/_modules/footer.ejs (100%) rename {src => packages/backend/src}/http/views/_modules/header.ejs (100%) rename {src => packages/backend/src}/http/views/home.ejs (100%) rename {src => packages/backend/src}/http/views/leaderboard/index.ejs (100%) rename {src => packages/backend/src}/http/views/leaderboard/station.ejs (100%) rename {src => packages/backend/src}/http/views/leaderboard/train.ejs (100%) rename {src => packages/backend/src}/http/views/profiles/index.ejs (100%) rename {src => packages/backend/src}/http/views/profiles/private.ejs (100%) rename {src => packages/backend/src}/http/views/stations/details.ejs (100%) rename {src => packages/backend/src}/http/views/stations/index.ejs (100%) rename {src => packages/backend/src}/http/views/trains/details.ejs (100%) rename {src => packages/backend/src}/http/views/trains/index.ejs (100%) rename {src => packages/backend/src}/index.ts (97%) rename {src => packages/backend/src}/modules/stations.ts (95%) rename {src => packages/backend/src}/modules/trains.ts (98%) rename {src => packages/backend/src}/mongo/blacklist.ts (100%) rename {src => packages/backend/src}/mongo/logs.ts (95%) rename {src => packages/backend/src}/mongo/profile.ts (100%) rename {src => packages/backend/src}/mongo/steam.ts (100%) rename {src => packages/backend/src}/mongo/trainLogs.ts (100%) rename {src => packages/backend/src}/types/player.ts (95%) rename {src => packages/backend/src}/types/typings.d.ts (95%) rename {src => packages/backend/src}/util/PlayerUtil.ts (97%) rename {src => packages/backend/src}/util/SimrailClient.ts (97%) rename {src => packages/backend/src}/util/SteamUtil.ts (100%) rename {src => packages/backend/src}/util/contants.ts (100%) rename {src => packages/backend/src}/util/git.ts (100%) rename {src => packages/backend/src}/util/time.ts (100%) rename tsconfig.json => packages/backend/tsconfig.json (98%) create mode 100644 packages/frontend/.gitignore create mode 100644 packages/frontend/README.md create mode 100644 packages/frontend/eslint.config.js create mode 100644 packages/frontend/index.html create mode 100644 packages/frontend/package.json create mode 100644 packages/frontend/public/vite.svg create mode 100644 packages/frontend/src/App.css create mode 100644 packages/frontend/src/App.tsx create mode 100644 packages/frontend/src/assets/react.svg create mode 100644 packages/frontend/src/index.css create mode 100644 packages/frontend/src/main.tsx create mode 100644 packages/frontend/src/vite-env.d.ts create mode 100644 packages/frontend/tsconfig.app.json create mode 100644 packages/frontend/tsconfig.json create mode 100644 packages/frontend/tsconfig.node.json create mode 100644 packages/frontend/vite.config.ts create mode 100644 yarn.lock diff --git a/package-lock.json b/package-lock.json index c177f70..89f3915 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,27 +1,20 @@ { "name": "simrail-logs", - "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simrail-logs", "license": "AGPL-3.0-only", - "dependencies": { - "@simrail/types": "^0.0.4", - "@types/mongoose": "^5.11.97", - "dayjs": "^1.11.12", - "ejs": "^3.1.10", - "express": "^4.19.2", - "mongoose": "^8.5.1", - "redis": "^4.6.15", - "uuid": "^10.0.0", - "wildcard-match": "^5.1.3" - }, + "workspaces": [ + "packages/backend", + "packages/frontend" + ], "devDependencies": { "@types/express": "^4.17.21", "@types/node": "^22.0.0", "@types/uuid": "^10.0.0", + "concurrently": "^9.0.1", "copyfiles": "^2.4.1", "typescript": "^5.5.4" } @@ -262,6 +255,10 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, + "node_modules/backend": { + "resolved": "packages/backend", + "link": true + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -388,6 +385,87 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concurrently": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.1.tgz", + "integrity": "sha512-wYKvCd/f54sTXJMSfV6Ln/B8UrfLBKOYa+lzc6CHay3Qek+LorVSBdMVfyewFhRbH0Rbabsk4D+3PL/VjQ5gzg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -889,6 +967,12 @@ "node": ">=12.0.0" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1263,6 +1347,15 @@ "node": ">=0.10.0" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1350,6 +1443,15 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -1496,6 +1598,21 @@ "node": ">=14" } }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1675,6 +1792,28 @@ "engines": { "node": ">=10" } + }, + "packages/backend": { + "version": "3.0.0", + "license": "AGPL-3.0-only", + "dependencies": { + "@simrail/types": "^0.0.4", + "@types/mongoose": "^5.11.97", + "dayjs": "^1.11.12", + "ejs": "^3.1.10", + "express": "^4.19.2", + "mongoose": "^8.5.1", + "redis": "^4.6.15", + "uuid": "^10.0.0", + "wildcard-match": "^5.1.3" + }, + "devDependencies": { + "@types/express": "^4.17.21", + "@types/node": "^22.0.0", + "@types/uuid": "^10.0.0", + "copyfiles": "^2.4.1", + "typescript": "^5.5.4" + } } } } diff --git a/package.json b/package.json index 6ebc981..0e3d6df 100644 --- a/package.json +++ b/package.json @@ -1,33 +1,24 @@ { "name": "simrail-logs", + "private": true, "main": "dist/index.js", "scripts": { - "build": "tsc", - "postbuild": "copyfiles --error --up 1 src/http/views/**/* src/http/views/* dist", - "dev": "npm run build && doppler run node dist", - "scripts:clear-redis": "doppler run node scripts/clear-redis.js", - "scripts:mongo-migration": "doppler run node scripts/mongo-migration.js" + "build": "yarn workspace backend build && yarn workspace frontend build", + "start": "concurrently --kill-others-on-fail \"yarn workspace backend start\" \"yarn workspace frontend start\"" }, + "workspaces": [ + "packages/backend", + "packages/frontend" + ], "author": "Aleksander Wilczyński", "license": "AGPL-3.0-only", "devDependencies": { "@types/express": "^4.17.21", "@types/node": "^22.0.0", "@types/uuid": "^10.0.0", + "concurrently": "^9.0.1", "copyfiles": "^2.4.1", "typescript": "^5.5.4" }, - "type": "module", - "dependencies": { - "@simrail/types": "^0.0.4", - "@types/mongoose": "^5.11.97", - "dayjs": "^1.11.12", - "ejs": "^3.1.10", - "express": "^4.19.2", - "mongoose": "^8.5.1", - "redis": "^4.6.15", - "uuid": "^10.0.0", - "wildcard-match": "^5.1.3" - }, - "typings": "types/typings.d.ts" + "type": "module" } diff --git a/LICENSE b/packages/backend/LICENSE similarity index 100% rename from LICENSE rename to packages/backend/LICENSE diff --git a/packages/backend/package-lock.json b/packages/backend/package-lock.json new file mode 100644 index 0000000..c177f70 --- /dev/null +++ b/packages/backend/package-lock.json @@ -0,0 +1,1680 @@ +{ + "name": "simrail-logs", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "simrail-logs", + "license": "AGPL-3.0-only", + "dependencies": { + "@simrail/types": "^0.0.4", + "@types/mongoose": "^5.11.97", + "dayjs": "^1.11.12", + "ejs": "^3.1.10", + "express": "^4.19.2", + "mongoose": "^8.5.1", + "redis": "^4.6.15", + "uuid": "^10.0.0", + "wildcard-match": "^5.1.3" + }, + "devDependencies": { + "@types/express": "^4.17.21", + "@types/node": "^22.0.0", + "@types/uuid": "^10.0.0", + "copyfiles": "^2.4.1", + "typescript": "^5.5.4" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz", + "integrity": "sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.17.tgz", + "integrity": "sha512-IPvU9A31qRCZ7lds/x+ksuK/UMndd0EASveAvCvEtFFKIZjZ+m/a4a0L7S28KEWoR5ka8526hlSghDo4Hrc2Hg==", + "dependencies": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/graph": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", + "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.6.tgz", + "integrity": "sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.6.tgz", + "integrity": "sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", + "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@simrail/types": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@simrail/types/-/types-0.0.4.tgz", + "integrity": "sha512-AknM5FP+crERb3m/YtZqCgdFbrwUEwYB4BXfv1z+b7CVSrRsidAnaMIJZw/MhmsGxAmNIqQK7RPhDEx8qNzblA==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@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==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/@types/mongoose": { + "version": "5.11.97", + "resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.11.97.tgz", + "integrity": "sha512-cqwOVYT3qXyLiGw7ueU2kX9noE8DPGRY6z8eUxudhXY8NZ7DMKYAxyZkLSevGfhCX3dO/AoX5/SO9lAzfjon0Q==", + "deprecated": "Mongoose publishes its own types, so you do not need to install this package.", + "dependencies": { + "mongoose": "*" + } + }, + "node_modules/@types/node": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.0.tgz", + "integrity": "sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==", + "dev": true, + "dependencies": { + "undici-types": "~6.11.1" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "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==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bson": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", + "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "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==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dev": true, + "dependencies": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "bin": { + "copyfiles": "copyfiles", + "copyup": "copyfiles" + } + }, + "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==", + "dev": true + }, + "node_modules/dayjs": { + "version": "1.11.12", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz", + "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/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==", + "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/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "engines": { + "node": ">= 4" + } + }, + "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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "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==", + "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==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "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==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/kareem": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", + "engines": { + "node": ">=12.0.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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", + "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongoose": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.1.tgz", + "integrity": "sha512-OhVcwVl91A1G6+XpjDcpkGP7l7ikZkxa0DylX7NT/lcEqAjggzSdqDxb48A+xsDxqNAr0ntSJ1yiE3+KJTOd5Q==", + "dependencies": { + "bson": "^6.7.0", + "kareem": "2.6.3", + "mongodb": "6.7.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" + }, + "engines": { + "node": ">=16.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/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==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/redis": { + "version": "4.6.15", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.15.tgz", + "integrity": "sha512-2NtuOpMW3tnYzBw6S8mbXSX7RPzvVFCA2wFJq9oErushO2UeBkxObk+uvo7gv7n0rhWeOj/IzrHO8TjcFlRSOg==", + "workspaces": [ + "./packages/*" + ], + "dependencies": { + "@redis/bloom": "1.2.0", + "@redis/client": "1.5.17", + "@redis/graph": "1.1.1", + "@redis/json": "1.0.6", + "@redis/search": "1.1.6", + "@redis/time-series": "1.0.5" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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==", + "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/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/through2/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==", + "dev": true, + "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/through2/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==", + "dev": true + }, + "node_modules/through2/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.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==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/wildcard-match": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.3.tgz", + "integrity": "sha512-a95hPUk+BNzSGLntNXYxsjz2Hooi5oL7xOfJR6CKwSsSALh7vUNuTlzsrZowtYy38JNduYFRVhFv19ocqNOZlg==" + }, + "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + } + } +} diff --git a/packages/backend/package.json b/packages/backend/package.json new file mode 100644 index 0000000..7f783e6 --- /dev/null +++ b/packages/backend/package.json @@ -0,0 +1,33 @@ +{ + "name": "backend", + "private": true, + "main": "../../dist/backend/index.js", + "version": "3.0.0", + "scripts": { + "build": "tsc", + "postbuild": "copyfiles --error --up 1 src/http/views/**/* src/http/views/* ../../dist/backend/", + "start": "yarn build && doppler run node ../../dist/backend/index.js" + }, + "author": "Aleksander Wilczyński", + "license": "AGPL-3.0-only", + "devDependencies": { + "@types/express": "^4.17.21", + "@types/node": "^22.0.0", + "@types/uuid": "^10.0.0", + "copyfiles": "^2.4.1", + "typescript": "^5.5.4" + }, + "type": "module", + "dependencies": { + "@simrail/types": "^0.0.4", + "@types/mongoose": "^5.11.97", + "dayjs": "^1.11.12", + "ejs": "^3.1.10", + "express": "^4.19.2", + "mongoose": "^8.5.1", + "redis": "^4.6.15", + "uuid": "^10.0.0", + "wildcard-match": "^5.1.3" + }, + "typings": "types/typings.d.ts" +} diff --git a/scripts/clear-redis.js b/packages/backend/scripts/clear-redis.js similarity index 100% rename from scripts/clear-redis.js rename to packages/backend/scripts/clear-redis.js diff --git a/scripts/mongo-migration.js b/packages/backend/scripts/mongo-migration.js similarity index 100% rename from scripts/mongo-migration.js rename to packages/backend/scripts/mongo-migration.js diff --git a/src/http/routes/leaderboard.ts b/packages/backend/src/http/routes/leaderboard.ts similarity index 100% rename from src/http/routes/leaderboard.ts rename to packages/backend/src/http/routes/leaderboard.ts diff --git a/src/http/routes/profile.ts b/packages/backend/src/http/routes/profile.ts similarity index 100% rename from src/http/routes/profile.ts rename to packages/backend/src/http/routes/profile.ts diff --git a/src/http/routes/stations.ts b/packages/backend/src/http/routes/stations.ts similarity index 100% rename from src/http/routes/stations.ts rename to packages/backend/src/http/routes/stations.ts diff --git a/src/http/routes/trains.ts b/packages/backend/src/http/routes/trains.ts similarity index 100% rename from src/http/routes/trains.ts rename to packages/backend/src/http/routes/trains.ts diff --git a/src/http/server.ts b/packages/backend/src/http/server.ts similarity index 100% rename from src/http/server.ts rename to packages/backend/src/http/server.ts diff --git a/src/http/views/_modules/footer.ejs b/packages/backend/src/http/views/_modules/footer.ejs similarity index 100% rename from src/http/views/_modules/footer.ejs rename to packages/backend/src/http/views/_modules/footer.ejs diff --git a/src/http/views/_modules/header.ejs b/packages/backend/src/http/views/_modules/header.ejs similarity index 100% rename from src/http/views/_modules/header.ejs rename to packages/backend/src/http/views/_modules/header.ejs diff --git a/src/http/views/home.ejs b/packages/backend/src/http/views/home.ejs similarity index 100% rename from src/http/views/home.ejs rename to packages/backend/src/http/views/home.ejs diff --git a/src/http/views/leaderboard/index.ejs b/packages/backend/src/http/views/leaderboard/index.ejs similarity index 100% rename from src/http/views/leaderboard/index.ejs rename to packages/backend/src/http/views/leaderboard/index.ejs diff --git a/src/http/views/leaderboard/station.ejs b/packages/backend/src/http/views/leaderboard/station.ejs similarity index 100% rename from src/http/views/leaderboard/station.ejs rename to packages/backend/src/http/views/leaderboard/station.ejs diff --git a/src/http/views/leaderboard/train.ejs b/packages/backend/src/http/views/leaderboard/train.ejs similarity index 100% rename from src/http/views/leaderboard/train.ejs rename to packages/backend/src/http/views/leaderboard/train.ejs diff --git a/src/http/views/profiles/index.ejs b/packages/backend/src/http/views/profiles/index.ejs similarity index 100% rename from src/http/views/profiles/index.ejs rename to packages/backend/src/http/views/profiles/index.ejs diff --git a/src/http/views/profiles/private.ejs b/packages/backend/src/http/views/profiles/private.ejs similarity index 100% rename from src/http/views/profiles/private.ejs rename to packages/backend/src/http/views/profiles/private.ejs diff --git a/src/http/views/stations/details.ejs b/packages/backend/src/http/views/stations/details.ejs similarity index 100% rename from src/http/views/stations/details.ejs rename to packages/backend/src/http/views/stations/details.ejs diff --git a/src/http/views/stations/index.ejs b/packages/backend/src/http/views/stations/index.ejs similarity index 100% rename from src/http/views/stations/index.ejs rename to packages/backend/src/http/views/stations/index.ejs diff --git a/src/http/views/trains/details.ejs b/packages/backend/src/http/views/trains/details.ejs similarity index 100% rename from src/http/views/trains/details.ejs rename to packages/backend/src/http/views/trains/details.ejs diff --git a/src/http/views/trains/index.ejs b/packages/backend/src/http/views/trains/index.ejs similarity index 100% rename from src/http/views/trains/index.ejs rename to packages/backend/src/http/views/trains/index.ejs diff --git a/src/index.ts b/packages/backend/src/index.ts similarity index 97% rename from src/index.ts rename to packages/backend/src/index.ts index 629b0a8..508314f 100644 --- a/src/index.ts +++ b/packages/backend/src/index.ts @@ -1,56 +1,56 @@ -import { createClient, RedisClientType } from 'redis'; -import './util/time.js'; -import { SimrailClient, SimrailClientEvents } from './util/SimrailClient.js'; -import dayjs from 'dayjs'; -import { StationsModule } from './modules/stations.js'; -import { ApiModule } from './http/server.js'; -import mongoose from 'mongoose'; -import { IPlayer } from './types/player.js'; -import { Station, Server, Train } from '@simrail/types'; -import { TrainsModule } from './modules/trains.js'; - - -; (async () => { - global.redis = await createClient({ - url: process.env.REDIS_URI! - }) - .on('error', err => console.log('Redis Client Error', err)) - .connect() as RedisClientType; - console.log('Redis connected'); - - await mongoose.connect(process.env.MONGO_URI!); - - console.log('MongoDB connected'); - global.client = new SimrailClient(); - - client.on(SimrailClientEvents.StationJoined, (server: Server, station: Station, player: IPlayer) => { - console.log(`${server.ServerCode} | ${station.Name} | ${player.personaname} joined`); - }); - - client.on(SimrailClientEvents.StationLeft, (server: Server, station: Station, player: IPlayer, joinedAt: number) => { - console.log(`${server.ServerCode} | ${station.Name} | ${player.personaname} left. | ${joinedAt ? dayjs(joinedAt).fromNow() : 'no time data.'}`); - }); - - client.on(SimrailClientEvents.TrainLeft, (server: Server, train: Train, player: IPlayer, joinedAt: number, leftAt: number, points: number, distance: number, vehicle: string) => { - console.log(`${server.ServerCode} | ${train.TrainName} | ${player.personaname} left. | ${joinedAt ? dayjs(joinedAt).fromNow() : 'no time data.'} | - ${vehicle} | ${distance / 1000} | ${points}`); - }); - - client.on(SimrailClientEvents.TrainJoined, (server: Server, train: Train, player: IPlayer, start: number) => { - console.log(`${server.ServerCode} | ${train.TrainName} | ${player.personaname} joined | ${start}`); - }); - - - StationsModule.load(); - TrainsModule.load(); - ApiModule.load(); - - - // process.on('unhandledRejection', (reason, promise) => { - // console.error(reason); - // console.error(promise); - // }) -})(); - - - +import { createClient, RedisClientType } from 'redis'; +import './util/time.js'; +import { SimrailClient, SimrailClientEvents } from './util/SimrailClient.js'; +import dayjs from 'dayjs'; +import { StationsModule } from './modules/stations.js'; +import { ApiModule } from './http/server.js'; +import mongoose from 'mongoose'; +import { IPlayer } from './types/player.js'; +import { Station, Server, Train } from '@simrail/types'; +import { TrainsModule } from './modules/trains.js'; + + +; (async () => { + global.redis = await createClient({ + url: process.env.REDIS_URI! + }) + .on('error', err => console.log('Redis Client Error', err)) + .connect() as RedisClientType; + console.log('Redis connected'); + + await mongoose.connect(process.env.MONGO_URI!); + + console.log('MongoDB connected'); + global.client = new SimrailClient(); + + client.on(SimrailClientEvents.StationJoined, (server: Server, station: Station, player: IPlayer) => { + console.log(`${server.ServerCode} | ${station.Name} | ${player.personaname} joined`); + }); + + client.on(SimrailClientEvents.StationLeft, (server: Server, station: Station, player: IPlayer, joinedAt: number) => { + console.log(`${server.ServerCode} | ${station.Name} | ${player.personaname} left. | ${joinedAt ? dayjs(joinedAt).fromNow() : 'no time data.'}`); + }); + + client.on(SimrailClientEvents.TrainLeft, (server: Server, train: Train, player: IPlayer, joinedAt: number, leftAt: number, points: number, distance: number, vehicle: string) => { + console.log(`${server.ServerCode} | ${train.TrainName} | ${player.personaname} left. | ${joinedAt ? dayjs(joinedAt).fromNow() : 'no time data.'} | + ${vehicle} | ${distance / 1000} | ${points}`); + }); + + client.on(SimrailClientEvents.TrainJoined, (server: Server, train: Train, player: IPlayer, start: number) => { + console.log(`${server.ServerCode} | ${train.TrainName} | ${player.personaname} joined | ${start}`); + }); + + + StationsModule.load(); + TrainsModule.load(); + ApiModule.load(); + + + // process.on('unhandledRejection', (reason, promise) => { + // console.error(reason); + // console.error(promise); + // }) +})(); + + + diff --git a/src/modules/stations.ts b/packages/backend/src/modules/stations.ts similarity index 95% rename from src/modules/stations.ts rename to packages/backend/src/modules/stations.ts index 1759da6..b9a60ab 100644 --- a/src/modules/stations.ts +++ b/packages/backend/src/modules/stations.ts @@ -1,51 +1,51 @@ -import { Server, Station } from '@simrail/types'; -import { MLog } from '../mongo/logs.js'; -import { IPlayer } from '../types/player.js'; -import { SimrailClientEvents } from '../util/SimrailClient.js'; -import { v4 } from 'uuid'; -import { MProfile } from '../mongo/profile.js'; -import { SteamUtil } from '../util/SteamUtil.js'; - -export class StationsModule { - public static load() { - - client.on(SimrailClientEvents.StationLeft, async (server: Server, station: Station, player: IPlayer, joinedAt: number) => { - const stats = await SteamUtil.getPlayerStats(player.steamid); - const date = new Date(); - if (stats) { - const time = (date.getTime() - joinedAt) ?? 0; - - const userProfile = await MProfile.findOne({ steam: player.steamid }) ?? await MProfile.create({ steam: player.steamid, id: v4(), steamName: player.personaname }); - if (!userProfile.dispatcherStats) userProfile.dispatcherStats = {}; - - if (userProfile.dispatcherStats[station.Name]) { - userProfile.dispatcherStats[station.Name].time = userProfile.dispatcherStats[station.Name].time + time; - } else { - userProfile.dispatcherStats[station.Name] = { - time - } - } - - if (Number.isNaN(userProfile.dispatcherStats[station.Name].time)) userProfile.dispatcherStats[station.Name].time = 0; - - if (!userProfile.dispatcherTime) userProfile.dispatcherTime = 0; - - userProfile.dispatcherTime = userProfile.dispatcherTime + time; - - await MProfile.findOneAndUpdate({ id: userProfile.id }, { dispatcherStats: userProfile.dispatcherStats, dispatcherTime: userProfile.dispatcherTime }) - } - - MLog.create({ - id: v4(), - userSteamId: player.steamid, - userAvatar: player.avatarfull, - userUsername: player.personaname, - joinedDate: joinedAt, - leftDate: date.getTime(), - stationName: station.Name, - stationShort: station.Prefix, - server: server.ServerCode - }); - }) - } +import { Server, Station } from '@simrail/types'; +import { MLog } from '../mongo/logs.js'; +import { IPlayer } from '../types/player.js'; +import { SimrailClientEvents } from '../util/SimrailClient.js'; +import { v4 } from 'uuid'; +import { MProfile } from '../mongo/profile.js'; +import { SteamUtil } from '../util/SteamUtil.js'; + +export class StationsModule { + public static load() { + + client.on(SimrailClientEvents.StationLeft, async (server: Server, station: Station, player: IPlayer, joinedAt: number) => { + const stats = await SteamUtil.getPlayerStats(player.steamid); + const date = new Date(); + if (stats) { + const time = (date.getTime() - joinedAt) || 0; + + const userProfile = await MProfile.findOne({ steam: player.steamid }) ?? await MProfile.create({ steam: player.steamid, id: v4(), steamName: player.personaname }); + if (!userProfile.dispatcherStats) userProfile.dispatcherStats = {}; + + if (userProfile.dispatcherStats[station.Name]) { + userProfile.dispatcherStats[station.Name].time = userProfile.dispatcherStats[station.Name].time + time; + } else { + userProfile.dispatcherStats[station.Name] = { + time + } + } + + if (Number.isNaN(userProfile.dispatcherStats[station.Name].time)) userProfile.dispatcherStats[station.Name].time = 0; + + if (!userProfile.dispatcherTime) userProfile.dispatcherTime = 0; + + userProfile.dispatcherTime = userProfile.dispatcherTime + time; + + await MProfile.findOneAndUpdate({ id: userProfile.id }, { dispatcherStats: userProfile.dispatcherStats, dispatcherTime: userProfile.dispatcherTime }) + } + + MLog.create({ + id: v4(), + userSteamId: player.steamid, + userAvatar: player.avatarfull, + userUsername: player.personaname, + joinedDate: joinedAt, + leftDate: date.getTime(), + stationName: station.Name, + stationShort: station.Prefix, + server: server.ServerCode + }); + }) + } } \ No newline at end of file diff --git a/src/modules/trains.ts b/packages/backend/src/modules/trains.ts similarity index 98% rename from src/modules/trains.ts rename to packages/backend/src/modules/trains.ts index fdf6731..64d8c7b 100644 --- a/src/modules/trains.ts +++ b/packages/backend/src/modules/trains.ts @@ -12,7 +12,7 @@ export class TrainsModule { client.on(SimrailClientEvents.TrainLeft, async (server: Server, train: Train, player: IPlayer, joinedAt: number, leftAt: number, points: number, distance: number, vehicle: string) => { if (distance) { - const time = (leftAt - joinedAt) ?? 0; + const time = (leftAt - joinedAt) || 0; const userProfile = await MProfile.findOne({ steam: player.steamid }) ?? await MProfile.create({ steam: player.steamid, id: v4(), steamName: player.personaname }); const vehicleName = getVehicle(vehicle) ?? vehicle; diff --git a/src/mongo/blacklist.ts b/packages/backend/src/mongo/blacklist.ts similarity index 100% rename from src/mongo/blacklist.ts rename to packages/backend/src/mongo/blacklist.ts diff --git a/src/mongo/logs.ts b/packages/backend/src/mongo/logs.ts similarity index 95% rename from src/mongo/logs.ts rename to packages/backend/src/mongo/logs.ts index 9467cee..b3f34d4 100644 --- a/src/mongo/logs.ts +++ b/packages/backend/src/mongo/logs.ts @@ -1,61 +1,61 @@ -import { Model, model, Schema } from 'mongoose'; - - -export const raw_schema = { - id: { - type: String, - required: true - }, - userSteamId: { - type: String, - required: true - }, - userUsername: { - type: String, - required: true - }, - userAvatar: { - type: String, - required: true - }, - joinedDate: { - type: Number, - required: false, - default: undefined - }, - leftDate: { - type: Number, - required: true - }, - stationName: { - type: String, - required: true - }, - stationShort: { - type: String, - required: true - }, - server: { - type: String, - required: true - }, -} - -const schema = new Schema(raw_schema); -schema.index({ stationName: 'text', userUsername: 'text', stationShort: 'text', userSteamId: 'text', server: 'text' }) - -export type TMLog = Model - -export const MLog = model('logs', schema); - -export interface ILog { - id: string - userSteamId: string - userUsername: string - userAvatar: string - joinedDate?: number - leftDate: number - stationName: string - stationShort: string - server: string +import { Model, model, Schema } from 'mongoose'; + + +export const raw_schema = { + id: { + type: String, + required: true + }, + userSteamId: { + type: String, + required: true + }, + userUsername: { + type: String, + required: true + }, + userAvatar: { + type: String, + required: true + }, + joinedDate: { + type: Number, + required: false, + default: undefined + }, + leftDate: { + type: Number, + required: true + }, + stationName: { + type: String, + required: true + }, + stationShort: { + type: String, + required: true + }, + server: { + type: String, + required: true + }, +} + +const schema = new Schema(raw_schema); +schema.index({ stationName: 'text', userUsername: 'text', stationShort: 'text', userSteamId: 'text', server: 'text' }) + +export type TMLog = Model + +export const MLog = model('logs', schema); + +export interface ILog { + id: string + userSteamId: string + userUsername: string + userAvatar: string + joinedDate?: number + leftDate: number + stationName: string + stationShort: string + server: string } \ No newline at end of file diff --git a/src/mongo/profile.ts b/packages/backend/src/mongo/profile.ts similarity index 100% rename from src/mongo/profile.ts rename to packages/backend/src/mongo/profile.ts diff --git a/src/mongo/steam.ts b/packages/backend/src/mongo/steam.ts similarity index 100% rename from src/mongo/steam.ts rename to packages/backend/src/mongo/steam.ts diff --git a/src/mongo/trainLogs.ts b/packages/backend/src/mongo/trainLogs.ts similarity index 100% rename from src/mongo/trainLogs.ts rename to packages/backend/src/mongo/trainLogs.ts diff --git a/src/types/player.ts b/packages/backend/src/types/player.ts similarity index 95% rename from src/types/player.ts rename to packages/backend/src/types/player.ts index ad81b75..2586b17 100644 --- a/src/types/player.ts +++ b/packages/backend/src/types/player.ts @@ -1,68 +1,68 @@ -/* steam api */ - -export type IPlayer = { - steamid: string, - communityvisibilitystate: number, - profilestate: number, - personaname: string, - commentpermission: number, - profileurl: string, - avatar: string, - avatarmedium: string, - avatarfull: string, - avatarhash: string, - personastate: number, - primaryclanid: string, - timecreated: number, - personastateflags: number, - gameextrainfo: string, - gameid: string, - loccountrycode: string, - locstatecode: string -} - -export type IPlayerStats = { - "steamID": string, - "gameName": string, - "stats": [ - { - "name": "SCORE", - "value": number - }, - { - "name": "DISPATCHER_TIME", - "value": number - }, - { - "name": "DISTANCE_M", - "value": number - } - ], - "achievements": [ - { - "name": "FINISH_MISSION", - "achieved": 0 | 1 - }, - { - "name": "FINISH_ON_TIME", - "achieved": 0 | 1 - }, - { - "name": "FINISH_NIGHT", - "achieved": 0 | 1 - } - ] - -} - -export type IPlayerPayload = { - response: { - players: IPlayer[] - } -} - -export type IPlayerStatsPayload = { - playerstats: IPlayerStats -} - - +/* steam api */ + +export type IPlayer = { + steamid: string, + communityvisibilitystate: number, + profilestate: number, + personaname: string, + commentpermission: number, + profileurl: string, + avatar: string, + avatarmedium: string, + avatarfull: string, + avatarhash: string, + personastate: number, + primaryclanid: string, + timecreated: number, + personastateflags: number, + gameextrainfo: string, + gameid: string, + loccountrycode: string, + locstatecode: string +} + +export type IPlayerStats = { + "steamID": string, + "gameName": string, + "stats": [ + { + "name": "SCORE", + "value": number + }, + { + "name": "DISPATCHER_TIME", + "value": number + }, + { + "name": "DISTANCE_M", + "value": number + } + ], + "achievements": [ + { + "name": "FINISH_MISSION", + "achieved": 0 | 1 + }, + { + "name": "FINISH_ON_TIME", + "achieved": 0 | 1 + }, + { + "name": "FINISH_NIGHT", + "achieved": 0 | 1 + } + ] + +} + +export type IPlayerPayload = { + response: { + players: IPlayer[] + } +} + +export type IPlayerStatsPayload = { + playerstats: IPlayerStats +} + + diff --git a/src/types/typings.d.ts b/packages/backend/src/types/typings.d.ts similarity index 95% rename from src/types/typings.d.ts rename to packages/backend/src/types/typings.d.ts index 4ca62b8..249754c 100644 --- a/src/types/typings.d.ts +++ b/packages/backend/src/types/typings.d.ts @@ -1,9 +1,9 @@ -import { RedisClientType } from 'redis' -import { SimrailClient } from '../util/SimrailClient.ts' -/* eslint no-var: off */ -declare global -{ - declare var redis: RedisClientType, - client: SimrailClient; - +import { RedisClientType } from 'redis' +import { SimrailClient } from '../util/SimrailClient.ts' +/* eslint no-var: off */ +declare global +{ + declare var redis: RedisClientType, + client: SimrailClient; + } \ No newline at end of file diff --git a/src/util/PlayerUtil.ts b/packages/backend/src/util/PlayerUtil.ts similarity index 97% rename from src/util/PlayerUtil.ts rename to packages/backend/src/util/PlayerUtil.ts index 49c3e5d..886a108 100644 --- a/src/util/PlayerUtil.ts +++ b/packages/backend/src/util/PlayerUtil.ts @@ -1,40 +1,40 @@ -import { IPlayerPayload, IPlayerStatsPayload } from '../types/player.js'; - -const STEAM_API_KEY = process.env.STEAM_APIKEY; - -const fetchFuckingSteamApi = (url: string) => { - let retries = 0; - - return new Promise((res, rej) => { - const req = () => { - if (retries > 5) throw new Error('request failed to api steam'); - fetch(url, { signal: AbortSignal.timeout(10000) }).then(x => x.json()) - .then(x => res(x)) - .catch(() => { - console.log('STEAM request failed! ', url.replace(STEAM_API_KEY!, '[XXX]'), retries) - - retries++; - setTimeout(() => req(), 1000); - }) - } - req(); - }) -} - - -export class PlayerUtil { - public static async getPlayer(steamId: number | string) { - const data = await fetchFuckingSteamApi(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${STEAM_API_KEY}&format=json&steamids=${steamId}`) as IPlayerPayload; - - if (!data.response.players) return; - return data.response.players[0]; - } - - public static async getPlayerStats(steamId: string) { - const data = await fetchFuckingSteamApi(`http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=1422130&key=${STEAM_API_KEY}&steamid=${steamId}`) as IPlayerStatsPayload; - - - if (!data.playerstats?.stats) return; - return data.playerstats; - } +import { IPlayerPayload, IPlayerStatsPayload } from '../types/player.js'; + +const STEAM_API_KEY = process.env.STEAM_APIKEY; + +const fetchFuckingSteamApi = (url: string) => { + let retries = 0; + + return new Promise((res, rej) => { + const req = () => { + if (retries > 5) throw new Error('request failed to api steam'); + fetch(url, { signal: AbortSignal.timeout(10000) }).then(x => x.json()) + .then(x => res(x)) + .catch(() => { + console.log('STEAM request failed! ', url.replace(STEAM_API_KEY!, '[XXX]'), retries) + + retries++; + setTimeout(() => req(), 1000); + }) + } + req(); + }) +} + + +export class PlayerUtil { + public static async getPlayer(steamId: number | string) { + const data = await fetchFuckingSteamApi(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${STEAM_API_KEY}&format=json&steamids=${steamId}`) as IPlayerPayload; + + if (!data.response.players) return; + return data.response.players[0]; + } + + public static async getPlayerStats(steamId: string) { + const data = await fetchFuckingSteamApi(`http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=1422130&key=${STEAM_API_KEY}&steamid=${steamId}`) as IPlayerStatsPayload; + + + if (!data.playerstats?.stats) return; + return data.playerstats; + } } \ No newline at end of file diff --git a/src/util/SimrailClient.ts b/packages/backend/src/util/SimrailClient.ts similarity index 97% rename from src/util/SimrailClient.ts rename to packages/backend/src/util/SimrailClient.ts index f111d17..fd20817 100644 --- a/src/util/SimrailClient.ts +++ b/packages/backend/src/util/SimrailClient.ts @@ -1,219 +1,219 @@ -import { EventEmitter } from 'node:events'; - -import { IPlayer } from '../types/player.js'; -import { PlayerUtil } from './PlayerUtil.js'; -import { Station, ApiResponse, Server, Train } from '@simrail/types'; - -export enum SimrailClientEvents { - StationJoined = 'stationJoined', - StationLeft = 'stationLeft', - TrainJoined = 'trainJoined', - TrainLeft = 'trainLeft', - -} - -export declare interface SimrailClient { - on(event: SimrailClientEvents.StationJoined, listener: (server: Server, station: Station, player: IPlayer) => void): this; - on(event: SimrailClientEvents.StationLeft, listener: (server: Server, station: Station, player: IPlayer, joinedAt: number) => void): this; - - - on(event: SimrailClientEvents.TrainJoined, listener: (server: Server, train: Train, player: IPlayer, startDistance: number) => void): this; - on(event: SimrailClientEvents.TrainLeft, listener: (server: Server, train: Train, player: IPlayer, joinedAt: number, leftAt: number, points: number, distance: number, vehicle: string) => void): this; - - //on(event: string, listener: Function): this; -} - -export type OccupiedStation = { - SteamId: string; - JoinedAt: number; -} - -export type OccupiedTrain = { - SteamId: string; - JoinedAt: number; - StartPlayerDistance: number; - StartPlayerPoints: number; -} - -export class SimrailClient extends EventEmitter { - public stations: Record = {}; - public stationsOccupied: Record> = {}; - - public trains: Record = {}; - public trainsOccupied: Record> = {}; - - public constructor() { - super(); - this.setup(); - setTimeout(() => setInterval(() => this.update(), 500), 1000) - } - - public getStation(server: Server['ServerCode'], name: string) { - if (!this.stationsOccupied[server] || !this.stationsOccupied[server][name]) return null; - const player = PlayerUtil.getPlayer(this.stationsOccupied[server][name].SteamId); - return { player, joinedAt: this.stationsOccupied[name].joinedAt }; - } - - public getTrain(server: Server['ServerCode'], name: string) { - if (!this.trainsOccupied[server] || !this.trainsOccupied[server][name]) return null; - const player = PlayerUtil.getPlayer(this.trainsOccupied[server][name].SteamId); - return { player, joinedAt: this.trainsOccupied[server][name].JoinedAt, startPlayerDistance: this.trainsOccupied[server][name].StartPlayerDistance }; - } - - - private async setup() { - if (!await redis.json.get('stations')) - redis.json.set('stations', '$', []); - if (!await redis.json.get('trains')) - redis.json.set('trains', '$', []); - if (!await redis.json.get('trains_occupied')) - redis.json.set('trains_occupied', '$', {}); - - if (!await redis.json.get('stations_occupied')) - redis.json.set('stations_occupied', '$', {}); - - this.stations = (await redis.json.get('stations') as unknown as SimrailClient['stations']); - this.stationsOccupied = (await redis.json.get('stations_occupied') as unknown as SimrailClient['stationsOccupied']); - this.trains = (await redis.json.get('trains') as unknown as SimrailClient['trains']); - this.trainsOccupied = (await redis.json.get('trains_occupied') as unknown as SimrailClient['trainsOccupied']); - } - - private async processStation(server: Server, stations: ApiResponse) { - if (stations.result) { - if (!this.stations[server.ServerCode]) this.stations[server.ServerCode] = []; - if (!this.stationsOccupied[server.ServerCode]) this.stationsOccupied[server.ServerCode] = {}; - - if (!this.stations[server.ServerCode].length) { - this.stations[server.ServerCode] = stations.data; - redis.json.set('stations', '$', this.stations); - - } - - stations.data.forEach(async (x) => { - const data = this.stations[server.ServerCode].find(y => y.Name === x.Name); - if (!data) return; - - if (data.DispatchedBy[0]?.SteamId !== x.DispatchedBy[0]?.SteamId) { - if (!data.DispatchedBy[0]?.SteamId) { - // join - const date = new Date(); - const player = await PlayerUtil.getPlayer(x.DispatchedBy[0]?.SteamId); - - this.emit(SimrailClientEvents.StationJoined, server, x, player); - this.stationsOccupied[server.ServerCode][data.Prefix] = { - SteamId: x.DispatchedBy[0]?.SteamId, - JoinedAt: date.getTime() - }; - - return; - } - // leave - const player = await PlayerUtil.getPlayer(data.DispatchedBy[0]?.SteamId) - - this.emit(SimrailClientEvents.StationLeft, server, x, player, this.stationsOccupied[server.ServerCode][data.Prefix]?.JoinedAt); - delete this.stationsOccupied[server.ServerCode][data.Prefix]; - - } - }) - redis.json.set('stations_occupied', '$', this.stationsOccupied); - - this.stations[server.ServerCode] = stations.data; - redis.json.set('stations', '$', this.stations); - } - } - - private async processTrain(server: Server, trains: ApiResponse) { - if (trains.result) { - if (!this.trains[server.ServerCode]) this.trains[server.ServerCode] = []; - if (!this.trainsOccupied[server.ServerCode]) this.trainsOccupied[server.ServerCode] = {}; - - if (!this.trains[server.ServerCode].length) { - this.trains[server.ServerCode] = trains.data; - - redis.json.set('trains', '$', this.trains); - return; - } - - trains.data.forEach(async (x) => { - const data = this.trains[server.ServerCode].find(y => y.id === x.id); - if (!data) return; - - if (data.TrainData.ControlledBySteamID !== x.TrainData.ControlledBySteamID) { - - if (!data.TrainData.ControlledBySteamID) { - if (!x.TrainData.ControlledBySteamID) return; - // join - const date = new Date(); - - const player = await PlayerUtil.getPlayer(x.TrainData.ControlledBySteamID!); - - const playerStats = await PlayerUtil.getPlayerStats(x.TrainData.ControlledBySteamID!); - - - this.emit(SimrailClientEvents.TrainJoined, server, x, player, playerStats?.stats.find(x => x.name === 'DISTANCE_M')?.value); - - this.trainsOccupied[server.ServerCode][x.TrainNoLocal] = { - SteamId: x.TrainData.ControlledBySteamID!, - JoinedAt: date.getTime(), - StartPlayerDistance: playerStats?.stats.find(x => x.name === 'DISTANCE_M')?.value!, - StartPlayerPoints: playerStats?.stats.find(x => x.name === "SCORE")?.value!, - }; - return; - } - - if (!data.TrainData.ControlledBySteamID) return; - const date = new Date(); - - const player = await PlayerUtil.getPlayer(data.TrainData.ControlledBySteamID!); - - const playerId = data.TrainData.ControlledBySteamID!; - const trainOccupied = this.trainsOccupied[server.ServerCode][data.TrainNoLocal] && JSON.parse(JSON.stringify(this.trainsOccupied[server.ServerCode][data.TrainNoLocal])) || null; - - setTimeout(() => { - - - PlayerUtil.getPlayerStats(playerId).then(playerStats => { - const oldKm = trainOccupied?.StartPlayerDistance ?? 0; - - const distance = oldKm ? (playerStats?.stats.find(x => x.name === 'DISTANCE_M')?.value ?? 0) - oldKm : 0; - - const oldPoints = trainOccupied?.StartPlayerPoints ?? 0; - - const points = oldPoints ? (playerStats?.stats.find(x => x.name === 'SCORE')?.value ?? 0) - oldPoints : 0; - - - this.emit(SimrailClientEvents.TrainLeft, server, data, player, trainOccupied?.JoinedAt, date.getTime(), points, distance, x.Vehicles[0]); - }) - }, 80_000) - delete this.trainsOccupied[server.ServerCode][data.TrainNoLocal]; - - } - }) - - - this.trains[server.ServerCode] = trains.data; - redis.json.set('trains', '$', this.trains); - redis.json.set('trains_occupied', '$', this.trainsOccupied); - } - } - - private async update() { - const servers = (await fetch('https://panel.simrail.eu:8084/servers-open').then(x => x.json()).catch(x => ({ data: [], result: false })) as ApiResponse) - .data?.filter(x => x.ServerName.includes('Polski')) ?? []; // no plans to support other servers - - if (!servers.length) console.log('SimrailAPI is down') - - // TODO: maybe node:worker_threads? - // TODO: check performance - servers.forEach(async (server) => { - const stations = (await fetch('https://panel.simrail.eu:8084/stations-open?serverCode=' + server.ServerCode).then(x => x.json()).catch(() => ({ result: false }))) as ApiResponse; - const trains = (await fetch('https://panel.simrail.eu:8084/trains-open?serverCode=' + server.ServerCode).then(x => x.json()).catch(() => ({ result: false }))) as ApiResponse; - - this.processStation(server, stations); - this.processTrain(server, trains); - - - - }); - } +import { EventEmitter } from 'node:events'; + +import { IPlayer } from '../types/player.js'; +import { PlayerUtil } from './PlayerUtil.js'; +import { Station, ApiResponse, Server, Train } from '@simrail/types'; + +export enum SimrailClientEvents { + StationJoined = 'stationJoined', + StationLeft = 'stationLeft', + TrainJoined = 'trainJoined', + TrainLeft = 'trainLeft', + +} + +export declare interface SimrailClient { + on(event: SimrailClientEvents.StationJoined, listener: (server: Server, station: Station, player: IPlayer) => void): this; + on(event: SimrailClientEvents.StationLeft, listener: (server: Server, station: Station, player: IPlayer, joinedAt: number) => void): this; + + + on(event: SimrailClientEvents.TrainJoined, listener: (server: Server, train: Train, player: IPlayer, startDistance: number) => void): this; + on(event: SimrailClientEvents.TrainLeft, listener: (server: Server, train: Train, player: IPlayer, joinedAt: number, leftAt: number, points: number, distance: number, vehicle: string) => void): this; + + //on(event: string, listener: Function): this; +} + +export type OccupiedStation = { + SteamId: string; + JoinedAt: number; +} + +export type OccupiedTrain = { + SteamId: string; + JoinedAt: number; + StartPlayerDistance: number; + StartPlayerPoints: number; +} + +export class SimrailClient extends EventEmitter { + public stations: Record = {}; + public stationsOccupied: Record> = {}; + + public trains: Record = {}; + public trainsOccupied: Record> = {}; + + public constructor() { + super(); + this.setup(); + setTimeout(() => setInterval(() => this.update(), 500), 1000) + } + + public getStation(server: Server['ServerCode'], name: string) { + if (!this.stationsOccupied[server] || !this.stationsOccupied[server][name]) return null; + const player = PlayerUtil.getPlayer(this.stationsOccupied[server][name].SteamId); + return { player, joinedAt: this.stationsOccupied[name].joinedAt }; + } + + public getTrain(server: Server['ServerCode'], name: string) { + if (!this.trainsOccupied[server] || !this.trainsOccupied[server][name]) return null; + const player = PlayerUtil.getPlayer(this.trainsOccupied[server][name].SteamId); + return { player, joinedAt: this.trainsOccupied[server][name].JoinedAt, startPlayerDistance: this.trainsOccupied[server][name].StartPlayerDistance }; + } + + + private async setup() { + if (!await redis.json.get('stations')) + redis.json.set('stations', '$', []); + if (!await redis.json.get('trains')) + redis.json.set('trains', '$', []); + if (!await redis.json.get('trains_occupied')) + redis.json.set('trains_occupied', '$', {}); + + if (!await redis.json.get('stations_occupied')) + redis.json.set('stations_occupied', '$', {}); + + this.stations = (await redis.json.get('stations') as unknown as SimrailClient['stations']); + this.stationsOccupied = (await redis.json.get('stations_occupied') as unknown as SimrailClient['stationsOccupied']); + this.trains = (await redis.json.get('trains') as unknown as SimrailClient['trains']); + this.trainsOccupied = (await redis.json.get('trains_occupied') as unknown as SimrailClient['trainsOccupied']); + } + + private async processStation(server: Server, stations: ApiResponse) { + if (stations.result) { + if (!this.stations[server.ServerCode]) this.stations[server.ServerCode] = []; + if (!this.stationsOccupied[server.ServerCode]) this.stationsOccupied[server.ServerCode] = {}; + + if (!this.stations[server.ServerCode].length) { + this.stations[server.ServerCode] = stations.data; + redis.json.set('stations', '$', this.stations); + + } + + stations.data.forEach(async (x) => { + const data = this.stations[server.ServerCode].find(y => y.Name === x.Name); + if (!data) return; + + if (data.DispatchedBy[0]?.SteamId !== x.DispatchedBy[0]?.SteamId) { + if (!data.DispatchedBy[0]?.SteamId) { + // join + const date = new Date(); + const player = await PlayerUtil.getPlayer(x.DispatchedBy[0]?.SteamId); + + this.emit(SimrailClientEvents.StationJoined, server, x, player); + this.stationsOccupied[server.ServerCode][data.Prefix] = { + SteamId: x.DispatchedBy[0]?.SteamId, + JoinedAt: date.getTime() + }; + + return; + } + // leave + const player = await PlayerUtil.getPlayer(data.DispatchedBy[0]?.SteamId) + + this.emit(SimrailClientEvents.StationLeft, server, x, player, this.stationsOccupied[server.ServerCode][data.Prefix]?.JoinedAt); + delete this.stationsOccupied[server.ServerCode][data.Prefix]; + + } + }) + redis.json.set('stations_occupied', '$', this.stationsOccupied); + + this.stations[server.ServerCode] = stations.data; + redis.json.set('stations', '$', this.stations); + } + } + + private async processTrain(server: Server, trains: ApiResponse) { + if (trains.result) { + if (!this.trains[server.ServerCode]) this.trains[server.ServerCode] = []; + if (!this.trainsOccupied[server.ServerCode]) this.trainsOccupied[server.ServerCode] = {}; + + if (!this.trains[server.ServerCode].length) { + this.trains[server.ServerCode] = trains.data; + + redis.json.set('trains', '$', this.trains); + return; + } + + trains.data.forEach(async (x) => { + const data = this.trains[server.ServerCode].find(y => y.id === x.id); + if (!data) return; + + if (data.TrainData.ControlledBySteamID !== x.TrainData.ControlledBySteamID) { + + if (!data.TrainData.ControlledBySteamID) { + if (!x.TrainData.ControlledBySteamID) return; + // join + const date = new Date(); + + const player = await PlayerUtil.getPlayer(x.TrainData.ControlledBySteamID!); + + const playerStats = await PlayerUtil.getPlayerStats(x.TrainData.ControlledBySteamID!); + + + this.emit(SimrailClientEvents.TrainJoined, server, x, player, playerStats?.stats.find(x => x.name === 'DISTANCE_M')?.value); + + this.trainsOccupied[server.ServerCode][x.TrainNoLocal] = { + SteamId: x.TrainData.ControlledBySteamID!, + JoinedAt: date.getTime(), + StartPlayerDistance: playerStats?.stats.find(x => x.name === 'DISTANCE_M')?.value!, + StartPlayerPoints: playerStats?.stats.find(x => x.name === "SCORE")?.value!, + }; + return; + } + + if (!data.TrainData.ControlledBySteamID) return; + const date = new Date(); + + const player = await PlayerUtil.getPlayer(data.TrainData.ControlledBySteamID!); + + const playerId = data.TrainData.ControlledBySteamID!; + const trainOccupied = this.trainsOccupied[server.ServerCode][data.TrainNoLocal] && JSON.parse(JSON.stringify(this.trainsOccupied[server.ServerCode][data.TrainNoLocal])) || null; + + setTimeout(() => { + + + PlayerUtil.getPlayerStats(playerId).then(playerStats => { + const oldKm = trainOccupied?.StartPlayerDistance ?? 0; + + const distance = oldKm ? (playerStats?.stats.find(x => x.name === 'DISTANCE_M')?.value ?? 0) - oldKm : 0; + + const oldPoints = trainOccupied?.StartPlayerPoints ?? 0; + + const points = oldPoints ? (playerStats?.stats.find(x => x.name === 'SCORE')?.value ?? 0) - oldPoints : 0; + + + this.emit(SimrailClientEvents.TrainLeft, server, data, player, trainOccupied?.JoinedAt, date.getTime(), points, distance, x.Vehicles[0]); + }) + }, 80_000) + delete this.trainsOccupied[server.ServerCode][data.TrainNoLocal]; + + } + }) + + + this.trains[server.ServerCode] = trains.data; + redis.json.set('trains', '$', this.trains); + redis.json.set('trains_occupied', '$', this.trainsOccupied); + } + } + + private async update() { + const servers = (await fetch('https://panel.simrail.eu:8084/servers-open').then(x => x.json()).catch(x => ({ data: [], result: false })) as ApiResponse) + .data?.filter(x => x.ServerName.includes('Polski')) ?? []; // no plans to support other servers + + if (!servers.length) console.log('SimrailAPI is down') + + // TODO: maybe node:worker_threads? + // TODO: check performance + servers.forEach(async (server) => { + const stations = (await fetch('https://panel.simrail.eu:8084/stations-open?serverCode=' + server.ServerCode).then(x => x.json()).catch(() => ({ result: false }))) as ApiResponse; + const trains = (await fetch('https://panel.simrail.eu:8084/trains-open?serverCode=' + server.ServerCode).then(x => x.json()).catch(() => ({ result: false }))) as ApiResponse; + + this.processStation(server, stations); + this.processTrain(server, trains); + + + + }); + } } \ No newline at end of file diff --git a/src/util/SteamUtil.ts b/packages/backend/src/util/SteamUtil.ts similarity index 100% rename from src/util/SteamUtil.ts rename to packages/backend/src/util/SteamUtil.ts diff --git a/src/util/contants.ts b/packages/backend/src/util/contants.ts similarity index 100% rename from src/util/contants.ts rename to packages/backend/src/util/contants.ts diff --git a/src/util/git.ts b/packages/backend/src/util/git.ts similarity index 100% rename from src/util/git.ts rename to packages/backend/src/util/git.ts diff --git a/src/util/time.ts b/packages/backend/src/util/time.ts similarity index 100% rename from src/util/time.ts rename to packages/backend/src/util/time.ts diff --git a/tsconfig.json b/packages/backend/tsconfig.json similarity index 98% rename from tsconfig.json rename to packages/backend/tsconfig.json index 92a305d..b2e1c09 100644 --- a/tsconfig.json +++ b/packages/backend/tsconfig.json @@ -55,7 +55,7 @@ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist", /* Specify an output folder for all emitted files. */ + "outDir": "../../dist/backend", /* Specify an output folder for all emitted files. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/packages/frontend/.gitignore b/packages/frontend/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/packages/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/frontend/README.md b/packages/frontend/README.md new file mode 100644 index 0000000..74872fd --- /dev/null +++ b/packages/frontend/README.md @@ -0,0 +1,50 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default tseslint.config({ + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` +- Optionally add `...tseslint.configs.stylisticTypeChecked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: + +```js +// eslint.config.js +import react from 'eslint-plugin-react' + +export default tseslint.config({ + // Set the react version + settings: { react: { version: '18.3' } }, + plugins: { + // Add the react plugin + react, + }, + rules: { + // other rules... + // Enable its recommended rules + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + }, +}) +``` diff --git a/packages/frontend/eslint.config.js b/packages/frontend/eslint.config.js new file mode 100644 index 0000000..092408a --- /dev/null +++ b/packages/frontend/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/packages/frontend/index.html b/packages/frontend/index.html new file mode 100644 index 0000000..e4b78ea --- /dev/null +++ b/packages/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/packages/frontend/package.json b/packages/frontend/package.json new file mode 100644 index 0000000..861ed1e --- /dev/null +++ b/packages/frontend/package.json @@ -0,0 +1,29 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "start": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.1" + } +} diff --git a/packages/frontend/public/vite.svg b/packages/frontend/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/packages/frontend/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/frontend/src/App.css b/packages/frontend/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/packages/frontend/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/packages/frontend/src/App.tsx b/packages/frontend/src/App.tsx new file mode 100644 index 0000000..afe48ac --- /dev/null +++ b/packages/frontend/src/App.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> + +

Vite + React

+
+ +

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

+
+

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

+ + ) +} + +export default App diff --git a/packages/frontend/src/assets/react.svg b/packages/frontend/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/packages/frontend/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/frontend/src/index.css b/packages/frontend/src/index.css new file mode 100644 index 0000000..6119ad9 --- /dev/null +++ b/packages/frontend/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/packages/frontend/src/main.tsx b/packages/frontend/src/main.tsx new file mode 100644 index 0000000..6f4ac9b --- /dev/null +++ b/packages/frontend/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/packages/frontend/src/vite-env.d.ts b/packages/frontend/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/packages/frontend/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/frontend/tsconfig.app.json b/packages/frontend/tsconfig.app.json new file mode 100644 index 0000000..f0a2350 --- /dev/null +++ b/packages/frontend/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/packages/frontend/tsconfig.json b/packages/frontend/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/packages/frontend/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/packages/frontend/tsconfig.node.json b/packages/frontend/tsconfig.node.json new file mode 100644 index 0000000..0d3d714 --- /dev/null +++ b/packages/frontend/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts new file mode 100644 index 0000000..71aa00e --- /dev/null +++ b/packages/frontend/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + build: { + outDir: '../../dist/frontend' + } +}) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..ca42c01 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2322 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + +"@eslint/config-array@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d" + integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== + dependencies: + "@eslint/object-schema" "^2.1.4" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/eslintrc@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.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" + +"@eslint/js@9.11.0", "@eslint/js@^9.9.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.11.0.tgz#fca7533ef33aa608770734786e02f1041847f9bb" + integrity sha512-LPkkenkDqyzTFauZLLAPhIb48fj6drrfMvRGSL9tS3AcZBSVTllemLSNyCvHNNL2t797S/6DJNSIwRwXgMO/eQ== + +"@eslint/object-schema@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" + integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== + +"@eslint/plugin-kit@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz#8712dccae365d24e9eeecb7b346f85e750ba343d" + integrity sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig== + dependencies: + levn "^0.4.1" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/retry@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" + integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== + +"@mongodb-js/saslprep@^1.1.5": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz#e974bab8eca9faa88677d4ea4da8d09a52069004" + integrity sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw== + dependencies: + sparse-bitfield "^3.0.3" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@redis/bloom@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71" + integrity sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg== + +"@redis/client@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.6.0.tgz#dcf4ae1319763db6fdddd6de7f0af68a352c30ea" + integrity sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg== + dependencies: + cluster-key-slot "1.1.2" + generic-pool "3.9.0" + yallist "4.0.0" + +"@redis/graph@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.1.1.tgz#8c10df2df7f7d02741866751764031a957a170ea" + integrity sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw== + +"@redis/json@1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.7.tgz#016257fcd933c4cbcb9c49cde8a0961375c6893b" + integrity sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ== + +"@redis/search@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.2.0.tgz#50976fd3f31168f585666f7922dde111c74567b8" + integrity sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw== + +"@redis/time-series@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.1.0.tgz#cba454c05ec201bd5547aaf55286d44682ac8eb5" + integrity sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g== + +"@rollup/rollup-android-arm-eabi@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz#8b613b9725e8f9479d142970b106b6ae878610d5" + integrity sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w== + +"@rollup/rollup-android-arm64@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz#654ca1049189132ff602bfcf8df14c18da1f15fb" + integrity sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA== + +"@rollup/rollup-darwin-arm64@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz#6d241d099d1518ef0c2205d96b3fa52e0fe1954b" + integrity sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q== + +"@rollup/rollup-darwin-x64@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz#42bd19d292a57ee11734c980c4650de26b457791" + integrity sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw== + +"@rollup/rollup-linux-arm-gnueabihf@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz#f23555ee3d8fe941c5c5fd458cd22b65eb1c2232" + integrity sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ== + +"@rollup/rollup-linux-arm-musleabihf@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz#f3bbd1ae2420f5539d40ac1fde2b38da67779baa" + integrity sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg== + +"@rollup/rollup-linux-arm64-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz#7abe900120113e08a1f90afb84c7c28774054d15" + integrity sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw== + +"@rollup/rollup-linux-arm64-musl@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz#9e655285c8175cd44f57d6a1e8e5dedfbba1d820" + integrity sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz#9a79ae6c9e9d8fe83d49e2712ecf4302db5bef5e" + integrity sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg== + +"@rollup/rollup-linux-riscv64-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz#67ac70eca4ace8e2942fabca95164e8874ab8128" + integrity sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA== + +"@rollup/rollup-linux-s390x-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz#9f883a7440f51a22ed7f99e1d070bd84ea5005fc" + integrity sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q== + +"@rollup/rollup-linux-x64-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz#70116ae6c577fe367f58559e2cffb5641a1dd9d0" + integrity sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg== + +"@rollup/rollup-linux-x64-musl@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz#f473f88219feb07b0b98b53a7923be716d1d182f" + integrity sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g== + +"@rollup/rollup-win32-arm64-msvc@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz#4349482d17f5d1c58604d1c8900540d676f420e0" + integrity sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw== + +"@rollup/rollup-win32-ia32-msvc@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz#a6fc39a15db618040ec3c2a24c1e26cb5f4d7422" + integrity sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g== + +"@rollup/rollup-win32-x64-msvc@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz#3dd5d53e900df2a40841882c02e56f866c04d202" + integrity sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q== + +"@simrail/types@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@simrail/types/-/types-0.0.4.tgz#77e04216d36a9e873aebd7be18843de634040c91" + integrity sha512-AknM5FP+crERb3m/YtZqCgdFbrwUEwYB4BXfv1z+b7CVSrRsidAnaMIJZw/MhmsGxAmNIqQK7RPhDEx8qNzblA== + +"@swc/core-darwin-arm64@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz#5f4096c00e71771ca1b18c824f0c92a052c70760" + integrity sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw== + +"@swc/core-darwin-x64@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz#867b7a4f094e6b64201090ca5fcbf3da7d0f3e22" + integrity sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ== + +"@swc/core-linux-arm-gnueabihf@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz#35bb43894def296d92aaa2cc9372d48042f37777" + integrity sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q== + +"@swc/core-linux-arm64-gnu@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz#8e2321cc4ec84cbfed8f8e16ff1ed7b854450443" + integrity sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q== + +"@swc/core-linux-arm64-musl@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz#b1c16e4b23ffa9ff19973eda6ffee35d2a7de7b0" + integrity sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg== + +"@swc/core-linux-x64-gnu@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz#388e2cc13a010cd28787aead2cecf31eb491836d" + integrity sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w== + +"@swc/core-linux-x64-musl@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz#51e0ff30981f26d7a5b97a7a7b5b291bad050d1a" + integrity sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ== + +"@swc/core-win32-arm64-msvc@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz#a7fdcc4074c34ee6a026506b594d00323383c11f" + integrity sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA== + +"@swc/core-win32-ia32-msvc@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz#ae7be6dde798eebee2000b8fd84e01a439b5bd6a" + integrity sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ== + +"@swc/core-win32-x64-msvc@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz#310d607004d7319085a4dec20c0c38c3405cc05b" + integrity sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w== + +"@swc/core@^1.5.7": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.26.tgz#beda9b82063fcec7b56c958804a4d175aecf9a9d" + integrity sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.12" + optionalDependencies: + "@swc/core-darwin-arm64" "1.7.26" + "@swc/core-darwin-x64" "1.7.26" + "@swc/core-linux-arm-gnueabihf" "1.7.26" + "@swc/core-linux-arm64-gnu" "1.7.26" + "@swc/core-linux-arm64-musl" "1.7.26" + "@swc/core-linux-x64-gnu" "1.7.26" + "@swc/core-linux-x64-musl" "1.7.26" + "@swc/core-win32-arm64-msvc" "1.7.26" + "@swc/core-win32-ia32-msvc" "1.7.26" + "@swc/core-win32-x64-msvc" "1.7.26" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/types@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.12.tgz#7f632c06ab4092ce0ebd046ed77ff7557442282f" + integrity sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA== + dependencies: + "@swc/counter" "^0.1.3" + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/express-serve-static-core@^4.17.33": + version "4.19.5" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" + integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@^4.17.21": + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/mongoose@^5.11.97": + version "5.11.97" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.11.97.tgz#80b0357f3de6807eb597262f52e49c3e13ee14d8" + integrity sha512-cqwOVYT3qXyLiGw7ueU2kX9noE8DPGRY6z8eUxudhXY8NZ7DMKYAxyZkLSevGfhCX3dO/AoX5/SO9lAzfjon0Q== + dependencies: + mongoose "*" + +"@types/node@*", "@types/node@^22.0.0": + version "22.5.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44" + integrity sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA== + dependencies: + undici-types "~6.19.2" + +"@types/prop-types@*": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + +"@types/qs@*": + version "6.9.16" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.16.tgz#52bba125a07c0482d26747d5d4947a64daf8f794" + integrity sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/react-dom@^18.3.0": + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.3.3": + version "18.3.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.8.tgz#1672ab19993f8aca7c7dc844c07d5d9e467d5a79" + integrity sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/uuid@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" + integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== + +"@types/webidl-conversions@*": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859" + integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== + +"@types/whatwg-url@^11.0.2": + version "11.0.5" + resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.5.tgz#aaa2546e60f0c99209ca13360c32c78caf2c409f" + integrity sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== + dependencies: + "@types/webidl-conversions" "*" + +"@typescript-eslint/eslint-plugin@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz#20049754ff9f6d3a09bf240297f029ce04290999" + integrity sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.6.0" + "@typescript-eslint/type-utils" "8.6.0" + "@typescript-eslint/utils" "8.6.0" + "@typescript-eslint/visitor-keys" "8.6.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.6.0.tgz#02e092b9dc8b4e319172af620d0d39b337d948f6" + integrity sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow== + dependencies: + "@typescript-eslint/scope-manager" "8.6.0" + "@typescript-eslint/types" "8.6.0" + "@typescript-eslint/typescript-estree" "8.6.0" + "@typescript-eslint/visitor-keys" "8.6.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz#28cc2fc26a84b75addf45091a2c6283e29e2c982" + integrity sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw== + dependencies: + "@typescript-eslint/types" "8.6.0" + "@typescript-eslint/visitor-keys" "8.6.0" + +"@typescript-eslint/type-utils@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz#d4347e637478bef88cee1db691fcfa20ade9b8a0" + integrity sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg== + dependencies: + "@typescript-eslint/typescript-estree" "8.6.0" + "@typescript-eslint/utils" "8.6.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + +"@typescript-eslint/types@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.6.0.tgz#cdc3a16f83f2f0663d6723e9fd032331cdd9f51c" + integrity sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw== + +"@typescript-eslint/typescript-estree@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz#f945506de42871f04868371cb5bf21e8f7266e01" + integrity sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g== + dependencies: + "@typescript-eslint/types" "8.6.0" + "@typescript-eslint/visitor-keys" "8.6.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.6.0.tgz#175fe893f32804bed1e72b3364ea6bbe1044181c" + integrity sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.6.0" + "@typescript-eslint/types" "8.6.0" + "@typescript-eslint/typescript-estree" "8.6.0" + +"@typescript-eslint/visitor-keys@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz#5432af4a1753f376f35ab5b891fc9db237aaf76f" + integrity sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg== + dependencies: + "@typescript-eslint/types" "8.6.0" + eslint-visitor-keys "^3.4.3" + +"@vitejs/plugin-react-swc@^3.5.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.0.tgz#e456c0a6d7f562268e1d231af9ac46b86ef47d88" + integrity sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA== + dependencies: + "@swc/core" "^1.5.7" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.12.0: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +async@^3.2.3: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + 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.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +bson@^6.7.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-6.8.0.tgz#5063c41ba2437c2b8ff851b50d9e36cb7aaa7525" + integrity sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +cluster-key-slot@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" + integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.0.1.tgz#01e171bf6c7af0c022eb85daef95bff04d8185aa" + integrity sha512-wYKvCd/f54sTXJMSfV6Ln/B8UrfLBKOYa+lzc6CHay3Qek+LorVSBdMVfyewFhRbH0Rbabsk4D+3PL/VjQ5gzg== + dependencies: + chalk "^4.1.2" + lodash "^4.17.21" + rxjs "^7.8.1" + shell-quote "^1.8.1" + supports-color "^8.1.1" + tree-kill "^1.2.2" + yargs "^17.7.2" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + +copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +dayjs@^1.11.12: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4.x, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-plugin-react-hooks@^5.1.0-rc.0: + version "5.1.0-rc-fb9a90fa48-20240614" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz#206a7ec005f0b286aaf7091f4e566083d310b189" + integrity sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w== + +eslint-plugin-react-refresh@^0.4.9: + version "0.4.12" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz#73d61c7fcbe3f7280edb6579380b4350d2f547ed" + integrity sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg== + +eslint-scope@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" + integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" + integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== + +eslint@^9.9.0: + version "9.11.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.11.0.tgz#f7a7bf305a4d77f23be0c1e4537b9aa1617219be" + integrity sha512-yVS6XODx+tMFMDFcG4+Hlh+qG7RM6cCJXtQhCKLSsr3XkLvWggHjCqjfh0XsPPnt1c56oaT6PMgW9XWQQjdHXA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.11.0" + "@eslint/config-array" "^0.18.0" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.11.0" + "@eslint/plugin-kit" "^0.2.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.3.0" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.0.2" + eslint-visitor-keys "^4.0.0" + espree "^10.1.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + json-stable-stringify-without-jsonify "^1.0.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" + +espree@^10.0.1, espree@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" + integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== + dependencies: + acorn "^8.12.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.0.0" + +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +express@^4.19.2: + version "4.21.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" + integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== + 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.6.0" + 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.10" + proxy-addr "~2.0.7" + qs "6.13.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" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + 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.1" + unpipe "~1.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +generic-pool@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4" + integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.0.5: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.9.0: + version "15.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.9.0.tgz#e9de01771091ffbc37db5714dab484f9f69ff399" + integrity sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA== + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^5.2.0, ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +kareem@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.6.3.tgz#23168ec8ffb6c1abfd31b7169a6fb1dd285992ac" + integrity sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q== + +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.0.3, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mongodb-connection-string-url@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz#c13e6ac284ae401752ebafdb8cd7f16c6723b141" + integrity sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg== + dependencies: + "@types/whatwg-url" "^11.0.2" + whatwg-url "^13.0.0" + +mongodb@6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.8.0.tgz#680450f113cdea6d2d9f7121fe57cd29111fd2ce" + integrity sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw== + dependencies: + "@mongodb-js/saslprep" "^1.1.5" + bson "^6.7.0" + mongodb-connection-string-url "^3.0.0" + +mongoose@*, mongoose@^8.5.1: + version "8.6.3" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-8.6.3.tgz#fdc1f4defd4de87dc3f5c18aacaf811cafcfcfbe" + integrity sha512-++yRmm7hjMbqVA/8WeiygTnEfrFbiy+OBjQi49GFJIvCQuSYE56myyQWo4j5hbpcHjhHQU8NukMNGTwAWFWjIw== + dependencies: + bson "^6.7.0" + kareem "2.6.3" + mongodb "6.8.0" + mpath "0.9.0" + mquery "5.0.0" + ms "2.1.3" + sift "17.1.3" + +mpath@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.9.0.tgz#0c122fe107846e31fc58c75b09c35514b3871904" + integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== + +mquery@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-5.0.0.tgz#a95be5dfc610b23862df34a47d3e5d60e110695d" + integrity sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg== + dependencies: + debug "4.x" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + 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" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== + +picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +punycode@^2.1.0, punycode@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-dom@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +redis@^4.6.15: + version "4.7.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.7.0.tgz#b401787514d25dd0cfc22406d767937ba3be55d6" + integrity sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ== + dependencies: + "@redis/bloom" "1.2.0" + "@redis/client" "1.6.0" + "@redis/graph" "1.1.1" + "@redis/json" "1.0.7" + "@redis/search" "1.2.0" + "@redis/time-series" "1.1.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup@^4.20.0: + version "4.22.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.4.tgz#4135a6446671cd2a2453e1ad42a45d5973ec3a0f" + integrity sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.22.4" + "@rollup/rollup-android-arm64" "4.22.4" + "@rollup/rollup-darwin-arm64" "4.22.4" + "@rollup/rollup-darwin-x64" "4.22.4" + "@rollup/rollup-linux-arm-gnueabihf" "4.22.4" + "@rollup/rollup-linux-arm-musleabihf" "4.22.4" + "@rollup/rollup-linux-arm64-gnu" "4.22.4" + "@rollup/rollup-linux-arm64-musl" "4.22.4" + "@rollup/rollup-linux-powerpc64le-gnu" "4.22.4" + "@rollup/rollup-linux-riscv64-gnu" "4.22.4" + "@rollup/rollup-linux-s390x-gnu" "4.22.4" + "@rollup/rollup-linux-x64-gnu" "4.22.4" + "@rollup/rollup-linux-x64-musl" "4.22.4" + "@rollup/rollup-win32-arm64-msvc" "4.22.4" + "@rollup/rollup-win32-ia32-msvc" "4.22.4" + "@rollup/rollup-win32-x64-msvc" "4.22.4" + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +semver@^7.6.0: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + 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" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +sift@17.1.3: + version "17.1.3" + resolved "https://registry.yarnpkg.com/sift/-/sift-17.1.3.tgz#9d2000d4d41586880b0079b5183d839c7a142bf7" + integrity sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" + integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== + dependencies: + punycode "^2.3.0" + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +tslib@^2.1.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript-eslint@^8.0.1: + version "8.6.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.6.0.tgz#5f0b5e23b34385ef146e447616c1a0d6bd14bedb" + integrity sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA== + dependencies: + "@typescript-eslint/eslint-plugin" "8.6.0" + "@typescript-eslint/parser" "8.6.0" + "@typescript-eslint/utils" "8.6.0" + +typescript@^5.5.3, typescript@^5.5.4: + version "5.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" + integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vite@^5.4.1: + version "5.4.7" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.7.tgz#d226f57c08b61379e955f3836253ed3efb2dcf00" + integrity sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-url@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-13.0.0.tgz#b7b536aca48306394a34e44bda8e99f332410f8f" + integrity sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig== + dependencies: + tr46 "^4.1.1" + webidl-conversions "^7.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard-match@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/wildcard-match/-/wildcard-match-5.1.3.tgz#7420e57a17307afed9e51eee36aa1dcc1b73ce11" + integrity sha512-a95hPUk+BNzSGLntNXYxsjz2Hooi5oL7xOfJR6CKwSsSALh7vUNuTlzsrZowtYy38JNduYFRVhFv19ocqNOZlg== + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^16.1.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 6daf06971b8f3c26454295a0e0404b80e122787b Mon Sep 17 00:00:00 2001 From: alekswilc Date: Wed, 25 Sep 2024 23:14:50 +0200 Subject: [PATCH 02/60] (dev/feat): add template, homepage --- packages/backend/src/index.ts | 11 +- packages/frontend/.prettierrc | 3 + packages/frontend/LICENSE.md | 692 ++++ packages/frontend/README.md | 50 - packages/frontend/eslint.config.js | 28 - packages/frontend/index.html | 6 +- packages/frontend/package-lock.json | 3346 +++++++++++++++++ packages/frontend/package.json | 46 +- packages/frontend/postcss.config.cjs | 6 + packages/frontend/public/data.json | 1 + packages/frontend/public/favicon.ico | Bin 0 -> 15406 bytes packages/frontend/public/vite.svg | 1 - packages/frontend/src/App.css | 42 - packages/frontend/src/App.tsx | 127 +- packages/frontend/src/assets/react.svg | 1 - packages/frontend/src/common/Loader/index.tsx | 7 + packages/frontend/src/common/PageTitle.tsx | 16 + .../frontend/src/components/CardDataStats.tsx | 73 + .../src/components/Charts/ChartOne.tsx | 199 + .../src/components/Charts/ChartThree.tsx | 163 + .../src/components/Charts/ChartTwo.tsx | 149 + .../frontend/src/components/Chat/ChatCard.tsx | 110 + .../components/Checkboxes/CheckboxFive.tsx | 35 + .../components/Checkboxes/CheckboxFour.tsx | 41 + .../src/components/Checkboxes/CheckboxOne.tsx | 37 + .../components/Checkboxes/CheckboxThree.tsx | 53 + .../src/components/Checkboxes/CheckboxTwo.tsx | 50 + .../frontend/src/components/ClickOutside.tsx | 51 + .../components/Dropdowns/DropdownDefault.tsx | 128 + .../Forms/DatePicker/DatePickerOne.tsx | 52 + .../Forms/DatePicker/DatePickerTwo.tsx | 52 + .../src/components/Forms/MultiSelect.tsx | 226 ++ .../Forms/SelectGroup/SelectGroupOne.tsx | 67 + .../Forms/SelectGroup/SelectGroupTwo.tsx | 96 + .../components/Header/DarkModeSwitcher.tsx | 65 + .../frontend/src/components/Header/index.tsx | 74 + .../frontend/src/components/ModalSettings.tsx | 238 ++ .../components/Sidebar/SidebarLinkGroup.tsx | 21 + .../frontend/src/components/Sidebar/index.tsx | 719 ++++ .../src/components/Switchers/SwitcherFour.tsx | 33 + .../src/components/Switchers/SwitcherOne.tsx | 33 + .../components/Switchers/SwitcherThree.tsx | 66 + .../src/components/Switchers/SwitcherTwo.tsx | 33 + .../frontend/src/components/TableSettings.tsx | 68 + .../src/components/Tables/TableOne.tsx | 127 + .../src/components/Tables/TableThree.tsx | 156 + .../src/components/Tables/TableTwo.tsx | 106 + packages/frontend/src/css/satoshi.css | 131 + packages/frontend/src/css/style.css | 221 ++ packages/frontend/src/fonts/Satoshi-Black.eot | Bin 0 -> 73352 bytes packages/frontend/src/fonts/Satoshi-Black.ttf | Bin 0 -> 73176 bytes .../frontend/src/fonts/Satoshi-Black.woff | Bin 0 -> 30376 bytes .../frontend/src/fonts/Satoshi-Black.woff2 | Bin 0 -> 23484 bytes .../src/fonts/Satoshi-BlackItalic.eot | Bin 0 -> 75950 bytes .../src/fonts/Satoshi-BlackItalic.ttf | Bin 0 -> 75760 bytes .../src/fonts/Satoshi-BlackItalic.woff | Bin 0 -> 31364 bytes .../src/fonts/Satoshi-BlackItalic.woff2 | Bin 0 -> 24276 bytes packages/frontend/src/fonts/Satoshi-Bold.eot | Bin 0 -> 73532 bytes packages/frontend/src/fonts/Satoshi-Bold.ttf | Bin 0 -> 73368 bytes packages/frontend/src/fonts/Satoshi-Bold.woff | Bin 0 -> 32972 bytes .../frontend/src/fonts/Satoshi-Bold.woff2 | Bin 0 -> 25328 bytes .../frontend/src/fonts/Satoshi-BoldItalic.eot | Bin 0 -> 76620 bytes .../frontend/src/fonts/Satoshi-BoldItalic.ttf | Bin 0 -> 76452 bytes .../src/fonts/Satoshi-BoldItalic.woff | Bin 0 -> 34336 bytes .../src/fonts/Satoshi-BoldItalic.woff2 | Bin 0 -> 26300 bytes .../frontend/src/fonts/Satoshi-Italic.eot | Bin 0 -> 76762 bytes .../frontend/src/fonts/Satoshi-Italic.ttf | Bin 0 -> 76604 bytes .../frontend/src/fonts/Satoshi-Italic.woff | Bin 0 -> 34336 bytes .../frontend/src/fonts/Satoshi-Italic.woff2 | Bin 0 -> 26456 bytes packages/frontend/src/fonts/Satoshi-Light.eot | Bin 0 -> 71860 bytes packages/frontend/src/fonts/Satoshi-Light.ttf | Bin 0 -> 71684 bytes .../frontend/src/fonts/Satoshi-Light.woff | Bin 0 -> 29276 bytes .../frontend/src/fonts/Satoshi-Light.woff2 | Bin 0 -> 22800 bytes .../src/fonts/Satoshi-LightItalic.eot | Bin 0 -> 75590 bytes .../src/fonts/Satoshi-LightItalic.ttf | Bin 0 -> 75400 bytes .../src/fonts/Satoshi-LightItalic.woff | Bin 0 -> 30336 bytes .../src/fonts/Satoshi-LightItalic.woff2 | Bin 0 -> 23408 bytes .../frontend/src/fonts/Satoshi-Medium.eot | Bin 0 -> 73934 bytes .../frontend/src/fonts/Satoshi-Medium.ttf | Bin 0 -> 73756 bytes .../frontend/src/fonts/Satoshi-Medium.woff | Bin 0 -> 33272 bytes .../frontend/src/fonts/Satoshi-Medium.woff2 | Bin 0 -> 25596 bytes .../src/fonts/Satoshi-MediumItalic.eot | Bin 0 -> 76888 bytes .../src/fonts/Satoshi-MediumItalic.ttf | Bin 0 -> 76696 bytes .../src/fonts/Satoshi-MediumItalic.woff | Bin 0 -> 34576 bytes .../src/fonts/Satoshi-MediumItalic.woff2 | Bin 0 -> 26696 bytes .../frontend/src/fonts/Satoshi-Regular.eot | Bin 0 -> 73634 bytes .../frontend/src/fonts/Satoshi-Regular.ttf | Bin 0 -> 73476 bytes .../frontend/src/fonts/Satoshi-Regular.woff | Bin 0 -> 33024 bytes .../frontend/src/fonts/Satoshi-Regular.woff2 | Bin 0 -> 25516 bytes .../frontend/src/fonts/Satoshi-Variable.eot | Bin 0 -> 127628 bytes .../frontend/src/fonts/Satoshi-Variable.ttf | Bin 0 -> 127420 bytes .../frontend/src/fonts/Satoshi-Variable.woff | Bin 0 -> 35160 bytes .../frontend/src/fonts/Satoshi-Variable.woff2 | Bin 0 -> 42588 bytes .../src/fonts/Satoshi-VariableItalic.eot | Bin 0 -> 129984 bytes .../src/fonts/Satoshi-VariableItalic.ttf | Bin 0 -> 129748 bytes .../src/fonts/Satoshi-VariableItalic.woff | Bin 0 -> 36472 bytes .../src/fonts/Satoshi-VariableItalic.woff2 | Bin 0 -> 43844 bytes packages/frontend/src/hooks/fireToast.tsx | 112 + packages/frontend/src/hooks/useColorMode.tsx | 19 + .../frontend/src/hooks/useLocalStorage.tsx | 43 + packages/frontend/src/i18n/index.ts | 30 + .../frontend/src/images/brand/brand-01.svg | 14 + .../frontend/src/images/brand/brand-02.svg | 4 + .../frontend/src/images/brand/brand-03.svg | 11 + .../frontend/src/images/brand/brand-04.svg | 4 + .../frontend/src/images/brand/brand-05.svg | 11 + .../frontend/src/images/cards/cards-01.png | Bin 0 -> 411518 bytes .../frontend/src/images/cards/cards-02.png | Bin 0 -> 467942 bytes .../frontend/src/images/cards/cards-03.png | Bin 0 -> 401625 bytes .../frontend/src/images/cards/cards-04.png | Bin 0 -> 262616 bytes .../frontend/src/images/cards/cards-05.png | Bin 0 -> 411521 bytes .../frontend/src/images/cards/cards-06.png | Bin 0 -> 437504 bytes .../src/images/country/country-01.svg | 33 + .../src/images/country/country-02.svg | 18 + .../src/images/country/country-03.svg | 17 + .../src/images/country/country-04.svg | 17 + .../src/images/country/country-05.svg | 34 + .../src/images/country/country-06.svg | 19 + .../frontend/src/images/cover/cover-01.png | Bin 0 -> 482382 bytes packages/frontend/src/images/favicon.ico | Bin 0 -> 15406 bytes .../src/images/icon/icon-arrow-down.svg | 6 + .../src/images/icon/icon-calendar.svg | 6 + .../src/images/icon/icon-copy-alt.svg | 6 + .../frontend/src/images/icon/icon-moon.svg | 10 + .../frontend/src/images/icon/icon-sun.svg | 10 + .../frontend/src/images/logo/logo-dark.svg | 53 + .../frontend/src/images/logo/logo-icon.svg | 44 + packages/frontend/src/images/logo/logo.svg | 53 + .../src/images/product/product-01.png | Bin 0 -> 8779 bytes .../src/images/product/product-02.png | Bin 0 -> 15727 bytes .../src/images/product/product-03.png | Bin 0 -> 13945 bytes .../src/images/product/product-04.png | Bin 0 -> 17104 bytes .../src/images/product/product-thumb.png | Bin 0 -> 35061 bytes packages/frontend/src/images/task/task-01.jpg | Bin 0 -> 77564 bytes packages/frontend/src/images/user/user-01.png | Bin 0 -> 15162 bytes packages/frontend/src/images/user/user-02.png | Bin 0 -> 20974 bytes packages/frontend/src/images/user/user-03.png | Bin 0 -> 20633 bytes packages/frontend/src/images/user/user-04.png | Bin 0 -> 23545 bytes packages/frontend/src/images/user/user-05.png | Bin 0 -> 19610 bytes packages/frontend/src/images/user/user-06.png | Bin 0 -> 86183 bytes packages/frontend/src/images/user/user-07.png | Bin 0 -> 10486 bytes packages/frontend/src/images/user/user-08.png | Bin 0 -> 11106 bytes packages/frontend/src/images/user/user-09.png | Bin 0 -> 9692 bytes packages/frontend/src/images/user/user-10.png | Bin 0 -> 9427 bytes packages/frontend/src/images/user/user-11.png | Bin 0 -> 11561 bytes packages/frontend/src/images/user/user-12.png | Bin 0 -> 14426 bytes packages/frontend/src/images/user/user-13.png | Bin 0 -> 7712 bytes packages/frontend/src/index.css | 68 - packages/frontend/src/languages/en.json | 1 + packages/frontend/src/languages/pl.json | 25 + .../frontend/src/layout/DefaultLayout.tsx | 37 + packages/frontend/src/lib.d.ts | 4 + packages/frontend/src/main.tsx | 23 +- packages/frontend/src/pages/Chart.tsx | 19 + packages/frontend/src/pages/Home.tsx | 64 + packages/frontend/src/pages/Profile.tsx | 284 ++ packages/frontend/src/pages/Settings.tsx | 308 ++ packages/frontend/src/pages/Tables.tsx | 18 + .../frontend/src/pages/UiElements/Alerts.tsx | 94 + .../frontend/src/pages/UiElements/Buttons.tsx | 469 +++ packages/frontend/src/react-app-env.d.ts | 4 + packages/frontend/src/types/brand.ts | 8 + packages/frontend/src/types/chat.ts | 8 + packages/frontend/src/types/package.ts | 6 + packages/frontend/src/types/product.ts | 8 + packages/frontend/src/vite-env.d.ts | 1 - packages/frontend/tailwind.config.cjs | 254 ++ packages/frontend/tsconfig.app.json | 24 - packages/frontend/tsconfig.json | 27 +- packages/frontend/tsconfig.node.json | 18 +- .../{vite.config.ts => vite.config.js} | 5 +- readme.md | 3 + yarn.lock | 2319 ++++++++---- 173 files changed, 11637 insertions(+), 1092 deletions(-) create mode 100644 packages/frontend/.prettierrc create mode 100644 packages/frontend/LICENSE.md delete mode 100644 packages/frontend/README.md delete mode 100644 packages/frontend/eslint.config.js create mode 100644 packages/frontend/package-lock.json create mode 100644 packages/frontend/postcss.config.cjs create mode 100644 packages/frontend/public/data.json create mode 100644 packages/frontend/public/favicon.ico delete mode 100644 packages/frontend/public/vite.svg delete mode 100644 packages/frontend/src/App.css delete mode 100644 packages/frontend/src/assets/react.svg create mode 100644 packages/frontend/src/common/Loader/index.tsx create mode 100644 packages/frontend/src/common/PageTitle.tsx create mode 100644 packages/frontend/src/components/CardDataStats.tsx create mode 100644 packages/frontend/src/components/Charts/ChartOne.tsx create mode 100644 packages/frontend/src/components/Charts/ChartThree.tsx create mode 100644 packages/frontend/src/components/Charts/ChartTwo.tsx create mode 100644 packages/frontend/src/components/Chat/ChatCard.tsx create mode 100644 packages/frontend/src/components/Checkboxes/CheckboxFive.tsx create mode 100644 packages/frontend/src/components/Checkboxes/CheckboxFour.tsx create mode 100644 packages/frontend/src/components/Checkboxes/CheckboxOne.tsx create mode 100644 packages/frontend/src/components/Checkboxes/CheckboxThree.tsx create mode 100644 packages/frontend/src/components/Checkboxes/CheckboxTwo.tsx create mode 100644 packages/frontend/src/components/ClickOutside.tsx create mode 100644 packages/frontend/src/components/Dropdowns/DropdownDefault.tsx create mode 100644 packages/frontend/src/components/Forms/DatePicker/DatePickerOne.tsx create mode 100644 packages/frontend/src/components/Forms/DatePicker/DatePickerTwo.tsx create mode 100644 packages/frontend/src/components/Forms/MultiSelect.tsx create mode 100644 packages/frontend/src/components/Forms/SelectGroup/SelectGroupOne.tsx create mode 100644 packages/frontend/src/components/Forms/SelectGroup/SelectGroupTwo.tsx create mode 100644 packages/frontend/src/components/Header/DarkModeSwitcher.tsx create mode 100644 packages/frontend/src/components/Header/index.tsx create mode 100644 packages/frontend/src/components/ModalSettings.tsx create mode 100644 packages/frontend/src/components/Sidebar/SidebarLinkGroup.tsx create mode 100644 packages/frontend/src/components/Sidebar/index.tsx create mode 100644 packages/frontend/src/components/Switchers/SwitcherFour.tsx create mode 100644 packages/frontend/src/components/Switchers/SwitcherOne.tsx create mode 100644 packages/frontend/src/components/Switchers/SwitcherThree.tsx create mode 100644 packages/frontend/src/components/Switchers/SwitcherTwo.tsx create mode 100644 packages/frontend/src/components/TableSettings.tsx create mode 100644 packages/frontend/src/components/Tables/TableOne.tsx create mode 100644 packages/frontend/src/components/Tables/TableThree.tsx create mode 100644 packages/frontend/src/components/Tables/TableTwo.tsx create mode 100644 packages/frontend/src/css/satoshi.css create mode 100644 packages/frontend/src/css/style.css create mode 100644 packages/frontend/src/fonts/Satoshi-Black.eot create mode 100644 packages/frontend/src/fonts/Satoshi-Black.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-Black.woff create mode 100644 packages/frontend/src/fonts/Satoshi-Black.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-BlackItalic.eot create mode 100644 packages/frontend/src/fonts/Satoshi-BlackItalic.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-BlackItalic.woff create mode 100644 packages/frontend/src/fonts/Satoshi-BlackItalic.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-Bold.eot create mode 100644 packages/frontend/src/fonts/Satoshi-Bold.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-Bold.woff create mode 100644 packages/frontend/src/fonts/Satoshi-Bold.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-BoldItalic.eot create mode 100644 packages/frontend/src/fonts/Satoshi-BoldItalic.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-BoldItalic.woff create mode 100644 packages/frontend/src/fonts/Satoshi-BoldItalic.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-Italic.eot create mode 100644 packages/frontend/src/fonts/Satoshi-Italic.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-Italic.woff create mode 100644 packages/frontend/src/fonts/Satoshi-Italic.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-Light.eot create mode 100644 packages/frontend/src/fonts/Satoshi-Light.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-Light.woff create mode 100644 packages/frontend/src/fonts/Satoshi-Light.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-LightItalic.eot create mode 100644 packages/frontend/src/fonts/Satoshi-LightItalic.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-LightItalic.woff create mode 100644 packages/frontend/src/fonts/Satoshi-LightItalic.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-Medium.eot create mode 100644 packages/frontend/src/fonts/Satoshi-Medium.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-Medium.woff create mode 100644 packages/frontend/src/fonts/Satoshi-Medium.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-MediumItalic.eot create mode 100644 packages/frontend/src/fonts/Satoshi-MediumItalic.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-MediumItalic.woff create mode 100644 packages/frontend/src/fonts/Satoshi-MediumItalic.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-Regular.eot create mode 100644 packages/frontend/src/fonts/Satoshi-Regular.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-Regular.woff create mode 100644 packages/frontend/src/fonts/Satoshi-Regular.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-Variable.eot create mode 100644 packages/frontend/src/fonts/Satoshi-Variable.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-Variable.woff create mode 100644 packages/frontend/src/fonts/Satoshi-Variable.woff2 create mode 100644 packages/frontend/src/fonts/Satoshi-VariableItalic.eot create mode 100644 packages/frontend/src/fonts/Satoshi-VariableItalic.ttf create mode 100644 packages/frontend/src/fonts/Satoshi-VariableItalic.woff create mode 100644 packages/frontend/src/fonts/Satoshi-VariableItalic.woff2 create mode 100644 packages/frontend/src/hooks/fireToast.tsx create mode 100644 packages/frontend/src/hooks/useColorMode.tsx create mode 100644 packages/frontend/src/hooks/useLocalStorage.tsx create mode 100644 packages/frontend/src/i18n/index.ts create mode 100644 packages/frontend/src/images/brand/brand-01.svg create mode 100644 packages/frontend/src/images/brand/brand-02.svg create mode 100644 packages/frontend/src/images/brand/brand-03.svg create mode 100644 packages/frontend/src/images/brand/brand-04.svg create mode 100644 packages/frontend/src/images/brand/brand-05.svg create mode 100644 packages/frontend/src/images/cards/cards-01.png create mode 100644 packages/frontend/src/images/cards/cards-02.png create mode 100644 packages/frontend/src/images/cards/cards-03.png create mode 100644 packages/frontend/src/images/cards/cards-04.png create mode 100644 packages/frontend/src/images/cards/cards-05.png create mode 100644 packages/frontend/src/images/cards/cards-06.png create mode 100644 packages/frontend/src/images/country/country-01.svg create mode 100644 packages/frontend/src/images/country/country-02.svg create mode 100644 packages/frontend/src/images/country/country-03.svg create mode 100644 packages/frontend/src/images/country/country-04.svg create mode 100644 packages/frontend/src/images/country/country-05.svg create mode 100644 packages/frontend/src/images/country/country-06.svg create mode 100644 packages/frontend/src/images/cover/cover-01.png create mode 100644 packages/frontend/src/images/favicon.ico create mode 100644 packages/frontend/src/images/icon/icon-arrow-down.svg create mode 100644 packages/frontend/src/images/icon/icon-calendar.svg create mode 100644 packages/frontend/src/images/icon/icon-copy-alt.svg create mode 100644 packages/frontend/src/images/icon/icon-moon.svg create mode 100644 packages/frontend/src/images/icon/icon-sun.svg create mode 100644 packages/frontend/src/images/logo/logo-dark.svg create mode 100644 packages/frontend/src/images/logo/logo-icon.svg create mode 100644 packages/frontend/src/images/logo/logo.svg create mode 100644 packages/frontend/src/images/product/product-01.png create mode 100644 packages/frontend/src/images/product/product-02.png create mode 100644 packages/frontend/src/images/product/product-03.png create mode 100644 packages/frontend/src/images/product/product-04.png create mode 100644 packages/frontend/src/images/product/product-thumb.png create mode 100644 packages/frontend/src/images/task/task-01.jpg create mode 100644 packages/frontend/src/images/user/user-01.png create mode 100644 packages/frontend/src/images/user/user-02.png create mode 100644 packages/frontend/src/images/user/user-03.png create mode 100644 packages/frontend/src/images/user/user-04.png create mode 100644 packages/frontend/src/images/user/user-05.png create mode 100644 packages/frontend/src/images/user/user-06.png create mode 100644 packages/frontend/src/images/user/user-07.png create mode 100644 packages/frontend/src/images/user/user-08.png create mode 100644 packages/frontend/src/images/user/user-09.png create mode 100644 packages/frontend/src/images/user/user-10.png create mode 100644 packages/frontend/src/images/user/user-11.png create mode 100644 packages/frontend/src/images/user/user-12.png create mode 100644 packages/frontend/src/images/user/user-13.png delete mode 100644 packages/frontend/src/index.css create mode 100644 packages/frontend/src/languages/en.json create mode 100644 packages/frontend/src/languages/pl.json create mode 100644 packages/frontend/src/layout/DefaultLayout.tsx create mode 100644 packages/frontend/src/lib.d.ts create mode 100644 packages/frontend/src/pages/Chart.tsx create mode 100644 packages/frontend/src/pages/Home.tsx create mode 100644 packages/frontend/src/pages/Profile.tsx create mode 100644 packages/frontend/src/pages/Settings.tsx create mode 100644 packages/frontend/src/pages/Tables.tsx create mode 100644 packages/frontend/src/pages/UiElements/Alerts.tsx create mode 100644 packages/frontend/src/pages/UiElements/Buttons.tsx create mode 100644 packages/frontend/src/react-app-env.d.ts create mode 100644 packages/frontend/src/types/brand.ts create mode 100644 packages/frontend/src/types/chat.ts create mode 100644 packages/frontend/src/types/package.ts create mode 100644 packages/frontend/src/types/product.ts delete mode 100644 packages/frontend/src/vite-env.d.ts create mode 100644 packages/frontend/tailwind.config.cjs delete mode 100644 packages/frontend/tsconfig.app.json rename packages/frontend/{vite.config.ts => vite.config.js} (56%) diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 508314f..7f0d32f 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -23,6 +23,9 @@ import { TrainsModule } from './modules/trains.js'; console.log('MongoDB connected'); global.client = new SimrailClient(); + + + /* client.on(SimrailClientEvents.StationJoined, (server: Server, station: Station, player: IPlayer) => { console.log(`${server.ServerCode} | ${station.Name} | ${player.personaname} joined`); }); @@ -39,17 +42,11 @@ import { TrainsModule } from './modules/trains.js'; client.on(SimrailClientEvents.TrainJoined, (server: Server, train: Train, player: IPlayer, start: number) => { console.log(`${server.ServerCode} | ${train.TrainName} | ${player.personaname} joined | ${start}`); }); - + */ StationsModule.load(); TrainsModule.load(); ApiModule.load(); - - - // process.on('unhandledRejection', (reason, promise) => { - // console.error(reason); - // console.error(promise); - // }) })(); diff --git a/packages/frontend/.prettierrc b/packages/frontend/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/packages/frontend/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/packages/frontend/LICENSE.md b/packages/frontend/LICENSE.md new file mode 100644 index 0000000..deb6315 --- /dev/null +++ b/packages/frontend/LICENSE.md @@ -0,0 +1,692 @@ +-- WEB -- + + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. + + + +-- TEMPLATE -- + + + +MIT License + +Copyright (c) 2023 TailAdmin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/frontend/README.md b/packages/frontend/README.md deleted file mode 100644 index 74872fd..0000000 --- a/packages/frontend/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: - -- Configure the top-level `parserOptions` property like this: - -```js -export default tseslint.config({ - languageOptions: { - // other options... - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - }, -}) -``` - -- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` -- Optionally add `...tseslint.configs.stylisticTypeChecked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: - -```js -// eslint.config.js -import react from 'eslint-plugin-react' - -export default tseslint.config({ - // Set the react version - settings: { react: { version: '18.3' } }, - plugins: { - // Add the react plugin - react, - }, - rules: { - // other rules... - // Enable its recommended rules - ...react.configs.recommended.rules, - ...react.configs['jsx-runtime'].rules, - }, -}) -``` diff --git a/packages/frontend/eslint.config.js b/packages/frontend/eslint.config.js deleted file mode 100644 index 092408a..0000000 --- a/packages/frontend/eslint.config.js +++ /dev/null @@ -1,28 +0,0 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' - -export default tseslint.config( - { ignores: ['dist'] }, - { - extends: [js.configs.recommended, ...tseslint.configs.recommended], - files: ['**/*.{ts,tsx}'], - languageOptions: { - ecmaVersion: 2020, - globals: globals.browser, - }, - plugins: { - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, - }, - rules: { - ...reactHooks.configs.recommended.rules, - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, - }, -) diff --git a/packages/frontend/index.html b/packages/frontend/index.html index e4b78ea..7c83ab2 100644 --- a/packages/frontend/index.html +++ b/packages/frontend/index.html @@ -1,10 +1,10 @@ - + - + - Vite + React + TS + TailAdmin - Tailwind CSS Admin Dashboard Template
diff --git a/packages/frontend/package-lock.json b/packages/frontend/package-lock.json new file mode 100644 index 0000000..c1303ee --- /dev/null +++ b/packages/frontend/package-lock.json @@ -0,0 +1,3346 @@ +{ + "name": "tailadmin-react-free", + "version": "1.3.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "tailadmin-react-free", + "version": "1.0.5", + "dependencies": { + "apexcharts": "^3.41.0", + "flatpickr": "^4.6.13", + "headlessui": "^0.0.0", + "match-sorter": "^6.3.1", + "react": "^18.2.0", + "react-apexcharts": "^1.4.1", + "react-dom": "^18.2.0", + "react-hot-toast": "^2.4.1", + "react-icons": "^4.10.1", + "react-router-dom": "^6.14.2", + "react-toastify": "^9.1.3", + "sort-by": "^0.0.2" + }, + "devDependencies": { + "@types/react": "^18.2.17", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.3", + "autoprefixer": "^10.4.14", + "file-loader": "^6.2.0", + "postcss": "^8.4.27", + "prettier": "^3.0.0", + "prettier-plugin-tailwindcss": "^0.4.1", + "tailwindcss": "^3.4.1", + "vite": "^4.4.7", + "webpack": "^5.88.2" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@remix-run/router": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", + "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz", + "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.4.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", + "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.17.tgz", + "integrity": "sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", + "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.3.tgz", + "integrity": "sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.5", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apexcharts": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.41.0.tgz", + "integrity": "sha512-FJXA7NVjxs1q+ptR3b1I+pN8K/gWuXn+qLZjFz8EHvJOokdgcuwa/HSe5aC465HW/LWnrjWLSTsOQejQbQ42hQ==", + "dependencies": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "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==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001581", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", + "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.477", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.477.tgz", + "integrity": "sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "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/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatpickr": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", + "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==" + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-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==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/goober": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.13.tgz", + "integrity": "sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, + "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==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/headlessui": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/headlessui/-/headlessui-0.0.0.tgz", + "integrity": "sha512-CHvacVPbl8AqIg2sBNKySUmumu7o15jSrCaTrIh9GW2Eq4y/krCN/vZFOsKCwlrhWQbO4267a8xvvP8bs+qREQ==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", + "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", + "dev": true, + "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==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-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==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsvectormap": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/jsvectormap/-/jsvectormap-1.5.3.tgz", + "integrity": "sha512-HStTEhZEVr8t3t6juApO603nr1y54K/wjcdOvgGtvpE1etZ9Isg/sLdqh7OX4+RJ8srdP7WiBoTV/93aMqhLhw==" + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/match-sorter": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz", + "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "remove-accents": "0.4.2" + } + }, + "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==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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==", + "dev": true, + "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-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true + }, + "node_modules/prettier": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.4.1.tgz", + "integrity": "sha512-hwn2EiJmv8M+AW4YDkbjJ6HlZCTzLyz1QlySn9sMuKV/Px0fjwldlB7tol8GzdgqtkdPtzT3iJ4UzdnYXP25Ag==", + "dev": true, + "engines": { + "node": ">=12.17.0" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@shufo/prettier-plugin-blade": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "prettier": "^2.2 || ^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*", + "prettier-plugin-twig-melody": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@shufo/prettier-plugin-blade": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + }, + "prettier-plugin-twig-melody": { + "optional": true + } + } + }, + "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==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-apexcharts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.4.1.tgz", + "integrity": "sha512-G14nVaD64Bnbgy8tYxkjuXEUp/7h30Q0U33xc3AwtGFijJB9nHqOt1a6eG0WBn055RgRg+NwqbKGtqPxy15d0Q==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": "^3.41.0", + "react": ">=0.13" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-hot-toast": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz", + "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==", + "dependencies": { + "goober": "^2.1.10" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-icons": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz", + "integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==", + "peerDependencies": { + "react": "*" + } + }, + "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==" + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz", + "integrity": "sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==", + "dependencies": { + "@remix-run/router": "1.7.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz", + "integrity": "sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==", + "dependencies": { + "@remix-run/router": "1.7.2", + "react-router": "6.14.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-toastify": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz", + "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==", + "dependencies": { + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "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==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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==" + }, + "node_modules/remove-accents": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", + "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/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==", + "dev": true, + "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/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/sort-by": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/sort-by/-/sort-by-0.0.2.tgz", + "integrity": "sha512-iOX5oHA4a0eqTMFiWrHYqv924UeRKFBLhym7iwSVG37Egg2wApgZKAjyzM9WZjMwKv6+8Zi+nIaJ7FYsO9EkoA==" + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "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==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-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==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "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-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 861ed1e..f03ab46 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -1,29 +1,41 @@ { "name": "frontend", "private": true, - "version": "0.0.0", + "version": "1.3.7", "type": "module", "scripts": { - "start": "vite", - "build": "tsc -b && vite build", - "lint": "eslint .", + "dev": "vite", + "build": "vite build", "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "apexcharts": "^3.41.0", + "flatpickr": "^4.6.13", + "headlessui": "^0.0.0", + "i18next": "^23.15.1", + "i18next-browser-languagedetector": "^8.0.0", + "match-sorter": "^6.3.1", + "react": "^18.2.0", + "react-apexcharts": "^1.4.1", + "react-dom": "^18.2.0", + "react-hot-toast": "^2.4.1", + "react-i18next": "^15.0.2", + "react-icons": "^4.10.1", + "react-router-dom": "^6.14.2", + "react-toastify": "^9.1.3", + "sort-by": "^0.0.2" }, "devDependencies": { - "@eslint/js": "^9.9.0", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react-swc": "^3.5.0", - "eslint": "^9.9.0", - "eslint-plugin-react-hooks": "^5.1.0-rc.0", - "eslint-plugin-react-refresh": "^0.4.9", - "globals": "^15.9.0", - "typescript": "^5.5.3", - "typescript-eslint": "^8.0.1", - "vite": "^5.4.1" + "@types/react": "^18.2.17", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.3", + "autoprefixer": "^10.4.14", + "file-loader": "^6.2.0", + "postcss": "^8.4.27", + "prettier": "^3.0.0", + "prettier-plugin-tailwindcss": "^0.4.1", + "tailwindcss": "^3.4.1", + "vite": "^4.4.7", + "webpack": "^5.88.2" } } diff --git a/packages/frontend/postcss.config.cjs b/packages/frontend/postcss.config.cjs new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/packages/frontend/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/packages/frontend/public/data.json b/packages/frontend/public/data.json new file mode 100644 index 0000000..000414a --- /dev/null +++ b/packages/frontend/public/data.json @@ -0,0 +1 @@ +{"SAWAD.BK":{"price":107,"delta_price":2,"rating":"A","delta_rating":1},"BFIT.BK":{"price":103,"delta_price":5,"rating":"AA-","delta_rating":-1},"AMANAH.BK":{"price":102,"delta_price":8,"rating":"CCC","delta_rating":-1},"TK.BK":{"price":184,"delta_price":4,"rating":"AA+","delta_rating":0},"LITm.BK":{"price":131,"delta_price":6,"rating":"CCC-","delta_rating":1},"JMT.BK":{"price":117,"delta_price":2,"rating":"AA+","delta_rating":1},"TMB.BK":{"price":100,"delta_price":8,"rating":"AAA","delta_rating":0},"MTC.BK":{"price":131,"delta_price":10,"rating":"BB","delta_rating":0},"THANI.BK":{"price":175,"delta_price":5,"rating":"CCC","delta_rating":1},"TISCO.BK":{"price":188,"delta_price":3,"rating":"A+","delta_rating":0},"KGI.BK":{"price":172,"delta_price":4,"rating":"BBB-","delta_rating":1},"PL.BK":{"price":200,"delta_price":1,"rating":"BB+","delta_rating":-1},"S11.BK":{"price":156,"delta_price":8,"rating":"A","delta_rating":0},"ECL.BK":{"price":110,"delta_price":10,"rating":"AAA","delta_rating":0},"BAM.BK":{"price":150,"delta_price":1,"rating":"BB","delta_rating":0},"6592.TW":{"price":103,"delta_price":4,"rating":"CCC-","delta_rating":0},"9941.TW":{"price":191,"delta_price":3,"rating":"BB","delta_rating":-1},"2801.TW":{"price":146,"delta_price":10,"rating":"CCC-","delta_rating":1},"2884.TW":{"price":157,"delta_price":5,"rating":"AA","delta_rating":0},"2881.TW":{"price":186,"delta_price":4,"rating":"B-","delta_rating":0},"2882.TW":{"price":174,"delta_price":5,"rating":"A+","delta_rating":-1},"2888.TW":{"price":101,"delta_price":8,"rating":"AAA","delta_rating":0},"2809.TW":{"price":123,"delta_price":7,"rating":"A+","delta_rating":1},"2823.TW":{"price":171,"delta_price":4,"rating":"B-","delta_rating":-1},"601166.SS":{"price":127,"delta_price":6,"rating":"AAA","delta_rating":0},"1905.HK":{"price":128,"delta_price":8,"rating":"B-","delta_rating":1},"600000.SS":{"price":127,"delta_price":5,"rating":"BBB","delta_rating":0},"601229.SS":{"price":155,"delta_price":8,"rating":"CCC+","delta_rating":1},"601818.SS":{"price":118,"delta_price":4,"rating":"BB","delta_rating":-1},"601555.SS":{"price":198,"delta_price":5,"rating":"BB+","delta_rating":0},"1359.HK":{"price":115,"delta_price":5,"rating":"BB","delta_rating":1},"601990.SS":{"price":125,"delta_price":7,"rating":"AA-","delta_rating":1},"3866.HK":{"price":104,"delta_price":4,"rating":"BBB+","delta_rating":-1},"600015.SS":{"price":125,"delta_price":2,"rating":"BBB-","delta_rating":-1},"002797.SZ":{"price":156,"delta_price":7,"rating":"BBB+","delta_rating":1},"600999.SS":{"price":144,"delta_price":9,"rating":"BBB+","delta_rating":1},"601211.SS":{"price":173,"delta_price":8,"rating":"AA+","delta_rating":0},"601688.SS":{"price":101,"delta_price":5,"rating":"A+","delta_rating":-1},"ANCR.KL":{"price":104,"delta_price":5,"rating":"A-","delta_rating":1},"KNNK.KL":{"price":182,"delta_price":9,"rating":"AA","delta_rating":0},"MBBM.KL":{"price":106,"delta_price":1,"rating":"CCC","delta_rating":0},"601398.SS":{"price":138,"delta_price":7,"rating":"CCC","delta_rating":1},"8303.T":{"price":102,"delta_price":5,"rating":"CCC+","delta_rating":1},"8360.T":{"price":182,"delta_price":7,"rating":"CCC+","delta_rating":0},"8591.T":{"price":158,"delta_price":7,"rating":"BB","delta_rating":0},"8601.T":{"price":141,"delta_price":3,"rating":"AA","delta_rating":0},"8306.T":{"price":171,"delta_price":3,"rating":"A-","delta_rating":0},"8515.T":{"price":170,"delta_price":2,"rating":"BBB-","delta_rating":-1},"8793.T":{"price":132,"delta_price":6,"rating":"BB+","delta_rating":1},"8253.T":{"price":184,"delta_price":1,"rating":"CCC-","delta_rating":-1},"8572.T":{"price":180,"delta_price":1,"rating":"BBB+","delta_rating":-1},"8542.T":{"price":129,"delta_price":5,"rating":"AA+","delta_rating":1},"8595.T":{"price":106,"delta_price":6,"rating":"CCC+","delta_rating":0},"9699.T":{"price":187,"delta_price":3,"rating":"AA+","delta_rating":0},"9641.T":{"price":106,"delta_price":1,"rating":"BB","delta_rating":-1},"9678.T":{"price":140,"delta_price":7,"rating":"BB+","delta_rating":-1},"7198.T":{"price":130,"delta_price":10,"rating":"AA+","delta_rating":-1},"8550.T":{"price":167,"delta_price":1,"rating":"CCC","delta_rating":1},"8350.T":{"price":147,"delta_price":1,"rating":"AAA","delta_rating":-1},"7189.T":{"price":157,"delta_price":7,"rating":"A","delta_rating":1},"8511.T":{"price":165,"delta_price":2,"rating":"BBB+","delta_rating":1},"8395.T":{"price":107,"delta_price":2,"rating":"BBB-","delta_rating":1},"EW.PS":{"price":120,"delta_price":5,"rating":"CCC","delta_rating":-1},"000046.SZ":{"price":172,"delta_price":8,"rating":"CCC","delta_rating":-1},"002500.SZ":{"price":172,"delta_price":6,"rating":"AA","delta_rating":0},"VRNA.JK":{"price":176,"delta_price":4,"rating":"BBB+","delta_rating":0},"MAYA.JK":{"price":143,"delta_price":8,"rating":"AAA","delta_rating":0},"CFIN.JK":{"price":105,"delta_price":6,"rating":"B-","delta_rating":0},"BGTG.JK":{"price":194,"delta_price":4,"rating":"B-","delta_rating":1},"BBNI.JK":{"price":100,"delta_price":1,"rating":"AA-","delta_rating":-1},"SDRA.JK":{"price":196,"delta_price":3,"rating":"BBB-","delta_rating":-1},"BBKP.JK":{"price":119,"delta_price":2,"rating":"CCC-","delta_rating":0},"BCAP.JK":{"price":185,"delta_price":10,"rating":"B+","delta_rating":0},"BBRI.JK":{"price":181,"delta_price":6,"rating":"A","delta_rating":-1},"MCOR.JK":{"price":124,"delta_price":5,"rating":"AAA","delta_rating":0},"BNII.JK":{"price":156,"delta_price":5,"rating":"A-","delta_rating":0},"MFIN.JK":{"price":101,"delta_price":6,"rating":"A-","delta_rating":-1},"BTPN.JK":{"price":194,"delta_price":3,"rating":"CCC-","delta_rating":1},"MEGA.JK":{"price":136,"delta_price":3,"rating":"CCC+","delta_rating":-1},"000540.KS":{"price":124,"delta_price":6,"rating":"A+","delta_rating":0},"BID.HM":{"price":136,"delta_price":8,"rating":"B+","delta_rating":0},"TPB.HM":{"price":164,"delta_price":2,"rating":"AAA","delta_rating":-1},"BOQ.AX":{"price":133,"delta_price":5,"rating":"BB+","delta_rating":1},"QBE.AX":{"price":144,"delta_price":2,"rating":"B","delta_rating":0},"BOI.NS":{"price":165,"delta_price":9,"rating":"B","delta_rating":-1},"IOBK.NS":{"price":107,"delta_price":1,"rating":"AA+","delta_rating":-1},"0023.HK":{"price":103,"delta_price":10,"rating":"BBB-","delta_rating":0},"1111.HK":{"price":144,"delta_price":3,"rating":"B-","delta_rating":0},"OCB.HM":{"price":128,"delta_price":2,"rating":"AA-","delta_rating":0},"CTG.HM":{"price":185,"delta_price":3,"rating":"AA+","delta_rating":0},"STB.HM":{"price":150,"delta_price":6,"rating":"BBB","delta_rating":-1},"LPB.HM":{"price":146,"delta_price":9,"rating":"BB+","delta_rating":-1},"MBB.HM":{"price":194,"delta_price":4,"rating":"A-","delta_rating":0},"ABB.HNO":{"price":123,"delta_price":9,"rating":"AAA","delta_rating":-1},"MSB.HM":{"price":199,"delta_price":2,"rating":"A+","delta_rating":0},"NAB.HNO":{"price":133,"delta_price":10,"rating":"AAA","delta_rating":0},"TCB.HM":{"price":160,"delta_price":3,"rating":"BBB-","delta_rating":1},"HDB.HM":{"price":147,"delta_price":8,"rating":"AA","delta_rating":1},"ACB.HM":{"price":111,"delta_price":6,"rating":"AAA","delta_rating":0},"0665.HK":{"price":194,"delta_price":3,"rating":"CCC","delta_rating":-1},"SECB.PS":{"price":167,"delta_price":2,"rating":"A+","delta_rating":0},"3908.HK":{"price":196,"delta_price":1,"rating":"A-","delta_rating":-1},"VIB.HM":{"price":144,"delta_price":5,"rating":"AAA","delta_rating":0},"INBK.NS":{"price":160,"delta_price":2,"rating":"BBB-","delta_rating":-1},"VPB.HM":{"price":178,"delta_price":4,"rating":"BBB+","delta_rating":1},"1606.HK":{"price":142,"delta_price":9,"rating":"B+","delta_rating":1},"ABA.AX":{"price":176,"delta_price":9,"rating":"AA+","delta_rating":-1},"1788.HK":{"price":117,"delta_price":5,"rating":"AA","delta_rating":1},"0165.HK":{"price":121,"delta_price":6,"rating":"AAA","delta_rating":-1},"600030.SS":{"price":188,"delta_price":4,"rating":"A-","delta_rating":0},"CTBK.DH":{"price":159,"delta_price":10,"rating":"CCC-","delta_rating":1},"002966.SZ":{"price":189,"delta_price":6,"rating":"A","delta_rating":-1},"ENBK.DH":{"price":190,"delta_price":8,"rating":"BBB","delta_rating":0},"600705.SS":{"price":171,"delta_price":1,"rating":"B-","delta_rating":-1},"DBBK.DH":{"price":160,"delta_price":5,"rating":"CCC-","delta_rating":1},"600918.SS":{"price":128,"delta_price":5,"rating":"BB+","delta_rating":0},"6066.HK":{"price":104,"delta_price":10,"rating":"B+","delta_rating":0},"006800.KS":{"price":164,"delta_price":7,"rating":"AA","delta_rating":1},"9668.HK":{"price":146,"delta_price":6,"rating":"BB","delta_rating":-1},"HSBK.KZ":{"price":130,"delta_price":2,"rating":"BBB-","delta_rating":0},"BDO.PS":{"price":170,"delta_price":8,"rating":"BBB+","delta_rating":1},"BBL.BK":{"price":122,"delta_price":8,"rating":"CCC-","delta_rating":0},"KBANK.BK":{"price":114,"delta_price":6,"rating":"BBB","delta_rating":0},"002142.SZ":{"price":145,"delta_price":6,"rating":"A","delta_rating":0},"601009.SS":{"price":144,"delta_price":8,"rating":"AA+","delta_rating":0},"MCB.PSX":{"price":124,"delta_price":6,"rating":"BBB+","delta_rating":1},"KTB.BK":{"price":131,"delta_price":3,"rating":"CCC+","delta_rating":0},"1658.HK":{"price":150,"delta_price":9,"rating":"BBB","delta_rating":0},"HNB.CM":{"price":104,"delta_price":3,"rating":"CCC+","delta_rating":0},"1288.HK":{"price":191,"delta_price":10,"rating":"BBB-","delta_rating":1},"SAMP.CM":{"price":195,"delta_price":10,"rating":"AAA","delta_rating":-1},"006220.KS":{"price":110,"delta_price":8,"rating":"BBB","delta_rating":0},"NBPK.PSX":{"price":186,"delta_price":2,"rating":"BB+","delta_rating":1},"UNBK.NS":{"price":124,"delta_price":8,"rating":"AA+","delta_rating":-1},"0998.HK":{"price":148,"delta_price":8,"rating":"AA+","delta_rating":-1},"CBI.NS":{"price":197,"delta_price":7,"rating":"BB+","delta_rating":-1},"3618.HK":{"price":196,"delta_price":6,"rating":"A-","delta_rating":0},"600036.SS":{"price":132,"delta_price":9,"rating":"AAA","delta_rating":-1},"BOB.NS":{"price":128,"delta_price":1,"rating":"B-","delta_rating":0},"0939.HK":{"price":103,"delta_price":6,"rating":"A-","delta_rating":-1},"2016.HK":{"price":172,"delta_price":5,"rating":"A-","delta_rating":-1},"000001.SZ":{"price":165,"delta_price":10,"rating":"BBB+","delta_rating":-1},"ABL.PSX":{"price":178,"delta_price":2,"rating":"B+","delta_rating":-1},"6060.HK":{"price":118,"delta_price":2,"rating":"A","delta_rating":1},"RECM.NS":{"price":105,"delta_price":8,"rating":"AA-","delta_rating":-1},"IIFL.NS":{"price":152,"delta_price":7,"rating":"BB","delta_rating":0},"SUN.AX":{"price":164,"delta_price":2,"rating":"BBB","delta_rating":0},"IFCI.NS":{"price":199,"delta_price":8,"rating":"AA","delta_rating":0},"082640.KS":{"price":199,"delta_price":9,"rating":"AA+","delta_rating":1},"000370.KS":{"price":129,"delta_price":5,"rating":"B","delta_rating":1},"COIL.DH":{"price":191,"delta_price":8,"rating":"CCC+","delta_rating":-1},"601336.SS":{"price":129,"delta_price":2,"rating":"CCC-","delta_rating":0},"7338.T":{"price":183,"delta_price":5,"rating":"A-","delta_rating":-1},"7322.T":{"price":137,"delta_price":8,"rating":"BBB+","delta_rating":1},"7161.T":{"price":112,"delta_price":2,"rating":"BB+","delta_rating":0},"9763.T":{"price":167,"delta_price":10,"rating":"BBB-","delta_rating":0},"8397.T":{"price":100,"delta_price":3,"rating":"CCC-","delta_rating":-1},"8772.T":{"price":157,"delta_price":4,"rating":"BBB-","delta_rating":-1},"CENC.NS":{"price":173,"delta_price":9,"rating":"BB","delta_rating":0},"SRTR.NS":{"price":126,"delta_price":3,"rating":"BBB-","delta_rating":1},"SNFN.NS":{"price":161,"delta_price":7,"rating":"CCC-","delta_rating":-1},"JKBK.NS":{"price":175,"delta_price":8,"rating":"BBB+","delta_rating":0},"CNFH.NS":{"price":154,"delta_price":7,"rating":"AA-","delta_rating":-1},"SURO.NS":{"price":127,"delta_price":7,"rating":"A+","delta_rating":-1},"DCBA.NS":{"price":168,"delta_price":4,"rating":"CCC-","delta_rating":-1},"FED.NS":{"price":154,"delta_price":8,"rating":"AA+","delta_rating":0},"UCBK.NS":{"price":108,"delta_price":6,"rating":"B+","delta_rating":-1},"600016.SS":{"price":116,"delta_price":3,"rating":"AA-","delta_rating":1},"DFCC.CM":{"price":189,"delta_price":6,"rating":"BB+","delta_rating":1},"NDB.CM":{"price":172,"delta_price":2,"rating":"AA-","delta_rating":-1},"2889.TW":{"price":193,"delta_price":3,"rating":"AA+","delta_rating":1},"PABC.CM":{"price":156,"delta_price":9,"rating":"AA+","delta_rating":1},"ASP.BK":{"price":132,"delta_price":2,"rating":"A","delta_rating":1},"FSS.BK":{"price":105,"delta_price":3,"rating":"A","delta_rating":0},"BFIN.JK":{"price":157,"delta_price":4,"rating":"AA+","delta_rating":1},"6021.TWO":{"price":135,"delta_price":3,"rating":"A-","delta_rating":0},"MBKET.BK":{"price":124,"delta_price":3,"rating":"AAA","delta_rating":-1},"5863.TWO":{"price":192,"delta_price":5,"rating":"CCC+","delta_rating":-1},"PNBH.NS":{"price":182,"delta_price":7,"rating":"BBB","delta_rating":0},"8742.T":{"price":146,"delta_price":6,"rating":"CCC","delta_rating":-1},"3360.HK":{"price":169,"delta_price":5,"rating":"AA","delta_rating":1},"2588.HK":{"price":187,"delta_price":5,"rating":"BBB-","delta_rating":0},"NTB.CM":{"price":177,"delta_price":8,"rating":"B","delta_rating":1},"SEYB.CM":{"price":141,"delta_price":4,"rating":"BBB+","delta_rating":-1},"HASU.CM":{"price":148,"delta_price":3,"rating":"BB+","delta_rating":0},"COLE.CM":{"price":116,"delta_price":6,"rating":"CCC-","delta_rating":-1},"LFIN.CM":{"price":162,"delta_price":8,"rating":"A-","delta_rating":1},"LOLF.CM":{"price":148,"delta_price":8,"rating":"CCC-","delta_rating":1},"BIMP.CM":{"price":143,"delta_price":2,"rating":"BBB-","delta_rating":-1},"LOLC.CM":{"price":165,"delta_price":2,"rating":"BBB-","delta_rating":0},"2614.TW":{"price":195,"delta_price":3,"rating":"A-","delta_rating":1},"VALL.CM":{"price":130,"delta_price":6,"rating":"BBB","delta_rating":-1},"CFIN.CM":{"price":122,"delta_price":2,"rating":"B+","delta_rating":-1},"HDFC.CM":{"price":152,"delta_price":10,"rating":"A","delta_rating":1},"DWNH.NS":{"price":152,"delta_price":1,"rating":"B+","delta_rating":0},"SANA.CM":{"price":148,"delta_price":10,"rating":"AA","delta_rating":-1},"SIFI.CM":{"price":107,"delta_price":10,"rating":"A+","delta_rating":1},"BEKS.JK":{"price":130,"delta_price":4,"rating":"B-","delta_rating":0},"COMB.CM":{"price":200,"delta_price":10,"rating":"A-","delta_rating":-1},"071050.KS":{"price":161,"delta_price":9,"rating":"AA","delta_rating":0},"KBNK.NS":{"price":147,"delta_price":10,"rating":"A-","delta_rating":1},"RPBK.DH":{"price":192,"delta_price":7,"rating":"BBB+","delta_rating":-1},"UOKH.SI":{"price":136,"delta_price":9,"rating":"BB","delta_rating":-1},"2318.HK":{"price":152,"delta_price":8,"rating":"BBB-","delta_rating":1},"6881.HK":{"price":192,"delta_price":8,"rating":"CCC+","delta_rating":1},"600928.SS":{"price":167,"delta_price":10,"rating":"AAA","delta_rating":0},"1963.HK":{"price":181,"delta_price":9,"rating":"A+","delta_rating":1},"601162.SS":{"price":102,"delta_price":3,"rating":"AA+","delta_rating":1},"002961.SZ":{"price":124,"delta_price":8,"rating":"CCC-","delta_rating":0},"3396.HK":{"price":183,"delta_price":1,"rating":"A","delta_rating":-1},"601577.SS":{"price":100,"delta_price":6,"rating":"BB+","delta_rating":0},"601838.SS":{"price":171,"delta_price":9,"rating":"B-","delta_rating":0},"600908.SS":{"price":155,"delta_price":7,"rating":"BBB+","delta_rating":0},"2558.HK":{"price":146,"delta_price":9,"rating":"BBB-","delta_rating":0},"601187.SS":{"price":199,"delta_price":3,"rating":"A+","delta_rating":0},"6138.HK":{"price":184,"delta_price":4,"rating":"CCC","delta_rating":-1},"6196.HK":{"price":120,"delta_price":2,"rating":"AA-","delta_rating":1},"1216.HK":{"price":193,"delta_price":8,"rating":"A+","delta_rating":1},"600155.SS":{"price":150,"delta_price":8,"rating":"AA","delta_rating":-1},"601997.SS":{"price":142,"delta_price":6,"rating":"AAA","delta_rating":0},"002958.SZ":{"price":166,"delta_price":8,"rating":"A-","delta_rating":1},"601696.SS":{"price":156,"delta_price":9,"rating":"CCC-","delta_rating":-1},"000415.SZ":{"price":109,"delta_price":10,"rating":"BBB+","delta_rating":-1},"000686.SZ":{"price":120,"delta_price":7,"rating":"AA-","delta_rating":0},"600919.SS":{"price":157,"delta_price":7,"rating":"A+","delta_rating":0},"601128.SS":{"price":101,"delta_price":7,"rating":"BBB-","delta_rating":-1},"002839.SZ":{"price":184,"delta_price":9,"rating":"AA","delta_rating":-1},"603323.SS":{"price":152,"delta_price":6,"rating":"AA-","delta_rating":1},"002807.SZ":{"price":160,"delta_price":10,"rating":"B","delta_rating":1},"000750.SZ":{"price":187,"delta_price":7,"rating":"BBB+","delta_rating":1},"000776.SZ":{"price":111,"delta_price":7,"rating":"A-","delta_rating":1},"600926.SS":{"price":172,"delta_price":7,"rating":"CCC+","delta_rating":-1},"nan":{"price":185,"delta_price":9,"rating":"AA-","delta_rating":-1},"DBGF.PK":{"price":184,"delta_price":4,"rating":"BBB+","delta_rating":0},"CSHEF.PK":{"price":169,"delta_price":1,"rating":"BBB+","delta_rating":0},"PGCG.PK":{"price":109,"delta_price":2,"rating":"B-","delta_rating":1},"YUANF.PK":{"price":169,"delta_price":3,"rating":"A","delta_rating":0},"KJFI.PK":{"price":164,"delta_price":4,"rating":"BB+","delta_rating":1},"IVHI.PK":{"price":154,"delta_price":7,"rating":"AA-","delta_rating":1},"XITO.PK":{"price":193,"delta_price":5,"rating":"BBB-","delta_rating":1},"UNVI.PSX":{"price":139,"delta_price":1,"rating":"BB+","delta_rating":0},"1835.HK":{"price":161,"delta_price":4,"rating":"A","delta_rating":-1},"1841.HK":{"price":114,"delta_price":6,"rating":"BBB+","delta_rating":1},"FNX.AX":{"price":115,"delta_price":5,"rating":"AA-","delta_rating":-1},"0758.HK":{"price":122,"delta_price":9,"rating":"BB","delta_rating":-1},"FCIB.PSX":{"price":100,"delta_price":2,"rating":"BBB","delta_rating":0},"BWOWF.PK":{"price":154,"delta_price":6,"rating":"B","delta_rating":1},"PVL.AX":{"price":114,"delta_price":9,"rating":"A-","delta_rating":-1},"PHS.HNO":{"price":120,"delta_price":4,"rating":"A-","delta_rating":0},"HSA.HNO":{"price":168,"delta_price":5,"rating":"AA-","delta_rating":0},"LBI.V":{"price":167,"delta_price":6,"rating":"CCC","delta_rating":0},"0718.HK":{"price":166,"delta_price":7,"rating":"B-","delta_rating":0},"8699.T":{"price":195,"delta_price":1,"rating":"CCC-","delta_rating":1},"SMOD.PSX":{"price":189,"delta_price":1,"rating":"BBB-","delta_rating":0},"AAS.HNO":{"price":130,"delta_price":10,"rating":"A-","delta_rating":0},"ASCM.NS":{"price":185,"delta_price":4,"rating":"AAA","delta_rating":0},"VXB.HN":{"price":116,"delta_price":3,"rating":"B","delta_rating":0},"MBS.HN":{"price":124,"delta_price":7,"rating":"AA-","delta_rating":1},"0810.HK":{"price":104,"delta_price":2,"rating":"CCC+","delta_rating":0},"SHS.HN":{"price":153,"delta_price":2,"rating":"A","delta_rating":-1},"APO.PS":{"price":103,"delta_price":2,"rating":"B","delta_rating":-1},"1CSC.PSX":{"price":127,"delta_price":3,"rating":"A+","delta_rating":0},"APS.HN":{"price":198,"delta_price":2,"rating":"CCC-","delta_rating":0},"WSS.HN":{"price":137,"delta_price":2,"rating":"BBB+","delta_rating":0},"VIG.HN":{"price":114,"delta_price":2,"rating":"BBB-","delta_rating":-1},"CAF.AX":{"price":129,"delta_price":8,"rating":"A","delta_rating":1},"VFS.HNO":{"price":173,"delta_price":7,"rating":"A","delta_rating":0},"SBS.HNO":{"price":170,"delta_price":1,"rating":"AA","delta_rating":-1},"PSI.HN":{"price":150,"delta_price":2,"rating":"CCC-","delta_rating":1},"BII.HN":{"price":127,"delta_price":7,"rating":"AAA","delta_rating":0},"HUIZ.OQ":{"price":103,"delta_price":8,"rating":"CCC+","delta_rating":0},"EDSFF.PK":{"price":174,"delta_price":8,"rating":"CCC","delta_rating":0},"0804.HK":{"price":181,"delta_price":4,"rating":"BBB","delta_rating":-1},"MARI.PSX":{"price":113,"delta_price":6,"rating":"CCC","delta_rating":-1},"SAGR.BO":{"price":173,"delta_price":4,"rating":"CCC+","delta_rating":0},"IBLM.PSX":{"price":172,"delta_price":10,"rating":"BBB-","delta_rating":0},"CGA.AX":{"price":177,"delta_price":10,"rating":"A","delta_rating":-1},"ASIA.CM":{"price":104,"delta_price":3,"rating":"CCC","delta_rating":0},"HAC.HNO":{"price":137,"delta_price":2,"rating":"B-","delta_rating":1},"NBII.NS":{"price":101,"delta_price":7,"rating":"BBB-","delta_rating":1},"0768.HK":{"price":149,"delta_price":7,"rating":"CCC+","delta_rating":1},"CFI.CM":{"price":171,"delta_price":10,"rating":"A+","delta_rating":0},"AGBAU.OQ":{"price":101,"delta_price":9,"rating":"AA","delta_rating":0},"CTS.HM":{"price":167,"delta_price":2,"rating":"A-","delta_rating":0},"BBHI.JK":{"price":105,"delta_price":3,"rating":"AAA","delta_rating":0},"SSI.HM":{"price":183,"delta_price":1,"rating":"BB","delta_rating":-1},"BMAS.JK":{"price":137,"delta_price":2,"rating":"AA+","delta_rating":0},"HQC.HM":{"price":173,"delta_price":5,"rating":"AA-","delta_rating":1},"BVS.HN":{"price":185,"delta_price":8,"rating":"A+","delta_rating":-1},"SECI.PSX":{"price":200,"delta_price":10,"rating":"BB","delta_rating":1},"EIB.HM":{"price":148,"delta_price":3,"rating":"CCC+","delta_rating":1},"HTCL.SI":{"price":102,"delta_price":4,"rating":"CCC+","delta_rating":-1},"ASKA.PSX":{"price":109,"delta_price":6,"rating":"BBB-","delta_rating":-1},"HCM.HM":{"price":128,"delta_price":4,"rating":"AAA","delta_rating":-1},"HBS.HN":{"price":170,"delta_price":10,"rating":"A-","delta_rating":0},"0397.HK":{"price":158,"delta_price":10,"rating":"B","delta_rating":-1},"PRIM.CM":{"price":179,"delta_price":2,"rating":"B+","delta_rating":0},"ARUI.BO":{"price":165,"delta_price":3,"rating":"CCC-","delta_rating":0},"KTGB.KL":{"price":169,"delta_price":7,"rating":"AA","delta_rating":1},"021880.KQ":{"price":170,"delta_price":10,"rating":"CCC-","delta_rating":1},"AIC.HNO":{"price":135,"delta_price":10,"rating":"BBB","delta_rating":0},"KALY.PK":{"price":199,"delta_price":3,"rating":"BB","delta_rating":-1},"0139.HK":{"price":139,"delta_price":8,"rating":"AA-","delta_rating":1},"041190.KQ":{"price":159,"delta_price":2,"rating":"AA","delta_rating":0},"SNGM.NS":{"price":120,"delta_price":3,"rating":"CCC","delta_rating":0},"8525.HK":{"price":167,"delta_price":6,"rating":"BB+","delta_rating":0},"SUMF.BO":{"price":160,"delta_price":10,"rating":"B+","delta_rating":-1},"PEGE.JK":{"price":131,"delta_price":10,"rating":"B-","delta_rating":0},"SSPN.BO":{"price":198,"delta_price":5,"rating":"CCC+","delta_rating":0},"GBX.BK":{"price":119,"delta_price":4,"rating":"AAA","delta_rating":0},"BSI.HM":{"price":123,"delta_price":7,"rating":"BB+","delta_rating":0},"TRNS.BO":{"price":187,"delta_price":7,"rating":"AA","delta_rating":1},"PRMT.DH":{"price":107,"delta_price":5,"rating":"BBB","delta_rating":0},"VDS.HM":{"price":168,"delta_price":10,"rating":"A-","delta_rating":-1},"FNEL.PSX":{"price":162,"delta_price":8,"rating":"CCC","delta_rating":-1},"KLB.HNO":{"price":171,"delta_price":10,"rating":"BBB","delta_rating":-1},"EVF.HNO":{"price":133,"delta_price":2,"rating":"B-","delta_rating":1},"TIRX.OQ":{"price":146,"delta_price":2,"rating":"AA","delta_rating":1},"PGB.HNO":{"price":118,"delta_price":3,"rating":"AA","delta_rating":1},"JFIN.OQ":{"price":194,"delta_price":2,"rating":"B+","delta_rating":1},"SYMB.BO":{"price":167,"delta_price":5,"rating":"BBB+","delta_rating":1},"CMFC.BO":{"price":184,"delta_price":7,"rating":"AA-","delta_rating":-1},"PAKM.PSX":{"price":173,"delta_price":5,"rating":"BBB+","delta_rating":0},"FRAN.BO":{"price":188,"delta_price":9,"rating":"CCC-","delta_rating":0},"KECR.BO":{"price":127,"delta_price":1,"rating":"AA-","delta_rating":1},"TRMT.BO":{"price":166,"delta_price":3,"rating":"CCC-","delta_rating":-1},"INDF.BO":{"price":189,"delta_price":10,"rating":"AAA","delta_rating":-1},"GLAN.BO":{"price":142,"delta_price":3,"rating":"CCC-","delta_rating":1},"DILI.BO":{"price":181,"delta_price":4,"rating":"AA","delta_rating":0},"STGF.BO":{"price":114,"delta_price":2,"rating":"AA+","delta_rating":0},"ICAP.BO":{"price":103,"delta_price":4,"rating":"BBB-","delta_rating":0},"PAAE.BO":{"price":161,"delta_price":7,"rating":"CCC-","delta_rating":1},"NOTH.BO":{"price":131,"delta_price":8,"rating":"BB+","delta_rating":0},"BINY.BO":{"price":188,"delta_price":4,"rating":"A","delta_rating":1},"VSTA.BO":{"price":189,"delta_price":2,"rating":"A","delta_rating":1},"COMO.BO":{"price":156,"delta_price":7,"rating":"A","delta_rating":0},"SKPS.BO":{"price":162,"delta_price":4,"rating":"AA+","delta_rating":1},"SILK.PSX":{"price":150,"delta_price":1,"rating":"AA+","delta_rating":0},"GOWL.BO":{"price":133,"delta_price":8,"rating":"B-","delta_rating":1},"AAIN.BO":{"price":165,"delta_price":2,"rating":"A+","delta_rating":1},"BKR.PS":{"price":182,"delta_price":5,"rating":"A","delta_rating":0},"DSC.HNO":{"price":193,"delta_price":10,"rating":"B-","delta_rating":0},"JINC.BO":{"price":150,"delta_price":10,"rating":"BBB","delta_rating":-1},"ESAR.BO":{"price":184,"delta_price":6,"rating":"A","delta_rating":0},"AMNT.BO":{"price":185,"delta_price":7,"rating":"B+","delta_rating":0},"COG.AX":{"price":152,"delta_price":8,"rating":"AA","delta_rating":0},"SMIF.BO":{"price":195,"delta_price":6,"rating":"CCC-","delta_rating":-1},"ART.HN":{"price":168,"delta_price":8,"rating":"BBB","delta_rating":-1},"CIE.AX":{"price":159,"delta_price":3,"rating":"AAA","delta_rating":0},"TOYA.BO":{"price":171,"delta_price":4,"rating":"B+","delta_rating":1},"GOLC.BO":{"price":119,"delta_price":7,"rating":"BB+","delta_rating":-1},"MITR.BO":{"price":182,"delta_price":8,"rating":"CCC+","delta_rating":1},"AGR.HM":{"price":101,"delta_price":10,"rating":"A+","delta_rating":0},"AMBL.PSX":{"price":189,"delta_price":5,"rating":"A+","delta_rating":-1},"FIT.HM":{"price":112,"delta_price":7,"rating":"CCC","delta_rating":0},"TSSF.BO":{"price":152,"delta_price":3,"rating":"AA-","delta_rating":1},"POTX.BO":{"price":104,"delta_price":6,"rating":"AAA","delta_rating":0},"SVAR.BO":{"price":134,"delta_price":8,"rating":"B+","delta_rating":-1},"8657.HK":{"price":148,"delta_price":3,"rating":"AA","delta_rating":-1},"SGFm.BK":{"price":133,"delta_price":3,"rating":"AA+","delta_rating":-1},"UOBKH.BK":{"price":172,"delta_price":8,"rating":"CCC+","delta_rating":1},"SHAR.BO":{"price":184,"delta_price":7,"rating":"A-","delta_rating":0},"241520.KQ":{"price":163,"delta_price":3,"rating":"BBB-","delta_rating":0},"CLIO.BO":{"price":156,"delta_price":10,"rating":"BB+","delta_rating":-1},"BMS.HNO":{"price":197,"delta_price":10,"rating":"AA+","delta_rating":0},"BEL.AX":{"price":120,"delta_price":5,"rating":"CCC","delta_rating":0},"EXCE.NS":{"price":190,"delta_price":9,"rating":"BBB-","delta_rating":0},"DHRU.BO":{"price":172,"delta_price":1,"rating":"BBB-","delta_rating":-1},"007860.KS":{"price":170,"delta_price":8,"rating":"AAA","delta_rating":0},"ABA.PS":{"price":103,"delta_price":2,"rating":"BB+","delta_rating":0},"AVCA.BO":{"price":127,"delta_price":5,"rating":"B","delta_rating":1},"BVB.HNO":{"price":113,"delta_price":7,"rating":"BB","delta_rating":0},"1911.HK":{"price":175,"delta_price":6,"rating":"BB+","delta_rating":1},"VCBC.L":{"price":130,"delta_price":8,"rating":"BBB","delta_rating":1},"APG.HM":{"price":196,"delta_price":3,"rating":"CCC-","delta_rating":0},"600816.SS":{"price":110,"delta_price":8,"rating":"A-","delta_rating":-1},"ARPK.PSX":{"price":186,"delta_price":9,"rating":"BB","delta_rating":0},"1601.HK":{"price":178,"delta_price":8,"rating":"B-","delta_rating":0},"INL.PSX":{"price":124,"delta_price":5,"rating":"AAA","delta_rating":-1},"IVS.HN":{"price":148,"delta_price":9,"rating":"BBB-","delta_rating":0},"CCLI.BO":{"price":133,"delta_price":5,"rating":"BBB","delta_rating":0},"PANF.BO":{"price":199,"delta_price":5,"rating":"BB","delta_rating":0},"MATA.KL":{"price":175,"delta_price":3,"rating":"A+","delta_rating":1},"TGH.BK":{"price":180,"delta_price":9,"rating":"BB+","delta_rating":-1},"IDJ.HN":{"price":125,"delta_price":6,"rating":"A-","delta_rating":-1},"PASL.PSX":{"price":155,"delta_price":6,"rating":"B-","delta_rating":-1},"WEAL.NS":{"price":147,"delta_price":9,"rating":"B-","delta_rating":-1},"KASM.PSX":{"price":177,"delta_price":6,"rating":"BBB+","delta_rating":1},"VCI.HM":{"price":142,"delta_price":2,"rating":"BBB+","delta_rating":0},"0812.HK":{"price":123,"delta_price":6,"rating":"BB","delta_rating":-1},"0572.HK":{"price":129,"delta_price":7,"rating":"BBB-","delta_rating":0},"BIOG.BO":{"price":120,"delta_price":5,"rating":"A+","delta_rating":-1},"RGEN.BO":{"price":173,"delta_price":6,"rating":"AA+","delta_rating":0},"PREI.PSX":{"price":117,"delta_price":8,"rating":"A-","delta_rating":-1},"027830.KQ":{"price":178,"delta_price":10,"rating":"B-","delta_rating":0},"7187.T":{"price":105,"delta_price":2,"rating":"BBB+","delta_rating":0},"PAIS.NS":{"price":121,"delta_price":9,"rating":"A","delta_rating":0},"BESA.NS":{"price":134,"delta_price":1,"rating":"AA+","delta_rating":0},"SGB.HNO":{"price":165,"delta_price":5,"rating":"BB","delta_rating":-1},"ZHI.PS":{"price":167,"delta_price":5,"rating":"AA+","delta_rating":0},"TNVE.NS":{"price":105,"delta_price":4,"rating":"BB+","delta_rating":0},"BBSI.JK":{"price":176,"delta_price":10,"rating":"B+","delta_rating":1},"VRTS.BO":{"price":124,"delta_price":7,"rating":"BBB+","delta_rating":-1},"1062.HK":{"price":193,"delta_price":1,"rating":"AA","delta_rating":1},"ASSO.CM":{"price":152,"delta_price":4,"rating":"AA","delta_rating":1},"VALI.CM":{"price":176,"delta_price":1,"rating":"BBB","delta_rating":0},"TCII.NS":{"price":126,"delta_price":4,"rating":"A+","delta_rating":0},"BAB.HN":{"price":113,"delta_price":8,"rating":"BBB+","delta_rating":-1},"LEAI.BO":{"price":112,"delta_price":3,"rating":"B+","delta_rating":0},"MFSL.BO":{"price":181,"delta_price":1,"rating":"AA","delta_rating":0},"EPY.AX":{"price":183,"delta_price":3,"rating":"AA","delta_rating":1},"ACAP.CM":{"price":180,"delta_price":6,"rating":"BBB","delta_rating":0},"AYSV.KL":{"price":125,"delta_price":9,"rating":"CCC+","delta_rating":0},"MME.AX":{"price":115,"delta_price":6,"rating":"AA","delta_rating":1},"UNIA.PSX":{"price":182,"delta_price":5,"rating":"BB+","delta_rating":-1},"6058.HK":{"price":103,"delta_price":10,"rating":"A+","delta_rating":1},"ATIF.OQ":{"price":185,"delta_price":9,"rating":"BBB+","delta_rating":1},"019550.KQ":{"price":151,"delta_price":8,"rating":"CCC","delta_rating":0},"BERY.BO":{"price":184,"delta_price":7,"rating":"AA","delta_rating":1},"021080.KQ":{"price":181,"delta_price":4,"rating":"BB+","delta_rating":-1},"AMP.AX":{"price":132,"delta_price":8,"rating":"B-","delta_rating":1},"SKFN.NS":{"price":124,"delta_price":3,"rating":"CCC-","delta_rating":1},"VBB.HNO":{"price":112,"delta_price":1,"rating":"AAA","delta_rating":-1},"GFL.NZ":{"price":160,"delta_price":9,"rating":"CCC-","delta_rating":-1},"3938.HK":{"price":176,"delta_price":4,"rating":"A-","delta_rating":0},"1468.HK":{"price":140,"delta_price":4,"rating":"BBB+","delta_rating":0},"8746.T":{"price":122,"delta_price":9,"rating":"CCC-","delta_rating":-1},"RALF.BO":{"price":171,"delta_price":1,"rating":"B-","delta_rating":-1},"GDLN.BO":{"price":146,"delta_price":9,"rating":"B-","delta_rating":0},"BVH.HM":{"price":186,"delta_price":4,"rating":"A-","delta_rating":0},"IGIL.PSX":{"price":194,"delta_price":5,"rating":"CCC-","delta_rating":1},"NGE.AX":{"price":171,"delta_price":7,"rating":"CCC","delta_rating":-1},"GULF.PSX":{"price":167,"delta_price":1,"rating":"B","delta_rating":0},"0223.HK":{"price":134,"delta_price":5,"rating":"AA-","delta_rating":0},"ASAS.CM":{"price":142,"delta_price":5,"rating":"A+","delta_rating":0},"IIFW.NS":{"price":187,"delta_price":1,"rating":"BBB+","delta_rating":0},"FPMM.PSX":{"price":116,"delta_price":5,"rating":"BBB+","delta_rating":1},"8439.HK":{"price":164,"delta_price":2,"rating":"CCC+","delta_rating":-1},"0530.HK":{"price":171,"delta_price":4,"rating":"B","delta_rating":0},"DBSB.NS":{"price":133,"delta_price":2,"rating":"B-","delta_rating":0},"PRME.NS":{"price":194,"delta_price":3,"rating":"B-","delta_rating":1},"VND.HN":{"price":159,"delta_price":2,"rating":"A+","delta_rating":0},"SCPE_u.N":{"price":143,"delta_price":10,"rating":"AA-","delta_rating":1},"NSX.AX":{"price":168,"delta_price":5,"rating":"A","delta_rating":0},"CLGF.BO":{"price":180,"delta_price":7,"rating":"AA+","delta_rating":-1},"8295.HK":{"price":195,"delta_price":8,"rating":"AA-","delta_rating":-1},"0245.HK":{"price":142,"delta_price":9,"rating":"CCC+","delta_rating":-1},"1461.HK":{"price":159,"delta_price":6,"rating":"AA+","delta_rating":-1},"TVB.HN":{"price":144,"delta_price":4,"rating":"A","delta_rating":1},"ABI.HNO":{"price":108,"delta_price":3,"rating":"BBB","delta_rating":-1},"CSTR.PSX":{"price":121,"delta_price":1,"rating":"B+","delta_rating":0},"PCG.AX":{"price":159,"delta_price":7,"rating":"BBB-","delta_rating":0},"ADIN.PSX":{"price":170,"delta_price":8,"rating":"AA-","delta_rating":1},"PRIM.PS":{"price":159,"delta_price":1,"rating":"BB+","delta_rating":1},"GDIE.DH":{"price":107,"delta_price":5,"rating":"A","delta_rating":1},"ARNO.BO":{"price":150,"delta_price":4,"rating":"BB","delta_rating":0},"TTIE.BO":{"price":162,"delta_price":3,"rating":"BB","delta_rating":1},"BOK.PSX":{"price":129,"delta_price":9,"rating":"CCC+","delta_rating":-1},"KIRN.BO":{"price":173,"delta_price":2,"rating":"CCC+","delta_rating":-1},"SHRV.BO":{"price":185,"delta_price":7,"rating":"CCC","delta_rating":1},"PMJU.KL":{"price":196,"delta_price":10,"rating":"CCC+","delta_rating":0},"0629.HK":{"price":157,"delta_price":3,"rating":"BB","delta_rating":0},"PRMF.BO":{"price":142,"delta_price":2,"rating":"A","delta_rating":-1},"INSURE.BK":{"price":116,"delta_price":9,"rating":"CCC+","delta_rating":-1},"TIFA.JK":{"price":140,"delta_price":8,"rating":"AA+","delta_rating":1},"900919.SS":{"price":167,"delta_price":10,"rating":"BB+","delta_rating":1},"FANH.OQ":{"price":139,"delta_price":6,"rating":"CCC","delta_rating":0},"ASNm.BK":{"price":186,"delta_price":3,"rating":"BBB-","delta_rating":1},"019590.KQ":{"price":155,"delta_price":9,"rating":"B","delta_rating":-1},"PIRA.NS":{"price":138,"delta_price":4,"rating":"B+","delta_rating":0},"PAIN.BO":{"price":196,"delta_price":7,"rating":"AA","delta_rating":1},"CWZ.AX":{"price":185,"delta_price":3,"rating":"BB+","delta_rating":1},"8IH.AX":{"price":150,"delta_price":6,"rating":"BB+","delta_rating":-1},"CHAYO.BK":{"price":169,"delta_price":9,"rating":"B-","delta_rating":0},"FAST.DH":{"price":116,"delta_price":5,"rating":"CCC-","delta_rating":0},"3313.HK":{"price":161,"delta_price":6,"rating":"A","delta_rating":1},"SMBL.PSX":{"price":105,"delta_price":1,"rating":"BBB","delta_rating":1},"STAE.BO":{"price":152,"delta_price":9,"rating":"AA+","delta_rating":1},"INPR.BO":{"price":130,"delta_price":1,"rating":"BB+","delta_rating":1},"DEL.PSX":{"price":184,"delta_price":6,"rating":"BBB","delta_rating":-1},"LFS.AX":{"price":106,"delta_price":9,"rating":"B+","delta_rating":1},"0662.HK":{"price":194,"delta_price":3,"rating":"AA","delta_rating":1},"SOCL.CM":{"price":149,"delta_price":8,"rating":"BBB+","delta_rating":1},"FINK.BO":{"price":166,"delta_price":7,"rating":"BBB-","delta_rating":0},"HBPF.BO":{"price":126,"delta_price":7,"rating":"A+","delta_rating":0},"SAK.BK":{"price":107,"delta_price":10,"rating":"BB+","delta_rating":1},"NLEA.BO":{"price":183,"delta_price":8,"rating":"A","delta_rating":0},"AEC.BK":{"price":108,"delta_price":5,"rating":"BB","delta_rating":0},"APGI.DH":{"price":189,"delta_price":10,"rating":"BBB+","delta_rating":0},"NAGD.NS":{"price":129,"delta_price":1,"rating":"CCC-","delta_rating":-1},"0619.HK":{"price":109,"delta_price":2,"rating":"A+","delta_rating":-1},"KEYN.NS":{"price":120,"delta_price":9,"rating":"B+","delta_rating":0},"PILE.BO":{"price":111,"delta_price":9,"rating":"AA-","delta_rating":0},"SBL.PSX":{"price":161,"delta_price":4,"rating":"BB+","delta_rating":1},"CGF.AX":{"price":174,"delta_price":2,"rating":"AAA","delta_rating":0},"BIFC.DH":{"price":200,"delta_price":1,"rating":"AA+","delta_rating":0},"1496.HK":{"price":110,"delta_price":4,"rating":"CCC","delta_rating":0},"JKL.CM":{"price":141,"delta_price":7,"rating":"A-","delta_rating":-1},"HEXA.NS":{"price":185,"delta_price":9,"rating":"BBB-","delta_rating":1},"HNBF.CM":{"price":165,"delta_price":9,"rating":"AAA","delta_rating":0},"0080.HK":{"price":114,"delta_price":2,"rating":"BBB+","delta_rating":1},"1360.HK":{"price":109,"delta_price":6,"rating":"A-","delta_rating":1},"0356.HK":{"price":167,"delta_price":7,"rating":"CCC-","delta_rating":-1},"8325.HK":{"price":171,"delta_price":10,"rating":"CCC-","delta_rating":-1},"CVC.AX":{"price":100,"delta_price":8,"rating":"CCC","delta_rating":-1},"FINV.N":{"price":143,"delta_price":6,"rating":"B+","delta_rating":0},"JLIC.PSX":{"price":165,"delta_price":1,"rating":"AA","delta_rating":-1},"0129.HK":{"price":140,"delta_price":3,"rating":"AA+","delta_rating":1},"CLH.AX":{"price":105,"delta_price":6,"rating":"BBB","delta_rating":0},"BABP.JK":{"price":117,"delta_price":3,"rating":"BB+","delta_rating":0},"JSBL.PSX":{"price":132,"delta_price":2,"rating":"CCC+","delta_rating":-1},"NVB.HN":{"price":140,"delta_price":2,"rating":"A+","delta_rating":1},"PRIC.PSX":{"price":155,"delta_price":2,"rating":"AAA","delta_rating":0},"289080.KQ":{"price":126,"delta_price":6,"rating":"A","delta_rating":1},"FPC.AX":{"price":162,"delta_price":3,"rating":"B","delta_rating":0},"307930.KQ":{"price":139,"delta_price":5,"rating":"BBB+","delta_rating":-1},"JSCO.PSX":{"price":143,"delta_price":2,"rating":"A","delta_rating":0},"6878.HK":{"price":145,"delta_price":10,"rating":"B-","delta_rating":1},"EQT.AX":{"price":123,"delta_price":1,"rating":"B-","delta_rating":-1},"1PUJ.PSX":{"price":120,"delta_price":5,"rating":"AA-","delta_rating":1},"SBIC.NS":{"price":180,"delta_price":3,"rating":"B","delta_rating":-1},"FRHC.OQ":{"price":131,"delta_price":9,"rating":"B-","delta_rating":0},"ECMI.KL":{"price":133,"delta_price":4,"rating":"BB","delta_rating":-1},"BNBA.JK":{"price":164,"delta_price":8,"rating":"B-","delta_rating":1},"HYW.OQ":{"price":113,"delta_price":2,"rating":"B+","delta_rating":0},"NCAP.BK":{"price":107,"delta_price":4,"rating":"B-","delta_rating":0},"IBNK.BO":{"price":191,"delta_price":1,"rating":"B+","delta_rating":-1},"LGHL.OQ":{"price":105,"delta_price":5,"rating":"CCC+","delta_rating":-1},"DHUS.NS":{"price":150,"delta_price":9,"rating":"AA+","delta_rating":0},"SYCS.BO":{"price":155,"delta_price":3,"rating":"AA+","delta_rating":0},"007330.KQ":{"price":115,"delta_price":3,"rating":"AA","delta_rating":0},"AB.PS":{"price":111,"delta_price":5,"rating":"A+","delta_rating":0},"SARC.BO":{"price":190,"delta_price":6,"rating":"BBB-","delta_rating":-1},"VIGC.BO":{"price":161,"delta_price":4,"rating":"AA-","delta_rating":0},"DLST.BO":{"price":120,"delta_price":6,"rating":"A-","delta_rating":-1},"NARN.BO":{"price":100,"delta_price":10,"rating":"CCC-","delta_rating":-1},"PNTH.BO":{"price":121,"delta_price":6,"rating":"A","delta_rating":1},"BANA.BO":{"price":148,"delta_price":8,"rating":"CCC-","delta_rating":1},"HACA.BO":{"price":127,"delta_price":4,"rating":"AAA","delta_rating":-1},"PRIE.BO":{"price":115,"delta_price":4,"rating":"B","delta_rating":0},"AGRS.JK":{"price":185,"delta_price":3,"rating":"B","delta_rating":-1},"ANUM.BO":{"price":180,"delta_price":1,"rating":"BBB-","delta_rating":-1},"ELLO.M3":{"price":132,"delta_price":6,"rating":"B+","delta_rating":1},"TCI.HNO":{"price":126,"delta_price":3,"rating":"CCC+","delta_rating":1},"2905.TW":{"price":154,"delta_price":2,"rating":"BBB+","delta_rating":-1},"BLA.BK":{"price":181,"delta_price":8,"rating":"CCC-","delta_rating":-1},"1282.HK":{"price":188,"delta_price":2,"rating":"AA-","delta_rating":0},"TILV.BO":{"price":133,"delta_price":6,"rating":"A-","delta_rating":-1},"GUAR.CM":{"price":144,"delta_price":8,"rating":"BB","delta_rating":1},"1141.HK":{"price":102,"delta_price":1,"rating":"AA","delta_rating":1},"BRLIU.OQ":{"price":123,"delta_price":1,"rating":"AA-","delta_rating":0},"CLAL.BO":{"price":198,"delta_price":7,"rating":"AA","delta_rating":0},"SCYS.NS":{"price":145,"delta_price":7,"rating":"B","delta_rating":-1},"SIHL.L":{"price":174,"delta_price":8,"rating":"CCC+","delta_rating":-1},"ACTF.BO":{"price":169,"delta_price":10,"rating":"CCC","delta_rating":1},"CONT.BO":{"price":182,"delta_price":1,"rating":"BBB","delta_rating":1},"LITL.L":{"price":176,"delta_price":2,"rating":"BBB-","delta_rating":-1},"WEI.N":{"price":176,"delta_price":1,"rating":"A","delta_rating":-1},"BPTR.JK":{"price":200,"delta_price":5,"rating":"A","delta_rating":0},"HM1.AX":{"price":149,"delta_price":9,"rating":"BB+","delta_rating":1},"UTFN.DH":{"price":194,"delta_price":7,"rating":"CCC","delta_rating":0},"TIHL.SI":{"price":129,"delta_price":4,"rating":"B+","delta_rating":1},"EXPR.DH":{"price":104,"delta_price":6,"rating":"B","delta_rating":-1},"JMNB.DH":{"price":195,"delta_price":2,"rating":"CCC+","delta_rating":1},"FPP.AX":{"price":150,"delta_price":1,"rating":"A","delta_rating":-1},"APW.AX":{"price":130,"delta_price":1,"rating":"A-","delta_rating":-1},"0730.HK":{"price":190,"delta_price":6,"rating":"CCC","delta_rating":0},"BMI.HM":{"price":150,"delta_price":9,"rating":"AA+","delta_rating":-1},"WHF.AX":{"price":135,"delta_price":7,"rating":"BBB+","delta_rating":0},"8072.HK":{"price":164,"delta_price":5,"rating":"A+","delta_rating":1},"SWF.AX":{"price":194,"delta_price":1,"rating":"BBB","delta_rating":0},"ACME.BO":{"price":180,"delta_price":1,"rating":"AA","delta_rating":-1},"GDG.AX":{"price":145,"delta_price":1,"rating":"CCC","delta_rating":-1},"PHXF.DH":{"price":111,"delta_price":2,"rating":"AAA","delta_rating":-1},"INV.MNE":{"price":153,"delta_price":5,"rating":"AA+","delta_rating":1},"FDIB.PSX":{"price":106,"delta_price":2,"rating":"B+","delta_rating":-1},"TGG.AX":{"price":174,"delta_price":9,"rating":"BBB+","delta_rating":1},"0901.HK":{"price":100,"delta_price":6,"rating":"B+","delta_rating":0},"8313.HK":{"price":181,"delta_price":5,"rating":"AA+","delta_rating":1},"UJJI.NS":{"price":184,"delta_price":4,"rating":"BBB+","delta_rating":1},"WTL.AX":{"price":101,"delta_price":3,"rating":"AAA","delta_rating":-1},"ARTO.JK":{"price":198,"delta_price":10,"rating":"A","delta_rating":-1},"MEAI.BO":{"price":133,"delta_price":1,"rating":"A+","delta_rating":0},"AAAL.L":{"price":160,"delta_price":5,"rating":"BB","delta_rating":0},"POLA.JK":{"price":180,"delta_price":4,"rating":"A-","delta_rating":1},"DSAC.OQ":{"price":147,"delta_price":9,"rating":"CCC-","delta_rating":1},"RITC.BO":{"price":167,"delta_price":5,"rating":"CCC-","delta_rating":-1},"MTBL.DH":{"price":179,"delta_price":1,"rating":"BBB+","delta_rating":1},"AVAS.NS":{"price":145,"delta_price":10,"rating":"AA-","delta_rating":-1},"BAAC.BO":{"price":139,"delta_price":2,"rating":"BBB","delta_rating":1},"MICRO.BK":{"price":136,"delta_price":10,"rating":"AA-","delta_rating":1},"2356.HK":{"price":134,"delta_price":8,"rating":"B+","delta_rating":0},"BROW.CM":{"price":176,"delta_price":7,"rating":"B-","delta_rating":0},"MPHB.KL":{"price":120,"delta_price":2,"rating":"BBB+","delta_rating":1},"100790.KQ":{"price":151,"delta_price":5,"rating":"AA+","delta_rating":-1},"603093.SS":{"price":188,"delta_price":10,"rating":"BB+","delta_rating":0},"SLL.PSX":{"price":184,"delta_price":6,"rating":"BB","delta_rating":1},"IGI.PSX":{"price":102,"delta_price":9,"rating":"AAA","delta_rating":0},"AHL.PSX":{"price":162,"delta_price":7,"rating":"CCC-","delta_rating":0},"IFS.BK":{"price":159,"delta_price":10,"rating":"CCC","delta_rating":0},"0806.HK":{"price":109,"delta_price":5,"rating":"A+","delta_rating":0},"WILM.NS":{"price":179,"delta_price":1,"rating":"A-","delta_rating":0},"LUCK.JK":{"price":196,"delta_price":3,"rating":"A+","delta_rating":0},"MORF.BO":{"price":172,"delta_price":10,"rating":"BB+","delta_rating":-1},"336060.KQ":{"price":104,"delta_price":4,"rating":"A+","delta_rating":-1},"SBIL.DH":{"price":193,"delta_price":7,"rating":"BB+","delta_rating":1},"600291.SS":{"price":187,"delta_price":2,"rating":"AAA","delta_rating":-1},"ICIL.NS":{"price":131,"delta_price":1,"rating":"CCC-","delta_rating":0},"PA.PS":{"price":117,"delta_price":9,"rating":"AA-","delta_rating":1},"AFm.BK":{"price":158,"delta_price":8,"rating":"CCC-","delta_rating":0},"0628.HK":{"price":196,"delta_price":3,"rating":"BB+","delta_rating":0},"GVF.AX":{"price":118,"delta_price":7,"rating":"BBB","delta_rating":-1},"023460.KQ":{"price":107,"delta_price":4,"rating":"B+","delta_rating":-1},"BKI.AX":{"price":118,"delta_price":6,"rating":"CCC","delta_rating":-1},"8239.HK":{"price":134,"delta_price":6,"rating":"AA","delta_rating":0},"CHARAN.BK":{"price":145,"delta_price":6,"rating":"AA","delta_rating":1},"8025.HK":{"price":175,"delta_price":6,"rating":"A","delta_rating":-1},"PCEN.SI":{"price":170,"delta_price":9,"rating":"B","delta_rating":0},"CINV.CM":{"price":113,"delta_price":8,"rating":"BBB-","delta_rating":0},"012700.KQ":{"price":170,"delta_price":6,"rating":"A","delta_rating":0},"AARA.BO":{"price":110,"delta_price":3,"rating":"A+","delta_rating":1},"IAG.AX":{"price":159,"delta_price":8,"rating":"BBB","delta_rating":-1},"MAGM.NS":{"price":118,"delta_price":9,"rating":"A-","delta_rating":-1},"MICS.BO":{"price":129,"delta_price":10,"rating":"AA+","delta_rating":-1},"0510.HK":{"price":160,"delta_price":5,"rating":"A","delta_rating":0},"600984.SS":{"price":125,"delta_price":1,"rating":"AAA","delta_rating":-1},"CTAL.KL":{"price":117,"delta_price":10,"rating":"AA+","delta_rating":0},"GRCR.BO":{"price":195,"delta_price":7,"rating":"A","delta_rating":0},"1508.HK":{"price":110,"delta_price":3,"rating":"A-","delta_rating":-1},"ASIA.DH":{"price":159,"delta_price":1,"rating":"AA","delta_rating":0},"MIR.AX":{"price":159,"delta_price":4,"rating":"CCC-","delta_rating":0},"JGIC.PSX":{"price":196,"delta_price":1,"rating":"B-","delta_rating":1},"7169.T":{"price":100,"delta_price":10,"rating":"AA+","delta_rating":-1},"341160.KQ":{"price":155,"delta_price":10,"rating":"AA","delta_rating":0},"TQM.BK":{"price":182,"delta_price":5,"rating":"CCC-","delta_rating":-1},"3678.HK":{"price":200,"delta_price":2,"rating":"A-","delta_rating":1},"RICH.CD":{"price":126,"delta_price":8,"rating":"AA","delta_rating":-1},"CAPG.NS":{"price":165,"delta_price":4,"rating":"B-","delta_rating":1},"8621.HK":{"price":100,"delta_price":7,"rating":"BB+","delta_rating":-1},"2718.HK":{"price":197,"delta_price":5,"rating":"A+","delta_rating":1},"GIBX.PK":{"price":125,"delta_price":3,"rating":"B+","delta_rating":-1},"0931.HK":{"price":125,"delta_price":5,"rating":"AA+","delta_rating":1},"IDLE.BO":{"price":172,"delta_price":2,"rating":"A","delta_rating":1},"VGI.AX":{"price":170,"delta_price":3,"rating":"BB","delta_rating":1},"TPLI.PSX":{"price":168,"delta_price":7,"rating":"B+","delta_rating":0},"UGRO.BO":{"price":172,"delta_price":1,"rating":"BB","delta_rating":1},"ACL.BO":{"price":130,"delta_price":9,"rating":"A-","delta_rating":1},"CASA.JK":{"price":176,"delta_price":2,"rating":"CCC-","delta_rating":0},"PDL.AX":{"price":117,"delta_price":7,"rating":"B-","delta_rating":0},"7566.TWO":{"price":114,"delta_price":9,"rating":"BBB","delta_rating":1},"FIVE.BO":{"price":199,"delta_price":8,"rating":"B","delta_rating":-1},"DNAR.JK":{"price":176,"delta_price":1,"rating":"CCC-","delta_rating":0},"THREL.BK":{"price":145,"delta_price":7,"rating":"B","delta_rating":1},"ZHCO.KL":{"price":109,"delta_price":3,"rating":"CCC-","delta_rating":0},"002423.SZ":{"price":169,"delta_price":7,"rating":"AA+","delta_rating":1},"IBC.AX":{"price":101,"delta_price":5,"rating":"BB+","delta_rating":1},"TRIS.PSX":{"price":115,"delta_price":10,"rating":"B+","delta_rating":0},"0218.HK":{"price":195,"delta_price":5,"rating":"BB","delta_rating":1},"LP65013649":{"price":114,"delta_price":6,"rating":"B-","delta_rating":1},"DLIN.DH":{"price":102,"delta_price":2,"rating":"BBB","delta_rating":0},"DXF.A":{"price":135,"delta_price":5,"rating":"B+","delta_rating":0},"ISLA.DH":{"price":141,"delta_price":2,"rating":"CCC-","delta_rating":1},"IFIC.DH":{"price":127,"delta_price":7,"rating":"AA+","delta_rating":-1},"1848.HK":{"price":193,"delta_price":9,"rating":"A","delta_rating":-1},"000567.SZ":{"price":151,"delta_price":6,"rating":"AAA","delta_rating":-1},"0174.HK":{"price":125,"delta_price":7,"rating":"B","delta_rating":-1},"SUPEREIFu.BK":{"price":184,"delta_price":7,"rating":"A+","delta_rating":1},"LODE.PS":{"price":139,"delta_price":9,"rating":"A+","delta_rating":-1},"MIG.HM":{"price":143,"delta_price":2,"rating":"BBB","delta_rating":0},"CHAA.N":{"price":174,"delta_price":7,"rating":"AA-","delta_rating":-1},"HDFL.NS":{"price":144,"delta_price":4,"rating":"B","delta_rating":1},"1290.HK":{"price":146,"delta_price":1,"rating":"BBB","delta_rating":1},"ARIC.CM":{"price":142,"delta_price":5,"rating":"B","delta_rating":1},"1UDL.PSX":{"price":142,"delta_price":7,"rating":"CCC-","delta_rating":0},"KDLE.BO":{"price":135,"delta_price":2,"rating":"A-","delta_rating":0},"NRBC.DH":{"price":167,"delta_price":4,"rating":"A+","delta_rating":1},"8462.T":{"price":104,"delta_price":4,"rating":"CCC","delta_rating":1},"COMU.NS":{"price":131,"delta_price":1,"rating":"AA+","delta_rating":0},"IFL.AX":{"price":176,"delta_price":2,"rating":"BB","delta_rating":0},"ASPA.SI":{"price":179,"delta_price":1,"rating":"CCC","delta_rating":1},"IPDC.DH":{"price":160,"delta_price":5,"rating":"B","delta_rating":0},"MUTH.NS":{"price":190,"delta_price":9,"rating":"B+","delta_rating":1},"INDI.NS":{"price":122,"delta_price":2,"rating":"CCC","delta_rating":1},"WFFS.BO":{"price":166,"delta_price":6,"rating":"B","delta_rating":-1},"IGSL.NS":{"price":198,"delta_price":3,"rating":"CCC","delta_rating":1},"088980.KS":{"price":200,"delta_price":4,"rating":"BBB-","delta_rating":0},"000400.KS":{"price":182,"delta_price":3,"rating":"BB+","delta_rating":0},"CNF.N":{"price":108,"delta_price":9,"rating":"BBB-","delta_rating":-1},"HLSF.SI":{"price":115,"delta_price":2,"rating":"BBB-","delta_rating":1},"AMOR.JK":{"price":124,"delta_price":4,"rating":"CCC","delta_rating":0},"YRD.N":{"price":180,"delta_price":5,"rating":"BB+","delta_rating":-1},"EQHL.NS":{"price":152,"delta_price":3,"rating":"AA","delta_rating":1},"CFLB.CM":{"price":105,"delta_price":6,"rating":"B-","delta_rating":1},"SCAC.NS":{"price":119,"delta_price":6,"rating":"A+","delta_rating":1},"GSMF.JK":{"price":164,"delta_price":4,"rating":"BBB-","delta_rating":-1},"ABSP.PS":{"price":168,"delta_price":4,"rating":"CCC+","delta_rating":1},"EIBL.PSX":{"price":148,"delta_price":5,"rating":"AA-","delta_rating":1},"SOL.AX":{"price":138,"delta_price":4,"rating":"BB+","delta_rating":-1},"NCCB.DH":{"price":187,"delta_price":6,"rating":"AA-","delta_rating":-1},"2445.T":{"price":101,"delta_price":6,"rating":"AA-","delta_rating":1},"ORIL.PSX":{"price":170,"delta_price":8,"rating":"A","delta_rating":1},"SILI.NS":{"price":103,"delta_price":10,"rating":"BBB-","delta_rating":1},"PRIN.DH":{"price":163,"delta_price":10,"rating":"CCC+","delta_rating":-1},"CRIN.PSX":{"price":127,"delta_price":3,"rating":"AAA","delta_rating":-1},"311270.KQ":{"price":105,"delta_price":3,"rating":"AA+","delta_rating":1},"PPT.AX":{"price":178,"delta_price":2,"rating":"AA","delta_rating":-1},"049720.KQ":{"price":148,"delta_price":7,"rating":"AA+","delta_rating":-1},"6101.TWO":{"price":103,"delta_price":3,"rating":"CCC+","delta_rating":1},"SMK.BK":{"price":130,"delta_price":1,"rating":"CCC-","delta_rating":0},"AMAR.JK":{"price":171,"delta_price":4,"rating":"A","delta_rating":1},"PTI.HN":{"price":170,"delta_price":2,"rating":"CCC+","delta_rating":0},"GFIL.BO":{"price":171,"delta_price":8,"rating":"AA","delta_rating":0},"ARIF.PSX":{"price":141,"delta_price":1,"rating":"CCC-","delta_rating":0},"6069.HK":{"price":161,"delta_price":9,"rating":"AAA","delta_rating":0},"PANK.BO":{"price":181,"delta_price":10,"rating":"AA+","delta_rating":0},"SPAD.NS":{"price":141,"delta_price":4,"rating":"BBB-","delta_rating":1},"RELN.PSX":{"price":170,"delta_price":5,"rating":"CCC+","delta_rating":1},"NIPF.NS":{"price":117,"delta_price":4,"rating":"BB+","delta_rating":0},"BIPS.PSX":{"price":177,"delta_price":3,"rating":"CCC+","delta_rating":0},"AMZN.PSX":{"price":133,"delta_price":8,"rating":"A-","delta_rating":-1},"SIRIPu.BK":{"price":140,"delta_price":6,"rating":"CCC","delta_rating":-1},"RELI.JK":{"price":189,"delta_price":9,"rating":"BBB","delta_rating":1},"4690.T":{"price":158,"delta_price":2,"rating":"BB","delta_rating":0},"6024.TW":{"price":104,"delta_price":5,"rating":"BBB-","delta_rating":0},"TWR.NZ":{"price":142,"delta_price":8,"rating":"AA-","delta_rating":-1},"155900.KS":{"price":188,"delta_price":6,"rating":"CCC+","delta_rating":0},"TFFIFu.BK":{"price":130,"delta_price":5,"rating":"A-","delta_rating":0},"CAM.AX":{"price":111,"delta_price":10,"rating":"A","delta_rating":-1},"PADM.DH":{"price":181,"delta_price":6,"rating":"BB+","delta_rating":-1},"PAQC.OQ":{"price":190,"delta_price":9,"rating":"CCC+","delta_rating":1},"UOIS.SI":{"price":123,"delta_price":8,"rating":"B","delta_rating":0},"2388.HK":{"price":149,"delta_price":8,"rating":"BBB","delta_rating":1},"SMMA.JK":{"price":122,"delta_price":8,"rating":"CCC-","delta_rating":-1},"000240.KS":{"price":195,"delta_price":4,"rating":"B+","delta_rating":1},"HOTU.SI":{"price":153,"delta_price":7,"rating":"B-","delta_rating":1},"ICBL.DH":{"price":181,"delta_price":5,"rating":"B+","delta_rating":0},"CITI.BO":{"price":145,"delta_price":5,"rating":"CCC","delta_rating":0},"ADIN.BO":{"price":112,"delta_price":9,"rating":"CCC+","delta_rating":1},"MSTT.BO":{"price":114,"delta_price":6,"rating":"BBB+","delta_rating":-1},"8560.FU":{"price":131,"delta_price":6,"rating":"AAA","delta_rating":-1},"PUYI.OQ":{"price":142,"delta_price":6,"rating":"CCC+","delta_rating":1},"PNI.AX":{"price":111,"delta_price":4,"rating":"CCC+","delta_rating":-1},"AEF.AX":{"price":169,"delta_price":10,"rating":"BB+","delta_rating":0},"PNLF.JK":{"price":122,"delta_price":10,"rating":"AAA","delta_rating":0},"ORS.HNO":{"price":160,"delta_price":5,"rating":"CCC-","delta_rating":-1},"TVS.HM":{"price":176,"delta_price":1,"rating":"BBB-","delta_rating":-1},"AUTH.BO":{"price":146,"delta_price":8,"rating":"A-","delta_rating":0},"MXT.AX":{"price":132,"delta_price":10,"rating":"A-","delta_rating":1},"PFCS.BO":{"price":198,"delta_price":8,"rating":"AAA","delta_rating":0},"MONR.BO":{"price":185,"delta_price":10,"rating":"A","delta_rating":0},"603613.SS":{"price":172,"delta_price":4,"rating":"B","delta_rating":0},"ECX.AX":{"price":192,"delta_price":10,"rating":"BB+","delta_rating":0},"TQRm.BK":{"price":117,"delta_price":7,"rating":"CCC+","delta_rating":0},"GRCYU.OQ":{"price":161,"delta_price":8,"rating":"AA","delta_rating":0},"1428.HK":{"price":149,"delta_price":8,"rating":"BB+","delta_rating":0},"BIC.HM":{"price":179,"delta_price":1,"rating":"AA","delta_rating":1},"PCI.AX":{"price":120,"delta_price":2,"rating":"BBB-","delta_rating":0},"COMN.CM":{"price":148,"delta_price":4,"rating":"AA+","delta_rating":-1},"8301.T":{"price":134,"delta_price":4,"rating":"AA+","delta_rating":1},"APL.AX":{"price":174,"delta_price":2,"rating":"A+","delta_rating":1},"335870.KQ":{"price":106,"delta_price":6,"rating":"B+","delta_rating":-1},"NAYS.BO":{"price":172,"delta_price":7,"rating":"A-","delta_rating":1},"NAC.AX":{"price":165,"delta_price":2,"rating":"AA+","delta_rating":1},"GRAL.PSX":{"price":159,"delta_price":6,"rating":"AA-","delta_rating":1},"HKIB.N":{"price":122,"delta_price":9,"rating":"CCC+","delta_rating":-1},"277070.KQ":{"price":168,"delta_price":7,"rating":"BBB-","delta_rating":-1},"600318.SS":{"price":183,"delta_price":9,"rating":"BBB+","delta_rating":-1},"PE1.AX":{"price":119,"delta_price":4,"rating":"CCC+","delta_rating":0},"WICL.NS":{"price":134,"delta_price":2,"rating":"B-","delta_rating":1},"000416.SZ":{"price":167,"delta_price":9,"rating":"B+","delta_rating":0},"BBYB.JK":{"price":138,"delta_price":5,"rating":"BB","delta_rating":-1},"PAI.AX":{"price":125,"delta_price":7,"rating":"AA-","delta_rating":-1},"0668.HK":{"price":165,"delta_price":7,"rating":"AAA","delta_rating":-1},"AFI.AX":{"price":108,"delta_price":5,"rating":"BBB+","delta_rating":1},"CRDE.NS":{"price":137,"delta_price":8,"rating":"BB+","delta_rating":1},"FGX.AX":{"price":138,"delta_price":2,"rating":"BB+","delta_rating":0},"BTNB.OQ":{"price":109,"delta_price":8,"rating":"B+","delta_rating":1},"600621.SS":{"price":192,"delta_price":8,"rating":"CCC-","delta_rating":0},"0900.HK":{"price":114,"delta_price":10,"rating":"BB","delta_rating":-1},"DITO.PS":{"price":167,"delta_price":5,"rating":"CCC+","delta_rating":-1},"GELA.SI":{"price":113,"delta_price":4,"rating":"CCC-","delta_rating":0},"STNM.BO":{"price":137,"delta_price":1,"rating":"B+","delta_rating":1},"FDLI.DH":{"price":158,"delta_price":10,"rating":"CCC-","delta_rating":1},"028080.KQ":{"price":111,"delta_price":4,"rating":"B+","delta_rating":0},"ORIM.PSX":{"price":132,"delta_price":8,"rating":"AA+","delta_rating":-1},"MCEI.NS":{"price":195,"delta_price":4,"rating":"CCC","delta_rating":-1},"API.HN":{"price":121,"delta_price":2,"rating":"AA-","delta_rating":0},"7076.NG":{"price":110,"delta_price":3,"rating":"CCC-","delta_rating":-1},"LTFH.NS":{"price":144,"delta_price":2,"rating":"BB","delta_rating":1},"293580.KQ":{"price":184,"delta_price":1,"rating":"AA","delta_rating":0},"7196.T":{"price":181,"delta_price":2,"rating":"BB","delta_rating":0},"HMB.PSX":{"price":149,"delta_price":5,"rating":"A-","delta_rating":-1},"WQG.AX":{"price":166,"delta_price":1,"rating":"CCC-","delta_rating":1},"NSI.BK":{"price":160,"delta_price":4,"rating":"BBB-","delta_rating":-1},"000563.SZ":{"price":128,"delta_price":4,"rating":"CCC","delta_rating":-1},"PNBG.NS":{"price":145,"delta_price":4,"rating":"B","delta_rating":1},"MTI.BK":{"price":163,"delta_price":5,"rating":"BBB+","delta_rating":-1},"CFSL.BO":{"price":170,"delta_price":9,"rating":"BB","delta_rating":1},"0329.HK":{"price":107,"delta_price":5,"rating":"BBB+","delta_rating":-1},"HBSH.NS":{"price":200,"delta_price":9,"rating":"A-","delta_rating":1},"PAUL.BO":{"price":128,"delta_price":6,"rating":"BBB-","delta_rating":1},"HDFA.NS":{"price":127,"delta_price":1,"rating":"AA-","delta_rating":-1},"7360.T":{"price":137,"delta_price":5,"rating":"BBB+","delta_rating":0},"0086.HK":{"price":148,"delta_price":6,"rating":"A+","delta_rating":1},"347140.KQ":{"price":152,"delta_price":3,"rating":"BB+","delta_rating":0},"349720.KQ":{"price":164,"delta_price":8,"rating":"AA","delta_rating":-1},"363260.KQ":{"price":124,"delta_price":7,"rating":"B+","delta_rating":1},"331380.KQ":{"price":133,"delta_price":6,"rating":"CCC+","delta_rating":0},"343510.KQ":{"price":189,"delta_price":5,"rating":"AAA","delta_rating":-1},"BTBT.OQ":{"price":199,"delta_price":7,"rating":"AAA","delta_rating":0},"ARG.AX":{"price":197,"delta_price":9,"rating":"AAA","delta_rating":-1},"246690.KQ":{"price":139,"delta_price":7,"rating":"A+","delta_rating":1},"PILN.NS":{"price":104,"delta_price":2,"rating":"BB+","delta_rating":-1},"ITSL.NS":{"price":134,"delta_price":9,"rating":"CCC-","delta_rating":-1},"SHAL.BO":{"price":144,"delta_price":9,"rating":"BBB-","delta_rating":1},"6023.TWO":{"price":111,"delta_price":8,"rating":"B+","delta_rating":-1},"7343.T":{"price":185,"delta_price":6,"rating":"BBB+","delta_rating":-1},"BKNL.BO":{"price":173,"delta_price":8,"rating":"AA+","delta_rating":-1},"PSB.PS":{"price":196,"delta_price":3,"rating":"BB","delta_rating":1},"HLGC.KL":{"price":101,"delta_price":7,"rating":"BBB+","delta_rating":1},"ASKI.PSX":{"price":139,"delta_price":8,"rating":"BBB","delta_rating":1},"0388.HK":{"price":196,"delta_price":4,"rating":"CCC+","delta_rating":-1},"600390.SS":{"price":180,"delta_price":8,"rating":"B-","delta_rating":0},"ABAS.BO":{"price":151,"delta_price":9,"rating":"BBB+","delta_rating":-1},"UNTD.PSX":{"price":174,"delta_price":6,"rating":"AA+","delta_rating":-1},"HOME.NS":{"price":114,"delta_price":3,"rating":"B","delta_rating":0},"BFIN.NS":{"price":133,"delta_price":2,"rating":"A+","delta_rating":0},"AUI.AX":{"price":173,"delta_price":3,"rating":"CCC","delta_rating":0},"UJVF.NS":{"price":135,"delta_price":6,"rating":"CCC-","delta_rating":1},"5878.TWO":{"price":108,"delta_price":4,"rating":"B","delta_rating":1},"MLAC.OQ":{"price":121,"delta_price":4,"rating":"A+","delta_rating":-1},"DEH.N":{"price":178,"delta_price":4,"rating":"BBB+","delta_rating":-1},"OPA_u.N":{"price":119,"delta_price":7,"rating":"AA-","delta_rating":0},"7192.T":{"price":161,"delta_price":10,"rating":"B-","delta_rating":0},"NLIS.DH":{"price":128,"delta_price":10,"rating":"BB","delta_rating":1},"AUB.AX":{"price":154,"delta_price":2,"rating":"B-","delta_rating":-1},"ADTB.NS":{"price":195,"delta_price":1,"rating":"BBB-","delta_rating":0},"601601.SS":{"price":125,"delta_price":8,"rating":"BBB+","delta_rating":1},"GENA.NS":{"price":105,"delta_price":10,"rating":"CCC+","delta_rating":-1},"PADI.JK":{"price":107,"delta_price":6,"rating":"A-","delta_rating":1},"ILFS.DH":{"price":102,"delta_price":4,"rating":"B","delta_rating":-1},"8088.HK":{"price":177,"delta_price":1,"rating":"AA-","delta_rating":1},"0310.HK":{"price":127,"delta_price":10,"rating":"CCC+","delta_rating":0},"MHC.PS":{"price":130,"delta_price":3,"rating":"A+","delta_rating":-1},"0913.HK":{"price":167,"delta_price":4,"rating":"BBB","delta_rating":1},"1227.HK":{"price":108,"delta_price":7,"rating":"A","delta_rating":-1},"8783.T":{"price":175,"delta_price":8,"rating":"AA+","delta_rating":-1},"LAW.AX":{"price":146,"delta_price":3,"rating":"BB+","delta_rating":-1},"FFI.PS":{"price":148,"delta_price":6,"rating":"A-","delta_rating":1},"JFIL.BO":{"price":184,"delta_price":5,"rating":"A","delta_rating":1},"AARS.BO":{"price":126,"delta_price":7,"rating":"BB+","delta_rating":-1},"GAJA.BO":{"price":178,"delta_price":1,"rating":"AA-","delta_rating":-1},"ASHG.BO":{"price":138,"delta_price":9,"rating":"B","delta_rating":1},"1217.HK":{"price":128,"delta_price":2,"rating":"BBB-","delta_rating":-1},"0905.HK":{"price":194,"delta_price":9,"rating":"BBB+","delta_rating":-1},"1160.HK":{"price":186,"delta_price":7,"rating":"B-","delta_rating":1},"MRCY.BO":{"price":200,"delta_price":2,"rating":"BBB","delta_rating":0},"SHIN.BO":{"price":129,"delta_price":1,"rating":"A+","delta_rating":1},"UNIJ.BO":{"price":194,"delta_price":1,"rating":"CCC+","delta_rating":1},"HEAL.BO":{"price":153,"delta_price":6,"rating":"CCC-","delta_rating":1},"RTCL.BO":{"price":102,"delta_price":7,"rating":"B+","delta_rating":-1},"KIDA.BO":{"price":182,"delta_price":10,"rating":"A+","delta_rating":1},"DEVI.BO":{"price":174,"delta_price":6,"rating":"AA-","delta_rating":-1},"PUTR.BO":{"price":198,"delta_price":9,"rating":"BB","delta_rating":0},"JINE.BO":{"price":113,"delta_price":2,"rating":"AAA","delta_rating":-1},"TERR.BO":{"price":164,"delta_price":6,"rating":"A","delta_rating":1},"CI1.AX":{"price":147,"delta_price":9,"rating":"BBB+","delta_rating":1},"KUMB.BO":{"price":155,"delta_price":8,"rating":"B-","delta_rating":0},"ABFS.BO":{"price":173,"delta_price":2,"rating":"BBB","delta_rating":0},"LMG.PS":{"price":126,"delta_price":9,"rating":"BBB+","delta_rating":0},"KANG.BO":{"price":107,"delta_price":10,"rating":"AA+","delta_rating":1},"MLTD.BO":{"price":159,"delta_price":3,"rating":"CCC-","delta_rating":-1},"GUCC.BO":{"price":109,"delta_price":4,"rating":"AA","delta_rating":-1},"307870.KQ":{"price":161,"delta_price":3,"rating":"AA-","delta_rating":0},"340120.KQ":{"price":110,"delta_price":3,"rating":"CCC-","delta_rating":0},"342550.KQ":{"price":112,"delta_price":10,"rating":"AA","delta_rating":0},"RJPU.BO":{"price":149,"delta_price":4,"rating":"A-","delta_rating":0},"323940.KQ":{"price":166,"delta_price":2,"rating":"B-","delta_rating":0},"330990.KQ":{"price":142,"delta_price":10,"rating":"A","delta_rating":1},"328380.KQ":{"price":119,"delta_price":3,"rating":"B-","delta_rating":1},"307070.KQ":{"price":199,"delta_price":5,"rating":"BBB+","delta_rating":0},"340350.KQ":{"price":114,"delta_price":5,"rating":"A-","delta_rating":0},"340440.KQ":{"price":142,"delta_price":5,"rating":"AA","delta_rating":1},"MRUG.BO":{"price":191,"delta_price":2,"rating":"AA+","delta_rating":1},"SPEC.BO":{"price":161,"delta_price":9,"rating":"AAA","delta_rating":-1},"GCG.L":{"price":125,"delta_price":9,"rating":"A-","delta_rating":-1},"SATM.BO":{"price":173,"delta_price":6,"rating":"A-","delta_rating":0},"SVIL.BO":{"price":166,"delta_price":6,"rating":"B+","delta_rating":0},"PASF.BO":{"price":152,"delta_price":1,"rating":"B","delta_rating":0},"MASH.BO":{"price":123,"delta_price":10,"rating":"CCC-","delta_rating":0},"SUFN.BO":{"price":105,"delta_price":9,"rating":"BB","delta_rating":0},"BPCA.BO":{"price":171,"delta_price":6,"rating":"AAA","delta_rating":-1},"RRSE.BO":{"price":146,"delta_price":3,"rating":"BB","delta_rating":1},"MRTS.BO":{"price":122,"delta_price":4,"rating":"CCC-","delta_rating":0},"FOCU.BO":{"price":100,"delta_price":3,"rating":"A","delta_rating":-1},"TWIN.BO":{"price":197,"delta_price":5,"rating":"CCC+","delta_rating":-1},"MDSE.BO":{"price":132,"delta_price":1,"rating":"B+","delta_rating":1},"YUSG.PK":{"price":143,"delta_price":9,"rating":"CCC+","delta_rating":1},"SANM.BO":{"price":137,"delta_price":2,"rating":"BBB-","delta_rating":0},"YAST.BO":{"price":195,"delta_price":8,"rating":"BB+","delta_rating":1},"HRMN.BO":{"price":179,"delta_price":8,"rating":"AA","delta_rating":1},"MILM.L":{"price":190,"delta_price":5,"rating":"A+","delta_rating":1},"VAXH.BO":{"price":150,"delta_price":1,"rating":"BBB+","delta_rating":-1},"MEPM.BO":{"price":121,"delta_price":9,"rating":"A-","delta_rating":1},"SACS.BO":{"price":129,"delta_price":8,"rating":"A-","delta_rating":1},"LYMC.BO":{"price":169,"delta_price":1,"rating":"A-","delta_rating":0},"HRBF.BO":{"price":120,"delta_price":6,"rating":"CCC","delta_rating":-1},"SAGS.BO":{"price":111,"delta_price":6,"rating":"CCC-","delta_rating":1},"MMJ.AX":{"price":191,"delta_price":10,"rating":"AA-","delta_rating":1},"MUNO.BO":{"price":104,"delta_price":3,"rating":"BB","delta_rating":0},"JADE.L":{"price":157,"delta_price":5,"rating":"A-","delta_rating":-1},"CONR.BO":{"price":181,"delta_price":7,"rating":"AA-","delta_rating":-1},"ADVE.SI":{"price":110,"delta_price":3,"rating":"B+","delta_rating":1},"SHAG.BO":{"price":155,"delta_price":4,"rating":"AAA","delta_rating":0},"MILG.BO":{"price":108,"delta_price":6,"rating":"BB+","delta_rating":0},"SASA.BO":{"price":119,"delta_price":8,"rating":"AA-","delta_rating":0},"ALAC.OQ":{"price":140,"delta_price":3,"rating":"AAA","delta_rating":-1},"SEVE.BO":{"price":138,"delta_price":3,"rating":"CCC+","delta_rating":-1},"DWIT.BO":{"price":177,"delta_price":9,"rating":"AAA","delta_rating":0},"AARC.BO":{"price":196,"delta_price":4,"rating":"B-","delta_rating":-1},"EASY.BO":{"price":127,"delta_price":1,"rating":"A-","delta_rating":0},"DNAM.BO":{"price":153,"delta_price":3,"rating":"CCC","delta_rating":1},"SHBC.BO":{"price":128,"delta_price":7,"rating":"A-","delta_rating":-1},"MERC.SI":{"price":129,"delta_price":6,"rating":"A+","delta_rating":1},"CMEI.BO":{"price":109,"delta_price":3,"rating":"BBB-","delta_rating":1},"SAII.BO":{"price":112,"delta_price":9,"rating":"CCC-","delta_rating":-1},"RGFC.BO":{"price":173,"delta_price":1,"rating":"A","delta_rating":0},"QRC.V":{"price":165,"delta_price":8,"rating":"BBB+","delta_rating":-1},"ROSF.BO":{"price":199,"delta_price":5,"rating":"CCC-","delta_rating":0},"CTA.HNO":{"price":147,"delta_price":6,"rating":"A-","delta_rating":1},"372290.KQ":{"price":129,"delta_price":5,"rating":"AA","delta_rating":-1},"367360.KQ":{"price":194,"delta_price":2,"rating":"CCC+","delta_rating":-1},"ARDI.BO":{"price":197,"delta_price":8,"rating":"BB+","delta_rating":1},"DVTD.L":{"price":103,"delta_price":10,"rating":"CCC-","delta_rating":-1},"VIKA.BO":{"price":187,"delta_price":9,"rating":"CCC+","delta_rating":0},"JUPI.BO":{"price":115,"delta_price":10,"rating":"CCC+","delta_rating":0},"MCX.AX":{"price":102,"delta_price":4,"rating":"AA-","delta_rating":1},"JAYA.BO":{"price":195,"delta_price":2,"rating":"A","delta_rating":-1},"SHKA.BO":{"price":175,"delta_price":3,"rating":"AAA","delta_rating":0},"SAIC.BO":{"price":166,"delta_price":7,"rating":"BBB-","delta_rating":1},"ACE.NZ":{"price":156,"delta_price":6,"rating":"B-","delta_rating":0},"ONES.BO":{"price":105,"delta_price":6,"rating":"AAA","delta_rating":-1},"WSL.L":{"price":159,"delta_price":2,"rating":"B-","delta_rating":-1},"MANR.BO":{"price":171,"delta_price":1,"rating":"BBB","delta_rating":1},"SINV.BO":{"price":170,"delta_price":2,"rating":"AAA","delta_rating":0},"LENA.BO":{"price":170,"delta_price":6,"rating":"BBB+","delta_rating":-1},"IPC.AX":{"price":111,"delta_price":5,"rating":"A","delta_rating":1},"MED.PS":{"price":159,"delta_price":5,"rating":"A+","delta_rating":0},"MEHF.BO":{"price":105,"delta_price":3,"rating":"AA+","delta_rating":0},"GANE.BO":{"price":157,"delta_price":8,"rating":"A","delta_rating":1},"NIVI.BO":{"price":140,"delta_price":9,"rating":"A-","delta_rating":0},"CNSE.BO":{"price":191,"delta_price":8,"rating":"BBB","delta_rating":1},"FGFL.CD":{"price":137,"delta_price":1,"rating":"B","delta_rating":-1},"HEMH.BO":{"price":148,"delta_price":5,"rating":"BBB+","delta_rating":-1},"IAFN.BO":{"price":170,"delta_price":8,"rating":"AA","delta_rating":-1},"PRSM.BO":{"price":127,"delta_price":2,"rating":"B-","delta_rating":-1},"SPAR.BO":{"price":161,"delta_price":10,"rating":"BBB-","delta_rating":-1},"LFNS.BO":{"price":106,"delta_price":5,"rating":"BB","delta_rating":-1},"ICCL.BO":{"price":136,"delta_price":8,"rating":"AA","delta_rating":1},"FROL.BO":{"price":159,"delta_price":1,"rating":"AA+","delta_rating":0},"BGI.NZ":{"price":146,"delta_price":1,"rating":"B","delta_rating":-1},"MOOI.BO":{"price":176,"delta_price":7,"rating":"A","delta_rating":-1},"SHE.AX":{"price":156,"delta_price":10,"rating":"BBB+","delta_rating":-1},"PULS.BO":{"price":120,"delta_price":7,"rating":"BBB-","delta_rating":-1},"ALKA.BO":{"price":173,"delta_price":5,"rating":"BBB","delta_rating":1},"AYI.AX":{"price":162,"delta_price":3,"rating":"A","delta_rating":1},"0770.HK":{"price":104,"delta_price":8,"rating":"AA","delta_rating":1},"QFSL.BO":{"price":172,"delta_price":6,"rating":"AA-","delta_rating":1},"FUTR.BO":{"price":187,"delta_price":8,"rating":"AAA","delta_rating":0},"DELE.BO":{"price":198,"delta_price":4,"rating":"BBB","delta_rating":1},"RFFS.BO":{"price":119,"delta_price":9,"rating":"CCC-","delta_rating":0},"FAU.AX":{"price":131,"delta_price":3,"rating":"BBB-","delta_rating":1},"KARI.BO":{"price":154,"delta_price":8,"rating":"B+","delta_rating":1},"NEWM.BO":{"price":178,"delta_price":4,"rating":"B","delta_rating":1},"UNI.PS":{"price":194,"delta_price":8,"rating":"BB+","delta_rating":1},"RFCL.BO":{"price":176,"delta_price":5,"rating":"CCC","delta_rating":0},"MORG.BO":{"price":167,"delta_price":1,"rating":"BBB-","delta_rating":1},"MAHL.BO":{"price":114,"delta_price":5,"rating":"CCC-","delta_rating":1},"GCMC.BO":{"price":167,"delta_price":10,"rating":"CCC","delta_rating":0},"CNDF.BO":{"price":139,"delta_price":1,"rating":"BBB+","delta_rating":1},"GCMS.BO":{"price":144,"delta_price":5,"rating":"BB","delta_rating":-1},"AGCM.BO":{"price":179,"delta_price":5,"rating":"B-","delta_rating":0},"JHAV.BO":{"price":109,"delta_price":1,"rating":"AA-","delta_rating":1},"PPLI.BO":{"price":193,"delta_price":10,"rating":"AA+","delta_rating":-1},"PHTN.BO":{"price":138,"delta_price":4,"rating":"AA-","delta_rating":0},"WILF.BO":{"price":109,"delta_price":4,"rating":"BB+","delta_rating":-1},"KNTT.BO":{"price":186,"delta_price":7,"rating":"BBB+","delta_rating":-1},"ESCR.BO":{"price":187,"delta_price":3,"rating":"B-","delta_rating":0},"HIKL.BO":{"price":111,"delta_price":9,"rating":"CCC+","delta_rating":0},"WORT.BO":{"price":162,"delta_price":7,"rating":"AAA","delta_rating":0},"RBGU.BO":{"price":156,"delta_price":8,"rating":"CCC-","delta_rating":0},"FBSL.BO":{"price":117,"delta_price":7,"rating":"CCC+","delta_rating":1},"TCAP.BK":{"price":193,"delta_price":8,"rating":"BBB+","delta_rating":1},"LHFG.BK":{"price":105,"delta_price":10,"rating":"AA+","delta_rating":1},"KTC.BK":{"price":113,"delta_price":9,"rating":"AA-","delta_rating":0},"BAY.BK":{"price":164,"delta_price":10,"rating":"A","delta_rating":1},"ZMICO.BK":{"price":195,"delta_price":2,"rating":"CCC-","delta_rating":0},"ASK.BK":{"price":118,"delta_price":8,"rating":"B+","delta_rating":0},"KKP.BK":{"price":144,"delta_price":7,"rating":"CCC","delta_rating":0},"CGH.BK":{"price":119,"delta_price":5,"rating":"A-","delta_rating":1},"ML.BK":{"price":190,"delta_price":5,"rating":"A+","delta_rating":0},"2890.TW":{"price":155,"delta_price":7,"rating":"BBB","delta_rating":0},"2892.TW":{"price":119,"delta_price":9,"rating":"BBB-","delta_rating":1},"2891.TW":{"price":112,"delta_price":9,"rating":"BB","delta_rating":0},"2886.TW":{"price":159,"delta_price":6,"rating":"A","delta_rating":0},"2880.TW":{"price":118,"delta_price":2,"rating":"BBB+","delta_rating":0},"6005.TW":{"price":128,"delta_price":4,"rating":"BB+","delta_rating":-1},"5876.TW":{"price":188,"delta_price":7,"rating":"BB","delta_rating":1},"2887.TW":{"price":159,"delta_price":9,"rating":"CCC-","delta_rating":1},"5880.TW":{"price":179,"delta_price":1,"rating":"CCC+","delta_rating":0},"2834.TW":{"price":140,"delta_price":1,"rating":"BB+","delta_rating":-1},"2883.TW":{"price":121,"delta_price":6,"rating":"CCC-","delta_rating":0},"2885.TW":{"price":154,"delta_price":2,"rating":"BBB+","delta_rating":1},"2855.TW":{"price":190,"delta_price":9,"rating":"AA","delta_rating":-1},"2838.TW":{"price":122,"delta_price":8,"rating":"B+","delta_rating":1},"2897.TW":{"price":164,"delta_price":1,"rating":"BBB","delta_rating":0},"2812.TW":{"price":110,"delta_price":1,"rating":"BBB-","delta_rating":-1},"2849.TW":{"price":176,"delta_price":2,"rating":"CCC","delta_rating":0},"2501.TW":{"price":126,"delta_price":6,"rating":"BBB","delta_rating":-1},"2832.TW":{"price":116,"delta_price":9,"rating":"BBB","delta_rating":-1},"2852.TW":{"price":112,"delta_price":4,"rating":"AA","delta_rating":-1},"2851.TW":{"price":105,"delta_price":3,"rating":"A+","delta_rating":0},"2850.TW":{"price":136,"delta_price":7,"rating":"B-","delta_rating":0},"2816.TW":{"price":178,"delta_price":8,"rating":"B","delta_rating":1},"5859.TWO":{"price":174,"delta_price":9,"rating":"BB+","delta_rating":1},"2867.TW":{"price":141,"delta_price":10,"rating":"A+","delta_rating":1},"3328.HK":{"price":188,"delta_price":2,"rating":"CCC-","delta_rating":0},"6122.HK":{"price":184,"delta_price":2,"rating":"B+","delta_rating":1},"600958.SS":{"price":186,"delta_price":10,"rating":"A","delta_rating":-1},"3698.HK":{"price":198,"delta_price":8,"rating":"BBB+","delta_rating":-1},"000728.SZ":{"price":139,"delta_price":4,"rating":"CCC","delta_rating":-1},"600909.SS":{"price":151,"delta_price":9,"rating":"BBB+","delta_rating":-1},"000166.SZ":{"price":154,"delta_price":6,"rating":"CCC-","delta_rating":-1},"002939.SZ":{"price":186,"delta_price":6,"rating":"A+","delta_rating":0},"601788.SS":{"price":193,"delta_price":1,"rating":"B","delta_rating":-1},"1375.HK":{"price":175,"delta_price":5,"rating":"B","delta_rating":1},"600109.SS":{"price":173,"delta_price":1,"rating":"A-","delta_rating":-1},"1456.HK":{"price":103,"delta_price":2,"rating":"A-","delta_rating":1},"600643.SS":{"price":116,"delta_price":4,"rating":"A+","delta_rating":0},"MBSS.KL":{"price":153,"delta_price":7,"rating":"AA-","delta_rating":-1},"AFIN.KL":{"price":148,"delta_price":3,"rating":"BB+","delta_rating":-1},"AMMB.KL":{"price":174,"delta_price":10,"rating":"AA+","delta_rating":1},"RHBC.KL":{"price":113,"delta_price":8,"rating":"BBB-","delta_rating":1},"HLBB.KL":{"price":107,"delta_price":1,"rating":"AAA","delta_rating":-1},"ALLI.KL":{"price":161,"delta_price":2,"rating":"BBB-","delta_rating":0},"CIMB.KL":{"price":134,"delta_price":7,"rating":"B-","delta_rating":0},"PUBM.KL":{"price":112,"delta_price":1,"rating":"BBB","delta_rating":0},"HLCB.KL":{"price":129,"delta_price":3,"rating":"A","delta_rating":1},"TUNE.KL":{"price":173,"delta_price":7,"rating":"BB+","delta_rating":-1},"CIMBT.BK":{"price":127,"delta_price":4,"rating":"AA-","delta_rating":-1},"024110.KS":{"price":183,"delta_price":3,"rating":"B-","delta_rating":1},"3988.HK":{"price":195,"delta_price":9,"rating":"A+","delta_rating":-1},"8358.T":{"price":191,"delta_price":5,"rating":"AAA","delta_rating":0},"8385.T":{"price":101,"delta_price":5,"rating":"A+","delta_rating":-1},"8369.T":{"price":142,"delta_price":7,"rating":"B+","delta_rating":1},"8355.T":{"price":131,"delta_price":3,"rating":"AA+","delta_rating":1},"8411.T":{"price":146,"delta_price":6,"rating":"BBB-","delta_rating":-1},"8334.T":{"price":131,"delta_price":9,"rating":"BB","delta_rating":1},"8316.T":{"price":182,"delta_price":2,"rating":"CCC","delta_rating":1},"8382.T":{"price":143,"delta_price":3,"rating":"CCC+","delta_rating":1},"8309.T":{"price":176,"delta_price":7,"rating":"AA-","delta_rating":-1},"8604.T":{"price":156,"delta_price":6,"rating":"AA-","delta_rating":1},"8331.T":{"price":160,"delta_price":3,"rating":"BBB-","delta_rating":0},"8585.T":{"price":162,"delta_price":10,"rating":"AA-","delta_rating":0},"8308.T":{"price":163,"delta_price":9,"rating":"AA-","delta_rating":-1},"8383.T":{"price":135,"delta_price":2,"rating":"AA+","delta_rating":1},"8363.T":{"price":175,"delta_price":3,"rating":"B-","delta_rating":-1},"8418.T":{"price":162,"delta_price":2,"rating":"BB+","delta_rating":0},"8366.T":{"price":196,"delta_price":4,"rating":"BBB","delta_rating":1},"8739.T":{"price":197,"delta_price":6,"rating":"BBB","delta_rating":-1},"8356.T":{"price":183,"delta_price":10,"rating":"BBB","delta_rating":-1},"8410.T":{"price":178,"delta_price":7,"rating":"AA","delta_rating":-1},"8377.T":{"price":116,"delta_price":9,"rating":"A","delta_rating":1},"8367.T":{"price":111,"delta_price":6,"rating":"B-","delta_rating":1},"8570.T":{"price":148,"delta_price":10,"rating":"A","delta_rating":-1},"8368.T":{"price":157,"delta_price":9,"rating":"AA+","delta_rating":1},"8593.T":{"price":164,"delta_price":9,"rating":"BB","delta_rating":1},"7186.T":{"price":196,"delta_price":10,"rating":"A+","delta_rating":0},"8584.T":{"price":102,"delta_price":8,"rating":"B-","delta_rating":0},"8304.T":{"price":194,"delta_price":10,"rating":"A+","delta_rating":1},"8370.T":{"price":193,"delta_price":10,"rating":"AAA","delta_rating":-1},"8359.T":{"price":134,"delta_price":2,"rating":"B+","delta_rating":1},"8424.T":{"price":119,"delta_price":10,"rating":"AAA","delta_rating":-1},"8628.T":{"price":179,"delta_price":8,"rating":"AA-","delta_rating":-1},"8473.T":{"price":165,"delta_price":8,"rating":"B+","delta_rating":1},"8697.T":{"price":123,"delta_price":4,"rating":"BBB","delta_rating":-1},"8566.T":{"price":129,"delta_price":5,"rating":"AA-","delta_rating":1},"8425.T":{"price":192,"delta_price":5,"rating":"BBB+","delta_rating":-1},"8439.T":{"price":103,"delta_price":2,"rating":"BBB-","delta_rating":0},"8354.T":{"price":165,"delta_price":8,"rating":"CCC-","delta_rating":-1},"8388.T":{"price":133,"delta_price":5,"rating":"B","delta_rating":1},"8345.T":{"price":148,"delta_price":8,"rating":"B","delta_rating":1},"IDBI.NS":{"price":114,"delta_price":2,"rating":"CCC-","delta_rating":0},"8341.T":{"price":170,"delta_price":8,"rating":"B","delta_rating":-1},"8522.T":{"price":159,"delta_price":2,"rating":"BB","delta_rating":1},"8381.T":{"price":142,"delta_price":1,"rating":"BBB-","delta_rating":0},"8524.T":{"price":175,"delta_price":2,"rating":"B-","delta_rating":1},"8421.T":{"price":198,"delta_price":8,"rating":"A-","delta_rating":1},"7337.T":{"price":118,"delta_price":6,"rating":"AAA","delta_rating":0},"8399.T":{"price":179,"delta_price":5,"rating":"B-","delta_rating":0},"7167.T":{"price":110,"delta_price":8,"rating":"BB+","delta_rating":0},"8616.T":{"price":191,"delta_price":9,"rating":"A+","delta_rating":-1},"7180.T":{"price":144,"delta_price":7,"rating":"A+","delta_rating":-1},"8706.T":{"price":160,"delta_price":5,"rating":"BBB-","delta_rating":0},"7177.T":{"price":125,"delta_price":4,"rating":"CCC","delta_rating":0},"8713.T":{"price":196,"delta_price":6,"rating":"BBB-","delta_rating":0},"8698.T":{"price":188,"delta_price":5,"rating":"B","delta_rating":1},"7181.T":{"price":118,"delta_price":8,"rating":"A-","delta_rating":-1},"8750.T":{"price":127,"delta_price":2,"rating":"CCC+","delta_rating":0},"1543.HK":{"price":100,"delta_price":9,"rating":"A-","delta_rating":0},"IBFN.JK":{"price":119,"delta_price":7,"rating":"CCC+","delta_rating":0},"BVIC.JK":{"price":153,"delta_price":4,"rating":"BBB","delta_rating":1},"BRIS.JK":{"price":175,"delta_price":2,"rating":"CCC+","delta_rating":-1},"ADMF.JK":{"price":194,"delta_price":3,"rating":"A","delta_rating":-1},"BJBR.JK":{"price":113,"delta_price":4,"rating":"B-","delta_rating":0},"BNGA.JK":{"price":175,"delta_price":2,"rating":"BB","delta_rating":1},"BMRI.JK":{"price":192,"delta_price":4,"rating":"A","delta_rating":1},"AGRO.JK":{"price":163,"delta_price":8,"rating":"BBB+","delta_rating":-1},"TRIM.JK":{"price":146,"delta_price":4,"rating":"A","delta_rating":0},"BBCA.JK":{"price":104,"delta_price":5,"rating":"A-","delta_rating":1},"PNBN.JK":{"price":175,"delta_price":9,"rating":"BBB","delta_rating":1},"BJTM.JK":{"price":164,"delta_price":4,"rating":"A-","delta_rating":1},"BACA.JK":{"price":131,"delta_price":7,"rating":"B-","delta_rating":1},"BDMN.JK":{"price":111,"delta_price":1,"rating":"A-","delta_rating":0},"NISP.JK":{"price":105,"delta_price":2,"rating":"AA-","delta_rating":1},"BNLI.JK":{"price":177,"delta_price":4,"rating":"A","delta_rating":1},"BBLD.JK":{"price":196,"delta_price":5,"rating":"B","delta_rating":-1},"HDFA.JK":{"price":121,"delta_price":7,"rating":"BBB-","delta_rating":1},"BPFI.JK":{"price":159,"delta_price":10,"rating":"B+","delta_rating":-1},"BBTN.JK":{"price":101,"delta_price":9,"rating":"AA","delta_rating":0},"BKSW.JK":{"price":135,"delta_price":4,"rating":"B","delta_rating":0},"MREI.JK":{"price":124,"delta_price":9,"rating":"BBB-","delta_rating":1},"PNB.PS":{"price":102,"delta_price":6,"rating":"CCC-","delta_rating":-1},"ASBN.KZ":{"price":156,"delta_price":4,"rating":"B-","delta_rating":1},"0011.HK":{"price":157,"delta_price":7,"rating":"CCC-","delta_rating":0},"WBC.AX":{"price":188,"delta_price":1,"rating":"AAA","delta_rating":-1},"ANZ.AX":{"price":190,"delta_price":7,"rating":"AA","delta_rating":-1},"NAB.AX":{"price":186,"delta_price":9,"rating":"CCC+","delta_rating":-1},"1299.HK":{"price":149,"delta_price":10,"rating":"BBB-","delta_rating":0},"BEN.AX":{"price":186,"delta_price":4,"rating":"AA","delta_rating":1},"CBA.AX":{"price":153,"delta_price":8,"rating":"BBB","delta_rating":1},"MBT.PS":{"price":148,"delta_price":8,"rating":"BBB","delta_rating":0},"055550.KS":{"price":165,"delta_price":6,"rating":"BBB","delta_rating":-1},"MYS.AX":{"price":158,"delta_price":8,"rating":"BBB-","delta_rating":1},"UOBH.SI":{"price":117,"delta_price":1,"rating":"BBB-","delta_rating":1},"CNBK.NS":{"price":141,"delta_price":3,"rating":"B+","delta_rating":0},"DBSM.SI":{"price":144,"delta_price":1,"rating":"A+","delta_rating":1},"OCBC.SI":{"price":145,"delta_price":5,"rating":"BB","delta_rating":-1},"SBI.NS":{"price":174,"delta_price":1,"rating":"BBB+","delta_rating":-1},"2799.HK":{"price":155,"delta_price":10,"rating":"CCC-","delta_rating":1},"005940.KS":{"price":131,"delta_price":8,"rating":"BB+","delta_rating":-1},"SSB.HM":{"price":187,"delta_price":2,"rating":"BBB","delta_rating":-1},"VCB.HM":{"price":111,"delta_price":2,"rating":"A","delta_rating":1},"MQG.AX":{"price":146,"delta_price":5,"rating":"B","delta_rating":-1},"016360.KS":{"price":197,"delta_price":9,"rating":"BBB","delta_rating":0},"3329.HK":{"price":189,"delta_price":2,"rating":"B-","delta_rating":-1},"SHB.HN":{"price":160,"delta_price":5,"rating":"CCC","delta_rating":1},"601198.SS":{"price":170,"delta_price":4,"rating":"CCC-","delta_rating":0},"CHIB.PS":{"price":112,"delta_price":10,"rating":"A-","delta_rating":1},"BRAC.DH":{"price":152,"delta_price":4,"rating":"B","delta_rating":-1},"105560.KS":{"price":167,"delta_price":7,"rating":"CCC-","delta_rating":0},"1551.HK":{"price":106,"delta_price":10,"rating":"CCC","delta_rating":-1},"YESB.NS":{"price":139,"delta_price":1,"rating":"BB+","delta_rating":1},"BPI.PS":{"price":180,"delta_price":4,"rating":"A-","delta_rating":0},"7182.T":{"price":188,"delta_price":10,"rating":"AA+","delta_rating":1},"8386.T":{"price":110,"delta_price":6,"rating":"AA+","delta_rating":1},"SCB.BK":{"price":103,"delta_price":3,"rating":"AA","delta_rating":1},"PNBK.NS":{"price":159,"delta_price":3,"rating":"AA-","delta_rating":0},"AXBK.NS":{"price":130,"delta_price":1,"rating":"BBB+","delta_rating":-1},"RCB.PS":{"price":108,"delta_price":4,"rating":"BB+","delta_rating":-1},"CCBN.KZ":{"price":129,"delta_price":4,"rating":"AA","delta_rating":1},"HBL.PSX":{"price":120,"delta_price":7,"rating":"A-","delta_rating":0},"HDBK.NS":{"price":102,"delta_price":8,"rating":"AA","delta_rating":1},"ICBK.NS":{"price":174,"delta_price":5,"rating":"AAA","delta_rating":-1},"UBL.PSX":{"price":122,"delta_price":3,"rating":"AA","delta_rating":1},"8361.T":{"price":154,"delta_price":10,"rating":"A+","delta_rating":1},"UBP.PS":{"price":124,"delta_price":5,"rating":"AA-","delta_rating":0},"PANS.JK":{"price":152,"delta_price":10,"rating":"BBB-","delta_rating":1},"0267.HK":{"price":134,"delta_price":10,"rating":"AAA","delta_rating":-1},"PWFC.NS":{"price":150,"delta_price":3,"rating":"CCC+","delta_rating":1},"INBF.NS":{"price":106,"delta_price":2,"rating":"AAA","delta_rating":-1},"HUDC.NS":{"price":119,"delta_price":1,"rating":"B","delta_rating":1},"CPU.AX":{"price":173,"delta_price":4,"rating":"BBB","delta_rating":-1},"033660.KS":{"price":186,"delta_price":4,"rating":"CCC+","delta_rating":0},"MIK.MNE":{"price":192,"delta_price":6,"rating":"AA","delta_rating":0},"2628.HK":{"price":142,"delta_price":1,"rating":"A","delta_rating":0},"088350.KS":{"price":131,"delta_price":6,"rating":"BBB-","delta_rating":-1},"2328.HK":{"price":178,"delta_price":10,"rating":"AA-","delta_rating":-1},"000060.KS":{"price":119,"delta_price":9,"rating":"BBB","delta_rating":1},"MUTT.NS":{"price":113,"delta_price":6,"rating":"A","delta_rating":-1},"8732.T":{"price":164,"delta_price":3,"rating":"BBB","delta_rating":0},"7148.T":{"price":147,"delta_price":10,"rating":"BBB","delta_rating":0},"8346.T":{"price":132,"delta_price":8,"rating":"A-","delta_rating":-1},"8387.T":{"price":123,"delta_price":1,"rating":"BBB-","delta_rating":1},"8537.T":{"price":167,"delta_price":1,"rating":"CCC-","delta_rating":-1},"8530.T":{"price":153,"delta_price":9,"rating":"BB+","delta_rating":-1},"8362.T":{"price":131,"delta_price":1,"rating":"B","delta_rating":0},"8393.T":{"price":181,"delta_price":9,"rating":"AAA","delta_rating":0},"8551.T":{"price":103,"delta_price":8,"rating":"A","delta_rating":-1},"8336.T":{"price":137,"delta_price":3,"rating":"BBB","delta_rating":-1},"8364.T":{"price":123,"delta_price":9,"rating":"B","delta_rating":0},"8521.T":{"price":191,"delta_price":1,"rating":"CCC","delta_rating":1},"8541.T":{"price":117,"delta_price":3,"rating":"CCC","delta_rating":0},"8562.T":{"price":104,"delta_price":5,"rating":"BBB-","delta_rating":1},"8795.T":{"price":127,"delta_price":3,"rating":"BBB-","delta_rating":0},"8725.T":{"price":129,"delta_price":10,"rating":"AA+","delta_rating":1},"8563.T":{"price":142,"delta_price":6,"rating":"BBB","delta_rating":-1},"8554.FU":{"price":110,"delta_price":8,"rating":"CCC+","delta_rating":-1},"7150.T":{"price":182,"delta_price":6,"rating":"AA","delta_rating":0},"8715.T":{"price":140,"delta_price":10,"rating":"CCC","delta_rating":0},"AVAP.L":{"price":141,"delta_price":3,"rating":"AA+","delta_rating":-1},"8398.FU":{"price":171,"delta_price":7,"rating":"B-","delta_rating":1},"8343.T":{"price":120,"delta_price":2,"rating":"B+","delta_rating":-1},"8344.T":{"price":156,"delta_price":9,"rating":"AA+","delta_rating":0},"8558.T":{"price":193,"delta_price":8,"rating":"AA","delta_rating":0},"7173.T":{"price":146,"delta_price":8,"rating":"B","delta_rating":-1},"8527.T":{"price":139,"delta_price":10,"rating":"BBB","delta_rating":1},"8342.T":{"price":167,"delta_price":6,"rating":"B+","delta_rating":1},"8349.T":{"price":117,"delta_price":1,"rating":"B","delta_rating":-1},"7327.T":{"price":186,"delta_price":9,"rating":"B-","delta_rating":-1},"8600.T":{"price":180,"delta_price":3,"rating":"BB","delta_rating":1},"8392.T":{"price":124,"delta_price":8,"rating":"BBB-","delta_rating":-1},"AEONTS.BK":{"price":142,"delta_price":1,"rating":"B+","delta_rating":0},"8544.T":{"price":161,"delta_price":1,"rating":"B","delta_rating":-1},"7184.T":{"price":162,"delta_price":9,"rating":"AA+","delta_rating":-1},"8338.T":{"price":148,"delta_price":3,"rating":"AA-","delta_rating":-1},"6178.T":{"price":139,"delta_price":5,"rating":"AAA","delta_rating":-1},"7164.T":{"price":171,"delta_price":8,"rating":"B","delta_rating":1},"8559.FU":{"price":156,"delta_price":1,"rating":"AA+","delta_rating":1},"8766.T":{"price":105,"delta_price":5,"rating":"A","delta_rating":0},"8337.T":{"price":136,"delta_price":6,"rating":"CCC+","delta_rating":-1},"8518.T":{"price":103,"delta_price":9,"rating":"CCC-","delta_rating":0},"8609.T":{"price":184,"delta_price":5,"rating":"AA-","delta_rating":-1},"8416.T":{"price":133,"delta_price":10,"rating":"CCC","delta_rating":0},"SHCU.NS":{"price":109,"delta_price":8,"rating":"B","delta_rating":-1},"INBA.NS":{"price":122,"delta_price":8,"rating":"AA","delta_rating":1},"KTKM.NS":{"price":177,"delta_price":5,"rating":"CCC+","delta_rating":1},"SINU.BO":{"price":156,"delta_price":10,"rating":"AA-","delta_rating":0},"EQUI.NS":{"price":133,"delta_price":1,"rating":"B","delta_rating":0},"RELG.NS":{"price":163,"delta_price":6,"rating":"BB","delta_rating":1},"CTBK.NS":{"price":159,"delta_price":7,"rating":"AA-","delta_rating":0},"IDFC.NS":{"price":131,"delta_price":2,"rating":"BB+","delta_rating":-1},"CSBB.NS":{"price":126,"delta_price":6,"rating":"AA","delta_rating":0},"BJFN.NS":{"price":118,"delta_price":10,"rating":"AA-","delta_rating":1},"SIBK.NS":{"price":164,"delta_price":6,"rating":"A-","delta_rating":1},"CHLA.NS":{"price":125,"delta_price":4,"rating":"BBB+","delta_rating":-1},"MMFS.NS":{"price":135,"delta_price":10,"rating":"AA","delta_rating":0},"DNBK.NS":{"price":148,"delta_price":4,"rating":"BBB+","delta_rating":-1},"KARU.NS":{"price":161,"delta_price":9,"rating":"CCC+","delta_rating":-1},"HDFC.NS":{"price":183,"delta_price":9,"rating":"AA-","delta_rating":0},"1983.HK":{"price":113,"delta_price":10,"rating":"BBB+","delta_rating":1},"9677.HK":{"price":188,"delta_price":5,"rating":"CCC+","delta_rating":-1},"1578.HK":{"price":188,"delta_price":5,"rating":"A+","delta_rating":-1},"002945.SZ":{"price":121,"delta_price":2,"rating":"B-","delta_rating":1},"000783.SZ":{"price":141,"delta_price":10,"rating":"BB+","delta_rating":0},"HGH.NZ":{"price":110,"delta_price":5,"rating":"CCC+","delta_rating":0},"2820.TW":{"price":178,"delta_price":10,"rating":"AA","delta_rating":0},"2836.TW":{"price":104,"delta_price":9,"rating":"A","delta_rating":0},"5820.TWO":{"price":139,"delta_price":10,"rating":"CCC","delta_rating":1},"2845.TW":{"price":138,"delta_price":2,"rating":"CCC-","delta_rating":0},"601169.SS":{"price":192,"delta_price":2,"rating":"B-","delta_rating":-1},"6016.TWO":{"price":122,"delta_price":3,"rating":"CCC+","delta_rating":-1},"6020.TWO":{"price":119,"delta_price":8,"rating":"CCC+","delta_rating":0},"0966.HK":{"price":130,"delta_price":5,"rating":"B+","delta_rating":1},"CVW.AX":{"price":152,"delta_price":9,"rating":"A","delta_rating":0},"SREI.NS":{"price":165,"delta_price":4,"rating":"A+","delta_rating":1},"WOMF.JK":{"price":166,"delta_price":4,"rating":"CCC+","delta_rating":1},"BSIM.JK":{"price":186,"delta_price":9,"rating":"CCC-","delta_rating":-1},"BMBK.NS":{"price":143,"delta_price":2,"rating":"CCC-","delta_rating":-1},"6026.TWO":{"price":160,"delta_price":4,"rating":"AA+","delta_rating":-1},"6027.TWO":{"price":100,"delta_price":8,"rating":"BB","delta_rating":1},"RLCP.NS":{"price":104,"delta_price":4,"rating":"B","delta_rating":1},"6015.TWO":{"price":144,"delta_price":8,"rating":"BBB","delta_rating":0},"FNS.BK":{"price":107,"delta_price":4,"rating":"B+","delta_rating":1},"5871.TW":{"price":101,"delta_price":7,"rating":"CCC","delta_rating":-1},"FSLT.SI":{"price":170,"delta_price":4,"rating":"A","delta_rating":0},"MNFL.NS":{"price":198,"delta_price":5,"rating":"A-","delta_rating":1},"ICIR.NS":{"price":111,"delta_price":10,"rating":"BB+","delta_rating":1},"PMB.CM":{"price":147,"delta_price":3,"rating":"BB+","delta_rating":1},"SFL.CM":{"price":148,"delta_price":7,"rating":"BBB+","delta_rating":1},"AMCL.CM":{"price":159,"delta_price":10,"rating":"A-","delta_rating":-1},"AFSL.CM":{"price":154,"delta_price":3,"rating":"AA-","delta_rating":-1},"SFCL.CM":{"price":177,"delta_price":3,"rating":"AA+","delta_rating":0},"MERC.CM":{"price":108,"delta_price":4,"rating":"AAA","delta_rating":0},"ALLI.CM":{"price":150,"delta_price":10,"rating":"AA-","delta_rating":1},"ABLT.CM":{"price":123,"delta_price":4,"rating":"AA-","delta_rating":1},"PEOP.CM":{"price":135,"delta_price":10,"rating":"AA+","delta_rating":1},"DIAO.CM":{"price":148,"delta_price":1,"rating":"B","delta_rating":-1},"UNIO.CM":{"price":103,"delta_price":9,"rating":"A","delta_rating":-1},"BTPS.JK":{"price":196,"delta_price":9,"rating":"AA-","delta_rating":0},"0412.HK":{"price":102,"delta_price":10,"rating":"AAA","delta_rating":0},"3877.HK":{"price":153,"delta_price":6,"rating":"AAA","delta_rating":-1},"NRCP.PS":{"price":100,"delta_price":6,"rating":"A+","delta_rating":-1},"THRE.BK":{"price":176,"delta_price":8,"rating":"AA-","delta_rating":0},"001450.KS":{"price":164,"delta_price":10,"rating":"A-","delta_rating":0},"PBC.PS":{"price":107,"delta_price":3,"rating":"A+","delta_rating":-1},"ISLB.DH":{"price":195,"delta_price":7,"rating":"A","delta_rating":0},"PUNA.NS":{"price":152,"delta_price":8,"rating":"B+","delta_rating":1},"8630.T":{"price":136,"delta_price":10,"rating":"CCC","delta_rating":-1},"6199.HK":{"price":132,"delta_price":7,"rating":"B-","delta_rating":1},"000900.SZ":{"price":148,"delta_price":8,"rating":"B","delta_rating":0},"6190.HK":{"price":107,"delta_price":6,"rating":"CCC+","delta_rating":0},"0416.HK":{"price":129,"delta_price":8,"rating":"B-","delta_rating":1},"601108.SS":{"price":195,"delta_price":5,"rating":"AA+","delta_rating":0},"300059.SZ":{"price":178,"delta_price":9,"rating":"A","delta_rating":-1},"2066.HK":{"price":128,"delta_price":7,"rating":"BBB-","delta_rating":1},"1476.HK":{"price":166,"delta_price":9,"rating":"A-","delta_rating":1},"600369.SS":{"price":193,"delta_price":2,"rating":"CCC","delta_rating":0},"002926.SZ":{"price":167,"delta_price":1,"rating":"BB","delta_rating":0},"002673.SZ":{"price":164,"delta_price":8,"rating":"AA-","delta_rating":1},"601860.SS":{"price":101,"delta_price":2,"rating":"CCC","delta_rating":0},"601878.SS":{"price":186,"delta_price":3,"rating":"BB+","delta_rating":1},"2139.HK":{"price":149,"delta_price":2,"rating":"B-","delta_rating":1},"002736.SZ":{"price":173,"delta_price":2,"rating":"A-","delta_rating":-1},"1916.HK":{"price":161,"delta_price":8,"rating":"B-","delta_rating":-1},"601236.SS":{"price":146,"delta_price":9,"rating":"BBB-","delta_rating":-1},"600061.SS":{"price":187,"delta_price":5,"rating":"BBB","delta_rating":1},"000712.SZ":{"price":114,"delta_price":6,"rating":"CCC","delta_rating":1},"601099.SS":{"price":146,"delta_price":10,"rating":"AA-","delta_rating":-1},"600901.SS":{"price":113,"delta_price":8,"rating":"A+","delta_rating":1},"601377.SS":{"price":184,"delta_price":5,"rating":"BBB+","delta_rating":0},"002670.SZ":{"price":198,"delta_price":4,"rating":"B+","delta_rating":0},"601901.SS":{"price":180,"delta_price":3,"rating":"A-","delta_rating":-1},"1339.HK":{"price":170,"delta_price":2,"rating":"B","delta_rating":0},"3903.HK":{"price":100,"delta_price":5,"rating":"AAA","delta_rating":-1},"600837.SS":{"price":188,"delta_price":7,"rating":"AAA","delta_rating":0},"AUFI.NS":{"price":117,"delta_price":6,"rating":"AA-","delta_rating":1},"Unlisted":{"price":101,"delta_price":1,"rating":"BB+","delta_rating":1},"MUNC.BO":{"price":130,"delta_price":5,"rating":"BB+","delta_rating":0},"0231.HK":{"price":125,"delta_price":3,"rating":"BBB-","delta_rating":-1},"BIR.AX":{"price":170,"delta_price":7,"rating":"AA+","delta_rating":-1},"OSWL.BO":{"price":157,"delta_price":4,"rating":"BBB-","delta_rating":1},"IKAB.BO":{"price":124,"delta_price":3,"rating":"A","delta_rating":1},"CMBL.BO":{"price":114,"delta_price":10,"rating":"BBB+","delta_rating":1},"JIHL.SI":{"price":130,"delta_price":1,"rating":"CCC+","delta_rating":1},"ELIL.BO":{"price":112,"delta_price":9,"rating":"AAA","delta_rating":-1},"MUHL.BO":{"price":105,"delta_price":2,"rating":"CCC","delta_rating":1},"SVTA.BO":{"price":185,"delta_price":5,"rating":"BBB","delta_rating":0},"RAMP.BO":{"price":174,"delta_price":1,"rating":"BBB-","delta_rating":-1},"GEN.NZ":{"price":153,"delta_price":3,"rating":"CCC","delta_rating":0},"TRII.BO":{"price":157,"delta_price":4,"rating":"A+","delta_rating":0},"ARIH.BO":{"price":143,"delta_price":8,"rating":"CCC","delta_rating":-1},"MFIN.BO":{"price":197,"delta_price":5,"rating":"B+","delta_rating":-1},"GDC.AX":{"price":108,"delta_price":8,"rating":"CCC+","delta_rating":-1},"MYMO.BO":{"price":122,"delta_price":9,"rating":"BB","delta_rating":-1},"KKFI.BO":{"price":171,"delta_price":4,"rating":"BB+","delta_rating":1},"UKFN.BO":{"price":111,"delta_price":1,"rating":"A+","delta_rating":0},"MNPL.BO":{"price":178,"delta_price":4,"rating":"B","delta_rating":1},"BAGL.BO":{"price":162,"delta_price":8,"rating":"B","delta_rating":0},"SAFN.BO":{"price":178,"delta_price":3,"rating":"CCC+","delta_rating":-1},"FUND.BO":{"price":151,"delta_price":3,"rating":"AAA","delta_rating":0},"PARI.BO":{"price":139,"delta_price":6,"rating":"CCC-","delta_rating":0},"RESE.BO":{"price":185,"delta_price":5,"rating":"AA-","delta_rating":0},"BH.PS":{"price":147,"delta_price":5,"rating":"B","delta_rating":-1},"HBLP.BO":{"price":181,"delta_price":10,"rating":"BB+","delta_rating":1},"SHAL.CM":{"price":124,"delta_price":2,"rating":"BBB","delta_rating":-1},"GDLL.BO":{"price":105,"delta_price":5,"rating":"A+","delta_rating":-1},"GSLS.BO":{"price":136,"delta_price":2,"rating":"CCC","delta_rating":1},"MEHS.BO":{"price":174,"delta_price":4,"rating":"AA+","delta_rating":-1},"ABHJ.BO":{"price":196,"delta_price":8,"rating":"AAA","delta_rating":0},"RAKO.BO":{"price":142,"delta_price":7,"rating":"AA","delta_rating":-1},"INTV.BO":{"price":167,"delta_price":9,"rating":"BBB-","delta_rating":0},"KAPI.BO":{"price":196,"delta_price":3,"rating":"BB","delta_rating":0},"OCLC.BO":{"price":133,"delta_price":8,"rating":"BB+","delta_rating":-1},"SHRW.BO":{"price":119,"delta_price":1,"rating":"BB","delta_rating":-1},"LIBD.BO":{"price":196,"delta_price":5,"rating":"BBB-","delta_rating":-1},"ASCL.BO":{"price":135,"delta_price":5,"rating":"AAA","delta_rating":-1},"SCMK.BO":{"price":175,"delta_price":5,"rating":"CCC+","delta_rating":0},"WWTH.BO":{"price":198,"delta_price":2,"rating":"A","delta_rating":1},"TYPO.BO":{"price":112,"delta_price":3,"rating":"BBB","delta_rating":-1},"NIKI.BO":{"price":146,"delta_price":3,"rating":"AAA","delta_rating":-1},"SASH.BO":{"price":121,"delta_price":1,"rating":"BBB-","delta_rating":1},"SHIX.BO":{"price":193,"delta_price":8,"rating":"BB+","delta_rating":-1},"0279.HK":{"price":100,"delta_price":2,"rating":"BB","delta_rating":-1},"INFN.BO":{"price":176,"delta_price":9,"rating":"CCC+","delta_rating":1},"AHIS.BO":{"price":172,"delta_price":8,"rating":"AA+","delta_rating":-1},"UNSL.BO":{"price":172,"delta_price":6,"rating":"AA-","delta_rating":-1},"RAFI.BO":{"price":186,"delta_price":6,"rating":"A-","delta_rating":-1},"GINV.BO":{"price":101,"delta_price":2,"rating":"BBB-","delta_rating":-1},"MUNF.BO":{"price":144,"delta_price":7,"rating":"AAA","delta_rating":-1},"BRLF.BO":{"price":124,"delta_price":9,"rating":"B-","delta_rating":-1},"CHCI.BO":{"price":131,"delta_price":2,"rating":"BBB+","delta_rating":1},"KUBU.BO":{"price":196,"delta_price":9,"rating":"B","delta_rating":1},"ADAL.BO":{"price":148,"delta_price":8,"rating":"AA-","delta_rating":0},"ENA.AX":{"price":128,"delta_price":1,"rating":"AA+","delta_rating":-1},"SCCL.BO":{"price":154,"delta_price":10,"rating":"AA+","delta_rating":0},"ADCN.BO":{"price":167,"delta_price":2,"rating":"B+","delta_rating":1},"SHSL.BO":{"price":160,"delta_price":2,"rating":"CCC","delta_rating":-1},"SHLE.BO":{"price":128,"delta_price":10,"rating":"BB+","delta_rating":1},"FUTU.BO":{"price":175,"delta_price":1,"rating":"AA","delta_rating":-1},"MOOG.BO":{"price":185,"delta_price":9,"rating":"AA","delta_rating":-1},"TKYO.BO":{"price":162,"delta_price":8,"rating":"AA+","delta_rating":0},"STTC.BO":{"price":118,"delta_price":6,"rating":"BBB","delta_rating":0},"OSKV.KL":{"price":185,"delta_price":7,"rating":"CCC","delta_rating":0},"VNIC.BO":{"price":178,"delta_price":10,"rating":"A+","delta_rating":1},"DASL.BO":{"price":161,"delta_price":10,"rating":"B","delta_rating":-1},"SHWE.L":{"price":143,"delta_price":8,"rating":"A","delta_rating":-1},"BEVE.SI":{"price":118,"delta_price":7,"rating":"A-","delta_rating":1},"ADHA.BO":{"price":183,"delta_price":1,"rating":"AA-","delta_rating":1},"KOVA.BO":{"price":198,"delta_price":3,"rating":"CCC+","delta_rating":0},"PARF.BO":{"price":193,"delta_price":1,"rating":"AAA","delta_rating":-1},"FCUS.BO":{"price":188,"delta_price":10,"rating":"AA+","delta_rating":0},"N1H.AX":{"price":150,"delta_price":10,"rating":"CCC","delta_rating":1},"KBC.AX":{"price":107,"delta_price":10,"rating":"BBB+","delta_rating":-1},"MANS.BO":{"price":116,"delta_price":1,"rating":"BBB","delta_rating":0},"CONN.BO":{"price":108,"delta_price":3,"rating":"A-","delta_rating":0},"WLRL.BO":{"price":120,"delta_price":10,"rating":"BBB","delta_rating":0},"JJFC.BO":{"price":117,"delta_price":3,"rating":"CCC","delta_rating":1},"PAWA.BO":{"price":137,"delta_price":8,"rating":"BBB","delta_rating":-1},"TGP.AX":{"price":115,"delta_price":6,"rating":"CCC+","delta_rating":-1},"JCBN.KL":{"price":115,"delta_price":6,"rating":"BB","delta_rating":-1},"KWCL.BO":{"price":153,"delta_price":7,"rating":"BB","delta_rating":1},"FMEC.BO":{"price":158,"delta_price":10,"rating":"BBB","delta_rating":1},"SHSA.BO":{"price":155,"delta_price":1,"rating":"BB+","delta_rating":0},"JPTS.BO":{"price":162,"delta_price":8,"rating":"AA+","delta_rating":0},"EDC.AX":{"price":155,"delta_price":3,"rating":"BB","delta_rating":0},"ISHT.BO":{"price":138,"delta_price":9,"rating":"AAA","delta_rating":0},"BCLE.BO":{"price":180,"delta_price":5,"rating":"AA-","delta_rating":0},"TSLT.L":{"price":161,"delta_price":9,"rating":"AA+","delta_rating":0},"HAST.BO":{"price":198,"delta_price":6,"rating":"B","delta_rating":1},"SWTK.BO":{"price":106,"delta_price":3,"rating":"AAA","delta_rating":0},"ILNK.BO":{"price":196,"delta_price":3,"rating":"BB+","delta_rating":-1},"BAZE.BO":{"price":183,"delta_price":3,"rating":"BB+","delta_rating":1},"RIUN.BO":{"price":186,"delta_price":9,"rating":"BBB","delta_rating":0},"KBSI.BO":{"price":125,"delta_price":5,"rating":"BB+","delta_rating":0},"NISH.BO":{"price":164,"delta_price":4,"rating":"B","delta_rating":0},"8340.HK":{"price":172,"delta_price":6,"rating":"AAA","delta_rating":-1},"ENBT.BO":{"price":158,"delta_price":2,"rating":"BB","delta_rating":0},"JYON.BO":{"price":177,"delta_price":9,"rating":"AAA","delta_rating":0},"ASW.AX":{"price":197,"delta_price":9,"rating":"BB+","delta_rating":0},"BNRU.BO":{"price":122,"delta_price":6,"rating":"AAA","delta_rating":-1},"THRP.BO":{"price":103,"delta_price":10,"rating":"B-","delta_rating":1},"KREN.BO":{"price":186,"delta_price":5,"rating":"CCC+","delta_rating":-1},"INV.AX":{"price":117,"delta_price":2,"rating":"BBB-","delta_rating":0},"RAPI.BO":{"price":167,"delta_price":3,"rating":"AA+","delta_rating":0},"SWSC.BO":{"price":193,"delta_price":4,"rating":"B","delta_rating":1},"RETC.BO":{"price":179,"delta_price":4,"rating":"CCC","delta_rating":0},"JINL.NS":{"price":171,"delta_price":3,"rating":"BBB","delta_rating":0},"LATE.BO":{"price":142,"delta_price":7,"rating":"CCC-","delta_rating":1},"TRCF.BO":{"price":189,"delta_price":6,"rating":"BB+","delta_rating":1},"EKAM.BO":{"price":135,"delta_price":6,"rating":"AA+","delta_rating":-1},"MUDA.BO":{"price":142,"delta_price":3,"rating":"BBB-","delta_rating":-1},"MAM.AX":{"price":131,"delta_price":2,"rating":"AA+","delta_rating":0},"CIW.AX":{"price":147,"delta_price":6,"rating":"A-","delta_rating":0},"ANNI.BO":{"price":176,"delta_price":5,"rating":"AAA","delta_rating":-1},"SSL.AX":{"price":131,"delta_price":4,"rating":"CCC+","delta_rating":1},"8350.HK":{"price":198,"delta_price":5,"rating":"A","delta_rating":0},"SLEM.BO":{"price":153,"delta_price":4,"rating":"AA-","delta_rating":-1},"MRGT.BO":{"price":162,"delta_price":1,"rating":"CCC+","delta_rating":0},"UFIN.BO":{"price":149,"delta_price":7,"rating":"BB","delta_rating":1},"OASE.BO":{"price":161,"delta_price":8,"rating":"AAA","delta_rating":-1},"DECI.BO":{"price":160,"delta_price":5,"rating":"BBB","delta_rating":1},"SVAI.BO":{"price":156,"delta_price":2,"rating":"BBB","delta_rating":1},"SKF.AX":{"price":184,"delta_price":9,"rating":"A","delta_rating":1},"8496.HK":{"price":186,"delta_price":1,"rating":"B","delta_rating":1},"PYXI.BO":{"price":198,"delta_price":6,"rating":"AA+","delta_rating":0},"JUFI.BO":{"price":112,"delta_price":4,"rating":"AA-","delta_rating":-1},"WZR.AX":{"price":177,"delta_price":7,"rating":"BBB+","delta_rating":0},"DFCI.KL":{"price":157,"delta_price":2,"rating":"AA-","delta_rating":-1},"TAMU.JK":{"price":118,"delta_price":10,"rating":"A+","delta_rating":1},"SUJA.BO":{"price":108,"delta_price":3,"rating":"AAA","delta_rating":-1},"8168.HK":{"price":186,"delta_price":3,"rating":"AAA","delta_rating":0},"SWIN.BO":{"price":148,"delta_price":6,"rating":"AA+","delta_rating":0},"AMSE.BO":{"price":152,"delta_price":8,"rating":"B+","delta_rating":-1},"0068.HK":{"price":154,"delta_price":9,"rating":"CCC","delta_rating":0},"INIS.BO":{"price":135,"delta_price":2,"rating":"BB","delta_rating":1},"0063.HK":{"price":137,"delta_price":7,"rating":"AA-","delta_rating":-1},"RALT.BO":{"price":177,"delta_price":2,"rating":"CCC","delta_rating":-1},"ARYS.BO":{"price":139,"delta_price":7,"rating":"BBB+","delta_rating":-1},"GALD.BO":{"price":104,"delta_price":3,"rating":"B-","delta_rating":-1},"MHIK.BO":{"price":188,"delta_price":6,"rating":"AA-","delta_rating":0},"BRST.BO":{"price":168,"delta_price":7,"rating":"BBB","delta_rating":0},"PFG.AX":{"price":172,"delta_price":1,"rating":"A+","delta_rating":1},"BALG.BO":{"price":118,"delta_price":2,"rating":"CCC+","delta_rating":0},"1178.HK":{"price":152,"delta_price":1,"rating":"CCC-","delta_rating":0},"GCMA.BO":{"price":196,"delta_price":10,"rating":"BB+","delta_rating":0},"BRII.BO":{"price":174,"delta_price":9,"rating":"AA+","delta_rating":0},"IFLE.BO":{"price":118,"delta_price":7,"rating":"CCC","delta_rating":1},"3963.HK":{"price":142,"delta_price":6,"rating":"BB+","delta_rating":0},"MDSS.BO":{"price":186,"delta_price":5,"rating":"A+","delta_rating":-1},"MEEA.BO":{"price":142,"delta_price":3,"rating":"AA","delta_rating":1},"BAJR.BO":{"price":159,"delta_price":1,"rating":"BB+","delta_rating":-1},"8226.HK":{"price":102,"delta_price":3,"rating":"CCC+","delta_rating":0},"KJFS.BO":{"price":158,"delta_price":6,"rating":"BBB-","delta_rating":-1},"MATE.BO":{"price":131,"delta_price":10,"rating":"BBB","delta_rating":0},"EASN.BO":{"price":134,"delta_price":4,"rating":"BBB+","delta_rating":1},"SPCF.BO":{"price":119,"delta_price":7,"rating":"A+","delta_rating":-1},"UNTL.BO":{"price":175,"delta_price":10,"rating":"BBB","delta_rating":1},"SHHO.BO":{"price":133,"delta_price":1,"rating":"A+","delta_rating":-1},"SARV.BO":{"price":184,"delta_price":10,"rating":"AAA","delta_rating":0},"BLUO.BO":{"price":108,"delta_price":6,"rating":"CCC","delta_rating":-1},"BIQIF.PK":{"price":115,"delta_price":5,"rating":"BBB+","delta_rating":-1},"VBDE.BO":{"price":195,"delta_price":4,"rating":"A+","delta_rating":1},"NVCA.BO":{"price":147,"delta_price":9,"rating":"B-","delta_rating":0},"HELP.BO":{"price":167,"delta_price":1,"rating":"AA-","delta_rating":1},"RAHGF.PK":{"price":172,"delta_price":3,"rating":"AAA","delta_rating":-1},"0766.HK":{"price":172,"delta_price":6,"rating":"BBB","delta_rating":1},"KLRK.KL":{"price":100,"delta_price":7,"rating":"A-","delta_rating":0},"MAPM.SI":{"price":168,"delta_price":9,"rating":"BBB","delta_rating":1},"SUNP.BO":{"price":187,"delta_price":7,"rating":"A-","delta_rating":0},"ACSL.BO":{"price":149,"delta_price":7,"rating":"BB","delta_rating":-1},"FRLF.BO":{"price":185,"delta_price":3,"rating":"AA","delta_rating":1},"SBDS.SI":{"price":180,"delta_price":1,"rating":"AA+","delta_rating":0},"SAUY.BO":{"price":166,"delta_price":8,"rating":"BBB","delta_rating":0},"BFLA.BO":{"price":155,"delta_price":2,"rating":"BB+","delta_rating":-1},"AMRF.BO":{"price":154,"delta_price":10,"rating":"B","delta_rating":-1},"KPH.PS":{"price":102,"delta_price":10,"rating":"B","delta_rating":1},"8215.HK":{"price":133,"delta_price":5,"rating":"CCC","delta_rating":0},"SRGS.BO":{"price":165,"delta_price":9,"rating":"A+","delta_rating":0},"FSA.AX":{"price":121,"delta_price":10,"rating":"BB","delta_rating":-1},"HAFI.BO":{"price":138,"delta_price":5,"rating":"AA","delta_rating":1},"TFRL.BO":{"price":183,"delta_price":6,"rating":"A","delta_rating":-1},"KJMA.BO":{"price":137,"delta_price":1,"rating":"B-","delta_rating":-1},"0211.HK":{"price":115,"delta_price":7,"rating":"AA","delta_rating":-1},"MAAC.NS":{"price":154,"delta_price":9,"rating":"BBB-","delta_rating":0},"2292.HK":{"price":167,"delta_price":8,"rating":"B-","delta_rating":0},"ARHL.BO":{"price":163,"delta_price":8,"rating":"A-","delta_rating":1},"CIT.CM":{"price":189,"delta_price":6,"rating":"B-","delta_rating":-1},"CILS.BO":{"price":177,"delta_price":4,"rating":"BBB","delta_rating":1},"CRED.SI":{"price":183,"delta_price":9,"rating":"AAA","delta_rating":0},"SRET.BO":{"price":157,"delta_price":2,"rating":"CCC","delta_rating":0},"IFSL.BO":{"price":199,"delta_price":10,"rating":"CCC","delta_rating":0},"8635.HK":{"price":179,"delta_price":10,"rating":"AA-","delta_rating":1},"0263.HK":{"price":183,"delta_price":2,"rating":"A","delta_rating":-1},"SARM.BO":{"price":142,"delta_price":6,"rating":"BB+","delta_rating":-1},"MKTC.BO":{"price":167,"delta_price":5,"rating":"BBB+","delta_rating":-1},"SILV.BO":{"price":182,"delta_price":10,"rating":"A","delta_rating":0},"SHIH.BO":{"price":193,"delta_price":2,"rating":"AA+","delta_rating":0},"SPSF.BO":{"price":125,"delta_price":2,"rating":"AA-","delta_rating":-1},"THCK.BO":{"price":116,"delta_price":7,"rating":"BB","delta_rating":1},"SUYA.BO":{"price":165,"delta_price":7,"rating":"B-","delta_rating":1},"8333.HK":{"price":103,"delta_price":3,"rating":"B+","delta_rating":0},"MATH.BO":{"price":136,"delta_price":1,"rating":"AAA","delta_rating":-1},"SRIM.BO":{"price":118,"delta_price":7,"rating":"A","delta_rating":-1},"THID.BO":{"price":113,"delta_price":1,"rating":"A+","delta_rating":1},"DHCO.BO":{"price":145,"delta_price":10,"rating":"BB+","delta_rating":1},"MECM.BO":{"price":101,"delta_price":5,"rating":"BBB","delta_rating":-1},"NDAS.BO":{"price":195,"delta_price":9,"rating":"AA","delta_rating":-1},"REG.PS":{"price":131,"delta_price":5,"rating":"B-","delta_rating":-1},"8019.HK":{"price":149,"delta_price":2,"rating":"BB","delta_rating":0},"SUDF.BO":{"price":160,"delta_price":2,"rating":"B+","delta_rating":1},"1051.HK":{"price":194,"delta_price":4,"rating":"BB+","delta_rating":-1},"KRAT.BO":{"price":195,"delta_price":4,"rating":"A-","delta_rating":1},"SNIV.BO":{"price":128,"delta_price":3,"rating":"A+","delta_rating":1},"8210.HK":{"price":125,"delta_price":6,"rating":"BBB-","delta_rating":-1},"IGFL.BO":{"price":156,"delta_price":8,"rating":"AAA","delta_rating":-1},"ONTI.BO":{"price":136,"delta_price":2,"rating":"CCC-","delta_rating":0},"TIRA.BO":{"price":183,"delta_price":3,"rating":"B+","delta_rating":1},"MILL.BO":{"price":153,"delta_price":10,"rating":"A","delta_rating":-1},"8365.HK":{"price":147,"delta_price":1,"rating":"B+","delta_rating":1},"GRIV.BO":{"price":172,"delta_price":1,"rating":"A-","delta_rating":-1},"SMAR.BO":{"price":187,"delta_price":3,"rating":"CCC+","delta_rating":1},"APXC.BO":{"price":128,"delta_price":9,"rating":"B","delta_rating":0},"AREL.BO":{"price":184,"delta_price":2,"rating":"AAA","delta_rating":-1},"ASHC.BO":{"price":146,"delta_price":4,"rating":"BBB","delta_rating":0},"QGOF.BO":{"price":149,"delta_price":4,"rating":"AAA","delta_rating":-1},"BILL.BO":{"price":120,"delta_price":2,"rating":"A","delta_rating":0},"ARUY.BO":{"price":120,"delta_price":6,"rating":"B","delta_rating":1},"VARF.BO":{"price":105,"delta_price":5,"rating":"CCC+","delta_rating":1},"EAS.AX":{"price":183,"delta_price":7,"rating":"AA-","delta_rating":1},"ASSM.BO":{"price":121,"delta_price":10,"rating":"A+","delta_rating":0},"8001.HK":{"price":116,"delta_price":3,"rating":"BBB-","delta_rating":1},"CREN.BO":{"price":109,"delta_price":4,"rating":"BBB+","delta_rating":1},"8109.HK":{"price":170,"delta_price":1,"rating":"BB","delta_rating":0},"TRUM.PSX":{"price":187,"delta_price":7,"rating":"AA","delta_rating":1},"TRFI.NS":{"price":114,"delta_price":4,"rating":"A+","delta_rating":0},"SPRS.SI":{"price":199,"delta_price":3,"rating":"B","delta_rating":1},"1191.HK":{"price":118,"delta_price":5,"rating":"B","delta_rating":0},"INDC.BO":{"price":116,"delta_price":7,"rating":"AAA","delta_rating":0},"CONC.BO":{"price":126,"delta_price":3,"rating":"B","delta_rating":0},"0109.HK":{"price":131,"delta_price":10,"rating":"A","delta_rating":1},"JHHS.KL":{"price":187,"delta_price":8,"rating":"CCC","delta_rating":1},"GKCL.BO":{"price":188,"delta_price":10,"rating":"CCC+","delta_rating":-1},"ALPM.BO":{"price":138,"delta_price":10,"rating":"A+","delta_rating":1},"SINV.SI":{"price":142,"delta_price":10,"rating":"AA-","delta_rating":0},"WNRO.BO":{"price":195,"delta_price":4,"rating":"A","delta_rating":0},"VBIN.BO":{"price":187,"delta_price":9,"rating":"A-","delta_rating":1},"1669.HK":{"price":165,"delta_price":4,"rating":"B-","delta_rating":-1},"ADMF.BO":{"price":132,"delta_price":9,"rating":"BB+","delta_rating":0},"WAPO.CM":{"price":188,"delta_price":6,"rating":"AA-","delta_rating":-1},"8452.HK":{"price":108,"delta_price":2,"rating":"AA+","delta_rating":1},"0850.HK":{"price":136,"delta_price":4,"rating":"A+","delta_rating":0},"1073.HK":{"price":149,"delta_price":2,"rating":"BBB","delta_rating":0},"1915.HK":{"price":161,"delta_price":8,"rating":"BBB-","delta_rating":-1},"EFGH.PSX":{"price":120,"delta_price":1,"rating":"AAA","delta_rating":0},"APHB.KL":{"price":187,"delta_price":1,"rating":"B-","delta_rating":0},"CUII.PK":{"price":132,"delta_price":5,"rating":"BBB+","delta_rating":1},"GKHS.SI":{"price":127,"delta_price":5,"rating":"BBB-","delta_rating":-1},"PURS.BO":{"price":105,"delta_price":3,"rating":"CCC+","delta_rating":-1},"0583.HK":{"price":176,"delta_price":3,"rating":"AA","delta_rating":1},"SOAL.BO":{"price":146,"delta_price":6,"rating":"B-","delta_rating":1},"PGL.AX":{"price":188,"delta_price":6,"rating":"AA","delta_rating":1},"1577.HK":{"price":190,"delta_price":8,"rating":"BBB","delta_rating":1},"0290.HK":{"price":187,"delta_price":8,"rating":"BBB","delta_rating":0},"1273.HK":{"price":165,"delta_price":1,"rating":"AAA","delta_rating":-1},"ANER.BO":{"price":164,"delta_price":1,"rating":"A-","delta_rating":-1},"MFIN.PS":{"price":109,"delta_price":3,"rating":"A+","delta_rating":-1},"0613.HK":{"price":133,"delta_price":5,"rating":"A+","delta_rating":1},"CTARAFu.BK":{"price":132,"delta_price":1,"rating":"AA","delta_rating":1},"MODX.BO":{"price":176,"delta_price":5,"rating":"A","delta_rating":0},"0666.HK^D21":{"price":155,"delta_price":3,"rating":"A+","delta_rating":0},"MOC.AX":{"price":111,"delta_price":9,"rating":"A+","delta_rating":1},"APOO.BO":{"price":127,"delta_price":9,"rating":"AA","delta_rating":1},"BRRGIFu.BK":{"price":144,"delta_price":4,"rating":"AAA","delta_rating":0},"SFTC.BO":{"price":155,"delta_price":10,"rating":"BB+","delta_rating":-1},"ABHI.BO":{"price":128,"delta_price":3,"rating":"A-","delta_rating":1},"UPIF.BO":{"price":156,"delta_price":2,"rating":"A+","delta_rating":0},"0993.HK":{"price":140,"delta_price":4,"rating":"BBB+","delta_rating":1},"VISC.BO":{"price":136,"delta_price":5,"rating":"BBB+","delta_rating":-1},"AJCM.BO":{"price":173,"delta_price":8,"rating":"A+","delta_rating":0},"SEMB.CM":{"price":161,"delta_price":4,"rating":"CCC","delta_rating":0},"SOBG.BO":{"price":193,"delta_price":6,"rating":"B","delta_rating":-1},"ISLC.BO":{"price":171,"delta_price":3,"rating":"BBB+","delta_rating":-1},"REDI.KL":{"price":107,"delta_price":8,"rating":"BBB","delta_rating":-1},"BFG.AX":{"price":102,"delta_price":7,"rating":"AA-","delta_rating":0},"OPTM.BO":{"price":146,"delta_price":1,"rating":"CCC+","delta_rating":1},"RAJK.BO":{"price":147,"delta_price":1,"rating":"BBB","delta_rating":-1},"LVEN.CM":{"price":191,"delta_price":3,"rating":"A","delta_rating":-1},"SAPC.BO":{"price":169,"delta_price":6,"rating":"A+","delta_rating":0},"ROHA.KL":{"price":187,"delta_price":7,"rating":"BB+","delta_rating":-1},"1469.HK":{"price":129,"delta_price":4,"rating":"B-","delta_rating":0},"BBC.AX":{"price":171,"delta_price":7,"rating":"BBB-","delta_rating":1},"KSL.AX":{"price":106,"delta_price":2,"rating":"A+","delta_rating":1},"CSB.PS":{"price":200,"delta_price":8,"rating":"AAA","delta_rating":0},"ILFS.NS":{"price":191,"delta_price":1,"rating":"BB","delta_rating":1},"MJIC.PS":{"price":138,"delta_price":6,"rating":"BB","delta_rating":0},"SGF.AX":{"price":100,"delta_price":4,"rating":"BBB-","delta_rating":-1},"0612.HK":{"price":154,"delta_price":4,"rating":"B-","delta_rating":-1},"RMC.AX":{"price":192,"delta_price":8,"rating":"BBB","delta_rating":1},"PIIN.DH":{"price":101,"delta_price":8,"rating":"B","delta_rating":-1},"6161.HK":{"price":183,"delta_price":4,"rating":"CCC","delta_rating":1},"MEDO.BO":{"price":189,"delta_price":9,"rating":"B","delta_rating":1},"TSI.BK":{"price":122,"delta_price":2,"rating":"AA+","delta_rating":1},"PHCP.BO":{"price":147,"delta_price":8,"rating":"A","delta_rating":1},"CHAA.BO":{"price":126,"delta_price":8,"rating":"B-","delta_rating":1},"PRET.BO":{"price":171,"delta_price":4,"rating":"BBB","delta_rating":0},"NAMS.BO":{"price":155,"delta_price":1,"rating":"B-","delta_rating":-1},"TNITY.BK":{"price":123,"delta_price":8,"rating":"B-","delta_rating":-1},"RSDF.BO":{"price":194,"delta_price":4,"rating":"B+","delta_rating":0},"9318.T":{"price":199,"delta_price":2,"rating":"BBB","delta_rating":-1},"0605.HK":{"price":104,"delta_price":10,"rating":"BB","delta_rating":-1},"EATS.BO":{"price":197,"delta_price":6,"rating":"B+","delta_rating":0},"LOHS.BO":{"price":116,"delta_price":7,"rating":"AA","delta_rating":1},"ELCI.BO":{"price":187,"delta_price":3,"rating":"A+","delta_rating":1},"AMRA.BO":{"price":127,"delta_price":3,"rating":"AA+","delta_rating":-1},"PLIL.DH":{"price":189,"delta_price":7,"rating":"B","delta_rating":-1},"ARFS.BO":{"price":195,"delta_price":6,"rating":"BB","delta_rating":1},"ARYC.BO":{"price":114,"delta_price":10,"rating":"AAA","delta_rating":-1},"BUI.BK":{"price":197,"delta_price":9,"rating":"CCC-","delta_rating":-1},"RIPR.BO":{"price":196,"delta_price":10,"rating":"BB","delta_rating":1},"3623.HK":{"price":166,"delta_price":10,"rating":"AA","delta_rating":0},"SRTH.BO":{"price":179,"delta_price":9,"rating":"AA+","delta_rating":1},"NXGEN.PS":{"price":141,"delta_price":8,"rating":"BB+","delta_rating":-1},"UNCP.DH":{"price":116,"delta_price":9,"rating":"CCC-","delta_rating":-1},"0292.HK":{"price":124,"delta_price":2,"rating":"A-","delta_rating":-1},"SART.BO":{"price":164,"delta_price":1,"rating":"BB+","delta_rating":1},"COKN.NS":{"price":176,"delta_price":9,"rating":"BBB","delta_rating":0},"COL.PS":{"price":122,"delta_price":2,"rating":"B+","delta_rating":-1},"ANTK.CM":{"price":130,"delta_price":7,"rating":"B-","delta_rating":0},"PORT.PS":{"price":127,"delta_price":7,"rating":"AA","delta_rating":-1},"1019.HK":{"price":153,"delta_price":1,"rating":"CCC+","delta_rating":0},"1697.HK":{"price":164,"delta_price":5,"rating":"BBB","delta_rating":-1},"TRITN.BK":{"price":135,"delta_price":10,"rating":"CCC","delta_rating":-1},"RESA.BO":{"price":195,"delta_price":6,"rating":"A","delta_rating":1},"STAM.NS":{"price":199,"delta_price":10,"rating":"BBB","delta_rating":-1},"CSF.CM":{"price":137,"delta_price":8,"rating":"B","delta_rating":1},"ALCR.BO":{"price":178,"delta_price":6,"rating":"AA-","delta_rating":0},"BAYL.DH":{"price":195,"delta_price":5,"rating":"B","delta_rating":1},"ARPI.CM":{"price":148,"delta_price":1,"rating":"BB+","delta_rating":1},"BLB.NS":{"price":143,"delta_price":3,"rating":"BB+","delta_rating":-1},"NHFI.DH":{"price":123,"delta_price":4,"rating":"CCC-","delta_rating":1},"GL.BK":{"price":121,"delta_price":8,"rating":"BB","delta_rating":-1},"1031.HK":{"price":119,"delta_price":6,"rating":"BB","delta_rating":1},"TAKA.KL":{"price":136,"delta_price":4,"rating":"BBB-","delta_rating":-1},"CAPR.CM":{"price":194,"delta_price":4,"rating":"CCC","delta_rating":0},"BLFI.PS":{"price":109,"delta_price":3,"rating":"AA+","delta_rating":1},"1445.T":{"price":197,"delta_price":7,"rating":"BBB-","delta_rating":-1},"2668.HK":{"price":129,"delta_price":7,"rating":"BBB-","delta_rating":0},"2858.HK":{"price":120,"delta_price":7,"rating":"A+","delta_rating":0},"PRIL.DH":{"price":140,"delta_price":6,"rating":"AA","delta_rating":-1},"ARM.PSX":{"price":163,"delta_price":6,"rating":"BB+","delta_rating":1},"ATL.CM":{"price":158,"delta_price":10,"rating":"BBB-","delta_rating":0},"AYUD.BK":{"price":114,"delta_price":6,"rating":"CCC+","delta_rating":-1},"LOLD.CM":{"price":119,"delta_price":7,"rating":"CCC+","delta_rating":1},"0373.HK":{"price":190,"delta_price":8,"rating":"B+","delta_rating":-1},"3113.T":{"price":125,"delta_price":6,"rating":"BB+","delta_rating":1},"BIMB.KL":{"price":174,"delta_price":8,"rating":"A","delta_rating":1},"DBHF.DH":{"price":187,"delta_price":3,"rating":"AA+","delta_rating":0},"8705.T":{"price":163,"delta_price":7,"rating":"CCC","delta_rating":0},"JINS.CM":{"price":124,"delta_price":5,"rating":"CCC","delta_rating":-1},"IDAI.BO":{"price":166,"delta_price":7,"rating":"B+","delta_rating":1},"PTC.PS":{"price":174,"delta_price":5,"rating":"AA","delta_rating":1},"0440.HK":{"price":184,"delta_price":5,"rating":"A+","delta_rating":-1},"4669.T":{"price":159,"delta_price":7,"rating":"AA+","delta_rating":-1},"PBB.PS":{"price":134,"delta_price":6,"rating":"A+","delta_rating":-1},"PLIC.DH":{"price":184,"delta_price":7,"rating":"AA-","delta_rating":-1},"PTCN.NS":{"price":165,"delta_price":9,"rating":"B-","delta_rating":-1},"CDBF.CM":{"price":146,"delta_price":7,"rating":"BB+","delta_rating":1},"UAL.CM":{"price":180,"delta_price":5,"rating":"CCC-","delta_rating":1},"AUB.PS":{"price":174,"delta_price":6,"rating":"A","delta_rating":1},"MOFS.NS":{"price":193,"delta_price":8,"rating":"B","delta_rating":0},"SIS.BK":{"price":161,"delta_price":1,"rating":"CCC","delta_rating":1},"MHTL.LK":{"price":170,"delta_price":10,"rating":"AA","delta_rating":-1},"PRBN.DH":{"price":176,"delta_price":10,"rating":"AA+","delta_rating":1},"CSI.HNO":{"price":110,"delta_price":1,"rating":"B+","delta_rating":1},"000617.SZ":{"price":168,"delta_price":5,"rating":"A","delta_rating":1},"AIBK.DH":{"price":183,"delta_price":1,"rating":"CCC","delta_rating":1},"SEBK.DH":{"price":150,"delta_price":9,"rating":"A-","delta_rating":1},"ABBK.DH":{"price":171,"delta_price":10,"rating":"BB+","delta_rating":1},"EXPT.DH":{"price":144,"delta_price":5,"rating":"A","delta_rating":-1},"PRBK.DH":{"price":105,"delta_price":5,"rating":"B","delta_rating":1},"UCBL.DH":{"price":121,"delta_price":10,"rating":"B-","delta_rating":1},"000627.SZ":{"price":135,"delta_price":7,"rating":"B","delta_rating":-1},"FIRS.DH":{"price":139,"delta_price":3,"rating":"B","delta_rating":-1},"ARTA.JK":{"price":181,"delta_price":8,"rating":"AA","delta_rating":1},"SONA.PSX":{"price":150,"delta_price":2,"rating":"CCC","delta_rating":0},"TRUS.JK":{"price":147,"delta_price":2,"rating":"CCC-","delta_rating":-1},"088390.KQ":{"price":117,"delta_price":7,"rating":"BB","delta_rating":-1},"FYBL.PSX":{"price":178,"delta_price":6,"rating":"AA-","delta_rating":0},"ASJT.JK":{"price":128,"delta_price":10,"rating":"B","delta_rating":-1},"ASMI.JK":{"price":126,"delta_price":7,"rating":"BBB","delta_rating":0},"EVS.HN":{"price":175,"delta_price":4,"rating":"A","delta_rating":-1},"010050.KS":{"price":105,"delta_price":10,"rating":"B-","delta_rating":-1},"001750.KS":{"price":197,"delta_price":4,"rating":"BBB-","delta_rating":1},"FTS.HM":{"price":171,"delta_price":4,"rating":"AA+","delta_rating":-1},"APIC.JK":{"price":169,"delta_price":7,"rating":"BB+","delta_rating":-1},"AKSI.JK":{"price":142,"delta_price":1,"rating":"CCC","delta_rating":-1},"ABDA.JK":{"price":172,"delta_price":2,"rating":"AA+","delta_rating":0},"MTFN.JK":{"price":160,"delta_price":3,"rating":"CCC+","delta_rating":-1},"BPII.JK":{"price":161,"delta_price":9,"rating":"BB","delta_rating":-1},"BBMD.JK":{"price":102,"delta_price":3,"rating":"CCC","delta_rating":-1},"LPGI.JK":{"price":193,"delta_price":1,"rating":"A+","delta_rating":0},"ASRM.JK":{"price":198,"delta_price":10,"rating":"BB+","delta_rating":-1},"INPC.JK":{"price":139,"delta_price":2,"rating":"B","delta_rating":-1},"VNR.HN":{"price":184,"delta_price":5,"rating":"AA","delta_rating":0},"BCEL.LK":{"price":142,"delta_price":2,"rating":"AA-","delta_rating":0},"TUGU.JK":{"price":135,"delta_price":10,"rating":"BBB","delta_rating":0},"032190.KQ":{"price":130,"delta_price":6,"rating":"AA","delta_rating":1},"PVI.HN":{"price":150,"delta_price":10,"rating":"CCC-","delta_rating":1},"EXPF.BO":{"price":106,"delta_price":10,"rating":"BBB+","delta_rating":0},"PSI.AX":{"price":188,"delta_price":10,"rating":"CCC-","delta_rating":1},"QLIS.PK":{"price":139,"delta_price":4,"rating":"AA+","delta_rating":0},"WFHG.PK":{"price":112,"delta_price":2,"rating":"B+","delta_rating":-1},"CVIp.V":{"price":166,"delta_price":2,"rating":"AA+","delta_rating":-1},"AFC.NZ":{"price":172,"delta_price":6,"rating":"AAA","delta_rating":0},"SVS.AX":{"price":119,"delta_price":1,"rating":"B+","delta_rating":-1},"BHD.AX":{"price":114,"delta_price":1,"rating":"CCC+","delta_rating":0},"PYCT.PK":{"price":147,"delta_price":1,"rating":"CCC-","delta_rating":-1},"ONEA.SI":{"price":190,"delta_price":6,"rating":"CCC+","delta_rating":1},"8030.HK":{"price":173,"delta_price":10,"rating":"BBB","delta_rating":0},"GC1.AX":{"price":101,"delta_price":5,"rating":"AA","delta_rating":-1},"NZA.NZ":{"price":120,"delta_price":5,"rating":"BB","delta_rating":0},"MEC.AX":{"price":178,"delta_price":3,"rating":"BBB+","delta_rating":-1},"1ALN.PSX":{"price":168,"delta_price":6,"rating":"CCC-","delta_rating":-1},"GBRG.OQ":{"price":154,"delta_price":5,"rating":"AA+","delta_rating":0},"NCC.AX":{"price":104,"delta_price":6,"rating":"CCC-","delta_rating":-1},"OZG.AX":{"price":133,"delta_price":1,"rating":"BBB-","delta_rating":1},"WINSF.PK":{"price":156,"delta_price":9,"rating":"A+","delta_rating":1},"MASK.NS":{"price":166,"delta_price":2,"rating":"BBB-","delta_rating":1},"SNC.AX":{"price":105,"delta_price":1,"rating":"CCC-","delta_rating":0},"SPRA.BO":{"price":144,"delta_price":9,"rating":"AA+","delta_rating":0},"GRNQ.OQ":{"price":193,"delta_price":8,"rating":"CCC+","delta_rating":0},"RYD.AX":{"price":134,"delta_price":1,"rating":"A+","delta_rating":-1},"RITA.BO":{"price":145,"delta_price":7,"rating":"A+","delta_rating":0},"PGIL.PSX":{"price":173,"delta_price":3,"rating":"BBB","delta_rating":1},"8123.HK":{"price":133,"delta_price":6,"rating":"CCC","delta_rating":-1},"EAI.AX":{"price":149,"delta_price":8,"rating":"B","delta_rating":0},"VCKA.OQ":{"price":124,"delta_price":10,"rating":"B","delta_rating":-1},"SEAV.PK":{"price":169,"delta_price":4,"rating":"B","delta_rating":1},"0339.HK":{"price":197,"delta_price":5,"rating":"BB+","delta_rating":0},"HMY.NZ":{"price":156,"delta_price":9,"rating":"BBB+","delta_rating":-1},"0172.HK":{"price":166,"delta_price":6,"rating":"CCC+","delta_rating":-1},"GARB.BO":{"price":102,"delta_price":8,"rating":"BBB+","delta_rating":0},"ALI.AX":{"price":191,"delta_price":7,"rating":"BB","delta_rating":0},"LCAAU.OQ":{"price":139,"delta_price":6,"rating":"BB+","delta_rating":1},"6877.HK":{"price":126,"delta_price":4,"rating":"BBB+","delta_rating":-1},"PIC.AX":{"price":174,"delta_price":3,"rating":"B","delta_rating":1},"PMC.AX":{"price":121,"delta_price":9,"rating":"A","delta_rating":1},"PL8.AX":{"price":171,"delta_price":7,"rating":"AA+","delta_rating":1},"PLFS.DH":{"price":188,"delta_price":8,"rating":"A","delta_rating":-1},"PHC.PS":{"price":199,"delta_price":5,"rating":"CCC+","delta_rating":1},"8740.T":{"price":170,"delta_price":1,"rating":"AA-","delta_rating":1},"HABB.PSX":{"price":153,"delta_price":2,"rating":"CCC-","delta_rating":1},"ICBI.DH":{"price":176,"delta_price":6,"rating":"BBB","delta_rating":-1},"EIBA.PS":{"price":164,"delta_price":9,"rating":"AAA","delta_rating":-1},"373340.KQ":{"price":142,"delta_price":1,"rating":"CCC-","delta_rating":0},"STBL.DH":{"price":100,"delta_price":1,"rating":"A","delta_rating":0},"KASE.KZ":{"price":144,"delta_price":2,"rating":"B-","delta_rating":1},"369370.KQ":{"price":199,"delta_price":7,"rating":"CCC-","delta_rating":1},"366330.KQ":{"price":187,"delta_price":4,"rating":"B","delta_rating":1},"353060.KQ":{"price":172,"delta_price":3,"rating":"AAA","delta_rating":-1},"DHBK.DH":{"price":179,"delta_price":1,"rating":"A-","delta_rating":-1},"353490.KQ":{"price":127,"delta_price":3,"rating":"A-","delta_rating":0},"367460.KQ":{"price":197,"delta_price":4,"rating":"CCC+","delta_rating":0},"CINS.CM":{"price":117,"delta_price":7,"rating":"BBB+","delta_rating":-1},"PRE.HN":{"price":147,"delta_price":7,"rating":"AAA","delta_rating":0},"ATIL.PSX":{"price":172,"delta_price":3,"rating":"A-","delta_rating":1},"MDR.MNE":{"price":200,"delta_price":8,"rating":"CCC+","delta_rating":0},"TRBK.PSX":{"price":113,"delta_price":6,"rating":"CCC+","delta_rating":0},"PROV.DH":{"price":129,"delta_price":2,"rating":"AA+","delta_rating":1},"TINV.N":{"price":171,"delta_price":7,"rating":"CCC","delta_rating":0},"ZGYH.OQ":{"price":123,"delta_price":3,"rating":"B+","delta_rating":-1},"CCAC.N":{"price":180,"delta_price":5,"rating":"CCC","delta_rating":-1},"SLCR.OQ":{"price":175,"delta_price":10,"rating":"BB+","delta_rating":1},"008560.KS":{"price":126,"delta_price":6,"rating":"A-","delta_rating":-1},"BANH.NS":{"price":186,"delta_price":4,"rating":"A+","delta_rating":1},"DANV.BO":{"price":100,"delta_price":4,"rating":"BBB-","delta_rating":0},"PSE.PS":{"price":174,"delta_price":6,"rating":"B+","delta_rating":1},"SRL.N":{"price":167,"delta_price":8,"rating":"AAA","delta_rating":-1},"003460.KS":{"price":143,"delta_price":10,"rating":"CCC-","delta_rating":1},"NWL.AX":{"price":128,"delta_price":2,"rating":"BBB+","delta_rating":-1},"CFVF.CM":{"price":135,"delta_price":7,"rating":"A","delta_rating":0},"000987.SZ":{"price":179,"delta_price":2,"rating":"AA-","delta_rating":-1},"7464.T":{"price":128,"delta_price":9,"rating":"BBB","delta_rating":-1},"331520.KQ":{"price":121,"delta_price":7,"rating":"A+","delta_rating":-1},"373200.KQ":{"price":116,"delta_price":6,"rating":"AA+","delta_rating":0},"351340.KQ":{"price":129,"delta_price":7,"rating":"BBB-","delta_rating":1},"3489.T":{"price":111,"delta_price":10,"rating":"A+","delta_rating":-1},"332710.KQ":{"price":125,"delta_price":1,"rating":"BB+","delta_rating":0},"323280.KQ":{"price":124,"delta_price":4,"rating":"CCC+","delta_rating":0},"336570.KQ":{"price":193,"delta_price":5,"rating":"A+","delta_rating":0},"SUER.BO":{"price":157,"delta_price":2,"rating":"AA","delta_rating":-1},"332290.KQ":{"price":101,"delta_price":4,"rating":"BBB","delta_rating":-1},"SDF.AX":{"price":152,"delta_price":3,"rating":"AA","delta_rating":1},"368770.KQ":{"price":142,"delta_price":8,"rating":"BBB+","delta_rating":0},"323210.KQ":{"price":136,"delta_price":1,"rating":"B","delta_rating":1},"329560.KQ":{"price":192,"delta_price":6,"rating":"BBB-","delta_rating":1},"367480.KQ":{"price":187,"delta_price":8,"rating":"CCC-","delta_rating":0},"085620.KS":{"price":142,"delta_price":5,"rating":"B","delta_rating":0},"AKME.BO":{"price":147,"delta_price":8,"rating":"BBB","delta_rating":1},"RAPD.KL":{"price":106,"delta_price":10,"rating":"BBB","delta_rating":0},"MNDL.MNE":{"price":115,"delta_price":3,"rating":"AAA","delta_rating":-1},"023760.KQ":{"price":175,"delta_price":9,"rating":"AA-","delta_rating":-1},"ESFS.BO":{"price":174,"delta_price":3,"rating":"BBB+","delta_rating":1},"7183.T":{"price":156,"delta_price":3,"rating":"BB","delta_rating":-1},"HML.MNE":{"price":189,"delta_price":1,"rating":"AA-","delta_rating":-1},"MTC.OQ":{"price":158,"delta_price":10,"rating":"A-","delta_rating":1},"MPACU.OQ":{"price":127,"delta_price":1,"rating":"BBB-","delta_rating":-1},"TSEC.BO":{"price":105,"delta_price":1,"rating":"AAA","delta_rating":0},"DEFI.JK":{"price":179,"delta_price":10,"rating":"BBB","delta_rating":1},"NPRL.BO":{"price":121,"delta_price":7,"rating":"BB","delta_rating":-1},"DNET.JK":{"price":176,"delta_price":10,"rating":"AAA","delta_rating":0},"JMSH.NS":{"price":177,"delta_price":8,"rating":"B","delta_rating":-1},"MNY.AX":{"price":176,"delta_price":1,"rating":"CCC+","delta_rating":1},"BJAT.NS":{"price":141,"delta_price":10,"rating":"BB+","delta_rating":0},"NIYO.BO":{"price":179,"delta_price":6,"rating":"BBB","delta_rating":1},"TRBK.DH":{"price":133,"delta_price":1,"rating":"B+","delta_rating":1},"HABM.PSX":{"price":110,"delta_price":7,"rating":"AA","delta_rating":-1},"0376.HK":{"price":140,"delta_price":2,"rating":"BB+","delta_rating":0},"CENA.NS":{"price":134,"delta_price":1,"rating":"AA-","delta_rating":1},"WLE.AX":{"price":109,"delta_price":9,"rating":"AAA","delta_rating":0},"BJFS.NS":{"price":106,"delta_price":5,"rating":"B","delta_rating":-1},"MMS.AX":{"price":169,"delta_price":4,"rating":"B+","delta_rating":-1},"001290.KS":{"price":167,"delta_price":8,"rating":"B-","delta_rating":1},"MAYK.BO":{"price":187,"delta_price":7,"rating":"BBB-","delta_rating":1},"039490.KS":{"price":146,"delta_price":5,"rating":"B+","delta_rating":0},"2637.TW":{"price":104,"delta_price":2,"rating":"B-","delta_rating":0},"139130.KS":{"price":148,"delta_price":2,"rating":"A+","delta_rating":-1},"BKI.BK":{"price":177,"delta_price":6,"rating":"B+","delta_rating":0},"JT.N":{"price":170,"delta_price":4,"rating":"AAA","delta_rating":-1},"LNK.AX":{"price":188,"delta_price":4,"rating":"AA+","delta_rating":0},"7185.T":{"price":189,"delta_price":10,"rating":"B-","delta_rating":-1},"0133.HK":{"price":104,"delta_price":8,"rating":"BB","delta_rating":-1},"NOAH.N":{"price":120,"delta_price":6,"rating":"A","delta_rating":0},"SFAN.JK":{"price":152,"delta_price":3,"rating":"BBB+","delta_rating":-1},"4310.T":{"price":130,"delta_price":1,"rating":"AAA","delta_rating":-1},"UTBK.DH":{"price":196,"delta_price":10,"rating":"B+","delta_rating":0},"IVAN.N":{"price":200,"delta_price":7,"rating":"B+","delta_rating":1},"TOYO.KL":{"price":127,"delta_price":10,"rating":"CCC+","delta_rating":-1},"PBBK.DH":{"price":146,"delta_price":8,"rating":"A","delta_rating":1},"MLT.AX":{"price":146,"delta_price":10,"rating":"B+","delta_rating":-1},"950110.KQ":{"price":151,"delta_price":2,"rating":"A","delta_rating":0},"WAM.AX":{"price":192,"delta_price":9,"rating":"AA","delta_rating":1},"038540.KQ":{"price":183,"delta_price":5,"rating":"A+","delta_rating":1},"GRNVU.OQ":{"price":110,"delta_price":9,"rating":"A-","delta_rating":0},"310840.KQ":{"price":127,"delta_price":7,"rating":"CCC","delta_rating":1},"SEC.AX":{"price":127,"delta_price":3,"rating":"A","delta_rating":1},"ERF.AX":{"price":147,"delta_price":7,"rating":"BBB+","delta_rating":-1},"AMH.AX":{"price":137,"delta_price":1,"rating":"A-","delta_rating":-1},"ASPL.N":{"price":140,"delta_price":7,"rating":"BBB","delta_rating":0},"3193.T":{"price":101,"delta_price":7,"rating":"A-","delta_rating":-1},"NEIL.BO":{"price":191,"delta_price":2,"rating":"BB+","delta_rating":1},"AVC.AX":{"price":163,"delta_price":9,"rating":"CCC+","delta_rating":0},"ECF.AX":{"price":171,"delta_price":3,"rating":"B-","delta_rating":0},"310870.KQ":{"price":134,"delta_price":5,"rating":"AAA","delta_rating":-1},"INRE.BO":{"price":177,"delta_price":7,"rating":"BBB","delta_rating":1},"BDS.MNE":{"price":137,"delta_price":6,"rating":"BBB+","delta_rating":0},"BMYS.KL":{"price":144,"delta_price":9,"rating":"A+","delta_rating":1},"PISA.NS":{"price":198,"delta_price":10,"rating":"CCC+","delta_rating":1},"7339.T":{"price":123,"delta_price":10,"rating":"BB+","delta_rating":-1},"030610.KS":{"price":106,"delta_price":6,"rating":"BBB-","delta_rating":1},"PGI.HM":{"price":181,"delta_price":2,"rating":"BBB","delta_rating":1},"NEXT.PSX":{"price":180,"delta_price":10,"rating":"CCC-","delta_rating":0},"MOT.AX":{"price":162,"delta_price":7,"rating":"A+","delta_rating":1},"AIC.MNE":{"price":172,"delta_price":4,"rating":"A+","delta_rating":0},"LFG.AX":{"price":145,"delta_price":8,"rating":"CCC","delta_rating":-1},"HABI.PSX":{"price":188,"delta_price":4,"rating":"BB","delta_rating":1},"PACO.KL":{"price":114,"delta_price":9,"rating":"AA+","delta_rating":-1},"APLM.BO":{"price":158,"delta_price":10,"rating":"BBB-","delta_rating":-1},"MAAS.KL":{"price":115,"delta_price":5,"rating":"B-","delta_rating":0},"8737.T":{"price":143,"delta_price":6,"rating":"BBB-","delta_rating":-1},"LOND.KL":{"price":101,"delta_price":8,"rating":"AAA","delta_rating":-1},"003540.KS":{"price":191,"delta_price":7,"rating":"BBB-","delta_rating":-1},"138930.KS":{"price":118,"delta_price":10,"rating":"A+","delta_rating":1},"ACQ.AX":{"price":112,"delta_price":1,"rating":"AA+","delta_rating":-1},"INSS.KL":{"price":124,"delta_price":9,"rating":"BBB+","delta_rating":1},"8714.T":{"price":128,"delta_price":3,"rating":"B-","delta_rating":0},"ENIE.DH":{"price":141,"delta_price":3,"rating":"B","delta_rating":-1},"138040.KS":{"price":153,"delta_price":9,"rating":"A-","delta_rating":0},"BKAL.DH":{"price":132,"delta_price":3,"rating":"B-","delta_rating":0},"BNKC.BO":{"price":147,"delta_price":6,"rating":"AA-","delta_rating":1},"2174.T":{"price":110,"delta_price":6,"rating":"A-","delta_rating":0},"8613.T":{"price":144,"delta_price":10,"rating":"B-","delta_rating":1},"PNIN.JK":{"price":165,"delta_price":1,"rating":"A","delta_rating":1},"PEIN.CM":{"price":124,"delta_price":2,"rating":"BBB-","delta_rating":-1},"GLNV.SI":{"price":144,"delta_price":2,"rating":"AA-","delta_rating":-1},"CETI.DH":{"price":134,"delta_price":10,"rating":"AAA","delta_rating":0},"NAHA.NS":{"price":112,"delta_price":2,"rating":"AA-","delta_rating":1},"ARCM.BO":{"price":130,"delta_price":4,"rating":"BB+","delta_rating":0},"COMF.BO":{"price":117,"delta_price":10,"rating":"BBB+","delta_rating":-1},"172580.KS":{"price":172,"delta_price":3,"rating":"CCC-","delta_rating":1},"MPL.AX":{"price":193,"delta_price":3,"rating":"B","delta_rating":-1},"321260.KQ":{"price":144,"delta_price":4,"rating":"AA","delta_rating":1},"MAXI.NS":{"price":156,"delta_price":4,"rating":"CCC","delta_rating":0},"PV.N":{"price":140,"delta_price":8,"rating":"BBB-","delta_rating":0},"365590.KQ":{"price":158,"delta_price":9,"rating":"AA+","delta_rating":0},"NOW.PS":{"price":130,"delta_price":9,"rating":"B+","delta_rating":0},"JFU.OQ":{"price":108,"delta_price":2,"rating":"AAA","delta_rating":0},"355150.KQ":{"price":105,"delta_price":2,"rating":"BB+","delta_rating":1},"PAKS.PSX":{"price":101,"delta_price":10,"rating":"A-","delta_rating":-1},"029780.KS":{"price":156,"delta_price":4,"rating":"A+","delta_rating":-1},"023590.KS":{"price":170,"delta_price":4,"rating":"B-","delta_rating":0},"333430.KQ":{"price":184,"delta_price":8,"rating":"AA-","delta_rating":-1},"ELKD.KL":{"price":194,"delta_price":5,"rating":"A+","delta_rating":0},"AINM.KL":{"price":148,"delta_price":6,"rating":"A","delta_rating":0},"011810.KS":{"price":112,"delta_price":4,"rating":"BBB+","delta_rating":-1},"PAAS.NS":{"price":159,"delta_price":3,"rating":"BBB","delta_rating":-1},"VICO.JK":{"price":155,"delta_price":6,"rating":"CCC","delta_rating":0},"BKEQ.PSX":{"price":109,"delta_price":10,"rating":"AA+","delta_rating":1},"EMER.BO":{"price":136,"delta_price":1,"rating":"A+","delta_rating":-1},"KUBM.KL":{"price":138,"delta_price":10,"rating":"AA","delta_rating":-1},"EP1.AX":{"price":148,"delta_price":7,"rating":"B+","delta_rating":1},"003470.KS":{"price":166,"delta_price":1,"rating":"CCC-","delta_rating":-1},"BANK.JK":{"price":149,"delta_price":3,"rating":"B-","delta_rating":1},"ONEL.NS":{"price":167,"delta_price":2,"rating":"A+","delta_rating":0},"AITA.PK":{"price":138,"delta_price":3,"rating":"A-","delta_rating":1},"MNRB.KL":{"price":111,"delta_price":10,"rating":"A+","delta_rating":-1},"GENN.NS":{"price":141,"delta_price":2,"rating":"B-","delta_rating":1},"8508.T":{"price":152,"delta_price":9,"rating":"AA+","delta_rating":0},"SOCI.DH":{"price":188,"delta_price":3,"rating":"BBB","delta_rating":0},"8624.T":{"price":188,"delta_price":9,"rating":"BBB+","delta_rating":0},"7199.T":{"price":185,"delta_price":8,"rating":"A-","delta_rating":0},"030210.KS":{"price":181,"delta_price":2,"rating":"BBB+","delta_rating":-1},"LIBF.BO":{"price":146,"delta_price":4,"rating":"A+","delta_rating":-1},"KZLE.BO":{"price":174,"delta_price":9,"rating":"BB+","delta_rating":1},"DUI.AX":{"price":118,"delta_price":6,"rating":"B+","delta_rating":0},"BHAT.JK":{"price":141,"delta_price":10,"rating":"AA","delta_rating":-1},"VG8.AX":{"price":174,"delta_price":3,"rating":"AA-","delta_rating":0},"BTWN.OQ":{"price":151,"delta_price":3,"rating":"CCC+","delta_rating":1},"TIP.BK":{"price":117,"delta_price":1,"rating":"CCC-","delta_rating":0},"KALA.NS":{"price":178,"delta_price":10,"rating":"BB","delta_rating":0},"PLT.AX":{"price":106,"delta_price":7,"rating":"B+","delta_rating":1},"175330.KS":{"price":176,"delta_price":10,"rating":"A-","delta_rating":0},"307160.KQ":{"price":125,"delta_price":6,"rating":"B+","delta_rating":0},"UYFI.BO":{"price":172,"delta_price":8,"rating":"A","delta_rating":1},"RHFL.NS":{"price":194,"delta_price":7,"rating":"CCC-","delta_rating":0},"MCBL.DH":{"price":142,"delta_price":2,"rating":"A","delta_rating":0},"ASIT.BO":{"price":186,"delta_price":1,"rating":"AAA","delta_rating":-1},"GALT.BO":{"price":135,"delta_price":9,"rating":"BB+","delta_rating":1},"313750.KQ":{"price":157,"delta_price":4,"rating":"BBB","delta_rating":1},"0431.HK":{"price":191,"delta_price":4,"rating":"CCC+","delta_rating":-1},"SUMM.NS":{"price":179,"delta_price":3,"rating":"A","delta_rating":0},"3482.T":{"price":177,"delta_price":9,"rating":"AA-","delta_rating":0},"8007.HK":{"price":189,"delta_price":5,"rating":"B-","delta_rating":-1},"SCBP.PSX":{"price":135,"delta_price":2,"rating":"AA-","delta_rating":1},"3121.T":{"price":197,"delta_price":6,"rating":"A","delta_rating":0},"367340.KQ":{"price":140,"delta_price":4,"rating":"B+","delta_rating":1},"NZX.NZ":{"price":195,"delta_price":5,"rating":"AA-","delta_rating":0},"OBLT.DH":{"price":136,"delta_price":9,"rating":"CCC","delta_rating":1},"2322.HK":{"price":149,"delta_price":3,"rating":"BB","delta_rating":1},"LKPM.BO":{"price":182,"delta_price":1,"rating":"AA-","delta_rating":1},"027360.KQ":{"price":163,"delta_price":4,"rating":"AA+","delta_rating":0},"TVI.BK":{"price":178,"delta_price":8,"rating":"CCC+","delta_rating":0},"8622.T":{"price":177,"delta_price":3,"rating":"A+","delta_rating":-1},"3454.T":{"price":168,"delta_price":9,"rating":"BBB+","delta_rating":-1},"BOPU.PSX":{"price":192,"delta_price":5,"rating":"AA","delta_rating":1},"STAN.DH":{"price":103,"delta_price":10,"rating":"A+","delta_rating":-1},"2388.T":{"price":126,"delta_price":2,"rating":"CCC","delta_rating":1},"001270.KS":{"price":170,"delta_price":10,"rating":"BBB-","delta_rating":-1},"HHLA.N":{"price":125,"delta_price":4,"rating":"A","delta_rating":0},"JSGC.PSX":{"price":127,"delta_price":5,"rating":"BBB-","delta_rating":1},"TCFC.BO":{"price":188,"delta_price":10,"rating":"B","delta_rating":1},"RATB.NS":{"price":146,"delta_price":5,"rating":"A+","delta_rating":0},"HVA.HNO":{"price":104,"delta_price":9,"rating":"CCC","delta_rating":0},"GEEA.BO":{"price":177,"delta_price":9,"rating":"A+","delta_rating":1},"001200.KS":{"price":136,"delta_price":3,"rating":"B+","delta_rating":-1},"PTM.AX":{"price":124,"delta_price":4,"rating":"CCC","delta_rating":0},"ASDM.JK":{"price":106,"delta_price":3,"rating":"B+","delta_rating":0},"GOBE.BO":{"price":192,"delta_price":2,"rating":"AA+","delta_rating":1},"DHAE.NS":{"price":112,"delta_price":7,"rating":"AA","delta_rating":-1},"086790.KS":{"price":112,"delta_price":3,"rating":"A","delta_rating":1},"IDFB.NS":{"price":137,"delta_price":5,"rating":"BBB-","delta_rating":-1},"8708.T":{"price":170,"delta_price":8,"rating":"AAA","delta_rating":-1},"2666.HK":{"price":159,"delta_price":3,"rating":"CCC-","delta_rating":0},"BDFN.DH":{"price":159,"delta_price":8,"rating":"CCC+","delta_rating":-1},"YBR.AX":{"price":174,"delta_price":8,"rating":"BBB+","delta_rating":1},"LICH.NS":{"price":140,"delta_price":5,"rating":"CCC+","delta_rating":1},"BBSS.BO":{"price":152,"delta_price":10,"rating":"B-","delta_rating":-1},"NKI.BK":{"price":184,"delta_price":4,"rating":"BBB+","delta_rating":0},"MFC.BK":{"price":113,"delta_price":9,"rating":"BB+","delta_rating":1},"TINV.NS":{"price":103,"delta_price":1,"rating":"B+","delta_rating":-1},"PGIN.DH":{"price":114,"delta_price":4,"rating":"BB","delta_rating":-1},"8594.SP":{"price":138,"delta_price":7,"rating":"B-","delta_rating":1},"SGXL.SI":{"price":125,"delta_price":9,"rating":"B+","delta_rating":0},"DHUN.NS":{"price":121,"delta_price":9,"rating":"A-","delta_rating":0},"3848.HK":{"price":176,"delta_price":7,"rating":"BBB+","delta_rating":0},"MOE.AX":{"price":157,"delta_price":3,"rating":"AA","delta_rating":0},"QFIN.OQ":{"price":175,"delta_price":6,"rating":"AA","delta_rating":-1},"317030.KQ":{"price":154,"delta_price":9,"rating":"A-","delta_rating":0},"359090.KQ":{"price":144,"delta_price":1,"rating":"BBB-","delta_rating":1},"016600.KQ":{"price":157,"delta_price":1,"rating":"CCC-","delta_rating":1},"8596.T":{"price":133,"delta_price":10,"rating":"BBB-","delta_rating":0},"337450.KQ":{"price":187,"delta_price":5,"rating":"BB+","delta_rating":-1},"1140.HK":{"price":154,"delta_price":8,"rating":"AA","delta_rating":0},"TIGR.OQ":{"price":159,"delta_price":4,"rating":"AA-","delta_rating":-1},"000062.SZ":{"price":106,"delta_price":10,"rating":"AA","delta_rating":0},"IMCA.BO":{"price":149,"delta_price":8,"rating":"BB","delta_rating":-1},"JNSW.NS":{"price":152,"delta_price":10,"rating":"B","delta_rating":0},"PIA.AX":{"price":128,"delta_price":2,"rating":"B","delta_rating":1},"3237.T":{"price":177,"delta_price":9,"rating":"B+","delta_rating":-1},"003690.KS":{"price":114,"delta_price":7,"rating":"B","delta_rating":-1},"000880.KS":{"price":131,"delta_price":2,"rating":"AA+","delta_rating":0},"6866.HK":{"price":109,"delta_price":7,"rating":"A","delta_rating":0},"0372.HK":{"price":155,"delta_price":2,"rating":"AA","delta_rating":-1},"153360.KS":{"price":123,"delta_price":7,"rating":"AA-","delta_rating":-1},"FUJI.JK":{"price":106,"delta_price":8,"rating":"BBB+","delta_rating":0},"INVS.PSX":{"price":117,"delta_price":9,"rating":"A","delta_rating":1},"8617.T":{"price":114,"delta_price":2,"rating":"BB","delta_rating":1},"DAMA.KL":{"price":141,"delta_price":9,"rating":"CCC+","delta_rating":0},"NOBU.JK":{"price":171,"delta_price":5,"rating":"BB+","delta_rating":1},"0764.HK":{"price":109,"delta_price":10,"rating":"AA-","delta_rating":-1},"8540.FU":{"price":136,"delta_price":4,"rating":"CCC","delta_rating":0},"LX.OQ":{"price":145,"delta_price":9,"rating":"BB","delta_rating":-1},"RUPA.DH":{"price":135,"delta_price":1,"rating":"CCC-","delta_rating":1},"NBI.AX":{"price":111,"delta_price":7,"rating":"BBB+","delta_rating":1},"MFG.AX":{"price":192,"delta_price":8,"rating":"CCC-","delta_rating":1},"FID.AX":{"price":133,"delta_price":6,"rating":"BB+","delta_rating":1},"AHAP.JK":{"price":102,"delta_price":7,"rating":"A-","delta_rating":0},"ASX.AX":{"price":183,"delta_price":9,"rating":"CCC-","delta_rating":0},"MCLI.DH":{"price":187,"delta_price":4,"rating":"BB+","delta_rating":0},"KIFS.BO":{"price":186,"delta_price":10,"rating":"B-","delta_rating":1},"IDLC.DH":{"price":171,"delta_price":9,"rating":"BB+","delta_rating":0},"TFCI.NS":{"price":164,"delta_price":6,"rating":"A-","delta_rating":-1},"GOYA.BO":{"price":101,"delta_price":6,"rating":"B-","delta_rating":0},"MBSL.CM":{"price":150,"delta_price":1,"rating":"BBB-","delta_rating":1},"0188.HK":{"price":125,"delta_price":4,"rating":"BB+","delta_rating":1},"BTI.AX":{"price":162,"delta_price":1,"rating":"BBB+","delta_rating":-1},"THEE.NS":{"price":188,"delta_price":2,"rating":"A-","delta_rating":-1},"RELI.DH":{"price":141,"delta_price":10,"rating":"BB","delta_rating":-1},"333050.KQ":{"price":130,"delta_price":6,"rating":"AAA","delta_rating":0},"ALAK.NS":{"price":165,"delta_price":5,"rating":"A","delta_rating":-1},"001510.KS":{"price":171,"delta_price":8,"rating":"AA-","delta_rating":-1},"CNI.AX":{"price":112,"delta_price":10,"rating":"AA","delta_rating":0},"ASBI.JK":{"price":184,"delta_price":7,"rating":"AA","delta_rating":-1},"NICL.DH":{"price":200,"delta_price":6,"rating":"AA+","delta_rating":0},"NBLL.DH":{"price":153,"delta_price":6,"rating":"AA","delta_rating":1},"016610.KS":{"price":162,"delta_price":3,"rating":"A+","delta_rating":1},"8221.HK":{"price":192,"delta_price":6,"rating":"A+","delta_rating":-1},"INDH.BO":{"price":111,"delta_price":10,"rating":"B-","delta_rating":1},"EDEL.NS":{"price":193,"delta_price":10,"rating":"CCC+","delta_rating":-1},"MCDH.NS":{"price":170,"delta_price":2,"rating":"BBB-","delta_rating":-1},"0717.HK":{"price":102,"delta_price":10,"rating":"BBB","delta_rating":-1},"FERRO.PS":{"price":164,"delta_price":5,"rating":"AA-","delta_rating":1},"SIBL.DH":{"price":167,"delta_price":9,"rating":"AA+","delta_rating":0},"MGF.NS":{"price":185,"delta_price":6,"rating":"CCC+","delta_rating":-1},"001500.KS":{"price":140,"delta_price":5,"rating":"BBB-","delta_rating":0},"8098.HK":{"price":185,"delta_price":6,"rating":"BB","delta_rating":-1},"FFLM.PSX":{"price":104,"delta_price":1,"rating":"BB","delta_rating":0},"0227.HK":{"price":141,"delta_price":7,"rating":"A-","delta_rating":1},"1LSIT.DH":{"price":110,"delta_price":6,"rating":"BBB-","delta_rating":-1},"000810.KS":{"price":177,"delta_price":4,"rating":"CCC-","delta_rating":0},"BSEL.NS":{"price":136,"delta_price":7,"rating":"A-","delta_rating":1},"PYR.AX":{"price":174,"delta_price":1,"rating":"B-","delta_rating":1},"HUM.AX":{"price":101,"delta_price":10,"rating":"AA+","delta_rating":-1},"AMAG.JK":{"price":196,"delta_price":1,"rating":"AAA","delta_rating":0},"SKYI.PK":{"price":143,"delta_price":8,"rating":"AA+","delta_rating":1},"GMTN.BO":{"price":140,"delta_price":7,"rating":"AA+","delta_rating":-1},"2127.T":{"price":142,"delta_price":6,"rating":"AA-","delta_rating":-1},"8707.T":{"price":192,"delta_price":2,"rating":"A-","delta_rating":1},"SWTZ.AX":{"price":170,"delta_price":9,"rating":"CCC","delta_rating":1},"FAF.PS":{"price":151,"delta_price":7,"rating":"AAA","delta_rating":-1},"APES.KL":{"price":166,"delta_price":4,"rating":"AA-","delta_rating":0},"AFET.BO":{"price":189,"delta_price":7,"rating":"BB+","delta_rating":1},"SFTL.CM":{"price":148,"delta_price":2,"rating":"B-","delta_rating":-1},"CUP.AX":{"price":172,"delta_price":2,"rating":"CCC-","delta_rating":1},"353070.KQ":{"price":178,"delta_price":2,"rating":"B","delta_rating":0},"7190.T":{"price":167,"delta_price":7,"rating":"B","delta_rating":1},"VTH.AX":{"price":118,"delta_price":9,"rating":"AA","delta_rating":0},"0697.HK":{"price":119,"delta_price":9,"rating":"AA+","delta_rating":0},"363280.KS":{"price":120,"delta_price":6,"rating":"AAA","delta_rating":0},"TWMS.NS":{"price":104,"delta_price":8,"rating":"B+","delta_rating":1},"8614.T":{"price":154,"delta_price":9,"rating":"AAA","delta_rating":0},"ESRI.BO":{"price":105,"delta_price":4,"rating":"BB","delta_rating":0},"SBIL.NS":{"price":100,"delta_price":8,"rating":"A","delta_rating":1},"003010.KS":{"price":164,"delta_price":1,"rating":"B-","delta_rating":1},"ACOU.KL":{"price":138,"delta_price":9,"rating":"B","delta_rating":-1},"UTIA.NS":{"price":130,"delta_price":2,"rating":"AA-","delta_rating":-1},"2312.HK":{"price":147,"delta_price":10,"rating":"B","delta_rating":1},"GSPF.DH":{"price":151,"delta_price":9,"rating":"AA","delta_rating":1},"0379.HK":{"price":179,"delta_price":9,"rating":"A+","delta_rating":-1},"CYGS.DH":{"price":122,"delta_price":6,"rating":"AA","delta_rating":-1},"ARCF.BO":{"price":174,"delta_price":1,"rating":"BBB+","delta_rating":1},"STLL.BO":{"price":164,"delta_price":7,"rating":"A-","delta_rating":1},"1319.HK":{"price":162,"delta_price":10,"rating":"BB+","delta_rating":0},"5103.T":{"price":139,"delta_price":5,"rating":"CCC+","delta_rating":0},"GECE.NS":{"price":171,"delta_price":9,"rating":"A","delta_rating":0},"SRCS.KL":{"price":136,"delta_price":10,"rating":"A","delta_rating":1},"0132.HK":{"price":182,"delta_price":4,"rating":"CCC+","delta_rating":0},"MNLF.KL":{"price":199,"delta_price":1,"rating":"BBB+","delta_rating":-1},"IMBS.NS":{"price":119,"delta_price":5,"rating":"B","delta_rating":-1},"INAC.NS":{"price":119,"delta_price":1,"rating":"CCC-","delta_rating":0},"THL.NZ":{"price":135,"delta_price":8,"rating":"AA+","delta_rating":-1},"351320.KQ":{"price":179,"delta_price":8,"rating":"A-","delta_rating":-1},"SILF.BO":{"price":100,"delta_price":7,"rating":"BBB+","delta_rating":0},"JP.N":{"price":159,"delta_price":5,"rating":"B","delta_rating":1},"0767.HK":{"price":141,"delta_price":10,"rating":"BBB-","delta_rating":0},"0736.HK":{"price":140,"delta_price":4,"rating":"AAA","delta_rating":-1},"ANFI.BO":{"price":185,"delta_price":1,"rating":"A","delta_rating":0},"344050.KQ":{"price":150,"delta_price":9,"rating":"A","delta_rating":1},"2134.T":{"price":120,"delta_price":4,"rating":"B-","delta_rating":1},"JMAS.JK":{"price":184,"delta_price":1,"rating":"CCC","delta_rating":-1},"BLMI.BO":{"price":117,"delta_price":7,"rating":"A-","delta_rating":1},"2003.HK":{"price":161,"delta_price":5,"rating":"BBB+","delta_rating":0},"CONS.NS":{"price":104,"delta_price":4,"rating":"A","delta_rating":1},"CANO.BO":{"price":121,"delta_price":5,"rating":"CCC+","delta_rating":1},"UNIE.DH":{"price":115,"delta_price":5,"rating":"A-","delta_rating":0},"032830.KS":{"price":156,"delta_price":5,"rating":"AA","delta_rating":1},"ECON.BO":{"price":150,"delta_price":6,"rating":"CCC+","delta_rating":-1},"SAHR.BO":{"price":148,"delta_price":4,"rating":"B+","delta_rating":1},"GLSE.NS":{"price":100,"delta_price":5,"rating":"BBB","delta_rating":1},"BRR.PSX":{"price":160,"delta_price":7,"rating":"BBB","delta_rating":-1},"QVE.AX":{"price":124,"delta_price":8,"rating":"AA+","delta_rating":1},"MANF.BO":{"price":172,"delta_price":5,"rating":"B+","delta_rating":0},"NALS.NS":{"price":120,"delta_price":9,"rating":"A-","delta_rating":0},"4764.T":{"price":114,"delta_price":9,"rating":"B","delta_rating":-1},"8771.T":{"price":178,"delta_price":1,"rating":"CCC-","delta_rating":-1},"FASC.DH":{"price":148,"delta_price":10,"rating":"AAA","delta_rating":0},"8704.T":{"price":200,"delta_price":5,"rating":"A","delta_rating":1},"SID.HNO":{"price":130,"delta_price":3,"rating":"BB+","delta_rating":-1},"8365.T":{"price":194,"delta_price":9,"rating":"B-","delta_rating":0},"KCIL.BO":{"price":135,"delta_price":10,"rating":"AA+","delta_rating":-1},"CIN.AX":{"price":185,"delta_price":1,"rating":"A-","delta_rating":1},"GDF.AX":{"price":152,"delta_price":6,"rating":"CCC-","delta_rating":-1},"TCC.BK":{"price":128,"delta_price":10,"rating":"CCC+","delta_rating":0},"005830.KS":{"price":199,"delta_price":2,"rating":"AAA","delta_rating":-1},"ICLI.BO":{"price":122,"delta_price":4,"rating":"BB+","delta_rating":-1},"300023.SZ":{"price":135,"delta_price":7,"rating":"BB+","delta_rating":0},"BLI.HNO":{"price":104,"delta_price":3,"rating":"A","delta_rating":0},"7191.T":{"price":161,"delta_price":7,"rating":"BBB+","delta_rating":-1},"HUSN.OQ":{"price":163,"delta_price":5,"rating":"BB+","delta_rating":-1},"SULE.BO":{"price":124,"delta_price":8,"rating":"CCC","delta_rating":0},"0626.HK":{"price":105,"delta_price":5,"rating":"AAA","delta_rating":-1},"8844.T":{"price":146,"delta_price":5,"rating":"B-","delta_rating":0},"GLIL.DH":{"price":190,"delta_price":2,"rating":"AA-","delta_rating":1},"AARD.MNE":{"price":161,"delta_price":7,"rating":"B-","delta_rating":-1},"GARN.BO":{"price":124,"delta_price":9,"rating":"CCC-","delta_rating":0},"AWN.AX":{"price":173,"delta_price":8,"rating":"BBB-","delta_rating":0},"ARLF.NS":{"price":186,"delta_price":5,"rating":"AAA","delta_rating":0},"SRMA.BO":{"price":184,"delta_price":1,"rating":"BBB+","delta_rating":-1},"BAFL.PSX":{"price":185,"delta_price":9,"rating":"A","delta_rating":0},"BOSL.BO":{"price":148,"delta_price":7,"rating":"A-","delta_rating":0},"EMKS.NS":{"price":109,"delta_price":10,"rating":"BB+","delta_rating":0},"PITI.BO":{"price":155,"delta_price":9,"rating":"CCC","delta_rating":1},"JNIN.DH":{"price":109,"delta_price":6,"rating":"AAA","delta_rating":-1},"CUBI.BO":{"price":131,"delta_price":7,"rating":"BBB+","delta_rating":1},"LADF.BO":{"price":144,"delta_price":2,"rating":"A","delta_rating":1},"YMFS.BO":{"price":197,"delta_price":5,"rating":"CCC-","delta_rating":0},"AFA.AX":{"price":121,"delta_price":5,"rating":"B","delta_rating":0},"ISFL.BO":{"price":164,"delta_price":3,"rating":"B+","delta_rating":0},"RMCP.NS":{"price":112,"delta_price":8,"rating":"AA","delta_rating":1},"YULE.JK":{"price":176,"delta_price":4,"rating":"BBB-","delta_rating":0},"FUTU.OQ":{"price":131,"delta_price":2,"rating":"A","delta_rating":0},"DHOO.BO":{"price":102,"delta_price":6,"rating":"CCC-","delta_rating":1},"078020.KQ":{"price":140,"delta_price":7,"rating":"B","delta_rating":0},"EZL.AX":{"price":179,"delta_price":3,"rating":"CCC","delta_rating":-1},"MCBK.DH":{"price":165,"delta_price":2,"rating":"CCC","delta_rating":-1},"GICH.NS":{"price":128,"delta_price":2,"rating":"CCC","delta_rating":1},"KAM.AX":{"price":180,"delta_price":1,"rating":"AA+","delta_rating":1},"YAMI.BO":{"price":187,"delta_price":3,"rating":"AA","delta_rating":1},"NGI.AX":{"price":170,"delta_price":1,"rating":"BB+","delta_rating":0},"SMCG.NS":{"price":150,"delta_price":4,"rating":"A","delta_rating":0},"IFAC.SI":{"price":100,"delta_price":8,"rating":"A-","delta_rating":0},"340360.KQ":{"price":179,"delta_price":6,"rating":"AA+","delta_rating":1},"CYAN.PSX":{"price":116,"delta_price":10,"rating":"AA+","delta_rating":1},"APT.AX":{"price":152,"delta_price":6,"rating":"BBB+","delta_rating":-1},"0721.HK":{"price":191,"delta_price":4,"rating":"BBB","delta_rating":1},"SUNG.BO":{"price":105,"delta_price":8,"rating":"A","delta_rating":0},"DESG.DH":{"price":114,"delta_price":10,"rating":"A-","delta_rating":0},"ASBK.PSX":{"price":143,"delta_price":4,"rating":"CCC","delta_rating":0},"FILI.DH":{"price":189,"delta_price":2,"rating":"CCC+","delta_rating":1},"IFIL.DH":{"price":171,"delta_price":6,"rating":"A","delta_rating":0},"THEP.SI":{"price":181,"delta_price":1,"rating":"B","delta_rating":1},"UTIQ.BO":{"price":194,"delta_price":1,"rating":"BBB","delta_rating":-1},"6196.T":{"price":146,"delta_price":8,"rating":"B+","delta_rating":0},"WLSF.BO":{"price":103,"delta_price":8,"rating":"AA+","delta_rating":0},"LFIC.NS":{"price":152,"delta_price":3,"rating":"B","delta_rating":-1},"CRYS.DH":{"price":103,"delta_price":7,"rating":"AAA","delta_rating":0},"RPIN.DH":{"price":107,"delta_price":6,"rating":"B+","delta_rating":-1},"4482.T":{"price":196,"delta_price":10,"rating":"BBB","delta_rating":1},"AGMH.OQ":{"price":182,"delta_price":6,"rating":"AAA","delta_rating":-1},"PHCF.OQ":{"price":111,"delta_price":9,"rating":"A-","delta_rating":-1},"CAPD.BO":{"price":170,"delta_price":9,"rating":"BB+","delta_rating":1},"DCFS.NS":{"price":140,"delta_price":4,"rating":"CCC-","delta_rating":0},"EDIE.DH":{"price":196,"delta_price":5,"rating":"CCC+","delta_rating":0},"003580.KS":{"price":149,"delta_price":1,"rating":"B-","delta_rating":-1},"VLSF.NS":{"price":112,"delta_price":10,"rating":"BBB-","delta_rating":0},"BANL.DH":{"price":149,"delta_price":6,"rating":"A+","delta_rating":1},"PRIH.BO":{"price":116,"delta_price":5,"rating":"BBB-","delta_rating":1},"CEYL.CM":{"price":122,"delta_price":1,"rating":"BBB+","delta_rating":1},"DOLA.NS":{"price":186,"delta_price":3,"rating":"B","delta_rating":-1},"TOT.AX":{"price":136,"delta_price":5,"rating":"B-","delta_rating":-1},"REPU.DH":{"price":117,"delta_price":4,"rating":"AAA","delta_rating":0},"PNBS.JK":{"price":133,"delta_price":6,"rating":"B","delta_rating":1},"2263.HK":{"price":103,"delta_price":8,"rating":"CCC","delta_rating":-1},"TIP.AX":{"price":119,"delta_price":3,"rating":"BBB-","delta_rating":1},"ALMI.PSX":{"price":150,"delta_price":9,"rating":"AA+","delta_rating":-1},"PLSI.DH":{"price":125,"delta_price":6,"rating":"BB+","delta_rating":0},"CEEF.BO":{"price":105,"delta_price":3,"rating":"B+","delta_rating":1},"CCP.AX":{"price":182,"delta_price":4,"rating":"B","delta_rating":0},"RZI.AX":{"price":122,"delta_price":9,"rating":"BBB+","delta_rating":1},"3994.T":{"price":127,"delta_price":3,"rating":"AAA","delta_rating":-1},"DW8.AX":{"price":195,"delta_price":7,"rating":"CCC-","delta_rating":0},"AFG.AX":{"price":114,"delta_price":4,"rating":"BB+","delta_rating":-1},"SLIN.DH":{"price":139,"delta_price":9,"rating":"CCC-","delta_rating":1},"2522.T":{"price":107,"delta_price":7,"rating":"BBB-","delta_rating":0},"0428.HK":{"price":115,"delta_price":10,"rating":"B","delta_rating":1},"ABML.NS":{"price":119,"delta_price":8,"rating":"AA-","delta_rating":-1},"PAC.AX":{"price":177,"delta_price":6,"rating":"AA+","delta_rating":-1},"0821.HK":{"price":118,"delta_price":2,"rating":"AA+","delta_rating":-1},"316140.KS":{"price":142,"delta_price":9,"rating":"BBB-","delta_rating":1},"KRNI.DH":{"price":171,"delta_price":4,"rating":"CCC+","delta_rating":1},"GOW.AX":{"price":180,"delta_price":5,"rating":"A-","delta_rating":-1},"MDFL.DH":{"price":179,"delta_price":5,"rating":"A+","delta_rating":0},"019570.KQ":{"price":165,"delta_price":4,"rating":"A+","delta_rating":0},"ACEM.BO":{"price":118,"delta_price":7,"rating":"A+","delta_rating":1},"BAMS.BO":{"price":105,"delta_price":9,"rating":"CCC+","delta_rating":0},"001720.KS":{"price":145,"delta_price":2,"rating":"B+","delta_rating":1},"SRGH.BO":{"price":143,"delta_price":5,"rating":"A","delta_rating":0},"8223.HK":{"price":126,"delta_price":6,"rating":"A","delta_rating":-1},"ARVL.BO":{"price":157,"delta_price":5,"rating":"CCC+","delta_rating":1},"0952.HK":{"price":127,"delta_price":2,"rating":"AA","delta_rating":-1},"VINS.JK":{"price":104,"delta_price":5,"rating":"A+","delta_rating":-1},"QD.N":{"price":178,"delta_price":6,"rating":"A+","delta_rating":1},"0064.HK":{"price":162,"delta_price":5,"rating":"A-","delta_rating":-1},"SBCE.BO":{"price":159,"delta_price":6,"rating":"BB","delta_rating":-1},"0111.HK":{"price":175,"delta_price":4,"rating":"A","delta_rating":1},"AKCL.BO":{"price":117,"delta_price":9,"rating":"B","delta_rating":1},"NORT.DH":{"price":169,"delta_price":3,"rating":"A","delta_rating":1},"8798.T":{"price":101,"delta_price":6,"rating":"A","delta_rating":-1},"SDFC.BO":{"price":137,"delta_price":8,"rating":"BBB","delta_rating":-1},"PILI.DH":{"price":175,"delta_price":9,"rating":"BBB","delta_rating":-1},"8700.T":{"price":137,"delta_price":3,"rating":"AA+","delta_rating":0},"IIFS.NS":{"price":150,"delta_price":10,"rating":"BBB-","delta_rating":0},"EFUA.PSX":{"price":173,"delta_price":7,"rating":"BBB+","delta_rating":0},"LBFL.DH":{"price":149,"delta_price":4,"rating":"AA-","delta_rating":1},"IMJS.JK":{"price":107,"delta_price":6,"rating":"AA+","delta_rating":0},"LKPS.BO":{"price":104,"delta_price":8,"rating":"A+","delta_rating":1},"SICE.BO":{"price":135,"delta_price":1,"rating":"CCC-","delta_rating":1},"NPFH.SI":{"price":120,"delta_price":3,"rating":"BBB","delta_rating":0},"RLIC.NS":{"price":145,"delta_price":1,"rating":"A","delta_rating":0},"METO.BO":{"price":196,"delta_price":4,"rating":"CCC+","delta_rating":-1},"JSGL.BO":{"price":200,"delta_price":1,"rating":"BBB-","delta_rating":0},"GBFL.BO":{"price":188,"delta_price":10,"rating":"BBB","delta_rating":-1},"NCIL.NS":{"price":101,"delta_price":3,"rating":"BB","delta_rating":-1},"FSI.AX":{"price":181,"delta_price":2,"rating":"BBB-","delta_rating":0},"ELCM.PSX":{"price":192,"delta_price":2,"rating":"A","delta_rating":-1},"GMA.AX":{"price":192,"delta_price":4,"rating":"B+","delta_rating":-1},"BINA.JK":{"price":127,"delta_price":5,"rating":"BBB","delta_rating":-1},"FFG.AX":{"price":148,"delta_price":6,"rating":"A","delta_rating":-1},"JONC.BO":{"price":135,"delta_price":2,"rating":"BB","delta_rating":1},"EFUI.PSX":{"price":154,"delta_price":3,"rating":"CCC-","delta_rating":1},"BGIC.DH":{"price":161,"delta_price":3,"rating":"AAA","delta_rating":0},"ADVK.BO":{"price":196,"delta_price":4,"rating":"BBB","delta_rating":-1},"7325.T":{"price":154,"delta_price":3,"rating":"CCC+","delta_rating":-1},"SWAF.BO":{"price":191,"delta_price":10,"rating":"A+","delta_rating":0},"1709.HK":{"price":154,"delta_price":9,"rating":"BBB+","delta_rating":1},"7172.T":{"price":185,"delta_price":8,"rating":"CCC","delta_rating":1},"VISG.BO":{"price":197,"delta_price":7,"rating":"A-","delta_rating":0},"GLCM.BO":{"price":118,"delta_price":4,"rating":"BB","delta_rating":1},"POPL.PSX":{"price":113,"delta_price":1,"rating":"B","delta_rating":1},"IFIN.BO":{"price":178,"delta_price":3,"rating":"BBB+","delta_rating":1},"BIPL.PSX":{"price":150,"delta_price":9,"rating":"BBB","delta_rating":-1},"MONB.BO":{"price":179,"delta_price":8,"rating":"BB","delta_rating":-1},"MLTF.BO":{"price":165,"delta_price":1,"rating":"CCC+","delta_rating":-1},"VSPR.BO":{"price":198,"delta_price":4,"rating":"AA-","delta_rating":0},"KRNA.BO":{"price":189,"delta_price":7,"rating":"AAA","delta_rating":0},"VINT.BO":{"price":103,"delta_price":2,"rating":"BB+","delta_rating":-1},"7157.T":{"price":176,"delta_price":3,"rating":"AA","delta_rating":0},"VCMS.BO":{"price":101,"delta_price":4,"rating":"BBB","delta_rating":-1},"244920.KS":{"price":197,"delta_price":5,"rating":"BB","delta_rating":-1},"SNTC.BO":{"price":140,"delta_price":9,"rating":"CCC+","delta_rating":1},"SNDA.NS":{"price":128,"delta_price":1,"rating":"AAA","delta_rating":0},"RRFC.BO":{"price":164,"delta_price":8,"rating":"CCC+","delta_rating":0},"MARO.BO":{"price":199,"delta_price":10,"rating":"A+","delta_rating":-1},"6028.TWO":{"price":110,"delta_price":4,"rating":"BBB","delta_rating":0},"NYSS.BO":{"price":114,"delta_price":5,"rating":"AAA","delta_rating":-1},"DYNC.BO":{"price":144,"delta_price":4,"rating":"AAA","delta_rating":0},"INNO.BO":{"price":149,"delta_price":5,"rating":"BBB-","delta_rating":1},"0851.HK":{"price":109,"delta_price":9,"rating":"A+","delta_rating":0},"MEIF.BO":{"price":151,"delta_price":2,"rating":"BB+","delta_rating":0},"KRIC.BO":{"price":191,"delta_price":10,"rating":"A-","delta_rating":1},"0335.HK":{"price":184,"delta_price":3,"rating":"AAA","delta_rating":0},"RICA.BO":{"price":117,"delta_price":3,"rating":"B","delta_rating":-1},"PSFS.BO":{"price":155,"delta_price":3,"rating":"A-","delta_rating":1},"GSBF.BO":{"price":117,"delta_price":7,"rating":"BBB-","delta_rating":-1},"KLGC.BO":{"price":181,"delta_price":1,"rating":"A","delta_rating":1},"MUKB.BO":{"price":174,"delta_price":3,"rating":"CCC-","delta_rating":-1},"TERI.BO":{"price":146,"delta_price":8,"rating":"B","delta_rating":-1},"ITER.BO":{"price":109,"delta_price":3,"rating":"BBB","delta_rating":1},"CAPT.NS":{"price":183,"delta_price":2,"rating":"BBB","delta_rating":0},"SATR.NS":{"price":132,"delta_price":9,"rating":"CCC","delta_rating":1},"DFIN.BO":{"price":117,"delta_price":9,"rating":"BB","delta_rating":1},"AFIN.BO":{"price":117,"delta_price":1,"rating":"B-","delta_rating":0},"GSFN.BO":{"price":112,"delta_price":4,"rating":"AA+","delta_rating":-1},"ORAC.BO":{"price":105,"delta_price":3,"rating":"B+","delta_rating":-1},"SITE.BO":{"price":133,"delta_price":9,"rating":"AA+","delta_rating":1},"SGAM.BO":{"price":124,"delta_price":1,"rating":"AA","delta_rating":0},"ARC.AX":{"price":111,"delta_price":6,"rating":"AAA","delta_rating":-1},"PRFN.BO":{"price":109,"delta_price":2,"rating":"B","delta_rating":0},"GOGC.BO":{"price":146,"delta_price":6,"rating":"B-","delta_rating":1},"INDN.BO":{"price":136,"delta_price":9,"rating":"B-","delta_rating":-1},"353190.KQ":{"price":118,"delta_price":5,"rating":"B+","delta_rating":-1},"PHIS.DH":{"price":197,"delta_price":8,"rating":"CCC","delta_rating":1},"ELIX.BO":{"price":181,"delta_price":7,"rating":"CCC","delta_rating":1},"AMIL.BO":{"price":167,"delta_price":3,"rating":"B-","delta_rating":1},"PEIN.DH":{"price":131,"delta_price":8,"rating":"BB+","delta_rating":1},"KHOB.BO":{"price":104,"delta_price":4,"rating":"AAA","delta_rating":-1},"ASGM.NS":{"price":180,"delta_price":9,"rating":"BBB-","delta_rating":-1},"6993.T":{"price":191,"delta_price":2,"rating":"CCC","delta_rating":-1},"TEK.AX":{"price":108,"delta_price":7,"rating":"AAA","delta_rating":-1},"1PRM.PSX":{"price":126,"delta_price":6,"rating":"B+","delta_rating":0},"BNRA.BO":{"price":176,"delta_price":10,"rating":"AA+","delta_rating":0},"0204.HK":{"price":105,"delta_price":10,"rating":"BB","delta_rating":1},"MASF.NS":{"price":172,"delta_price":3,"rating":"BB+","delta_rating":1},"SICL.DH":{"price":111,"delta_price":3,"rating":"BB","delta_rating":1},"8747.T":{"price":106,"delta_price":4,"rating":"B+","delta_rating":0},"MULT.CM":{"price":118,"delta_price":9,"rating":"B+","delta_rating":0},"7342.T":{"price":157,"delta_price":8,"rating":"A-","delta_rating":1},"TAKA.DH":{"price":110,"delta_price":8,"rating":"B","delta_rating":-1},"0033.HK":{"price":163,"delta_price":4,"rating":"A+","delta_rating":-1},"CSLF.BO":{"price":129,"delta_price":7,"rating":"BBB","delta_rating":1},"7326.T":{"price":154,"delta_price":5,"rating":"B+","delta_rating":-1},"BFMD.PSX":{"price":177,"delta_price":7,"rating":"A-","delta_rating":0},"KSH.HNO":{"price":175,"delta_price":8,"rating":"BBB-","delta_rating":1},"APMF.BO":{"price":173,"delta_price":8,"rating":"BBB-","delta_rating":1},"HX.OQ":{"price":191,"delta_price":1,"rating":"AAA","delta_rating":0},"CPIT.BO":{"price":170,"delta_price":2,"rating":"B+","delta_rating":1},"LPPS.JK":{"price":125,"delta_price":5,"rating":"AA-","delta_rating":1},"ICCI.NS":{"price":189,"delta_price":9,"rating":"AA-","delta_rating":0},"0585.HK":{"price":139,"delta_price":7,"rating":"B","delta_rating":1},"AICL.DH":{"price":149,"delta_price":10,"rating":"A-","delta_rating":0},"AIHS.OQ":{"price":113,"delta_price":6,"rating":"B-","delta_rating":0},"AIRAm.BK":{"price":104,"delta_price":7,"rating":"AA-","delta_rating":1},"PIL.PSX":{"price":139,"delta_price":4,"rating":"AA+","delta_rating":0},"UPAm.BK":{"price":142,"delta_price":7,"rating":"BBB-","delta_rating":0},"GEOJ.NS":{"price":170,"delta_price":2,"rating":"BBB","delta_rating":0},"VIX.HM":{"price":183,"delta_price":9,"rating":"A+","delta_rating":-1},"0663.HK":{"price":142,"delta_price":9,"rating":"BBB","delta_rating":1},"0622.HK":{"price":148,"delta_price":2,"rating":"BB+","delta_rating":1},"JSIL.PSX":{"price":195,"delta_price":4,"rating":"CCC-","delta_rating":0},"ANGB.NS":{"price":158,"delta_price":6,"rating":"AA","delta_rating":0},"VNI.HNO":{"price":197,"delta_price":5,"rating":"A","delta_rating":-1},"PFIN.DH":{"price":179,"delta_price":1,"rating":"A","delta_rating":0},"SIV.AX":{"price":186,"delta_price":7,"rating":"BBB-","delta_rating":0},"003530.KS":{"price":115,"delta_price":6,"rating":"CCC+","delta_rating":-1},"GHAN.PSX":{"price":113,"delta_price":10,"rating":"A+","delta_rating":0},"ASIN.PSX":{"price":129,"delta_price":9,"rating":"BBB-","delta_rating":1},"PNC.AX":{"price":130,"delta_price":6,"rating":"CCC","delta_rating":-1},"7175.T":{"price":102,"delta_price":5,"rating":"CCC+","delta_rating":0},"GNGE.NS":{"price":125,"delta_price":10,"rating":"BB+","delta_rating":1},"026970.KQ^K04":{"price":184,"delta_price":2,"rating":"BBB","delta_rating":1},"ADB.MNE":{"price":139,"delta_price":1,"rating":"BBB+","delta_rating":1},"WEIZ.NS":{"price":150,"delta_price":4,"rating":"CCC+","delta_rating":-1},"CPAL.PSX":{"price":157,"delta_price":2,"rating":"AAA","delta_rating":-1},"1563.HK":{"price":102,"delta_price":5,"rating":"CCC+","delta_rating":1},"OEQ.AX":{"price":136,"delta_price":6,"rating":"BB+","delta_rating":0},"IGEX.PK":{"price":197,"delta_price":5,"rating":"AAA","delta_rating":-1},"1226.HK":{"price":179,"delta_price":5,"rating":"AA","delta_rating":1},"KHSE.NS":{"price":189,"delta_price":10,"rating":"BB","delta_rating":1},"XYF.N":{"price":198,"delta_price":2,"rating":"CCC-","delta_rating":-1},"VSG.HNO":{"price":130,"delta_price":10,"rating":"A","delta_rating":-1},"BAID.BO":{"price":188,"delta_price":10,"rating":"AAA","delta_rating":-1},"0030.HK":{"price":154,"delta_price":5,"rating":"AAA","delta_rating":0},"8193.HK":{"price":159,"delta_price":2,"rating":"BB+","delta_rating":0},"AMRP.BO":{"price":155,"delta_price":9,"rating":"AA","delta_rating":-1},"8540.HK":{"price":189,"delta_price":9,"rating":"CCC+","delta_rating":0},"DHAK.DH":{"price":200,"delta_price":5,"rating":"B-","delta_rating":0},"5864.TWO":{"price":130,"delta_price":9,"rating":"AA-","delta_rating":0},"SIVE.BO":{"price":152,"delta_price":3,"rating":"BBB-","delta_rating":0},"UNIS.DH":{"price":141,"delta_price":8,"rating":"A","delta_rating":0},"SHAH.PSX":{"price":178,"delta_price":2,"rating":"A-","delta_rating":1},"TGFL.NS":{"price":149,"delta_price":4,"rating":"AAA","delta_rating":-1},"UCRE.BO":{"price":162,"delta_price":1,"rating":"B","delta_rating":-1},"2324.HK":{"price":191,"delta_price":1,"rating":"AA-","delta_rating":0},"AUH.AX":{"price":193,"delta_price":5,"rating":"A+","delta_rating":1},"DIGG.BO":{"price":196,"delta_price":4,"rating":"BBB","delta_rating":-1},"0430.HK":{"price":110,"delta_price":8,"rating":"AA","delta_rating":1},"000615.SZ":{"price":117,"delta_price":3,"rating":"BB+","delta_rating":1},"AWWA.PSX":{"price":109,"delta_price":4,"rating":"CCC+","delta_rating":-1},"ABEO.CM":{"price":193,"delta_price":2,"rating":"CCC+","delta_rating":-1},"CAPI.BO":{"price":106,"delta_price":6,"rating":"B+","delta_rating":-1},"2680.HK":{"price":153,"delta_price":7,"rating":"BBB","delta_rating":-1},"FINT.KL":{"price":160,"delta_price":1,"rating":"AAA","delta_rating":-1},"LIFE.JK":{"price":188,"delta_price":10,"rating":"A-","delta_rating":0},"SCC.HNO":{"price":132,"delta_price":6,"rating":"AA+","delta_rating":-1},"CAV.AX":{"price":126,"delta_price":4,"rating":"CCC","delta_rating":1},"BLCI.NS":{"price":189,"delta_price":7,"rating":"CCC+","delta_rating":0},"2051.HK":{"price":114,"delta_price":4,"rating":"B-","delta_rating":1},"MTWI.JK":{"price":107,"delta_price":8,"rating":"CCC+","delta_rating":1},"190650.KQ":{"price":179,"delta_price":10,"rating":"B","delta_rating":1},"317320.KQ":{"price":148,"delta_price":9,"rating":"B+","delta_rating":1},"7170.T":{"price":136,"delta_price":3,"rating":"AA-","delta_rating":1},"CBGH.PK":{"price":200,"delta_price":1,"rating":"CCC+","delta_rating":1},"CIIT.PK":{"price":181,"delta_price":7,"rating":"BB","delta_rating":-1},"AAXT.PK":{"price":190,"delta_price":3,"rating":"B","delta_rating":-1},"UNIT.JK":{"price":154,"delta_price":4,"rating":"CCC-","delta_rating":1},"MSC.MNE":{"price":195,"delta_price":6,"rating":"AA+","delta_rating":-1},"SUN.MNE":{"price":181,"delta_price":4,"rating":"B","delta_rating":0}} \ No newline at end of file diff --git a/packages/frontend/public/favicon.ico b/packages/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cf3128aaf3bdc9c30e84f6da5f1498c906c58046 GIT binary patch literal 15406 zcmeHOS#VUx6`drmeB{eXRjN|?312CPFRD^mm=RcDFa{!N*g-5725i74n1W#A5Ns?0 zPN0nARN`Q#Qed#~#%2)4PAM`nQo0OxibTEe&C4?B&TQ6UgQ{+Z>$2f? zbw;fdwJnrI9aR@?+3OZ(xP%wm^581TFtPBt6we;(w^_%Tt?*bfJnm6aw)sT~ZqJs| zDWjxh#R3Vwxmk*)j27=gw*-H`K}x2N71UAf_wKKE##jk`by3=@g5u45LhASJkv6|q zj3?8i>UZm<`n`3f>R-Jix66E}KS3G}?3Fe=`?Ate|2Jm+74y66TR61d zbp6(VH==%}mVdA6&v{(x_Pi~v*ZwQMxf7+&@@J1ny(c8FY&QBkN~*SQK>t6NKoaAj_pU)Cw>Z9H7QCHc39tYS=)s~l} z`i)H}H@dr={@&|u+FnolHD!)USXbGvHIFzK>~o+8?p`v@Z{71JJO|O1!ei4%L_6XB zcF*6KP9ez;^fSY7rQ)K0O7tfvb}{Y8-{Rc&xSjKS8LnNxS&F&T9)UM%-=p{@vu>%E zZKb>BvTe$sEIS_j{vpx_cWl3x7zg|!+i=}vn;3@! zltEdPNeskd%64u-Up?N8lv{TxGnS2YskR}*$Z&45Fesg?e)D~we03CkC)NkB(ME}3 zWTqZ(>c#4J1a^FbZ+EGS&vskT-=e+8m@9wU`y1<9vJRN*jBBnr-jUam_0Po@?_ai+}AilAk$I{nl&Yb(AxfXG+1`Ns^y#u8$gDw;bA}ImawJ zkJRn7R4L!EQd&!{%Wb1ns@~ipo>}9t_PUhp+Wk3L7cWW8d+$j8>*V+I;2&)~6T6 zJL9p4{@ZZ$(7S%$Eq||)-__nGEm!^{#=?yF^5;YTk^K_-cW%GR?}YxFFP?+`(-X?S z`Hy{&5B>LJ|A*uc>0jHQ7xTYj!}FMbMbdGjT3QRPN;%_4#%8epfwn&{=6M<7*U-iD z3ParvKFc$0&>vsP|`M$=Z2PC-mX)&-~ z*vlpJOc`G6ucEC#vE(ZZumjoy?SgBcZ_b4HvdtJdsr8p@8vTDf`5J@4ecH^iVsK5Q zT|{1b{Vk0af2i`X@k-2d9e>pPaf|qD`@bk{Mw1iuosK`u7$`FS3b#G;F)2fA5nQua z42*4@{zR1%ZYQGu*k2(2GWR;%Z$!qQ;kwkJeSaF!R#g4Q!=vI)y(fa4nDKWQ!`;ga z<6-;_8&dH%_W<{E|8c+fU)CNly#J(L25SGwaqhkU)cauSLGQhCR(G%r8IgtphQ4 zRhwv=GGM1CjVZ3J-n5Z(jLAR$5wQ>xu{q-W@q1vx$nSXF&JkWW>ZZG11>U{j26Dl9 zmEhihw(p$xN#Lv4HvE5sB?~ek8yJX%n20S_AM%C||K{~{*Y`c?uJO>tdhmqDa5r#; zaFH+SKzkAEDc*=+B!@xfAz2EK3LcJW+DT1!+po`o1 zJ@A-g>wr8NFc1qdrQ{GJvFdT)o#SHZJqJF899TI&yVd;{dGA5!%miewa4qszX1LvS+lDFkWO^ESGGX$(3`}5i2p%FVR1l zb3Dbc>^-hLa*pKg3e%kG;xpg%mQCEHzh0!2p`gi4Hm5)?@ zChlBi`-NfNa+DMxcDxR5jPLAyAa-(jMZi)xZHyEmA4a~jcNx_`lqu$Sw8JvR&UFs%nKIc`8xXN0e4nBZ;~pL$8l9-8n+L?O3cn}YOPai z6a0Gu{3YNa3c*7LHoYMAAH6F#5AKy9az`agXRACT@hc7$*bDK_zx8Fgk@Huncx#)K zta)0lfkUO;u^c(gQnY2PUMyAHUzLhKY!+j~Dk(xg$T72jamD~^5!O>HCV)+0&5Q5n zm2PK0F6HZ%N#lvb(%ICg_*ZhT)ySV33(`z`hYqe`@9*FGiZq`)t$2{ol?zh6XNO#0 zG+lA#%GS9bUGsMiQHRyOInV5k1ji=mlW5??f z%DXIG?d^)YZ4U;(3wAVEMGb`H$4_^-cr{R+irM)t!cxZCbq01Mf0^GP4-W9P!zEjQ?HY&kN)4XsDB> zT-XL|rqB9Ej-OmOIq`d@e;fWTMMTcbDB>dLr&$)5dH-7AZ-6b z`Vae`A^V9P@7R4OpNH%xa{YP`?Z>dKzk?P(Vz7oow)g?Lw9uDdAbwZ@o_(A!&&Bv* zu;Ev81h~qU&XW2McS?Ijxyl2!1q_w*FUMI4135y*WrG$!bnC-ez#GVEQ0J|PHCnK~ z*6sWg;>u|z_Q8yw*bv+E9AEWoFG=05KTGxN8>Q^oOyqrV-oe_JsQ8od56)unOvYe{ ze`r6-HqZwHalRipt+JI_62Ms%W5$^9H*G&={CpDFa|aE6`?}%f9t2~d?(CCwnfMt$ zzbq}-*HHI^MgJP3z7wl{*7t7wI3s%Y)1LUT7ah?3OPu&k`JX6wHEw;^_EWie9rnI| zm(Y1De%AZPC79M7XJB@rF>PEI;$K2KR`camz(ez9K_x7Cyf?=(r5hEIPkoPx{^3Ut^1?- z6U6}~!C$c+&pdFvd-GQ{jc+2oo~8Rd