From 831d57a8a0b01242b97cf3737bebecd47564e2be Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Thu, 17 Sep 2026 07:07:05 +0200 Subject: [PATCH] Refactored UI and compose file --- .../Extensions/Security.cs | 2 +- PostFundManagement.ConsoleUI/.env.example | 11 +- PostFundManagement.ConsoleUI/.gitignore | 8 - PostFundManagement.ConsoleUI/README.md | 20 + PostFundManagement.ConsoleUI/bun.lock | 4287 +++-------------- .../dist/assets/index-BVskQUfz.css | 1 + .../dist/assets/index-COrccDuP.js | 399 ++ PostFundManagement.ConsoleUI/dist/config.json | 16 + .../dist/env-config.js | 4 + PostFundManagement.ConsoleUI/dist/favicon.svg | 106 + PostFundManagement.ConsoleUI/dist/index.html | 27 + .../docker-compose.yml | 19 - .../docker-entrypoint.sh | 98 + PostFundManagement.ConsoleUI/favicon.svg | 106 + PostFundManagement.ConsoleUI/index.html | 16 +- PostFundManagement.ConsoleUI/metadata.json | 2 +- PostFundManagement.ConsoleUI/nginx.conf | 18 +- PostFundManagement.ConsoleUI/package.json | 12 +- .../public/config.json | 16 + .../public/env-config.js | 4 + .../public/favicon.svg | 106 + PostFundManagement.ConsoleUI/src/App.tsx | 64 +- .../src/auth/AuthProvider.tsx | 455 +- PostFundManagement.ConsoleUI/src/auth/jwt.ts | 36 +- .../src/components/layout/AppLayout.tsx | 554 ++- .../src/components/ui/BrandLogo.tsx | 188 + .../src/components/ui/Modal.tsx | 108 +- .../src/components/ui/Toast.tsx | 113 +- PostFundManagement.ConsoleUI/src/config.ts | 373 +- PostFundManagement.ConsoleUI/src/index.css | 165 +- .../src/lib/queryClient.ts | 12 +- PostFundManagement.ConsoleUI/src/main.tsx | 13 +- .../src/pages/ExecutiveDashboard.tsx | 1255 ++--- .../src/pages/GovernancePage.tsx | 1777 ++++--- .../src/pages/GrantsPage.tsx | 2037 ++++---- .../src/pages/LandingPage.tsx | 529 +- .../src/pages/MonitoringPage.tsx | 1651 ++++--- .../src/pages/ProjectsPage.tsx | 1504 +++--- .../src/pages/SettingsPage.tsx | 1408 ++++-- .../src/services/api.ts | 885 ++-- .../src/services/httpClient.ts | 32 +- .../src/services/toolsService.ts | 332 +- PostFundManagement.ConsoleUI/src/types.ts | 955 ++-- .../src/vite-env.d.ts | 12 +- PostFundManagement.ConsoleUI/vite.config.ts | 33 +- PostFundManagement.ConsoleUI/yarn.lock | 24 +- docker-compose.yml | 13 +- 47 files changed, 9718 insertions(+), 10088 deletions(-) delete mode 100644 PostFundManagement.ConsoleUI/.gitignore create mode 100644 PostFundManagement.ConsoleUI/README.md create mode 100644 PostFundManagement.ConsoleUI/dist/assets/index-BVskQUfz.css create mode 100644 PostFundManagement.ConsoleUI/dist/assets/index-COrccDuP.js create mode 100644 PostFundManagement.ConsoleUI/dist/config.json create mode 100644 PostFundManagement.ConsoleUI/dist/env-config.js create mode 100644 PostFundManagement.ConsoleUI/dist/favicon.svg create mode 100644 PostFundManagement.ConsoleUI/dist/index.html delete mode 100644 PostFundManagement.ConsoleUI/docker-compose.yml create mode 100644 PostFundManagement.ConsoleUI/favicon.svg create mode 100644 PostFundManagement.ConsoleUI/public/config.json create mode 100644 PostFundManagement.ConsoleUI/public/env-config.js create mode 100644 PostFundManagement.ConsoleUI/public/favicon.svg create mode 100644 PostFundManagement.ConsoleUI/src/components/ui/BrandLogo.tsx diff --git a/PostFundManagement.Application/Extensions/Security.cs b/PostFundManagement.Application/Extensions/Security.cs index fac002c..43dec7e 100644 --- a/PostFundManagement.Application/Extensions/Security.cs +++ b/PostFundManagement.Application/Extensions/Security.cs @@ -139,7 +139,7 @@ public static class Security { options.MapInboundClaims = false; options.Authority = authOptions.Authority; - options.Audience = authOptions.Audience; + options.Audience = authOptions.Audience; options.TokenValidationParameters = new TokenValidationParameters { diff --git a/PostFundManagement.ConsoleUI/.env.example b/PostFundManagement.ConsoleUI/.env.example index ea2ec85..feed193 100644 --- a/PostFundManagement.ConsoleUI/.env.example +++ b/PostFundManagement.ConsoleUI/.env.example @@ -10,9 +10,14 @@ APP_URL="MY_APP_URL" # OIDC SecuritySettings VITE_OIDC_AUTHORITY="https://sts.security.khongisa.co.za" -VITE_OIDC_AUDIENCE="pfm-api-dev" -VITE_OIDC_CLIENT_ID="pfm-scalar-dev" -VITE_OIDC_CLIENT_SECRET="secret_71f88570a46eb22eb5270b47f69e3332c84d8db85d008f0276cb7431c8872d27" +VITE_OIDC_AUDIENCE="change-me" +VITE_OIDC_CLIENT_ID="change-me" +VITE_OIDC_CLIENT_SECRET="change-me" # PFM Backend API Base URL VITE_API_BASE_URL="https://api.ifri.khongisa.co.za/" + +# HasherSettings for HashIds compatibility with backend pfm-api +VITE_HASHER_MIN_LENGTH="11" +VITE_HASHER_SALT="change-me" + \ No newline at end of file diff --git a/PostFundManagement.ConsoleUI/.gitignore b/PostFundManagement.ConsoleUI/.gitignore deleted file mode 100644 index 5a86d2a..0000000 --- a/PostFundManagement.ConsoleUI/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules/ -build/ -dist/ -coverage/ -.DS_Store -*.log -.env* -!.env.example diff --git a/PostFundManagement.ConsoleUI/README.md b/PostFundManagement.ConsoleUI/README.md new file mode 100644 index 0000000..b38585d --- /dev/null +++ b/PostFundManagement.ConsoleUI/README.md @@ -0,0 +1,20 @@ +
+GHBanner +
+ +# Run and deploy your AI Studio app + +This contains everything you need to run your app locally. + +View your app in AI Studio: https://ai.studio/apps/b2519d4f-e797-44fe-be2e-0d30bec6814d + +## Run Locally + +**Prerequisites:** Node.js + + +1. Install dependencies: + `npm install` +2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key +3. Run the app: + `npm run dev` diff --git a/PostFundManagement.ConsoleUI/bun.lock b/PostFundManagement.ConsoleUI/bun.lock index 6ca99d7..98b5beb 100644 --- a/PostFundManagement.ConsoleUI/bun.lock +++ b/PostFundManagement.ConsoleUI/bun.lock @@ -13,6 +13,7 @@ "axios": "^1.20.0", "dotenv": "^17.2.3", "express": "^4.21.2", + "hashids": "^2.3.0", "lucide-react": "^0.546.0", "motion": "^12.23.24", "oidc-client-ts": "^3.5.0", @@ -20,3589 +21,729 @@ "react-dom": "^19.0.1", "react-hook-form": "^7.87.0", "react-router-dom": "^7.18.3", + "tailwindcss": "^4.1.14", "vite": "^6.2.3", - "zod": "^4.5.4" + "zod": "^4.5.4", }, "devDependencies": { "@types/express": "^4.17.21", "@types/node": "^22.14.0", "autoprefixer": "^10.4.21", "esbuild": "^0.25.0", - "tailwindcss": "^4.1.14", "tsx": "^4.21.0", "typescript": "~5.8.2", - "vite": "^6.2.3" - } - } + }, + }, }, "packages": { - "@babel/code-frame": [ - "@babel/code-frame@7.29.7", - "", - { - "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - } - }, - "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==" - ], - - "@babel/compat-data": [ - "@babel/compat-data@7.29.7", - "", - {}, - "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==" - ], - - "@babel/core": [ - "@babel/core@7.29.7", - "", - { - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helpers": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==" - ], - - "@babel/generator": [ - "@babel/generator@7.29.8", - "", - { - "dependencies": { - "@babel/parser": "^7.29.8", - "@babel/types": "^7.29.8", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - } - }, - "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==" - ], - - "@babel/helper-compilation-targets": [ - "@babel/helper-compilation-targets@7.29.7", - "", - { - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==" - ], - - "@babel/helper-globals": [ - "@babel/helper-globals@7.29.7", - "", - {}, - "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==" - ], - - "@babel/helper-module-imports": [ - "@babel/helper-module-imports@7.29.7", - "", - { - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - } - }, - "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==" - ], - - "@babel/helper-module-transforms": [ - "@babel/helper-module-transforms@7.29.7", - "", - { - "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "peerDependencies": { "@babel/core": "^7.0.0" } - }, - "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==" - ], - - "@babel/helper-plugin-utils": [ - "@babel/helper-plugin-utils@7.29.7", - "", - {}, - "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==" - ], - - "@babel/helper-string-parser": [ - "@babel/helper-string-parser@7.29.7", - "", - {}, - "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==" - ], - - "@babel/helper-validator-identifier": [ - "@babel/helper-validator-identifier@7.29.7", - "", - {}, - "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==" - ], - - "@babel/helper-validator-option": [ - "@babel/helper-validator-option@7.29.7", - "", - {}, - "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==" - ], - - "@babel/helpers": [ - "@babel/helpers@7.29.7", - "", - { - "dependencies": { - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7" - } - }, - "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==" - ], - - "@babel/parser": [ - "@babel/parser@7.29.8", - "", - { - "dependencies": { "@babel/types": "^7.29.8" }, - "bin": "./bin/babel-parser.js" - }, - "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==" - ], - - "@babel/plugin-transform-react-jsx-self": [ - "@babel/plugin-transform-react-jsx-self@7.29.7", - "", - { - "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, - "peerDependencies": { "@babel/core": "^7.0.0-0" } - }, - "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==" - ], - - "@babel/plugin-transform-react-jsx-source": [ - "@babel/plugin-transform-react-jsx-source@7.29.7", - "", - { - "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, - "peerDependencies": { "@babel/core": "^7.0.0-0" } - }, - "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==" - ], - - "@babel/template": [ - "@babel/template@7.29.7", - "", - { - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7" - } - }, - "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==" - ], - - "@babel/traverse": [ - "@babel/traverse@7.29.8", - "", - { - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.8", - "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.8", - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.8", - "debug": "^4.3.1" - } - }, - "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==" - ], - - "@babel/types": [ - "@babel/types@7.29.8", - "", - { - "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" - } - }, - "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==" - ], - - "@esbuild/aix-ppc64": [ - "@esbuild/aix-ppc64@0.25.12", - "", - { - "os": "aix", - "cpu": "ppc64" - }, - "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==" - ], - - "@esbuild/android-arm": [ - "@esbuild/android-arm@0.25.12", - "", - { - "os": "android", - "cpu": "arm" - }, - "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==" - ], - - "@esbuild/android-arm64": [ - "@esbuild/android-arm64@0.25.12", - "", - { - "os": "android", - "cpu": "arm64" - }, - "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==" - ], - - "@esbuild/android-x64": [ - "@esbuild/android-x64@0.25.12", - "", - { - "os": "android", - "cpu": "x64" - }, - "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==" - ], - - "@esbuild/darwin-arm64": [ - "@esbuild/darwin-arm64@0.25.12", - "", - { - "os": "darwin", - "cpu": "arm64" - }, - "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==" - ], - - "@esbuild/darwin-x64": [ - "@esbuild/darwin-x64@0.25.12", - "", - { - "os": "darwin", - "cpu": "x64" - }, - "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==" - ], - - "@esbuild/freebsd-arm64": [ - "@esbuild/freebsd-arm64@0.25.12", - "", - { - "os": "freebsd", - "cpu": "arm64" - }, - "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==" - ], - - "@esbuild/freebsd-x64": [ - "@esbuild/freebsd-x64@0.25.12", - "", - { - "os": "freebsd", - "cpu": "x64" - }, - "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==" - ], - - "@esbuild/linux-arm": [ - "@esbuild/linux-arm@0.25.12", - "", - { - "os": "linux", - "cpu": "arm" - }, - "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==" - ], - - "@esbuild/linux-arm64": [ - "@esbuild/linux-arm64@0.25.12", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==" - ], - - "@esbuild/linux-ia32": [ - "@esbuild/linux-ia32@0.25.12", - "", - { - "os": "linux", - "cpu": "ia32" - }, - "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==" - ], - - "@esbuild/linux-loong64": [ - "@esbuild/linux-loong64@0.25.12", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==" - ], - - "@esbuild/linux-mips64el": [ - "@esbuild/linux-mips64el@0.25.12", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==" - ], - - "@esbuild/linux-ppc64": [ - "@esbuild/linux-ppc64@0.25.12", - "", - { - "os": "linux", - "cpu": "ppc64" - }, - "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==" - ], - - "@esbuild/linux-riscv64": [ - "@esbuild/linux-riscv64@0.25.12", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==" - ], - - "@esbuild/linux-s390x": [ - "@esbuild/linux-s390x@0.25.12", - "", - { - "os": "linux", - "cpu": "s390x" - }, - "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==" - ], - - "@esbuild/linux-x64": [ - "@esbuild/linux-x64@0.25.12", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==" - ], - - "@esbuild/netbsd-arm64": [ - "@esbuild/netbsd-arm64@0.25.12", - "", - { - "os": "none", - "cpu": "arm64" - }, - "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==" - ], - - "@esbuild/netbsd-x64": [ - "@esbuild/netbsd-x64@0.25.12", - "", - { - "os": "none", - "cpu": "x64" - }, - "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==" - ], - - "@esbuild/openbsd-arm64": [ - "@esbuild/openbsd-arm64@0.25.12", - "", - { - "os": "openbsd", - "cpu": "arm64" - }, - "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==" - ], - - "@esbuild/openbsd-x64": [ - "@esbuild/openbsd-x64@0.25.12", - "", - { - "os": "openbsd", - "cpu": "x64" - }, - "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==" - ], - - "@esbuild/openharmony-arm64": [ - "@esbuild/openharmony-arm64@0.25.12", - "", - { - "os": "none", - "cpu": "arm64" - }, - "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==" - ], - - "@esbuild/sunos-x64": [ - "@esbuild/sunos-x64@0.25.12", - "", - { - "os": "sunos", - "cpu": "x64" - }, - "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==" - ], - - "@esbuild/win32-arm64": [ - "@esbuild/win32-arm64@0.25.12", - "", - { - "os": "win32", - "cpu": "arm64" - }, - "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==" - ], - - "@esbuild/win32-ia32": [ - "@esbuild/win32-ia32@0.25.12", - "", - { - "os": "win32", - "cpu": "ia32" - }, - "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==" - ], - - "@esbuild/win32-x64": [ - "@esbuild/win32-x64@0.25.12", - "", - { - "os": "win32", - "cpu": "x64" - }, - "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==" - ], - - "@google/genai": [ - "@google/genai@2.21.0", - "", - { - "dependencies": { - "google-auth-library": "^10.3.0", - "p-retry": "^4.6.2", - "protobufjs": "^7.5.4", - "ws": "^8.18.0" - }, - "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, - "optionalPeers": [ "@modelcontextprotocol/sdk" ] - }, - "sha512-+PDtco2/Z0ONdzCGekCoCT+O1VJS9xJQNN4XzQpXG/t3El/SWWMkCWlFRO1KmivOHPa4Q0VjUYu1HBKCZ/v33Q==" - ], - - "@hookform/resolvers": [ - "@hookform/resolvers@5.9.1", - "", - { - "dependencies": { "@standard-schema/utils": "^0.3.0" }, - "peerDependencies": { - "@sinclair/typebox": ">=0.25.24", - "@standard-schema/spec": "^1.0.0", - "@typeschema/main": ">=0.13.7", - "@vinejs/vine": "^2.0.0 || ^3.0.0 || ^4.0.0", - "ajv": "^8.12.0", - "ajv-errors": "^3.0.0", - "ajv-formats": "^2.1.1", - "arktype": "^2.0.0", - "ata-validator": "^1.2.0", - "class-transformer": ">=0.4.0", - "class-validator": ">=0.12.0", - "computed-types": "^1.0.0", - "effect": "^3.10.3", - "fluentvalidation-ts": "^3.0.0", - "fp-ts": "^2.7.0", - "io-ts": "^2.0.0", - "joi": "^17.0.0 || ^18.0.0", - "nope-validator": ">=0.12.0", - "react-hook-form": "^7.55.0", - "superstruct": ">=0.12.0", - "typanion": "^3.3.2", - "valibot": ">=0.31.0 || ^1.0.0-beta.4 || ^1.0.0-rc", - "vest": ">=6.0.0", - "yup": "^1.0.0", - "zod": "^3.25.0 || ^4.0.0" - }, - "optionalPeers": [ "@sinclair/typebox", "@standard-schema/spec", "@typeschema/main", "@vinejs/vine", "ajv", "ajv-errors", "ajv-formats", "arktype", "ata-validator", "class-transformer", "class-validator", "computed-types", "effect", "fluentvalidation-ts", "fp-ts", "io-ts", "joi", "nope-validator", "superstruct", "typanion", "valibot", "vest", "yup", "zod" ] - }, - "sha512-7b7vsbraJxKgjVSA1Nur9tLwj539WGJUBLA7QNvXnFoT2pM5Z7G+6rlukk4B2/QrTZy6huRtH6wKeESPKuIr6w==" - ], - - "@jridgewell/gen-mapping": [ - "@jridgewell/gen-mapping@0.3.13", - "", - { - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==" - ], - - "@jridgewell/remapping": [ - "@jridgewell/remapping@2.3.5", - "", - { - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==" - ], - - "@jridgewell/resolve-uri": [ - "@jridgewell/resolve-uri@3.1.2", - "", - {}, - "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" - ], - - "@jridgewell/sourcemap-codec": [ - "@jridgewell/sourcemap-codec@1.6.0", - "", - {}, - "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==" - ], - - "@jridgewell/trace-mapping": [ - "@jridgewell/trace-mapping@0.3.31", - "", - { - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==" - ], - - "@napi-rs/lzma-linux-x64-gnu": [ - "@napi-rs/lzma-linux-x64-gnu@1.5.1", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==" - ], - - "@protobufjs/aspromise": [ - "@protobufjs/aspromise@1.1.2", - "", - {}, - "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - ], - - "@protobufjs/base64": [ - "@protobufjs/base64@1.1.2", - "", - {}, - "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - ], - - "@protobufjs/codegen": [ - "@protobufjs/codegen@2.0.5", - "", - {}, - "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==" - ], - - "@protobufjs/eventemitter": [ - "@protobufjs/eventemitter@1.1.1", - "", - {}, - "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==" - ], - - "@protobufjs/fetch": [ - "@protobufjs/fetch@1.1.1", - "", - { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, - "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==" - ], - - "@protobufjs/float": [ - "@protobufjs/float@1.0.2", - "", - {}, - "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - ], - - "@protobufjs/path": [ - "@protobufjs/path@1.1.2", - "", - {}, - "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - ], - - "@protobufjs/pool": [ - "@protobufjs/pool@1.1.0", - "", - {}, - "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - ], - - "@protobufjs/utf8": [ - "@protobufjs/utf8@1.1.2", - "", - {}, - "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==" - ], - - "@rolldown/pluginutils": [ - "@rolldown/pluginutils@1.0.0-rc.3", - "", - {}, - "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==" - ], - - "@rollup/rollup-android-arm-eabi": [ - "@rollup/rollup-android-arm-eabi@4.63.1", - "", - { - "os": "android", - "cpu": "arm" - }, - "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==" - ], - - "@rollup/rollup-android-arm64": [ - "@rollup/rollup-android-arm64@4.63.1", - "", - { - "os": "android", - "cpu": "arm64" - }, - "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==" - ], - - "@rollup/rollup-darwin-arm64": [ - "@rollup/rollup-darwin-arm64@4.63.1", - "", - { - "os": "darwin", - "cpu": "arm64" - }, - "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==" - ], - - "@rollup/rollup-darwin-x64": [ - "@rollup/rollup-darwin-x64@4.63.1", - "", - { - "os": "darwin", - "cpu": "x64" - }, - "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==" - ], - - "@rollup/rollup-freebsd-arm64": [ - "@rollup/rollup-freebsd-arm64@4.63.1", - "", - { - "os": "freebsd", - "cpu": "arm64" - }, - "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==" - ], - - "@rollup/rollup-freebsd-x64": [ - "@rollup/rollup-freebsd-x64@4.63.1", - "", - { - "os": "freebsd", - "cpu": "x64" - }, - "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==" - ], - - "@rollup/rollup-linux-arm-gnueabihf": [ - "@rollup/rollup-linux-arm-gnueabihf@4.63.1", - "", - { - "os": "linux", - "cpu": "arm" - }, - "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==" - ], - - "@rollup/rollup-linux-arm-musleabihf": [ - "@rollup/rollup-linux-arm-musleabihf@4.63.1", - "", - { - "os": "linux", - "cpu": "arm" - }, - "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==" - ], - - "@rollup/rollup-linux-arm64-gnu": [ - "@rollup/rollup-linux-arm64-gnu@4.63.1", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==" - ], - - "@rollup/rollup-linux-arm64-musl": [ - "@rollup/rollup-linux-arm64-musl@4.63.1", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==" - ], - - "@rollup/rollup-linux-loong64-gnu": [ - "@rollup/rollup-linux-loong64-gnu@4.63.1", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==" - ], - - "@rollup/rollup-linux-loong64-musl": [ - "@rollup/rollup-linux-loong64-musl@4.63.1", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==" - ], - - "@rollup/rollup-linux-ppc64-gnu": [ - "@rollup/rollup-linux-ppc64-gnu@4.63.1", - "", - { - "os": "linux", - "cpu": "ppc64" - }, - "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==" - ], - - "@rollup/rollup-linux-ppc64-musl": [ - "@rollup/rollup-linux-ppc64-musl@4.63.1", - "", - { - "os": "linux", - "cpu": "ppc64" - }, - "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==" - ], - - "@rollup/rollup-linux-riscv64-gnu": [ - "@rollup/rollup-linux-riscv64-gnu@4.63.1", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==" - ], - - "@rollup/rollup-linux-riscv64-musl": [ - "@rollup/rollup-linux-riscv64-musl@4.63.1", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==" - ], - - "@rollup/rollup-linux-s390x-gnu": [ - "@rollup/rollup-linux-s390x-gnu@4.63.1", - "", - { - "os": "linux", - "cpu": "s390x" - }, - "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==" - ], - - "@rollup/rollup-linux-x64-gnu": [ - "@rollup/rollup-linux-x64-gnu@4.63.1", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==" - ], - - "@rollup/rollup-linux-x64-musl": [ - "@rollup/rollup-linux-x64-musl@4.63.1", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==" - ], - - "@rollup/rollup-openbsd-x64": [ - "@rollup/rollup-openbsd-x64@4.63.1", - "", - { - "os": "openbsd", - "cpu": "x64" - }, - "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==" - ], - - "@rollup/rollup-openharmony-arm64": [ - "@rollup/rollup-openharmony-arm64@4.63.1", - "", - { - "os": "none", - "cpu": "arm64" - }, - "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==" - ], - - "@rollup/rollup-win32-arm64-msvc": [ - "@rollup/rollup-win32-arm64-msvc@4.63.1", - "", - { - "os": "win32", - "cpu": "arm64" - }, - "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==" - ], - - "@rollup/rollup-win32-ia32-msvc": [ - "@rollup/rollup-win32-ia32-msvc@4.63.1", - "", - { - "os": "win32", - "cpu": "ia32" - }, - "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==" - ], - - "@rollup/rollup-win32-x64-gnu": [ - "@rollup/rollup-win32-x64-gnu@4.63.1", - "", - { - "os": "win32", - "cpu": "x64" - }, - "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==" - ], - - "@rollup/rollup-win32-x64-msvc": [ - "@rollup/rollup-win32-x64-msvc@4.63.1", - "", - { - "os": "win32", - "cpu": "x64" - }, - "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==" - ], - - "@standard-schema/utils": [ - "@standard-schema/utils@0.3.0", - "", - {}, - "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==" - ], - - "@tailwindcss/node": [ - "@tailwindcss/node@4.3.3", - "", - { - "dependencies": { - "@jridgewell/remapping": "^2.3.5", - "enhanced-resolve": "^5.24.1", - "jiti": "^2.7.0", - "lightningcss": "1.32.0", - "magic-string": "^0.30.21", - "source-map-js": "^1.2.1", - "tailwindcss": "4.3.3" - } - }, - "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==" - ], - - "@tailwindcss/oxide": [ - "@tailwindcss/oxide@4.3.3", - "", - { - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.3.3", - "@tailwindcss/oxide-darwin-arm64": "4.3.3", - "@tailwindcss/oxide-darwin-x64": "4.3.3", - "@tailwindcss/oxide-freebsd-x64": "4.3.3", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", - "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", - "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", - "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", - "@tailwindcss/oxide-linux-x64-musl": "4.3.3", - "@tailwindcss/oxide-wasm32-wasi": "4.3.3", - "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", - "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" - } - }, - "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==" - ], - - "@tailwindcss/oxide-android-arm64": [ - "@tailwindcss/oxide-android-arm64@4.3.3", - "", - { - "os": "android", - "cpu": "arm64" - }, - "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==" - ], - - "@tailwindcss/oxide-darwin-arm64": [ - "@tailwindcss/oxide-darwin-arm64@4.3.3", - "", - { - "os": "darwin", - "cpu": "arm64" - }, - "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==" - ], - - "@tailwindcss/oxide-darwin-x64": [ - "@tailwindcss/oxide-darwin-x64@4.3.3", - "", - { - "os": "darwin", - "cpu": "x64" - }, - "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==" - ], - - "@tailwindcss/oxide-freebsd-x64": [ - "@tailwindcss/oxide-freebsd-x64@4.3.3", - "", - { - "os": "freebsd", - "cpu": "x64" - }, - "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==" - ], - - "@tailwindcss/oxide-linux-arm-gnueabihf": [ - "@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3", - "", - { - "os": "linux", - "cpu": "arm" - }, - "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==" - ], - - "@tailwindcss/oxide-linux-arm64-gnu": [ - "@tailwindcss/oxide-linux-arm64-gnu@4.3.3", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==" - ], - - "@tailwindcss/oxide-linux-arm64-musl": [ - "@tailwindcss/oxide-linux-arm64-musl@4.3.3", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==" - ], - - "@tailwindcss/oxide-linux-x64-gnu": [ - "@tailwindcss/oxide-linux-x64-gnu@4.3.3", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==" - ], - - "@tailwindcss/oxide-linux-x64-musl": [ - "@tailwindcss/oxide-linux-x64-musl@4.3.3", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==" - ], - - "@tailwindcss/oxide-wasm32-wasi": [ - "@tailwindcss/oxide-wasm32-wasi@4.3.3", - "", - { - "dependencies": { - "@emnapi/core": "^1.11.1", - "@emnapi/runtime": "^1.11.1", - "@emnapi/wasi-threads": "^1.2.2", - "@napi-rs/wasm-runtime": "^1.1.4", - "@tybys/wasm-util": "^0.10.2", - "tslib": "^2.8.1" - }, - "cpu": "none" - }, - "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==" - ], - - "@tailwindcss/oxide-win32-arm64-msvc": [ - "@tailwindcss/oxide-win32-arm64-msvc@4.3.3", - "", - { - "os": "win32", - "cpu": "arm64" - }, - "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==" - ], - - "@tailwindcss/oxide-win32-x64-msvc": [ - "@tailwindcss/oxide-win32-x64-msvc@4.3.3", - "", - { - "os": "win32", - "cpu": "x64" - }, - "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==" - ], - - "@tailwindcss/vite": [ - "@tailwindcss/vite@4.3.3", - "", - { - "dependencies": { - "@tailwindcss/node": "4.3.3", - "@tailwindcss/oxide": "4.3.3", - "tailwindcss": "4.3.3" - }, - "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } - }, - "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==" - ], - - "@tanstack/query-core": [ - "@tanstack/query-core@5.102.8", - "", - {}, - "sha512-ZNjkJ33CqvPNec/6lZBnHqLc3EVGPZ9ySLhYahU9TcuRFdmwXewuj0c4hwSWcGHqEUwcSrKeZ+oGcvPBqXcQcg==" - ], - - "@tanstack/react-query": [ - "@tanstack/react-query@5.102.8", - "", - { - "dependencies": { "@tanstack/query-core": "5.102.8" }, - "peerDependencies": { "react": "^18 || ^19" } - }, - "sha512-TYBea4OuXWD7MhaSHq069TWbFe7rcwWN6kzT7JF0OKi1K6c1gTv2IzD6A6ExJsCMozdkqBWeuIUZmu4KQg0O5A==" - ], - - "@types/babel__core": [ - "@types/babel__core@7.20.5", - "", - { - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==" - ], - - "@types/babel__generator": [ - "@types/babel__generator@7.27.0", - "", - { "dependencies": { "@babel/types": "^7.0.0" } }, - "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==" - ], - - "@types/babel__template": [ - "@types/babel__template@7.4.4", - "", - { - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==" - ], - - "@types/babel__traverse": [ - "@types/babel__traverse@7.28.0", - "", - { "dependencies": { "@babel/types": "^7.28.2" } }, - "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==" - ], - - "@types/body-parser": [ - "@types/body-parser@1.19.6", - "", - { - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==" - ], - - "@types/connect": [ - "@types/connect@3.4.38", - "", - { "dependencies": { "@types/node": "*" } }, - "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==" - ], - - "@types/estree": [ - "@types/estree@1.0.9", - "", - {}, - "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==" - ], - - "@types/express": [ - "@types/express@4.17.25", - "", - { - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "^1" - } - }, - "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==" - ], - - "@types/express-serve-static-core": [ - "@types/express-serve-static-core@4.19.9", - "", - { - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==" - ], - - "@types/http-errors": [ - "@types/http-errors@2.0.5", - "", - {}, - "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==" - ], - - "@types/mime": [ - "@types/mime@1.3.5", - "", - {}, - "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - ], - - "@types/node": [ - "@types/node@22.20.1", - "", - { "dependencies": { "undici-types": "~6.21.0" } }, - "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==" - ], - - "@types/qs": [ - "@types/qs@6.15.1", - "", - {}, - "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==" - ], - - "@types/range-parser": [ - "@types/range-parser@1.2.7", - "", - {}, - "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" - ], - - "@types/retry": [ - "@types/retry@0.12.0", - "", - {}, - "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - ], - - "@types/send": [ - "@types/send@1.2.1", - "", - { "dependencies": { "@types/node": "*" } }, - "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==" - ], - - "@types/serve-static": [ - "@types/serve-static@1.15.10", - "", - { - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "<1" - } - }, - "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==" - ], - - "@vitejs/plugin-react": [ - "@vitejs/plugin-react@5.2.0", - "", - { - "dependencies": { - "@babel/core": "^7.29.0", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-rc.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.18.0" - }, - "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } - }, - "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==" - ], - - "accepts": [ - "accepts@1.3.8", - "", - { - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - ], - - "agent-base": [ - "agent-base@6.0.2", - "", - { "dependencies": { "debug": "4" } }, - "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - ], - - "array-flatten": [ - "array-flatten@1.1.1", - "", - {}, - "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - ], - - "asynckit": [ - "asynckit@0.4.0", - "", - {}, - "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - ], - - "autoprefixer": [ - "autoprefixer@10.5.5", - "", - { - "dependencies": { - "browserslist": "^4.28.9", - "caniuse-lite": "^1.0.30001810", - "fraction.js": "^5.3.4", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { "postcss": "^8.1.0" }, - "bin": { "autoprefixer": "bin/autoprefixer" } - }, - "sha512-uiRYvQYe/nNSzBJ7OUnd2/TZVsAdob3blml44teEpee9Cc1f4rGZFewO+JT3Wo8mgFOSzNqes4FHZn/Qz8WOuw==" - ], - - "axios": [ - "axios@1.20.0", - "", - { - "dependencies": { - "follow-redirects": "^1.16.0", - "form-data": "^4.0.6", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^2.1.0" - } - }, - "sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==" - ], - - "base64-js": [ - "base64-js@1.5.1", - "", - {}, - "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - ], - - "baseline-browser-mapping": [ - "baseline-browser-mapping@2.11.21", - "", - { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, - "sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==" - ], - - "bignumber.js": [ - "bignumber.js@9.3.1", - "", - {}, - "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==" - ], - - "body-parser": [ - "body-parser@1.20.6", - "", - { - "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.15.1", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - } - }, - "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==" - ], - - "browserslist": [ - "browserslist@4.28.9", - "", - { - "dependencies": { - "baseline-browser-mapping": "^2.11.20", - "caniuse-lite": "^1.0.30001810", - "electron-to-chromium": "^1.5.420", - "node-releases": "^2.0.54", - "update-browserslist-db": "^1.3.2" - }, - "bin": { "browserslist": "cli.js" } - }, - "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==" - ], - - "buffer-equal-constant-time": [ - "buffer-equal-constant-time@1.0.1", - "", - {}, - "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - ], - - "bytes": [ - "bytes@3.1.2", - "", - {}, - "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - ], - - "call-bind-apply-helpers": [ - "call-bind-apply-helpers@1.0.2", - "", - { - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - } - }, - "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==" - ], - - "call-bound": [ - "call-bound@1.0.4", - "", - { - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - } - }, - "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==" - ], - - "caniuse-lite": [ - "caniuse-lite@1.0.30001810", - "", - {}, - "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==" - ], - - "combined-stream": [ - "combined-stream@1.0.8", - "", - { "dependencies": { "delayed-stream": "~1.0.0" } }, - "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - ], - - "content-disposition": [ - "content-disposition@0.5.4", - "", - { "dependencies": { "safe-buffer": "5.2.1" } }, - "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - ], - - "content-type": [ - "content-type@1.0.5", - "", - {}, - "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - ], - - "convert-source-map": [ - "convert-source-map@2.0.0", - "", - {}, - "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - ], - - "cookie": [ - "cookie@0.7.2", - "", - {}, - "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" - ], - - "cookie-signature": [ - "cookie-signature@1.0.7", - "", - {}, - "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" - ], - - "data-uri-to-buffer": [ - "data-uri-to-buffer@4.0.1", - "", - {}, - "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" - ], - - "debug": [ - "debug@2.6.9", - "", - { "dependencies": { "ms": "2.0.0" } }, - "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - ], - - "delayed-stream": [ - "delayed-stream@1.0.0", - "", - {}, - "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - ], - - "depd": [ - "depd@2.0.0", - "", - {}, - "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - ], - - "destroy": [ - "destroy@1.2.0", - "", - {}, - "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - ], - - "detect-libc": [ - "detect-libc@2.1.2", - "", - {}, - "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==" - ], - - "dotenv": [ - "dotenv@17.4.2", - "", - {}, - "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==" - ], - - "dunder-proto": [ - "dunder-proto@1.0.1", - "", - { - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - } - }, - "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==" - ], - - "ecdsa-sig-formatter": [ - "ecdsa-sig-formatter@1.0.11", - "", - { "dependencies": { "safe-buffer": "^5.0.1" } }, - "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==" - ], - - "ee-first": [ - "ee-first@1.1.1", - "", - {}, - "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - ], - - "electron-to-chromium": [ - "electron-to-chromium@1.5.422", - "", - {}, - "sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==" - ], - - "encodeurl": [ - "encodeurl@2.0.0", - "", - {}, - "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" - ], - - "enhanced-resolve": [ - "enhanced-resolve@5.24.5", - "", - { - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" - } - }, - "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==" - ], - - "es-define-property": [ - "es-define-property@1.0.1", - "", - {}, - "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" - ], - - "es-errors": [ - "es-errors@1.3.0", - "", - {}, - "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - ], - - "es-object-atoms": [ - "es-object-atoms@1.1.2", - "", - { "dependencies": { "es-errors": "^1.3.0" } }, - "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==" - ], - - "es-set-tostringtag": [ - "es-set-tostringtag@2.1.0", - "", - { - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - } - }, - "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==" - ], - - "esbuild": [ - "esbuild@0.25.12", - "", - { - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - }, - "bin": { "esbuild": "bin/esbuild" } - }, - "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==" - ], - - "escalade": [ - "escalade@3.2.0", - "", - {}, - "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" - ], - - "escape-html": [ - "escape-html@1.0.3", - "", - {}, - "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - ], - - "etag": [ - "etag@1.8.1", - "", - {}, - "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - ], - - "express": [ - "express@4.22.2", - "", - { - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.5", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.15.1", - "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" - } - }, - "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==" - ], - - "extend": [ - "extend@3.0.2", - "", - {}, - "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - ], - - "fdir": [ - "fdir@6.5.0", - "", - { - "peerDependencies": { "picomatch": "^3 || ^4" }, - "optionalPeers": [ "picomatch" ] - }, - "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==" - ], - - "fetch-blob": [ - "fetch-blob@3.2.0", - "", - { - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==" - ], - - "finalhandler": [ - "finalhandler@1.3.2", - "", - { - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - } - }, - "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==" - ], - - "follow-redirects": [ - "follow-redirects@1.16.0", - "", - { - "peerDependencies": { "debug": "*" }, - "optionalPeers": [ "debug" ] - }, - "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==" - ], - - "form-data": [ - "form-data@4.0.6", - "", - { - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - } - }, - "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==" - ], - - "formdata-polyfill": [ - "formdata-polyfill@4.0.10", - "", - { "dependencies": { "fetch-blob": "^3.1.2" } }, - "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==" - ], - - "forwarded": [ - "forwarded@0.2.0", - "", - {}, - "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - ], - - "fraction.js": [ - "fraction.js@5.3.4", - "", - {}, - "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==" - ], - - "framer-motion": [ - "framer-motion@12.43.0", - "", - { - "dependencies": { - "motion-dom": "^12.43.0", - "motion-utils": "^12.39.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "@emotion/is-prop-valid": "*", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "optionalPeers": [ "@emotion/is-prop-valid", "react", "react-dom" ] - }, - "sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g==" - ], - - "fresh": [ - "fresh@0.5.2", - "", - {}, - "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - ], - - "fsevents": [ - "fsevents@2.3.3", - "", - { "os": "darwin" }, - "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" - ], - - "function-bind": [ - "function-bind@1.1.2", - "", - {}, - "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - ], - - "gaxios": [ - "gaxios@7.3.1", - "", - { - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.2" - } - }, - "sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ==" - ], - - "gcp-metadata": [ - "gcp-metadata@8.1.2", - "", - { - "dependencies": { - "gaxios": "^7.0.0", - "google-logging-utils": "^1.0.0", - "json-bigint": "^1.0.0" - } - }, - "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==" - ], - - "gensync": [ - "gensync@1.0.0-beta.2", - "", - {}, - "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - ], - - "get-intrinsic": [ - "get-intrinsic@1.3.0", - "", - { - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - } - }, - "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==" - ], - - "get-proto": [ - "get-proto@1.0.1", - "", - { - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - } - }, - "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==" - ], - - "google-auth-library": [ - "google-auth-library@10.9.1", - "", - { - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^7.1.4", - "gcp-metadata": "8.1.2", - "google-logging-utils": "1.1.3", - "jws": "^4.0.0" - } - }, - "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==" - ], - - "google-logging-utils": [ - "google-logging-utils@1.1.3", - "", - {}, - "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==" - ], - - "gopd": [ - "gopd@1.2.0", - "", - {}, - "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" - ], - - "graceful-fs": [ - "graceful-fs@4.2.11", - "", - {}, - "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - ], - - "has-symbols": [ - "has-symbols@1.1.0", - "", - {}, - "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" - ], - - "has-tostringtag": [ - "has-tostringtag@1.0.2", - "", - { "dependencies": { "has-symbols": "^1.0.3" } }, - "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==" - ], - - "hasown": [ - "hasown@2.0.4", - "", - { "dependencies": { "function-bind": "^1.1.2" } }, - "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==" - ], - - "http-errors": [ - "http-errors@2.0.1", - "", - { - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - } - }, - "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==" - ], - - "https-proxy-agent": [ - "https-proxy-agent@5.0.1", - "", - { - "dependencies": { - "agent-base": "6", - "debug": "4" - } - }, - "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" - ], - - "iconv-lite": [ - "iconv-lite@0.4.24", - "", - { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, - "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - ], - - "inherits": [ - "inherits@2.0.4", - "", - {}, - "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - ], - - "ipaddr.js": [ - "ipaddr.js@1.9.1", - "", - {}, - "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - ], - - "jiti": [ - "jiti@2.7.0", - "", - { "bin": { "jiti": "lib/jiti-cli.mjs" } }, - "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==" - ], - - "js-tokens": [ - "js-tokens@4.0.0", - "", - {}, - "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - ], - - "jsesc": [ - "jsesc@3.1.0", - "", - { "bin": { "jsesc": "bin/jsesc" } }, - "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==" - ], - - "json-bigint": [ - "json-bigint@1.0.0", - "", - { "dependencies": { "bignumber.js": "^9.0.0" } }, - "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==" - ], - - "json5": [ - "json5@2.2.3", - "", - { "bin": { "json5": "lib/cli.js" } }, - "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - ], - - "jwa": [ - "jwa@2.0.1", - "", - { - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==" - ], - - "jws": [ - "jws@4.0.1", - "", - { - "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==" - ], - - "jwt-decode": [ - "jwt-decode@4.0.0", - "", - {}, - "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==" - ], - - "lightningcss": [ - "lightningcss@1.32.0", - "", - { - "dependencies": { "detect-libc": "^2.0.3" }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==" - ], - - "lightningcss-android-arm64": [ - "lightningcss-android-arm64@1.32.0", - "", - { - "os": "android", - "cpu": "arm64" - }, - "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==" - ], - - "lightningcss-darwin-arm64": [ - "lightningcss-darwin-arm64@1.32.0", - "", - { - "os": "darwin", - "cpu": "arm64" - }, - "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==" - ], - - "lightningcss-darwin-x64": [ - "lightningcss-darwin-x64@1.32.0", - "", - { - "os": "darwin", - "cpu": "x64" - }, - "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==" - ], - - "lightningcss-freebsd-x64": [ - "lightningcss-freebsd-x64@1.32.0", - "", - { - "os": "freebsd", - "cpu": "x64" - }, - "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==" - ], - - "lightningcss-linux-arm-gnueabihf": [ - "lightningcss-linux-arm-gnueabihf@1.32.0", - "", - { - "os": "linux", - "cpu": "arm" - }, - "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==" - ], - - "lightningcss-linux-arm64-gnu": [ - "lightningcss-linux-arm64-gnu@1.32.0", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==" - ], - - "lightningcss-linux-arm64-musl": [ - "lightningcss-linux-arm64-musl@1.32.0", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==" - ], - - "lightningcss-linux-x64-gnu": [ - "lightningcss-linux-x64-gnu@1.32.0", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==" - ], - - "lightningcss-linux-x64-musl": [ - "lightningcss-linux-x64-musl@1.32.0", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==" - ], - - "lightningcss-win32-arm64-msvc": [ - "lightningcss-win32-arm64-msvc@1.32.0", - "", - { - "os": "win32", - "cpu": "arm64" - }, - "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==" - ], - - "lightningcss-win32-x64-msvc": [ - "lightningcss-win32-x64-msvc@1.32.0", - "", - { - "os": "win32", - "cpu": "x64" - }, - "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==" - ], - - "long": [ - "long@5.3.2", - "", - {}, - "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" - ], - - "lru-cache": [ - "lru-cache@5.1.1", - "", - { "dependencies": { "yallist": "^3.0.2" } }, - "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - ], - - "lucide-react": [ - "lucide-react@0.546.0", - "", - { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ==" - ], - - "magic-string": [ - "magic-string@0.30.21", - "", - { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==" - ], - - "math-intrinsics": [ - "math-intrinsics@1.1.0", - "", - {}, - "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" - ], - - "media-typer": [ - "media-typer@0.3.0", - "", - {}, - "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - ], - - "merge-descriptors": [ - "merge-descriptors@1.0.3", - "", - {}, - "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" - ], - - "methods": [ - "methods@1.1.2", - "", - {}, - "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - ], - - "mime": [ - "mime@1.6.0", - "", - { "bin": { "mime": "cli.js" } }, - "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - ], - - "mime-db": [ - "mime-db@1.52.0", - "", - {}, - "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - ], - - "mime-types": [ - "mime-types@2.1.35", - "", - { "dependencies": { "mime-db": "1.52.0" } }, - "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - ], - - "motion": [ - "motion@12.43.0", - "", - { - "dependencies": { - "framer-motion": "^12.43.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "@emotion/is-prop-valid": "*", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "optionalPeers": [ "@emotion/is-prop-valid", "react", "react-dom" ] - }, - "sha512-BQgQbSa9Hn3/mtbib0MK53y6JSANa+YKUKlaYnWzAVDH424RYQ5LVpV3pNiWH00BA2z4ojsSdMzqT7g2FQwjuQ==" - ], - - "motion-dom": [ - "motion-dom@12.43.0", - "", - { "dependencies": { "motion-utils": "^12.39.0" } }, - "sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag==" - ], - - "motion-utils": [ - "motion-utils@12.39.0", - "", - {}, - "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==" - ], - - "ms": [ - "ms@2.0.0", - "", - {}, - "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - ], - - "nanoid": [ - "nanoid@3.3.18", - "", - { "bin": { "nanoid": "bin/nanoid.cjs" } }, - "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==" - ], - - "negotiator": [ - "negotiator@0.6.3", - "", - {}, - "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - ], - - "node-domexception": [ - "node-domexception@1.0.0", - "", - {}, - "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - ], - - "node-fetch": [ - "node-fetch@3.3.2", - "", - { - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==" - ], - - "node-releases": [ - "node-releases@2.0.54", - "", - {}, - "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==" - ], - - "object-inspect": [ - "object-inspect@1.13.4", - "", - {}, - "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" - ], - - "oidc-client-ts": [ - "oidc-client-ts@3.5.0", - "", - { "dependencies": { "jwt-decode": "^4.0.0" } }, - "sha512-l2q8l9CTCTOlbX+AnK4p3M+4CEpKpyQhle6blQkdFhm0IsBqsxm15bYaSa11G7pWdsYr6epdsRZxJpCyCRbT8A==" - ], - - "on-finished": [ - "on-finished@2.4.1", - "", - { "dependencies": { "ee-first": "1.1.1" } }, - "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - ], - - "p-retry": [ - "p-retry@4.6.2", - "", - { - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - } - }, - "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" - ], - - "parseurl": [ - "parseurl@1.3.3", - "", - {}, - "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - ], - - "path-to-regexp": [ - "path-to-regexp@0.1.13", - "", - {}, - "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==" - ], - - "picocolors": [ - "picocolors@1.1.1", - "", - {}, - "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - ], - - "picomatch": [ - "picomatch@4.0.7", - "", - {}, - "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==" - ], - - "postcss": [ - "postcss@8.5.28", - "", - { - "dependencies": { - "nanoid": "^3.3.18", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - } - }, - "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==" - ], - - "postcss-value-parser": [ - "postcss-value-parser@4.2.0", - "", - {}, - "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - ], - - "protobufjs": [ - "protobufjs@7.6.6", - "", - { - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.5", - "@protobufjs/eventemitter": "^1.1.1", - "@protobufjs/fetch": "^1.1.1", - "@protobufjs/float": "^1.0.2", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.1", - "@types/node": ">=13.7.0", - "long": "^5.3.2" - } - }, - "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==" - ], - - "proxy-addr": [ - "proxy-addr@2.0.7", - "", - { - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - ], - - "proxy-from-env": [ - "proxy-from-env@2.1.0", - "", - {}, - "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==" - ], - - "qs": [ - "qs@6.15.3", - "", - { - "dependencies": { - "es-define-property": "^1.0.1", - "side-channel": "^1.1.1" - } - }, - "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==" - ], - - "range-parser": [ - "range-parser@1.2.1", - "", - {}, - "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - ], - - "raw-body": [ - "raw-body@2.5.3", - "", - { - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - } - }, - "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==" - ], - - "react": [ - "react@19.2.8", - "", - {}, - "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==" - ], - - "react-dom": [ - "react-dom@19.2.8", - "", - { - "dependencies": { "scheduler": "^0.27.0" }, - "peerDependencies": { "react": "^19.2.8" } - }, - "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==" - ], - - "react-hook-form": [ - "react-hook-form@7.87.0", - "", - { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, - "sha512-zhFzWvLxNHH+8839OnZcUxgMZw88ah2jZWDWvKWgF3Tpbnd0vKL+dlcuU3nZVWESZQjd81EW8K+wU+cYfYAc0w==" - ], - - "react-refresh": [ - "react-refresh@0.18.0", - "", - {}, - "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==" - ], - - "react-router": [ - "react-router@7.18.3", - "", - { - "dependencies": { - "cookie": "^1.0.1", - "set-cookie-parser": "^2.6.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - }, - "optionalPeers": [ "react-dom" ] - }, - "sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA==" - ], - - "react-router-dom": [ - "react-router-dom@7.18.3", - "", - { - "dependencies": { "react-router": "7.18.3" }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - } - }, - "sha512-ytVbyBBM7vMfRCam25r0WMhSVSom909A8p+8m0/f1w853dz/xfFu6etAT2SEbVoSnI+ZoPRDqIsQXVT89gp7kg==" - ], - - "retry": [ - "retry@0.13.1", - "", - {}, - "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - ], - - "rollup": [ - "rollup@4.63.1", - "", - { - "dependencies": { "@types/estree": "1.0.9" }, - "optionalDependencies": { - "@napi-rs/lzma-linux-x64-gnu": "1.5.1", - "@rollup/rollup-android-arm-eabi": "4.63.1", - "@rollup/rollup-android-arm64": "4.63.1", - "@rollup/rollup-darwin-arm64": "4.63.1", - "@rollup/rollup-darwin-x64": "4.63.1", - "@rollup/rollup-freebsd-arm64": "4.63.1", - "@rollup/rollup-freebsd-x64": "4.63.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", - "@rollup/rollup-linux-arm-musleabihf": "4.63.1", - "@rollup/rollup-linux-arm64-gnu": "4.63.1", - "@rollup/rollup-linux-arm64-musl": "4.63.1", - "@rollup/rollup-linux-loong64-gnu": "4.63.1", - "@rollup/rollup-linux-loong64-musl": "4.63.1", - "@rollup/rollup-linux-ppc64-gnu": "4.63.1", - "@rollup/rollup-linux-ppc64-musl": "4.63.1", - "@rollup/rollup-linux-riscv64-gnu": "4.63.1", - "@rollup/rollup-linux-riscv64-musl": "4.63.1", - "@rollup/rollup-linux-s390x-gnu": "4.63.1", - "@rollup/rollup-linux-x64-gnu": "4.63.1", - "@rollup/rollup-linux-x64-musl": "4.63.1", - "@rollup/rollup-openbsd-x64": "4.63.1", - "@rollup/rollup-openharmony-arm64": "4.63.1", - "@rollup/rollup-win32-arm64-msvc": "4.63.1", - "@rollup/rollup-win32-ia32-msvc": "4.63.1", - "@rollup/rollup-win32-x64-gnu": "4.63.1", - "@rollup/rollup-win32-x64-msvc": "4.63.1", - "fsevents": "~2.3.2" - }, - "bin": { "rollup": "dist/bin/rollup" } - }, - "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==" - ], - - "safe-buffer": [ - "safe-buffer@5.2.1", - "", - {}, - "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - ], - - "safer-buffer": [ - "safer-buffer@2.1.2", - "", - {}, - "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - ], - - "scheduler": [ - "scheduler@0.27.0", - "", - {}, - "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==" - ], - - "semver": [ - "semver@6.3.1", - "", - { "bin": { "semver": "bin/semver.js" } }, - "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - ], - - "send": [ - "send@0.19.2", - "", - { - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - } - }, - "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==" - ], - - "serve-static": [ - "serve-static@1.16.3", - "", - { - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - } - }, - "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==" - ], - - "set-cookie-parser": [ - "set-cookie-parser@2.7.2", - "", - {}, - "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==" - ], - - "setprototypeof": [ - "setprototypeof@1.2.0", - "", - {}, - "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - ], - - "side-channel": [ - "side-channel@1.1.1", - "", - { - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4", - "side-channel-list": "^1.0.1", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - } - }, - "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==" - ], - - "side-channel-list": [ - "side-channel-list@1.0.1", - "", - { - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - } - }, - "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==" - ], - - "side-channel-map": [ - "side-channel-map@1.0.1", - "", - { - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - } - }, - "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==" - ], - - "side-channel-weakmap": [ - "side-channel-weakmap@1.0.2", - "", - { - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - } - }, - "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==" - ], - - "source-map-js": [ - "source-map-js@1.2.1", - "", - {}, - "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" - ], - - "statuses": [ - "statuses@2.0.2", - "", - {}, - "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" - ], - - "tailwindcss": [ - "tailwindcss@4.3.3", - "", - {}, - "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==" - ], - - "tapable": [ - "tapable@2.3.3", - "", - {}, - "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==" - ], - - "tinyglobby": [ - "tinyglobby@0.2.17", - "", - { - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - } - }, - "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==" - ], - - "toidentifier": [ - "toidentifier@1.0.1", - "", - {}, - "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - ], - - "tslib": [ - "tslib@2.8.1", - "", - {}, - "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - ], - - "tsx": [ - "tsx@4.23.13", - "", - { - "dependencies": { "esbuild": "~0.28.0" }, - "optionalDependencies": { "fsevents": "~2.3.3" }, - "bin": { "tsx": "dist/cli.mjs" } - }, - "sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw==" - ], - - "type-is": [ - "type-is@1.6.18", - "", - { - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - ], - - "typescript": [ - "typescript@5.8.3", - "", - { - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - } - }, - "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==" - ], - - "undici-types": [ - "undici-types@6.21.0", - "", - {}, - "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" - ], - - "unpipe": [ - "unpipe@1.0.0", - "", - {}, - "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - ], - - "update-browserslist-db": [ - "update-browserslist-db@1.3.2", - "", - { - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "peerDependencies": { "browserslist": ">= 4.21.0" }, - "bin": { "update-browserslist-db": "cli.js" } - }, - "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==" - ], - - "utils-merge": [ - "utils-merge@1.0.1", - "", - {}, - "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - ], - - "vary": [ - "vary@1.1.2", - "", - {}, - "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - ], - - "vite": [ - "vite@6.4.3", - "", - { - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "optionalDependencies": { "fsevents": "~2.3.3" }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "optionalPeers": [ "@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml" ], - "bin": { "vite": "bin/vite.js" } - }, - "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==" - ], - - "web-streams-polyfill": [ - "web-streams-polyfill@3.3.3", - "", - {}, - "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" - ], - - "ws": [ - "ws@8.21.3", - "", - { - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "optionalPeers": [ "bufferutil", "utf-8-validate" ] - }, - "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==" - ], - - "yallist": [ - "yallist@3.1.1", - "", - {}, - "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - ], - - "zod": [ - "zod@4.5.4", - "", - {}, - "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==" - ], - - "@babel/core/debug": [ - "debug@4.4.3", - "", - { - "dependencies": { "ms": "^2.1.3" }, - "peerDependencies": { "supports-color": "*" }, - "optionalPeers": [ "supports-color" ] - }, - "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==" - ], - - "@babel/traverse/debug": [ - "debug@4.4.3", - "", - { - "dependencies": { "ms": "^2.1.3" }, - "peerDependencies": { "supports-color": "*" }, - "optionalPeers": [ "supports-color" ] - }, - "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==" - ], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": [ - "@emnapi/core@1.11.3", - "", - { - "dependencies": { - "@emnapi/wasi-threads": "1.2.3", - "tslib": "^2.4.0" - }, - "bundled": true - }, - "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==" - ], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": [ - "@emnapi/runtime@1.11.3", - "", - { - "dependencies": { "tslib": "^2.4.0" }, - "bundled": true - }, - "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==" - ], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": [ - "@emnapi/wasi-threads@1.2.3", - "", - { - "dependencies": { "tslib": "^2.4.0" }, - "bundled": true - }, - "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==" - ], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": [ - "@napi-rs/wasm-runtime@1.2.3", - "", - { - "dependencies": { "@tybys/wasm-util": "^0.10.3" }, - "peerDependencies": { - "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", - "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" - }, - "bundled": true - }, - "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==" - ], - - "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": [ - "@tybys/wasm-util@0.10.3", - "", - { - "dependencies": { "tslib": "^2.4.0" }, - "bundled": true - }, - "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==" - ], - - "@tailwindcss/oxide-wasm32-wasi/tslib": [ - "tslib@2.8.1", - "", - { "bundled": true }, - "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - ], - - "@types/body-parser/@types/node": [ - "@types/node@26.4.1", - "", - { "dependencies": { "undici-types": "~8.3.0" } }, - "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==" - ], - - "@types/connect/@types/node": [ - "@types/node@26.4.1", - "", - { "dependencies": { "undici-types": "~8.3.0" } }, - "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==" - ], - - "@types/express-serve-static-core/@types/node": [ - "@types/node@26.4.1", - "", - { "dependencies": { "undici-types": "~8.3.0" } }, - "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==" - ], - - "@types/send/@types/node": [ - "@types/node@26.4.1", - "", - { "dependencies": { "undici-types": "~8.3.0" } }, - "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==" - ], - - "@types/serve-static/@types/node": [ - "@types/node@26.4.1", - "", - { "dependencies": { "undici-types": "~8.3.0" } }, - "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==" - ], - - "@types/serve-static/@types/send": [ - "@types/send@0.17.6", - "", - { - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==" - ], - - "agent-base/debug": [ - "debug@4.4.3", - "", - { - "dependencies": { "ms": "^2.1.3" }, - "peerDependencies": { "supports-color": "*" }, - "optionalPeers": [ "supports-color" ] - }, - "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==" - ], - - "gaxios/https-proxy-agent": [ - "https-proxy-agent@7.0.6", - "", - { - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - } - }, - "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==" - ], - - "https-proxy-agent/debug": [ - "debug@4.4.3", - "", - { - "dependencies": { "ms": "^2.1.3" }, - "peerDependencies": { "supports-color": "*" }, - "optionalPeers": [ "supports-color" ] - }, - "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==" - ], - - "protobufjs/@types/node": [ - "@types/node@26.4.1", - "", - { "dependencies": { "undici-types": "~8.3.0" } }, - "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==" - ], - - "react-router/cookie": [ - "cookie@1.1.1", - "", - {}, - "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==" - ], - - "send/ms": [ - "ms@2.1.3", - "", - {}, - "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - ], - - "tsx/esbuild": [ - "esbuild@0.28.2", - "", - { - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.2", - "@esbuild/android-arm": "0.28.2", - "@esbuild/android-arm64": "0.28.2", - "@esbuild/android-x64": "0.28.2", - "@esbuild/darwin-arm64": "0.28.2", - "@esbuild/darwin-x64": "0.28.2", - "@esbuild/freebsd-arm64": "0.28.2", - "@esbuild/freebsd-x64": "0.28.2", - "@esbuild/linux-arm": "0.28.2", - "@esbuild/linux-arm64": "0.28.2", - "@esbuild/linux-ia32": "0.28.2", - "@esbuild/linux-loong64": "0.28.2", - "@esbuild/linux-mips64el": "0.28.2", - "@esbuild/linux-ppc64": "0.28.2", - "@esbuild/linux-riscv64": "0.28.2", - "@esbuild/linux-s390x": "0.28.2", - "@esbuild/linux-x64": "0.28.2", - "@esbuild/netbsd-arm64": "0.28.2", - "@esbuild/netbsd-x64": "0.28.2", - "@esbuild/openbsd-arm64": "0.28.2", - "@esbuild/openbsd-x64": "0.28.2", - "@esbuild/openharmony-arm64": "0.28.2", - "@esbuild/sunos-x64": "0.28.2", - "@esbuild/win32-arm64": "0.28.2", - "@esbuild/win32-ia32": "0.28.2", - "@esbuild/win32-x64": "0.28.2" - }, - "bin": { "esbuild": "bin/esbuild" } - }, - "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==" - ], - - "@babel/core/debug/ms": [ - "ms@2.1.3", - "", - {}, - "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - ], - - "@babel/traverse/debug/ms": [ - "ms@2.1.3", - "", - {}, - "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - ], - - "@types/body-parser/@types/node/undici-types": [ - "undici-types@8.3.0", - "", - {}, - "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==" - ], - - "@types/connect/@types/node/undici-types": [ - "undici-types@8.3.0", - "", - {}, - "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==" - ], - - "@types/express-serve-static-core/@types/node/undici-types": [ - "undici-types@8.3.0", - "", - {}, - "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==" - ], - - "@types/send/@types/node/undici-types": [ - "undici-types@8.3.0", - "", - {}, - "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==" - ], - - "@types/serve-static/@types/node/undici-types": [ - "undici-types@8.3.0", - "", - {}, - "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==" - ], - - "agent-base/debug/ms": [ - "ms@2.1.3", - "", - {}, - "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - ], - - "gaxios/https-proxy-agent/agent-base": [ - "agent-base@7.1.4", - "", - {}, - "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==" - ], - - "gaxios/https-proxy-agent/debug": [ - "debug@4.4.3", - "", - { - "dependencies": { "ms": "^2.1.3" }, - "peerDependencies": { "supports-color": "*" }, - "optionalPeers": [ "supports-color" ] - }, - "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==" - ], - - "https-proxy-agent/debug/ms": [ - "ms@2.1.3", - "", - {}, - "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - ], - - "protobufjs/@types/node/undici-types": [ - "undici-types@8.3.0", - "", - {}, - "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==" - ], - - "tsx/esbuild/@esbuild/aix-ppc64": [ - "@esbuild/aix-ppc64@0.28.2", - "", - { - "os": "aix", - "cpu": "ppc64" - }, - "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==" - ], - - "tsx/esbuild/@esbuild/android-arm": [ - "@esbuild/android-arm@0.28.2", - "", - { - "os": "android", - "cpu": "arm" - }, - "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==" - ], - - "tsx/esbuild/@esbuild/android-arm64": [ - "@esbuild/android-arm64@0.28.2", - "", - { - "os": "android", - "cpu": "arm64" - }, - "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==" - ], - - "tsx/esbuild/@esbuild/android-x64": [ - "@esbuild/android-x64@0.28.2", - "", - { - "os": "android", - "cpu": "x64" - }, - "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==" - ], - - "tsx/esbuild/@esbuild/darwin-arm64": [ - "@esbuild/darwin-arm64@0.28.2", - "", - { - "os": "darwin", - "cpu": "arm64" - }, - "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==" - ], - - "tsx/esbuild/@esbuild/darwin-x64": [ - "@esbuild/darwin-x64@0.28.2", - "", - { - "os": "darwin", - "cpu": "x64" - }, - "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==" - ], - - "tsx/esbuild/@esbuild/freebsd-arm64": [ - "@esbuild/freebsd-arm64@0.28.2", - "", - { - "os": "freebsd", - "cpu": "arm64" - }, - "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==" - ], - - "tsx/esbuild/@esbuild/freebsd-x64": [ - "@esbuild/freebsd-x64@0.28.2", - "", - { - "os": "freebsd", - "cpu": "x64" - }, - "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==" - ], - - "tsx/esbuild/@esbuild/linux-arm": [ - "@esbuild/linux-arm@0.28.2", - "", - { - "os": "linux", - "cpu": "arm" - }, - "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==" - ], - - "tsx/esbuild/@esbuild/linux-arm64": [ - "@esbuild/linux-arm64@0.28.2", - "", - { - "os": "linux", - "cpu": "arm64" - }, - "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==" - ], - - "tsx/esbuild/@esbuild/linux-ia32": [ - "@esbuild/linux-ia32@0.28.2", - "", - { - "os": "linux", - "cpu": "ia32" - }, - "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==" - ], - - "tsx/esbuild/@esbuild/linux-loong64": [ - "@esbuild/linux-loong64@0.28.2", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==" - ], - - "tsx/esbuild/@esbuild/linux-mips64el": [ - "@esbuild/linux-mips64el@0.28.2", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==" - ], - - "tsx/esbuild/@esbuild/linux-ppc64": [ - "@esbuild/linux-ppc64@0.28.2", - "", - { - "os": "linux", - "cpu": "ppc64" - }, - "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==" - ], - - "tsx/esbuild/@esbuild/linux-riscv64": [ - "@esbuild/linux-riscv64@0.28.2", - "", - { - "os": "linux", - "cpu": "none" - }, - "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==" - ], - - "tsx/esbuild/@esbuild/linux-s390x": [ - "@esbuild/linux-s390x@0.28.2", - "", - { - "os": "linux", - "cpu": "s390x" - }, - "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==" - ], - - "tsx/esbuild/@esbuild/linux-x64": [ - "@esbuild/linux-x64@0.28.2", - "", - { - "os": "linux", - "cpu": "x64" - }, - "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==" - ], - - "tsx/esbuild/@esbuild/netbsd-arm64": [ - "@esbuild/netbsd-arm64@0.28.2", - "", - { - "os": "none", - "cpu": "arm64" - }, - "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==" - ], - - "tsx/esbuild/@esbuild/netbsd-x64": [ - "@esbuild/netbsd-x64@0.28.2", - "", - { - "os": "none", - "cpu": "x64" - }, - "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==" - ], - - "tsx/esbuild/@esbuild/openbsd-arm64": [ - "@esbuild/openbsd-arm64@0.28.2", - "", - { - "os": "openbsd", - "cpu": "arm64" - }, - "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==" - ], - - "tsx/esbuild/@esbuild/openbsd-x64": [ - "@esbuild/openbsd-x64@0.28.2", - "", - { - "os": "openbsd", - "cpu": "x64" - }, - "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==" - ], - - "tsx/esbuild/@esbuild/openharmony-arm64": [ - "@esbuild/openharmony-arm64@0.28.2", - "", - { - "os": "none", - "cpu": "arm64" - }, - "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==" - ], - - "tsx/esbuild/@esbuild/sunos-x64": [ - "@esbuild/sunos-x64@0.28.2", - "", - { - "os": "sunos", - "cpu": "x64" - }, - "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==" - ], - - "tsx/esbuild/@esbuild/win32-arm64": [ - "@esbuild/win32-arm64@0.28.2", - "", - { - "os": "win32", - "cpu": "arm64" - }, - "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==" - ], - - "tsx/esbuild/@esbuild/win32-ia32": [ - "@esbuild/win32-ia32@0.28.2", - "", - { - "os": "win32", - "cpu": "ia32" - }, - "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==" - ], - - "tsx/esbuild/@esbuild/win32-x64": [ - "@esbuild/win32-x64@0.28.2", - "", - { - "os": "win32", - "cpu": "x64" - }, - "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==" - ], - - "gaxios/https-proxy-agent/debug/ms": [ - "ms@2.1.3", - "", - {}, - "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - ] + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], + + "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], + + "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], + + "@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.29.7", "", { "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.29.7", "", {}, "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="], + + "@babel/helpers": ["@babel/helpers@7.29.7", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg=="], + + "@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], + + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw=="], + + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q=="], + + "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], + + "@babel/traverse": ["@babel/traverse@7.29.8", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg=="], + + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + + "@google/genai": ["@google/genai@2.21.0", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-+PDtco2/Z0ONdzCGekCoCT+O1VJS9xJQNN4XzQpXG/t3El/SWWMkCWlFRO1KmivOHPa4Q0VjUYu1HBKCZ/v33Q=="], + + "@hookform/resolvers": ["@hookform/resolvers@5.9.1", "", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "@sinclair/typebox": ">=0.25.24", "@standard-schema/spec": "^1.0.0", "@typeschema/main": ">=0.13.7", "@vinejs/vine": "^2.0.0 || ^3.0.0 || ^4.0.0", "ajv": "^8.12.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1", "arktype": "^2.0.0", "ata-validator": "^1.2.0", "class-transformer": ">=0.4.0", "class-validator": ">=0.12.0", "computed-types": "^1.0.0", "effect": "^3.10.3", "fluentvalidation-ts": "^3.0.0", "fp-ts": "^2.7.0", "io-ts": "^2.0.0", "joi": "^17.0.0 || ^18.0.0", "nope-validator": ">=0.12.0", "react-hook-form": "^7.55.0", "superstruct": ">=0.12.0", "typanion": "^3.3.2", "valibot": ">=0.31.0 || ^1.0.0-beta.4 || ^1.0.0-rc", "vest": ">=6.0.0", "yup": "^1.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@sinclair/typebox", "@standard-schema/spec", "@typeschema/main", "@vinejs/vine", "ajv", "ajv-errors", "ajv-formats", "arktype", "ata-validator", "class-transformer", "class-validator", "computed-types", "effect", "fluentvalidation-ts", "fp-ts", "io-ts", "joi", "nope-validator", "superstruct", "typanion", "valibot", "vest", "yup", "zod"] }, "sha512-7b7vsbraJxKgjVSA1Nur9tLwj539WGJUBLA7QNvXnFoT2pM5Z7G+6rlukk4B2/QrTZy6huRtH6wKeESPKuIr6w=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@napi-rs/lzma-linux-x64-gnu": ["@napi-rs/lzma-linux-x64-gnu@1.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ=="], + + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], + + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], + + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], + + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="], + + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="], + + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], + + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], + + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], + + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.63.1", "", { "os": "android", "cpu": "arm" }, "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.63.1", "", { "os": "android", "cpu": "arm64" }, "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.63.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.63.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.63.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.63.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.63.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.63.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.63.1", "", { "os": "none", "cpu": "arm64" }, "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.63.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.63.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w=="], + + "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.3.3", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.24.1", "jiti": "^2.7.0", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.3" } }, "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.3", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.3", "@tailwindcss/oxide-darwin-arm64": "4.3.3", "@tailwindcss/oxide-darwin-x64": "4.3.3", "@tailwindcss/oxide-freebsd-x64": "4.3.3", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", "@tailwindcss/oxide-linux-x64-musl": "4.3.3", "@tailwindcss/oxide-wasm32-wasi": "4.3.3", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" } }, "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.3.3", "", { "os": "android", "cpu": "arm64" }, "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.3.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.3.3", "", { "dependencies": { "@emnapi/core": "^1.11.1", "@emnapi/runtime": "^1.11.1", "@emnapi/wasi-threads": "^1.2.2", "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.2", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.3.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.3", "", { "os": "win32", "cpu": "x64" }, "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.3.3", "", { "dependencies": { "@tailwindcss/node": "4.3.3", "@tailwindcss/oxide": "4.3.3", "tailwindcss": "4.3.3" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw=="], + + "@tanstack/query-core": ["@tanstack/query-core@5.102.8", "", {}, "sha512-ZNjkJ33CqvPNec/6lZBnHqLc3EVGPZ9ySLhYahU9TcuRFdmwXewuj0c4hwSWcGHqEUwcSrKeZ+oGcvPBqXcQcg=="], + + "@tanstack/react-query": ["@tanstack/react-query@5.102.8", "", { "dependencies": { "@tanstack/query-core": "5.102.8" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-TYBea4OuXWD7MhaSHq069TWbFe7rcwWN6kzT7JF0OKi1K6c1gTv2IzD6A6ExJsCMozdkqBWeuIUZmu4KQg0O5A=="], + + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + + "@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="], + + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + + "@types/express": ["@types/express@4.17.25", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "^1" } }, "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw=="], + + "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.9", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg=="], + + "@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="], + + "@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="], + + "@types/node": ["@types/node@22.20.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q=="], + + "@types/qs": ["@types/qs@6.15.1", "", {}, "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw=="], + + "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + + "@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="], + + "@types/send": ["@types/send@1.2.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ=="], + + "@types/serve-static": ["@types/serve-static@1.15.10", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "<1" } }, "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw=="], + + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.2.0", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw=="], + + "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + + "array-flatten": ["array-flatten@1.1.1", "", {}, "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="], + + "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], + + "autoprefixer": ["autoprefixer@10.5.5", "", { "dependencies": { "browserslist": "^4.28.9", "caniuse-lite": "^1.0.30001810", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-uiRYvQYe/nNSzBJ7OUnd2/TZVsAdob3blml44teEpee9Cc1f4rGZFewO+JT3Wo8mgFOSzNqes4FHZn/Qz8WOuw=="], + + "axios": ["axios@1.20.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.6", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.11.21", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ=="], + + "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], + + "body-parser": ["body-parser@1.20.6", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g=="], + + "browserslist": ["browserslist@4.28.9", "", { "dependencies": { "baseline-browser-mapping": "^2.11.20", "caniuse-lite": "^1.0.30001810", "electron-to-chromium": "^1.5.420", "node-releases": "^2.0.54", "update-browserslist-db": "^1.3.2" }, "bin": { "browserslist": "cli.js" } }, "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg=="], + + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001810", "", {}, "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg=="], + + "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], + + "content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], + + "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cookie-signature": ["cookie-signature@1.0.7", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="], + + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], + + "debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], + + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.422", "", {}, "sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "enhanced-resolve": ["enhanced-resolve@5.24.5", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], + + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + + "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "express": ["express@4.22.2", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.5", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.15.1", "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" } }, "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q=="], + + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], + + "finalhandler": ["finalhandler@1.3.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="], + + "follow-redirects": ["follow-redirects@1.16.0", "", { "peerDependencies": { "debug": "*" }, "optionalPeers": ["debug"] }, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], + + "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="], + + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], + + "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "framer-motion": ["framer-motion@12.43.0", "", { "dependencies": { "motion-dom": "^12.43.0", "motion-utils": "^12.39.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g=="], + + "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "gaxios": ["gaxios@7.3.1", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ=="], + + "gcp-metadata": ["gcp-metadata@8.1.2", "", { "dependencies": { "gaxios": "^7.0.0", "google-logging-utils": "^1.0.0", "json-bigint": "^1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "google-auth-library": ["google-auth-library@10.9.1", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.1.4", "gcp-metadata": "8.1.2", "google-logging-utils": "1.1.3", "jws": "^4.0.0" } }, "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw=="], + + "google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + + "hashids": ["hashids@2.3.0", "", {}, "sha512-ljM73TE/avEhNnazxaj0Dw3BbEUuLC5yYCQ9RSkSUcT4ZSU6ZebdKCIBJ+xT/DnSYW36E9k82GH1Q6MydSIosQ=="], + + "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], + + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + + "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + + "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-bigint": ["json-bigint@1.0.0", "", { "dependencies": { "bignumber.js": "^9.0.0" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], + + "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], + + "jwt-decode": ["jwt-decode@4.0.0", "", {}, "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA=="], + + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + + "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], + + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "lucide-react": ["lucide-react@0.546.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + + "merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], + + "methods": ["methods@1.1.2", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="], + + "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "motion": ["motion@12.43.0", "", { "dependencies": { "framer-motion": "^12.43.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-BQgQbSa9Hn3/mtbib0MK53y6JSANa+YKUKlaYnWzAVDH424RYQ5LVpV3pNiWH00BA2z4ojsSdMzqT7g2FQwjuQ=="], + + "motion-dom": ["motion-dom@12.43.0", "", { "dependencies": { "motion-utils": "^12.39.0" } }, "sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag=="], + + "motion-utils": ["motion-utils@12.39.0", "", {}, "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ=="], + + "ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], + + "negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], + + "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + + "node-releases": ["node-releases@2.0.54", "", {}, "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "oidc-client-ts": ["oidc-client-ts@3.5.0", "", { "dependencies": { "jwt-decode": "^4.0.0" } }, "sha512-l2q8l9CTCTOlbX+AnK4p3M+4CEpKpyQhle6blQkdFhm0IsBqsxm15bYaSa11G7pWdsYr6epdsRZxJpCyCRbT8A=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "p-retry": ["p-retry@4.6.2", "", { "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="], + + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "path-to-regexp": ["path-to-regexp@0.1.13", "", {}, "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], + + "postcss": ["postcss@8.5.28", "", { "dependencies": { "nanoid": "^3.3.18", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "protobufjs": ["protobufjs@7.6.6", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg=="], + + "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + + "proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="], + + "qs": ["qs@6.15.3", "", { "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" } }, "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], + + "react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], + + "react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], + + "react-hook-form": ["react-hook-form@7.87.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-zhFzWvLxNHH+8839OnZcUxgMZw88ah2jZWDWvKWgF3Tpbnd0vKL+dlcuU3nZVWESZQjd81EW8K+wU+cYfYAc0w=="], + + "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], + + "react-router": ["react-router@7.18.3", "", { "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" }, "optionalPeers": ["react-dom"] }, "sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA=="], + + "react-router-dom": ["react-router-dom@7.18.3", "", { "dependencies": { "react-router": "7.18.3" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-ytVbyBBM7vMfRCam25r0WMhSVSom909A8p+8m0/f1w853dz/xfFu6etAT2SEbVoSnI+ZoPRDqIsQXVT89gp7kg=="], + + "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], + + "rollup": ["rollup@4.63.1", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", "@rollup/rollup-android-arm-eabi": "4.63.1", "@rollup/rollup-android-arm64": "4.63.1", "@rollup/rollup-darwin-arm64": "4.63.1", "@rollup/rollup-darwin-x64": "4.63.1", "@rollup/rollup-freebsd-arm64": "4.63.1", "@rollup/rollup-freebsd-x64": "4.63.1", "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", "@rollup/rollup-linux-arm-musleabihf": "4.63.1", "@rollup/rollup-linux-arm64-gnu": "4.63.1", "@rollup/rollup-linux-arm64-musl": "4.63.1", "@rollup/rollup-linux-loong64-gnu": "4.63.1", "@rollup/rollup-linux-loong64-musl": "4.63.1", "@rollup/rollup-linux-ppc64-gnu": "4.63.1", "@rollup/rollup-linux-ppc64-musl": "4.63.1", "@rollup/rollup-linux-riscv64-gnu": "4.63.1", "@rollup/rollup-linux-riscv64-musl": "4.63.1", "@rollup/rollup-linux-s390x-gnu": "4.63.1", "@rollup/rollup-linux-x64-gnu": "4.63.1", "@rollup/rollup-linux-x64-musl": "4.63.1", "@rollup/rollup-openbsd-x64": "4.63.1", "@rollup/rollup-openharmony-arm64": "4.63.1", "@rollup/rollup-win32-arm64-msvc": "4.63.1", "@rollup/rollup-win32-ia32-msvc": "4.63.1", "@rollup/rollup-win32-x64-gnu": "4.63.1", "@rollup/rollup-win32-x64-msvc": "4.63.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], + + "serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], + + "set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="], + + "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "tailwindcss": ["tailwindcss@4.3.3", "", {}, "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="], + + "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], + + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "tsx": ["tsx@4.23.13", "", { "dependencies": { "esbuild": "~0.28.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw=="], + + "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], + + "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + + "update-browserslist-db": ["update-browserslist-db@1.3.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw=="], + + "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="], + + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "vite": ["vite@6.4.3", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="], + + "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + + "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "zod": ["zod@4.5.4", "", {}, "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA=="], + + "@babel/core/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "@babel/traverse/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" }, "bundled": true }, "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@types/body-parser/@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="], + + "@types/connect/@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="], + + "@types/express-serve-static-core/@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="], + + "@types/send/@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="], + + "@types/serve-static/@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="], + + "@types/serve-static/@types/send": ["@types/send@0.17.6", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og=="], + + "agent-base/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "https-proxy-agent/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "protobufjs/@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="], + + "react-router/cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], + + "send/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "tsx/esbuild": ["esbuild@0.28.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.2", "@esbuild/android-arm": "0.28.2", "@esbuild/android-arm64": "0.28.2", "@esbuild/android-x64": "0.28.2", "@esbuild/darwin-arm64": "0.28.2", "@esbuild/darwin-x64": "0.28.2", "@esbuild/freebsd-arm64": "0.28.2", "@esbuild/freebsd-x64": "0.28.2", "@esbuild/linux-arm": "0.28.2", "@esbuild/linux-arm64": "0.28.2", "@esbuild/linux-ia32": "0.28.2", "@esbuild/linux-loong64": "0.28.2", "@esbuild/linux-mips64el": "0.28.2", "@esbuild/linux-ppc64": "0.28.2", "@esbuild/linux-riscv64": "0.28.2", "@esbuild/linux-s390x": "0.28.2", "@esbuild/linux-x64": "0.28.2", "@esbuild/netbsd-arm64": "0.28.2", "@esbuild/netbsd-x64": "0.28.2", "@esbuild/openbsd-arm64": "0.28.2", "@esbuild/openbsd-x64": "0.28.2", "@esbuild/openharmony-arm64": "0.28.2", "@esbuild/sunos-x64": "0.28.2", "@esbuild/win32-arm64": "0.28.2", "@esbuild/win32-ia32": "0.28.2", "@esbuild/win32-x64": "0.28.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA=="], + + "@babel/core/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "@babel/traverse/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "@types/body-parser/@types/node/undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], + + "@types/connect/@types/node/undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], + + "@types/express-serve-static-core/@types/node/undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], + + "@types/send/@types/node/undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], + + "@types/serve-static/@types/node/undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], + + "agent-base/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "gaxios/https-proxy-agent/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "https-proxy-agent/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "protobufjs/@types/node/undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], + + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ=="], + + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.2", "", { "os": "android", "cpu": "arm" }, "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg=="], + + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.2", "", { "os": "android", "cpu": "arm64" }, "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A=="], + + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.2", "", { "os": "android", "cpu": "x64" }, "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q=="], + + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw=="], + + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw=="], + + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw=="], + + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg=="], + + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.2", "", { "os": "linux", "cpu": "arm" }, "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w=="], + + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug=="], + + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ=="], + + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ=="], + + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA=="], + + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ=="], + + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA=="], + + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg=="], + + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.2", "", { "os": "linux", "cpu": "x64" }, "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ=="], + + "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw=="], + + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.2", "", { "os": "none", "cpu": "x64" }, "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw=="], + + "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ=="], + + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw=="], + + "tsx/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q=="], + + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g=="], + + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ=="], + + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA=="], + + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], + + "gaxios/https-proxy-agent/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], } } diff --git a/PostFundManagement.ConsoleUI/dist/assets/index-BVskQUfz.css b/PostFundManagement.ConsoleUI/dist/assets/index-BVskQUfz.css new file mode 100644 index 0000000..a2c6c30 --- /dev/null +++ b/PostFundManagement.ConsoleUI/dist/assets/index-BVskQUfz.css @@ -0,0 +1 @@ +/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-divide-x-reverse:0}}}@layer theme{:root,:host{--font-sans:"Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-300:oklch(85.5% .138 181.071);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-cyan-400:oklch(78.9% .154 211.53);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-800:oklch(44.3% .11 240.79);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-950:oklch(28.2% .091 267.935);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-purple-500:oklch(62.7% .265 303.9);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-800:oklch(45.5% .188 13.697);--color-rose-900:oklch(41% .159 10.272);--color-rose-950:oklch(27.1% .105 12.094);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-400:oklch(70.7% .022 261.325);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--drop-shadow-sm:0 1px 2px #00000026;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-md:12px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{color-scheme:dark;--font-sans:"Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}body{color:#e2e8f0;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#090d16}button,input,select,textarea{font-family:inherit}.font-mono,code,kbd,samp,pre{font-family:var(--font-mono)!important}input,select,textarea{color-scheme:dark}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#0a0a0a}::-webkit-scrollbar-thumb{background:#262626;border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:#3f3f46}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-2\.5{inset:calc(var(--spacing) * -2.5)}.inset-0{top:0;right:0;bottom:0;left:0}.-top-24{top:calc(var(--spacing) * -24)}.-top-40{top:calc(var(--spacing) * -40)}.top-0{top:0}.top-1\/2{top:50%}.top-1\/3{top:33.3333%}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3{top:calc(var(--spacing) * 3)}.top-6{top:calc(var(--spacing) * 6)}.top-12{top:calc(var(--spacing) * 12)}.-right-24{right:calc(var(--spacing) * -24)}.-right-40{right:calc(var(--spacing) * -40)}.right-0{right:0}.right-4{right:calc(var(--spacing) * 4)}.-bottom-40{bottom:calc(var(--spacing) * -40)}.bottom-4{bottom:calc(var(--spacing) * 4)}.-left-24{left:calc(var(--spacing) * -24)}.-left-40{left:calc(var(--spacing) * -40)}.left-0{left:0}.left-1\/3{left:33.3333%}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.col-span-3{grid-column:span 3/span 3}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-36{height:calc(var(--spacing) * 36)}.h-44{height:calc(var(--spacing) * 44)}.h-80{height:calc(var(--spacing) * 80)}.h-96{height:calc(var(--spacing) * 96)}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[400px\]{max-height:400px}.max-h-\[500px\]{max-height:500px}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-36{width:calc(var(--spacing) * 36)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[170px\]{max-width:170px}.max-w-\[180px\]{max-width:180px}.max-w-\[190px\]{max-width:190px}.max-w-\[200px\]{max-width:200px}.max-w-\[280px\]{max-width:280px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-12{gap:calc(var(--spacing) * 12)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-800\/50>:not(:last-child)){border-color:#1d293d80}@supports (color:color-mix(in lab,red,red)){:where(.divide-slate-800\/50>:not(:last-child)){border-color:color-mix(in oklab,var(--color-slate-800) 50%,transparent)}}:where(.divide-slate-800\/60>:not(:last-child)){border-color:#1d293d99}@supports (color:color-mix(in lab,red,red)){:where(.divide-slate-800\/60>:not(:last-child)){border-color:color-mix(in oklab,var(--color-slate-800) 60%,transparent)}}:where(.divide-slate-800\/80>:not(:last-child)){border-color:#1d293dcc}@supports (color:color-mix(in lab,red,red)){:where(.divide-slate-800\/80>:not(:last-child)){border-color:color-mix(in oklab,var(--color-slate-800) 80%,transparent)}}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-8{border-style:var(--tw-border-style);border-width:8px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-800\/40{border-color:#953d0066}@supports (color:color-mix(in lab,red,red)){.border-amber-800\/40{border-color:color-mix(in oklab,var(--color-amber-800) 40%,transparent)}}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-500\/20{border-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/20{border-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500) 30%,transparent)}}.border-blue-500\/40{border-color:#3080ff66}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/40{border-color:color-mix(in oklab,var(--color-blue-500) 40%,transparent)}}.border-blue-800\/40{border-color:#193cb866}@supports (color:color-mix(in lab,red,red)){.border-blue-800\/40{border-color:color-mix(in oklab,var(--color-blue-800) 40%,transparent)}}.border-emerald-300{border-color:var(--color-emerald-300)}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-emerald-800\/40{border-color:#005f4666}@supports (color:color-mix(in lab,red,red)){.border-emerald-800\/40{border-color:color-mix(in oklab,var(--color-emerald-800) 40%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-indigo-500\/20{border-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/20{border-color:color-mix(in oklab,var(--color-indigo-500) 20%,transparent)}}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/30{border-color:color-mix(in oklab,var(--color-indigo-500) 30%,transparent)}}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-500{border-color:var(--color-rose-500)}.border-rose-500\/20{border-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/20{border-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-rose-800\/50{border-color:#a3003780}@supports (color:color-mix(in lab,red,red)){.border-rose-800\/50{border-color:color-mix(in oklab,var(--color-rose-800) 50%,transparent)}}.border-rose-800\/60{border-color:#a3003799}@supports (color:color-mix(in lab,red,red)){.border-rose-800\/60{border-color:color-mix(in oklab,var(--color-rose-800) 60%,transparent)}}.border-sky-300{border-color:var(--color-sky-300)}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-500\/30{border-color:#62748e4d}@supports (color:color-mix(in lab,red,red)){.border-slate-500\/30{border-color:color-mix(in oklab,var(--color-slate-500) 30%,transparent)}}.border-slate-700{border-color:var(--color-slate-700)}.border-slate-700\/50{border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.border-slate-700\/50{border-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.border-slate-700\/60{border-color:#31415899}@supports (color:color-mix(in lab,red,red)){.border-slate-700\/60{border-color:color-mix(in oklab,var(--color-slate-700) 60%,transparent)}}.border-slate-700\/80{border-color:#314158cc}@supports (color:color-mix(in lab,red,red)){.border-slate-700\/80{border-color:color-mix(in oklab,var(--color-slate-700) 80%,transparent)}}.border-slate-800{border-color:var(--color-slate-800)}.border-slate-800\/80{border-color:#1d293dcc}@supports (color:color-mix(in lab,red,red)){.border-slate-800\/80{border-color:color-mix(in oklab,var(--color-slate-800) 80%,transparent)}}.border-slate-800\/90{border-color:#1d293de6}@supports (color:color-mix(in lab,red,red)){.border-slate-800\/90{border-color:color-mix(in oklab,var(--color-slate-800) 90%,transparent)}}.border-teal-500\/20{border-color:#00baa733}@supports (color:color-mix(in lab,red,red)){.border-teal-500\/20{border-color:color-mix(in oklab,var(--color-teal-500) 20%,transparent)}}.border-transparent{border-color:#0000}.border-t-blue-400{border-top-color:var(--color-blue-400)}.bg-\[\#0b101b\]\/95{background-color:#0b101bf2}.bg-\[\#0d121f\]{background-color:#0d121f}.bg-\[\#0d121f\]\/60{background-color:#0d121f99}.bg-\[\#0d121f\]\/80{background-color:#0d121fcc}.bg-\[\#0d121f\]\/90{background-color:#0d121fe6}.bg-\[\#0d121f\]\/95{background-color:#0d121ff2}.bg-\[\#0f1523\]{background-color:#0f1523}.bg-\[\#0f1523\]\/80{background-color:#0f1523cc}.bg-\[\#0f1523\]\/90{background-color:#0f1523e6}.bg-\[\#0f1523\]\/95{background-color:#0f1523f2}.bg-\[\#090d16\]{background-color:#090d16}.bg-\[\#141414\]{background-color:#141414}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-amber-950\/40{background-color:#46190166}@supports (color:color-mix(in lab,red,red)){.bg-amber-950\/40{background-color:color-mix(in oklab,var(--color-amber-950) 40%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-600\/10{background-color:#155dfc1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-600\/10{background-color:color-mix(in oklab,var(--color-blue-600) 10%,transparent)}}.bg-blue-600\/20{background-color:#155dfc33}@supports (color:color-mix(in lab,red,red)){.bg-blue-600\/20{background-color:color-mix(in oklab,var(--color-blue-600) 20%,transparent)}}.bg-blue-950\/30{background-color:#1624564d}@supports (color:color-mix(in lab,red,red)){.bg-blue-950\/30{background-color:color-mix(in oklab,var(--color-blue-950) 30%,transparent)}}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-emerald-600\/10{background-color:#0097671a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-600\/10{background-color:color-mix(in oklab,var(--color-emerald-600) 10%,transparent)}}.bg-emerald-950\/40{background-color:#002c2266}@supports (color:color-mix(in lab,red,red)){.bg-emerald-950\/40{background-color:color-mix(in oklab,var(--color-emerald-950) 40%,transparent)}}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/10{background-color:color-mix(in oklab,var(--color-indigo-500) 10%,transparent)}}.bg-indigo-600\/10{background-color:#4f39f61a}@supports (color:color-mix(in lab,red,red)){.bg-indigo-600\/10{background-color:color-mix(in oklab,var(--color-indigo-600) 10%,transparent)}}.bg-indigo-600\/15{background-color:#4f39f626}@supports (color:color-mix(in lab,red,red)){.bg-indigo-600\/15{background-color:color-mix(in oklab,var(--color-indigo-600) 15%,transparent)}}.bg-purple-500{background-color:var(--color-purple-500)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-rose-600{background-color:var(--color-rose-600)}.bg-rose-600\/90{background-color:#e70044e6}@supports (color:color-mix(in lab,red,red)){.bg-rose-600\/90{background-color:color-mix(in oklab,var(--color-rose-600) 90%,transparent)}}.bg-rose-900\/80{background-color:#8b0836cc}@supports (color:color-mix(in lab,red,red)){.bg-rose-900\/80{background-color:color-mix(in oklab,var(--color-rose-900) 80%,transparent)}}.bg-rose-950\/40{background-color:#4d021866}@supports (color:color-mix(in lab,red,red)){.bg-rose-950\/40{background-color:color-mix(in oklab,var(--color-rose-950) 40%,transparent)}}.bg-rose-950\/50{background-color:#4d021880}@supports (color:color-mix(in lab,red,red)){.bg-rose-950\/50{background-color:color-mix(in oklab,var(--color-rose-950) 50%,transparent)}}.bg-sky-50{background-color:var(--color-sky-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-500\/10{background-color:#62748e1a}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/10{background-color:color-mix(in oklab,var(--color-slate-500) 10%,transparent)}}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-800\/60{background-color:#1d293d99}@supports (color:color-mix(in lab,red,red)){.bg-slate-800\/60{background-color:color-mix(in oklab,var(--color-slate-800) 60%,transparent)}}.bg-slate-800\/80{background-color:#1d293dcc}@supports (color:color-mix(in lab,red,red)){.bg-slate-800\/80{background-color:color-mix(in oklab,var(--color-slate-800) 80%,transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/40{background-color:#0f172b66}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/40{background-color:color-mix(in oklab,var(--color-slate-900) 40%,transparent)}}.bg-slate-900\/60{background-color:#0f172b99}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/60{background-color:color-mix(in oklab,var(--color-slate-900) 60%,transparent)}}.bg-slate-900\/70{background-color:#0f172bb3}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/70{background-color:color-mix(in oklab,var(--color-slate-900) 70%,transparent)}}.bg-slate-900\/80{background-color:#0f172bcc}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/80{background-color:color-mix(in oklab,var(--color-slate-900) 80%,transparent)}}.bg-slate-900\/90{background-color:#0f172be6}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/90{background-color:color-mix(in oklab,var(--color-slate-900) 90%,transparent)}}.bg-teal-500{background-color:var(--color-teal-500)}.bg-teal-500\/10{background-color:#00baa71a}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/10{background-color:color-mix(in oklab,var(--color-teal-500) 10%,transparent)}}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-400{--tw-gradient-from:var(--color-blue-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-600{--tw-gradient-from:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-indigo-300{--tw-gradient-via:var(--color-indigo-300);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-indigo-500{--tw-gradient-via:var(--color-indigo-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-teal-400{--tw-gradient-via:var(--color-teal-400);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-blue-500{--tw-gradient-to:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-600{--tw-gradient-to:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-300{--tw-gradient-to:var(--color-teal-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-400{--tw-gradient-to:var(--color-teal-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-amber-200{color:var(--color-amber-200)}.text-amber-200\/80{color:#fee685cc}@supports (color:color-mix(in lab,red,red)){.text-amber-200\/80{color:color-mix(in oklab,var(--color-amber-200) 80%,transparent)}}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-900{color:var(--color-amber-900)}.text-blue-200{color:var(--color-blue-200)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-200{color:var(--color-emerald-200)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-800{color:var(--color-emerald-800)}.text-gray-200{color:var(--color-gray-200)}.text-gray-400{color:var(--color-gray-400)}.text-green-400{color:var(--color-green-400)}.text-indigo-400{color:var(--color-indigo-400)}.text-rose-100{color:var(--color-rose-100)}.text-rose-200{color:var(--color-rose-200)}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-rose-500{color:var(--color-rose-500)}.text-rose-800{color:var(--color-rose-800)}.text-sky-800{color:var(--color-sky-800)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-teal-400{color:var(--color-teal-400)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.placeholder-slate-500::placeholder{color:var(--color-slate-500)}.opacity-15{opacity:.15}.opacity-20{opacity:.2}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab,red,red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-500\/10{--tw-shadow-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.shadow-blue-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-500\/20{--tw-shadow-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.shadow-blue-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-600\/20{--tw-shadow-color:#155dfc33}@supports (color:color-mix(in lab,red,red)){.shadow-blue-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-600\/25{--tw-shadow-color:#155dfc40}@supports (color:color-mix(in lab,red,red)){.shadow-blue-600\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-600) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-600\/30{--tw-shadow-color:#155dfc4d}@supports (color:color-mix(in lab,red,red)){.shadow-blue-600\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-600) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-rose-600\/20{--tw-shadow-color:#e7004433}@supports (color:color-mix(in lab,red,red)){.shadow-rose-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-rose-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-blue-500\/20{--tw-ring-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.ring-blue-500\/20{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.ring-blue-500\/40{--tw-ring-color:#3080ff66}@supports (color:color-mix(in lab,red,red)){.ring-blue-500\/40{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 40%, transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-md{--tw-blur:blur(var(--blur-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:text-blue-400:is(:where(.group):hover *){color:var(--color-blue-400)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.selection\:bg-blue-600 ::selection{background-color:var(--color-blue-600)}.selection\:bg-blue-600::selection{background-color:var(--color-blue-600)}.selection\:text-white ::selection{color:var(--color-white)}.selection\:text-white::selection{color:var(--color-white)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}@media(hover:hover){.hover\:border-amber-500\/30:hover{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-500\/30:hover{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:border-blue-500\/30:hover{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-blue-500\/30:hover{border-color:color-mix(in oklab,var(--color-blue-500) 30%,transparent)}}.hover\:border-blue-500\/80:hover{border-color:#3080ffcc}@supports (color:color-mix(in lab,red,red)){.hover\:border-blue-500\/80:hover{border-color:color-mix(in oklab,var(--color-blue-500) 80%,transparent)}}.hover\:border-emerald-500\/30:hover{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-emerald-500\/30:hover{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.hover\:border-indigo-500\/30:hover{border-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-indigo-500\/30:hover{border-color:color-mix(in oklab,var(--color-indigo-500) 30%,transparent)}}.hover\:border-rose-800\/60:hover{border-color:#a3003799}@supports (color:color-mix(in lab,red,red)){.hover\:border-rose-800\/60:hover{border-color:color-mix(in oklab,var(--color-rose-800) 60%,transparent)}}.hover\:border-slate-700:hover{border-color:var(--color-slate-700)}.hover\:border-slate-700\/80:hover{border-color:#314158cc}@supports (color:color-mix(in lab,red,red)){.hover\:border-slate-700\/80:hover{border-color:color-mix(in oklab,var(--color-slate-700) 80%,transparent)}}.hover\:border-teal-500\/30:hover{border-color:#00baa74d}@supports (color:color-mix(in lab,red,red)){.hover\:border-teal-500\/30:hover{border-color:color-mix(in oklab,var(--color-teal-500) 30%,transparent)}}.hover\:bg-amber-500\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-500\/5:hover{background-color:#3080ff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/5:hover{background-color:color-mix(in oklab,var(--color-blue-500) 5%,transparent)}}.hover\:bg-blue-500\/20:hover{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/20:hover{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.hover\:bg-rose-600:hover{background-color:var(--color-rose-600)}.hover\:bg-rose-950\/30:hover{background-color:#4d02184d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-rose-950\/30:hover{background-color:color-mix(in oklab,var(--color-rose-950) 30%,transparent)}}.hover\:bg-rose-950\/40:hover{background-color:#4d021866}@supports (color:color-mix(in lab,red,red)){.hover\:bg-rose-950\/40:hover{background-color:color-mix(in oklab,var(--color-rose-950) 40%,transparent)}}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-slate-800\/40:hover{background-color:#1d293d66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-800\/40:hover{background-color:color-mix(in oklab,var(--color-slate-800) 40%,transparent)}}.hover\:bg-slate-800\/50:hover{background-color:#1d293d80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-800\/50:hover{background-color:color-mix(in oklab,var(--color-slate-800) 50%,transparent)}}.hover\:bg-slate-800\/60:hover{background-color:#1d293d99}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-800\/60:hover{background-color:color-mix(in oklab,var(--color-slate-800) 60%,transparent)}}.hover\:from-blue-500:hover{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-indigo-500:hover{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-rose-300:hover{color:var(--color-rose-300)}.hover\:text-rose-400:hover{color:var(--color-rose-400)}.hover\:text-slate-100:hover{color:var(--color-slate-100)}.hover\:text-slate-200:hover{color:var(--color-slate-200)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-blue-500\/50:focus{--tw-ring-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.focus\:ring-blue-500\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 50%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:block{display:block}.sm\:flex{display:flex}.sm\:w-80{width:calc(var(--spacing) * 80)}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:self-auto{align-self:auto}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media(min-width:48rem){.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}:where(.md\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.md\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}.md\:p-8{padding:calc(var(--spacing) * 8)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(min-width:64rem){.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}.\[\&\>option\]\:bg-slate-900>option{background-color:var(--color-slate-900)}.\[\&\>option\]\:text-white>option{color:var(--color-white)}}.bg-white{background-color:#111!important}.bg-slate-50,.bg-slate-50\/50,.bg-slate-50\/60,.bg-slate-50\/75,.bg-slate-50\/80,.bg-slate-50\/90{background-color:#161616!important}.bg-slate-100,.bg-slate-200{background-color:#202020!important}.border-slate-100{border-color:#222!important}.border-slate-200{border-color:#2d2d2d!important}.border-slate-300{border-color:#3d3d3d!important}.divide-slate-100>:not([hidden])~:not([hidden]),.divide-slate-200>:not([hidden])~:not([hidden]){border-color:#242424!important}.text-slate-900{color:#fff!important}.text-slate-800{color:#f8fafc!important}.text-slate-700{color:#f1f5f9!important}.text-slate-600{color:#e2e8f0!important}.text-slate-500{color:#cbd5e1!important}.text-slate-400{color:#94a3b8!important}.text-gray-900{color:#fff!important}.text-gray-800{color:#f8fafc!important}.text-gray-700{color:#f1f5f9!important}.text-gray-600{color:#e2e8f0!important}.text-gray-500{color:#cbd5e1!important}.text-gray-400{color:#94a3b8!important}.bg-emerald-50,.bg-emerald-50\/40,.bg-emerald-50\/60{background-color:#10b98129!important}.text-emerald-700,.text-emerald-800,.text-emerald-900{color:#6ee7b7!important}.border-emerald-200,.border-emerald-300{border-color:#6ee7b759!important}.bg-amber-50,.bg-amber-50\/40,.bg-amber-50\/60{background-color:#f59e0b29!important}.text-amber-700,.text-amber-800,.text-amber-900{color:#fcd34d!important}.border-amber-200,.border-amber-300{border-color:#fcd34d59!important}.bg-rose-50,.bg-rose-50\/40,.bg-rose-50\/60{background-color:#f43f5e29!important}.text-rose-700,.text-rose-800,.text-rose-900{color:#fda4af!important}.border-rose-200,.border-rose-300{border-color:#fda4af59!important}.bg-purple-50,.bg-indigo-50{background-color:#8b5cf629!important}.text-purple-700,.text-purple-800,.text-indigo-700,.text-indigo-800{color:#d8b4fe!important}.border-purple-200,.border-purple-300,.border-indigo-200,.border-indigo-300{border-color:#d8b4fe59!important}.bg-sky-50,.bg-blue-50{background-color:#3b82f629!important}.text-sky-700,.text-sky-800,.text-blue-700,.text-blue-800{color:#93c5fd!important}.border-sky-200,.border-sky-300,.border-blue-200,.border-blue-300{border-color:#93c5fd59!important}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]),select,textarea{color:#fff!important;background-color:#141414!important;border-color:#383838!important}input::placeholder,textarea::placeholder{color:#94a3b8!important}th{color:#cbd5e1!important}.hover\:bg-slate-50:hover,.hover\:bg-slate-50\/80:hover,.hover\:bg-slate-100:hover{background-color:#1f1f1f!important}.hover\:text-slate-800:hover,.hover\:text-slate-900:hover{color:#fff!important}.bg-emerald-600{background-color:#2563eb!important}.hover\:bg-emerald-500:hover,.hover\:bg-emerald-700:hover{background-color:#1d4ed8!important}.border-emerald-600{border-color:#3b82f6!important}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}} diff --git a/PostFundManagement.ConsoleUI/dist/assets/index-COrccDuP.js b/PostFundManagement.ConsoleUI/dist/assets/index-COrccDuP.js new file mode 100644 index 0000000..8a426e3 --- /dev/null +++ b/PostFundManagement.ConsoleUI/dist/assets/index-COrccDuP.js @@ -0,0 +1,399 @@ +var Dv=e=>{throw TypeError(e)};var Qm=(e,n,r)=>n.has(e)||Dv("Cannot "+r);var k=(e,n,r)=>(Qm(e,n,"read from private field"),r?r.call(e):n.get(e)),De=(e,n,r)=>n.has(e)?Dv("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(e):n.set(e,r),ve=(e,n,r,a)=>(Qm(e,n,"write to private field"),a?a.call(e,r):n.set(e,r),r),Ze=(e,n,r)=>(Qm(e,n,"access private method"),r);var gd=(e,n,r,a)=>({set _(o){ve(e,n,o,r)},get _(){return k(e,n,a)}});(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const u of o)if(u.type==="childList")for(const f of u.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&a(f)}).observe(document,{childList:!0,subtree:!0});function r(o){const u={};return o.integrity&&(u.integrity=o.integrity),o.referrerPolicy&&(u.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?u.credentials="include":o.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function a(o){if(o.ep)return;o.ep=!0;const u=r(o);fetch(o.href,u)}})();function lE(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Km={exports:{}},rc={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Mv;function oE(){if(Mv)return rc;Mv=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(a,o,u){var f=null;if(u!==void 0&&(f=""+u),o.key!==void 0&&(f=""+o.key),"key"in o){u={};for(var m in o)m!=="key"&&(u[m]=o[m])}else u=o;return o=u.ref,{$$typeof:e,type:a,key:f,ref:o!==void 0?o:null,props:u}}return rc.Fragment=n,rc.jsx=r,rc.jsxs=r,rc}var zv;function cE(){return zv||(zv=1,Km.exports=oE()),Km.exports}var c=cE(),Ym={exports:{}},Be={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Uv;function uE(){if(Uv)return Be;Uv=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),f=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),v=Symbol.for("react.view_transition"),S=Symbol.iterator;function A(_){return _===null||typeof _!="object"?null:(_=S&&_[S]||_["@@iterator"],typeof _=="function"?_:null)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},O=Object.assign,N={};function j(_,Y,he){this.props=_,this.context=Y,this.refs=N,this.updater=he||C}j.prototype.isReactComponent={},j.prototype.setState=function(_,Y){if(typeof _!="object"&&typeof _!="function"&&_!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,_,Y,"setState")},j.prototype.forceUpdate=function(_){this.updater.enqueueForceUpdate(this,_,"forceUpdate")};function F(){}F.prototype=j.prototype;function q(_,Y,he){this.props=_,this.context=Y,this.refs=N,this.updater=he||C}var B=q.prototype=new F;B.constructor=q,O(B,j.prototype),B.isPureReactComponent=!0;var re=Array.isArray;function Q(){}var X={H:null,A:null,T:null,S:null},se=Object.prototype.hasOwnProperty;function fe(_,Y,he){var ce=he.ref;return{$$typeof:e,type:_,key:Y,ref:ce!==void 0?ce:null,props:he}}function we(_,Y){return fe(_.type,Y,_.props)}function Ce(_){return typeof _=="object"&&_!==null&&_.$$typeof===e}function Z(_){var Y={"=":"=0",":":"=2"};return"$"+_.replace(/[=:]/g,function(he){return Y[he]})}var W=/\/+/g;function oe(_,Y){return typeof _=="object"&&_!==null&&_.key!=null?Z(""+_.key):Y.toString(36)}function ee(_){switch(_.status){case"fulfilled":return _.value;case"rejected":throw _.reason;default:switch(typeof _.status=="string"?_.then(Q,Q):(_.status="pending",_.then(function(Y){_.status==="pending"&&(_.status="fulfilled",_.value=Y)},function(Y){_.status==="pending"&&(_.status="rejected",_.reason=Y)})),_.status){case"fulfilled":return _.value;case"rejected":throw _.reason}}throw _}function z(_,Y,he,ce,Oe){var Pe=typeof _;(Pe==="undefined"||Pe==="boolean")&&(_=null);var qe=!1;if(_===null)qe=!0;else switch(Pe){case"bigint":case"string":case"number":qe=!0;break;case"object":switch(_.$$typeof){case e:case n:qe=!0;break;case g:return qe=_._init,z(qe(_._payload),Y,he,ce,Oe)}}if(qe)return Oe=Oe(_),qe=ce===""?"."+oe(_,0):ce,re(Oe)?(he="",qe!=null&&(he=qe.replace(W,"$&/")+"/"),z(Oe,Y,he,"",function(at){return at})):Oe!=null&&(Ce(Oe)&&(Oe=we(Oe,he+(Oe.key==null||_&&_.key===Oe.key?"":(""+Oe.key).replace(W,"$&/")+"/")+qe)),Y.push(Oe)),1;qe=0;var _e=ce===""?".":ce+":";if(re(_))for(var je=0;je<_.length;je++)ce=_[je],Pe=_e+oe(ce,je),qe+=z(ce,Y,he,Pe,Oe);else if(je=A(_),typeof je=="function")for(_=je.call(_),je=0;!(ce=_.next()).done;)ce=ce.value,Pe=_e+oe(ce,je++),qe+=z(ce,Y,he,Pe,Oe);else if(Pe==="object"){if(typeof _.then=="function")return z(ee(_),Y,he,ce,Oe);throw Y=String(_),Error("Objects are not valid as a React child (found: "+(Y==="[object Object]"?"object with keys {"+Object.keys(_).join(", ")+"}":Y)+"). If you meant to render a collection of children, use an array instead.")}return qe}function ue(_,Y,he){if(_==null)return _;var ce=[],Oe=0;return z(_,ce,"","",function(Pe){return Y.call(he,Pe,Oe++)}),ce}function Me(_){if(_._status===-1){var Y=_._result,he=Y();he.then(function(ce){(_._status===0||_._status===-1)&&(_._status=1,_._result=ce,he.status===void 0&&(he.status="fulfilled",he.value=ce))},function(ce){(_._status===0||_._status===-1)&&(_._status=2,_._result=ce,he.status===void 0&&(he.status="rejected",he.reason=ce))}),_._status===-1&&(_._status=0,_._result=he)}if(_._status===1)return _._result.default;throw _._result}var Ae=typeof reportError=="function"?reportError:function(_){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var Y=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof _=="object"&&_!==null&&typeof _.message=="string"?String(_.message):String(_),error:_});if(!window.dispatchEvent(Y))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",_);return}console.error(_)};function Ye(_){var Y=X.T,he={};he.types=Y!==null?Y.types:null,X.T=he;try{var ce=_(),Oe=X.S;Oe!==null&&Oe(he,ce),typeof ce=="object"&&ce!==null&&typeof ce.then=="function"&&ce.then(Q,Ae)}catch(Pe){Ae(Pe)}finally{Y!==null&&he.types!==null&&(Y.types=he.types),X.T=Y}}function $e(_){var Y=X.T;if(Y!==null){var he=Y.types;he===null?Y.types=[_]:he.indexOf(_)===-1&&he.push(_)}else Ye($e.bind(null,_))}var ut={map:ue,forEach:function(_,Y,he){ue(_,function(){Y.apply(this,arguments)},he)},count:function(_){var Y=0;return ue(_,function(){Y++}),Y},toArray:function(_){return ue(_,function(Y){return Y})||[]},only:function(_){if(!Ce(_))throw Error("React.Children.only expected to receive a single React element child.");return _}};return Be.Activity=x,Be.Children=ut,Be.Component=j,Be.Fragment=r,Be.Profiler=o,Be.PureComponent=q,Be.StrictMode=a,Be.Suspense=p,Be.ViewTransition=v,Be.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=X,Be.__COMPILER_RUNTIME={__proto__:null,c:function(_){return X.H.useMemoCache(_)}},Be.addTransitionType=$e,Be.cache=function(_){return function(){return _.apply(null,arguments)}},Be.cacheSignal=function(){return null},Be.cloneElement=function(_,Y,he){if(_==null)throw Error("The argument must be a React element, but you passed "+_+".");var ce=O({},_.props),Oe=_.key;if(Y!=null)for(Pe in Y.key!==void 0&&(Oe=""+Y.key),Y)!se.call(Y,Pe)||Pe==="key"||Pe==="__self"||Pe==="__source"||Pe==="ref"&&Y.ref===void 0||(ce[Pe]=Y[Pe]);var Pe=arguments.length-2;if(Pe===1)ce.children=he;else if(1>>1,Ae=ee[Me];if(0>>1;Meo(ut,ue))_o(Y,ut)?(ee[Me]=Y,ee[_]=ue,Me=_):(ee[Me]=ut,ee[$e]=ue,Me=$e);else if(_o(Y,ue))ee[Me]=Y,ee[_]=ue,Me=_;else break e}}return z}function o(ee,z){var ue=ee.sortIndex-z.sortIndex;return ue!==0?ue:ee.id-z.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;e.unstable_now=function(){return u.now()}}else{var f=Date,m=f.now();e.unstable_now=function(){return f.now()-m}}var p=[],y=[],g=1,x=null,v=3,S=!1,A=!1,C=!1,O=!1,N=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,F=typeof setImmediate<"u"?setImmediate:null;function q(ee){for(var z=r(y);z!==null;){if(z.callback===null)a(y);else if(z.startTime<=ee)a(y),z.sortIndex=z.expirationTime,n(p,z);else break;z=r(y)}}function B(ee){if(C=!1,q(ee),!A)if(r(p)!==null)A=!0,re||(re=!0,Ce());else{var z=r(y);z!==null&&oe(B,z.startTime-ee)}}var re=!1,Q=-1,X=5,se=-1;function fe(){return O?!0:!(e.unstable_now()-seee&&fe());){var Me=x.callback;if(typeof Me=="function"){x.callback=null,v=x.priorityLevel;var Ae=Me(x.expirationTime<=ee);if(ee=e.unstable_now(),typeof Ae=="function"){x.callback=Ae,q(ee),z=!0;break t}x===r(p)&&a(p),q(ee)}else a(p);x=r(p)}if(x!==null)z=!0;else{var Ye=r(y);Ye!==null&&oe(B,Ye.startTime-ee),z=!1}}break e}finally{x=null,v=ue,S=!1}z=void 0}}finally{z?Ce():re=!1}}}var Ce;if(typeof F=="function")Ce=function(){F(we)};else if(typeof MessageChannel<"u"){var Z=new MessageChannel,W=Z.port2;Z.port1.onmessage=we,Ce=function(){W.postMessage(null)}}else Ce=function(){N(we,0)};function oe(ee,z){Q=N(function(){ee(e.unstable_now())},z)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(ee){ee.callback=null},e.unstable_forceFrameRate=function(ee){0>ee||125Me?(ee.sortIndex=ue,n(y,ee),r(p)===null&&ee===r(y)&&(C?(j(Q),Q=-1):C=!0,oe(B,ue-Me))):(ee.sortIndex=Ae,n(p,ee),A||S||(A=!0,re||(re=!0,Ce()))),ee},e.unstable_shouldYield=fe,e.unstable_wrapCallback=function(ee){var z=v;return function(){var ue=v;v=z;try{return ee.apply(this,arguments)}finally{v=ue}}}})(Wm)),Wm}var Pv;function fE(){return Pv||(Pv=1,Xm.exports=dE()),Xm.exports}var e0={exports:{}},vn={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Hv;function hE(){if(Hv)return vn;Hv=1;var e=yp();function n(g){var x="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),e0.exports=hE(),e0.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Bv;function pE(){if(Bv)return ic;Bv=1;var e=fE(),n=yp(),r=mE();function a(t){var s="https://react.dev/errors/"+t;if(1Zt||(t.current=Tt[Zt],Tt[Zt]=null,Zt--)}function pe(t,s){Zt++,Tt[Zt]=t.current,t.current=s}var $=J(null),Ge=J(null),rt=J(null),qt=J(null);function Sr(t,s){switch(pe(rt,s),pe(Ge,t),pe($,null),s.nodeType){case 9:case 11:t=(t=s.documentElement)&&(t=t.namespaceURI)?By(t):0;break;default:if(t=s.tagName,s=s.namespaceURI)s=By(s),t=$y(s,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}Re($),pe($,t)}function Sn(){Re($),Re(Ge),Re(rt)}function Hi(t){var s=t.memoizedState;s!==null&&(Cl._currentValue=s.memoizedState,pe(qt,t)),s=$.current;var i=$y(s,t.type);s!==i&&(pe(Ge,t),pe($,i))}function Kr(t){Ge.current===t&&(Re($),Re(Ge)),qt.current===t&&(Re(qt),Cl._currentValue=at)}var er,qa;function ae(t){if(er===void 0)try{throw Error()}catch(i){var s=i.stack.trim().match(/\n( *(at )?)/);er=s&&s[1]||"",qa=-1)":-1d||R[l]!==P[d]){var K=` +`+R[l].replace(" at new "," at ");return t.displayName&&K.includes("")&&(K=K.replace("",t.displayName)),K}while(1<=l&&0<=d);break}}}finally{dt=!1,Error.prepareStackTrace=i}return(i=t?t.displayName||t.name:"")?ae(i):""}function Bi(t,s){switch(t.tag){case 26:case 27:case 5:return ae(t.type);case 16:return ae("Lazy");case 13:return t.child!==s&&s!==null?ae("Suspense Fallback"):ae("Suspense");case 19:return ae("SuspenseList");case 0:case 15:return qi(t.type,!1);case 11:return qi(t.type.render,!1);case 1:return qi(t.type,!0);case 31:return ae("Activity");case 30:return ae("ViewTransition");default:return""}}function E(t){try{var s="",i=null;do s+=Bi(t,i),i=t,t=t.return;while(t);return s}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var H=Object.prototype.hasOwnProperty,I=e.unstable_scheduleCallback,le=e.unstable_cancelCallback,de=e.unstable_shouldYield,xe=e.unstable_requestPaint,me=e.unstable_now,be=e.unstable_getCurrentPriorityLevel,Te=e.unstable_ImmediatePriority,Ue=e.unstable_UserBlockingPriority,vt=e.unstable_NormalPriority,Rn=e.unstable_LowPriority,Bn=e.unstable_IdlePriority,$i=e.log,vf=e.unstable_setDisableYieldValue,Ds=null,Tn=null;function Ms(t){if(typeof $i=="function"&&vf(t),Tn&&typeof Tn.setStrictMode=="function")try{Tn.setStrictMode(Ds,t)}catch{}}var Wn=Math.clz32?Math.clz32:vj,bj=Math.log,yj=Math.LN2;function vj(t){return t>>>=0,t===0?32:31-(bj(t)/yj|0)|0}var Fc=256,Vc=262144,Zc=4194304;function Fi(t){var s=t&42;if(s!==0)return s;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&-t;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Gc(t,s,i){var l=t.pendingLanes;if(l===0)return 0;var d=0,h=t.suspendedLanes,b=t.pingedLanes;t=t.warmLanes;var w=l&134217727;return w!==0?(l=w&~h,l!==0?d=Fi(l):(b&=w,b!==0?d=Fi(b):i||(i=w&~t,i!==0&&(d=Fi(i))))):(w=l&~h,w!==0?d=Fi(w):b!==0?d=Fi(b):i||(i=l&~t,i!==0&&(d=Fi(i)))),d===0?0:s!==0&&s!==d&&(s&h)===0&&(h=d&-d,i=s&-s,h>=i||h===32&&(i&4194048)!==0)?s:d}function fo(t,s){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&s)===0}function mg(t,s){(s&8)!==0&&(s|=s&32);var i=t.entangledLanes;if(i!==0)for(t=t.entanglements,i&=s;0i;i++)s.push(t);return s}function ho(t,s){t.pendingLanes|=s,s!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function _j(t,s,i,l,d,h){var b=t.pendingLanes;t.pendingLanes=i,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=i,t.entangledLanes&=i,t.errorRecoveryDisabledLanes&=i,t.shellSuspendCounter=0;var w=t.entanglements,R=t.expirationTimes,P=t.hiddenUpdates;for(i=b&~i;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Tf=!1;if(Er)try{var xo={};Object.defineProperty(xo,"passive",{get:function(){Tf=!0}}),window.addEventListener("test",xo,xo),window.removeEventListener("test",xo,xo)}catch{Tf=!1}var Yr=null,kf=null,Wc=null;function Lg(){if(Wc)return Wc;var t,s=kf,i=s.length,l,d="value"in Yr?Yr.value:Yr.textContent,h=d.length;for(t=0;t=vo),Fg=" ",Vg=!1;function Zg(t,s){switch(t){case"keyup":return r5.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gg(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Ya=!1;function a5(t,s){switch(t){case"compositionend":return Gg(s);case"keypress":return s.which!==32?null:(Vg=!0,Fg);case"textInput":return t=s.data,t===Fg&&Vg?null:t;default:return null}}function l5(t,s){if(Ya)return t==="compositionend"||!If&&Zg(t,s)?(t=Lg(),Wc=kf=Yr=null,Ya=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function tx(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function nx(t,s){var i=tx(t);t=0;for(var l;i;){if(i.nodeType===3){if(l=t+i.textContent.length,t<=s&&l>=s)return{node:i,offset:s-t};t=l}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=tx(i)}}function sx(t,s){return t&&s?t===s?!0:t&&t.nodeType===3?!1:s&&s.nodeType===3?sx(t,s.parentNode):"contains"in t?t.contains(s):t.compareDocumentPosition?!!(t.compareDocumentPosition(s)&16):!1:!1}function rx(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var s=Hf(t.document);s instanceof t.HTMLIFrameElement;){try{var i=typeof s.contentWindow.location.href=="string"}catch{i=!1}if(i)t=s.contentWindow;else break;s=Hf(t.document)}return s}function qf(t){var s=t&&t.nodeName&&t.nodeName.toLowerCase();return s&&(s==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||s==="textarea"||t.contentEditable==="true")}var p5=Er&&"documentMode"in document&&11>=document.documentMode,Ja=null,Bf=null,No=null,$f=!1;function ix(t,s,i){var l=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;$f||Ja==null||Ja!==Hf(l)||(l=Ja,"selectionStart"in l&&qf(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),No&&So(No,l)||(No=l,l=rd(Bf,"onSelect"),0>=b,d-=b,nr=1<<32-Wn(s)+d|i<He?(Yt=ke,ke=null):Yt=ke.sibling;var st=U(L,ke,V[He],te);if(st===null){ke===null&&(ke=Yt);break}t&&ke&&st.alternate===null&&s(L,ke),D=h(st,D,He),et===null?Ne=st:et.sibling=st,et=st,ke=Yt}if(He===V.length)return i(L,ke),Qe&&Rr(L,He),Ne;if(ke===null){for(;HeHe?(Yt=ke,ke=null):Yt=ke.sibling;var wi=U(L,ke,st.value,te);if(wi===null){ke===null&&(ke=Yt);break}t&&ke&&wi.alternate===null&&s(L,ke),D=h(wi,D,He),et===null?Ne=wi:et.sibling=wi,et=wi,ke=Yt}if(st.done)return i(L,ke),Qe&&Rr(L,He),Ne;if(ke===null){for(;!st.done;He++,st=V.next())st=ne(L,st.value,te),st!==null&&(D=h(st,D,He),et===null?Ne=st:et.sibling=st,et=st);return Qe&&Rr(L,He),Ne}for(ke=l(ke);!st.done;He++,st=V.next())st=G(ke,L,He,st.value,te),st!==null&&(t&&(Yt=st.alternate,Yt!==null&&ke.delete(Yt.key===null?He:Yt.key)),D=h(st,D,He),et===null?Ne=st:et.sibling=st,et=st);return t&&ke.forEach(function(aE){return s(L,aE)}),Qe&&Rr(L,He),Ne}function Ve(L,D,V,te){if(typeof V=="object"&&V!==null&&V.type===we&&V.key===null&&V.props.ref===void 0&&(V=V.props.children),typeof V=="object"&&V!==null){switch(V.$$typeof){case se:e:{for(var Ne=V.key;D!==null;){if(D.key===Ne){if(Ne=V.type,Ne===we){if(D.tag===7){i(L,D.sibling),te=d(D,V.props.children),ni(te,V),te.return=L,L=te;break e}}else if(D.elementType===Ne||typeof Ne=="object"&&Ne!==null&&Ne.$$typeof===Ae&&sa(Ne)===D.type){i(L,D.sibling),te=d(D,V.props),ni(te,V),te.return=L,L=te;break e}i(L,D);break}else s(L,D);D=D.sibling}V.type===we?(te=Yi(V.props.children,L.mode,te,V.key),ni(te,V),te.return=L,L=te):(te=cu(V.type,V.key,V.props,null,L.mode,te),ni(te,V),te.return=L,L=te)}return b(L);case fe:e:{for(Ne=V.key;D!==null;){if(D.key===Ne)if(D.tag===4&&D.stateNode.containerInfo===V.containerInfo&&D.stateNode.implementation===V.implementation){i(L,D.sibling),te=d(D,V.children||[]),te.return=L,L=te;break e}else{i(L,D);break}else s(L,D);D=D.sibling}te=Yf(V,L.mode,te),te.return=L,L=te}return b(L);case Ae:return V=sa(V),Ve(L,D,V,te)}if(qe(V))return ge(L,D,V,te);if(ce(V)){if(Ne=ce(V),typeof Ne!="function")throw Error(a(150));return V=Ne.call(V),Ee(L,D,V,te)}if(typeof V.then=="function")return Ve(L,D,yu(V),te);if(V.$$typeof===oe)return Ve(L,D,pu(L,V),te);vu(L,V)}return typeof V=="string"&&V!==""||typeof V=="number"||typeof V=="bigint"?(V=""+V,D!==null&&D.tag===6?(i(L,D.sibling),te=d(D,V),te.return=L,L=te):(i(L,D),te=Kf(V,L.mode,te),te.return=L,L=te),b(L)):i(L,D)}return function(L,D,V,te){try{Ro=0;var Ne=Ve(L,D,V,te);return al=null,Ne}catch(ke){if(ke===il||ke===xu)throw ke;var et=Fn(29,ke,null,L.mode);return et.lanes=te,et.return=L,et}finally{}}}var ia=Ox(!0),Rx=Ox(!1),si=!1;function ah(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lh(t,s){t=t.updateQueue,s.updateQueue===t&&(s.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function ri(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function ii(t,s,i){var l=t.updateQueue;if(l===null)return null;if(l=l.shared,(lt&2)!==0){var d=l.pending;return d===null?s.next=s:(s.next=d.next,d.next=s),l.pending=s,s=ou(t),hx(t,null,i),s}return lu(t,l,s,i),ou(t)}function To(t,s,i){if(s=s.updateQueue,s!==null&&(s=s.shared,(i&4194048)!==0)){var l=s.lanes;l&=t.pendingLanes,i|=l,s.lanes=i,xg(t,i)}}function oh(t,s){var i=t.updateQueue,l=t.alternate;if(l!==null&&(l=l.updateQueue,i===l)){var d=null,h=null;if(i=i.firstBaseUpdate,i!==null){do{var b={lane:i.lane,tag:i.tag,payload:i.payload,callback:null,next:null};h===null?d=h=b:h=h.next=b,i=i.next}while(i!==null);h===null?d=h=s:h=h.next=s}else d=h=s;i={baseState:l.baseState,firstBaseUpdate:d,lastBaseUpdate:h,shared:l.shared,callbacks:l.callbacks},t.updateQueue=i;return}t=i.lastBaseUpdate,t===null?i.firstBaseUpdate=s:t.next=s,i.lastBaseUpdate=s}var ch=!1;function ko(){if(ch){var t=rl;if(t!==null)throw t}}function Do(t,s,i,l){ch=!1;var d=t.updateQueue;si=!1;var h=d.firstBaseUpdate,b=d.lastBaseUpdate,w=d.shared.pending;if(w!==null){d.shared.pending=null;var R=w,P=R.next;R.next=null,b===null?h=P:b.next=P,b=R;var K=t.alternate;K!==null&&(K=K.updateQueue,w=K.lastBaseUpdate,w!==b&&(w===null?K.firstBaseUpdate=P:w.next=P,K.lastBaseUpdate=R))}if(h!==null){var ne=d.baseState;b=0,K=P=R=null,w=h;do{var U=w.lane&-536870913,G=U!==w.lane;if(G?(We&U)===U:(l&U)===U){U!==0&&U===ta&&(ch=!0),K!==null&&(K=K.next={lane:0,tag:w.tag,payload:w.payload,callback:null,next:null});e:{var ge=t,Ee=w;U=s;var Ve=i;switch(Ee.tag){case 1:if(ge=Ee.payload,typeof ge=="function"){ne=ge.call(Ve,ne,U);break e}ne=ge;break e;case 3:ge.flags=ge.flags&-65537|128;case 0:if(ge=Ee.payload,U=typeof ge=="function"?ge.call(Ve,ne,U):ge,U==null)break e;ne=Q({},ne,U);break e;case 2:si=!0}}U=w.callback,U!==null&&(t.flags|=64,G&&(t.flags|=8192),G=d.callbacks,G===null?d.callbacks=[U]:G.push(U))}else G={lane:U,tag:w.tag,payload:w.payload,callback:w.callback,next:null},K===null?(P=K=G,R=ne):K=K.next=G,b|=U;if(w=w.next,w===null){if(w=d.shared.pending,w===null)break;G=w,w=G.next,G.next=null,d.lastBaseUpdate=G,d.shared.pending=null}}while(!0);K===null&&(R=ne),d.baseState=R,d.firstBaseUpdate=P,d.lastBaseUpdate=K,h===null&&(d.shared.lanes=0),fi|=b,t.lanes=b,t.memoizedState=ne}}function Tx(t,s){if(typeof t!="function")throw Error(a(191,t));t.call(s)}function kx(t,s){var i=t.callbacks;if(i!==null)for(t.callbacks=null,t=0;th?h:8;var b=_e.T,w={};w.types=b!==null?b.types:null,_e.T=w,Oh(t,!1,s,i);try{var R=d(),P=_e.S;if(P!==null&&P(w,R),R!==null&&typeof R=="object"&&typeof R.then=="function"){var K=E5(R,l);Io(t,s,K,as(t))}else Io(t,s,l,as(t))}catch(ne){Io(t,s,{then:function(){},status:"rejected",reason:ne},as())}finally{je.p=h,b!==null&&w.types!==null&&(b.types=w.types),_e.T=b}}function k5(){}function Ah(t,s,i,l){if(t.tag!==5)throw Error(a(476));var d=ub(t).queue;cb(t,d,s,at,i===null?k5:function(){return db(t),i(l)})}function ub(t){var s=t.memoizedState;if(s!==null)return s;s={memoizedState:at,baseState:at,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mr,lastRenderedState:at},next:null};var i={};return s.next={memoizedState:i,baseState:i,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mr,lastRenderedState:i},next:null},t.memoizedState=s,t=t.alternate,t!==null&&(t.memoizedState=s),s}function db(t){var s=ub(t);s.next===null&&(s=t.alternate.memoizedState),Io(t,s.next.queue,{},as())}function Ch(){return pn(Cl)}function fb(){return Bt().memoizedState}function hb(){return Bt().memoizedState}function D5(t){for(var s=t.return;s!==null;){switch(s.tag){case 24:case 3:var i=as();t=ri(i);var l=ii(s,t,i);l!==null&&(Qn(l,s,i),To(l,s,i)),s={cache:nh()},t.payload=s;return}s=s.return}}function M5(t,s,i){var l=as();i={lane:l,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},Ru(t)?pb(s,i):(i=Gf(t,s,i,l),i!==null&&(Qn(i,t,l),gb(i,s,l)))}function mb(t,s,i){var l=as();Io(t,s,i,l)}function Io(t,s,i,l){var d={lane:l,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null};if(Ru(t))pb(s,d);else{var h=t.alternate;if(t.lanes===0&&(h===null||h.lanes===0)&&(h=s.lastRenderedReducer,h!==null))try{var b=s.lastRenderedState,w=h(b,i);if(d.hasEagerState=!0,d.eagerState=w,ts(w,b))return lu(t,s,d,0),St===null&&au(),!1}catch{}finally{}if(i=Gf(t,s,d,l),i!==null)return Qn(i,t,l),gb(i,s,l),!0}return!1}function Oh(t,s,i,l){if(l={lane:2,revertLane:ym(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},Ru(t)){if(s)throw Error(a(479))}else s=Gf(t,i,l,2),s!==null&&Qn(s,t,2)}function Ru(t){var s=t.alternate;return t===Fe||s!==null&&s===Fe}function pb(t,s){ll=Su=!0;var i=t.pending;i===null?s.next=s:(s.next=i.next,i.next=s),t.pending=s}function gb(t,s,i){if((i&4194048)!==0){var l=s.lanes;l&=t.pendingLanes,i|=l,s.lanes=i,xg(t,i)}}var Tu={readContext:pn,use:Eu,useCallback:zt,useContext:zt,useEffect:zt,useImperativeHandle:zt,useLayoutEffect:zt,useInsertionEffect:zt,useMemo:zt,useReducer:zt,useRef:zt,useState:zt,useDebugValue:zt,useDeferredValue:zt,useTransition:zt,useSyncExternalStore:zt,useId:zt,useHostTransitionStatus:zt,useFormState:zt,useActionState:zt,useOptimistic:zt,useMemoCache:zt,useCacheRefresh:zt,useEffectEvent:zt},xb={readContext:pn,use:Eu,useCallback:function(t,s){return Dn().memoizedState=[t,s===void 0?null:s],t},useContext:pn,useEffect:eb,useImperativeHandle:function(t,s,i){i=i!=null?i.concat([t]):null,Cu(4194308,4,rb.bind(null,s,t),i)},useLayoutEffect:function(t,s){return Cu(4194308,4,t,s)},useInsertionEffect:function(t,s){Cu(4,2,t,s)},useMemo:function(t,s){var i=Dn();s=s===void 0?null:s;var l=t();if(aa){Ms(!0);try{t()}finally{Ms(!1)}}return i.memoizedState=[l,s],l},useReducer:function(t,s,i){var l=Dn();if(i!==void 0){var d=i(s);if(aa){Ms(!0);try{i(s)}finally{Ms(!1)}}}else d=s;return l.memoizedState=l.baseState=d,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:d},l.queue=t,t=t.dispatch=M5.bind(null,Fe,t),[l.memoizedState,t]},useRef:function(t){var s=Dn();return t={current:t},s.memoizedState=t},useState:function(t){t=_h(t);var s=t.queue,i=mb.bind(null,Fe,s);return s.dispatch=i,[t.memoizedState,i]},useDebugValue:jh,useDeferredValue:function(t,s){var i=Dn();return Eh(i,t,s)},useTransition:function(){var t=_h(!1);return t=cb.bind(null,Fe,t.queue,!0,!1),Dn().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,s,i){var l=Fe,d=Dn();if(Qe){if(i===void 0)throw Error(a(407));i=i()}else{if(i=s(),St===null)throw Error(a(349));(We&127)!==0||Lx(l,s,i)}d.memoizedState=i;var h={value:i,getSnapshot:s};return d.queue=h,eb(Hx.bind(null,l,h,t),[t]),l.flags|=2048,cl(9,{destroy:void 0},Px.bind(null,l,h,i,s),null),i},useId:function(){var t=Dn(),s=St.identifierPrefix;if(Qe){var i=sr,l=nr;i=(l&~(1<<32-Wn(l)-1)).toString(32)+i,s="_"+s+"R_"+i,i=Nu++,0<\/script>",h=h.removeChild(h.firstChild);break;case"select":h=typeof l.is=="string"?b.createElement("select",{is:l.is}):b.createElement("select"),l.multiple?h.multiple=!0:l.size&&(h.size=l.size);break;default:h=typeof l.is=="string"?b.createElement(d,{is:l.is}):b.createElement(d)}}h[mn]=s,h[$n]=l;e:for(b=s.child;b!==null;){if(b.tag===5||b.tag===6)h.appendChild(b.stateNode);else if(b.tag!==4&&b.tag!==27&&b.child!==null){b.child.return=b,b=b.child;continue}if(b===s)break e;for(;b.sibling===null;){if(b.return===null||b.return===s)break e;b=b.return}b.sibling.return=b.return,b=b.sibling}s.stateNode=h;e:switch(yn(h,d,l),d){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Ur(s)}}return jt(s),s.subtreeFlags&=-33554433,Bh(s,s.type,t===null?null:t.memoizedProps,s.pendingProps,i),null;case 6:if(t&&s.stateNode!=null)t.memoizedProps!==l&&Ur(s);else{if(typeof l!="string"&&s.stateNode===null)throw Error(a(166));if(t=rt.current,sl(s)){if(t=s.stateNode,i=s.memoizedProps,l=null,d=an,d!==null)switch(d.tag){case 27:case 5:l=d.memoizedProps}t[mn]=s,t=!!(t.nodeValue===i||l!==null&&l.suppressHydrationWarning===!0||Hy(t.nodeValue,i)),t||ei(s,!0)}else t=Yo(t).createTextNode(l),t[mn]=s,s.stateNode=t}return jt(s),null;case 31:if(i=s.memoizedState,t===null||t.memoizedState!==null){if(l=sl(s),i!==null){if(t===null){if(!l)throw Error(a(318));if(t=s.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(a(557));t[mn]=s}else Ji(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;jt(s),t=!1}else i=Wf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=i),t=!0;if(!t)return s.flags&256?(ns(s),s):(ns(s),null);if((s.flags&128)!==0)throw Error(a(558))}return jt(s),null;case 13:if(l=s.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(d=sl(s),l!==null&&l.dehydrated!==null){if(t===null){if(!d)throw Error(a(318));if(d=s.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(a(317));d[mn]=s}else Ji(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;jt(s),d=!1}else d=Wf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=d),d=!0;if(!d)return s.flags&256?(ns(s),s):(ns(s),null)}return ns(s),(s.flags&128)!==0?(s.lanes=i,s):(i=l!==null,t=t!==null&&t.memoizedState!==null,i&&(l=s.child,d=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(d=l.alternate.memoizedState.cachePool.pool),h=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(h=l.memoizedState.cachePool.pool),h!==d&&(l.flags|=2048)),i!==t&&i&&(s.child.flags|=8192),Iu(s,s.updateQueue),jt(s),null);case 4:return Sn(),t===null&&Sm(s.stateNode.containerInfo),s.flags|=67108864,jt(s),null;case 10:return kr(s.type),jt(s),null;case 19:if(hh(s),l=s.memoizedState,l===null)return jt(s),null;if(d=(s.flags&128)!==0,h=l.rendering,h===null)if(d)Po(l,!1);else{if(Ut!==0||t!==null&&(t.flags&128)!==0)for(t=s.child;t!==null;){if(h=_u(t),h!==null){for(s.flags|=128,Po(l,!1),t=h.updateQueue,s.updateQueue=t,Iu(s,t),s.subtreeFlags=0,t=i,i=s.child;i!==null;)mx(i,t),i=i.sibling;return Mo(s,xn.current&1|2),Qe&&Rr(s,l.treeForkCount),s.child}t=t.sibling}l.tail!==null&&me()>Ku&&(s.flags|=128,d=!0,Po(l,!1),s.lanes=4194304)}else{if(!d)if(t=_u(h),t!==null){if(s.flags|=128,d=!0,t=t.updateQueue,s.updateQueue=t,Iu(s,t),Po(l,!0),l.tail===null&&l.tailMode!=="collapsed"&&l.tailMode!=="visible"&&!h.alternate&&!Qe)return jt(s),null}else 2*me()-l.renderingStartTime>Ku&&i!==536870912&&(s.flags|=128,d=!0,Po(l,!1),s.lanes=4194304);l.isBackwards?(h.sibling=s.child,s.child=h):(t=l.last,t!==null?t.sibling=h:s.child=h,l.last=h)}if(l.tail!==null){t=l.tail;e:{for(i=t;i!==null;){if(i.alternate!==null){i=!1;break e}i=i.sibling}i=!0}return l.rendering=t,l.tail=t.sibling,l.renderingStartTime=me(),t.sibling=null,h=xn.current,h=d?h&1|2:h&1,l.tailMode==="visible"||l.tailMode==="collapsed"||!i||Qe?Mo(s,h):(i=h,pe(gn,s),pe(xn,i),Nn===null&&(Nn=s)),Qe&&Rr(s,l.treeForkCount),t}return jt(s),null;case 22:case 23:return ns(s),dh(),l=s.memoizedState!==null,t!==null?t.memoizedState!==null!==l&&(s.flags|=8192):l&&(s.flags|=8192),l?(i&536870912)!==0&&(s.flags&128)===0&&(jt(s),s.subtreeFlags&6&&(s.flags|=8192)):jt(s),i=s.updateQueue,i!==null&&Iu(s,i.retryQueue),i=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),l=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(l=s.memoizedState.cachePool.pool),l!==i&&(s.flags|=2048),t!==null&&Re(na),null;case 24:return i=null,t!==null&&(i=t.memoizedState.cache),s.memoizedState.cache!==i&&(s.flags|=2048),kr(Gt),jt(s),null;case 25:return null;case 30:return s.flags|=33554432,jt(s),null}throw Error(a(156,s.tag))}function q5(t,s){switch(Jf(s),s.tag){case 1:return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 3:return kr(Gt),Sn(),t=s.flags,(t&65536)!==0&&(t&128)===0?(s.flags=t&-65537|128,s):null;case 26:case 27:case 5:return Kr(s),null;case 31:if(s.memoizedState!==null){if(ns(s),s.alternate===null)throw Error(a(340));Ji()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 13:if(ns(s),t=s.memoizedState,t!==null&&t.dehydrated!==null){if(s.alternate===null)throw Error(a(340));Ji()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 19:return hh(s),t=s.flags,t&65536?(s.flags=t&-65537|128,t=s.memoizedState,t!==null&&(t.rendering=null,t.tail=null),s.flags|=4,s):null;case 4:return Sn(),null;case 10:return kr(s.type),null;case 22:case 23:return ns(s),dh(),t!==null&&Re(na),t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 24:return kr(Gt),null;case 25:return null;default:return null}}function Bb(t,s){switch(Jf(s),s.tag){case 3:kr(Gt),Sn();break;case 26:case 27:case 5:Kr(s);break;case 4:Sn();break;case 31:s.memoizedState!==null&&ns(s);break;case 13:ns(s);break;case 19:hh(s);break;case 10:kr(s.type);break;case 22:case 23:ns(s),dh(),t!==null&&Re(na);break;case 24:kr(Gt)}}function Ho(t,s){try{var i=s.updateQueue,l=i!==null?i.lastEffect:null;if(l!==null){var d=l.next;i=d;do{if((i.tag&t)===t){l=void 0;var h=i.create,b=i.inst;l=h(),b.destroy=l}i=i.next}while(i!==d)}}catch(w){mt(s,s.return,w)}}function ci(t,s,i){try{var l=s.updateQueue,d=l!==null?l.lastEffect:null;if(d!==null){var h=d.next;l=h;do{if((l.tag&t)===t){var b=l.inst,w=b.destroy;if(w!==void 0){b.destroy=void 0,d=s;var R=i,P=w;try{P()}catch(K){mt(d,R,K)}}}l=l.next}while(l!==h)}}catch(K){mt(s,s.return,K)}}function $b(t){var s=t.updateQueue;if(s!==null){var i=t.stateNode;try{kx(s,i)}catch(l){mt(t,t.return,l)}}}function Fb(t,s,i){i.props=la(t.type,t.memoizedProps),i.state=t.memoizedState;try{i.componentWillUnmount()}catch(l){mt(t,s,l)}}function rr(t,s){try{var i=t.ref;if(i!==null){switch(t.tag){case 26:case 27:case 5:var l=t.stateNode;break;case 30:var d=t.stateNode,h=Ar(t.memoizedProps,d);(d.ref===null||d.ref.name!==h)&&(d.ref=Jy(h)),l=d.ref;break;case 7:if(t.stateNode===null){var b=new ls(t);x(t.child,!1,T2,b,void 0,void 0),t.stateNode=b}l=t.stateNode;break;default:l=t.stateNode}typeof i=="function"?t.refCleanup=i(l):i.current=l}}catch(w){mt(t,s,w)}}function bn(t,s){var i=t.ref,l=t.refCleanup;if(i!==null)if(typeof l=="function")try{l()}catch(d){mt(t,s,d)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof i=="function")try{i(null)}catch(d){mt(t,s,d)}else i.current=null}function Lu(t,s){if((t.tag===5||t.tag===27||t.tag===6)&&t.alternate===null&&s!==null)for(var i=0;i title"))),yn(l,s,i),l[mn]=t,rn(l),s=l;break e;case"link":if(h=mv("link","href",d).get(s+(i.href||""))){for(b=0;bVe&&(b=Ve,Ve=Ee,Ee=b);var L=nx(w,Ee),D=nx(w,Ve);if(L&&D&&(G.rangeCount!==1||G.anchorNode!==L.node||G.anchorOffset!==L.offset||G.focusNode!==D.node||G.focusOffset!==D.offset)){var V=ne.createRange();V.setStart(L.node,L.offset),G.removeAllRanges(),Ee>Ve?(G.addRange(V),G.extend(D.node,D.offset)):(V.setEnd(D.node,D.offset),G.addRange(V))}}}}for(ne=[],G=w;G=G.parentNode;)G.nodeType===1&&ne.push({element:G,left:G.scrollLeft,top:G.scrollTop});for(typeof w.focus=="function"&&w.focus(),w=0;wi?32:i,_e.T=null,i=cm,cm=null;var h=Ps,b=ur;if(kt=0,da=Ps=null,ur=0,(lt&6)!==0)throw Error(a(331));var w=lt;if(lt|=4,hy(h.current),uy(h,h.current,b,i),lt=w,Go(0,!1),Tn&&typeof Tn.onPostCommitFiberRoot=="function")try{Tn.onPostCommitFiberRoot(Ds,h)}catch{}return!0}finally{je.p=d,_e.T=l,Cy(t,s)}}function Oy(t,s,i){s=vs(i,s),s=kh(t.stateNode,s,2),t=ii(t,s,2),t!==null&&(ho(t,2),dr(t))}function mt(t,s,i){if(t.tag===3)Oy(t,t,i);else for(;s!==null;){if(s.tag===3){Oy(s,t,i);break}else if(s.tag===1){var l=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(hi===null||!hi.has(l))){t=vs(i,t),i=jb(2),l=ii(s,i,2),l!==null&&(Eb(i,l,s,t),ho(l,2),dr(l));break}}s=s.return}}function gm(t,s,i){var l=t.pingCache;if(l===null){l=t.pingCache=new V5;var d=new Set;l.set(s,d)}else d=l.get(s),d===void 0&&(d=new Set,l.set(s,d));d.has(i)||(am=!0,d.add(i),t=W5.bind(null,t,s,i),s.then(t,t))}function W5(t,s,i){var l=t.pingCache;l!==null&&l.delete(s),t.pingedLanes|=t.suspendedLanes&i,t.warmLanes&=~i,St===t&&(We&i)===i&&((Ut===4||Ut===3&&(We&62914560)===We&&300>me()-Qu)&&(lt&2)===0?vl(t,0):Gu|=i,pl===We&&(pl=0)),dr(t)}function Ry(t,s){s===0&&(s=pg()),t=Ki(t,s),t!==null&&(ho(t,s),dr(t))}function e2(t){var s=t.memoizedState,i=0;s!==null&&(i=s.retryLane),Ry(t,i)}function t2(t,s){var i=0;switch(t.tag){case 31:case 13:var l=t.stateNode,d=t.memoizedState;d!==null&&(i=d.retryLane);break;case 19:l=t.stateNode;break;case 22:l=t.stateNode._retryCache;break;default:throw Error(a(314))}l!==null&&l.delete(s),Ry(t,i)}function n2(t,s){return I(t,s)}var _l=null,Sl=null,xm=!1,nd=!1,bm=!1,pi=0;function dr(t){t!==Sl&&t.next===null&&(Sl===null?_l=Sl=t:Sl=Sl.next=t),nd=!0,xm||(xm=!0,r2())}function Go(t,s){if(!bm&&nd){bm=!0;do for(var i=!1,l=_l;l!==null;){if(t!==0){var d=l.pendingLanes;if(d===0)var h=0;else{var b=l.suspendedLanes,w=l.pingedLanes;h=(1<<31-Wn(42|t)+1)-1,h&=d&~(b&~w),h=h&201326741?h&201326741|1:h?h|2:0}h!==0&&(i=!0,My(l,h))}else h=We,h=Gc(l,l===St?h:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(h&3)===0||fo(l,h)||(i=!0,My(l,h));l=l.next}while(i);bm=!1}}function s2(){Ty()}function Ty(){nd=xm=!1;var t=0;pi!==0&&p2()&&(t=pi);for(var s=me(),i=null,l=_l;l!==null;){var d=l.next,h=ky(l,s);h===0?(l.next=null,i===null?_l=d:i.next=d,d===null&&(Sl=i)):(i=l,(t!==0||(h&3)!==0)&&(nd=!0)),l=d}kt!==0&&kt!==5||Go(t),pi!==0&&(pi=0)}function ky(t,s){for(var i=t.suspendedLanes,l=t.pingedLanes,d=t.expirationTimes,h=t.pendingLanes&-62914561;0w)break;var K=R.transferSize,ne=R.initiatorType;K&&qy(ne)&&(R=R.responseEnd,b+=K*(Rld){Ee.length=ge;break}V=new Promise(w2.bind(V)),Ee.push(V)}}}if(0"u"?null:document;function uv(t,s,i){var l=jl;if(l&&typeof s=="string"&&s){var d=bs(s);d='link[rel="'+t+'"][href="'+d+'"]',typeof i=="string"&&(d+='[crossorigin="'+i+'"]'),cv.has(d)||(cv.add(d),t={rel:t,crossOrigin:i,href:s},l.querySelector(d)===null&&(s=l.createElement("link"),yn(s,"link",t),rn(s),l.head.appendChild(s)))}}function H2(t){Lr.D(t),uv("dns-prefetch",t,null)}function q2(t,s){Lr.C(t,s),uv("preconnect",t,s)}function B2(t,s,i){Lr.L(t,s,i);var l=jl;if(l&&t&&s){var d='link[rel="preload"][as="'+bs(s)+'"]';s==="image"&&i&&i.imageSrcSet?(d+='[imagesrcset="'+bs(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(d+='[imagesizes="'+bs(i.imageSizes)+'"]')):d+='[href="'+bs(t)+'"]';var h=d;switch(s){case"style":h=El(t);break;case"script":h=Al(t)}if(!(Es.has(h)||(t=Q({rel:"preload",href:s==="image"&&i&&i.imageSrcSet?void 0:t,as:s},i),Es.set(h,t),l.querySelector(d)!==null||s==="style"&&l.querySelector(Xo(h))||s==="script"&&l.querySelector(Wo(h))))){var b=l.createElement("link");yn(b,"link",t),s==="style"&&(b[Qc]=!0,b.onload=b.onerror=function(){Sg(b)}),rn(b),l.head.appendChild(b)}}}function $2(t,s){Lr.m(t,s);var i=jl;if(i&&t){var l=s&&typeof s.as=="string"?s.as:"script",d='link[rel="modulepreload"][as="'+bs(l)+'"][href="'+bs(t)+'"]',h=d;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":h=Al(t)}if(!Es.has(h)&&(t=Q({rel:"modulepreload",href:t},s),Es.set(h,t),i.querySelector(d)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(i.querySelector(Wo(h)))return}l=i.createElement("link"),yn(l,"link",t),rn(l),i.head.appendChild(l)}}}function F2(t,s,i){Lr.S(t,s,i);var l=jl;if(l&&t){var d=Fa(l).hoistableStyles,h=El(t);s=s||"default";var b=d.get(h);if(!b){var w={loading:0,preload:null};if(b=l.querySelector(Xo(h)))w.loading=5;else{t=Q({rel:"stylesheet",href:t,"data-precedence":s},i),(i=Es.get(h))&&Pm(t,i);var R=b=l.createElement("link");rn(R),yn(R,"link",t),R._p=new Promise(function(P,K){R.onload=P,R.onerror=K}),R.addEventListener("load",function(){w.loading|=1}),R.addEventListener("error",function(){w.loading|=2}),w.loading|=4,id(b,s,l)}b={type:"stylesheet",instance:b,count:1,state:w},d.set(h,b)}}}function V2(t,s){Lr.X(t,s);var i=jl;if(i&&t){var l=Fa(i).hoistableScripts,d=Al(t),h=l.get(d);h||(h=i.querySelector(Wo(d)),h||(t=Q({src:t,async:!0},s),(s=Es.get(d))&&Hm(t,s),h=i.createElement("script"),rn(h),yn(h,"link",t),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},l.set(d,h))}}function Z2(t,s){Lr.M(t,s);var i=jl;if(i&&t){var l=Fa(i).hoistableScripts,d=Al(t),h=l.get(d);h||(h=i.querySelector(Wo(d)),h||(t=Q({src:t,async:!0,type:"module"},s),(s=Es.get(d))&&Hm(t,s),h=i.createElement("script"),rn(h),yn(h,"link",t),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},l.set(d,h))}}function dv(t,s,i,l){var d=(d=rt.current)?Jo(d):null;if(!d)throw Error(a(446));switch(t){case"meta":case"title":return null;case"style":return typeof i.precedence=="string"&&typeof i.href=="string"?(i=El(i.href),s=Fa(d).hoistableStyles,l=s.get(i),l||(l={type:"style",instance:null,count:0,state:null},s.set(i,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(i.rel==="stylesheet"&&typeof i.href=="string"&&typeof i.precedence=="string"){t=El(i.href);var h=Fa(d).hoistableStyles,b=h.get(t);if(b||(d=d.ownerDocument||d,b={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},h.set(t,b),(h=d.querySelector(Xo(t)))?h._p||(b.instance=h,b.state.loading=5):(h=Es.get(t),h||(h={rel:"preload",as:"style",href:i.href,crossOrigin:i.crossOrigin,integrity:i.integrity,media:i.media,hrefLang:i.hrefLang,referrerPolicy:i.referrerPolicy},Es.set(t,h)),G2(d,t,h,b.state))),s&&l===null)throw Error(a(528,""));return b}if(s&&l!==null)throw Error(a(529,""));return null;case"script":return s=i.async,i=i.src,typeof i=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(i=Al(i),s=Fa(d).hoistableScripts,l=s.get(i),l||(l={type:"script",instance:null,count:0,state:null},s.set(i,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(a(444,t))}}function El(t){return'href="'+bs(t)+'"'}function Xo(t){return'link[rel="stylesheet"]['+t+"]"}function fv(t){return Q({},t,{"data-precedence":t.precedence,precedence:null})}function G2(t,s,i,l){if(s=t.querySelector('link[rel="preload"][as="style"]['+s+"]")){if(s[Qc]!==!0){l.loading=1;return}}else s=t.createElement("link"),s[Qc]=!0,s.onload=s.onerror=Sg.bind(null,s),yn(s,"link",i),rn(s),t.head.appendChild(s);l.preload=s,s.addEventListener("load",function(){return l.loading|=1}),s.addEventListener("error",function(){return l.loading|=2})}function Al(t){return'[src="'+bs(t)+'"]'}function Wo(t){return"script[async]"+t}function hv(t,s,i){if(s.count++,s.instance===null)switch(s.type){case"style":var l=t.querySelector('style[data-href~="'+bs(i.href)+'"]');if(l)return s.instance=l,rn(l),l;var d=Q({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return l=(t.ownerDocument||t).createElement("style"),rn(l),yn(l,"style",d),id(l,i.precedence,t),s.instance=l;case"stylesheet":d=El(i.href);var h=t.querySelector(Xo(d));if(h)return s.state.loading|=4,s.instance=h,rn(h),h;l=fv(i),(d=Es.get(d))&&Pm(l,d),h=(t.ownerDocument||t).createElement("link"),rn(h);var b=h;return b._p=new Promise(function(w,R){b.onload=w,b.onerror=R}),yn(h,"link",l),s.state.loading|=4,id(h,i.precedence,t),s.instance=h;case"script":return h=Al(i.src),(d=t.querySelector(Wo(h)))?(s.instance=d,rn(d),d):(l=i,(d=Es.get(h))&&(l=Q({},i),Hm(l,d)),t=t.ownerDocument||t,d=t.createElement("script"),rn(d),yn(d,"link",l),t.head.appendChild(d),s.instance=d);case"void":return null;default:throw Error(a(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(l=s.instance,s.state.loading|=4,id(l,i.precedence,t));return s.instance}function id(t,s,i){for(var l=i.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),d=l.length?l[l.length-1]:null,h=d,b=0;b title"):null)}function Q2(t,s,i){if(i===1||s.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;switch(s.rel){case"stylesheet":return t=s.disabled,typeof s.precedence=="string"&&t==null;default:return!0}case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function pv(t,s){return t==="img"&&s.src!=null&&s.src!==""&&s.onLoad==null&&s.loading!=="lazy"}function gv(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function xv(t){return(t.width||100)*(t.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function bv(t,s){typeof s.decode=="function"&&(t.imgCount++,s.complete||(t.imgBytes+=xv(s),t.suspenseyImages.push(s)),t=J2.bind(t),s.decode().then(t,t))}function K2(t,s,i,l){if(i.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(i.state.loading&4)===0){if(i.instance===null){var d=El(l.href),h=s.querySelector(Xo(d));if(h){s=h._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(t.count++,t=ec.bind(t),s.then(t,t)),i.state.loading|=4,i.instance=h,rn(h);return}h=s.ownerDocument||s,l=fv(l),(d=Es.get(d))&&Pm(l,d),h=h.createElement("link"),rn(h);var b=h;b._p=new Promise(function(w,R){b.onload=w,b.onerror=R}),yn(h,"link",l),i.instance=h}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(i,s),(s=i.state.preload)&&(i.state.loading&3)===0&&(t.count++,i=ec.bind(t),s.addEventListener("load",i),s.addEventListener("error",i))}}var ld=0;function Y2(t,s){return t.stylesheets&&t.count===0&&cd(t,t.stylesheets),0ld?50:800)+s);return t.unsuspend=i,function(){t.unsuspend=null,clearTimeout(l),clearTimeout(d)}}:null}function yv(t){if(t.count===0&&(t.imgCount===0||!t.waitingForImages)){if(t.stylesheets)cd(t,t.stylesheets);else if(t.unsuspend){var s=t.unsuspend;t.unsuspend=null,s()}}}function ec(){this.count--,yv(this)}function J2(){this.imgCount--,yv(this)}var od=null;function cd(t,s){t.stylesheets=null,t.unsuspend!==null&&(t.count++,od=new Map,s.forEach(X2,t),od=null,ec.call(t))}function X2(t,s){if(!(s.state.loading&4)){var i=od.get(t);if(i)var l=i.get(null);else{i=new Map,od.set(t,i);for(var d=t.querySelectorAll("link[data-precedence],style[data-precedence]"),h=0;h"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Jm.exports=pE(),Jm.exports}var xE=gE();/** + * react-router v7.18.3 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var vp=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,l_=/^[\\/]{2}/;function bE(e,n){return n+e.replace(/\\/g,"/")}var Fv="popstate";function Vv(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function yE(e={}){function n(a,o){var y;let u=(y=o.state)==null?void 0:y.masked,{pathname:f,search:m,hash:p}=u||a.location;return R0("",{pathname:f,search:m,hash:p},o.state&&o.state.usr||null,o.state&&o.state.key||"default",u?{pathname:a.location.pathname,search:a.location.search,hash:a.location.hash}:void 0)}function r(a,o){return typeof o=="string"?o:Ta(o)}return wE(n,r,null,e)}function Ot(e,n){if(e===!1||e===null||typeof e>"u")throw new Error(n)}function Js(e,n){if(!e){typeof console<"u"&&console.warn(n);try{throw new Error(n)}catch{}}}function vE(){return Math.random().toString(36).substring(2,10)}function Zv(e,n){return{usr:e.state,key:e.key,idx:n,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function R0(e,n,r=null,a,o){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof n=="string"?no(n):n,state:r,key:n&&n.key||a||vE(),mask:o}}function Ta({pathname:e="/",search:n="",hash:r=""}){return n&&n!=="?"&&(e+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(e+=r.charAt(0)==="#"?r:"#"+r),e}function no(e){let n={};if(e){let r=e.indexOf("#");r>=0&&(n.hash=e.substring(r),e=e.substring(0,r));let a=e.indexOf("?");a>=0&&(n.search=e.substring(a),e=e.substring(0,a)),e&&(n.pathname=e)}return n}function wE(e,n,r,a={}){let{window:o=document.defaultView,v5Compat:u=!1}=a,f=o.history,m="POP",p=null,y=g();y==null&&(y=0,f.replaceState({...f.state,idx:y},""));function g(){return(f.state||{idx:null}).idx}function x(){m="POP";let O=g(),N=O==null?null:O-y;y=O,p&&p({action:m,location:C.location,delta:N})}function v(O,N){m="PUSH";let j=Vv(O)?O:R0(C.location,O,N);y=g()+1;let F=Zv(j,y),q=C.createHref(j.mask||j);try{f.pushState(F,"",q)}catch(B){if(B instanceof DOMException&&B.name==="DataCloneError")throw B;o.location.assign(q)}u&&p&&p({action:m,location:C.location,delta:1})}function S(O,N){m="REPLACE";let j=Vv(O)?O:R0(C.location,O,N);y=g();let F=Zv(j,y),q=C.createHref(j.mask||j);f.replaceState(F,"",q),u&&p&&p({action:m,location:C.location,delta:0})}function A(O){return _E(o,O)}let C={get action(){return m},get location(){return e(o,f)},listen(O){if(p)throw new Error("A history only accepts one active listener");return o.addEventListener(Fv,x),p=O,()=>{o.removeEventListener(Fv,x),p=null}},createHref(O){return n(o,O)},createURL:A,encodeLocation(O){let N=A(O);return{pathname:N.pathname,search:N.search,hash:N.hash}},push:v,replace:S,go(O){return f.go(O)}};return C}function _E(e,n,r=!1){let a="http://localhost";e&&(a=e.location.origin!=="null"?e.location.origin:e.location.href),Ot(a,"No window.location.(origin|href) available to create URL");let o=typeof n=="string"?n:Ta(n);return o=o.replace(/ $/,"%20"),!r&&l_.test(o)&&(o=a+o),new URL(o,a)}function o_(e,n,r="/"){return SE(e,n,r,!1)}function SE(e,n,r,a,o){let u=typeof n=="string"?no(n):n,f=Zr(u.pathname||"/",r);if(f==null)return null;let m=NE(e),p=null,y=zE(f);for(let g=0;p==null&&g{let g={relativePath:y===void 0?f.path||"":y,caseSensitive:f.caseSensitive===!0,childrenIndex:m,route:f};if(g.relativePath.startsWith("/")){if(!g.relativePath.startsWith(a)&&p)return;Ot(g.relativePath.startsWith(a),`Absolute route path "${g.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),g.relativePath=g.relativePath.slice(a.length)}let x=Ys([a,g.relativePath]),v=r.concat(g);f.children&&f.children.length>0&&(Ot(f.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${x}".`),c_(f.children,n,v,x,p)),!(f.path==null&&!f.index)&&n.push({path:x,score:kE(x,f.index),routesMeta:v.map((S,A)=>{let[C,O]=f_(S.relativePath,S.caseSensitive,A===v.length-1);return{...S,matcher:C,compiledParams:O}})})};return e.forEach((f,m)=>{var p;if(f.path===""||!((p=f.path)!=null&&p.includes("?")))u(f,m);else for(let y of u_(f.path))u(f,m,!0,y)}),n}function u_(e){let n=e.split("/");if(n.length===0)return[];let[r,...a]=n,o=r.endsWith("?"),u=r.replace(/\?$/,"");if(a.length===0)return o?[u,""]:[u];let f=u_(a.join("/")),m=[];return m.push(...f.map(p=>p===""?u:[u,p].join("/"))),o&&m.push(...f),m.map(p=>e.startsWith("/")&&p===""?"/":p)}function jE(e){e.sort((n,r)=>n.score!==r.score?r.score-n.score:DE(n.routesMeta.map(a=>a.childrenIndex),r.routesMeta.map(a=>a.childrenIndex)))}var EE=/^:[\w-]+$/,AE=3,CE=2,OE=1,RE=10,TE=-2,Gv=e=>e==="*";function kE(e,n){let r=e.split("/"),a=r.length;return r.some(Gv)&&(a+=TE),n&&(a+=CE),r.filter(o=>!Gv(o)).reduce((o,u)=>o+(EE.test(u)?AE:u===""?OE:RE),a)}function DE(e,n){return e.length===n.length&&e.slice(0,-1).every((a,o)=>a===n[o])?e[e.length-1]-n[n.length-1]:0}function ME(e,n,r=!1){let{routesMeta:a}=e,o={},u="/",f=[];for(let m=0;m{if(g==="*"){let A=m[v]||"";f=Kl(u.slice(0,u.length-A.length),1)}const S=m[v];return x&&!S?y[g]=void 0:y[g]=(S||"").replace(/%2F/g,"/"),y},{}),pathname:u,pathnameBase:f,pattern:e}}function f_(e,n=!1,r=!0){Js(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let a=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(f,m,p,y,g)=>{if(a.push({paramName:m,isOptional:p!=null}),p){let x=g.charAt(y+f.length);return x&&x!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(a.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,n?void 0:"i"),a]}function zE(e){try{return e.split("/").map(n=>decodeURIComponent(n).replace(/\//g,"%2F")).join("/")}catch(n){return Js(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${n}).`),e}}function Zr(e,n){if(n==="/")return e;if(!e.toLowerCase().startsWith(n.toLowerCase()))return null;let r=n.endsWith("/")?n.length-1:n.length,a=e.charAt(r);return a&&a!=="/"?null:e.slice(r)||"/"}function UE(e,n="/"){let{pathname:r,search:a="",hash:o=""}=typeof e=="string"?no(e):e,u;return r?(r=h_(r),r.startsWith("/")||r.startsWith("\\")?u=Qv(r.substring(1),"/"):u=Qv(r,n)):u=n,{pathname:u,search:PE(a),hash:HE(o)}}function Qv(e,n){let r=Kl(n).split("/");return e.split("/").forEach(o=>{o===".."?r.length>1&&r.pop():o!=="."&&r.push(o)}),r.length>1?r.join("/"):"/"}function t0(e,n,r,a){return`Cannot include a '${e}' character in a manually specified \`to.${n}\` field [${JSON.stringify(a)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function IE(e){return e.filter((n,r)=>r===0||n.route.path&&n.route.path.length>0)}function wp(e){let n=IE(e);return n.map((r,a)=>a===n.length-1?r.pathname:r.pathnameBase)}function nf(e,n,r,a=!1){let o;typeof e=="string"?o=no(e):(o={...e},Ot(!o.pathname||!o.pathname.includes("?"),t0("?","pathname","search",o)),Ot(!o.pathname||!o.pathname.includes("#"),t0("#","pathname","hash",o)),Ot(!o.search||!o.search.includes("#"),t0("#","search","hash",o)));let u=e===""||o.pathname==="",f=u?"/":o.pathname,m;if(f==null)m=r;else{let x=n.length-1;if(!a&&f.startsWith("..")){let v=f.split("/");for(;v[0]==="..";)v.shift(),x-=1;o.pathname=v.join("/")}m=x>=0?n[x]:"/"}let p=UE(o,m),y=f&&f!=="/"&&f.endsWith("/"),g=(u||f===".")&&r.endsWith("/");return!p.pathname.endsWith("/")&&(y||g)&&(p.pathname+="/"),p}var h_=e=>e.replace(/[\\/]{2,}/g,"/"),Ys=e=>h_(e.join("/"));function Kl(e,n=0){let r=e.length;for(;r>n&&e.charCodeAt(r-1)===47;)r--;return r===e.length?e:e.slice(0,r)}var LE=e=>Kl(e).replace(/^\/*/,"/"),PE=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,HE=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,qE=class{constructor(e,n,r,a=!1){this.status=e,this.statusText=n||"",this.internal=a,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}};function BE(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function $E(e){let n=e.map(r=>r.route.path).filter(Boolean);return Ys(n)||"/"}var m_=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function p_(e,n){let r=e;if(typeof r!="string"||!vp.test(r))return{absoluteURL:void 0,isExternal:!1,to:r};let a=r,o=!1;if(m_)try{let u=new URL(window.location.href),f=l_.test(r)?new URL(bE(r,u.protocol)):new URL(r),m=Zr(f.pathname,n);f.origin===u.origin&&m!=null?r=m+f.search+f.hash:o=!0}catch{Js(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:a,isExternal:o,to:r}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Kv=new URL("http://localhost");function _p(e){if(e.createURL)return e.createURL("/");try{return new URL(e.createHref("/"),Kv)}catch{return Kv}}function n0(e,n){return e.origin===n.origin&&(e.origin!=="null"||e.protocol===n.protocol&&e.host===n.host)}function FE(e,n){if(e.startsWith("//"))return!0;let r=n.protocol.toLowerCase();return e.toLowerCase().startsWith(r)?n.host===""||e.slice(r.length).startsWith("//"):!1}function Sp(e,n,r,a){let o=null;try{o=e==null?null:new URL(e,r)}catch{}let u=new URL(n,r),f=o!=null&&!n0(o,r),m=!n0(u,r);if(a==="reject"){if(f||m)throw new Error("External navigation is not allowed")}else if(m&&(o==null||!FE(e,o)||!n0(o,u)))throw new Error("External navigation is not allowed")}var g_=["POST","PUT","PATCH","DELETE"];new Set(g_);var VE=["GET",...g_];new Set(VE);var ZE=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function GE(e){try{return ZE.includes(new URL(e).protocol)}catch{return!1}}var so=T.createContext(null);so.displayName="DataRouter";var sf=T.createContext(null);sf.displayName="DataRouterState";var x_=T.createContext(!1);function QE(){return T.useContext(x_)}var b_=T.createContext({isTransitioning:!1});b_.displayName="ViewTransition";var KE=T.createContext(new Map);KE.displayName="Fetchers";var YE=T.createContext(null);YE.displayName="Await";var gs=T.createContext(null);gs.displayName="Navigation";var Mc=T.createContext(null);Mc.displayName="Location";var Xs=T.createContext({outlet:null,matches:[],isDataRoute:!1});Xs.displayName="Route";var Np=T.createContext(null);Np.displayName="RouteError";var y_="REACT_ROUTER_ERROR",JE="REDIRECT",XE="ROUTE_ERROR_RESPONSE";function WE(e){if(e.startsWith(`${y_}:${JE}:{`))try{let n=JSON.parse(e.slice(28));if(typeof n=="object"&&n&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.location=="string"&&typeof n.reloadDocument=="boolean"&&typeof n.replace=="boolean")return n}catch{}}function e4(e){if(e.startsWith(`${y_}:${XE}:{`))try{let n=JSON.parse(e.slice(40));if(typeof n=="object"&&n&&typeof n.status=="number"&&typeof n.statusText=="string")return new qE(n.status,n.statusText,n.data)}catch{}}function t4(e,{relative:n}={}){Ot(ro(),"useHref() may be used only in the context of a component.");let{basename:r,navigator:a}=T.useContext(gs),{hash:o,pathname:u,search:f}=zc(e,{relative:n}),m=u;return r!=="/"&&(m=u==="/"?r:Ys([r,u])),a.createHref({pathname:m,search:f,hash:o})}function ro(){return T.useContext(Mc)!=null}function Ws(){return Ot(ro(),"useLocation() may be used only in the context of a component."),T.useContext(Mc).location}var v_="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function w_(e){T.useContext(gs).static||T.useLayoutEffect(e)}function rf(){let{isDataRoute:e}=T.useContext(Xs);return e?g4():n4()}function n4(){Ot(ro(),"useNavigate() may be used only in the context of a component.");let e=T.useContext(so),{basename:n,navigator:r}=T.useContext(gs),{matches:a}=T.useContext(Xs),{pathname:o}=Ws(),u=JSON.stringify(wp(a)),f=T.useRef(!1);return w_(()=>{f.current=!0}),T.useCallback((p,y={})=>{if(Js(f.current,v_),!f.current)return;if(typeof p=="number"){r.go(p);return}let g=nf(p,JSON.parse(u),o,y.relative==="path");e==null&&n!=="/"&&(g.pathname=g.pathname==="/"?n:Ys([n,g.pathname])),Sp(typeof p=="string"?p:Ta(p),r.createHref(g),_p(r),"reject"),(y.replace?r.replace:r.push)(g,y.state,y)},[n,r,u,o,e])}var s4=T.createContext(null);function r4(e){let n=T.useContext(Xs).outlet;return T.useMemo(()=>n&&T.createElement(s4.Provider,{value:e},n),[n,e])}function zc(e,{relative:n}={}){let{matches:r}=T.useContext(Xs),{pathname:a}=Ws(),o=JSON.stringify(wp(r));return T.useMemo(()=>nf(e,JSON.parse(o),a,n==="path"),[e,o,a,n])}function i4(e,n){return __(e,n)}function __(e,n,r){var O;Ot(ro(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=T.useContext(gs),{matches:o}=T.useContext(Xs),u=o[o.length-1],f=u?u.params:{},m=u?u.pathname:"/",p=u?u.pathnameBase:"/",y=u&&u.route;{let N=y&&y.path||"";N_(m,!y||N.endsWith("*")||N.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${m}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let g=Ws(),x;if(n){let N=typeof n=="string"?no(n):n;Ot(p==="/"||((O=N.pathname)==null?void 0:O.startsWith(p)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${p}" but pathname "${N.pathname}" was given in the \`location\` prop.`),x=N}else x=g;let v=x.pathname||"/",S=v;if(p!=="/"){let N=p.replace(/^\//,"").split("/");S="/"+v.replace(/^\//,"").split("/").slice(N.length).join("/")}let A=r&&r.state.matches.length?r.state.matches.map(N=>Object.assign(N,{route:r.manifest[N.route.id]||N.route})):o_(e,{pathname:S});Js(y||A!=null,`No routes matched location "${x.pathname}${x.search}${x.hash}" `),Js(A==null||A[A.length-1].route.element!==void 0||A[A.length-1].route.Component!==void 0||A[A.length-1].route.lazy!==void 0,`Matched leaf route at location "${x.pathname}${x.search}${x.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let C=u4(A&&A.map(N=>Object.assign({},N,{params:Object.assign({},f,N.params),pathname:Ys([p,a.encodeLocation?a.encodeLocation(N.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:N.pathname]),pathnameBase:N.pathnameBase==="/"?p:Ys([p,a.encodeLocation?a.encodeLocation(N.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:N.pathnameBase])})),o,r);return n&&C?T.createElement(Mc.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0,...x},navigationType:"POP"}},C):C}function a4(){let e=p4(),n=BE(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,a="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:a},u={padding:"2px 4px",backgroundColor:a},f=null;return console.error("Error handled by React Router default ErrorBoundary:",e),f=T.createElement(T.Fragment,null,T.createElement("p",null,"💿 Hey developer 👋"),T.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",T.createElement("code",{style:u},"ErrorBoundary")," or"," ",T.createElement("code",{style:u},"errorElement")," prop on your route.")),T.createElement(T.Fragment,null,T.createElement("h2",null,"Unexpected Application Error!"),T.createElement("h3",{style:{fontStyle:"italic"}},n),r?T.createElement("pre",{style:o},r):null,f)}var l4=T.createElement(a4,null),S_=class extends T.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,n){return n.location!==e.location||n.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:n.error,location:n.location,revalidation:e.revalidation||n.revalidation}}componentDidCatch(e,n){this.props.onError?this.props.onError(e,n):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const r=e4(e.digest);r&&(e=r)}let n=e!==void 0?T.createElement(Xs.Provider,{value:this.props.routeContext},T.createElement(Np.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?T.createElement(o4,{error:e},n):n}};S_.contextType=x_;var s0=new WeakMap;function o4({children:e,error:n}){let{basename:r,navigator:a}=T.useContext(gs);if(typeof n=="object"&&n&&"digest"in n&&typeof n.digest=="string"){let o=WE(n.digest);if(o){let u=s0.get(n);if(u)throw u;let f=p_(o.location,r),m=f.absoluteURL||f.to;if(Sp(o.location,m,_p(a),"allow-explicit"),GE(m))throw new Error("Invalid redirect location");if(m_&&!s0.get(n))if(f.isExternal||o.reloadDocument)window.location.href=m;else{const p=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(f.to,{replace:o.replace}));throw s0.set(n,p),p}return T.createElement("meta",{httpEquiv:"refresh",content:`0;url=${m}`})}}return e}function c4({routeContext:e,match:n,children:r}){let a=T.useContext(so);return a&&a.static&&a.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=n.route.id),T.createElement(Xs.Provider,{value:e},r)}function u4(e,n=[],r){let a=r==null?void 0:r.state;if(e==null){if(!a)return null;if(a.errors)e=a.matches;else if(n.length===0&&!a.initialized&&a.matches.length>0)e=a.matches;else return null}let o=e,u=a==null?void 0:a.errors;if(u!=null){let g=o.findIndex(x=>x.route.id&&(u==null?void 0:u[x.route.id])!==void 0);Ot(g>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),o=o.slice(0,Math.min(o.length,g+1))}let f=!1,m=-1;if(r&&a){f=a.renderFallback;for(let g=0;g=0?o=o.slice(0,m+1):o=[o[0]];break}}}}let p=r==null?void 0:r.onError,y=a&&p?(g,x)=>{var v,S;p(g,{location:a.location,params:((S=(v=a.matches)==null?void 0:v[0])==null?void 0:S.params)??{},pattern:$E(a.matches),errorInfo:x})}:void 0;return o.reduceRight((g,x,v)=>{let S,A=!1,C=null,O=null;a&&(S=u&&x.route.id?u[x.route.id]:void 0,C=x.route.errorElement||l4,f&&(m<0&&v===0?(N_("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),A=!0,O=null):m===v&&(A=!0,O=x.route.hydrateFallbackElement||null)));let N=n.concat(o.slice(0,v+1)),j=()=>{let F;return S?F=C:A?F=O:x.route.Component?F=T.createElement(x.route.Component,null):x.route.element?F=x.route.element:F=g,T.createElement(c4,{match:x,routeContext:{outlet:g,matches:N,isDataRoute:a!=null},children:F})};return a&&(x.route.ErrorBoundary||x.route.errorElement||v===0)?T.createElement(S_,{location:a.location,revalidation:a.revalidation,component:C,error:S,children:j(),routeContext:{outlet:null,matches:N,isDataRoute:!0},onError:y}):j()},null)}function jp(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function d4(e){let n=T.useContext(so);return Ot(n,jp(e)),n}function f4(e){let n=T.useContext(sf);return Ot(n,jp(e)),n}function h4(e){let n=T.useContext(Xs);return Ot(n,jp(e)),n}function Ep(e){let n=h4(e),r=n.matches[n.matches.length-1];return Ot(r.route.id,`${e} can only be used on routes that contain a unique "id"`),r.route.id}function m4(){return Ep("useRouteId")}function p4(){var a;let e=T.useContext(Np),n=f4("useRouteError"),r=Ep("useRouteError");return e!==void 0?e:(a=n.errors)==null?void 0:a[r]}function g4(){let{router:e}=d4("useNavigate"),n=Ep("useNavigate"),r=T.useRef(!1);return w_(()=>{r.current=!0}),T.useCallback(async(o,u={})=>{Js(r.current,v_),r.current&&(typeof o=="number"?await e.navigate(o):await e.navigate(o,{fromRouteId:n,...u}))},[e,n])}var Yv={};function N_(e,n,r){!n&&!Yv[e]&&(Yv[e]=!0,Js(!1,r))}T.memo(x4);function x4({routes:e,manifest:n,future:r,state:a,isStatic:o,onError:u}){return __(e,void 0,{manifest:n,state:a,isStatic:o,onError:u})}function j_({to:e,replace:n,state:r,relative:a}){Ot(ro()," may be used only in the context of a component.");let{static:o,navigator:u}=T.useContext(gs);Js(!o," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:f}=T.useContext(Xs),{pathname:m}=Ws(),p=rf(),y=nf(e,wp(f),m,a==="path");Sp(typeof e=="string"?e:Ta(e),u.createHref(y),_p(u),"reject");let g=JSON.stringify(y);return T.useEffect(()=>{p(JSON.parse(g),{replace:n,state:r,relative:a})},[p,g,a,n,r]),null}function b4(e){return r4(e.context)}function qs(e){Ot(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function y4({basename:e="/",children:n=null,location:r,navigationType:a="POP",navigator:o,static:u=!1,useTransitions:f}){Ot(!ro(),"You cannot render a inside another . You should never have more than one in your app.");let m=e.replace(/^\/*/,"/"),p=T.useMemo(()=>({basename:m,navigator:o,static:u,useTransitions:f,future:{}}),[m,o,u,f]);typeof r=="string"&&(r=no(r));let{pathname:y="/",search:g="",hash:x="",state:v=null,key:S="default",mask:A}=r,C=T.useMemo(()=>{let O=Zr(y,m);return O==null?null:{location:{pathname:O,search:g,hash:x,state:v,key:S,mask:A},navigationType:a}},[m,y,g,x,v,S,a,A]);return Js(C!=null,` is not able to match the URL "${y}${g}${x}" because it does not start with the basename, so the won't render anything.`),C==null?null:T.createElement(gs.Provider,{value:p},T.createElement(Mc.Provider,{children:n,value:C}))}function v4({children:e,location:n}){return i4(T0(e),n)}function T0(e,n=[]){let r=[];return T.Children.forEach(e,(a,o)=>{if(!T.isValidElement(a))return;let u=[...n,o];if(a.type===T.Fragment){r.push.apply(r,T0(a.props.children,u));return}Ot(a.type===qs,`[${typeof a.type=="string"?a.type:a.type.name}] is not a component. All component children of must be a or `),Ot(!a.props.index||!a.props.children,"An index route cannot have child routes.");let f={id:a.props.id||u.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,middleware:a.props.middleware,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(f.children=T0(a.props.children,u)),r.push(f)}),r}var Od="get",Rd="application/x-www-form-urlencoded";function af(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function w4(e){return af(e)&&e.tagName.toLowerCase()==="button"}function _4(e){return af(e)&&e.tagName.toLowerCase()==="form"}function S4(e){return af(e)&&e.tagName.toLowerCase()==="input"}function N4(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function j4(e,n){return e.button===0&&(!n||n==="_self")&&!N4(e)}var xd=null;function E4(){if(xd===null)try{new FormData(document.createElement("form"),0),xd=!1}catch{xd=!0}return xd}var A4=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function r0(e){return e!=null&&!A4.has(e)?(Js(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Rd}"`),null):e}function C4(e,n){let r,a,o,u,f;if(_4(e)){let m=e.getAttribute("action");a=m?Zr(m,n):null,r=e.getAttribute("method")||Od,o=r0(e.getAttribute("enctype"))||Rd,u=new FormData(e)}else if(w4(e)||S4(e)&&(e.type==="submit"||e.type==="image")){let m=e.form;if(m==null)throw new Error('Cannot submit a - + // Extract tenant name directly from the user claim named 'tenant' + const tenantName = + (claims?.tenant as string) || + user?.tenant || + (claims?.['tenant'] as string) || + user?.organisationName || + (claims?.organisation as string) || + 'Department of Science, Innovation & Technology (DSI)'; - {/* Navigation Items */} - - - {/* User Card with Token-derived info & Identity Server Logout */} -
-
-
- {tokenUserName ? tokenUserName.slice(0, 2).toUpperCase() : 'AU'} -
- {sidebarOpen && ( -
-

- {tokenUserName} -

-

- {tokenUserEmail || 'STS Token User'} -

-
- )} - -
-
- - - {/* Main Content Area */} -
- {/* Top Header */} -
-
- {/* Clickable Home Link */} - - - Home - - - - -
- Tenant: - - - Department of Science, Innovation & Technology (DSI) - -
- - - - - - Authenticated Session - -
- - {/* User Name & Email derived from token, plus Identity Server signout */} -
-
-

- {tokenUserName} -

-

- {tokenUserEmail} -

-
- - - - {/* Dropdown Menu */} - {userMenuOpen && ( -
setUserMenuOpen(false)} - > -
-

{tokenUserName}

-

{tokenUserEmail}

- {sub &&

sub: {sub}

} -
- - setUserMenuOpen(false)} - className="flex items-center gap-2 px-3 py-2 text-xs text-slate-300 hover:text-white hover:bg-slate-800/60 rounded-xl transition" - > - - Go to Home Page - - - -
- )} -
-
- - {/* Viewport with Landing Page ambient dot grid and glow */} -
-
-
-
- -
- -
-
- - {/* Bottom Status Footer */} -
- Project Financial Management (PFM) System - Duende STS OIDC Secure Session -
-
+ return ( +
+ {/* Sidebar */} + + + {/* Main Content Area */} +
+ {/* Top Header */} +
+
+ {/* Top Bar Brand Icon & Direct Portal Link */} + + + + PFM + + + + + + {/* Clickable Home Link */} + + + Home + + + + +
+ Tenant: + + + {tenantName} + +
+ + + + + + Authenticated Session + +
+ + {/* User Name & Email derived from token, plus Identity Server signout */} +
+
+

+ {tokenUserName} +

+

+ {tokenUserEmail} +

+
+ + + + {/* Dropdown Menu */} + {userMenuOpen && ( +
setUserMenuOpen(false)} + > +
+

{tokenUserName}

+

{tokenUserEmail}

+ {sub &&

sub: {sub}

} +
+ + setUserMenuOpen(false)} + className="flex items-center gap-2 px-3 py-2 text-xs text-slate-300 hover:text-white hover:bg-slate-800/60 rounded-xl transition" + > + + Go to Home Page + + + +
+ )} +
+
+ + {/* Viewport with Landing Page ambient dot grid and glow */} +
+
+
+
+ +
+ +
+
+ + {/* Bottom Status Footer */} +
+ Project Financial Management (PFM) System + + + Enterprise Secure Session + +
+
+
+ ); }; diff --git a/PostFundManagement.ConsoleUI/src/components/ui/BrandLogo.tsx b/PostFundManagement.ConsoleUI/src/components/ui/BrandLogo.tsx new file mode 100644 index 0000000..3d53a33 --- /dev/null +++ b/PostFundManagement.ConsoleUI/src/components/ui/BrandLogo.tsx @@ -0,0 +1,188 @@ +import React, { useId } from 'react'; + +export interface BrandLogoProps { + size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number; + variant?: 'icon-only' | 'full'; + showGlow?: boolean; + className?: string; + animateOnHover?: boolean; +} + +const sizeMap = { + xs: 20, + sm: 28, + md: 36, + lg: 44, + xl: 56, +}; + +/** + * Modern, stylized SVG brand emblem representing Post Fund Management (PFM). + * Features an isometric kinetic nexus with three interlocking governance facets: + * 1. Top Canopy: Governance, Strategy & Portfolios (Radiant Indigo / Violet) + * 2. Left Vault: Capital, Grants & Disbursement Assurance (Electric Sapphire) + * 3. Right Wing: Milestones, Evidence & Impact Delivery (Cyan to Emerald) + * 4. Center Core: Luminous Floating Diamond Milestone Star + */ +export const BrandLogo: React.FC = ({ + size = 'md', + variant = 'icon-only', + showGlow = true, + className = '', + animateOnHover = true, +}) => { + const uniqueId = useId().replace(/:/g, ''); + const pixelSize = typeof size === 'number' ? size : sizeMap[size] || 36; + + const glowId = `pfm-ambient-${uniqueId}`; + const topGradId = `pfm-top-${uniqueId}`; + const leftGradId = `pfm-left-${uniqueId}`; + const rightGradId = `pfm-right-${uniqueId}`; + const coreGradId = `pfm-core-${uniqueId}`; + const filterId = `pfm-filter-${uniqueId}`; + + return ( +
+
+ {showGlow && ( +
+ )} + + + {/* Ambient Radial Glow */} + + + + + + + {/* Top facet: Governance & Portfolios (Indigo / Radiant Violet) */} + + + + + + + {/* Left facet: Capital & Disbursement Vault (Electric Sapphire) */} + + + + + + + {/* Right facet: Milestones, Evidence & Impact Delivery (Cyan to Emerald) */} + + + + + + + {/* Center Radiant Diamond */} + + + + + + + {/* Core luminous glow filter */} + + + + + + + {/* Deep Contrast Foundation Disk */} + + + + + {/* Outer Hexagonal Structural Shield Outline */} + + + {/* Facet 1: Top Canopy (Governance / Oversight Architecture) */} + + + {/* Facet 2: Left Vault (Fund Management & Capital Allocation) */} + + + {/* Facet 3: Right Wing (Milestone Performance & Impact Assurance) */} + + + {/* Center Geometric Hub (The PFM Nexus Plate) */} + + + {/* Kinetic Stepped Prisms */} + + + + {/* Center Radiant Milestone Diamond */} + + + {/* Center Pure White Optical Star Point */} + + +
+ + {variant === 'full' && ( +
+ + PFM Console + + + Post-Fund Governance + +
+ )} +
+ ); +}; diff --git a/PostFundManagement.ConsoleUI/src/components/ui/Modal.tsx b/PostFundManagement.ConsoleUI/src/components/ui/Modal.tsx index a3bd905..aeba65b 100644 --- a/PostFundManagement.ConsoleUI/src/components/ui/Modal.tsx +++ b/PostFundManagement.ConsoleUI/src/components/ui/Modal.tsx @@ -2,66 +2,66 @@ import React, { ReactNode, useEffect } from 'react'; import { X } from 'lucide-react'; interface ModalProps { - isOpen: boolean; - onClose: () => void; - title: string; - subtitle?: string; - children: ReactNode; - maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'; + isOpen: boolean; + onClose: () => void; + title: string; + subtitle?: string; + children: ReactNode; + maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'; } export const Modal: React.FC = ({ - isOpen, - onClose, - title, - subtitle, - children, - maxWidth = 'lg', + isOpen, + onClose, + title, + subtitle, + children, + maxWidth = 'lg', }) => { - useEffect(() => { - const handleKeyDown = (e: KeyboardEvent) => { - if (e.key === 'Escape') onClose(); - }; - if (isOpen) { - document.body.style.overflow = 'hidden'; - window.addEventListener('keydown', handleKeyDown); - } - return () => { - document.body.style.overflow = 'unset'; - window.removeEventListener('keydown', handleKeyDown); - }; - }, [isOpen, onClose]); + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + if (isOpen) { + document.body.style.overflow = 'hidden'; + window.addEventListener('keydown', handleKeyDown); + } + return () => { + document.body.style.overflow = 'unset'; + window.removeEventListener('keydown', handleKeyDown); + }; + }, [isOpen, onClose]); - if (!isOpen) return null; + if (!isOpen) return null; - const maxWidthClass = { - sm: 'max-w-sm', - md: 'max-w-md', - lg: 'max-w-lg', - xl: 'max-w-xl', - '2xl': 'max-w-2xl', - }[maxWidth]; + const maxWidthClass = { + sm: 'max-w-sm', + md: 'max-w-md', + lg: 'max-w-lg', + xl: 'max-w-xl', + '2xl': 'max-w-2xl', + }[maxWidth]; - return ( -
-
e.stopPropagation()} - > -
-
-

{title}

- {subtitle &&

{subtitle}

} -
- -
-
{children}
-
+ return ( +
+
e.stopPropagation()} + > +
+
+

{title}

+ {subtitle &&

{subtitle}

} +
+
- ); +
{children}
+
+
+ ); }; diff --git a/PostFundManagement.ConsoleUI/src/components/ui/Toast.tsx b/PostFundManagement.ConsoleUI/src/components/ui/Toast.tsx index 90fe50d..5a25733 100644 --- a/PostFundManagement.ConsoleUI/src/components/ui/Toast.tsx +++ b/PostFundManagement.ConsoleUI/src/components/ui/Toast.tsx @@ -4,76 +4,77 @@ import { CheckCircle2, AlertCircle, Info, X } from 'lucide-react'; export type ToastType = 'success' | 'error' | 'info'; interface ToastItem { - id: string; - type: ToastType; - title: string; - message?: string; + id: string; + type: ToastType; + title: string; + message?: string; } interface ToastContextType { - toast: (type: ToastType, title: string, message?: string) => void; - success: (title: string, message?: string) => void; - error: (title: string, message?: string) => void; - info: (title: string, message?: string) => void; + toast: (type: ToastType, title: string, message?: string) => void; + success: (title: string, message?: string) => void; + error: (title: string, message?: string) => void; + info: (title: string, message?: string) => void; } const ToastContext = createContext(undefined); export const ToastProvider: React.FC<{ children: ReactNode }> = ({ children }) => { - const [toasts, setToasts] = useState([]); + const [toasts, setToasts] = useState([]); - const removeToast = (id: string) => { - setToasts((prev) => prev.filter((t) => t.id !== id)); - }; + const removeToast = (id: string) => { + setToasts((prev) => prev.filter((t) => t.id !== id)); + }; - const addToast = (type: ToastType, title: string, message?: string) => { - const id = Math.random().toString(36).substring(2, 9); - setToasts((prev) => [...prev, { id, type, title, message }]); - setTimeout(() => removeToast(id), 5000); - }; + const addToast = (type: ToastType, title: string, message?: string) => { + const id = Math.random().toString(36).substring(2, 9); + setToasts((prev) => [...prev, { id, type, title, message }]); + setTimeout(() => removeToast(id), 5000); + }; - const success = (title: string, message?: string) => addToast('success', title, message); - const error = (title: string, message?: string) => addToast('error', title, message); - const info = (title: string, message?: string) => addToast('info', title, message); + const success = (title: string, message?: string) => addToast('success', title, message); + const error = (title: string, message?: string) => addToast('error', title, message); + const info = (title: string, message?: string) => addToast('info', title, message); - return ( - - {children} -
- {toasts.map((t) => ( -
- {t.type === 'success' && } - {t.type === 'error' && } - {t.type === 'info' && } -
-

{t.title}

- {t.message &&

{t.message}

} -
- -
- ))} + return ( + + {children} +
+ {toasts.map((t) => ( +
+ {t.type === 'success' && } + {t.type === 'error' && } + {t.type === 'info' && } +
+

{t.title}

+ {t.message &&

{t.message}

}
- - ); + +
+ ))} +
+
+ ); }; export const useToast = () => { - const context = useContext(ToastContext); - if (!context) { - throw new Error('useToast must be used within a ToastProvider'); - } - return context; + const context = useContext(ToastContext); + if (!context) { + throw new Error('useToast must be used within a ToastProvider'); + } + return context; }; diff --git a/PostFundManagement.ConsoleUI/src/config.ts b/PostFundManagement.ConsoleUI/src/config.ts index 0a1a851..b7ad2ca 100644 --- a/PostFundManagement.ConsoleUI/src/config.ts +++ b/PostFundManagement.ConsoleUI/src/config.ts @@ -1,43 +1,382 @@ +import { updateHasherSettings } from './services/toolsService'; + export interface SecuritySettings { - Authority: string; - Audience: string; - ClientId: string; - ClientSecret: string; + Authority: string; + Audience: string; + ClientId: string; + ClientSecret: string; + Scope?: string; } export interface ApiSettings { - BaseUrl: string; + BaseUrl: string; } +export interface HasherSettings { + Salt: string; + MinHashLength: number; +} + +export type ConfigSource = + | 'runtime-injected' + | 'runtime-fetched' + | 'build-env' + | 'fallback-defaults'; + export interface AppConfig { - SecuritySettings: SecuritySettings; - ApiSettings: ApiSettings; + SecuritySettings: SecuritySettings; + ApiSettings: ApiSettings; + HasherSettings: HasherSettings; + ConfigSource: ConfigSource; + LoadedAt?: string; } +// Fallback presets (used only when no runtime or build-time variable is provided) export const defaultSecuritySettings: SecuritySettings = { - Authority: (import.meta.env.VITE_OIDC_AUTHORITY as string) || 'https://sts.security.khongisa.co.za', - Audience: (import.meta.env.VITE_OIDC_AUDIENCE as string) || 'pfm-api-dev', - ClientId: (import.meta.env.VITE_OIDC_CLIENT_ID as string) || 'pfm-console-dev', - ClientSecret: (import.meta.env.VITE_OIDC_CLIENT_SECRET as string) || 'secret_dcaeaa28097d9ba5b06ec324d9eac9d9c81de96e0a203cf2c6154c6dd7c89e94', + Authority: 'https://sts.security.khongisa.co.za', + Audience: 'pfm-api-dev', + ClientId: 'pfm-console-dev', + ClientSecret: 'secret_dcaeaa28097d9ba5b06ec324d9eac9d9c81de96e0a203cf2c6154c6dd7c89e94', + Scope: 'openid profile roles email address pfm-api-dev', }; export const defaultApiSettings: ApiSettings = { - BaseUrl: (import.meta.env.VITE_API_BASE_URL as string) || 'https://api.ifri.khongisa.co.za/', + BaseUrl: 'https://api.ifri.khongisa.co.za/', }; -const runtimeConfig: AppConfig = { - SecuritySettings: defaultSecuritySettings, - ApiSettings: defaultApiSettings, +export const defaultHasherSettings: HasherSettings = { + Salt: 'TGlnaHQgQ2hhcm1zLCBNaWRyYW5kQm9va3MgbWFrZSBsb3RzIG9mIG1vbmV5IGFuZCBhcmUgYSBzdWNjZXNzZnVsIHZpcmFsIHN0b3J5IGluIFNvdXRoIEFmcmljYQ==', + MinHashLength: 11, }; +/** + * Extracts first non-empty, trimmed string from candidate values. + */ +function pickFirstNonEmpty(...candidates: any[]): string | undefined { + for (const c of candidates) { + if (c !== undefined && c !== null) { + const s = String(c).trim(); + if (s !== '' && s !== 'undefined' && s !== 'null') { + return s; + } + } + } + return undefined; +} + +/** + * Normalizes an API base URL ensuring proper protocol and single trailing slash. + */ +function normalizeBaseUrl(url: string): string { + const trimmed = url.trim(); + return trimmed.endsWith('/') ? trimmed : `${trimmed}/`; +} + +/** + * Reads any runtime config object injected into window. + * Supports: window.__RUNTIME_CONFIG__, window.APP_CONFIG, window._env_ + */ +function getWindowRuntimeConfig(): Record { + if (typeof window === 'undefined') return {}; + const win = window as any; + return win.__RUNTIME_CONFIG__ || win.APP_CONFIG || win._env_ || {}; +} + +/** + * Parses and maps configuration from a given source object. + * Checks flat keys, nested keys, and ASP.NET double-underscore conventions. + */ +function extractSourceConfig(src: Record): { + authority?: string; + audience?: string; + clientId?: string; + clientSecret?: string; + scope?: string; + baseUrl?: string; + hasherSalt?: string; + hasherMinLength?: number; +} { + if (!src || typeof src !== 'object') return {}; + + const authority = pickFirstNonEmpty( + src.VITE_OIDC_AUTHORITY, + src.OIDC_AUTHORITY, + src.SecuritySettings?.Authority, + src.SecuritySettings__Authority, + src.SecuritySettings_Authority, + src.AUTHORITY, + src.STS_AUTHORITY + ); + + const audience = pickFirstNonEmpty( + src.VITE_OIDC_AUDIENCE, + src.OIDC_AUDIENCE, + src.SecuritySettings?.Audience, + src.SecuritySettings__Audience, + src.SecuritySettings_Audience, + src.AUDIENCE + ); + + const clientId = pickFirstNonEmpty( + src.VITE_OIDC_CLIENT_ID, + src.OIDC_CLIENT_ID, + src.SecuritySettings?.ClientId, + src.SecuritySettings__ClientId, + src.SecuritySettings_ClientId, + src.CLIENT_ID + ); + + const clientSecret = pickFirstNonEmpty( + src.VITE_OIDC_CLIENT_SECRET, + src.OIDC_CLIENT_SECRET, + src.SecuritySettings?.ClientSecret, + src.SecuritySettings__ClientSecret, + src.SecuritySettings_ClientSecret, + src.CLIENT_SECRET + ); + + const scope = pickFirstNonEmpty( + src.VITE_OIDC_SCOPE, + src.OIDC_SCOPE, + src.SecuritySettings?.Scope, + src.SecuritySettings__Scope, + src.SecuritySettings_Scope, + src.SCOPE + ); + + const baseUrl = pickFirstNonEmpty( + src.VITE_API_BASE_URL, + src.API_BASE_URL, + src.ApiSettings?.BaseUrl, + src.ApiSettings__BaseUrl, + src.ApiSettings_BaseUrl, + src.PFM_API_BASE_URL + ); + + const hasherSalt = pickFirstNonEmpty( + src.VITE_HASHER_SALT, + src.HASHER_SALT, + src.HasherSettings?.Salt, + src.HasherSettings__Salt, + src.HasherSettings_Salt + ); + + const rawMinLength = pickFirstNonEmpty( + src.VITE_HASHER_MIN_LENGTH, + src.HASHER_MIN_LENGTH, + src.HasherSettings?.MinHashLength, + src.HasherSettings__MinLength, + src.HasherSettings_MinLength + ); + + const hasherMinLength = rawMinLength ? Number(rawMinLength) : undefined; + + return { + authority, + audience, + clientId, + clientSecret, + scope, + baseUrl: baseUrl ? normalizeBaseUrl(baseUrl) : undefined, + hasherSalt, + hasherMinLength: hasherMinLength && !isNaN(hasherMinLength) && hasherMinLength > 0 ? hasherMinLength : undefined, + }; +} + +/** + * Builds the prioritized configuration by evaluating: + * Tier 1: Injected Runtime Config (window.__RUNTIME_CONFIG__ from docker-entrypoint.sh) + * Tier 2: Fetched Runtime Config (/config.json from server) + * Tier 3: Vite Build-Time Variables (import.meta.env.VITE_*) + * Tier 4: Fallback Defaults + */ +function resolveConfig(fetchedJson?: Record): AppConfig { + const windowConfig = extractSourceConfig(getWindowRuntimeConfig()); + const fetchedConfig = fetchedJson ? extractSourceConfig(fetchedJson) : {}; + const buildEnvConfig = extractSourceConfig( + (typeof import.meta !== 'undefined' && import.meta.env ? import.meta.env : {}) as Record + ); + + // Check if any runtime deployment override was provided + const hasInjected = Object.values(windowConfig).some((v) => v !== undefined); + const hasFetched = Object.values(fetchedConfig).some((v) => v !== undefined); + const hasBuildEnv = Object.values(buildEnvConfig).some((v) => v !== undefined); + + let source: ConfigSource = 'fallback-defaults'; + if (hasInjected) { + source = 'runtime-injected'; + } else if (hasFetched) { + source = 'runtime-fetched'; + } else if (hasBuildEnv) { + source = 'build-env'; + } + + const authority = pickFirstNonEmpty( + windowConfig.authority, + fetchedConfig.authority, + buildEnvConfig.authority, + defaultSecuritySettings.Authority + )!; + + const audience = pickFirstNonEmpty( + windowConfig.audience, + fetchedConfig.audience, + buildEnvConfig.audience, + defaultSecuritySettings.Audience + )!; + + const clientId = pickFirstNonEmpty( + windowConfig.clientId, + fetchedConfig.clientId, + buildEnvConfig.clientId, + defaultSecuritySettings.ClientId + )!; + + const clientSecret = pickFirstNonEmpty( + windowConfig.clientSecret, + fetchedConfig.clientSecret, + buildEnvConfig.clientSecret, + defaultSecuritySettings.ClientSecret + )!; + + const scope = pickFirstNonEmpty( + windowConfig.scope, + fetchedConfig.scope, + buildEnvConfig.scope, + defaultSecuritySettings.Scope + ); + + const baseUrl = pickFirstNonEmpty( + windowConfig.baseUrl, + fetchedConfig.baseUrl, + buildEnvConfig.baseUrl, + defaultApiSettings.BaseUrl + )!; + + const salt = pickFirstNonEmpty( + windowConfig.hasherSalt, + fetchedConfig.hasherSalt, + buildEnvConfig.hasherSalt, + defaultHasherSettings.Salt + )!; + + const minHashLength = + windowConfig.hasherMinLength || + fetchedConfig.hasherMinLength || + buildEnvConfig.hasherMinLength || + defaultHasherSettings.MinHashLength; + + return { + SecuritySettings: { + Authority: authority, + Audience: audience, + ClientId: clientId, + ClientSecret: clientSecret, + Scope: scope, + }, + ApiSettings: { + BaseUrl: normalizeBaseUrl(baseUrl), + }, + HasherSettings: { + Salt: salt, + MinHashLength: minHashLength, + }, + ConfigSource: source, + LoadedAt: new Date().toISOString(), + }; +} + +// Initial synchronous computation from window.__RUNTIME_CONFIG__ and build-time env +let runtimeConfig: AppConfig = resolveConfig(); + +// Immediately apply deterministic hasher settings +updateHasherSettings(runtimeConfig.HasherSettings.Salt, runtimeConfig.HasherSettings.MinHashLength); + +const configListeners: Array<(config: AppConfig) => void> = []; + +export function onConfigChanged(listener: (config: AppConfig) => void): () => void { + configListeners.push(listener); + return () => { + const idx = configListeners.indexOf(listener); + if (idx !== -1) configListeners.splice(idx, 1); + }; +} + +let loadPromise: Promise | null = null; + +/** + * Asynchronously loads and verifies runtime configuration. + * Fetches /config.json with cache-busting to ensure latest deployment variables + * are prioritized over static build artifacts. + */ export async function loadRuntimeConfig(): Promise { + if (loadPromise) return loadPromise; + + loadPromise = (async () => { + let fetchedJson: Record | undefined; + + if (typeof window !== 'undefined') { + try { + // Fetch /config.json with cache-busting to bypass any intermediary caching + const res = await fetch(`/config.json?_t=${Date.now()}`, { + cache: 'no-store', + headers: { + Accept: 'application/json', + }, + }); + + if (res.ok) { + const data = await res.json(); + if (data && typeof data === 'object') { + fetchedJson = data; + } + } + } catch (err) { + // Fetching /config.json is non-blocking; window.__RUNTIME_CONFIG__ or env fallback will be used + console.debug('[Config] Note: Remote /config.json fetch bypassed:', err); + } + } + + runtimeConfig = resolveConfig(fetchedJson); + + // Synchronize deterministic hasher settings + updateHasherSettings(runtimeConfig.HasherSettings.Salt, runtimeConfig.HasherSettings.MinHashLength); + + console.info( + `[Config] Active runtime configuration: source=${runtimeConfig.ConfigSource}, API=${runtimeConfig.ApiSettings.BaseUrl}, STS=${runtimeConfig.SecuritySettings.Authority}` + ); + + // Notify registered listeners + configListeners.forEach((fn) => { + try { + fn(runtimeConfig); + } catch (e) { + console.error('[Config] Listener error:', e); + } + }); + return runtimeConfig; + })(); + + return loadPromise; +} + +export function getAppConfig(): AppConfig { + return runtimeConfig; } export function getSecuritySettings(): SecuritySettings { - return runtimeConfig.SecuritySettings; + return runtimeConfig.SecuritySettings; } export function getApiBaseUrl(): string { - return runtimeConfig.ApiSettings.BaseUrl; + return runtimeConfig.ApiSettings.BaseUrl; +} + +export function getHasherSettings(): HasherSettings { + return runtimeConfig.HasherSettings; +} + +export function getConfigSource(): ConfigSource { + return runtimeConfig.ConfigSource; } diff --git a/PostFundManagement.ConsoleUI/src/index.css b/PostFundManagement.ConsoleUI/src/index.css index d430f1f..ef65b70 100644 --- a/PostFundManagement.ConsoleUI/src/index.css +++ b/PostFundManagement.ConsoleUI/src/index.css @@ -1,44 +1,58 @@ @import "tailwindcss"; +@theme { + --font-sans: 'Plus Jakarta Sans', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; +} + @layer base { - :root { - color-scheme: dark; - } + :root { + color-scheme: dark; + --font-sans: 'Plus Jakarta Sans', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + } - body { - background-color: #0a0a0a; - color: #e5e7eb; - font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - } + body { + background-color: #090d16; + color: #e2e8f0; + font-family: var(--font-sans); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } - /* Form control color scheme */ - input, select, textarea { - color-scheme: dark; - } + button, input, select, textarea { + font-family: inherit; + } - /* Custom dark scrollbar styling */ - ::-webkit-scrollbar { - width: 6px; - height: 6px; - } + .font-mono, code, kbd, samp, pre { + font-family: var(--font-mono) !important; + } - ::-webkit-scrollbar-track { - background: #0a0a0a; - } + /* Form control color scheme */ + input, select, textarea { + color-scheme: dark; + } - ::-webkit-scrollbar-thumb { - background: #262626; - border-radius: 9999px; - } - - ::-webkit-scrollbar-thumb:hover { - background: #3f3f46; - } + /* Custom dark scrollbar styling */ + ::-webkit-scrollbar { + width: 6px; + height: 6px; + } + ::-webkit-scrollbar-track { + background: #0a0a0a; + } + ::-webkit-scrollbar-thumb { + background: #262626; + border-radius: 9999px; + } + ::-webkit-scrollbar-thumb:hover { + background: #3f3f46; + } } /* High Contrast Dark Theme Adaptations for existing utility classes */ .bg-white { - background-color: #111111 !important; + background-color: #111111 !important; } .bg-slate-50, @@ -47,210 +61,211 @@ .bg-slate-50\/75, .bg-slate-50\/80, .bg-slate-50\/90 { - background-color: #161616 !important; + background-color: #161616 !important; } .bg-slate-100, .bg-slate-200 { - background-color: #202020 !important; + background-color: #202020 !important; } .border-slate-100 { - border-color: #222222 !important; + border-color: #222222 !important; } .border-slate-200 { - border-color: #2d2d2d !important; + border-color: #2d2d2d !important; } .border-slate-300 { - border-color: #3d3d3d !important; + border-color: #3d3d3d !important; } .divide-slate-100 > :not([hidden]) ~ :not([hidden]), .divide-slate-200 > :not([hidden]) ~ :not([hidden]) { - border-color: #242424 !important; + border-color: #242424 !important; } /* Text contrast enhancements */ .text-slate-900 { - color: #ffffff !important; + color: #ffffff !important; } .text-slate-800 { - color: #f8fafc !important; + color: #f8fafc !important; } .text-slate-700 { - color: #f1f5f9 !important; + color: #f1f5f9 !important; } .text-slate-600 { - color: #e2e8f0 !important; + color: #e2e8f0 !important; } .text-slate-500 { - color: #cbd5e1 !important; + color: #cbd5e1 !important; } .text-slate-400 { - color: #94a3b8 !important; + color: #94a3b8 !important; } .text-gray-900 { - color: #ffffff !important; + color: #ffffff !important; } .text-gray-800 { - color: #f8fafc !important; + color: #f8fafc !important; } .text-gray-700 { - color: #f1f5f9 !important; + color: #f1f5f9 !important; } .text-gray-600 { - color: #e2e8f0 !important; + color: #e2e8f0 !important; } .text-gray-500 { - color: #cbd5e1 !important; + color: #cbd5e1 !important; } .text-gray-400 { - color: #94a3b8 !important; + color: #94a3b8 !important; } /* High-contrast status badges and notification banners */ .bg-emerald-50, .bg-emerald-50\/40, .bg-emerald-50\/60 { - background-color: rgba(16, 185, 129, 0.16) !important; + background-color: rgba(16, 185, 129, 0.16) !important; } .text-emerald-700, .text-emerald-800, .text-emerald-900 { - color: #6ee7b7 !important; + color: #6ee7b7 !important; } .border-emerald-200, .border-emerald-300 { - border-color: rgba(110, 231, 183, 0.35) !important; + border-color: rgba(110, 231, 183, 0.35) !important; } .bg-amber-50, .bg-amber-50\/40, .bg-amber-50\/60 { - background-color: rgba(245, 158, 11, 0.16) !important; + background-color: rgba(245, 158, 11, 0.16) !important; } .text-amber-700, .text-amber-800, .text-amber-900 { - color: #fcd34d !important; + color: #fcd34d !important; } .border-amber-200, .border-amber-300 { - border-color: rgba(252, 211, 77, 0.35) !important; + border-color: rgba(252, 211, 77, 0.35) !important; } .bg-rose-50, .bg-rose-50\/40, .bg-rose-50\/60 { - background-color: rgba(244, 63, 94, 0.16) !important; + background-color: rgba(244, 63, 94, 0.16) !important; } .text-rose-700, .text-rose-800, .text-rose-900 { - color: #fda4af !important; + color: #fda4af !important; } .border-rose-200, .border-rose-300 { - border-color: rgba(253, 164, 175, 0.35) !important; + border-color: rgba(253, 164, 175, 0.35) !important; } .bg-purple-50, .bg-indigo-50 { - background-color: rgba(139, 92, 246, 0.16) !important; + background-color: rgba(139, 92, 246, 0.16) !important; } .text-purple-700, .text-purple-800, .text-indigo-700, .text-indigo-800 { - color: #d8b4fe !important; + color: #d8b4fe !important; } .border-purple-200, .border-purple-300, .border-indigo-200, .border-indigo-300 { - border-color: rgba(216, 180, 254, 0.35) !important; + border-color: rgba(216, 180, 254, 0.35) !important; } .bg-sky-50, .bg-blue-50 { - background-color: rgba(59, 130, 246, 0.16) !important; + background-color: rgba(59, 130, 246, 0.16) !important; } .text-sky-700, .text-sky-800, .text-blue-700, .text-blue-800 { - color: #93c5fd !important; + color: #93c5fd !important; } .border-sky-200, .border-sky-300, .border-blue-200, .border-blue-300 { - border-color: rgba(147, 197, 253, 0.35) !important; + border-color: rgba(147, 197, 253, 0.35) !important; } /* Form inputs, textareas, and select controls */ input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]), select, textarea { - background-color: #141414 !important; - color: #ffffff !important; - border-color: #383838 !important; + background-color: #141414 !important; + color: #ffffff !important; + border-color: #383838 !important; } - input::placeholder, - textarea::placeholder { - color: #94a3b8 !important; - } +input::placeholder, +textarea::placeholder { + color: #94a3b8 !important; +} /* Table header text high contrast */ th { - color: #cbd5e1 !important; + color: #cbd5e1 !important; } .hover\:bg-slate-50:hover, .hover\:bg-slate-50\/80:hover, .hover\:bg-slate-100:hover { - background-color: #1f1f1f !important; + background-color: #1f1f1f !important; } .hover\:text-slate-800:hover, .hover\:text-slate-900:hover { - color: #ffffff !important; + color: #ffffff !important; } /* Primary actions matching the clean blue/indigo accent */ .bg-emerald-600 { - background-color: #2563eb !important; + background-color: #2563eb !important; } .hover\:bg-emerald-500:hover, .hover\:bg-emerald-700:hover { - background-color: #1d4ed8 !important; + background-color: #1d4ed8 !important; } .border-emerald-600 { - border-color: #3b82f6 !important; + border-color: #3b82f6 !important; } + diff --git a/PostFundManagement.ConsoleUI/src/lib/queryClient.ts b/PostFundManagement.ConsoleUI/src/lib/queryClient.ts index f054a86..e9cc63b 100644 --- a/PostFundManagement.ConsoleUI/src/lib/queryClient.ts +++ b/PostFundManagement.ConsoleUI/src/lib/queryClient.ts @@ -1,11 +1,11 @@ import { QueryClient } from '@tanstack/react-query'; export const queryClient = new QueryClient({ - defaultOptions: { - queries: { - staleTime: 1000 * 60 * 3, // 3 minutes default cache - refetchOnWindowFocus: false, - retry: 1, - }, + defaultOptions: { + queries: { + staleTime: 1000 * 60 * 3, // 3 minutes default cache + refetchOnWindowFocus: false, + retry: 1, }, + }, }); diff --git a/PostFundManagement.ConsoleUI/src/main.tsx b/PostFundManagement.ConsoleUI/src/main.tsx index 2ad9aab..de3f036 100644 --- a/PostFundManagement.ConsoleUI/src/main.tsx +++ b/PostFundManagement.ConsoleUI/src/main.tsx @@ -2,9 +2,14 @@ import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import App from './App.tsx'; import './index.css'; +import { loadRuntimeConfig } from './config'; -createRoot(document.getElementById('root')!).render( +// Load runtime environment configuration before mounting the application +loadRuntimeConfig().finally(() => { + createRoot(document.getElementById('root')!).render( - - , -); + + + ); +}); + diff --git a/PostFundManagement.ConsoleUI/src/pages/ExecutiveDashboard.tsx b/PostFundManagement.ConsoleUI/src/pages/ExecutiveDashboard.tsx index b7a69d6..3de5946 100644 --- a/PostFundManagement.ConsoleUI/src/pages/ExecutiveDashboard.tsx +++ b/PostFundManagement.ConsoleUI/src/pages/ExecutiveDashboard.tsx @@ -2,654 +2,657 @@ import React, { useState, useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import { Link } from 'react-router-dom'; import { - TrendingUp, - AlertTriangle, - Users, - Layers, - Coins, - CheckCircle, - ArrowUpRight, - Filter, - RefreshCw, - Clock, - ShieldAlert, + TrendingUp, + AlertTriangle, + Users, + Layers, + Coins, + CheckCircle, + ArrowUpRight, + Filter, + RefreshCw, + Clock, + ShieldAlert, } from 'lucide-react'; import { - getDashboard, - getProjects, - getAllPortfolios, - getAllProgrammes, - getAwards, - getBudgets, - getDisbursements, - getAllRisks, + getDashboard, + getProjects, + getAllPortfolios, + getAllProgrammes, + getAwards, + getBudgets, + getDisbursements, + getAllRisks, } from '../services/api'; import { formatCompactZAR, formatZAR, getIndustrySectorLabel } from '../lib/formatters'; import { ApprovalStatus } from '../types'; export const ExecutiveDashboard: React.FC = () => { - const [selectedProgramme, setSelectedProgramme] = useState('All'); - const [selectedSector, setSelectedSector] = useState('All'); - const [selectedPeriod, setSelectedPeriod] = useState('FY 2026/27'); + const [selectedProgramme, setSelectedProgramme] = useState('All'); + const [selectedSector, setSelectedSector] = useState('All'); + const [selectedPeriod, setSelectedPeriod] = useState('FY 2026/27'); - // Real Queries from OpenAPI Endpoints - const { data: dashboard, isLoading: loadingDashboard, refetch: refetchDashboard, isFetching } = useQuery({ - queryKey: ['dashboard'], - queryFn: getDashboard, + // Real Queries from OpenAPI Endpoints + const { data: dashboard, isLoading: loadingDashboard, refetch: refetchDashboard, isFetching } = useQuery({ + queryKey: ['dashboard'], + queryFn: getDashboard, + }); + + const { data: projects = [] } = useQuery({ + queryKey: ['projects'], + queryFn: () => getProjects(), + }); + + const { data: portfolios = [] } = useQuery({ + queryKey: ['portfolios'], + queryFn: () => getAllPortfolios(), + }); + + const { data: programmes = [] } = useQuery({ + queryKey: ['programmes'], + queryFn: () => getAllProgrammes(), + }); + + const { data: awards = [] } = useQuery({ + queryKey: ['awards'], + queryFn: () => getAwards(), + }); + + const { data: budgets = [] } = useQuery({ + queryKey: ['budgets'], + queryFn: () => getBudgets(), + }); + + const { data: disbursements = [] } = useQuery({ + queryKey: ['disbursements'], + queryFn: () => getDisbursements(), + }); + + const { data: risks = [] } = useQuery({ + queryKey: ['risks'], + queryFn: () => getAllRisks(), + }); + + const refetchAll = () => { + refetchDashboard(); + }; + + // Headline metrics sourced directly from live API models + const portfolioValue = useMemo(() => { + if (dashboard?.portfolioValue && dashboard.portfolioValue > 0) { + return dashboard.portfolioValue; + } + const budgetTotal = budgets.reduce((sum, b) => sum + (b.amount || 0), 0); + if (budgetTotal > 0) return budgetTotal; + const awardsTotal = awards.reduce((sum, a) => sum + (a.amount || 0), 0); + return awardsTotal; + }, [dashboard, budgets, awards]); + + const activeAwards = dashboard?.activeAwards ?? (awards.length || projects.length); + + const disbursed = useMemo(() => { + if (dashboard?.disbursed && dashboard.disbursed > 0) { + return dashboard.disbursed; + } + return disbursements + .filter((d) => d.status === ApprovalStatus.Approved || (d.status as number) === 3) + .reduce((sum, d) => sum + (d.amount || 0), 0); + }, [dashboard, disbursements]); + + const onTrackPercentage = useMemo(() => { + if (dashboard?.onTrackPercentage !== undefined && dashboard.onTrackPercentage > 0) { + return dashboard.onTrackPercentage; + } + if (projects.length === 0) return 0; + const activeOnTrack = projects.filter((p) => p.status === ApprovalStatus.Approved).length; + return Math.round((activeOnTrack / projects.length) * 100); + }, [dashboard, projects]); + + const atRiskCount = useMemo(() => { + if (dashboard?.atRiskCount !== undefined) { + return dashboard.atRiskCount; + } + return risks.filter((r) => r.likelihood * r.impact >= 12).length; + }, [dashboard, risks]); + + const beneficiariesReached = dashboard?.beneficiariesReached ?? 0; + + // Real sector breakdown calculated dynamically from actual project records + const sectorData = useMemo(() => { + if (!projects || projects.length === 0) return []; + const counts: Record = {}; + projects.forEach((p) => { + const label = getIndustrySectorLabel(p.sector); + counts[label] = (counts[label] || 0) + 1; }); - const { data: projects = [] } = useQuery({ - queryKey: ['projects'], - queryFn: () => getProjects(), - }); + const colors = ['bg-emerald-500', 'bg-teal-500', 'bg-blue-500', 'bg-indigo-500', 'bg-purple-500', 'bg-amber-500']; + const totalProjects = projects.length; - const { data: portfolios = [] } = useQuery({ - queryKey: ['portfolios'], - queryFn: () => getAllPortfolios(), + return Object.entries(counts).map(([name, count], index) => { + const percentage = Math.round((count / totalProjects) * 100); + const amount = portfolioValue > 0 ? Math.round((portfolioValue / totalProjects) * count) : 0; + return { + name, + count, + percentage, + amount, + color: colors[index % colors.length], + }; }); + }, [projects, portfolioValue]); - const { data: programmes = [] } = useQuery({ - queryKey: ['programmes'], - queryFn: () => getAllProgrammes(), - }); + // Risk heatmap matrix computed directly from registered risk records + const riskHeatmap = useMemo(() => { + const matrix = { + highImpHighLik: risks.filter((r) => r.impact >= 4 && r.likelihood >= 4).length, + highImpMedLik: risks.filter((r) => r.impact >= 4 && r.likelihood === 3).length, + highImpLowLik: risks.filter((r) => r.impact >= 4 && r.likelihood <= 2).length, - const { data: awards = [] } = useQuery({ - queryKey: ['awards'], - queryFn: () => getAwards(), - }); + medImpHighLik: risks.filter((r) => r.impact === 3 && r.likelihood >= 4).length, + medImpMedLik: risks.filter((r) => r.impact === 3 && r.likelihood === 3).length, + medImpLowLik: risks.filter((r) => r.impact === 3 && r.likelihood <= 2).length, - const { data: budgets = [] } = useQuery({ - queryKey: ['budgets'], - queryFn: () => getBudgets(), - }); + lowImpHighLik: risks.filter((r) => r.impact <= 2 && r.likelihood >= 4).length, + lowImpMedLik: risks.filter((r) => r.impact <= 2 && r.likelihood === 3).length, + lowImpLowLik: risks.filter((r) => r.impact <= 2 && r.likelihood <= 2).length, - const { data: disbursements = [] } = useQuery({ - queryKey: ['disbursements'], - queryFn: () => getDisbursements(), - }); - - const { data: risks = [] } = useQuery({ - queryKey: ['risks'], - queryFn: () => getAllRisks(), - }); - - const refetchAll = () => { - refetchDashboard(); + flaggedCount: risks.filter((r) => r.impact * r.likelihood >= 12).length, }; + return matrix; + }, [risks]); - // Headline metrics sourced directly from live API models - const portfolioValue = useMemo(() => { - if (dashboard?.portfolioValue && dashboard.portfolioValue > 0) { - return dashboard.portfolioValue; - } - const budgetTotal = budgets.reduce((sum, b) => sum + (b.amount || 0), 0); - if (budgetTotal > 0) return budgetTotal; - const awardsTotal = awards.reduce((sum, a) => sum + (a.amount || 0), 0); - return awardsTotal; - }, [dashboard, budgets, awards]); + // Quarterly disbursements distribution computed from real disbursement items + const quarterlyTrend = useMemo(() => { + if (!disbursements || disbursements.length === 0) { + return [ + { quarter: 'Q1', amount: 0, heightPct: 15 }, + { quarter: 'Q2', amount: 0, heightPct: 15 }, + { quarter: 'Q3', amount: 0, heightPct: 15 }, + { quarter: 'Q4', amount: 0, heightPct: 15 }, + ]; + } - const activeAwards = dashboard?.activeAwards ?? (awards.length || projects.length); + const qTotals: Record = { Q1: 0, Q2: 0, Q3: 0, Q4: 0 }; + disbursements.forEach((d) => { + const dateStr = d.createdAt || d.updatedAt; + if (dateStr) { + const month = new Date(dateStr).getMonth(); // 0-11 + if (month <= 2) qTotals.Q1 += d.amount || 0; + else if (month <= 5) qTotals.Q2 += d.amount || 0; + else if (month <= 8) qTotals.Q3 += d.amount || 0; + else qTotals.Q4 += d.amount || 0; + } else { + qTotals.Q1 += (d.amount || 0) * 0.25; + qTotals.Q2 += (d.amount || 0) * 0.25; + qTotals.Q3 += (d.amount || 0) * 0.25; + qTotals.Q4 += (d.amount || 0) * 0.25; + } + }); - const disbursed = useMemo(() => { - if (dashboard?.disbursed && dashboard.disbursed > 0) { - return dashboard.disbursed; - } - return disbursements - .filter((d) => d.status === ApprovalStatus.Approved || (d.status as number) === 3) - .reduce((sum, d) => sum + (d.amount || 0), 0); - }, [dashboard, disbursements]); + const maxQ = Math.max(...Object.values(qTotals), 1); + return Object.entries(qTotals).map(([quarter, amount]) => ({ + quarter, + amount, + heightPct: Math.max(15, Math.min(100, Math.round((amount / maxQ) * 100))), + })); + }, [disbursements]); - const onTrackPercentage = useMemo(() => { - if (dashboard?.onTrackPercentage !== undefined && dashboard.onTrackPercentage > 0) { - return dashboard.onTrackPercentage; - } - if (projects.length === 0) return 0; - const activeOnTrack = projects.filter((p) => p.status === ApprovalStatus.Approved).length; - return Math.round((activeOnTrack / projects.length) * 100); - }, [dashboard, projects]); - - const atRiskCount = useMemo(() => { - if (dashboard?.atRiskCount !== undefined) { - return dashboard.atRiskCount; - } - return risks.filter((r) => r.likelihood * r.impact >= 12).length; - }, [dashboard, risks]); - - const beneficiariesReached = dashboard?.beneficiariesReached ?? 0; - - // Real sector breakdown calculated dynamically from actual project records - const sectorData = useMemo(() => { - if (!projects || projects.length === 0) return []; - const counts: Record = {}; - projects.forEach((p) => { - const label = getIndustrySectorLabel(p.sector); - counts[label] = (counts[label] || 0) + 1; - }); - - const colors = ['bg-emerald-500', 'bg-teal-500', 'bg-blue-500', 'bg-indigo-500', 'bg-purple-500', 'bg-amber-500']; - const totalProjects = projects.length; - - return Object.entries(counts).map(([name, count], index) => { - const percentage = Math.round((count / totalProjects) * 100); - const amount = portfolioValue > 0 ? Math.round((portfolioValue / totalProjects) * count) : 0; - return { - name, - count, - percentage, - amount, - color: colors[index % colors.length], - }; - }); - }, [projects, portfolioValue]); - - // Risk heatmap matrix computed directly from registered risk records - const riskHeatmap = useMemo(() => { - const matrix = { - highImpHighLik: risks.filter((r) => r.impact >= 4 && r.likelihood >= 4).length, - highImpMedLik: risks.filter((r) => r.impact >= 4 && r.likelihood === 3).length, - highImpLowLik: risks.filter((r) => r.impact >= 4 && r.likelihood <= 2).length, - - medImpHighLik: risks.filter((r) => r.impact === 3 && r.likelihood >= 4).length, - medImpMedLik: risks.filter((r) => r.impact === 3 && r.likelihood === 3).length, - medImpLowLik: risks.filter((r) => r.impact === 3 && r.likelihood <= 2).length, - - lowImpHighLik: risks.filter((r) => r.impact <= 2 && r.likelihood >= 4).length, - lowImpMedLik: risks.filter((r) => r.impact <= 2 && r.likelihood === 3).length, - lowImpLowLik: risks.filter((r) => r.impact <= 2 && r.likelihood <= 2).length, - - flaggedCount: risks.filter((r) => r.impact * r.likelihood >= 12).length, + // Attention Projects derived directly from live project data + const attentionProjects = useMemo(() => { + if (!projects || projects.length === 0) return []; + return projects + .filter((p) => p.status === ApprovalStatus.Rejected || p.status === ApprovalStatus.Pending || p.status === ApprovalStatus.Review) + .slice(0, 5) + .map((p) => { + const isRejected = p.status === ApprovalStatus.Rejected; + const isPending = p.status === ApprovalStatus.Pending || p.status === ApprovalStatus.Review; + return { + id: p.id, + name: p.name, + programme: p.programmeName || `Programme ${p.programmeId}`, + status: isRejected ? 'At Risk' : isPending ? 'Pending' : 'Active', + risk: isRejected ? 'RED' : isPending ? 'AMBER' : 'GREEN', + financialVariance: isRejected ? '-15%' : '0%', + varianceType: isRejected ? 'negative' : 'positive', }; - return matrix; - }, [risks]); + }); + }, [projects]); - // Quarterly disbursements distribution computed from real disbursement items - const quarterlyTrend = useMemo(() => { - if (!disbursements || disbursements.length === 0) { - return [ - { quarter: 'Q1', amount: 0, heightPct: 15 }, - { quarter: 'Q2', amount: 0, heightPct: 15 }, - { quarter: 'Q3', amount: 0, heightPct: 15 }, - { quarter: 'Q4', amount: 0, heightPct: 15 }, - ]; - } - - const qTotals: Record = { Q1: 0, Q2: 0, Q3: 0, Q4: 0 }; - disbursements.forEach((d) => { - const dateStr = d.createdAt || d.updatedAt; - if (dateStr) { - const month = new Date(dateStr).getMonth(); // 0-11 - if (month <= 2) qTotals.Q1 += d.amount || 0; - else if (month <= 5) qTotals.Q2 += d.amount || 0; - else if (month <= 8) qTotals.Q3 += d.amount || 0; - else qTotals.Q4 += d.amount || 0; - } else { - qTotals.Q1 += (d.amount || 0) * 0.25; - qTotals.Q2 += (d.amount || 0) * 0.25; - qTotals.Q3 += (d.amount || 0) * 0.25; - qTotals.Q4 += (d.amount || 0) * 0.25; - } - }); - - const maxQ = Math.max(...Object.values(qTotals), 1); - return Object.entries(qTotals).map(([quarter, amount]) => ({ - quarter, - amount, - heightPct: Math.max(15, Math.min(100, Math.round((amount / maxQ) * 100))), - })); - }, [disbursements]); - - // Attention Projects derived directly from live project data - const attentionProjects = useMemo(() => { - if (!projects || projects.length === 0) return []; - return projects - .filter((p) => p.status === ApprovalStatus.Rejected || p.status === ApprovalStatus.Pending || p.status === ApprovalStatus.Review) - .slice(0, 5) - .map((p) => { - const isRejected = p.status === ApprovalStatus.Rejected; - const isPending = p.status === ApprovalStatus.Pending || p.status === ApprovalStatus.Review; - return { - id: p.id, - name: p.name, - programme: p.programmeName || `Programme ${p.programmeId}`, - status: isRejected ? 'At Risk' : isPending ? 'Pending' : 'Active', - risk: isRejected ? 'RED' : isPending ? 'AMBER' : 'GREEN', - financialVariance: isRejected ? '-15%' : '0%', - varianceType: isRejected ? 'negative' : 'positive', - }; - }); - }, [projects]); - - return ( -
- {/* Page Title & Filter Bar */} -
-
-
-

- Executive Portfolio Dashboard -

- - Live STS Feed - -
-

- Real-time portfolio overview, disbursement tracking, risk heatmap, and projects requiring governance action. -

-
- - {/* Filters */} -
-
- - Filter: -
- - - - - - - - -
-
- - {/* 6 Headline Portfolio KPI Cards */} -
- {/* Card 1: Portfolio Value */} -
-
- Portfolio Value -
- -
-
-
-

{formatCompactZAR(portfolioValue)}

-

{formatZAR(portfolioValue)}

-
-
- - {/* Card 2: Active Awards */} -
-
- Active Awards -
- -
-
-
-

{activeAwards}

-

- Across {portfolios.length} portfolio{portfolios.length === 1 ? '' : 's'} -

-
-
- - {/* Card 3: Disbursed */} -
-
- Disbursed -
- -
-
-
-

{formatCompactZAR(disbursed)}

-

- {portfolioValue > 0 ? `${((disbursed / portfolioValue) * 100).toFixed(1)}% of commitments` : '0.0% of commitments'} -

-
-
- - {/* Card 4: On Track */} -
-
- On Track -
- -
-
-
-

{onTrackPercentage}%

-

Milestones verified

-
-
- - {/* Card 5: At Risk */} -
-
- At Risk -
- -
-
-
-

{atRiskCount}

-

Requires PM action

-
-
- - {/* Card 6: Beneficiaries Reached */} -
-
- Beneficiaries -
- -
-
-
-

- {beneficiariesReached >= 1000 ? `${(beneficiariesReached / 1000).toFixed(0)}k` : beneficiariesReached} -

-

Directly impacted

-
-
-
- - {/* Visual Models Section (Sector, Heatmap, Impact Trend) */} -
- {/* Panel 1: Funding by Sector */} -
-
-
-

Funding by Sector

- - API Calculated - -
- - {/* Circular Graphic Simulation */} -
-
-
- {sectorData.length} - - {sectorData.length === 1 ? 'Sector' : 'Sectors'} - -
-
-
- - {/* Sector Progress Bars */} -
- {sectorData.length === 0 ? ( -

No active project sectors assigned yet.

- ) : ( - sectorData.map((s) => ( -
-
- {s.name} ({s.count}) - {s.percentage}% -
-
-
-
-
- )) - )} -
-
- -
- Primary Focus: {sectorData[0]?.name || 'All Sectors'} - - View Portfolios - -
-
- - {/* Panel 2: Portfolio Risk Heatmap */} -
-
-
-

Portfolio Risk Heatmap

- - {riskHeatmap.flaggedCount} Flagged - -
- -

- Matrix distribution of project risks by Likelihood (1–5) and Impact (1–5). -

- - {/* 3x3 Heatmap Matrix with real counted risks */} -
- {/* Row 1 - High Impact */} -
- Moderate - {riskHeatmap.highImpLowLik} {riskHeatmap.highImpLowLik === 1 ? 'Risk' : 'Risks'} -
-
- High - {riskHeatmap.highImpMedLik} {riskHeatmap.highImpMedLik === 1 ? 'Risk' : 'Risks'} -
-
- Critical - {riskHeatmap.highImpHighLik} {riskHeatmap.highImpHighLik === 1 ? 'Risk' : 'Risks'} -
- - {/* Row 2 - Medium Impact */} -
- Low - {riskHeatmap.medImpLowLik} {riskHeatmap.medImpLowLik === 1 ? 'Risk' : 'Risks'} -
-
- Moderate - {riskHeatmap.medImpMedLik} {riskHeatmap.medImpMedLik === 1 ? 'Risk' : 'Risks'} -
-
- High - {riskHeatmap.medImpHighLik} {riskHeatmap.medImpHighLik === 1 ? 'Risk' : 'Risks'} -
- - {/* Row 3 - Low Impact */} -
- Trivial - {riskHeatmap.lowImpLowLik} {riskHeatmap.lowImpLowLik === 1 ? 'Risk' : 'Risks'} -
-
- Low - {riskHeatmap.lowImpMedLik} {riskHeatmap.lowImpMedLik === 1 ? 'Risk' : 'Risks'} -
-
- Moderate - {riskHeatmap.lowImpHighLik} {riskHeatmap.lowImpHighLik === 1 ? 'Risk' : 'Risks'} -
-
-
- -
- Total Registered Risks: {risks.length} - - Risk Register - -
-
- - {/* Panel 3: Funding-to-Impact Trend */} -
-
-
-

Disbursement Distribution

- - {disbursements.length} Tranche{disbursements.length === 1 ? '' : 's'} - -
- -

- Quarterly release distribution across active portfolios and milestone verifications. -

- - {/* Graphic Trend Visualization from Live Disbursements */} -
- {quarterlyTrend.map((q) => ( -
- {q.quarter} -
-
-
- ))} -
- -
-
- - Commitment Allocation -
-
- - Actual Disbursed -
-
-
- -
- Total Disbursed: {formatCompactZAR(disbursed)} - - Financials - -
-
-
- - {/* Projects Requiring Attention Table */} -
-
-
-

Projects Requiring Attention

-

- Prioritized by risk severity, delivery delay, or financial variance threshold breach. -

-
- - Open Project Directory → - -
- -
- - - - - - - - - - - - - {attentionProjects.length === 0 ? ( - - - - ) : ( - attentionProjects.map((p) => ( - - - - - - - - - )) - )} - -
ProjectProgrammeStatusRiskFinancial VarianceAction
- No active projects currently flagged for executive attention. All projects are operating within target thresholds. -
- {p.name} - ID: {p.id} - {p.programme} - - {p.status} - - - - {p.risk} - - - - {p.financialVariance} - - - - Review - - -
-
-
+ return ( +
+ {/* Page Title & Filter Bar */} +
+
+
+

+ Executive Portfolio Dashboard +

+ + Live Portfolio Feed + +
+

+ Real-time portfolio overview, disbursement tracking, risk heatmap, and projects requiring governance action. +

- ); + + {/* Filters */} +
+
+ + Filter: +
+ + + + + + + + +
+
+ + {/* 6 Headline Portfolio KPI Cards */} +
+ {/* Card 1: Portfolio Value */} +
+
+ Portfolio Value +
+ +
+
+
+

{formatCompactZAR(portfolioValue)}

+

{formatZAR(portfolioValue)}

+
+
+ + {/* Card 2: Active Awards */} +
+
+ Active Awards +
+ +
+
+
+

{activeAwards}

+

+ Across {portfolios.length} portfolio{portfolios.length === 1 ? '' : 's'} +

+
+
+ + {/* Card 3: Disbursed */} +
+
+ Disbursed +
+ +
+
+
+

{formatCompactZAR(disbursed)}

+

+ {portfolioValue > 0 ? `${((disbursed / portfolioValue) * 100).toFixed(1)}% of commitments` : '0.0% of commitments'} +

+
+
+ + {/* Card 4: On Track */} +
+
+ On Track +
+ +
+
+
+

{onTrackPercentage}%

+

Milestones verified

+
+
+ + {/* Card 5: At Risk */} +
+
+ At Risk +
+ +
+
+
+

{atRiskCount}

+

Requires PM action

+
+
+ + {/* Card 6: Beneficiaries Reached */} +
+
+ Beneficiaries +
+ +
+
+
+

+ {beneficiariesReached >= 1000 ? `${(beneficiariesReached / 1000).toFixed(0)}k` : beneficiariesReached} +

+

Directly impacted

+
+
+
+ + {/* Visual Models Section (Sector, Heatmap, Impact Trend) */} +
+ {/* Panel 1: Funding by Sector */} +
+
+
+

Funding by Sector

+ + API Calculated + +
+ + {/* Circular Graphic Simulation */} +
+
+
+ {sectorData.length} + + {sectorData.length === 1 ? 'Sector' : 'Sectors'} + +
+
+
+ + {/* Sector Progress Bars */} +
+ {sectorData.length === 0 ? ( +

No active project sectors assigned yet.

+ ) : ( + sectorData.map((s) => ( +
+
+ {s.name} ({s.count}) + {s.percentage}% +
+
+
+
+
+ )) + )} +
+
+ +
+ Primary Focus: {sectorData[0]?.name || 'All Sectors'} + + View Portfolios + +
+
+ + {/* Panel 2: Portfolio Risk Heatmap */} +
+
+
+

Portfolio Risk Heatmap

+ + {riskHeatmap.flaggedCount} Flagged + +
+ +

+ Matrix distribution of project risks by Likelihood (1–5) and Impact (1–5). +

+ + {/* 3x3 Heatmap Matrix with real counted risks */} +
+ {/* Row 1 - High Impact */} +
+ Moderate + {riskHeatmap.highImpLowLik} {riskHeatmap.highImpLowLik === 1 ? 'Risk' : 'Risks'} +
+
+ High + {riskHeatmap.highImpMedLik} {riskHeatmap.highImpMedLik === 1 ? 'Risk' : 'Risks'} +
+
+ Critical + {riskHeatmap.highImpHighLik} {riskHeatmap.highImpHighLik === 1 ? 'Risk' : 'Risks'} +
+ + {/* Row 2 - Medium Impact */} +
+ Low + {riskHeatmap.medImpLowLik} {riskHeatmap.medImpLowLik === 1 ? 'Risk' : 'Risks'} +
+
+ Moderate + {riskHeatmap.medImpMedLik} {riskHeatmap.medImpMedLik === 1 ? 'Risk' : 'Risks'} +
+
+ High + {riskHeatmap.medImpHighLik} {riskHeatmap.medImpHighLik === 1 ? 'Risk' : 'Risks'} +
+ + {/* Row 3 - Low Impact */} +
+ Trivial + {riskHeatmap.lowImpLowLik} {riskHeatmap.lowImpLowLik === 1 ? 'Risk' : 'Risks'} +
+
+ Low + {riskHeatmap.lowImpMedLik} {riskHeatmap.lowImpMedLik === 1 ? 'Risk' : 'Risks'} +
+
+ Moderate + {riskHeatmap.lowImpHighLik} {riskHeatmap.lowImpHighLik === 1 ? 'Risk' : 'Risks'} +
+
+
+ +
+ Total Registered Risks: {risks.length} + + Risk Register + +
+
+ + {/* Panel 3: Funding-to-Impact Trend */} +
+
+
+

Disbursement Distribution

+ + {disbursements.length} Tranche{disbursements.length === 1 ? '' : 's'} + +
+ +

+ Quarterly release distribution across active portfolios and milestone verifications. +

+ + {/* Graphic Trend Visualization from Live Disbursements */} +
+ {quarterlyTrend.map((q) => ( +
+ {q.quarter} +
+
+
+ ))} +
+ +
+
+ + Commitment Allocation +
+
+ + Actual Disbursed +
+
+
+ +
+ Total Disbursed: {formatCompactZAR(disbursed)} + + Financials + +
+
+
+ + {/* Projects Requiring Attention Table */} +
+
+
+

Projects Requiring Attention

+

+ Prioritized by risk severity, delivery delay, or financial variance threshold breach. +

+
+ + Open Project Directory → + +
+ +
+ + + + + + + + + + + + + {attentionProjects.length === 0 ? ( + + + + ) : ( + attentionProjects.map((p) => ( + + + + + + + + + )) + )} + +
ProjectProgrammeStatusRiskFinancial VarianceAction
+ No active projects currently flagged for executive attention. All projects are operating within target thresholds. +
+ {p.name} + ID: {p.id} + {p.programme} + + {p.status} + + + + {p.risk} + + + + {p.financialVariance} + + + + Review + + +
+
+
+
+ ); }; diff --git a/PostFundManagement.ConsoleUI/src/pages/GovernancePage.tsx b/PostFundManagement.ConsoleUI/src/pages/GovernancePage.tsx index 7f4ad33..4de67c8 100644 --- a/PostFundManagement.ConsoleUI/src/pages/GovernancePage.tsx +++ b/PostFundManagement.ConsoleUI/src/pages/GovernancePage.tsx @@ -4,73 +4,80 @@ import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { - Building2, - Plus, - FolderKanban, - Edit2, - Mail, - Shield, - Layers, - ChevronRight, - Search, + Building2, + Plus, + FolderKanban, + Edit2, + Mail, + Shield, + Layers, + ChevronRight, + Search, + Coins, + Eye, } from 'lucide-react'; import { - getOrganisations, - createOrganisation, - updateOrganisation, - getAllPortfolios, - createPortfolio, - updatePortfolio, - getAllProgrammes, - createProgramme, - updateProgramme, + getOrganisations, + createOrganisation, + updateOrganisation, + getAllPortfolios, + getPortfolio, + createPortfolio, + updatePortfolio, + getAllProgrammes, + getProgramme, + createProgramme, + updateProgramme, + getInstruments, + getPortfolioProgrammes, } from '../services/api'; import { Modal } from '../components/ui/Modal'; import { useToast } from '../components/ui/Toast'; import { useAuth } from '../auth/AuthProvider'; import { - Organisation, - Portfolio, - Programme, - OrganisationType, - ActivityStatus, - ApprovalStatus, - CreateOrganisationRequest, - CreatePortfolioRequest, - CreateProgrammeRequest, + Organisation, + Portfolio, + Programme, + Instrument, + OrganisationType, + ActivityStatus, + ApprovalStatus, + CreateOrganisationRequest, + CreatePortfolioRequest, + CreateProgrammeRequest, } from '../types'; import { - getOrganisationTypeLabel, - getActivityStatusBadge, - getApprovalStatusBadge, - formatDate, - getUserEmail, - ORGANISATION_TYPE_OPTIONS, - ACTIVITY_STATUS_OPTIONS, - APPROVAL_STATUS_OPTIONS, + getOrganisationTypeLabel, + getActivityStatusBadge, + getApprovalStatusBadge, + formatDate, + getUserEmail, + ORGANISATION_TYPE_OPTIONS, + ACTIVITY_STATUS_OPTIONS, + APPROVAL_STATUS_OPTIONS, } from '../lib/formatters'; // Validation Schemas matching API constraints const organisationSchema = z.object({ - name: z.string().min(3, 'Name must be at least 3 characters'), - registrationNo: z.string().min(4, 'Registration number is mandatory'), - email: z.string().email('Enter a valid email address'), - type: z.coerce.number().min(1).max(27), - status: z.coerce.number().optional(), + name: z.string().min(3, 'Name must be at least 3 characters'), + registrationNo: z.string().min(4, 'Registration number is mandatory'), + email: z.string().email('Enter a valid email address'), + type: z.coerce.number().min(1).max(27), + status: z.coerce.number().optional(), }); const portfolioSchema = z.object({ - name: z.string().min(3, 'Portfolio name is required'), - description: z.string().min(5, 'Description is required'), - organisationId: z.coerce.number().min(1, 'Select a parent organisation'), - ownerId: z.string().min(1, 'Owner ID is required'), + name: z.string().min(3, 'Portfolio name is required'), + description: z.string().min(5, 'Description is required'), + organisationId: z.coerce.number().min(1, 'Select a parent organisation'), + ownerId: z.string().min(1, 'Owner ID is required'), }); const programmeSchema = z.object({ - name: z.string().min(3, 'Programme name is required'), - portfolioId: z.coerce.number().min(1, 'Select a parent portfolio'), - status: z.coerce.number().optional(), - ownerId: z.string().min(1, 'Owner ID is required'), + name: z.string().min(3, 'Programme name is required'), + portfolioId: z.coerce.number().min(1, 'Select a parent portfolio'), + status: z.coerce.number().optional(), + ownerId: z.string().min(1, 'Owner ID is required'), }); type OrganisationFormValues = z.infer; @@ -78,783 +85,953 @@ type PortfolioFormValues = z.infer; type ProgrammeFormValues = z.infer; export const GovernancePage: React.FC = () => { - const queryClient = useQueryClient(); - const { sub, user } = useAuth(); - const currentUserId = sub || user?.id || ''; - const { success, error: toastError } = useToast(); - const [activeTab, setActiveTab] = useState<'organisations' | 'portfolios' | 'programmes'>('organisations'); - const [searchTerm, setSearchTerm] = useState(''); + const queryClient = useQueryClient(); + const { sub, user } = useAuth(); + const currentUserId = sub || user?.id || ''; + const { success, error: toastError } = useToast(); + const [activeTab, setActiveTab] = useState<'organisations' | 'portfolios' | 'programmes'>('organisations'); + const [searchTerm, setSearchTerm] = useState(''); - // Modals & Editing State - const [isOrgModalOpen, setIsOrgModalOpen] = useState(false); - const [editingOrg, setEditingOrg] = useState(null); + // Modals & Editing State + const [isOrgModalOpen, setIsOrgModalOpen] = useState(false); + const [editingOrg, setEditingOrg] = useState(null); - const [isPortfolioModalOpen, setIsPortfolioModalOpen] = useState(false); - const [editingPortfolio, setEditingPortfolio] = useState(null); + const [isPortfolioModalOpen, setIsPortfolioModalOpen] = useState(false); + const [editingPortfolio, setEditingPortfolio] = useState(null); - const [isProgrammeModalOpen, setIsProgrammeModalOpen] = useState(false); - const [editingProgramme, setEditingProgramme] = useState(null); + const [isProgrammeModalOpen, setIsProgrammeModalOpen] = useState(false); + const [editingProgramme, setEditingProgramme] = useState(null); - // Queries - const { data: organisations = [], isLoading: loadingOrgs } = useQuery({ - queryKey: ['organisations'], - queryFn: () => getOrganisations(), - }); + // Inspection states + const [selectedProgrammeForInstruments, setSelectedProgrammeForInstruments] = useState(null); + const [isInstrumentsModalOpen, setIsInstrumentsModalOpen] = useState(false); - const { data: portfolios = [], isLoading: loadingPortfolios } = useQuery({ - queryKey: ['portfolios'], - queryFn: () => getAllPortfolios(), - }); + const [selectedPortfolioForProgrammes, setSelectedPortfolioForProgrammes] = useState(null); + const [isPortfolioProgrammesModalOpen, setIsPortfolioProgrammesModalOpen] = useState(false); - const { data: programmes = [], isLoading: loadingProgrammes } = useQuery({ - queryKey: ['programmes'], - queryFn: () => getAllProgrammes(), - }); + // Queries + const { data: organisations = [], isLoading: loadingOrgs } = useQuery({ + queryKey: ['organisations'], + queryFn: () => getOrganisations(), + }); - // Forms - const orgForm = useForm({ - resolver: zodResolver(organisationSchema) as any, - defaultValues: { - name: '', - registrationNo: '', - email: '', - type: OrganisationType.Enterprise, - status: ActivityStatus.Active, - }, - }); + const { data: portfolios = [], isLoading: loadingPortfolios } = useQuery({ + queryKey: ['portfolios'], + queryFn: () => getAllPortfolios(), + }); - const portfolioForm = useForm({ - resolver: zodResolver(portfolioSchema) as any, - defaultValues: { - name: '', - description: '', - organisationId: organisations[0]?.id ? Number(organisations[0].id) : 101, - ownerId: currentUserId, - }, - }); + const { data: programmes = [], isLoading: loadingProgrammes } = useQuery({ + queryKey: ['programmes'], + queryFn: () => getAllProgrammes(), + }); - const programmeForm = useForm({ - resolver: zodResolver(programmeSchema) as any, - defaultValues: { - name: '', - portfolioId: portfolios[0]?.id ? Number(portfolios[0].id) : 201, - status: ApprovalStatus.Approved, - ownerId: currentUserId, - }, - }); + const { data: programmeInstruments = [], isLoading: loadingInstruments } = useQuery({ + queryKey: ['instruments', selectedProgrammeForInstruments?.id], + queryFn: () => (selectedProgrammeForInstruments ? getInstruments(selectedProgrammeForInstruments.id) : Promise.resolve([])), + enabled: !!selectedProgrammeForInstruments && isInstrumentsModalOpen, + }); - // Mutations - const orgMutation = useMutation({ - mutationFn: (data: OrganisationFormValues) => { - if (editingOrg) { - return updateOrganisation({ - organisationId: editingOrg.id, - name: data.name, - registrationNo: data.registrationNo, - email: data.email, - type: Number(data.type), - status: data.status !== undefined ? Number(data.status) : undefined, - }); - } - return createOrganisation(data as CreateOrganisationRequest); - }, - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['organisations'] }); - success(editingOrg ? 'Organisation updated' : 'Organisation registered successfully'); - setIsOrgModalOpen(false); - setEditingOrg(null); - orgForm.reset(); - }, - onError: (err: unknown) => { - toastError('Failed to save organisation', String(err)); - }, - }); + const { data: portfolioProgrammesList = [], isLoading: loadingPortfolioProgrammes } = useQuery({ + queryKey: ['portfolioProgrammes', selectedPortfolioForProgrammes?.id], + queryFn: () => (selectedPortfolioForProgrammes ? getPortfolioProgrammes(selectedPortfolioForProgrammes.id) : Promise.resolve([])), + enabled: !!selectedPortfolioForProgrammes && isPortfolioProgrammesModalOpen, + }); - const portfolioMutation = useMutation({ - mutationFn: (data: PortfolioFormValues) => { - if (editingPortfolio) { - return updatePortfolio({ - portfolioId: editingPortfolio.id, - name: data.name, - description: data.description, - organisationId: Number(data.organisationId), - ownerId: data.ownerId, - }); - } - return createPortfolio(data as CreatePortfolioRequest); - }, - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['portfolios'] }); - success(editingPortfolio ? 'Portfolio updated successfully' : 'Portfolio created successfully'); - setIsPortfolioModalOpen(false); - setEditingPortfolio(null); - portfolioForm.reset(); - }, - onError: (err: unknown) => { - toastError('Failed to save portfolio', String(err)); - }, - }); + // Forms + const orgForm = useForm({ + resolver: zodResolver(organisationSchema) as any, + defaultValues: { + name: '', + registrationNo: '', + email: '', + type: OrganisationType.Enterprise, + status: ActivityStatus.Active, + }, + }); - const programmeMutation = useMutation({ - mutationFn: (data: ProgrammeFormValues) => { - if (editingProgramme) { - return updateProgramme({ - programmeId: editingProgramme.id, - name: data.name, - portfolioId: Number(data.portfolioId), - status: data.status !== undefined ? Number(data.status) : undefined, - ownerId: data.ownerId, - }); - } - return createProgramme(data as CreateProgrammeRequest); - }, - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['programmes'] }); - success(editingProgramme ? 'Programme updated successfully' : 'Programme created successfully'); - setIsProgrammeModalOpen(false); - setEditingProgramme(null); - programmeForm.reset(); - }, - onError: (err: unknown) => { - toastError('Failed to save programme', String(err)); - }, - }); + const portfolioForm = useForm({ + resolver: zodResolver(portfolioSchema) as any, + defaultValues: { + name: '', + description: '', + organisationId: organisations[0]?.id ? Number(organisations[0].id) : 101, + ownerId: currentUserId, + }, + }); - const openCreateOrg = () => { - setEditingOrg(null); - orgForm.reset({ - name: '', - registrationNo: '', - email: '', - type: OrganisationType.Enterprise, - status: ActivityStatus.Active, + const programmeForm = useForm({ + resolver: zodResolver(programmeSchema) as any, + defaultValues: { + name: '', + portfolioId: portfolios[0]?.id ? Number(portfolios[0].id) : 201, + status: ApprovalStatus.Approved, + ownerId: currentUserId, + }, + }); + + // Mutations + const orgMutation = useMutation({ + mutationFn: (data: OrganisationFormValues) => { + if (editingOrg) { + return updateOrganisation({ + organisationId: editingOrg.id, + name: data.name, + registrationNo: data.registrationNo, + email: data.email, + type: Number(data.type), + status: data.status !== undefined ? Number(data.status) : undefined, }); - setIsOrgModalOpen(true); - }; + } + return createOrganisation(data as CreateOrganisationRequest); + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['organisations'] }); + success(editingOrg ? 'Organisation updated' : 'Organisation registered successfully'); + setIsOrgModalOpen(false); + setEditingOrg(null); + orgForm.reset(); + }, + onError: (err: unknown) => { + toastError('Failed to save organisation', String(err)); + }, + }); - const openEditOrg = (org: Organisation) => { - setEditingOrg(org); - orgForm.reset({ - name: org.name || '', - registrationNo: org.registrationNo || '', - email: org.email || '', - type: org.type || OrganisationType.Enterprise, - status: org.status ?? ActivityStatus.Active, + const portfolioMutation = useMutation({ + mutationFn: (data: PortfolioFormValues) => { + if (editingPortfolio) { + return updatePortfolio({ + portfolioId: editingPortfolio.id, + name: data.name, + description: data.description, + organisationId: Number(data.organisationId), + ownerId: data.ownerId, }); - setIsOrgModalOpen(true); - }; + } + return createPortfolio(data as CreatePortfolioRequest); + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['portfolios'] }); + success(editingPortfolio ? 'Portfolio updated successfully' : 'Portfolio created successfully'); + setIsPortfolioModalOpen(false); + setEditingPortfolio(null); + portfolioForm.reset(); + }, + onError: (err: unknown) => { + toastError('Failed to save portfolio', String(err)); + }, + }); - const openCreatePortfolio = () => { - setEditingPortfolio(null); - portfolioForm.reset({ - name: '', - description: '', - organisationId: organisations[0]?.id ? Number(organisations[0].id) : 101, - ownerId: currentUserId, + const programmeMutation = useMutation({ + mutationFn: (data: ProgrammeFormValues) => { + if (editingProgramme) { + return updateProgramme({ + programmeId: editingProgramme.id, + name: data.name, + portfolioId: Number(data.portfolioId), + status: data.status !== undefined ? Number(data.status) : undefined, + ownerId: data.ownerId, }); - setIsPortfolioModalOpen(true); - }; + } + return createProgramme(data as CreateProgrammeRequest); + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['programmes'] }); + success(editingProgramme ? 'Programme updated successfully' : 'Programme created successfully'); + setIsProgrammeModalOpen(false); + setEditingProgramme(null); + programmeForm.reset(); + }, + onError: (err: unknown) => { + toastError('Failed to save programme', String(err)); + }, + }); - const openEditPortfolio = (p: Portfolio) => { - setEditingPortfolio(p); - portfolioForm.reset({ - name: p.name || '', - description: p.description || '', - organisationId: Number(p.organisationId) || 101, - ownerId: p.ownedBy || currentUserId, - }); - setIsPortfolioModalOpen(true); - }; + const openCreateOrg = () => { + setEditingOrg(null); + orgForm.reset({ + name: '', + registrationNo: '', + email: '', + type: OrganisationType.Enterprise, + status: ActivityStatus.Active, + }); + setIsOrgModalOpen(true); + }; - const openCreateProgramme = () => { - setEditingProgramme(null); - programmeForm.reset({ - name: '', - portfolioId: portfolios[0]?.id ? Number(portfolios[0].id) : 201, - status: ApprovalStatus.Approved, - ownerId: currentUserId, - }); - setIsProgrammeModalOpen(true); - }; + const openEditOrg = (org: Organisation) => { + setEditingOrg(org); + orgForm.reset({ + name: org.name || '', + registrationNo: org.registrationNo || '', + email: org.email || '', + type: org.type || OrganisationType.Enterprise, + status: org.status ?? ActivityStatus.Active, + }); + setIsOrgModalOpen(true); + }; - const openEditProgramme = (pr: Programme) => { - setEditingProgramme(pr); - programmeForm.reset({ - name: pr.name || '', - portfolioId: Number(pr.portfolioId) || 201, - status: pr.status ?? ApprovalStatus.Approved, - ownerId: pr.ownedBy || currentUserId, - }); - setIsProgrammeModalOpen(true); - }; + const openCreatePortfolio = () => { + setEditingPortfolio(null); + portfolioForm.reset({ + name: '', + description: '', + organisationId: organisations[0]?.id ? Number(organisations[0].id) : 101, + ownerId: currentUserId, + }); + setIsPortfolioModalOpen(true); + }; - // Filtered lists - const filteredOrgs = organisations.filter( - (o) => - o.name?.toLowerCase().includes(searchTerm.toLowerCase()) || - o.registrationNo?.toLowerCase().includes(searchTerm.toLowerCase()) || - o.email?.toLowerCase().includes(searchTerm.toLowerCase()) - ); + const openEditPortfolio = (p: Portfolio) => { + setEditingPortfolio(p); + portfolioForm.reset({ + name: p.name || '', + description: p.description || '', + organisationId: Number(p.organisationId) || 101, + ownerId: p.ownedBy || currentUserId, + }); + setIsPortfolioModalOpen(true); + }; - return ( -
- {/* Header */} -
-
-
-

- Governance & Structure -

- - Directory - -
-

- Maintain Master Organisation Registry, Funder Portfolios, and Strategic Programmes hierarchy. -

-
+ const openCreateProgramme = () => { + setEditingProgramme(null); + programmeForm.reset({ + name: '', + portfolioId: portfolios[0]?.id ? Number(portfolios[0].id) : 201, + status: ApprovalStatus.Approved, + ownerId: currentUserId, + }); + setIsProgrammeModalOpen(true); + }; - {/* Tab Switcher & CTA */} -
- {activeTab === 'organisations' && ( - - )} - {activeTab === 'portfolios' && ( - - )} - {activeTab === 'programmes' && ( - - )} -
-
+ const openEditProgramme = (pr: Programme) => { + setEditingProgramme(pr); + programmeForm.reset({ + name: pr.name || '', + portfolioId: Number(pr.portfolioId) || 201, + status: pr.status ?? ApprovalStatus.Approved, + ownerId: pr.ownedBy || currentUserId, + }); + setIsProgrammeModalOpen(true); + }; - {/* Tabs */} -
- - - -
+ // Filtered lists + const filteredOrgs = organisations.filter( + (o) => + o.name?.toLowerCase().includes(searchTerm.toLowerCase()) || + o.registrationNo?.toLowerCase().includes(searchTerm.toLowerCase()) || + o.email?.toLowerCase().includes(searchTerm.toLowerCase()) + ); - {/* Search Bar */} - {activeTab === 'organisations' && ( -
- - setSearchTerm(e.target.value)} - className="w-full pl-9 pr-4 py-2.5 text-xs bg-[#090d16] border border-slate-700/80 rounded-xl focus:outline-none focus:ring-1 focus:ring-blue-500 text-slate-200 placeholder:text-slate-500 transition shadow-xs" - /> -
- )} - - {/* Tab 1: Organisations Table */} - {activeTab === 'organisations' && ( -
-
- - - - - - - - - - - - - {loadingOrgs ? ( - - - - ) : filteredOrgs.length === 0 ? ( - - - - ) : ( - filteredOrgs.map((org) => { - const statusBadge = getActivityStatusBadge(org.status); - return ( - - - - - - - - - ); - }) - )} - -
Organisation NameRegistration NoEntity TypeContact EmailStatusActions
- Loading registered organisations... -
- No organisations found matching query. -
- {org.name} - ID: {org.id} - {org.registrationNo || '—'} - - {getOrganisationTypeLabel(org.type)} - - - - - {org.email} - - - - {statusBadge.label} - - - -
-
-
- )} - - {/* Tab 2: Portfolios List */} - {activeTab === 'portfolios' && ( -
- {loadingPortfolios ? ( -

Loading portfolios...

- ) : ( - portfolios.map((p) => { - const org = organisations.find((o) => String(o.id) === String(p.organisationId)); - const progCount = programmes.filter((pr) => String(pr.portfolioId) === String(p.id)).length; - return ( -
-
-
- - Portfolio #{p.id} - - {progCount} Programmes -
-

{p.name}

-

{p.description}

-
- -
-
- {org ? org.name : `Org #${p.organisationId}`} - {formatDate(p.createdAt)} -
-
- - Owner: {getUserEmail(p.ownedBy)} - - -
-
-
- ); - }) - )} -
- )} - - {/* Tab 3: Programmes Hierarchy */} - {activeTab === 'programmes' && ( -
-
- - - - - - - - - - - - - {loadingProgrammes ? ( - - - - ) : ( - programmes.map((pr) => { - const port = portfolios.find((p) => String(p.id) === String(pr.portfolioId)); - const statusBadge = getApprovalStatusBadge(pr.status); - return ( - - - - - - - - - ); - }) - )} - -
Programme NameParent PortfolioGovernance StatusCreation DateOwner EmailActions
- Loading programmes... -
- {pr.name} - ID: {pr.id} - - {port ? port.name : `Portfolio #${pr.portfolioId}`} - - - {statusBadge.label} - - {formatDate(pr.createdAt)} - {getUserEmail(pr.ownedBy)} - - -
-
-
- )} - - {/* Modal: Register / Edit Organisation */} - setIsOrgModalOpen(false)} - title={editingOrg ? 'Edit Organisation Profile' : 'Register New Organisation'} - subtitle="Mandatory master data profile for Recipient or Funder entities (POPIA compliant)" - > - orgMutation.mutate(data))} className="space-y-4"> -
- - - {orgForm.formState.errors.name && ( -

{orgForm.formState.errors.name.message}

- )} -
- -
-
- - - {orgForm.formState.errors.registrationNo && ( -

{orgForm.formState.errors.registrationNo.message}

- )} -
- -
- - -
-
- -
-
- - - {orgForm.formState.errors.email && ( -

{orgForm.formState.errors.email.message}

- )} -
- - {editingOrg && ( -
- - -
- )} -
- -
- - -
- -
- - {/* Modal: Create / Edit Portfolio */} - { - setIsPortfolioModalOpen(false); - setEditingPortfolio(null); - }} - title={editingPortfolio ? 'Edit Funder Portfolio' : 'Create Funder Portfolio'} - subtitle="Strategic allocation bucket grouping multiple programmatic initiatives" - > -
portfolioMutation.mutate(data))} className="space-y-4"> -
- - - {portfolioForm.formState.errors.name && ( -

{portfolioForm.formState.errors.name.message}

- )} -
- -
- - -
- -
- - -
- -
- -