A web app for writing and sharing 301+ character Bluesky posts.

Start of project- first commit

Minito 25f6c49d 1bb1a0da

+6462
+24
.gitignore
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + pnpm-debug.log* 8 + lerna-debug.log* 9 + 10 + node_modules 11 + dist 12 + dist-ssr 13 + *.local 14 + 15 + # Editor directories and files 16 + .vscode/* 17 + !.vscode/extensions.json 18 + .idea 19 + .DS_Store 20 + *.suo 21 + *.ntvs* 22 + *.njsproj 23 + *.sln 24 + *.sw?
+8
.hintrc
··· 1 + { 2 + "extends": [ 3 + "development" 4 + ], 5 + "hints": { 6 + "disown-opener": "off" 7 + } 8 + }
+10
README.md
··· 1 1 # SkeetLonger 2 + 3 + Client-side web app that helps create longer Bluesky posts, while maintaining the ATPro values of credible exit and allowing users to own their own data. 4 + 5 + ## Notes 6 + 7 + This is mostly a project built to further my own understanding of the ATProtocol. Expect some jank. 8 + 9 + ## Acknowledgements 10 + 11 + [whey.party](https://tangled.org/@whey.party) - for their UnifiedAuthProvider so I wouldn't have to think much on OAuth\
+23
eslint.config.js
··· 1 + import js from '@eslint/js' 2 + import globals from 'globals' 3 + import reactHooks from 'eslint-plugin-react-hooks' 4 + import reactRefresh from 'eslint-plugin-react-refresh' 5 + import tseslint from 'typescript-eslint' 6 + import { defineConfig, globalIgnores } from 'eslint/config' 7 + 8 + export default defineConfig([ 9 + globalIgnores(['dist']), 10 + { 11 + files: ['**/*.{ts,tsx}'], 12 + extends: [ 13 + js.configs.recommended, 14 + tseslint.configs.recommended, 15 + reactHooks.configs['recommended-latest'], 16 + reactRefresh.configs.vite, 17 + ], 18 + languageOptions: { 19 + ecmaVersion: 2020, 20 + globals: globals.browser, 21 + }, 22 + }, 23 + ])
+13
index.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8" /> 5 + <link rel="icon" type="image/svg+xml" href="/vite.svg" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + <title>skeetlonger</title> 8 + </head> 9 + <body> 10 + <div id="root"></div> 11 + <script type="module" src="/src/main.tsx"></script> 12 + </body> 13 + </html>
+50
oauthdev.mts
··· 1 + import fs from 'fs'; 2 + import path from 'path'; 3 + 4 + export const generateClientMetadata = (appOrigin: string) => { 5 + const callbackPath = '/callback'; 6 + return { 7 + "client_id": `${appOrigin}/client-metadata.json`, 8 + "client_name": "SkeetLonger", 9 + "client_uri": appOrigin, 10 + "logo_uri": `${appOrigin}/logo192.png`, 11 + "tos_uri": `${appOrigin}/terms-of-service`, 12 + "policy_uri": `${appOrigin}/privacy-policy`, 13 + "redirect_uris": [`${appOrigin}${callbackPath}`] as [string, ...string[]], 14 + "scope": "atproto transition:generic", 15 + "grant_types": ["authorization_code", "refresh_token"] as ["authorization_code", "refresh_token"], 16 + "response_types": ["code"] as ["code"], 17 + "token_endpoint_auth_method": "none" as "none", 18 + "application_type": "web" as "web", 19 + "dpop_bound_access_tokens": true 20 + }; 21 + } 22 + 23 + export function generateMetadataPlugin({prod, dev}:{prod: string, dev: string}) { 24 + return { 25 + name: 'vite-plugin-generate-metadata', 26 + configResolved(config: any) { 27 + let appOrigin; 28 + if (config.mode === 'production') { 29 + appOrigin = prod 30 + if (!appOrigin || !appOrigin.startsWith('https://')) { 31 + throw new Error('VITE_APP_ORIGIN environment variable must be set to a valid HTTPS URL for production build.'); 32 + } 33 + } else { 34 + appOrigin = dev; 35 + } 36 + 37 + const metadata = generateClientMetadata(appOrigin); 38 + const outputPath = path.resolve(process.cwd(), 'public', 'client-metadata.json'); 39 + 40 + // Ensure public directory exists 41 + const publicDir = path.resolve(process.cwd(), 'public'); 42 + if (!fs.existsSync(publicDir)) { 43 + fs.mkdirSync(publicDir, { recursive: true }); 44 + } 45 + 46 + fs.writeFileSync(outputPath, JSON.stringify(metadata, null, 2)); 47 + console.log(`✅ Generated client-metadata.json for ${appOrigin}`); 48 + }, 49 + }; 50 + }
+5437
package-lock.json
··· 1 + { 2 + "name": "skeetlonger", 3 + "version": "0.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "skeetlonger", 9 + "version": "0.0.0", 10 + "dependencies": { 11 + "@atproto/api": "^0.16.11", 12 + "@atproto/oauth-client-browser": "^0.3.33", 13 + "@tailwindcss/vite": "^4.1.14", 14 + "react": "^19.1.1", 15 + "react-dom": "^19.1.1", 16 + "tailwindcss": "^4.1.14" 17 + }, 18 + "devDependencies": { 19 + "@eslint/js": "^9.36.0", 20 + "@tanstack/react-router": "^1.133.15", 21 + "@tanstack/router-plugin": "^1.133.15", 22 + "@types/node": "^24.6.0", 23 + "@types/react": "^19.1.16", 24 + "@types/react-dom": "^19.1.9", 25 + "@vitejs/plugin-react": "^5.0.4", 26 + "babel-plugin-react-compiler": "^19.1.0-rc.3", 27 + "eslint": "^9.36.0", 28 + "eslint-plugin-react-hooks": "^5.2.0", 29 + "eslint-plugin-react-refresh": "^0.4.22", 30 + "globals": "^16.4.0", 31 + "typescript": "~5.9.3", 32 + "typescript-eslint": "^8.45.0", 33 + "unplugin-auto-import": "^20.2.0", 34 + "unplugin-icons": "^22.5.0", 35 + "vite": "^7.1.7" 36 + } 37 + }, 38 + "node_modules/@antfu/install-pkg": { 39 + "version": "1.1.0", 40 + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", 41 + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", 42 + "dev": true, 43 + "license": "MIT", 44 + "dependencies": { 45 + "package-manager-detector": "^1.3.0", 46 + "tinyexec": "^1.0.1" 47 + }, 48 + "funding": { 49 + "url": "https://github.com/sponsors/antfu" 50 + } 51 + }, 52 + "node_modules/@antfu/utils": { 53 + "version": "9.3.0", 54 + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.3.0.tgz", 55 + "integrity": "sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==", 56 + "dev": true, 57 + "license": "MIT", 58 + "funding": { 59 + "url": "https://github.com/sponsors/antfu" 60 + } 61 + }, 62 + "node_modules/@atproto-labs/did-resolver": { 63 + "version": "0.2.2", 64 + "resolved": "https://registry.npmjs.org/@atproto-labs/did-resolver/-/did-resolver-0.2.2.tgz", 65 + "integrity": "sha512-ca2B7xR43tVoQ8XxBvha58DXwIH8cIyKQl6lpOKGkPUrJuFoO4iCLlDiSDi2Ueh+yE1rMDPP/qveHdajgDX3WQ==", 66 + "license": "MIT", 67 + "dependencies": { 68 + "@atproto-labs/fetch": "0.2.3", 69 + "@atproto-labs/pipe": "0.1.1", 70 + "@atproto-labs/simple-store": "0.3.0", 71 + "@atproto-labs/simple-store-memory": "0.1.4", 72 + "@atproto/did": "0.2.1", 73 + "zod": "^3.23.8" 74 + } 75 + }, 76 + "node_modules/@atproto-labs/fetch": { 77 + "version": "0.2.3", 78 + "resolved": "https://registry.npmjs.org/@atproto-labs/fetch/-/fetch-0.2.3.tgz", 79 + "integrity": "sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw==", 80 + "license": "MIT", 81 + "dependencies": { 82 + "@atproto-labs/pipe": "0.1.1" 83 + } 84 + }, 85 + "node_modules/@atproto-labs/handle-resolver": { 86 + "version": "0.3.2", 87 + "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver/-/handle-resolver-0.3.2.tgz", 88 + "integrity": "sha512-KIerCzh3qb+zZoqWbIvTlvBY0XPq0r56kwViaJY/LTe/3oPO2JaqlYKS/F4dByWBhHK6YoUOJ0sWrh6PMJl40A==", 89 + "license": "MIT", 90 + "dependencies": { 91 + "@atproto-labs/simple-store": "0.3.0", 92 + "@atproto-labs/simple-store-memory": "0.1.4", 93 + "@atproto/did": "0.2.1", 94 + "zod": "^3.23.8" 95 + } 96 + }, 97 + "node_modules/@atproto-labs/identity-resolver": { 98 + "version": "0.3.2", 99 + "resolved": "https://registry.npmjs.org/@atproto-labs/identity-resolver/-/identity-resolver-0.3.2.tgz", 100 + "integrity": "sha512-MYxO9pe0WsFyi5HFdKAwqIqHfiF2kBPoVhAIuH/4PYHzGr799ED47xLhNMxR3ZUYrJm5+TQzWXypGZ0Btw1Ffw==", 101 + "license": "MIT", 102 + "dependencies": { 103 + "@atproto-labs/did-resolver": "0.2.2", 104 + "@atproto-labs/handle-resolver": "0.3.2" 105 + } 106 + }, 107 + "node_modules/@atproto-labs/pipe": { 108 + "version": "0.1.1", 109 + "resolved": "https://registry.npmjs.org/@atproto-labs/pipe/-/pipe-0.1.1.tgz", 110 + "integrity": "sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==", 111 + "license": "MIT" 112 + }, 113 + "node_modules/@atproto-labs/simple-store": { 114 + "version": "0.3.0", 115 + "resolved": "https://registry.npmjs.org/@atproto-labs/simple-store/-/simple-store-0.3.0.tgz", 116 + "integrity": "sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ==", 117 + "license": "MIT" 118 + }, 119 + "node_modules/@atproto-labs/simple-store-memory": { 120 + "version": "0.1.4", 121 + "resolved": "https://registry.npmjs.org/@atproto-labs/simple-store-memory/-/simple-store-memory-0.1.4.tgz", 122 + "integrity": "sha512-3mKY4dP8I7yKPFj9VKpYyCRzGJOi5CEpOLPlRhoJyLmgs3J4RzDrjn323Oakjz2Aj2JzRU/AIvWRAZVhpYNJHw==", 123 + "license": "MIT", 124 + "dependencies": { 125 + "@atproto-labs/simple-store": "0.3.0", 126 + "lru-cache": "^10.2.0" 127 + } 128 + }, 129 + "node_modules/@atproto-labs/simple-store-memory/node_modules/lru-cache": { 130 + "version": "10.4.3", 131 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 132 + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 133 + "license": "ISC" 134 + }, 135 + "node_modules/@atproto/api": { 136 + "version": "0.16.11", 137 + "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.16.11.tgz", 138 + "integrity": "sha512-1dhfQNHiclb102RW+Ea8Nft5olfqU0Ev/vlQaSX6mWNo1aP5zT+sPODJ8+BTUOYk3vcuvL7QMkqA/rLYy2PMyw==", 139 + "license": "MIT", 140 + "dependencies": { 141 + "@atproto/common-web": "^0.4.3", 142 + "@atproto/lexicon": "^0.5.1", 143 + "@atproto/syntax": "^0.4.1", 144 + "@atproto/xrpc": "^0.7.5", 145 + "await-lock": "^2.2.2", 146 + "multiformats": "^9.9.0", 147 + "tlds": "^1.234.0", 148 + "zod": "^3.23.8" 149 + } 150 + }, 151 + "node_modules/@atproto/common-web": { 152 + "version": "0.4.3", 153 + "resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.4.3.tgz", 154 + "integrity": "sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg==", 155 + "license": "MIT", 156 + "dependencies": { 157 + "graphemer": "^1.4.0", 158 + "multiformats": "^9.9.0", 159 + "uint8arrays": "3.0.0", 160 + "zod": "^3.23.8" 161 + } 162 + }, 163 + "node_modules/@atproto/did": { 164 + "version": "0.2.1", 165 + "resolved": "https://registry.npmjs.org/@atproto/did/-/did-0.2.1.tgz", 166 + "integrity": "sha512-1i5BTU2GnBaaeYWhxUOnuEKFVq9euT5+dQPFabHpa927BlJ54PmLGyBBaOI7/NbLmN5HWwBa18SBkMpg3jGZRA==", 167 + "license": "MIT", 168 + "dependencies": { 169 + "zod": "^3.23.8" 170 + } 171 + }, 172 + "node_modules/@atproto/jwk": { 173 + "version": "0.6.0", 174 + "resolved": "https://registry.npmjs.org/@atproto/jwk/-/jwk-0.6.0.tgz", 175 + "integrity": "sha512-bDoJPvt7TrQVi/rBfBrSSpGykhtIriKxeYCYQTiPRKFfyRhbgpElF0wPXADjIswnbzZdOwbY63az4E/CFVT3Tw==", 176 + "license": "MIT", 177 + "dependencies": { 178 + "multiformats": "^9.9.0", 179 + "zod": "^3.23.8" 180 + } 181 + }, 182 + "node_modules/@atproto/jwk-jose": { 183 + "version": "0.1.11", 184 + "resolved": "https://registry.npmjs.org/@atproto/jwk-jose/-/jwk-jose-0.1.11.tgz", 185 + "integrity": "sha512-i4Fnr2sTBYmMmHXl7NJh8GrCH+tDQEVWrcDMDnV5DjJfkgT17wIqvojIw9SNbSL4Uf0OtfEv6AgG0A+mgh8b5Q==", 186 + "license": "MIT", 187 + "dependencies": { 188 + "@atproto/jwk": "0.6.0", 189 + "jose": "^5.2.0" 190 + } 191 + }, 192 + "node_modules/@atproto/jwk-webcrypto": { 193 + "version": "0.2.0", 194 + "resolved": "https://registry.npmjs.org/@atproto/jwk-webcrypto/-/jwk-webcrypto-0.2.0.tgz", 195 + "integrity": "sha512-UmgRrrEAkWvxwhlwe30UmDOdTEFidlIzBC7C3cCbeJMcBN1x8B3KH+crXrsTqfWQBG58mXgt8wgSK3Kxs2LhFg==", 196 + "license": "MIT", 197 + "dependencies": { 198 + "@atproto/jwk": "0.6.0", 199 + "@atproto/jwk-jose": "0.1.11", 200 + "zod": "^3.23.8" 201 + } 202 + }, 203 + "node_modules/@atproto/lexicon": { 204 + "version": "0.5.1", 205 + "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.5.1.tgz", 206 + "integrity": "sha512-y8AEtYmfgVl4fqFxqXAeGvhesiGkxiy3CWoJIfsFDDdTlZUC8DFnZrYhcqkIop3OlCkkljvpSJi1hbeC1tbi8A==", 207 + "license": "MIT", 208 + "dependencies": { 209 + "@atproto/common-web": "^0.4.3", 210 + "@atproto/syntax": "^0.4.1", 211 + "iso-datestring-validator": "^2.2.2", 212 + "multiformats": "^9.9.0", 213 + "zod": "^3.23.8" 214 + } 215 + }, 216 + "node_modules/@atproto/oauth-client": { 217 + "version": "0.5.7", 218 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client/-/oauth-client-0.5.7.tgz", 219 + "integrity": "sha512-pDvbvy9DCxrAJv7bAbBUzWrHZKhFy091HvEMZhr+EyZA6gSCGYmmQJG/coDj0oICSVQeafAZd+IxR0YUCWwmEg==", 220 + "license": "MIT", 221 + "dependencies": { 222 + "@atproto-labs/did-resolver": "0.2.2", 223 + "@atproto-labs/fetch": "0.2.3", 224 + "@atproto-labs/handle-resolver": "0.3.2", 225 + "@atproto-labs/identity-resolver": "0.3.2", 226 + "@atproto-labs/simple-store": "0.3.0", 227 + "@atproto-labs/simple-store-memory": "0.1.4", 228 + "@atproto/did": "0.2.1", 229 + "@atproto/jwk": "0.6.0", 230 + "@atproto/oauth-types": "0.4.2", 231 + "@atproto/xrpc": "0.7.5", 232 + "core-js": "^3", 233 + "multiformats": "^9.9.0", 234 + "zod": "^3.23.8" 235 + } 236 + }, 237 + "node_modules/@atproto/oauth-client-browser": { 238 + "version": "0.3.33", 239 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client-browser/-/oauth-client-browser-0.3.33.tgz", 240 + "integrity": "sha512-IvHn/5W3e9GXFUGXQ4MV19E4HXY4zJFgu+eZRWexIXnZl4GwgTH7op8J1SosczdOK1Ngu+LnHE6npcNhUGGd6Q==", 241 + "license": "MIT", 242 + "dependencies": { 243 + "@atproto-labs/did-resolver": "0.2.2", 244 + "@atproto-labs/handle-resolver": "0.3.2", 245 + "@atproto-labs/simple-store": "0.3.0", 246 + "@atproto/did": "0.2.1", 247 + "@atproto/jwk": "0.6.0", 248 + "@atproto/jwk-webcrypto": "0.2.0", 249 + "@atproto/oauth-client": "0.5.7", 250 + "@atproto/oauth-types": "0.4.2", 251 + "core-js": "^3" 252 + } 253 + }, 254 + "node_modules/@atproto/oauth-types": { 255 + "version": "0.4.2", 256 + "resolved": "https://registry.npmjs.org/@atproto/oauth-types/-/oauth-types-0.4.2.tgz", 257 + "integrity": "sha512-gcfNTyFsPJcYDf79M0iKHykWqzxloscioKoerdIN3MTS3htiNOSgZjm2p8ho7pdrElLzea3qktuhTQI39j1XFQ==", 258 + "license": "MIT", 259 + "dependencies": { 260 + "@atproto/did": "0.2.1", 261 + "@atproto/jwk": "0.6.0", 262 + "zod": "^3.23.8" 263 + } 264 + }, 265 + "node_modules/@atproto/syntax": { 266 + "version": "0.4.1", 267 + "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.4.1.tgz", 268 + "integrity": "sha512-CJdImtLAiFO+0z3BWTtxwk6aY5w4t8orHTMVJgkf++QRJWTxPbIFko/0hrkADB7n2EruDxDSeAgfUGehpH6ngw==", 269 + "license": "MIT" 270 + }, 271 + "node_modules/@atproto/xrpc": { 272 + "version": "0.7.5", 273 + "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.7.5.tgz", 274 + "integrity": "sha512-MUYNn5d2hv8yVegRL0ccHvTHAVj5JSnW07bkbiaz96UH45lvYNRVwt44z+yYVnb0/mvBzyD3/ZQ55TRGt7fHkA==", 275 + "license": "MIT", 276 + "dependencies": { 277 + "@atproto/lexicon": "^0.5.1", 278 + "zod": "^3.23.8" 279 + } 280 + }, 281 + "node_modules/@babel/code-frame": { 282 + "version": "7.27.1", 283 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", 284 + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", 285 + "dev": true, 286 + "license": "MIT", 287 + "dependencies": { 288 + "@babel/helper-validator-identifier": "^7.27.1", 289 + "js-tokens": "^4.0.0", 290 + "picocolors": "^1.1.1" 291 + }, 292 + "engines": { 293 + "node": ">=6.9.0" 294 + } 295 + }, 296 + "node_modules/@babel/compat-data": { 297 + "version": "7.28.4", 298 + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", 299 + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", 300 + "dev": true, 301 + "license": "MIT", 302 + "engines": { 303 + "node": ">=6.9.0" 304 + } 305 + }, 306 + "node_modules/@babel/core": { 307 + "version": "7.28.4", 308 + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", 309 + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", 310 + "dev": true, 311 + "license": "MIT", 312 + "dependencies": { 313 + "@babel/code-frame": "^7.27.1", 314 + "@babel/generator": "^7.28.3", 315 + "@babel/helper-compilation-targets": "^7.27.2", 316 + "@babel/helper-module-transforms": "^7.28.3", 317 + "@babel/helpers": "^7.28.4", 318 + "@babel/parser": "^7.28.4", 319 + "@babel/template": "^7.27.2", 320 + "@babel/traverse": "^7.28.4", 321 + "@babel/types": "^7.28.4", 322 + "@jridgewell/remapping": "^2.3.5", 323 + "convert-source-map": "^2.0.0", 324 + "debug": "^4.1.0", 325 + "gensync": "^1.0.0-beta.2", 326 + "json5": "^2.2.3", 327 + "semver": "^6.3.1" 328 + }, 329 + "engines": { 330 + "node": ">=6.9.0" 331 + }, 332 + "funding": { 333 + "type": "opencollective", 334 + "url": "https://opencollective.com/babel" 335 + } 336 + }, 337 + "node_modules/@babel/generator": { 338 + "version": "7.28.3", 339 + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", 340 + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", 341 + "dev": true, 342 + "license": "MIT", 343 + "dependencies": { 344 + "@babel/parser": "^7.28.3", 345 + "@babel/types": "^7.28.2", 346 + "@jridgewell/gen-mapping": "^0.3.12", 347 + "@jridgewell/trace-mapping": "^0.3.28", 348 + "jsesc": "^3.0.2" 349 + }, 350 + "engines": { 351 + "node": ">=6.9.0" 352 + } 353 + }, 354 + "node_modules/@babel/helper-annotate-as-pure": { 355 + "version": "7.27.3", 356 + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", 357 + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", 358 + "dev": true, 359 + "license": "MIT", 360 + "dependencies": { 361 + "@babel/types": "^7.27.3" 362 + }, 363 + "engines": { 364 + "node": ">=6.9.0" 365 + } 366 + }, 367 + "node_modules/@babel/helper-compilation-targets": { 368 + "version": "7.27.2", 369 + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", 370 + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", 371 + "dev": true, 372 + "license": "MIT", 373 + "dependencies": { 374 + "@babel/compat-data": "^7.27.2", 375 + "@babel/helper-validator-option": "^7.27.1", 376 + "browserslist": "^4.24.0", 377 + "lru-cache": "^5.1.1", 378 + "semver": "^6.3.1" 379 + }, 380 + "engines": { 381 + "node": ">=6.9.0" 382 + } 383 + }, 384 + "node_modules/@babel/helper-create-class-features-plugin": { 385 + "version": "7.28.3", 386 + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", 387 + "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", 388 + "dev": true, 389 + "license": "MIT", 390 + "dependencies": { 391 + "@babel/helper-annotate-as-pure": "^7.27.3", 392 + "@babel/helper-member-expression-to-functions": "^7.27.1", 393 + "@babel/helper-optimise-call-expression": "^7.27.1", 394 + "@babel/helper-replace-supers": "^7.27.1", 395 + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", 396 + "@babel/traverse": "^7.28.3", 397 + "semver": "^6.3.1" 398 + }, 399 + "engines": { 400 + "node": ">=6.9.0" 401 + }, 402 + "peerDependencies": { 403 + "@babel/core": "^7.0.0" 404 + } 405 + }, 406 + "node_modules/@babel/helper-globals": { 407 + "version": "7.28.0", 408 + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", 409 + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", 410 + "dev": true, 411 + "license": "MIT", 412 + "engines": { 413 + "node": ">=6.9.0" 414 + } 415 + }, 416 + "node_modules/@babel/helper-member-expression-to-functions": { 417 + "version": "7.27.1", 418 + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", 419 + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", 420 + "dev": true, 421 + "license": "MIT", 422 + "dependencies": { 423 + "@babel/traverse": "^7.27.1", 424 + "@babel/types": "^7.27.1" 425 + }, 426 + "engines": { 427 + "node": ">=6.9.0" 428 + } 429 + }, 430 + "node_modules/@babel/helper-module-imports": { 431 + "version": "7.27.1", 432 + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", 433 + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", 434 + "dev": true, 435 + "license": "MIT", 436 + "dependencies": { 437 + "@babel/traverse": "^7.27.1", 438 + "@babel/types": "^7.27.1" 439 + }, 440 + "engines": { 441 + "node": ">=6.9.0" 442 + } 443 + }, 444 + "node_modules/@babel/helper-module-transforms": { 445 + "version": "7.28.3", 446 + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", 447 + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", 448 + "dev": true, 449 + "license": "MIT", 450 + "dependencies": { 451 + "@babel/helper-module-imports": "^7.27.1", 452 + "@babel/helper-validator-identifier": "^7.27.1", 453 + "@babel/traverse": "^7.28.3" 454 + }, 455 + "engines": { 456 + "node": ">=6.9.0" 457 + }, 458 + "peerDependencies": { 459 + "@babel/core": "^7.0.0" 460 + } 461 + }, 462 + "node_modules/@babel/helper-optimise-call-expression": { 463 + "version": "7.27.1", 464 + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", 465 + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", 466 + "dev": true, 467 + "license": "MIT", 468 + "dependencies": { 469 + "@babel/types": "^7.27.1" 470 + }, 471 + "engines": { 472 + "node": ">=6.9.0" 473 + } 474 + }, 475 + "node_modules/@babel/helper-plugin-utils": { 476 + "version": "7.27.1", 477 + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", 478 + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", 479 + "dev": true, 480 + "license": "MIT", 481 + "engines": { 482 + "node": ">=6.9.0" 483 + } 484 + }, 485 + "node_modules/@babel/helper-replace-supers": { 486 + "version": "7.27.1", 487 + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", 488 + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", 489 + "dev": true, 490 + "license": "MIT", 491 + "dependencies": { 492 + "@babel/helper-member-expression-to-functions": "^7.27.1", 493 + "@babel/helper-optimise-call-expression": "^7.27.1", 494 + "@babel/traverse": "^7.27.1" 495 + }, 496 + "engines": { 497 + "node": ">=6.9.0" 498 + }, 499 + "peerDependencies": { 500 + "@babel/core": "^7.0.0" 501 + } 502 + }, 503 + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { 504 + "version": "7.27.1", 505 + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", 506 + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", 507 + "dev": true, 508 + "license": "MIT", 509 + "dependencies": { 510 + "@babel/traverse": "^7.27.1", 511 + "@babel/types": "^7.27.1" 512 + }, 513 + "engines": { 514 + "node": ">=6.9.0" 515 + } 516 + }, 517 + "node_modules/@babel/helper-string-parser": { 518 + "version": "7.27.1", 519 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", 520 + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", 521 + "dev": true, 522 + "license": "MIT", 523 + "engines": { 524 + "node": ">=6.9.0" 525 + } 526 + }, 527 + "node_modules/@babel/helper-validator-identifier": { 528 + "version": "7.27.1", 529 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", 530 + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", 531 + "dev": true, 532 + "license": "MIT", 533 + "engines": { 534 + "node": ">=6.9.0" 535 + } 536 + }, 537 + "node_modules/@babel/helper-validator-option": { 538 + "version": "7.27.1", 539 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", 540 + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", 541 + "dev": true, 542 + "license": "MIT", 543 + "engines": { 544 + "node": ">=6.9.0" 545 + } 546 + }, 547 + "node_modules/@babel/helpers": { 548 + "version": "7.28.4", 549 + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", 550 + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", 551 + "dev": true, 552 + "license": "MIT", 553 + "dependencies": { 554 + "@babel/template": "^7.27.2", 555 + "@babel/types": "^7.28.4" 556 + }, 557 + "engines": { 558 + "node": ">=6.9.0" 559 + } 560 + }, 561 + "node_modules/@babel/parser": { 562 + "version": "7.28.4", 563 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", 564 + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", 565 + "dev": true, 566 + "license": "MIT", 567 + "dependencies": { 568 + "@babel/types": "^7.28.4" 569 + }, 570 + "bin": { 571 + "parser": "bin/babel-parser.js" 572 + }, 573 + "engines": { 574 + "node": ">=6.0.0" 575 + } 576 + }, 577 + "node_modules/@babel/plugin-syntax-jsx": { 578 + "version": "7.27.1", 579 + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", 580 + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", 581 + "dev": true, 582 + "license": "MIT", 583 + "dependencies": { 584 + "@babel/helper-plugin-utils": "^7.27.1" 585 + }, 586 + "engines": { 587 + "node": ">=6.9.0" 588 + }, 589 + "peerDependencies": { 590 + "@babel/core": "^7.0.0-0" 591 + } 592 + }, 593 + "node_modules/@babel/plugin-syntax-typescript": { 594 + "version": "7.27.1", 595 + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", 596 + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", 597 + "dev": true, 598 + "license": "MIT", 599 + "dependencies": { 600 + "@babel/helper-plugin-utils": "^7.27.1" 601 + }, 602 + "engines": { 603 + "node": ">=6.9.0" 604 + }, 605 + "peerDependencies": { 606 + "@babel/core": "^7.0.0-0" 607 + } 608 + }, 609 + "node_modules/@babel/plugin-transform-modules-commonjs": { 610 + "version": "7.27.1", 611 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", 612 + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", 613 + "dev": true, 614 + "license": "MIT", 615 + "dependencies": { 616 + "@babel/helper-module-transforms": "^7.27.1", 617 + "@babel/helper-plugin-utils": "^7.27.1" 618 + }, 619 + "engines": { 620 + "node": ">=6.9.0" 621 + }, 622 + "peerDependencies": { 623 + "@babel/core": "^7.0.0-0" 624 + } 625 + }, 626 + "node_modules/@babel/plugin-transform-react-jsx-self": { 627 + "version": "7.27.1", 628 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", 629 + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", 630 + "dev": true, 631 + "license": "MIT", 632 + "dependencies": { 633 + "@babel/helper-plugin-utils": "^7.27.1" 634 + }, 635 + "engines": { 636 + "node": ">=6.9.0" 637 + }, 638 + "peerDependencies": { 639 + "@babel/core": "^7.0.0-0" 640 + } 641 + }, 642 + "node_modules/@babel/plugin-transform-react-jsx-source": { 643 + "version": "7.27.1", 644 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", 645 + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", 646 + "dev": true, 647 + "license": "MIT", 648 + "dependencies": { 649 + "@babel/helper-plugin-utils": "^7.27.1" 650 + }, 651 + "engines": { 652 + "node": ">=6.9.0" 653 + }, 654 + "peerDependencies": { 655 + "@babel/core": "^7.0.0-0" 656 + } 657 + }, 658 + "node_modules/@babel/plugin-transform-typescript": { 659 + "version": "7.28.0", 660 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", 661 + "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", 662 + "dev": true, 663 + "license": "MIT", 664 + "dependencies": { 665 + "@babel/helper-annotate-as-pure": "^7.27.3", 666 + "@babel/helper-create-class-features-plugin": "^7.27.1", 667 + "@babel/helper-plugin-utils": "^7.27.1", 668 + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", 669 + "@babel/plugin-syntax-typescript": "^7.27.1" 670 + }, 671 + "engines": { 672 + "node": ">=6.9.0" 673 + }, 674 + "peerDependencies": { 675 + "@babel/core": "^7.0.0-0" 676 + } 677 + }, 678 + "node_modules/@babel/preset-typescript": { 679 + "version": "7.27.1", 680 + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", 681 + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", 682 + "dev": true, 683 + "license": "MIT", 684 + "dependencies": { 685 + "@babel/helper-plugin-utils": "^7.27.1", 686 + "@babel/helper-validator-option": "^7.27.1", 687 + "@babel/plugin-syntax-jsx": "^7.27.1", 688 + "@babel/plugin-transform-modules-commonjs": "^7.27.1", 689 + "@babel/plugin-transform-typescript": "^7.27.1" 690 + }, 691 + "engines": { 692 + "node": ">=6.9.0" 693 + }, 694 + "peerDependencies": { 695 + "@babel/core": "^7.0.0-0" 696 + } 697 + }, 698 + "node_modules/@babel/template": { 699 + "version": "7.27.2", 700 + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", 701 + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", 702 + "dev": true, 703 + "license": "MIT", 704 + "dependencies": { 705 + "@babel/code-frame": "^7.27.1", 706 + "@babel/parser": "^7.27.2", 707 + "@babel/types": "^7.27.1" 708 + }, 709 + "engines": { 710 + "node": ">=6.9.0" 711 + } 712 + }, 713 + "node_modules/@babel/traverse": { 714 + "version": "7.28.4", 715 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", 716 + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", 717 + "dev": true, 718 + "license": "MIT", 719 + "dependencies": { 720 + "@babel/code-frame": "^7.27.1", 721 + "@babel/generator": "^7.28.3", 722 + "@babel/helper-globals": "^7.28.0", 723 + "@babel/parser": "^7.28.4", 724 + "@babel/template": "^7.27.2", 725 + "@babel/types": "^7.28.4", 726 + "debug": "^4.3.1" 727 + }, 728 + "engines": { 729 + "node": ">=6.9.0" 730 + } 731 + }, 732 + "node_modules/@babel/types": { 733 + "version": "7.28.4", 734 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", 735 + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", 736 + "dev": true, 737 + "license": "MIT", 738 + "dependencies": { 739 + "@babel/helper-string-parser": "^7.27.1", 740 + "@babel/helper-validator-identifier": "^7.27.1" 741 + }, 742 + "engines": { 743 + "node": ">=6.9.0" 744 + } 745 + }, 746 + "node_modules/@esbuild/aix-ppc64": { 747 + "version": "0.25.11", 748 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", 749 + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", 750 + "cpu": [ 751 + "ppc64" 752 + ], 753 + "license": "MIT", 754 + "optional": true, 755 + "os": [ 756 + "aix" 757 + ], 758 + "engines": { 759 + "node": ">=18" 760 + } 761 + }, 762 + "node_modules/@esbuild/android-arm": { 763 + "version": "0.25.11", 764 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", 765 + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", 766 + "cpu": [ 767 + "arm" 768 + ], 769 + "license": "MIT", 770 + "optional": true, 771 + "os": [ 772 + "android" 773 + ], 774 + "engines": { 775 + "node": ">=18" 776 + } 777 + }, 778 + "node_modules/@esbuild/android-arm64": { 779 + "version": "0.25.11", 780 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", 781 + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", 782 + "cpu": [ 783 + "arm64" 784 + ], 785 + "license": "MIT", 786 + "optional": true, 787 + "os": [ 788 + "android" 789 + ], 790 + "engines": { 791 + "node": ">=18" 792 + } 793 + }, 794 + "node_modules/@esbuild/android-x64": { 795 + "version": "0.25.11", 796 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", 797 + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", 798 + "cpu": [ 799 + "x64" 800 + ], 801 + "license": "MIT", 802 + "optional": true, 803 + "os": [ 804 + "android" 805 + ], 806 + "engines": { 807 + "node": ">=18" 808 + } 809 + }, 810 + "node_modules/@esbuild/darwin-arm64": { 811 + "version": "0.25.11", 812 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", 813 + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", 814 + "cpu": [ 815 + "arm64" 816 + ], 817 + "license": "MIT", 818 + "optional": true, 819 + "os": [ 820 + "darwin" 821 + ], 822 + "engines": { 823 + "node": ">=18" 824 + } 825 + }, 826 + "node_modules/@esbuild/darwin-x64": { 827 + "version": "0.25.11", 828 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", 829 + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", 830 + "cpu": [ 831 + "x64" 832 + ], 833 + "license": "MIT", 834 + "optional": true, 835 + "os": [ 836 + "darwin" 837 + ], 838 + "engines": { 839 + "node": ">=18" 840 + } 841 + }, 842 + "node_modules/@esbuild/freebsd-arm64": { 843 + "version": "0.25.11", 844 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", 845 + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", 846 + "cpu": [ 847 + "arm64" 848 + ], 849 + "license": "MIT", 850 + "optional": true, 851 + "os": [ 852 + "freebsd" 853 + ], 854 + "engines": { 855 + "node": ">=18" 856 + } 857 + }, 858 + "node_modules/@esbuild/freebsd-x64": { 859 + "version": "0.25.11", 860 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", 861 + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", 862 + "cpu": [ 863 + "x64" 864 + ], 865 + "license": "MIT", 866 + "optional": true, 867 + "os": [ 868 + "freebsd" 869 + ], 870 + "engines": { 871 + "node": ">=18" 872 + } 873 + }, 874 + "node_modules/@esbuild/linux-arm": { 875 + "version": "0.25.11", 876 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", 877 + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", 878 + "cpu": [ 879 + "arm" 880 + ], 881 + "license": "MIT", 882 + "optional": true, 883 + "os": [ 884 + "linux" 885 + ], 886 + "engines": { 887 + "node": ">=18" 888 + } 889 + }, 890 + "node_modules/@esbuild/linux-arm64": { 891 + "version": "0.25.11", 892 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", 893 + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", 894 + "cpu": [ 895 + "arm64" 896 + ], 897 + "license": "MIT", 898 + "optional": true, 899 + "os": [ 900 + "linux" 901 + ], 902 + "engines": { 903 + "node": ">=18" 904 + } 905 + }, 906 + "node_modules/@esbuild/linux-ia32": { 907 + "version": "0.25.11", 908 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", 909 + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", 910 + "cpu": [ 911 + "ia32" 912 + ], 913 + "license": "MIT", 914 + "optional": true, 915 + "os": [ 916 + "linux" 917 + ], 918 + "engines": { 919 + "node": ">=18" 920 + } 921 + }, 922 + "node_modules/@esbuild/linux-loong64": { 923 + "version": "0.25.11", 924 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", 925 + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", 926 + "cpu": [ 927 + "loong64" 928 + ], 929 + "license": "MIT", 930 + "optional": true, 931 + "os": [ 932 + "linux" 933 + ], 934 + "engines": { 935 + "node": ">=18" 936 + } 937 + }, 938 + "node_modules/@esbuild/linux-mips64el": { 939 + "version": "0.25.11", 940 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", 941 + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", 942 + "cpu": [ 943 + "mips64el" 944 + ], 945 + "license": "MIT", 946 + "optional": true, 947 + "os": [ 948 + "linux" 949 + ], 950 + "engines": { 951 + "node": ">=18" 952 + } 953 + }, 954 + "node_modules/@esbuild/linux-ppc64": { 955 + "version": "0.25.11", 956 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", 957 + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", 958 + "cpu": [ 959 + "ppc64" 960 + ], 961 + "license": "MIT", 962 + "optional": true, 963 + "os": [ 964 + "linux" 965 + ], 966 + "engines": { 967 + "node": ">=18" 968 + } 969 + }, 970 + "node_modules/@esbuild/linux-riscv64": { 971 + "version": "0.25.11", 972 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", 973 + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", 974 + "cpu": [ 975 + "riscv64" 976 + ], 977 + "license": "MIT", 978 + "optional": true, 979 + "os": [ 980 + "linux" 981 + ], 982 + "engines": { 983 + "node": ">=18" 984 + } 985 + }, 986 + "node_modules/@esbuild/linux-s390x": { 987 + "version": "0.25.11", 988 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", 989 + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", 990 + "cpu": [ 991 + "s390x" 992 + ], 993 + "license": "MIT", 994 + "optional": true, 995 + "os": [ 996 + "linux" 997 + ], 998 + "engines": { 999 + "node": ">=18" 1000 + } 1001 + }, 1002 + "node_modules/@esbuild/linux-x64": { 1003 + "version": "0.25.11", 1004 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", 1005 + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", 1006 + "cpu": [ 1007 + "x64" 1008 + ], 1009 + "license": "MIT", 1010 + "optional": true, 1011 + "os": [ 1012 + "linux" 1013 + ], 1014 + "engines": { 1015 + "node": ">=18" 1016 + } 1017 + }, 1018 + "node_modules/@esbuild/netbsd-arm64": { 1019 + "version": "0.25.11", 1020 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", 1021 + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", 1022 + "cpu": [ 1023 + "arm64" 1024 + ], 1025 + "license": "MIT", 1026 + "optional": true, 1027 + "os": [ 1028 + "netbsd" 1029 + ], 1030 + "engines": { 1031 + "node": ">=18" 1032 + } 1033 + }, 1034 + "node_modules/@esbuild/netbsd-x64": { 1035 + "version": "0.25.11", 1036 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", 1037 + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", 1038 + "cpu": [ 1039 + "x64" 1040 + ], 1041 + "license": "MIT", 1042 + "optional": true, 1043 + "os": [ 1044 + "netbsd" 1045 + ], 1046 + "engines": { 1047 + "node": ">=18" 1048 + } 1049 + }, 1050 + "node_modules/@esbuild/openbsd-arm64": { 1051 + "version": "0.25.11", 1052 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", 1053 + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", 1054 + "cpu": [ 1055 + "arm64" 1056 + ], 1057 + "license": "MIT", 1058 + "optional": true, 1059 + "os": [ 1060 + "openbsd" 1061 + ], 1062 + "engines": { 1063 + "node": ">=18" 1064 + } 1065 + }, 1066 + "node_modules/@esbuild/openbsd-x64": { 1067 + "version": "0.25.11", 1068 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", 1069 + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", 1070 + "cpu": [ 1071 + "x64" 1072 + ], 1073 + "license": "MIT", 1074 + "optional": true, 1075 + "os": [ 1076 + "openbsd" 1077 + ], 1078 + "engines": { 1079 + "node": ">=18" 1080 + } 1081 + }, 1082 + "node_modules/@esbuild/openharmony-arm64": { 1083 + "version": "0.25.11", 1084 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", 1085 + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", 1086 + "cpu": [ 1087 + "arm64" 1088 + ], 1089 + "license": "MIT", 1090 + "optional": true, 1091 + "os": [ 1092 + "openharmony" 1093 + ], 1094 + "engines": { 1095 + "node": ">=18" 1096 + } 1097 + }, 1098 + "node_modules/@esbuild/sunos-x64": { 1099 + "version": "0.25.11", 1100 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", 1101 + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", 1102 + "cpu": [ 1103 + "x64" 1104 + ], 1105 + "license": "MIT", 1106 + "optional": true, 1107 + "os": [ 1108 + "sunos" 1109 + ], 1110 + "engines": { 1111 + "node": ">=18" 1112 + } 1113 + }, 1114 + "node_modules/@esbuild/win32-arm64": { 1115 + "version": "0.25.11", 1116 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", 1117 + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", 1118 + "cpu": [ 1119 + "arm64" 1120 + ], 1121 + "license": "MIT", 1122 + "optional": true, 1123 + "os": [ 1124 + "win32" 1125 + ], 1126 + "engines": { 1127 + "node": ">=18" 1128 + } 1129 + }, 1130 + "node_modules/@esbuild/win32-ia32": { 1131 + "version": "0.25.11", 1132 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", 1133 + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", 1134 + "cpu": [ 1135 + "ia32" 1136 + ], 1137 + "license": "MIT", 1138 + "optional": true, 1139 + "os": [ 1140 + "win32" 1141 + ], 1142 + "engines": { 1143 + "node": ">=18" 1144 + } 1145 + }, 1146 + "node_modules/@esbuild/win32-x64": { 1147 + "version": "0.25.11", 1148 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", 1149 + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", 1150 + "cpu": [ 1151 + "x64" 1152 + ], 1153 + "license": "MIT", 1154 + "optional": true, 1155 + "os": [ 1156 + "win32" 1157 + ], 1158 + "engines": { 1159 + "node": ">=18" 1160 + } 1161 + }, 1162 + "node_modules/@eslint-community/eslint-utils": { 1163 + "version": "4.9.0", 1164 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", 1165 + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", 1166 + "dev": true, 1167 + "license": "MIT", 1168 + "dependencies": { 1169 + "eslint-visitor-keys": "^3.4.3" 1170 + }, 1171 + "engines": { 1172 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1173 + }, 1174 + "funding": { 1175 + "url": "https://opencollective.com/eslint" 1176 + }, 1177 + "peerDependencies": { 1178 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 1179 + } 1180 + }, 1181 + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 1182 + "version": "3.4.3", 1183 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 1184 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 1185 + "dev": true, 1186 + "license": "Apache-2.0", 1187 + "engines": { 1188 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1189 + }, 1190 + "funding": { 1191 + "url": "https://opencollective.com/eslint" 1192 + } 1193 + }, 1194 + "node_modules/@eslint-community/regexpp": { 1195 + "version": "4.12.1", 1196 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 1197 + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 1198 + "dev": true, 1199 + "license": "MIT", 1200 + "engines": { 1201 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 1202 + } 1203 + }, 1204 + "node_modules/@eslint/config-array": { 1205 + "version": "0.21.1", 1206 + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", 1207 + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", 1208 + "dev": true, 1209 + "license": "Apache-2.0", 1210 + "dependencies": { 1211 + "@eslint/object-schema": "^2.1.7", 1212 + "debug": "^4.3.1", 1213 + "minimatch": "^3.1.2" 1214 + }, 1215 + "engines": { 1216 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1217 + } 1218 + }, 1219 + "node_modules/@eslint/config-helpers": { 1220 + "version": "0.4.1", 1221 + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", 1222 + "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", 1223 + "dev": true, 1224 + "license": "Apache-2.0", 1225 + "dependencies": { 1226 + "@eslint/core": "^0.16.0" 1227 + }, 1228 + "engines": { 1229 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1230 + } 1231 + }, 1232 + "node_modules/@eslint/core": { 1233 + "version": "0.16.0", 1234 + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", 1235 + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", 1236 + "dev": true, 1237 + "license": "Apache-2.0", 1238 + "dependencies": { 1239 + "@types/json-schema": "^7.0.15" 1240 + }, 1241 + "engines": { 1242 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1243 + } 1244 + }, 1245 + "node_modules/@eslint/eslintrc": { 1246 + "version": "3.3.1", 1247 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", 1248 + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", 1249 + "dev": true, 1250 + "license": "MIT", 1251 + "dependencies": { 1252 + "ajv": "^6.12.4", 1253 + "debug": "^4.3.2", 1254 + "espree": "^10.0.1", 1255 + "globals": "^14.0.0", 1256 + "ignore": "^5.2.0", 1257 + "import-fresh": "^3.2.1", 1258 + "js-yaml": "^4.1.0", 1259 + "minimatch": "^3.1.2", 1260 + "strip-json-comments": "^3.1.1" 1261 + }, 1262 + "engines": { 1263 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1264 + }, 1265 + "funding": { 1266 + "url": "https://opencollective.com/eslint" 1267 + } 1268 + }, 1269 + "node_modules/@eslint/eslintrc/node_modules/globals": { 1270 + "version": "14.0.0", 1271 + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 1272 + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 1273 + "dev": true, 1274 + "license": "MIT", 1275 + "engines": { 1276 + "node": ">=18" 1277 + }, 1278 + "funding": { 1279 + "url": "https://github.com/sponsors/sindresorhus" 1280 + } 1281 + }, 1282 + "node_modules/@eslint/js": { 1283 + "version": "9.38.0", 1284 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", 1285 + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", 1286 + "dev": true, 1287 + "license": "MIT", 1288 + "engines": { 1289 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1290 + }, 1291 + "funding": { 1292 + "url": "https://eslint.org/donate" 1293 + } 1294 + }, 1295 + "node_modules/@eslint/object-schema": { 1296 + "version": "2.1.7", 1297 + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", 1298 + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", 1299 + "dev": true, 1300 + "license": "Apache-2.0", 1301 + "engines": { 1302 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1303 + } 1304 + }, 1305 + "node_modules/@eslint/plugin-kit": { 1306 + "version": "0.4.0", 1307 + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", 1308 + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", 1309 + "dev": true, 1310 + "license": "Apache-2.0", 1311 + "dependencies": { 1312 + "@eslint/core": "^0.16.0", 1313 + "levn": "^0.4.1" 1314 + }, 1315 + "engines": { 1316 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1317 + } 1318 + }, 1319 + "node_modules/@humanfs/core": { 1320 + "version": "0.19.1", 1321 + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 1322 + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 1323 + "dev": true, 1324 + "license": "Apache-2.0", 1325 + "engines": { 1326 + "node": ">=18.18.0" 1327 + } 1328 + }, 1329 + "node_modules/@humanfs/node": { 1330 + "version": "0.16.7", 1331 + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", 1332 + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", 1333 + "dev": true, 1334 + "license": "Apache-2.0", 1335 + "dependencies": { 1336 + "@humanfs/core": "^0.19.1", 1337 + "@humanwhocodes/retry": "^0.4.0" 1338 + }, 1339 + "engines": { 1340 + "node": ">=18.18.0" 1341 + } 1342 + }, 1343 + "node_modules/@humanwhocodes/module-importer": { 1344 + "version": "1.0.1", 1345 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 1346 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 1347 + "dev": true, 1348 + "license": "Apache-2.0", 1349 + "engines": { 1350 + "node": ">=12.22" 1351 + }, 1352 + "funding": { 1353 + "type": "github", 1354 + "url": "https://github.com/sponsors/nzakas" 1355 + } 1356 + }, 1357 + "node_modules/@humanwhocodes/retry": { 1358 + "version": "0.4.3", 1359 + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", 1360 + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", 1361 + "dev": true, 1362 + "license": "Apache-2.0", 1363 + "engines": { 1364 + "node": ">=18.18" 1365 + }, 1366 + "funding": { 1367 + "type": "github", 1368 + "url": "https://github.com/sponsors/nzakas" 1369 + } 1370 + }, 1371 + "node_modules/@iconify/types": { 1372 + "version": "2.0.0", 1373 + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", 1374 + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", 1375 + "dev": true, 1376 + "license": "MIT" 1377 + }, 1378 + "node_modules/@iconify/utils": { 1379 + "version": "3.0.2", 1380 + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.2.tgz", 1381 + "integrity": "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==", 1382 + "dev": true, 1383 + "license": "MIT", 1384 + "dependencies": { 1385 + "@antfu/install-pkg": "^1.1.0", 1386 + "@antfu/utils": "^9.2.0", 1387 + "@iconify/types": "^2.0.0", 1388 + "debug": "^4.4.1", 1389 + "globals": "^15.15.0", 1390 + "kolorist": "^1.8.0", 1391 + "local-pkg": "^1.1.1", 1392 + "mlly": "^1.7.4" 1393 + } 1394 + }, 1395 + "node_modules/@iconify/utils/node_modules/globals": { 1396 + "version": "15.15.0", 1397 + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", 1398 + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", 1399 + "dev": true, 1400 + "license": "MIT", 1401 + "engines": { 1402 + "node": ">=18" 1403 + }, 1404 + "funding": { 1405 + "url": "https://github.com/sponsors/sindresorhus" 1406 + } 1407 + }, 1408 + "node_modules/@isaacs/fs-minipass": { 1409 + "version": "4.0.1", 1410 + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", 1411 + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", 1412 + "license": "ISC", 1413 + "dependencies": { 1414 + "minipass": "^7.0.4" 1415 + }, 1416 + "engines": { 1417 + "node": ">=18.0.0" 1418 + } 1419 + }, 1420 + "node_modules/@jridgewell/gen-mapping": { 1421 + "version": "0.3.13", 1422 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 1423 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 1424 + "license": "MIT", 1425 + "dependencies": { 1426 + "@jridgewell/sourcemap-codec": "^1.5.0", 1427 + "@jridgewell/trace-mapping": "^0.3.24" 1428 + } 1429 + }, 1430 + "node_modules/@jridgewell/remapping": { 1431 + "version": "2.3.5", 1432 + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 1433 + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 1434 + "license": "MIT", 1435 + "dependencies": { 1436 + "@jridgewell/gen-mapping": "^0.3.5", 1437 + "@jridgewell/trace-mapping": "^0.3.24" 1438 + } 1439 + }, 1440 + "node_modules/@jridgewell/resolve-uri": { 1441 + "version": "3.1.2", 1442 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 1443 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 1444 + "license": "MIT", 1445 + "engines": { 1446 + "node": ">=6.0.0" 1447 + } 1448 + }, 1449 + "node_modules/@jridgewell/sourcemap-codec": { 1450 + "version": "1.5.5", 1451 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 1452 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 1453 + "license": "MIT" 1454 + }, 1455 + "node_modules/@jridgewell/trace-mapping": { 1456 + "version": "0.3.31", 1457 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 1458 + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 1459 + "license": "MIT", 1460 + "dependencies": { 1461 + "@jridgewell/resolve-uri": "^3.1.0", 1462 + "@jridgewell/sourcemap-codec": "^1.4.14" 1463 + } 1464 + }, 1465 + "node_modules/@nodelib/fs.scandir": { 1466 + "version": "2.1.5", 1467 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1468 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1469 + "dev": true, 1470 + "license": "MIT", 1471 + "dependencies": { 1472 + "@nodelib/fs.stat": "2.0.5", 1473 + "run-parallel": "^1.1.9" 1474 + }, 1475 + "engines": { 1476 + "node": ">= 8" 1477 + } 1478 + }, 1479 + "node_modules/@nodelib/fs.stat": { 1480 + "version": "2.0.5", 1481 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1482 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 1483 + "dev": true, 1484 + "license": "MIT", 1485 + "engines": { 1486 + "node": ">= 8" 1487 + } 1488 + }, 1489 + "node_modules/@nodelib/fs.walk": { 1490 + "version": "1.2.8", 1491 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1492 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1493 + "dev": true, 1494 + "license": "MIT", 1495 + "dependencies": { 1496 + "@nodelib/fs.scandir": "2.1.5", 1497 + "fastq": "^1.6.0" 1498 + }, 1499 + "engines": { 1500 + "node": ">= 8" 1501 + } 1502 + }, 1503 + "node_modules/@rolldown/pluginutils": { 1504 + "version": "1.0.0-beta.38", 1505 + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.38.tgz", 1506 + "integrity": "sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==", 1507 + "dev": true, 1508 + "license": "MIT" 1509 + }, 1510 + "node_modules/@rollup/rollup-android-arm-eabi": { 1511 + "version": "4.52.5", 1512 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", 1513 + "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", 1514 + "cpu": [ 1515 + "arm" 1516 + ], 1517 + "license": "MIT", 1518 + "optional": true, 1519 + "os": [ 1520 + "android" 1521 + ] 1522 + }, 1523 + "node_modules/@rollup/rollup-android-arm64": { 1524 + "version": "4.52.5", 1525 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", 1526 + "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", 1527 + "cpu": [ 1528 + "arm64" 1529 + ], 1530 + "license": "MIT", 1531 + "optional": true, 1532 + "os": [ 1533 + "android" 1534 + ] 1535 + }, 1536 + "node_modules/@rollup/rollup-darwin-arm64": { 1537 + "version": "4.52.5", 1538 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", 1539 + "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", 1540 + "cpu": [ 1541 + "arm64" 1542 + ], 1543 + "license": "MIT", 1544 + "optional": true, 1545 + "os": [ 1546 + "darwin" 1547 + ] 1548 + }, 1549 + "node_modules/@rollup/rollup-darwin-x64": { 1550 + "version": "4.52.5", 1551 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", 1552 + "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", 1553 + "cpu": [ 1554 + "x64" 1555 + ], 1556 + "license": "MIT", 1557 + "optional": true, 1558 + "os": [ 1559 + "darwin" 1560 + ] 1561 + }, 1562 + "node_modules/@rollup/rollup-freebsd-arm64": { 1563 + "version": "4.52.5", 1564 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", 1565 + "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", 1566 + "cpu": [ 1567 + "arm64" 1568 + ], 1569 + "license": "MIT", 1570 + "optional": true, 1571 + "os": [ 1572 + "freebsd" 1573 + ] 1574 + }, 1575 + "node_modules/@rollup/rollup-freebsd-x64": { 1576 + "version": "4.52.5", 1577 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", 1578 + "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", 1579 + "cpu": [ 1580 + "x64" 1581 + ], 1582 + "license": "MIT", 1583 + "optional": true, 1584 + "os": [ 1585 + "freebsd" 1586 + ] 1587 + }, 1588 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1589 + "version": "4.52.5", 1590 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", 1591 + "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", 1592 + "cpu": [ 1593 + "arm" 1594 + ], 1595 + "license": "MIT", 1596 + "optional": true, 1597 + "os": [ 1598 + "linux" 1599 + ] 1600 + }, 1601 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1602 + "version": "4.52.5", 1603 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", 1604 + "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", 1605 + "cpu": [ 1606 + "arm" 1607 + ], 1608 + "license": "MIT", 1609 + "optional": true, 1610 + "os": [ 1611 + "linux" 1612 + ] 1613 + }, 1614 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 1615 + "version": "4.52.5", 1616 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", 1617 + "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", 1618 + "cpu": [ 1619 + "arm64" 1620 + ], 1621 + "license": "MIT", 1622 + "optional": true, 1623 + "os": [ 1624 + "linux" 1625 + ] 1626 + }, 1627 + "node_modules/@rollup/rollup-linux-arm64-musl": { 1628 + "version": "4.52.5", 1629 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", 1630 + "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", 1631 + "cpu": [ 1632 + "arm64" 1633 + ], 1634 + "license": "MIT", 1635 + "optional": true, 1636 + "os": [ 1637 + "linux" 1638 + ] 1639 + }, 1640 + "node_modules/@rollup/rollup-linux-loong64-gnu": { 1641 + "version": "4.52.5", 1642 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", 1643 + "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", 1644 + "cpu": [ 1645 + "loong64" 1646 + ], 1647 + "license": "MIT", 1648 + "optional": true, 1649 + "os": [ 1650 + "linux" 1651 + ] 1652 + }, 1653 + "node_modules/@rollup/rollup-linux-ppc64-gnu": { 1654 + "version": "4.52.5", 1655 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", 1656 + "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", 1657 + "cpu": [ 1658 + "ppc64" 1659 + ], 1660 + "license": "MIT", 1661 + "optional": true, 1662 + "os": [ 1663 + "linux" 1664 + ] 1665 + }, 1666 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1667 + "version": "4.52.5", 1668 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", 1669 + "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", 1670 + "cpu": [ 1671 + "riscv64" 1672 + ], 1673 + "license": "MIT", 1674 + "optional": true, 1675 + "os": [ 1676 + "linux" 1677 + ] 1678 + }, 1679 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 1680 + "version": "4.52.5", 1681 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", 1682 + "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", 1683 + "cpu": [ 1684 + "riscv64" 1685 + ], 1686 + "license": "MIT", 1687 + "optional": true, 1688 + "os": [ 1689 + "linux" 1690 + ] 1691 + }, 1692 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 1693 + "version": "4.52.5", 1694 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", 1695 + "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", 1696 + "cpu": [ 1697 + "s390x" 1698 + ], 1699 + "license": "MIT", 1700 + "optional": true, 1701 + "os": [ 1702 + "linux" 1703 + ] 1704 + }, 1705 + "node_modules/@rollup/rollup-linux-x64-gnu": { 1706 + "version": "4.52.5", 1707 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", 1708 + "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", 1709 + "cpu": [ 1710 + "x64" 1711 + ], 1712 + "license": "MIT", 1713 + "optional": true, 1714 + "os": [ 1715 + "linux" 1716 + ] 1717 + }, 1718 + "node_modules/@rollup/rollup-linux-x64-musl": { 1719 + "version": "4.52.5", 1720 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", 1721 + "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", 1722 + "cpu": [ 1723 + "x64" 1724 + ], 1725 + "license": "MIT", 1726 + "optional": true, 1727 + "os": [ 1728 + "linux" 1729 + ] 1730 + }, 1731 + "node_modules/@rollup/rollup-openharmony-arm64": { 1732 + "version": "4.52.5", 1733 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", 1734 + "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", 1735 + "cpu": [ 1736 + "arm64" 1737 + ], 1738 + "license": "MIT", 1739 + "optional": true, 1740 + "os": [ 1741 + "openharmony" 1742 + ] 1743 + }, 1744 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1745 + "version": "4.52.5", 1746 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", 1747 + "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", 1748 + "cpu": [ 1749 + "arm64" 1750 + ], 1751 + "license": "MIT", 1752 + "optional": true, 1753 + "os": [ 1754 + "win32" 1755 + ] 1756 + }, 1757 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1758 + "version": "4.52.5", 1759 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", 1760 + "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", 1761 + "cpu": [ 1762 + "ia32" 1763 + ], 1764 + "license": "MIT", 1765 + "optional": true, 1766 + "os": [ 1767 + "win32" 1768 + ] 1769 + }, 1770 + "node_modules/@rollup/rollup-win32-x64-gnu": { 1771 + "version": "4.52.5", 1772 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", 1773 + "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", 1774 + "cpu": [ 1775 + "x64" 1776 + ], 1777 + "license": "MIT", 1778 + "optional": true, 1779 + "os": [ 1780 + "win32" 1781 + ] 1782 + }, 1783 + "node_modules/@rollup/rollup-win32-x64-msvc": { 1784 + "version": "4.52.5", 1785 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", 1786 + "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", 1787 + "cpu": [ 1788 + "x64" 1789 + ], 1790 + "license": "MIT", 1791 + "optional": true, 1792 + "os": [ 1793 + "win32" 1794 + ] 1795 + }, 1796 + "node_modules/@tailwindcss/node": { 1797 + "version": "4.1.14", 1798 + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.14.tgz", 1799 + "integrity": "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==", 1800 + "license": "MIT", 1801 + "dependencies": { 1802 + "@jridgewell/remapping": "^2.3.4", 1803 + "enhanced-resolve": "^5.18.3", 1804 + "jiti": "^2.6.0", 1805 + "lightningcss": "1.30.1", 1806 + "magic-string": "^0.30.19", 1807 + "source-map-js": "^1.2.1", 1808 + "tailwindcss": "4.1.14" 1809 + } 1810 + }, 1811 + "node_modules/@tailwindcss/oxide": { 1812 + "version": "4.1.14", 1813 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz", 1814 + "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==", 1815 + "hasInstallScript": true, 1816 + "license": "MIT", 1817 + "dependencies": { 1818 + "detect-libc": "^2.0.4", 1819 + "tar": "^7.5.1" 1820 + }, 1821 + "engines": { 1822 + "node": ">= 10" 1823 + }, 1824 + "optionalDependencies": { 1825 + "@tailwindcss/oxide-android-arm64": "4.1.14", 1826 + "@tailwindcss/oxide-darwin-arm64": "4.1.14", 1827 + "@tailwindcss/oxide-darwin-x64": "4.1.14", 1828 + "@tailwindcss/oxide-freebsd-x64": "4.1.14", 1829 + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", 1830 + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", 1831 + "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", 1832 + "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", 1833 + "@tailwindcss/oxide-linux-x64-musl": "4.1.14", 1834 + "@tailwindcss/oxide-wasm32-wasi": "4.1.14", 1835 + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", 1836 + "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" 1837 + } 1838 + }, 1839 + "node_modules/@tailwindcss/oxide-android-arm64": { 1840 + "version": "4.1.14", 1841 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.14.tgz", 1842 + "integrity": "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==", 1843 + "cpu": [ 1844 + "arm64" 1845 + ], 1846 + "license": "MIT", 1847 + "optional": true, 1848 + "os": [ 1849 + "android" 1850 + ], 1851 + "engines": { 1852 + "node": ">= 10" 1853 + } 1854 + }, 1855 + "node_modules/@tailwindcss/oxide-darwin-arm64": { 1856 + "version": "4.1.14", 1857 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.14.tgz", 1858 + "integrity": "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==", 1859 + "cpu": [ 1860 + "arm64" 1861 + ], 1862 + "license": "MIT", 1863 + "optional": true, 1864 + "os": [ 1865 + "darwin" 1866 + ], 1867 + "engines": { 1868 + "node": ">= 10" 1869 + } 1870 + }, 1871 + "node_modules/@tailwindcss/oxide-darwin-x64": { 1872 + "version": "4.1.14", 1873 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.14.tgz", 1874 + "integrity": "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==", 1875 + "cpu": [ 1876 + "x64" 1877 + ], 1878 + "license": "MIT", 1879 + "optional": true, 1880 + "os": [ 1881 + "darwin" 1882 + ], 1883 + "engines": { 1884 + "node": ">= 10" 1885 + } 1886 + }, 1887 + "node_modules/@tailwindcss/oxide-freebsd-x64": { 1888 + "version": "4.1.14", 1889 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.14.tgz", 1890 + "integrity": "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==", 1891 + "cpu": [ 1892 + "x64" 1893 + ], 1894 + "license": "MIT", 1895 + "optional": true, 1896 + "os": [ 1897 + "freebsd" 1898 + ], 1899 + "engines": { 1900 + "node": ">= 10" 1901 + } 1902 + }, 1903 + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { 1904 + "version": "4.1.14", 1905 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.14.tgz", 1906 + "integrity": "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==", 1907 + "cpu": [ 1908 + "arm" 1909 + ], 1910 + "license": "MIT", 1911 + "optional": true, 1912 + "os": [ 1913 + "linux" 1914 + ], 1915 + "engines": { 1916 + "node": ">= 10" 1917 + } 1918 + }, 1919 + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { 1920 + "version": "4.1.14", 1921 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.14.tgz", 1922 + "integrity": "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==", 1923 + "cpu": [ 1924 + "arm64" 1925 + ], 1926 + "license": "MIT", 1927 + "optional": true, 1928 + "os": [ 1929 + "linux" 1930 + ], 1931 + "engines": { 1932 + "node": ">= 10" 1933 + } 1934 + }, 1935 + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { 1936 + "version": "4.1.14", 1937 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.14.tgz", 1938 + "integrity": "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==", 1939 + "cpu": [ 1940 + "arm64" 1941 + ], 1942 + "license": "MIT", 1943 + "optional": true, 1944 + "os": [ 1945 + "linux" 1946 + ], 1947 + "engines": { 1948 + "node": ">= 10" 1949 + } 1950 + }, 1951 + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { 1952 + "version": "4.1.14", 1953 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.14.tgz", 1954 + "integrity": "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==", 1955 + "cpu": [ 1956 + "x64" 1957 + ], 1958 + "license": "MIT", 1959 + "optional": true, 1960 + "os": [ 1961 + "linux" 1962 + ], 1963 + "engines": { 1964 + "node": ">= 10" 1965 + } 1966 + }, 1967 + "node_modules/@tailwindcss/oxide-linux-x64-musl": { 1968 + "version": "4.1.14", 1969 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.14.tgz", 1970 + "integrity": "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==", 1971 + "cpu": [ 1972 + "x64" 1973 + ], 1974 + "license": "MIT", 1975 + "optional": true, 1976 + "os": [ 1977 + "linux" 1978 + ], 1979 + "engines": { 1980 + "node": ">= 10" 1981 + } 1982 + }, 1983 + "node_modules/@tailwindcss/oxide-wasm32-wasi": { 1984 + "version": "4.1.14", 1985 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.14.tgz", 1986 + "integrity": "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==", 1987 + "bundleDependencies": [ 1988 + "@napi-rs/wasm-runtime", 1989 + "@emnapi/core", 1990 + "@emnapi/runtime", 1991 + "@tybys/wasm-util", 1992 + "@emnapi/wasi-threads", 1993 + "tslib" 1994 + ], 1995 + "cpu": [ 1996 + "wasm32" 1997 + ], 1998 + "license": "MIT", 1999 + "optional": true, 2000 + "dependencies": { 2001 + "@emnapi/core": "^1.5.0", 2002 + "@emnapi/runtime": "^1.5.0", 2003 + "@emnapi/wasi-threads": "^1.1.0", 2004 + "@napi-rs/wasm-runtime": "^1.0.5", 2005 + "@tybys/wasm-util": "^0.10.1", 2006 + "tslib": "^2.4.0" 2007 + }, 2008 + "engines": { 2009 + "node": ">=14.0.0" 2010 + } 2011 + }, 2012 + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { 2013 + "version": "4.1.14", 2014 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.14.tgz", 2015 + "integrity": "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==", 2016 + "cpu": [ 2017 + "arm64" 2018 + ], 2019 + "license": "MIT", 2020 + "optional": true, 2021 + "os": [ 2022 + "win32" 2023 + ], 2024 + "engines": { 2025 + "node": ">= 10" 2026 + } 2027 + }, 2028 + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { 2029 + "version": "4.1.14", 2030 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz", 2031 + "integrity": "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==", 2032 + "cpu": [ 2033 + "x64" 2034 + ], 2035 + "license": "MIT", 2036 + "optional": true, 2037 + "os": [ 2038 + "win32" 2039 + ], 2040 + "engines": { 2041 + "node": ">= 10" 2042 + } 2043 + }, 2044 + "node_modules/@tailwindcss/vite": { 2045 + "version": "4.1.14", 2046 + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.14.tgz", 2047 + "integrity": "sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==", 2048 + "license": "MIT", 2049 + "dependencies": { 2050 + "@tailwindcss/node": "4.1.14", 2051 + "@tailwindcss/oxide": "4.1.14", 2052 + "tailwindcss": "4.1.14" 2053 + }, 2054 + "peerDependencies": { 2055 + "vite": "^5.2.0 || ^6 || ^7" 2056 + } 2057 + }, 2058 + "node_modules/@tanstack/history": { 2059 + "version": "1.133.3", 2060 + "resolved": "https://registry.npmjs.org/@tanstack/history/-/history-1.133.3.tgz", 2061 + "integrity": "sha512-zFQnGdX0S4g5xRuS+95iiEXM+qlGvYG7ksmOKx7LaMv60lDWa0imR8/24WwXXvBWJT1KnwVdZcjvhCwz9IiJCw==", 2062 + "dev": true, 2063 + "license": "MIT", 2064 + "engines": { 2065 + "node": ">=12" 2066 + }, 2067 + "funding": { 2068 + "type": "github", 2069 + "url": "https://github.com/sponsors/tannerlinsley" 2070 + } 2071 + }, 2072 + "node_modules/@tanstack/react-router": { 2073 + "version": "1.133.15", 2074 + "resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.133.15.tgz", 2075 + "integrity": "sha512-3gQitqq/5lL//KSv9Ro34Fw7xak2ZQcPbR7x6bu5X4W0v97xTE7+bMbBS5UAg9zXTq0FNyB124GabgyBgeQ0NA==", 2076 + "dev": true, 2077 + "license": "MIT", 2078 + "dependencies": { 2079 + "@tanstack/history": "1.133.3", 2080 + "@tanstack/react-store": "^0.7.0", 2081 + "@tanstack/router-core": "1.133.15", 2082 + "isbot": "^5.1.22", 2083 + "tiny-invariant": "^1.3.3", 2084 + "tiny-warning": "^1.0.3" 2085 + }, 2086 + "engines": { 2087 + "node": ">=12" 2088 + }, 2089 + "funding": { 2090 + "type": "github", 2091 + "url": "https://github.com/sponsors/tannerlinsley" 2092 + }, 2093 + "peerDependencies": { 2094 + "react": ">=18.0.0 || >=19.0.0", 2095 + "react-dom": ">=18.0.0 || >=19.0.0" 2096 + } 2097 + }, 2098 + "node_modules/@tanstack/react-store": { 2099 + "version": "0.7.7", 2100 + "resolved": "https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz", 2101 + "integrity": "sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==", 2102 + "dev": true, 2103 + "license": "MIT", 2104 + "dependencies": { 2105 + "@tanstack/store": "0.7.7", 2106 + "use-sync-external-store": "^1.5.0" 2107 + }, 2108 + "funding": { 2109 + "type": "github", 2110 + "url": "https://github.com/sponsors/tannerlinsley" 2111 + }, 2112 + "peerDependencies": { 2113 + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", 2114 + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" 2115 + } 2116 + }, 2117 + "node_modules/@tanstack/router-core": { 2118 + "version": "1.133.15", 2119 + "resolved": "https://registry.npmjs.org/@tanstack/router-core/-/router-core-1.133.15.tgz", 2120 + "integrity": "sha512-ZWAmoFcgi27Ojv2FH3Dq3D6Vt73LswdTnA1tyHShNWQf7wOMH/VKKB9JxiXJqpLTK4NJqpnUp/x0/3nvmdrIqg==", 2121 + "dev": true, 2122 + "license": "MIT", 2123 + "dependencies": { 2124 + "@tanstack/history": "1.133.3", 2125 + "@tanstack/store": "^0.7.0", 2126 + "cookie-es": "^2.0.0", 2127 + "seroval": "^1.3.2", 2128 + "seroval-plugins": "^1.3.2", 2129 + "tiny-invariant": "^1.3.3", 2130 + "tiny-warning": "^1.0.3" 2131 + }, 2132 + "engines": { 2133 + "node": ">=12" 2134 + }, 2135 + "funding": { 2136 + "type": "github", 2137 + "url": "https://github.com/sponsors/tannerlinsley" 2138 + } 2139 + }, 2140 + "node_modules/@tanstack/router-generator": { 2141 + "version": "1.133.15", 2142 + "resolved": "https://registry.npmjs.org/@tanstack/router-generator/-/router-generator-1.133.15.tgz", 2143 + "integrity": "sha512-TXI07UzV5t1j1LeJ2eOErV9TxvzBRx2oSCEmkVaWMXaGKuQL7I4VB9e9w15ylHnvCO2Z/4DgIhUVF6h9/ZS3Mw==", 2144 + "dev": true, 2145 + "license": "MIT", 2146 + "dependencies": { 2147 + "@tanstack/router-core": "1.133.15", 2148 + "@tanstack/router-utils": "1.133.3", 2149 + "@tanstack/virtual-file-routes": "1.133.3", 2150 + "prettier": "^3.5.0", 2151 + "recast": "^0.23.11", 2152 + "source-map": "^0.7.4", 2153 + "tsx": "^4.19.2", 2154 + "zod": "^3.24.2" 2155 + }, 2156 + "engines": { 2157 + "node": ">=12" 2158 + }, 2159 + "funding": { 2160 + "type": "github", 2161 + "url": "https://github.com/sponsors/tannerlinsley" 2162 + } 2163 + }, 2164 + "node_modules/@tanstack/router-plugin": { 2165 + "version": "1.133.15", 2166 + "resolved": "https://registry.npmjs.org/@tanstack/router-plugin/-/router-plugin-1.133.15.tgz", 2167 + "integrity": "sha512-c3m7Pfuth/TXiRol0OpTw+cJyE7RxJpiMXDLooCiZgRDu2VhyXaanPLuuti9vyZiVdSrVZTQ7tJBFABymWbX5w==", 2168 + "dev": true, 2169 + "license": "MIT", 2170 + "dependencies": { 2171 + "@babel/core": "^7.27.7", 2172 + "@babel/plugin-syntax-jsx": "^7.27.1", 2173 + "@babel/plugin-syntax-typescript": "^7.27.1", 2174 + "@babel/template": "^7.27.2", 2175 + "@babel/traverse": "^7.27.7", 2176 + "@babel/types": "^7.27.7", 2177 + "@tanstack/router-core": "1.133.15", 2178 + "@tanstack/router-generator": "1.133.15", 2179 + "@tanstack/router-utils": "1.133.3", 2180 + "@tanstack/virtual-file-routes": "1.133.3", 2181 + "babel-dead-code-elimination": "^1.0.10", 2182 + "chokidar": "^3.6.0", 2183 + "unplugin": "^2.1.2", 2184 + "zod": "^3.24.2" 2185 + }, 2186 + "engines": { 2187 + "node": ">=12" 2188 + }, 2189 + "funding": { 2190 + "type": "github", 2191 + "url": "https://github.com/sponsors/tannerlinsley" 2192 + }, 2193 + "peerDependencies": { 2194 + "@rsbuild/core": ">=1.0.2", 2195 + "@tanstack/react-router": "^1.133.15", 2196 + "vite": ">=5.0.0 || >=6.0.0 || >=7.0.0", 2197 + "vite-plugin-solid": "^2.11.8", 2198 + "webpack": ">=5.92.0" 2199 + }, 2200 + "peerDependenciesMeta": { 2201 + "@rsbuild/core": { 2202 + "optional": true 2203 + }, 2204 + "@tanstack/react-router": { 2205 + "optional": true 2206 + }, 2207 + "vite": { 2208 + "optional": true 2209 + }, 2210 + "vite-plugin-solid": { 2211 + "optional": true 2212 + }, 2213 + "webpack": { 2214 + "optional": true 2215 + } 2216 + } 2217 + }, 2218 + "node_modules/@tanstack/router-utils": { 2219 + "version": "1.133.3", 2220 + "resolved": "https://registry.npmjs.org/@tanstack/router-utils/-/router-utils-1.133.3.tgz", 2221 + "integrity": "sha512-miPFlt0aG6ID5VDolYuRXgLS7cofvbZGMvHwf2Wmyxjo6GLp/kxxpkQrfM4T1I5cwjwYZZAQmdUKbVHwFZz9sQ==", 2222 + "dev": true, 2223 + "license": "MIT", 2224 + "dependencies": { 2225 + "@babel/core": "^7.27.4", 2226 + "@babel/generator": "^7.27.5", 2227 + "@babel/parser": "^7.27.5", 2228 + "@babel/preset-typescript": "^7.27.1", 2229 + "ansis": "^4.1.0", 2230 + "diff": "^8.0.2", 2231 + "pathe": "^2.0.3", 2232 + "tinyglobby": "^0.2.15" 2233 + }, 2234 + "engines": { 2235 + "node": ">=12" 2236 + }, 2237 + "funding": { 2238 + "type": "github", 2239 + "url": "https://github.com/sponsors/tannerlinsley" 2240 + } 2241 + }, 2242 + "node_modules/@tanstack/store": { 2243 + "version": "0.7.7", 2244 + "resolved": "https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz", 2245 + "integrity": "sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==", 2246 + "dev": true, 2247 + "license": "MIT", 2248 + "funding": { 2249 + "type": "github", 2250 + "url": "https://github.com/sponsors/tannerlinsley" 2251 + } 2252 + }, 2253 + "node_modules/@tanstack/virtual-file-routes": { 2254 + "version": "1.133.3", 2255 + "resolved": "https://registry.npmjs.org/@tanstack/virtual-file-routes/-/virtual-file-routes-1.133.3.tgz", 2256 + "integrity": "sha512-6d2AP9hAjEi8mcIew2RkxBX+wClH1xedhfaYhs8fUiX+V2Cedk7RBD9E9ww2z6BGUYD8Es4fS0OIrzXZWHKGhw==", 2257 + "dev": true, 2258 + "license": "MIT", 2259 + "engines": { 2260 + "node": ">=12" 2261 + }, 2262 + "funding": { 2263 + "type": "github", 2264 + "url": "https://github.com/sponsors/tannerlinsley" 2265 + } 2266 + }, 2267 + "node_modules/@types/babel__core": { 2268 + "version": "7.20.5", 2269 + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 2270 + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 2271 + "dev": true, 2272 + "license": "MIT", 2273 + "dependencies": { 2274 + "@babel/parser": "^7.20.7", 2275 + "@babel/types": "^7.20.7", 2276 + "@types/babel__generator": "*", 2277 + "@types/babel__template": "*", 2278 + "@types/babel__traverse": "*" 2279 + } 2280 + }, 2281 + "node_modules/@types/babel__generator": { 2282 + "version": "7.27.0", 2283 + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", 2284 + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", 2285 + "dev": true, 2286 + "license": "MIT", 2287 + "dependencies": { 2288 + "@babel/types": "^7.0.0" 2289 + } 2290 + }, 2291 + "node_modules/@types/babel__template": { 2292 + "version": "7.4.4", 2293 + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 2294 + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 2295 + "dev": true, 2296 + "license": "MIT", 2297 + "dependencies": { 2298 + "@babel/parser": "^7.1.0", 2299 + "@babel/types": "^7.0.0" 2300 + } 2301 + }, 2302 + "node_modules/@types/babel__traverse": { 2303 + "version": "7.28.0", 2304 + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", 2305 + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", 2306 + "dev": true, 2307 + "license": "MIT", 2308 + "dependencies": { 2309 + "@babel/types": "^7.28.2" 2310 + } 2311 + }, 2312 + "node_modules/@types/estree": { 2313 + "version": "1.0.8", 2314 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 2315 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 2316 + "license": "MIT" 2317 + }, 2318 + "node_modules/@types/json-schema": { 2319 + "version": "7.0.15", 2320 + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 2321 + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 2322 + "dev": true, 2323 + "license": "MIT" 2324 + }, 2325 + "node_modules/@types/node": { 2326 + "version": "24.8.1", 2327 + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.8.1.tgz", 2328 + "integrity": "sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==", 2329 + "devOptional": true, 2330 + "license": "MIT", 2331 + "dependencies": { 2332 + "undici-types": "~7.14.0" 2333 + } 2334 + }, 2335 + "node_modules/@types/react": { 2336 + "version": "19.2.2", 2337 + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", 2338 + "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", 2339 + "dev": true, 2340 + "license": "MIT", 2341 + "dependencies": { 2342 + "csstype": "^3.0.2" 2343 + } 2344 + }, 2345 + "node_modules/@types/react-dom": { 2346 + "version": "19.2.2", 2347 + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", 2348 + "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", 2349 + "dev": true, 2350 + "license": "MIT", 2351 + "peerDependencies": { 2352 + "@types/react": "^19.2.0" 2353 + } 2354 + }, 2355 + "node_modules/@typescript-eslint/eslint-plugin": { 2356 + "version": "8.46.1", 2357 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.1.tgz", 2358 + "integrity": "sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==", 2359 + "dev": true, 2360 + "license": "MIT", 2361 + "dependencies": { 2362 + "@eslint-community/regexpp": "^4.10.0", 2363 + "@typescript-eslint/scope-manager": "8.46.1", 2364 + "@typescript-eslint/type-utils": "8.46.1", 2365 + "@typescript-eslint/utils": "8.46.1", 2366 + "@typescript-eslint/visitor-keys": "8.46.1", 2367 + "graphemer": "^1.4.0", 2368 + "ignore": "^7.0.0", 2369 + "natural-compare": "^1.4.0", 2370 + "ts-api-utils": "^2.1.0" 2371 + }, 2372 + "engines": { 2373 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2374 + }, 2375 + "funding": { 2376 + "type": "opencollective", 2377 + "url": "https://opencollective.com/typescript-eslint" 2378 + }, 2379 + "peerDependencies": { 2380 + "@typescript-eslint/parser": "^8.46.1", 2381 + "eslint": "^8.57.0 || ^9.0.0", 2382 + "typescript": ">=4.8.4 <6.0.0" 2383 + } 2384 + }, 2385 + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { 2386 + "version": "7.0.5", 2387 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", 2388 + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", 2389 + "dev": true, 2390 + "license": "MIT", 2391 + "engines": { 2392 + "node": ">= 4" 2393 + } 2394 + }, 2395 + "node_modules/@typescript-eslint/parser": { 2396 + "version": "8.46.1", 2397 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.1.tgz", 2398 + "integrity": "sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==", 2399 + "dev": true, 2400 + "license": "MIT", 2401 + "dependencies": { 2402 + "@typescript-eslint/scope-manager": "8.46.1", 2403 + "@typescript-eslint/types": "8.46.1", 2404 + "@typescript-eslint/typescript-estree": "8.46.1", 2405 + "@typescript-eslint/visitor-keys": "8.46.1", 2406 + "debug": "^4.3.4" 2407 + }, 2408 + "engines": { 2409 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2410 + }, 2411 + "funding": { 2412 + "type": "opencollective", 2413 + "url": "https://opencollective.com/typescript-eslint" 2414 + }, 2415 + "peerDependencies": { 2416 + "eslint": "^8.57.0 || ^9.0.0", 2417 + "typescript": ">=4.8.4 <6.0.0" 2418 + } 2419 + }, 2420 + "node_modules/@typescript-eslint/project-service": { 2421 + "version": "8.46.1", 2422 + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.1.tgz", 2423 + "integrity": "sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==", 2424 + "dev": true, 2425 + "license": "MIT", 2426 + "dependencies": { 2427 + "@typescript-eslint/tsconfig-utils": "^8.46.1", 2428 + "@typescript-eslint/types": "^8.46.1", 2429 + "debug": "^4.3.4" 2430 + }, 2431 + "engines": { 2432 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2433 + }, 2434 + "funding": { 2435 + "type": "opencollective", 2436 + "url": "https://opencollective.com/typescript-eslint" 2437 + }, 2438 + "peerDependencies": { 2439 + "typescript": ">=4.8.4 <6.0.0" 2440 + } 2441 + }, 2442 + "node_modules/@typescript-eslint/scope-manager": { 2443 + "version": "8.46.1", 2444 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.1.tgz", 2445 + "integrity": "sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==", 2446 + "dev": true, 2447 + "license": "MIT", 2448 + "dependencies": { 2449 + "@typescript-eslint/types": "8.46.1", 2450 + "@typescript-eslint/visitor-keys": "8.46.1" 2451 + }, 2452 + "engines": { 2453 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2454 + }, 2455 + "funding": { 2456 + "type": "opencollective", 2457 + "url": "https://opencollective.com/typescript-eslint" 2458 + } 2459 + }, 2460 + "node_modules/@typescript-eslint/tsconfig-utils": { 2461 + "version": "8.46.1", 2462 + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.1.tgz", 2463 + "integrity": "sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==", 2464 + "dev": true, 2465 + "license": "MIT", 2466 + "engines": { 2467 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2468 + }, 2469 + "funding": { 2470 + "type": "opencollective", 2471 + "url": "https://opencollective.com/typescript-eslint" 2472 + }, 2473 + "peerDependencies": { 2474 + "typescript": ">=4.8.4 <6.0.0" 2475 + } 2476 + }, 2477 + "node_modules/@typescript-eslint/type-utils": { 2478 + "version": "8.46.1", 2479 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.1.tgz", 2480 + "integrity": "sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==", 2481 + "dev": true, 2482 + "license": "MIT", 2483 + "dependencies": { 2484 + "@typescript-eslint/types": "8.46.1", 2485 + "@typescript-eslint/typescript-estree": "8.46.1", 2486 + "@typescript-eslint/utils": "8.46.1", 2487 + "debug": "^4.3.4", 2488 + "ts-api-utils": "^2.1.0" 2489 + }, 2490 + "engines": { 2491 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2492 + }, 2493 + "funding": { 2494 + "type": "opencollective", 2495 + "url": "https://opencollective.com/typescript-eslint" 2496 + }, 2497 + "peerDependencies": { 2498 + "eslint": "^8.57.0 || ^9.0.0", 2499 + "typescript": ">=4.8.4 <6.0.0" 2500 + } 2501 + }, 2502 + "node_modules/@typescript-eslint/types": { 2503 + "version": "8.46.1", 2504 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.1.tgz", 2505 + "integrity": "sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==", 2506 + "dev": true, 2507 + "license": "MIT", 2508 + "engines": { 2509 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2510 + }, 2511 + "funding": { 2512 + "type": "opencollective", 2513 + "url": "https://opencollective.com/typescript-eslint" 2514 + } 2515 + }, 2516 + "node_modules/@typescript-eslint/typescript-estree": { 2517 + "version": "8.46.1", 2518 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.1.tgz", 2519 + "integrity": "sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==", 2520 + "dev": true, 2521 + "license": "MIT", 2522 + "dependencies": { 2523 + "@typescript-eslint/project-service": "8.46.1", 2524 + "@typescript-eslint/tsconfig-utils": "8.46.1", 2525 + "@typescript-eslint/types": "8.46.1", 2526 + "@typescript-eslint/visitor-keys": "8.46.1", 2527 + "debug": "^4.3.4", 2528 + "fast-glob": "^3.3.2", 2529 + "is-glob": "^4.0.3", 2530 + "minimatch": "^9.0.4", 2531 + "semver": "^7.6.0", 2532 + "ts-api-utils": "^2.1.0" 2533 + }, 2534 + "engines": { 2535 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2536 + }, 2537 + "funding": { 2538 + "type": "opencollective", 2539 + "url": "https://opencollective.com/typescript-eslint" 2540 + }, 2541 + "peerDependencies": { 2542 + "typescript": ">=4.8.4 <6.0.0" 2543 + } 2544 + }, 2545 + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 2546 + "version": "2.0.2", 2547 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", 2548 + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", 2549 + "dev": true, 2550 + "license": "MIT", 2551 + "dependencies": { 2552 + "balanced-match": "^1.0.0" 2553 + } 2554 + }, 2555 + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 2556 + "version": "9.0.5", 2557 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 2558 + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 2559 + "dev": true, 2560 + "license": "ISC", 2561 + "dependencies": { 2562 + "brace-expansion": "^2.0.1" 2563 + }, 2564 + "engines": { 2565 + "node": ">=16 || 14 >=14.17" 2566 + }, 2567 + "funding": { 2568 + "url": "https://github.com/sponsors/isaacs" 2569 + } 2570 + }, 2571 + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { 2572 + "version": "7.7.3", 2573 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", 2574 + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", 2575 + "dev": true, 2576 + "license": "ISC", 2577 + "bin": { 2578 + "semver": "bin/semver.js" 2579 + }, 2580 + "engines": { 2581 + "node": ">=10" 2582 + } 2583 + }, 2584 + "node_modules/@typescript-eslint/utils": { 2585 + "version": "8.46.1", 2586 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.1.tgz", 2587 + "integrity": "sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==", 2588 + "dev": true, 2589 + "license": "MIT", 2590 + "dependencies": { 2591 + "@eslint-community/eslint-utils": "^4.7.0", 2592 + "@typescript-eslint/scope-manager": "8.46.1", 2593 + "@typescript-eslint/types": "8.46.1", 2594 + "@typescript-eslint/typescript-estree": "8.46.1" 2595 + }, 2596 + "engines": { 2597 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2598 + }, 2599 + "funding": { 2600 + "type": "opencollective", 2601 + "url": "https://opencollective.com/typescript-eslint" 2602 + }, 2603 + "peerDependencies": { 2604 + "eslint": "^8.57.0 || ^9.0.0", 2605 + "typescript": ">=4.8.4 <6.0.0" 2606 + } 2607 + }, 2608 + "node_modules/@typescript-eslint/visitor-keys": { 2609 + "version": "8.46.1", 2610 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.1.tgz", 2611 + "integrity": "sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==", 2612 + "dev": true, 2613 + "license": "MIT", 2614 + "dependencies": { 2615 + "@typescript-eslint/types": "8.46.1", 2616 + "eslint-visitor-keys": "^4.2.1" 2617 + }, 2618 + "engines": { 2619 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2620 + }, 2621 + "funding": { 2622 + "type": "opencollective", 2623 + "url": "https://opencollective.com/typescript-eslint" 2624 + } 2625 + }, 2626 + "node_modules/@vitejs/plugin-react": { 2627 + "version": "5.0.4", 2628 + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.4.tgz", 2629 + "integrity": "sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==", 2630 + "dev": true, 2631 + "license": "MIT", 2632 + "dependencies": { 2633 + "@babel/core": "^7.28.4", 2634 + "@babel/plugin-transform-react-jsx-self": "^7.27.1", 2635 + "@babel/plugin-transform-react-jsx-source": "^7.27.1", 2636 + "@rolldown/pluginutils": "1.0.0-beta.38", 2637 + "@types/babel__core": "^7.20.5", 2638 + "react-refresh": "^0.17.0" 2639 + }, 2640 + "engines": { 2641 + "node": "^20.19.0 || >=22.12.0" 2642 + }, 2643 + "peerDependencies": { 2644 + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" 2645 + } 2646 + }, 2647 + "node_modules/acorn": { 2648 + "version": "8.15.0", 2649 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 2650 + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 2651 + "dev": true, 2652 + "license": "MIT", 2653 + "bin": { 2654 + "acorn": "bin/acorn" 2655 + }, 2656 + "engines": { 2657 + "node": ">=0.4.0" 2658 + } 2659 + }, 2660 + "node_modules/acorn-jsx": { 2661 + "version": "5.3.2", 2662 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 2663 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 2664 + "dev": true, 2665 + "license": "MIT", 2666 + "peerDependencies": { 2667 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 2668 + } 2669 + }, 2670 + "node_modules/ajv": { 2671 + "version": "6.12.6", 2672 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2673 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2674 + "dev": true, 2675 + "license": "MIT", 2676 + "dependencies": { 2677 + "fast-deep-equal": "^3.1.1", 2678 + "fast-json-stable-stringify": "^2.0.0", 2679 + "json-schema-traverse": "^0.4.1", 2680 + "uri-js": "^4.2.2" 2681 + }, 2682 + "funding": { 2683 + "type": "github", 2684 + "url": "https://github.com/sponsors/epoberezkin" 2685 + } 2686 + }, 2687 + "node_modules/ansi-styles": { 2688 + "version": "4.3.0", 2689 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2690 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2691 + "dev": true, 2692 + "license": "MIT", 2693 + "dependencies": { 2694 + "color-convert": "^2.0.1" 2695 + }, 2696 + "engines": { 2697 + "node": ">=8" 2698 + }, 2699 + "funding": { 2700 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2701 + } 2702 + }, 2703 + "node_modules/ansis": { 2704 + "version": "4.2.0", 2705 + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", 2706 + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", 2707 + "dev": true, 2708 + "license": "ISC", 2709 + "engines": { 2710 + "node": ">=14" 2711 + } 2712 + }, 2713 + "node_modules/anymatch": { 2714 + "version": "3.1.3", 2715 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 2716 + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 2717 + "dev": true, 2718 + "license": "ISC", 2719 + "dependencies": { 2720 + "normalize-path": "^3.0.0", 2721 + "picomatch": "^2.0.4" 2722 + }, 2723 + "engines": { 2724 + "node": ">= 8" 2725 + } 2726 + }, 2727 + "node_modules/argparse": { 2728 + "version": "2.0.1", 2729 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2730 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2731 + "dev": true, 2732 + "license": "Python-2.0" 2733 + }, 2734 + "node_modules/ast-types": { 2735 + "version": "0.16.1", 2736 + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", 2737 + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", 2738 + "dev": true, 2739 + "license": "MIT", 2740 + "dependencies": { 2741 + "tslib": "^2.0.1" 2742 + }, 2743 + "engines": { 2744 + "node": ">=4" 2745 + } 2746 + }, 2747 + "node_modules/await-lock": { 2748 + "version": "2.2.2", 2749 + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", 2750 + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", 2751 + "license": "MIT" 2752 + }, 2753 + "node_modules/babel-dead-code-elimination": { 2754 + "version": "1.0.10", 2755 + "resolved": "https://registry.npmjs.org/babel-dead-code-elimination/-/babel-dead-code-elimination-1.0.10.tgz", 2756 + "integrity": "sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==", 2757 + "dev": true, 2758 + "license": "MIT", 2759 + "dependencies": { 2760 + "@babel/core": "^7.23.7", 2761 + "@babel/parser": "^7.23.6", 2762 + "@babel/traverse": "^7.23.7", 2763 + "@babel/types": "^7.23.6" 2764 + } 2765 + }, 2766 + "node_modules/babel-plugin-react-compiler": { 2767 + "version": "19.1.0-rc.3", 2768 + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-19.1.0-rc.3.tgz", 2769 + "integrity": "sha512-mjRn69WuTz4adL0bXGx8Rsyk1086zFJeKmes6aK0xPuK3aaXmDJdLHqwKKMrpm6KAI1MCoUK72d2VeqQbu8YIA==", 2770 + "dev": true, 2771 + "license": "MIT", 2772 + "dependencies": { 2773 + "@babel/types": "^7.26.0" 2774 + } 2775 + }, 2776 + "node_modules/balanced-match": { 2777 + "version": "1.0.2", 2778 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2779 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2780 + "dev": true, 2781 + "license": "MIT" 2782 + }, 2783 + "node_modules/baseline-browser-mapping": { 2784 + "version": "2.8.18", 2785 + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.18.tgz", 2786 + "integrity": "sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==", 2787 + "dev": true, 2788 + "license": "Apache-2.0", 2789 + "bin": { 2790 + "baseline-browser-mapping": "dist/cli.js" 2791 + } 2792 + }, 2793 + "node_modules/binary-extensions": { 2794 + "version": "2.3.0", 2795 + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 2796 + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 2797 + "dev": true, 2798 + "license": "MIT", 2799 + "engines": { 2800 + "node": ">=8" 2801 + }, 2802 + "funding": { 2803 + "url": "https://github.com/sponsors/sindresorhus" 2804 + } 2805 + }, 2806 + "node_modules/brace-expansion": { 2807 + "version": "1.1.12", 2808 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", 2809 + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", 2810 + "dev": true, 2811 + "license": "MIT", 2812 + "dependencies": { 2813 + "balanced-match": "^1.0.0", 2814 + "concat-map": "0.0.1" 2815 + } 2816 + }, 2817 + "node_modules/braces": { 2818 + "version": "3.0.3", 2819 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 2820 + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 2821 + "dev": true, 2822 + "license": "MIT", 2823 + "dependencies": { 2824 + "fill-range": "^7.1.1" 2825 + }, 2826 + "engines": { 2827 + "node": ">=8" 2828 + } 2829 + }, 2830 + "node_modules/browserslist": { 2831 + "version": "4.26.3", 2832 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", 2833 + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", 2834 + "dev": true, 2835 + "funding": [ 2836 + { 2837 + "type": "opencollective", 2838 + "url": "https://opencollective.com/browserslist" 2839 + }, 2840 + { 2841 + "type": "tidelift", 2842 + "url": "https://tidelift.com/funding/github/npm/browserslist" 2843 + }, 2844 + { 2845 + "type": "github", 2846 + "url": "https://github.com/sponsors/ai" 2847 + } 2848 + ], 2849 + "license": "MIT", 2850 + "dependencies": { 2851 + "baseline-browser-mapping": "^2.8.9", 2852 + "caniuse-lite": "^1.0.30001746", 2853 + "electron-to-chromium": "^1.5.227", 2854 + "node-releases": "^2.0.21", 2855 + "update-browserslist-db": "^1.1.3" 2856 + }, 2857 + "bin": { 2858 + "browserslist": "cli.js" 2859 + }, 2860 + "engines": { 2861 + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 2862 + } 2863 + }, 2864 + "node_modules/callsites": { 2865 + "version": "3.1.0", 2866 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2867 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2868 + "dev": true, 2869 + "license": "MIT", 2870 + "engines": { 2871 + "node": ">=6" 2872 + } 2873 + }, 2874 + "node_modules/caniuse-lite": { 2875 + "version": "1.0.30001751", 2876 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", 2877 + "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", 2878 + "dev": true, 2879 + "funding": [ 2880 + { 2881 + "type": "opencollective", 2882 + "url": "https://opencollective.com/browserslist" 2883 + }, 2884 + { 2885 + "type": "tidelift", 2886 + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 2887 + }, 2888 + { 2889 + "type": "github", 2890 + "url": "https://github.com/sponsors/ai" 2891 + } 2892 + ], 2893 + "license": "CC-BY-4.0" 2894 + }, 2895 + "node_modules/chalk": { 2896 + "version": "4.1.2", 2897 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2898 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2899 + "dev": true, 2900 + "license": "MIT", 2901 + "dependencies": { 2902 + "ansi-styles": "^4.1.0", 2903 + "supports-color": "^7.1.0" 2904 + }, 2905 + "engines": { 2906 + "node": ">=10" 2907 + }, 2908 + "funding": { 2909 + "url": "https://github.com/chalk/chalk?sponsor=1" 2910 + } 2911 + }, 2912 + "node_modules/chokidar": { 2913 + "version": "3.6.0", 2914 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 2915 + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 2916 + "dev": true, 2917 + "license": "MIT", 2918 + "dependencies": { 2919 + "anymatch": "~3.1.2", 2920 + "braces": "~3.0.2", 2921 + "glob-parent": "~5.1.2", 2922 + "is-binary-path": "~2.1.0", 2923 + "is-glob": "~4.0.1", 2924 + "normalize-path": "~3.0.0", 2925 + "readdirp": "~3.6.0" 2926 + }, 2927 + "engines": { 2928 + "node": ">= 8.10.0" 2929 + }, 2930 + "funding": { 2931 + "url": "https://paulmillr.com/funding/" 2932 + }, 2933 + "optionalDependencies": { 2934 + "fsevents": "~2.3.2" 2935 + } 2936 + }, 2937 + "node_modules/chokidar/node_modules/glob-parent": { 2938 + "version": "5.1.2", 2939 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2940 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2941 + "dev": true, 2942 + "license": "ISC", 2943 + "dependencies": { 2944 + "is-glob": "^4.0.1" 2945 + }, 2946 + "engines": { 2947 + "node": ">= 6" 2948 + } 2949 + }, 2950 + "node_modules/chownr": { 2951 + "version": "3.0.0", 2952 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", 2953 + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", 2954 + "license": "BlueOak-1.0.0", 2955 + "engines": { 2956 + "node": ">=18" 2957 + } 2958 + }, 2959 + "node_modules/color-convert": { 2960 + "version": "2.0.1", 2961 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2962 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2963 + "dev": true, 2964 + "license": "MIT", 2965 + "dependencies": { 2966 + "color-name": "~1.1.4" 2967 + }, 2968 + "engines": { 2969 + "node": ">=7.0.0" 2970 + } 2971 + }, 2972 + "node_modules/color-name": { 2973 + "version": "1.1.4", 2974 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2975 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2976 + "dev": true, 2977 + "license": "MIT" 2978 + }, 2979 + "node_modules/concat-map": { 2980 + "version": "0.0.1", 2981 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2982 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2983 + "dev": true, 2984 + "license": "MIT" 2985 + }, 2986 + "node_modules/confbox": { 2987 + "version": "0.2.2", 2988 + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", 2989 + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", 2990 + "dev": true, 2991 + "license": "MIT" 2992 + }, 2993 + "node_modules/convert-source-map": { 2994 + "version": "2.0.0", 2995 + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 2996 + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 2997 + "dev": true, 2998 + "license": "MIT" 2999 + }, 3000 + "node_modules/cookie-es": { 3001 + "version": "2.0.0", 3002 + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.0.tgz", 3003 + "integrity": "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==", 3004 + "dev": true, 3005 + "license": "MIT" 3006 + }, 3007 + "node_modules/core-js": { 3008 + "version": "3.46.0", 3009 + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", 3010 + "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", 3011 + "hasInstallScript": true, 3012 + "license": "MIT", 3013 + "funding": { 3014 + "type": "opencollective", 3015 + "url": "https://opencollective.com/core-js" 3016 + } 3017 + }, 3018 + "node_modules/cross-spawn": { 3019 + "version": "7.0.6", 3020 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 3021 + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 3022 + "dev": true, 3023 + "license": "MIT", 3024 + "dependencies": { 3025 + "path-key": "^3.1.0", 3026 + "shebang-command": "^2.0.0", 3027 + "which": "^2.0.1" 3028 + }, 3029 + "engines": { 3030 + "node": ">= 8" 3031 + } 3032 + }, 3033 + "node_modules/csstype": { 3034 + "version": "3.1.3", 3035 + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 3036 + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 3037 + "dev": true, 3038 + "license": "MIT" 3039 + }, 3040 + "node_modules/debug": { 3041 + "version": "4.4.3", 3042 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", 3043 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 3044 + "dev": true, 3045 + "license": "MIT", 3046 + "dependencies": { 3047 + "ms": "^2.1.3" 3048 + }, 3049 + "engines": { 3050 + "node": ">=6.0" 3051 + }, 3052 + "peerDependenciesMeta": { 3053 + "supports-color": { 3054 + "optional": true 3055 + } 3056 + } 3057 + }, 3058 + "node_modules/deep-is": { 3059 + "version": "0.1.4", 3060 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 3061 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 3062 + "dev": true, 3063 + "license": "MIT" 3064 + }, 3065 + "node_modules/detect-libc": { 3066 + "version": "2.1.2", 3067 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", 3068 + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", 3069 + "license": "Apache-2.0", 3070 + "engines": { 3071 + "node": ">=8" 3072 + } 3073 + }, 3074 + "node_modules/diff": { 3075 + "version": "8.0.2", 3076 + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", 3077 + "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", 3078 + "dev": true, 3079 + "license": "BSD-3-Clause", 3080 + "engines": { 3081 + "node": ">=0.3.1" 3082 + } 3083 + }, 3084 + "node_modules/electron-to-chromium": { 3085 + "version": "1.5.237", 3086 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz", 3087 + "integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==", 3088 + "dev": true, 3089 + "license": "ISC" 3090 + }, 3091 + "node_modules/enhanced-resolve": { 3092 + "version": "5.18.3", 3093 + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", 3094 + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", 3095 + "license": "MIT", 3096 + "dependencies": { 3097 + "graceful-fs": "^4.2.4", 3098 + "tapable": "^2.2.0" 3099 + }, 3100 + "engines": { 3101 + "node": ">=10.13.0" 3102 + } 3103 + }, 3104 + "node_modules/esbuild": { 3105 + "version": "0.25.11", 3106 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", 3107 + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", 3108 + "hasInstallScript": true, 3109 + "license": "MIT", 3110 + "bin": { 3111 + "esbuild": "bin/esbuild" 3112 + }, 3113 + "engines": { 3114 + "node": ">=18" 3115 + }, 3116 + "optionalDependencies": { 3117 + "@esbuild/aix-ppc64": "0.25.11", 3118 + "@esbuild/android-arm": "0.25.11", 3119 + "@esbuild/android-arm64": "0.25.11", 3120 + "@esbuild/android-x64": "0.25.11", 3121 + "@esbuild/darwin-arm64": "0.25.11", 3122 + "@esbuild/darwin-x64": "0.25.11", 3123 + "@esbuild/freebsd-arm64": "0.25.11", 3124 + "@esbuild/freebsd-x64": "0.25.11", 3125 + "@esbuild/linux-arm": "0.25.11", 3126 + "@esbuild/linux-arm64": "0.25.11", 3127 + "@esbuild/linux-ia32": "0.25.11", 3128 + "@esbuild/linux-loong64": "0.25.11", 3129 + "@esbuild/linux-mips64el": "0.25.11", 3130 + "@esbuild/linux-ppc64": "0.25.11", 3131 + "@esbuild/linux-riscv64": "0.25.11", 3132 + "@esbuild/linux-s390x": "0.25.11", 3133 + "@esbuild/linux-x64": "0.25.11", 3134 + "@esbuild/netbsd-arm64": "0.25.11", 3135 + "@esbuild/netbsd-x64": "0.25.11", 3136 + "@esbuild/openbsd-arm64": "0.25.11", 3137 + "@esbuild/openbsd-x64": "0.25.11", 3138 + "@esbuild/openharmony-arm64": "0.25.11", 3139 + "@esbuild/sunos-x64": "0.25.11", 3140 + "@esbuild/win32-arm64": "0.25.11", 3141 + "@esbuild/win32-ia32": "0.25.11", 3142 + "@esbuild/win32-x64": "0.25.11" 3143 + } 3144 + }, 3145 + "node_modules/escalade": { 3146 + "version": "3.2.0", 3147 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 3148 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 3149 + "dev": true, 3150 + "license": "MIT", 3151 + "engines": { 3152 + "node": ">=6" 3153 + } 3154 + }, 3155 + "node_modules/escape-string-regexp": { 3156 + "version": "4.0.0", 3157 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 3158 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 3159 + "dev": true, 3160 + "license": "MIT", 3161 + "engines": { 3162 + "node": ">=10" 3163 + }, 3164 + "funding": { 3165 + "url": "https://github.com/sponsors/sindresorhus" 3166 + } 3167 + }, 3168 + "node_modules/eslint": { 3169 + "version": "9.38.0", 3170 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", 3171 + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", 3172 + "dev": true, 3173 + "license": "MIT", 3174 + "dependencies": { 3175 + "@eslint-community/eslint-utils": "^4.8.0", 3176 + "@eslint-community/regexpp": "^4.12.1", 3177 + "@eslint/config-array": "^0.21.1", 3178 + "@eslint/config-helpers": "^0.4.1", 3179 + "@eslint/core": "^0.16.0", 3180 + "@eslint/eslintrc": "^3.3.1", 3181 + "@eslint/js": "9.38.0", 3182 + "@eslint/plugin-kit": "^0.4.0", 3183 + "@humanfs/node": "^0.16.6", 3184 + "@humanwhocodes/module-importer": "^1.0.1", 3185 + "@humanwhocodes/retry": "^0.4.2", 3186 + "@types/estree": "^1.0.6", 3187 + "ajv": "^6.12.4", 3188 + "chalk": "^4.0.0", 3189 + "cross-spawn": "^7.0.6", 3190 + "debug": "^4.3.2", 3191 + "escape-string-regexp": "^4.0.0", 3192 + "eslint-scope": "^8.4.0", 3193 + "eslint-visitor-keys": "^4.2.1", 3194 + "espree": "^10.4.0", 3195 + "esquery": "^1.5.0", 3196 + "esutils": "^2.0.2", 3197 + "fast-deep-equal": "^3.1.3", 3198 + "file-entry-cache": "^8.0.0", 3199 + "find-up": "^5.0.0", 3200 + "glob-parent": "^6.0.2", 3201 + "ignore": "^5.2.0", 3202 + "imurmurhash": "^0.1.4", 3203 + "is-glob": "^4.0.0", 3204 + "json-stable-stringify-without-jsonify": "^1.0.1", 3205 + "lodash.merge": "^4.6.2", 3206 + "minimatch": "^3.1.2", 3207 + "natural-compare": "^1.4.0", 3208 + "optionator": "^0.9.3" 3209 + }, 3210 + "bin": { 3211 + "eslint": "bin/eslint.js" 3212 + }, 3213 + "engines": { 3214 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3215 + }, 3216 + "funding": { 3217 + "url": "https://eslint.org/donate" 3218 + }, 3219 + "peerDependencies": { 3220 + "jiti": "*" 3221 + }, 3222 + "peerDependenciesMeta": { 3223 + "jiti": { 3224 + "optional": true 3225 + } 3226 + } 3227 + }, 3228 + "node_modules/eslint-plugin-react-hooks": { 3229 + "version": "5.2.0", 3230 + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", 3231 + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", 3232 + "dev": true, 3233 + "license": "MIT", 3234 + "engines": { 3235 + "node": ">=10" 3236 + }, 3237 + "peerDependencies": { 3238 + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" 3239 + } 3240 + }, 3241 + "node_modules/eslint-plugin-react-refresh": { 3242 + "version": "0.4.24", 3243 + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.24.tgz", 3244 + "integrity": "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==", 3245 + "dev": true, 3246 + "license": "MIT", 3247 + "peerDependencies": { 3248 + "eslint": ">=8.40" 3249 + } 3250 + }, 3251 + "node_modules/eslint-scope": { 3252 + "version": "8.4.0", 3253 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", 3254 + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", 3255 + "dev": true, 3256 + "license": "BSD-2-Clause", 3257 + "dependencies": { 3258 + "esrecurse": "^4.3.0", 3259 + "estraverse": "^5.2.0" 3260 + }, 3261 + "engines": { 3262 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3263 + }, 3264 + "funding": { 3265 + "url": "https://opencollective.com/eslint" 3266 + } 3267 + }, 3268 + "node_modules/eslint-visitor-keys": { 3269 + "version": "4.2.1", 3270 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", 3271 + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", 3272 + "dev": true, 3273 + "license": "Apache-2.0", 3274 + "engines": { 3275 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3276 + }, 3277 + "funding": { 3278 + "url": "https://opencollective.com/eslint" 3279 + } 3280 + }, 3281 + "node_modules/espree": { 3282 + "version": "10.4.0", 3283 + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", 3284 + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", 3285 + "dev": true, 3286 + "license": "BSD-2-Clause", 3287 + "dependencies": { 3288 + "acorn": "^8.15.0", 3289 + "acorn-jsx": "^5.3.2", 3290 + "eslint-visitor-keys": "^4.2.1" 3291 + }, 3292 + "engines": { 3293 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3294 + }, 3295 + "funding": { 3296 + "url": "https://opencollective.com/eslint" 3297 + } 3298 + }, 3299 + "node_modules/esprima": { 3300 + "version": "4.0.1", 3301 + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 3302 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 3303 + "dev": true, 3304 + "license": "BSD-2-Clause", 3305 + "bin": { 3306 + "esparse": "bin/esparse.js", 3307 + "esvalidate": "bin/esvalidate.js" 3308 + }, 3309 + "engines": { 3310 + "node": ">=4" 3311 + } 3312 + }, 3313 + "node_modules/esquery": { 3314 + "version": "1.6.0", 3315 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 3316 + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 3317 + "dev": true, 3318 + "license": "BSD-3-Clause", 3319 + "dependencies": { 3320 + "estraverse": "^5.1.0" 3321 + }, 3322 + "engines": { 3323 + "node": ">=0.10" 3324 + } 3325 + }, 3326 + "node_modules/esrecurse": { 3327 + "version": "4.3.0", 3328 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 3329 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 3330 + "dev": true, 3331 + "license": "BSD-2-Clause", 3332 + "dependencies": { 3333 + "estraverse": "^5.2.0" 3334 + }, 3335 + "engines": { 3336 + "node": ">=4.0" 3337 + } 3338 + }, 3339 + "node_modules/estraverse": { 3340 + "version": "5.3.0", 3341 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 3342 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 3343 + "dev": true, 3344 + "license": "BSD-2-Clause", 3345 + "engines": { 3346 + "node": ">=4.0" 3347 + } 3348 + }, 3349 + "node_modules/estree-walker": { 3350 + "version": "3.0.3", 3351 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 3352 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 3353 + "dev": true, 3354 + "license": "MIT", 3355 + "dependencies": { 3356 + "@types/estree": "^1.0.0" 3357 + } 3358 + }, 3359 + "node_modules/esutils": { 3360 + "version": "2.0.3", 3361 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 3362 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 3363 + "dev": true, 3364 + "license": "BSD-2-Clause", 3365 + "engines": { 3366 + "node": ">=0.10.0" 3367 + } 3368 + }, 3369 + "node_modules/exsolve": { 3370 + "version": "1.0.7", 3371 + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", 3372 + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", 3373 + "dev": true, 3374 + "license": "MIT" 3375 + }, 3376 + "node_modules/fast-deep-equal": { 3377 + "version": "3.1.3", 3378 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 3379 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 3380 + "dev": true, 3381 + "license": "MIT" 3382 + }, 3383 + "node_modules/fast-glob": { 3384 + "version": "3.3.3", 3385 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 3386 + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 3387 + "dev": true, 3388 + "license": "MIT", 3389 + "dependencies": { 3390 + "@nodelib/fs.stat": "^2.0.2", 3391 + "@nodelib/fs.walk": "^1.2.3", 3392 + "glob-parent": "^5.1.2", 3393 + "merge2": "^1.3.0", 3394 + "micromatch": "^4.0.8" 3395 + }, 3396 + "engines": { 3397 + "node": ">=8.6.0" 3398 + } 3399 + }, 3400 + "node_modules/fast-glob/node_modules/glob-parent": { 3401 + "version": "5.1.2", 3402 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 3403 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 3404 + "dev": true, 3405 + "license": "ISC", 3406 + "dependencies": { 3407 + "is-glob": "^4.0.1" 3408 + }, 3409 + "engines": { 3410 + "node": ">= 6" 3411 + } 3412 + }, 3413 + "node_modules/fast-json-stable-stringify": { 3414 + "version": "2.1.0", 3415 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 3416 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 3417 + "dev": true, 3418 + "license": "MIT" 3419 + }, 3420 + "node_modules/fast-levenshtein": { 3421 + "version": "2.0.6", 3422 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 3423 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 3424 + "dev": true, 3425 + "license": "MIT" 3426 + }, 3427 + "node_modules/fastq": { 3428 + "version": "1.19.1", 3429 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", 3430 + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", 3431 + "dev": true, 3432 + "license": "ISC", 3433 + "dependencies": { 3434 + "reusify": "^1.0.4" 3435 + } 3436 + }, 3437 + "node_modules/file-entry-cache": { 3438 + "version": "8.0.0", 3439 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 3440 + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 3441 + "dev": true, 3442 + "license": "MIT", 3443 + "dependencies": { 3444 + "flat-cache": "^4.0.0" 3445 + }, 3446 + "engines": { 3447 + "node": ">=16.0.0" 3448 + } 3449 + }, 3450 + "node_modules/fill-range": { 3451 + "version": "7.1.1", 3452 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 3453 + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 3454 + "dev": true, 3455 + "license": "MIT", 3456 + "dependencies": { 3457 + "to-regex-range": "^5.0.1" 3458 + }, 3459 + "engines": { 3460 + "node": ">=8" 3461 + } 3462 + }, 3463 + "node_modules/find-up": { 3464 + "version": "5.0.0", 3465 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 3466 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 3467 + "dev": true, 3468 + "license": "MIT", 3469 + "dependencies": { 3470 + "locate-path": "^6.0.0", 3471 + "path-exists": "^4.0.0" 3472 + }, 3473 + "engines": { 3474 + "node": ">=10" 3475 + }, 3476 + "funding": { 3477 + "url": "https://github.com/sponsors/sindresorhus" 3478 + } 3479 + }, 3480 + "node_modules/flat-cache": { 3481 + "version": "4.0.1", 3482 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 3483 + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 3484 + "dev": true, 3485 + "license": "MIT", 3486 + "dependencies": { 3487 + "flatted": "^3.2.9", 3488 + "keyv": "^4.5.4" 3489 + }, 3490 + "engines": { 3491 + "node": ">=16" 3492 + } 3493 + }, 3494 + "node_modules/flatted": { 3495 + "version": "3.3.3", 3496 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", 3497 + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", 3498 + "dev": true, 3499 + "license": "ISC" 3500 + }, 3501 + "node_modules/fsevents": { 3502 + "version": "2.3.3", 3503 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 3504 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 3505 + "hasInstallScript": true, 3506 + "license": "MIT", 3507 + "optional": true, 3508 + "os": [ 3509 + "darwin" 3510 + ], 3511 + "engines": { 3512 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 3513 + } 3514 + }, 3515 + "node_modules/gensync": { 3516 + "version": "1.0.0-beta.2", 3517 + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 3518 + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 3519 + "dev": true, 3520 + "license": "MIT", 3521 + "engines": { 3522 + "node": ">=6.9.0" 3523 + } 3524 + }, 3525 + "node_modules/get-tsconfig": { 3526 + "version": "4.12.0", 3527 + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz", 3528 + "integrity": "sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==", 3529 + "devOptional": true, 3530 + "license": "MIT", 3531 + "dependencies": { 3532 + "resolve-pkg-maps": "^1.0.0" 3533 + }, 3534 + "funding": { 3535 + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 3536 + } 3537 + }, 3538 + "node_modules/glob-parent": { 3539 + "version": "6.0.2", 3540 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 3541 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 3542 + "dev": true, 3543 + "license": "ISC", 3544 + "dependencies": { 3545 + "is-glob": "^4.0.3" 3546 + }, 3547 + "engines": { 3548 + "node": ">=10.13.0" 3549 + } 3550 + }, 3551 + "node_modules/globals": { 3552 + "version": "16.4.0", 3553 + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", 3554 + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", 3555 + "dev": true, 3556 + "license": "MIT", 3557 + "engines": { 3558 + "node": ">=18" 3559 + }, 3560 + "funding": { 3561 + "url": "https://github.com/sponsors/sindresorhus" 3562 + } 3563 + }, 3564 + "node_modules/graceful-fs": { 3565 + "version": "4.2.11", 3566 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 3567 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 3568 + "license": "ISC" 3569 + }, 3570 + "node_modules/graphemer": { 3571 + "version": "1.4.0", 3572 + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 3573 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 3574 + "license": "MIT" 3575 + }, 3576 + "node_modules/has-flag": { 3577 + "version": "4.0.0", 3578 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3579 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3580 + "dev": true, 3581 + "license": "MIT", 3582 + "engines": { 3583 + "node": ">=8" 3584 + } 3585 + }, 3586 + "node_modules/ignore": { 3587 + "version": "5.3.2", 3588 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 3589 + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 3590 + "dev": true, 3591 + "license": "MIT", 3592 + "engines": { 3593 + "node": ">= 4" 3594 + } 3595 + }, 3596 + "node_modules/import-fresh": { 3597 + "version": "3.3.1", 3598 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 3599 + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 3600 + "dev": true, 3601 + "license": "MIT", 3602 + "dependencies": { 3603 + "parent-module": "^1.0.0", 3604 + "resolve-from": "^4.0.0" 3605 + }, 3606 + "engines": { 3607 + "node": ">=6" 3608 + }, 3609 + "funding": { 3610 + "url": "https://github.com/sponsors/sindresorhus" 3611 + } 3612 + }, 3613 + "node_modules/imurmurhash": { 3614 + "version": "0.1.4", 3615 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3616 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 3617 + "dev": true, 3618 + "license": "MIT", 3619 + "engines": { 3620 + "node": ">=0.8.19" 3621 + } 3622 + }, 3623 + "node_modules/is-binary-path": { 3624 + "version": "2.1.0", 3625 + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3626 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3627 + "dev": true, 3628 + "license": "MIT", 3629 + "dependencies": { 3630 + "binary-extensions": "^2.0.0" 3631 + }, 3632 + "engines": { 3633 + "node": ">=8" 3634 + } 3635 + }, 3636 + "node_modules/is-extglob": { 3637 + "version": "2.1.1", 3638 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3639 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3640 + "dev": true, 3641 + "license": "MIT", 3642 + "engines": { 3643 + "node": ">=0.10.0" 3644 + } 3645 + }, 3646 + "node_modules/is-glob": { 3647 + "version": "4.0.3", 3648 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3649 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3650 + "dev": true, 3651 + "license": "MIT", 3652 + "dependencies": { 3653 + "is-extglob": "^2.1.1" 3654 + }, 3655 + "engines": { 3656 + "node": ">=0.10.0" 3657 + } 3658 + }, 3659 + "node_modules/is-number": { 3660 + "version": "7.0.0", 3661 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3662 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3663 + "dev": true, 3664 + "license": "MIT", 3665 + "engines": { 3666 + "node": ">=0.12.0" 3667 + } 3668 + }, 3669 + "node_modules/isbot": { 3670 + "version": "5.1.31", 3671 + "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.31.tgz", 3672 + "integrity": "sha512-DPgQshehErHAqSCKDb3rNW03pa2wS/v5evvUqtxt6TTnHRqAG8FdzcSSJs9656pK6Y+NT7K9R4acEYXLHYfpUQ==", 3673 + "dev": true, 3674 + "license": "Unlicense", 3675 + "engines": { 3676 + "node": ">=18" 3677 + } 3678 + }, 3679 + "node_modules/isexe": { 3680 + "version": "2.0.0", 3681 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3682 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3683 + "dev": true, 3684 + "license": "ISC" 3685 + }, 3686 + "node_modules/iso-datestring-validator": { 3687 + "version": "2.2.2", 3688 + "resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz", 3689 + "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==", 3690 + "license": "MIT" 3691 + }, 3692 + "node_modules/jiti": { 3693 + "version": "2.6.1", 3694 + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", 3695 + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", 3696 + "license": "MIT", 3697 + "bin": { 3698 + "jiti": "lib/jiti-cli.mjs" 3699 + } 3700 + }, 3701 + "node_modules/jose": { 3702 + "version": "5.10.0", 3703 + "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", 3704 + "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", 3705 + "license": "MIT", 3706 + "funding": { 3707 + "url": "https://github.com/sponsors/panva" 3708 + } 3709 + }, 3710 + "node_modules/js-tokens": { 3711 + "version": "4.0.0", 3712 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3713 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3714 + "dev": true, 3715 + "license": "MIT" 3716 + }, 3717 + "node_modules/js-yaml": { 3718 + "version": "4.1.0", 3719 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 3720 + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 3721 + "dev": true, 3722 + "license": "MIT", 3723 + "dependencies": { 3724 + "argparse": "^2.0.1" 3725 + }, 3726 + "bin": { 3727 + "js-yaml": "bin/js-yaml.js" 3728 + } 3729 + }, 3730 + "node_modules/jsesc": { 3731 + "version": "3.1.0", 3732 + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", 3733 + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 3734 + "dev": true, 3735 + "license": "MIT", 3736 + "bin": { 3737 + "jsesc": "bin/jsesc" 3738 + }, 3739 + "engines": { 3740 + "node": ">=6" 3741 + } 3742 + }, 3743 + "node_modules/json-buffer": { 3744 + "version": "3.0.1", 3745 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 3746 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 3747 + "dev": true, 3748 + "license": "MIT" 3749 + }, 3750 + "node_modules/json-schema-traverse": { 3751 + "version": "0.4.1", 3752 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3753 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3754 + "dev": true, 3755 + "license": "MIT" 3756 + }, 3757 + "node_modules/json-stable-stringify-without-jsonify": { 3758 + "version": "1.0.1", 3759 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3760 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 3761 + "dev": true, 3762 + "license": "MIT" 3763 + }, 3764 + "node_modules/json5": { 3765 + "version": "2.2.3", 3766 + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 3767 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 3768 + "dev": true, 3769 + "license": "MIT", 3770 + "bin": { 3771 + "json5": "lib/cli.js" 3772 + }, 3773 + "engines": { 3774 + "node": ">=6" 3775 + } 3776 + }, 3777 + "node_modules/keyv": { 3778 + "version": "4.5.4", 3779 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 3780 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 3781 + "dev": true, 3782 + "license": "MIT", 3783 + "dependencies": { 3784 + "json-buffer": "3.0.1" 3785 + } 3786 + }, 3787 + "node_modules/kolorist": { 3788 + "version": "1.8.0", 3789 + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", 3790 + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", 3791 + "dev": true, 3792 + "license": "MIT" 3793 + }, 3794 + "node_modules/levn": { 3795 + "version": "0.4.1", 3796 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3797 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3798 + "dev": true, 3799 + "license": "MIT", 3800 + "dependencies": { 3801 + "prelude-ls": "^1.2.1", 3802 + "type-check": "~0.4.0" 3803 + }, 3804 + "engines": { 3805 + "node": ">= 0.8.0" 3806 + } 3807 + }, 3808 + "node_modules/lightningcss": { 3809 + "version": "1.30.1", 3810 + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", 3811 + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", 3812 + "license": "MPL-2.0", 3813 + "dependencies": { 3814 + "detect-libc": "^2.0.3" 3815 + }, 3816 + "engines": { 3817 + "node": ">= 12.0.0" 3818 + }, 3819 + "funding": { 3820 + "type": "opencollective", 3821 + "url": "https://opencollective.com/parcel" 3822 + }, 3823 + "optionalDependencies": { 3824 + "lightningcss-darwin-arm64": "1.30.1", 3825 + "lightningcss-darwin-x64": "1.30.1", 3826 + "lightningcss-freebsd-x64": "1.30.1", 3827 + "lightningcss-linux-arm-gnueabihf": "1.30.1", 3828 + "lightningcss-linux-arm64-gnu": "1.30.1", 3829 + "lightningcss-linux-arm64-musl": "1.30.1", 3830 + "lightningcss-linux-x64-gnu": "1.30.1", 3831 + "lightningcss-linux-x64-musl": "1.30.1", 3832 + "lightningcss-win32-arm64-msvc": "1.30.1", 3833 + "lightningcss-win32-x64-msvc": "1.30.1" 3834 + } 3835 + }, 3836 + "node_modules/lightningcss-darwin-arm64": { 3837 + "version": "1.30.1", 3838 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", 3839 + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", 3840 + "cpu": [ 3841 + "arm64" 3842 + ], 3843 + "license": "MPL-2.0", 3844 + "optional": true, 3845 + "os": [ 3846 + "darwin" 3847 + ], 3848 + "engines": { 3849 + "node": ">= 12.0.0" 3850 + }, 3851 + "funding": { 3852 + "type": "opencollective", 3853 + "url": "https://opencollective.com/parcel" 3854 + } 3855 + }, 3856 + "node_modules/lightningcss-darwin-x64": { 3857 + "version": "1.30.1", 3858 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", 3859 + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", 3860 + "cpu": [ 3861 + "x64" 3862 + ], 3863 + "license": "MPL-2.0", 3864 + "optional": true, 3865 + "os": [ 3866 + "darwin" 3867 + ], 3868 + "engines": { 3869 + "node": ">= 12.0.0" 3870 + }, 3871 + "funding": { 3872 + "type": "opencollective", 3873 + "url": "https://opencollective.com/parcel" 3874 + } 3875 + }, 3876 + "node_modules/lightningcss-freebsd-x64": { 3877 + "version": "1.30.1", 3878 + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", 3879 + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", 3880 + "cpu": [ 3881 + "x64" 3882 + ], 3883 + "license": "MPL-2.0", 3884 + "optional": true, 3885 + "os": [ 3886 + "freebsd" 3887 + ], 3888 + "engines": { 3889 + "node": ">= 12.0.0" 3890 + }, 3891 + "funding": { 3892 + "type": "opencollective", 3893 + "url": "https://opencollective.com/parcel" 3894 + } 3895 + }, 3896 + "node_modules/lightningcss-linux-arm-gnueabihf": { 3897 + "version": "1.30.1", 3898 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", 3899 + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", 3900 + "cpu": [ 3901 + "arm" 3902 + ], 3903 + "license": "MPL-2.0", 3904 + "optional": true, 3905 + "os": [ 3906 + "linux" 3907 + ], 3908 + "engines": { 3909 + "node": ">= 12.0.0" 3910 + }, 3911 + "funding": { 3912 + "type": "opencollective", 3913 + "url": "https://opencollective.com/parcel" 3914 + } 3915 + }, 3916 + "node_modules/lightningcss-linux-arm64-gnu": { 3917 + "version": "1.30.1", 3918 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", 3919 + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", 3920 + "cpu": [ 3921 + "arm64" 3922 + ], 3923 + "license": "MPL-2.0", 3924 + "optional": true, 3925 + "os": [ 3926 + "linux" 3927 + ], 3928 + "engines": { 3929 + "node": ">= 12.0.0" 3930 + }, 3931 + "funding": { 3932 + "type": "opencollective", 3933 + "url": "https://opencollective.com/parcel" 3934 + } 3935 + }, 3936 + "node_modules/lightningcss-linux-arm64-musl": { 3937 + "version": "1.30.1", 3938 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", 3939 + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", 3940 + "cpu": [ 3941 + "arm64" 3942 + ], 3943 + "license": "MPL-2.0", 3944 + "optional": true, 3945 + "os": [ 3946 + "linux" 3947 + ], 3948 + "engines": { 3949 + "node": ">= 12.0.0" 3950 + }, 3951 + "funding": { 3952 + "type": "opencollective", 3953 + "url": "https://opencollective.com/parcel" 3954 + } 3955 + }, 3956 + "node_modules/lightningcss-linux-x64-gnu": { 3957 + "version": "1.30.1", 3958 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", 3959 + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", 3960 + "cpu": [ 3961 + "x64" 3962 + ], 3963 + "license": "MPL-2.0", 3964 + "optional": true, 3965 + "os": [ 3966 + "linux" 3967 + ], 3968 + "engines": { 3969 + "node": ">= 12.0.0" 3970 + }, 3971 + "funding": { 3972 + "type": "opencollective", 3973 + "url": "https://opencollective.com/parcel" 3974 + } 3975 + }, 3976 + "node_modules/lightningcss-linux-x64-musl": { 3977 + "version": "1.30.1", 3978 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", 3979 + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", 3980 + "cpu": [ 3981 + "x64" 3982 + ], 3983 + "license": "MPL-2.0", 3984 + "optional": true, 3985 + "os": [ 3986 + "linux" 3987 + ], 3988 + "engines": { 3989 + "node": ">= 12.0.0" 3990 + }, 3991 + "funding": { 3992 + "type": "opencollective", 3993 + "url": "https://opencollective.com/parcel" 3994 + } 3995 + }, 3996 + "node_modules/lightningcss-win32-arm64-msvc": { 3997 + "version": "1.30.1", 3998 + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", 3999 + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", 4000 + "cpu": [ 4001 + "arm64" 4002 + ], 4003 + "license": "MPL-2.0", 4004 + "optional": true, 4005 + "os": [ 4006 + "win32" 4007 + ], 4008 + "engines": { 4009 + "node": ">= 12.0.0" 4010 + }, 4011 + "funding": { 4012 + "type": "opencollective", 4013 + "url": "https://opencollective.com/parcel" 4014 + } 4015 + }, 4016 + "node_modules/lightningcss-win32-x64-msvc": { 4017 + "version": "1.30.1", 4018 + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", 4019 + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", 4020 + "cpu": [ 4021 + "x64" 4022 + ], 4023 + "license": "MPL-2.0", 4024 + "optional": true, 4025 + "os": [ 4026 + "win32" 4027 + ], 4028 + "engines": { 4029 + "node": ">= 12.0.0" 4030 + }, 4031 + "funding": { 4032 + "type": "opencollective", 4033 + "url": "https://opencollective.com/parcel" 4034 + } 4035 + }, 4036 + "node_modules/local-pkg": { 4037 + "version": "1.1.2", 4038 + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", 4039 + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", 4040 + "dev": true, 4041 + "license": "MIT", 4042 + "dependencies": { 4043 + "mlly": "^1.7.4", 4044 + "pkg-types": "^2.3.0", 4045 + "quansync": "^0.2.11" 4046 + }, 4047 + "engines": { 4048 + "node": ">=14" 4049 + }, 4050 + "funding": { 4051 + "url": "https://github.com/sponsors/antfu" 4052 + } 4053 + }, 4054 + "node_modules/locate-path": { 4055 + "version": "6.0.0", 4056 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 4057 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 4058 + "dev": true, 4059 + "license": "MIT", 4060 + "dependencies": { 4061 + "p-locate": "^5.0.0" 4062 + }, 4063 + "engines": { 4064 + "node": ">=10" 4065 + }, 4066 + "funding": { 4067 + "url": "https://github.com/sponsors/sindresorhus" 4068 + } 4069 + }, 4070 + "node_modules/lodash.merge": { 4071 + "version": "4.6.2", 4072 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 4073 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 4074 + "dev": true, 4075 + "license": "MIT" 4076 + }, 4077 + "node_modules/lru-cache": { 4078 + "version": "5.1.1", 4079 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 4080 + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 4081 + "dev": true, 4082 + "license": "ISC", 4083 + "dependencies": { 4084 + "yallist": "^3.0.2" 4085 + } 4086 + }, 4087 + "node_modules/magic-string": { 4088 + "version": "0.30.19", 4089 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", 4090 + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", 4091 + "license": "MIT", 4092 + "dependencies": { 4093 + "@jridgewell/sourcemap-codec": "^1.5.5" 4094 + } 4095 + }, 4096 + "node_modules/merge2": { 4097 + "version": "1.4.1", 4098 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 4099 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 4100 + "dev": true, 4101 + "license": "MIT", 4102 + "engines": { 4103 + "node": ">= 8" 4104 + } 4105 + }, 4106 + "node_modules/micromatch": { 4107 + "version": "4.0.8", 4108 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 4109 + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 4110 + "dev": true, 4111 + "license": "MIT", 4112 + "dependencies": { 4113 + "braces": "^3.0.3", 4114 + "picomatch": "^2.3.1" 4115 + }, 4116 + "engines": { 4117 + "node": ">=8.6" 4118 + } 4119 + }, 4120 + "node_modules/minimatch": { 4121 + "version": "3.1.2", 4122 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 4123 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 4124 + "dev": true, 4125 + "license": "ISC", 4126 + "dependencies": { 4127 + "brace-expansion": "^1.1.7" 4128 + }, 4129 + "engines": { 4130 + "node": "*" 4131 + } 4132 + }, 4133 + "node_modules/minipass": { 4134 + "version": "7.1.2", 4135 + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 4136 + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 4137 + "license": "ISC", 4138 + "engines": { 4139 + "node": ">=16 || 14 >=14.17" 4140 + } 4141 + }, 4142 + "node_modules/minizlib": { 4143 + "version": "3.1.0", 4144 + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", 4145 + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", 4146 + "license": "MIT", 4147 + "dependencies": { 4148 + "minipass": "^7.1.2" 4149 + }, 4150 + "engines": { 4151 + "node": ">= 18" 4152 + } 4153 + }, 4154 + "node_modules/mlly": { 4155 + "version": "1.8.0", 4156 + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", 4157 + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", 4158 + "dev": true, 4159 + "license": "MIT", 4160 + "dependencies": { 4161 + "acorn": "^8.15.0", 4162 + "pathe": "^2.0.3", 4163 + "pkg-types": "^1.3.1", 4164 + "ufo": "^1.6.1" 4165 + } 4166 + }, 4167 + "node_modules/mlly/node_modules/confbox": { 4168 + "version": "0.1.8", 4169 + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", 4170 + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", 4171 + "dev": true, 4172 + "license": "MIT" 4173 + }, 4174 + "node_modules/mlly/node_modules/pkg-types": { 4175 + "version": "1.3.1", 4176 + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", 4177 + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", 4178 + "dev": true, 4179 + "license": "MIT", 4180 + "dependencies": { 4181 + "confbox": "^0.1.8", 4182 + "mlly": "^1.7.4", 4183 + "pathe": "^2.0.1" 4184 + } 4185 + }, 4186 + "node_modules/ms": { 4187 + "version": "2.1.3", 4188 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 4189 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 4190 + "dev": true, 4191 + "license": "MIT" 4192 + }, 4193 + "node_modules/multiformats": { 4194 + "version": "9.9.0", 4195 + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", 4196 + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", 4197 + "license": "(Apache-2.0 AND MIT)" 4198 + }, 4199 + "node_modules/nanoid": { 4200 + "version": "3.3.11", 4201 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 4202 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 4203 + "funding": [ 4204 + { 4205 + "type": "github", 4206 + "url": "https://github.com/sponsors/ai" 4207 + } 4208 + ], 4209 + "license": "MIT", 4210 + "bin": { 4211 + "nanoid": "bin/nanoid.cjs" 4212 + }, 4213 + "engines": { 4214 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 4215 + } 4216 + }, 4217 + "node_modules/natural-compare": { 4218 + "version": "1.4.0", 4219 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 4220 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 4221 + "dev": true, 4222 + "license": "MIT" 4223 + }, 4224 + "node_modules/node-releases": { 4225 + "version": "2.0.25", 4226 + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.25.tgz", 4227 + "integrity": "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==", 4228 + "dev": true, 4229 + "license": "MIT" 4230 + }, 4231 + "node_modules/normalize-path": { 4232 + "version": "3.0.0", 4233 + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 4234 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 4235 + "dev": true, 4236 + "license": "MIT", 4237 + "engines": { 4238 + "node": ">=0.10.0" 4239 + } 4240 + }, 4241 + "node_modules/optionator": { 4242 + "version": "0.9.4", 4243 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 4244 + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 4245 + "dev": true, 4246 + "license": "MIT", 4247 + "dependencies": { 4248 + "deep-is": "^0.1.3", 4249 + "fast-levenshtein": "^2.0.6", 4250 + "levn": "^0.4.1", 4251 + "prelude-ls": "^1.2.1", 4252 + "type-check": "^0.4.0", 4253 + "word-wrap": "^1.2.5" 4254 + }, 4255 + "engines": { 4256 + "node": ">= 0.8.0" 4257 + } 4258 + }, 4259 + "node_modules/p-limit": { 4260 + "version": "3.1.0", 4261 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 4262 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 4263 + "dev": true, 4264 + "license": "MIT", 4265 + "dependencies": { 4266 + "yocto-queue": "^0.1.0" 4267 + }, 4268 + "engines": { 4269 + "node": ">=10" 4270 + }, 4271 + "funding": { 4272 + "url": "https://github.com/sponsors/sindresorhus" 4273 + } 4274 + }, 4275 + "node_modules/p-locate": { 4276 + "version": "5.0.0", 4277 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 4278 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 4279 + "dev": true, 4280 + "license": "MIT", 4281 + "dependencies": { 4282 + "p-limit": "^3.0.2" 4283 + }, 4284 + "engines": { 4285 + "node": ">=10" 4286 + }, 4287 + "funding": { 4288 + "url": "https://github.com/sponsors/sindresorhus" 4289 + } 4290 + }, 4291 + "node_modules/package-manager-detector": { 4292 + "version": "1.5.0", 4293 + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.5.0.tgz", 4294 + "integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==", 4295 + "dev": true, 4296 + "license": "MIT" 4297 + }, 4298 + "node_modules/parent-module": { 4299 + "version": "1.0.1", 4300 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 4301 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 4302 + "dev": true, 4303 + "license": "MIT", 4304 + "dependencies": { 4305 + "callsites": "^3.0.0" 4306 + }, 4307 + "engines": { 4308 + "node": ">=6" 4309 + } 4310 + }, 4311 + "node_modules/path-exists": { 4312 + "version": "4.0.0", 4313 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 4314 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 4315 + "dev": true, 4316 + "license": "MIT", 4317 + "engines": { 4318 + "node": ">=8" 4319 + } 4320 + }, 4321 + "node_modules/path-key": { 4322 + "version": "3.1.1", 4323 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 4324 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 4325 + "dev": true, 4326 + "license": "MIT", 4327 + "engines": { 4328 + "node": ">=8" 4329 + } 4330 + }, 4331 + "node_modules/pathe": { 4332 + "version": "2.0.3", 4333 + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", 4334 + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", 4335 + "dev": true, 4336 + "license": "MIT" 4337 + }, 4338 + "node_modules/picocolors": { 4339 + "version": "1.1.1", 4340 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 4341 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 4342 + "license": "ISC" 4343 + }, 4344 + "node_modules/picomatch": { 4345 + "version": "2.3.1", 4346 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 4347 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 4348 + "dev": true, 4349 + "license": "MIT", 4350 + "engines": { 4351 + "node": ">=8.6" 4352 + }, 4353 + "funding": { 4354 + "url": "https://github.com/sponsors/jonschlinkert" 4355 + } 4356 + }, 4357 + "node_modules/pkg-types": { 4358 + "version": "2.3.0", 4359 + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", 4360 + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", 4361 + "dev": true, 4362 + "license": "MIT", 4363 + "dependencies": { 4364 + "confbox": "^0.2.2", 4365 + "exsolve": "^1.0.7", 4366 + "pathe": "^2.0.3" 4367 + } 4368 + }, 4369 + "node_modules/postcss": { 4370 + "version": "8.5.6", 4371 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", 4372 + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 4373 + "funding": [ 4374 + { 4375 + "type": "opencollective", 4376 + "url": "https://opencollective.com/postcss/" 4377 + }, 4378 + { 4379 + "type": "tidelift", 4380 + "url": "https://tidelift.com/funding/github/npm/postcss" 4381 + }, 4382 + { 4383 + "type": "github", 4384 + "url": "https://github.com/sponsors/ai" 4385 + } 4386 + ], 4387 + "license": "MIT", 4388 + "dependencies": { 4389 + "nanoid": "^3.3.11", 4390 + "picocolors": "^1.1.1", 4391 + "source-map-js": "^1.2.1" 4392 + }, 4393 + "engines": { 4394 + "node": "^10 || ^12 || >=14" 4395 + } 4396 + }, 4397 + "node_modules/prelude-ls": { 4398 + "version": "1.2.1", 4399 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 4400 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 4401 + "dev": true, 4402 + "license": "MIT", 4403 + "engines": { 4404 + "node": ">= 0.8.0" 4405 + } 4406 + }, 4407 + "node_modules/prettier": { 4408 + "version": "3.6.2", 4409 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", 4410 + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", 4411 + "dev": true, 4412 + "license": "MIT", 4413 + "bin": { 4414 + "prettier": "bin/prettier.cjs" 4415 + }, 4416 + "engines": { 4417 + "node": ">=14" 4418 + }, 4419 + "funding": { 4420 + "url": "https://github.com/prettier/prettier?sponsor=1" 4421 + } 4422 + }, 4423 + "node_modules/punycode": { 4424 + "version": "2.3.1", 4425 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 4426 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 4427 + "dev": true, 4428 + "license": "MIT", 4429 + "engines": { 4430 + "node": ">=6" 4431 + } 4432 + }, 4433 + "node_modules/quansync": { 4434 + "version": "0.2.11", 4435 + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", 4436 + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", 4437 + "dev": true, 4438 + "funding": [ 4439 + { 4440 + "type": "individual", 4441 + "url": "https://github.com/sponsors/antfu" 4442 + }, 4443 + { 4444 + "type": "individual", 4445 + "url": "https://github.com/sponsors/sxzz" 4446 + } 4447 + ], 4448 + "license": "MIT" 4449 + }, 4450 + "node_modules/queue-microtask": { 4451 + "version": "1.2.3", 4452 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 4453 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 4454 + "dev": true, 4455 + "funding": [ 4456 + { 4457 + "type": "github", 4458 + "url": "https://github.com/sponsors/feross" 4459 + }, 4460 + { 4461 + "type": "patreon", 4462 + "url": "https://www.patreon.com/feross" 4463 + }, 4464 + { 4465 + "type": "consulting", 4466 + "url": "https://feross.org/support" 4467 + } 4468 + ], 4469 + "license": "MIT" 4470 + }, 4471 + "node_modules/react": { 4472 + "version": "19.2.0", 4473 + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", 4474 + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", 4475 + "license": "MIT", 4476 + "engines": { 4477 + "node": ">=0.10.0" 4478 + } 4479 + }, 4480 + "node_modules/react-dom": { 4481 + "version": "19.2.0", 4482 + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", 4483 + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", 4484 + "license": "MIT", 4485 + "dependencies": { 4486 + "scheduler": "^0.27.0" 4487 + }, 4488 + "peerDependencies": { 4489 + "react": "^19.2.0" 4490 + } 4491 + }, 4492 + "node_modules/react-refresh": { 4493 + "version": "0.17.0", 4494 + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", 4495 + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", 4496 + "dev": true, 4497 + "license": "MIT", 4498 + "engines": { 4499 + "node": ">=0.10.0" 4500 + } 4501 + }, 4502 + "node_modules/readdirp": { 4503 + "version": "3.6.0", 4504 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 4505 + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 4506 + "dev": true, 4507 + "license": "MIT", 4508 + "dependencies": { 4509 + "picomatch": "^2.2.1" 4510 + }, 4511 + "engines": { 4512 + "node": ">=8.10.0" 4513 + } 4514 + }, 4515 + "node_modules/recast": { 4516 + "version": "0.23.11", 4517 + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", 4518 + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", 4519 + "dev": true, 4520 + "license": "MIT", 4521 + "dependencies": { 4522 + "ast-types": "^0.16.1", 4523 + "esprima": "~4.0.0", 4524 + "source-map": "~0.6.1", 4525 + "tiny-invariant": "^1.3.3", 4526 + "tslib": "^2.0.1" 4527 + }, 4528 + "engines": { 4529 + "node": ">= 4" 4530 + } 4531 + }, 4532 + "node_modules/recast/node_modules/source-map": { 4533 + "version": "0.6.1", 4534 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 4535 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 4536 + "dev": true, 4537 + "license": "BSD-3-Clause", 4538 + "engines": { 4539 + "node": ">=0.10.0" 4540 + } 4541 + }, 4542 + "node_modules/resolve-from": { 4543 + "version": "4.0.0", 4544 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 4545 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 4546 + "dev": true, 4547 + "license": "MIT", 4548 + "engines": { 4549 + "node": ">=4" 4550 + } 4551 + }, 4552 + "node_modules/resolve-pkg-maps": { 4553 + "version": "1.0.0", 4554 + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", 4555 + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", 4556 + "devOptional": true, 4557 + "license": "MIT", 4558 + "funding": { 4559 + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 4560 + } 4561 + }, 4562 + "node_modules/reusify": { 4563 + "version": "1.1.0", 4564 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", 4565 + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", 4566 + "dev": true, 4567 + "license": "MIT", 4568 + "engines": { 4569 + "iojs": ">=1.0.0", 4570 + "node": ">=0.10.0" 4571 + } 4572 + }, 4573 + "node_modules/rollup": { 4574 + "version": "4.52.5", 4575 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", 4576 + "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", 4577 + "license": "MIT", 4578 + "dependencies": { 4579 + "@types/estree": "1.0.8" 4580 + }, 4581 + "bin": { 4582 + "rollup": "dist/bin/rollup" 4583 + }, 4584 + "engines": { 4585 + "node": ">=18.0.0", 4586 + "npm": ">=8.0.0" 4587 + }, 4588 + "optionalDependencies": { 4589 + "@rollup/rollup-android-arm-eabi": "4.52.5", 4590 + "@rollup/rollup-android-arm64": "4.52.5", 4591 + "@rollup/rollup-darwin-arm64": "4.52.5", 4592 + "@rollup/rollup-darwin-x64": "4.52.5", 4593 + "@rollup/rollup-freebsd-arm64": "4.52.5", 4594 + "@rollup/rollup-freebsd-x64": "4.52.5", 4595 + "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", 4596 + "@rollup/rollup-linux-arm-musleabihf": "4.52.5", 4597 + "@rollup/rollup-linux-arm64-gnu": "4.52.5", 4598 + "@rollup/rollup-linux-arm64-musl": "4.52.5", 4599 + "@rollup/rollup-linux-loong64-gnu": "4.52.5", 4600 + "@rollup/rollup-linux-ppc64-gnu": "4.52.5", 4601 + "@rollup/rollup-linux-riscv64-gnu": "4.52.5", 4602 + "@rollup/rollup-linux-riscv64-musl": "4.52.5", 4603 + "@rollup/rollup-linux-s390x-gnu": "4.52.5", 4604 + "@rollup/rollup-linux-x64-gnu": "4.52.5", 4605 + "@rollup/rollup-linux-x64-musl": "4.52.5", 4606 + "@rollup/rollup-openharmony-arm64": "4.52.5", 4607 + "@rollup/rollup-win32-arm64-msvc": "4.52.5", 4608 + "@rollup/rollup-win32-ia32-msvc": "4.52.5", 4609 + "@rollup/rollup-win32-x64-gnu": "4.52.5", 4610 + "@rollup/rollup-win32-x64-msvc": "4.52.5", 4611 + "fsevents": "~2.3.2" 4612 + } 4613 + }, 4614 + "node_modules/run-parallel": { 4615 + "version": "1.2.0", 4616 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 4617 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 4618 + "dev": true, 4619 + "funding": [ 4620 + { 4621 + "type": "github", 4622 + "url": "https://github.com/sponsors/feross" 4623 + }, 4624 + { 4625 + "type": "patreon", 4626 + "url": "https://www.patreon.com/feross" 4627 + }, 4628 + { 4629 + "type": "consulting", 4630 + "url": "https://feross.org/support" 4631 + } 4632 + ], 4633 + "license": "MIT", 4634 + "dependencies": { 4635 + "queue-microtask": "^1.2.2" 4636 + } 4637 + }, 4638 + "node_modules/scheduler": { 4639 + "version": "0.27.0", 4640 + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", 4641 + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", 4642 + "license": "MIT" 4643 + }, 4644 + "node_modules/scule": { 4645 + "version": "1.3.0", 4646 + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", 4647 + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", 4648 + "dev": true, 4649 + "license": "MIT" 4650 + }, 4651 + "node_modules/semver": { 4652 + "version": "6.3.1", 4653 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 4654 + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 4655 + "dev": true, 4656 + "license": "ISC", 4657 + "bin": { 4658 + "semver": "bin/semver.js" 4659 + } 4660 + }, 4661 + "node_modules/seroval": { 4662 + "version": "1.3.2", 4663 + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz", 4664 + "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==", 4665 + "dev": true, 4666 + "license": "MIT", 4667 + "engines": { 4668 + "node": ">=10" 4669 + } 4670 + }, 4671 + "node_modules/seroval-plugins": { 4672 + "version": "1.3.3", 4673 + "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.3.3.tgz", 4674 + "integrity": "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==", 4675 + "dev": true, 4676 + "license": "MIT", 4677 + "engines": { 4678 + "node": ">=10" 4679 + }, 4680 + "peerDependencies": { 4681 + "seroval": "^1.0" 4682 + } 4683 + }, 4684 + "node_modules/shebang-command": { 4685 + "version": "2.0.0", 4686 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 4687 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 4688 + "dev": true, 4689 + "license": "MIT", 4690 + "dependencies": { 4691 + "shebang-regex": "^3.0.0" 4692 + }, 4693 + "engines": { 4694 + "node": ">=8" 4695 + } 4696 + }, 4697 + "node_modules/shebang-regex": { 4698 + "version": "3.0.0", 4699 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 4700 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 4701 + "dev": true, 4702 + "license": "MIT", 4703 + "engines": { 4704 + "node": ">=8" 4705 + } 4706 + }, 4707 + "node_modules/source-map": { 4708 + "version": "0.7.6", 4709 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", 4710 + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", 4711 + "dev": true, 4712 + "license": "BSD-3-Clause", 4713 + "engines": { 4714 + "node": ">= 12" 4715 + } 4716 + }, 4717 + "node_modules/source-map-js": { 4718 + "version": "1.2.1", 4719 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 4720 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 4721 + "license": "BSD-3-Clause", 4722 + "engines": { 4723 + "node": ">=0.10.0" 4724 + } 4725 + }, 4726 + "node_modules/strip-json-comments": { 4727 + "version": "3.1.1", 4728 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 4729 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 4730 + "dev": true, 4731 + "license": "MIT", 4732 + "engines": { 4733 + "node": ">=8" 4734 + }, 4735 + "funding": { 4736 + "url": "https://github.com/sponsors/sindresorhus" 4737 + } 4738 + }, 4739 + "node_modules/strip-literal": { 4740 + "version": "3.1.0", 4741 + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", 4742 + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", 4743 + "dev": true, 4744 + "license": "MIT", 4745 + "dependencies": { 4746 + "js-tokens": "^9.0.1" 4747 + }, 4748 + "funding": { 4749 + "url": "https://github.com/sponsors/antfu" 4750 + } 4751 + }, 4752 + "node_modules/strip-literal/node_modules/js-tokens": { 4753 + "version": "9.0.1", 4754 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", 4755 + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", 4756 + "dev": true, 4757 + "license": "MIT" 4758 + }, 4759 + "node_modules/supports-color": { 4760 + "version": "7.2.0", 4761 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 4762 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 4763 + "dev": true, 4764 + "license": "MIT", 4765 + "dependencies": { 4766 + "has-flag": "^4.0.0" 4767 + }, 4768 + "engines": { 4769 + "node": ">=8" 4770 + } 4771 + }, 4772 + "node_modules/tailwindcss": { 4773 + "version": "4.1.14", 4774 + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", 4775 + "integrity": "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==", 4776 + "license": "MIT" 4777 + }, 4778 + "node_modules/tapable": { 4779 + "version": "2.3.0", 4780 + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", 4781 + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", 4782 + "license": "MIT", 4783 + "engines": { 4784 + "node": ">=6" 4785 + }, 4786 + "funding": { 4787 + "type": "opencollective", 4788 + "url": "https://opencollective.com/webpack" 4789 + } 4790 + }, 4791 + "node_modules/tar": { 4792 + "version": "7.5.1", 4793 + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", 4794 + "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", 4795 + "license": "ISC", 4796 + "dependencies": { 4797 + "@isaacs/fs-minipass": "^4.0.0", 4798 + "chownr": "^3.0.0", 4799 + "minipass": "^7.1.2", 4800 + "minizlib": "^3.1.0", 4801 + "yallist": "^5.0.0" 4802 + }, 4803 + "engines": { 4804 + "node": ">=18" 4805 + } 4806 + }, 4807 + "node_modules/tar/node_modules/yallist": { 4808 + "version": "5.0.0", 4809 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", 4810 + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", 4811 + "license": "BlueOak-1.0.0", 4812 + "engines": { 4813 + "node": ">=18" 4814 + } 4815 + }, 4816 + "node_modules/tiny-invariant": { 4817 + "version": "1.3.3", 4818 + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", 4819 + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", 4820 + "dev": true, 4821 + "license": "MIT" 4822 + }, 4823 + "node_modules/tiny-warning": { 4824 + "version": "1.0.3", 4825 + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", 4826 + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", 4827 + "dev": true, 4828 + "license": "MIT" 4829 + }, 4830 + "node_modules/tinyexec": { 4831 + "version": "1.0.1", 4832 + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", 4833 + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", 4834 + "dev": true, 4835 + "license": "MIT" 4836 + }, 4837 + "node_modules/tinyglobby": { 4838 + "version": "0.2.15", 4839 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", 4840 + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 4841 + "license": "MIT", 4842 + "dependencies": { 4843 + "fdir": "^6.5.0", 4844 + "picomatch": "^4.0.3" 4845 + }, 4846 + "engines": { 4847 + "node": ">=12.0.0" 4848 + }, 4849 + "funding": { 4850 + "url": "https://github.com/sponsors/SuperchupuDev" 4851 + } 4852 + }, 4853 + "node_modules/tinyglobby/node_modules/fdir": { 4854 + "version": "6.5.0", 4855 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 4856 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 4857 + "license": "MIT", 4858 + "engines": { 4859 + "node": ">=12.0.0" 4860 + }, 4861 + "peerDependencies": { 4862 + "picomatch": "^3 || ^4" 4863 + }, 4864 + "peerDependenciesMeta": { 4865 + "picomatch": { 4866 + "optional": true 4867 + } 4868 + } 4869 + }, 4870 + "node_modules/tinyglobby/node_modules/picomatch": { 4871 + "version": "4.0.3", 4872 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 4873 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 4874 + "license": "MIT", 4875 + "engines": { 4876 + "node": ">=12" 4877 + }, 4878 + "funding": { 4879 + "url": "https://github.com/sponsors/jonschlinkert" 4880 + } 4881 + }, 4882 + "node_modules/tlds": { 4883 + "version": "1.260.0", 4884 + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.260.0.tgz", 4885 + "integrity": "sha512-78+28EWBhCEE7qlyaHA9OR3IPvbCLiDh3Ckla593TksfFc9vfTsgvH7eS+dr3o9qr31gwGbogcI16yN91PoRjQ==", 4886 + "license": "MIT", 4887 + "bin": { 4888 + "tlds": "bin.js" 4889 + } 4890 + }, 4891 + "node_modules/to-regex-range": { 4892 + "version": "5.0.1", 4893 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 4894 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 4895 + "dev": true, 4896 + "license": "MIT", 4897 + "dependencies": { 4898 + "is-number": "^7.0.0" 4899 + }, 4900 + "engines": { 4901 + "node": ">=8.0" 4902 + } 4903 + }, 4904 + "node_modules/ts-api-utils": { 4905 + "version": "2.1.0", 4906 + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", 4907 + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", 4908 + "dev": true, 4909 + "license": "MIT", 4910 + "engines": { 4911 + "node": ">=18.12" 4912 + }, 4913 + "peerDependencies": { 4914 + "typescript": ">=4.8.4" 4915 + } 4916 + }, 4917 + "node_modules/tslib": { 4918 + "version": "2.8.1", 4919 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 4920 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 4921 + "devOptional": true, 4922 + "license": "0BSD" 4923 + }, 4924 + "node_modules/tsx": { 4925 + "version": "4.20.6", 4926 + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", 4927 + "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", 4928 + "devOptional": true, 4929 + "license": "MIT", 4930 + "dependencies": { 4931 + "esbuild": "~0.25.0", 4932 + "get-tsconfig": "^4.7.5" 4933 + }, 4934 + "bin": { 4935 + "tsx": "dist/cli.mjs" 4936 + }, 4937 + "engines": { 4938 + "node": ">=18.0.0" 4939 + }, 4940 + "optionalDependencies": { 4941 + "fsevents": "~2.3.3" 4942 + } 4943 + }, 4944 + "node_modules/type-check": { 4945 + "version": "0.4.0", 4946 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 4947 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 4948 + "dev": true, 4949 + "license": "MIT", 4950 + "dependencies": { 4951 + "prelude-ls": "^1.2.1" 4952 + }, 4953 + "engines": { 4954 + "node": ">= 0.8.0" 4955 + } 4956 + }, 4957 + "node_modules/typescript": { 4958 + "version": "5.9.3", 4959 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 4960 + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 4961 + "dev": true, 4962 + "license": "Apache-2.0", 4963 + "bin": { 4964 + "tsc": "bin/tsc", 4965 + "tsserver": "bin/tsserver" 4966 + }, 4967 + "engines": { 4968 + "node": ">=14.17" 4969 + } 4970 + }, 4971 + "node_modules/typescript-eslint": { 4972 + "version": "8.46.1", 4973 + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.1.tgz", 4974 + "integrity": "sha512-VHgijW803JafdSsDO8I761r3SHrgk4T00IdyQ+/UsthtgPRsBWQLqoSxOolxTpxRKi1kGXK0bSz4CoAc9ObqJA==", 4975 + "dev": true, 4976 + "license": "MIT", 4977 + "dependencies": { 4978 + "@typescript-eslint/eslint-plugin": "8.46.1", 4979 + "@typescript-eslint/parser": "8.46.1", 4980 + "@typescript-eslint/typescript-estree": "8.46.1", 4981 + "@typescript-eslint/utils": "8.46.1" 4982 + }, 4983 + "engines": { 4984 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 4985 + }, 4986 + "funding": { 4987 + "type": "opencollective", 4988 + "url": "https://opencollective.com/typescript-eslint" 4989 + }, 4990 + "peerDependencies": { 4991 + "eslint": "^8.57.0 || ^9.0.0", 4992 + "typescript": ">=4.8.4 <6.0.0" 4993 + } 4994 + }, 4995 + "node_modules/ufo": { 4996 + "version": "1.6.1", 4997 + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", 4998 + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", 4999 + "dev": true, 5000 + "license": "MIT" 5001 + }, 5002 + "node_modules/uint8arrays": { 5003 + "version": "3.0.0", 5004 + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", 5005 + "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", 5006 + "license": "MIT", 5007 + "dependencies": { 5008 + "multiformats": "^9.4.2" 5009 + } 5010 + }, 5011 + "node_modules/undici-types": { 5012 + "version": "7.14.0", 5013 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", 5014 + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", 5015 + "devOptional": true, 5016 + "license": "MIT" 5017 + }, 5018 + "node_modules/unimport": { 5019 + "version": "5.5.0", 5020 + "resolved": "https://registry.npmjs.org/unimport/-/unimport-5.5.0.tgz", 5021 + "integrity": "sha512-/JpWMG9s1nBSlXJAQ8EREFTFy3oy6USFd8T6AoBaw1q2GGcF4R9yp3ofg32UODZlYEO5VD0EWE1RpI9XDWyPYg==", 5022 + "dev": true, 5023 + "license": "MIT", 5024 + "dependencies": { 5025 + "acorn": "^8.15.0", 5026 + "escape-string-regexp": "^5.0.0", 5027 + "estree-walker": "^3.0.3", 5028 + "local-pkg": "^1.1.2", 5029 + "magic-string": "^0.30.19", 5030 + "mlly": "^1.8.0", 5031 + "pathe": "^2.0.3", 5032 + "picomatch": "^4.0.3", 5033 + "pkg-types": "^2.3.0", 5034 + "scule": "^1.3.0", 5035 + "strip-literal": "^3.1.0", 5036 + "tinyglobby": "^0.2.15", 5037 + "unplugin": "^2.3.10", 5038 + "unplugin-utils": "^0.3.0" 5039 + }, 5040 + "engines": { 5041 + "node": ">=18.12.0" 5042 + } 5043 + }, 5044 + "node_modules/unimport/node_modules/escape-string-regexp": { 5045 + "version": "5.0.0", 5046 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", 5047 + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", 5048 + "dev": true, 5049 + "license": "MIT", 5050 + "engines": { 5051 + "node": ">=12" 5052 + }, 5053 + "funding": { 5054 + "url": "https://github.com/sponsors/sindresorhus" 5055 + } 5056 + }, 5057 + "node_modules/unimport/node_modules/picomatch": { 5058 + "version": "4.0.3", 5059 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 5060 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 5061 + "dev": true, 5062 + "license": "MIT", 5063 + "engines": { 5064 + "node": ">=12" 5065 + }, 5066 + "funding": { 5067 + "url": "https://github.com/sponsors/jonschlinkert" 5068 + } 5069 + }, 5070 + "node_modules/unplugin": { 5071 + "version": "2.3.10", 5072 + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.10.tgz", 5073 + "integrity": "sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==", 5074 + "dev": true, 5075 + "license": "MIT", 5076 + "dependencies": { 5077 + "@jridgewell/remapping": "^2.3.5", 5078 + "acorn": "^8.15.0", 5079 + "picomatch": "^4.0.3", 5080 + "webpack-virtual-modules": "^0.6.2" 5081 + }, 5082 + "engines": { 5083 + "node": ">=18.12.0" 5084 + } 5085 + }, 5086 + "node_modules/unplugin-auto-import": { 5087 + "version": "20.2.0", 5088 + "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-20.2.0.tgz", 5089 + "integrity": "sha512-vfBI/SvD9hJqYNinipVOAj5n8dS8DJXFlCKFR5iLDp2SaQwsfdnfLXgZ+34Kd3YY3YEY9omk8XQg0bwos3Q8ug==", 5090 + "dev": true, 5091 + "license": "MIT", 5092 + "dependencies": { 5093 + "local-pkg": "^1.1.2", 5094 + "magic-string": "^0.30.19", 5095 + "picomatch": "^4.0.3", 5096 + "unimport": "^5.4.0", 5097 + "unplugin": "^2.3.10", 5098 + "unplugin-utils": "^0.3.0" 5099 + }, 5100 + "engines": { 5101 + "node": ">=14" 5102 + }, 5103 + "funding": { 5104 + "url": "https://github.com/sponsors/antfu" 5105 + }, 5106 + "peerDependencies": { 5107 + "@nuxt/kit": "^4.0.0", 5108 + "@vueuse/core": "*" 5109 + }, 5110 + "peerDependenciesMeta": { 5111 + "@nuxt/kit": { 5112 + "optional": true 5113 + }, 5114 + "@vueuse/core": { 5115 + "optional": true 5116 + } 5117 + } 5118 + }, 5119 + "node_modules/unplugin-auto-import/node_modules/picomatch": { 5120 + "version": "4.0.3", 5121 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 5122 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 5123 + "dev": true, 5124 + "license": "MIT", 5125 + "engines": { 5126 + "node": ">=12" 5127 + }, 5128 + "funding": { 5129 + "url": "https://github.com/sponsors/jonschlinkert" 5130 + } 5131 + }, 5132 + "node_modules/unplugin-icons": { 5133 + "version": "22.5.0", 5134 + "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-22.5.0.tgz", 5135 + "integrity": "sha512-MBlMtT5RuMYZy4TZgqUL2OTtOdTUVsS1Mhj6G1pEzMlFJlEnq6mhUfoIt45gBWxHcsOdXJDWLg3pRZ+YmvAVWQ==", 5136 + "dev": true, 5137 + "license": "MIT", 5138 + "dependencies": { 5139 + "@antfu/install-pkg": "^1.1.0", 5140 + "@iconify/utils": "^3.0.2", 5141 + "debug": "^4.4.3", 5142 + "local-pkg": "^1.1.2", 5143 + "unplugin": "^2.3.10" 5144 + }, 5145 + "funding": { 5146 + "url": "https://github.com/sponsors/antfu" 5147 + }, 5148 + "peerDependencies": { 5149 + "@svgr/core": ">=7.0.0", 5150 + "@svgx/core": "^1.0.1", 5151 + "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", 5152 + "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0", 5153 + "vue-template-compiler": "^2.6.12", 5154 + "vue-template-es2015-compiler": "^1.9.0" 5155 + }, 5156 + "peerDependenciesMeta": { 5157 + "@svgr/core": { 5158 + "optional": true 5159 + }, 5160 + "@svgx/core": { 5161 + "optional": true 5162 + }, 5163 + "@vue/compiler-sfc": { 5164 + "optional": true 5165 + }, 5166 + "svelte": { 5167 + "optional": true 5168 + }, 5169 + "vue-template-compiler": { 5170 + "optional": true 5171 + }, 5172 + "vue-template-es2015-compiler": { 5173 + "optional": true 5174 + } 5175 + } 5176 + }, 5177 + "node_modules/unplugin-utils": { 5178 + "version": "0.3.1", 5179 + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", 5180 + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", 5181 + "dev": true, 5182 + "license": "MIT", 5183 + "dependencies": { 5184 + "pathe": "^2.0.3", 5185 + "picomatch": "^4.0.3" 5186 + }, 5187 + "engines": { 5188 + "node": ">=20.19.0" 5189 + }, 5190 + "funding": { 5191 + "url": "https://github.com/sponsors/sxzz" 5192 + } 5193 + }, 5194 + "node_modules/unplugin-utils/node_modules/picomatch": { 5195 + "version": "4.0.3", 5196 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 5197 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 5198 + "dev": true, 5199 + "license": "MIT", 5200 + "engines": { 5201 + "node": ">=12" 5202 + }, 5203 + "funding": { 5204 + "url": "https://github.com/sponsors/jonschlinkert" 5205 + } 5206 + }, 5207 + "node_modules/unplugin/node_modules/picomatch": { 5208 + "version": "4.0.3", 5209 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 5210 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 5211 + "dev": true, 5212 + "license": "MIT", 5213 + "engines": { 5214 + "node": ">=12" 5215 + }, 5216 + "funding": { 5217 + "url": "https://github.com/sponsors/jonschlinkert" 5218 + } 5219 + }, 5220 + "node_modules/update-browserslist-db": { 5221 + "version": "1.1.3", 5222 + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", 5223 + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", 5224 + "dev": true, 5225 + "funding": [ 5226 + { 5227 + "type": "opencollective", 5228 + "url": "https://opencollective.com/browserslist" 5229 + }, 5230 + { 5231 + "type": "tidelift", 5232 + "url": "https://tidelift.com/funding/github/npm/browserslist" 5233 + }, 5234 + { 5235 + "type": "github", 5236 + "url": "https://github.com/sponsors/ai" 5237 + } 5238 + ], 5239 + "license": "MIT", 5240 + "dependencies": { 5241 + "escalade": "^3.2.0", 5242 + "picocolors": "^1.1.1" 5243 + }, 5244 + "bin": { 5245 + "update-browserslist-db": "cli.js" 5246 + }, 5247 + "peerDependencies": { 5248 + "browserslist": ">= 4.21.0" 5249 + } 5250 + }, 5251 + "node_modules/uri-js": { 5252 + "version": "4.4.1", 5253 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 5254 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 5255 + "dev": true, 5256 + "license": "BSD-2-Clause", 5257 + "dependencies": { 5258 + "punycode": "^2.1.0" 5259 + } 5260 + }, 5261 + "node_modules/use-sync-external-store": { 5262 + "version": "1.6.0", 5263 + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", 5264 + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", 5265 + "dev": true, 5266 + "license": "MIT", 5267 + "peerDependencies": { 5268 + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" 5269 + } 5270 + }, 5271 + "node_modules/vite": { 5272 + "version": "7.1.11", 5273 + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", 5274 + "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", 5275 + "license": "MIT", 5276 + "dependencies": { 5277 + "esbuild": "^0.25.0", 5278 + "fdir": "^6.5.0", 5279 + "picomatch": "^4.0.3", 5280 + "postcss": "^8.5.6", 5281 + "rollup": "^4.43.0", 5282 + "tinyglobby": "^0.2.15" 5283 + }, 5284 + "bin": { 5285 + "vite": "bin/vite.js" 5286 + }, 5287 + "engines": { 5288 + "node": "^20.19.0 || >=22.12.0" 5289 + }, 5290 + "funding": { 5291 + "url": "https://github.com/vitejs/vite?sponsor=1" 5292 + }, 5293 + "optionalDependencies": { 5294 + "fsevents": "~2.3.3" 5295 + }, 5296 + "peerDependencies": { 5297 + "@types/node": "^20.19.0 || >=22.12.0", 5298 + "jiti": ">=1.21.0", 5299 + "less": "^4.0.0", 5300 + "lightningcss": "^1.21.0", 5301 + "sass": "^1.70.0", 5302 + "sass-embedded": "^1.70.0", 5303 + "stylus": ">=0.54.8", 5304 + "sugarss": "^5.0.0", 5305 + "terser": "^5.16.0", 5306 + "tsx": "^4.8.1", 5307 + "yaml": "^2.4.2" 5308 + }, 5309 + "peerDependenciesMeta": { 5310 + "@types/node": { 5311 + "optional": true 5312 + }, 5313 + "jiti": { 5314 + "optional": true 5315 + }, 5316 + "less": { 5317 + "optional": true 5318 + }, 5319 + "lightningcss": { 5320 + "optional": true 5321 + }, 5322 + "sass": { 5323 + "optional": true 5324 + }, 5325 + "sass-embedded": { 5326 + "optional": true 5327 + }, 5328 + "stylus": { 5329 + "optional": true 5330 + }, 5331 + "sugarss": { 5332 + "optional": true 5333 + }, 5334 + "terser": { 5335 + "optional": true 5336 + }, 5337 + "tsx": { 5338 + "optional": true 5339 + }, 5340 + "yaml": { 5341 + "optional": true 5342 + } 5343 + } 5344 + }, 5345 + "node_modules/vite/node_modules/fdir": { 5346 + "version": "6.5.0", 5347 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 5348 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 5349 + "license": "MIT", 5350 + "engines": { 5351 + "node": ">=12.0.0" 5352 + }, 5353 + "peerDependencies": { 5354 + "picomatch": "^3 || ^4" 5355 + }, 5356 + "peerDependenciesMeta": { 5357 + "picomatch": { 5358 + "optional": true 5359 + } 5360 + } 5361 + }, 5362 + "node_modules/vite/node_modules/picomatch": { 5363 + "version": "4.0.3", 5364 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 5365 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 5366 + "license": "MIT", 5367 + "engines": { 5368 + "node": ">=12" 5369 + }, 5370 + "funding": { 5371 + "url": "https://github.com/sponsors/jonschlinkert" 5372 + } 5373 + }, 5374 + "node_modules/webpack-virtual-modules": { 5375 + "version": "0.6.2", 5376 + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", 5377 + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", 5378 + "dev": true, 5379 + "license": "MIT" 5380 + }, 5381 + "node_modules/which": { 5382 + "version": "2.0.2", 5383 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 5384 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 5385 + "dev": true, 5386 + "license": "ISC", 5387 + "dependencies": { 5388 + "isexe": "^2.0.0" 5389 + }, 5390 + "bin": { 5391 + "node-which": "bin/node-which" 5392 + }, 5393 + "engines": { 5394 + "node": ">= 8" 5395 + } 5396 + }, 5397 + "node_modules/word-wrap": { 5398 + "version": "1.2.5", 5399 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 5400 + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 5401 + "dev": true, 5402 + "license": "MIT", 5403 + "engines": { 5404 + "node": ">=0.10.0" 5405 + } 5406 + }, 5407 + "node_modules/yallist": { 5408 + "version": "3.1.1", 5409 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 5410 + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 5411 + "dev": true, 5412 + "license": "ISC" 5413 + }, 5414 + "node_modules/yocto-queue": { 5415 + "version": "0.1.0", 5416 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 5417 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 5418 + "dev": true, 5419 + "license": "MIT", 5420 + "engines": { 5421 + "node": ">=10" 5422 + }, 5423 + "funding": { 5424 + "url": "https://github.com/sponsors/sindresorhus" 5425 + } 5426 + }, 5427 + "node_modules/zod": { 5428 + "version": "3.25.76", 5429 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", 5430 + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", 5431 + "license": "MIT", 5432 + "funding": { 5433 + "url": "https://github.com/sponsors/colinhacks" 5434 + } 5435 + } 5436 + } 5437 + }
+39
package.json
··· 1 + { 2 + "name": "skeetlonger", 3 + "private": true, 4 + "version": "0.0.0", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite", 8 + "build": "tsc -b && vite build", 9 + "lint": "eslint .", 10 + "preview": "vite preview" 11 + }, 12 + "dependencies": { 13 + "@atproto/api": "^0.16.11", 14 + "@atproto/oauth-client-browser": "^0.3.33", 15 + "@tailwindcss/vite": "^4.1.14", 16 + "react": "^19.1.1", 17 + "react-dom": "^19.1.1", 18 + "tailwindcss": "^4.1.14" 19 + }, 20 + "devDependencies": { 21 + "@eslint/js": "^9.36.0", 22 + "@tanstack/react-router": "^1.133.15", 23 + "@tanstack/router-plugin": "^1.133.15", 24 + "@types/node": "^24.6.0", 25 + "@types/react": "^19.1.16", 26 + "@types/react-dom": "^19.1.9", 27 + "@vitejs/plugin-react": "^5.0.4", 28 + "babel-plugin-react-compiler": "^19.1.0-rc.3", 29 + "eslint": "^9.36.0", 30 + "eslint-plugin-react-hooks": "^5.2.0", 31 + "eslint-plugin-react-refresh": "^0.4.22", 32 + "globals": "^16.4.0", 33 + "typescript": "~5.9.3", 34 + "typescript-eslint": "^8.45.0", 35 + "unplugin-auto-import": "^20.2.0", 36 + "unplugin-icons": "^22.5.0", 37 + "vite": "^7.1.7" 38 + } 39 + }
+22
public/client-metadata.json
··· 1 + { 2 + "client_id": "https://local3768forumtest.whey.party/client-metadata.json", 3 + "client_name": "SkeetLonger", 4 + "client_uri": "https://local3768forumtest.whey.party", 5 + "logo_uri": "https://local3768forumtest.whey.party/logo192.png", 6 + "tos_uri": "https://local3768forumtest.whey.party/terms-of-service", 7 + "policy_uri": "https://local3768forumtest.whey.party/privacy-policy", 8 + "redirect_uris": [ 9 + "https://local3768forumtest.whey.party/callback" 10 + ], 11 + "scope": "atproto transition:generic", 12 + "grant_types": [ 13 + "authorization_code", 14 + "refresh_token" 15 + ], 16 + "response_types": [ 17 + "code" 18 + ], 19 + "token_endpoint_auth_method": "none", 20 + "application_type": "web", 21 + "dpop_bound_access_tokens": true 22 + }
+1
public/vite.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
+42
src/App.css
··· 1 + #root { 2 + max-width: 1280px; 3 + margin: 0 auto; 4 + padding: 2rem; 5 + text-align: center; 6 + } 7 + 8 + .logo { 9 + height: 6em; 10 + padding: 1.5em; 11 + will-change: filter; 12 + transition: filter 300ms; 13 + } 14 + .logo:hover { 15 + filter: drop-shadow(0 0 2em #646cffaa); 16 + } 17 + .logo.react:hover { 18 + filter: drop-shadow(0 0 2em #61dafbaa); 19 + } 20 + 21 + @keyframes logo-spin { 22 + from { 23 + transform: rotate(0deg); 24 + } 25 + to { 26 + transform: rotate(360deg); 27 + } 28 + } 29 + 30 + @media (prefers-reduced-motion: no-preference) { 31 + a:nth-of-type(2) .logo { 32 + animation: logo-spin infinite 20s linear; 33 + } 34 + } 35 + 36 + .card { 37 + padding: 2em; 38 + } 39 + 40 + .read-the-docs { 41 + color: #888; 42 + }
+44
src/App.tsx
··· 1 + import { useState } from 'react' 2 + import reactLogo from './assets/react.svg' 3 + import viteLogo from '/vite.svg' 4 + import './App.css' 5 + import Login from './components/Login' 6 + import { UnifiedAuthProvider } from './providers/UnifiedAuthProvider' 7 + 8 + function App() { 9 + const [count, setCount] = useState(0) 10 + 11 + return ( 12 + <> 13 + {/* <div> 14 + <a href="https://vite.dev" target="_blank"> 15 + <img src={viteLogo} className="logo" alt="Vite logo" /> 16 + </a> 17 + <a href="https://react.dev" target="_blank"> 18 + <img src={reactLogo} className="logo react" alt="React logo" /> 19 + </a> 20 + </div> */} 21 + <h1>SkeetLonger</h1> 22 + 23 + <div className="card"> 24 + 25 + <UnifiedAuthProvider> 26 + <Login compact={false}></Login> 27 + </UnifiedAuthProvider> 28 + 29 + 30 + {/* <button onClick={() => setCount((count) => count + 1)}> 31 + count is {count} 32 + </button> 33 + <p> 34 + Edit <code>src/App.tsx</code> and save to test HMR 35 + </p> */} 36 + </div> 37 + {/* <p className="read-the-docs"> 38 + Click on the Vite and React logos to learn more 39 + </p> */} 40 + </> 41 + ) 42 + } 43 + 44 + export default App
+1
src/assets/react.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
+10
src/auto-imports.d.ts
··· 1 + /* eslint-disable */ 2 + /* prettier-ignore */ 3 + // @ts-nocheck 4 + // noinspection JSUnusedGlobalSymbols 5 + // Generated by unplugin-auto-import 6 + // biome-ignore lint: disable 7 + export {} 8 + declare global { 9 + 10 + }
+251
src/components/Login.tsx
··· 1 + // src/components/Login.tsx 2 + import React, { useEffect, useState, useRef } from "react"; 3 + import { useAuth } from "../providers/UnifiedAuthProvider.tsx"; 4 + import { Agent } from "@atproto/api"; 5 + 6 + // --- 1. The Main Component (Orchestrator with `compact` prop) --- 7 + export default function Login({ compact = false }: { compact?: boolean }) { 8 + const { status, agent, logout } = useAuth(); 9 + 10 + // Loading state can be styled differently based on the prop 11 + if (status === "loading") { 12 + return ( 13 + <div 14 + className={ 15 + compact 16 + ? "flex items-center justify-center p-1" 17 + : "p-6 bg-gray-100 dark:bg-gray-900 rounded-xl shadow border border-gray-200 dark:border-gray-800 mt-6 mx-4 flex justify-center items-center h-[280px]" 18 + } 19 + > 20 + <span 21 + className={`border-t-transparent rounded-full animate-spin ${ 22 + compact 23 + ? "w-5 h-5 border-2 border-gray-400" 24 + : "w-8 h-8 border-4 border-gray-400" 25 + }`} 26 + /> 27 + </div> 28 + ); 29 + } 30 + 31 + // --- LOGGED IN STATE --- 32 + if (status === "signedIn") { 33 + // Large view 34 + if (!compact) { 35 + return ( 36 + <div className="p-6 bg-gray-100 dark:bg-gray-900 rounded-xl shadow border border-gray-200 dark:border-gray-800 mt-6 mx-4"> 37 + <div className="flex flex-col items-center justify-center text-center"> 38 + <p className="text-lg font-semibold mb-4 text-gray-800 dark:text-gray-100"> 39 + You are logged in! 40 + </p> 41 + <ProfileThing agent={agent} large /> 42 + <button 43 + onClick={logout} 44 + className="bg-gray-600 mt-4 hover:bg-gray-700 text-white rounded px-6 py-2 font-semibold text-base transition-colors" 45 + > 46 + Log out 47 + </button> 48 + </div> 49 + </div> 50 + ); 51 + } 52 + // Compact view 53 + return ( 54 + <div className="flex items-center gap-4"> 55 + <ProfileThing agent={agent} /> 56 + <button 57 + onClick={logout} 58 + className="text-sm bg-gray-600 hover:bg-gray-700 text-white rounded px-3 py-1 font-medium transition-colors" 59 + > 60 + Log out 61 + </button> 62 + </div> 63 + ); 64 + } 65 + 66 + // --- LOGGED OUT STATE --- 67 + if (!compact) { 68 + // Large view renders the form directly in the card 69 + return ( 70 + <div className="p-6 bg-gray-100 dark:bg-gray-900 rounded-xl shadow border border-gray-200 dark:border-gray-800 mt-6 mx-4"> 71 + <UnifiedLoginForm /> 72 + </div> 73 + ); 74 + } 75 + 76 + // Compact view renders a button that toggles the form in a dropdown 77 + return <CompactLoginButton />; 78 + } 79 + 80 + // --- 2. The Reusable, Self-Contained Login Form Component --- 81 + export function UnifiedLoginForm() { 82 + const [mode, setMode] = useState<"oauth" | "password">("oauth"); 83 + 84 + return ( 85 + <div> 86 + <div className="flex border-b border-gray-200 dark:border-gray-700 mb-4"> 87 + <TabButton 88 + label="OAuth" 89 + active={mode === "oauth"} 90 + onClick={() => setMode("oauth")} 91 + /> 92 + <TabButton 93 + label="Password" 94 + active={mode === "password"} 95 + onClick={() => setMode("password")} 96 + /> 97 + </div> 98 + {mode === "oauth" ? <OAuthForm /> : <PasswordForm />} 99 + </div> 100 + ); 101 + } 102 + 103 + // --- 3. Helper components for layouts, forms, and UI --- 104 + 105 + // A new component to contain the logic for the compact dropdown 106 + const CompactLoginButton = () => { 107 + const [showForm, setShowForm] = useState(false); 108 + const formRef = useRef<HTMLDivElement>(null); 109 + 110 + useEffect(() => { 111 + function handleClickOutside(event: MouseEvent) { 112 + if (formRef.current && !formRef.current.contains(event.target as Node)) { 113 + setShowForm(false); 114 + } 115 + } 116 + if (showForm) { 117 + document.addEventListener("mousedown", handleClickOutside); 118 + } 119 + return () => { 120 + document.removeEventListener("mousedown", handleClickOutside); 121 + }; 122 + }, [showForm]); 123 + 124 + return ( 125 + <div className="relative" ref={formRef}> 126 + <button 127 + onClick={() => setShowForm(!showForm)} 128 + className="text-sm bg-gray-600 hover:bg-gray-700 text-white rounded px-3 py-1 font-medium transition-colors" 129 + > 130 + Log in 131 + </button> 132 + {showForm && ( 133 + <div className="absolute top-full right-0 mt-2 w-80 bg-white dark:bg-gray-900 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 p-4 z-50"> 134 + <UnifiedLoginForm /> 135 + </div> 136 + )} 137 + </div> 138 + ); 139 + }; 140 + 141 + const TabButton = ({ label, active, onClick }: { label: string; active: boolean; onClick: () => void; }) => ( 142 + <button 143 + onClick={onClick} 144 + className={`px-4 py-2 text-sm font-medium transition-colors ${ 145 + active 146 + ? "text-gray-600 dark:text-gray-200 border-b-2 border-gray-500" 147 + : "text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200" 148 + }`} 149 + > 150 + {label} 151 + </button> 152 + ); 153 + 154 + const OAuthForm = () => { 155 + const { loginWithOAuth } = useAuth(); 156 + const [handle, setHandle] = useState(""); 157 + 158 + useEffect(() => { 159 + const lastHandle = localStorage.getItem("lastHandle"); 160 + if (lastHandle) setHandle(lastHandle); 161 + }, []); 162 + 163 + const handleSubmit = (e: React.FormEvent) => { 164 + e.preventDefault(); 165 + if (handle.trim()) { 166 + localStorage.setItem("lastHandle", handle); 167 + loginWithOAuth(handle); 168 + } 169 + }; 170 + return ( 171 + <form onSubmit={handleSubmit} className="flex flex-col gap-3"> 172 + <p className="text-xs text-gray-500 dark:text-gray-400">Sign in with AT. Your password is never shared.</p> 173 + <input type="text" placeholder="handle.bsky.social" value={handle} onChange={(e) => setHandle(e.target.value)} className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-sm focus:outline-none focus:ring-2 focus:ring-gray-500" /> 174 + <button type="submit" className="bg-gray-600 hover:bg-gray-700 text-white rounded px-4 py-2 font-medium text-sm transition-colors">Log in</button> 175 + </form> 176 + ); 177 + }; 178 + 179 + const PasswordForm = () => { 180 + const { loginWithPassword } = useAuth(); 181 + const [user, setUser] = useState(""); 182 + const [password, setPassword] = useState(""); 183 + const [serviceURL, setServiceURL] = useState("pds.minito.dev"); 184 + const [error, setError] = useState<string | null>(null); 185 + 186 + useEffect(() => { 187 + const lastHandle = localStorage.getItem("lastHandle"); 188 + if (lastHandle) setUser(lastHandle); 189 + }, []); 190 + 191 + const handleSubmit = async (e: React.FormEvent) => { 192 + e.preventDefault(); 193 + setError(null); 194 + try { 195 + localStorage.setItem("lastHandle", user); 196 + await loginWithPassword(user, password, `https://${serviceURL}`); 197 + } catch (err) { 198 + setError("Login failed. Check your handle and App Password."); 199 + } 200 + }; 201 + 202 + return ( 203 + <form onSubmit={handleSubmit} className="flex flex-col gap-3"> 204 + <p className="text-xs text-red-500 dark:text-red-400">Warning: Less secure. Use an App Password.</p> 205 + <input type="text" placeholder="handle.bsky.social" value={user} onChange={(e) => setUser(e.target.value)} className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-sm focus:outline-none focus:ring-2 focus:ring-gray-500" autoComplete="username" /> 206 + <input type="password" placeholder="App Password" value={password} onChange={(e) => setPassword(e.target.value)} className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-sm focus:outline-none focus:ring-2 focus:ring-gray-500" autoComplete="current-password" /> 207 + <input type="text" placeholder="PDS (e.g., bsky.social)" value={serviceURL} onChange={(e) => setServiceURL(e.target.value)} className="px-3 py-2 rounded border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 text-sm focus:outline-none focus:ring-2 focus:ring-gray-500" /> 208 + {error && <p className="text-xs text-red-500">{error}</p>} 209 + <button type="submit" className="bg-gray-600 hover:bg-gray-700 text-white rounded px-4 py-2 font-medium text-sm transition-colors">Log in</button> 210 + </form> 211 + ); 212 + }; 213 + 214 + // --- Profile Component (now supports a `large` prop for styling) --- 215 + export const ProfileThing = ({ agent, large = false }: { agent: Agent | null; large?: boolean }) => { 216 + const [profile, setProfile] = useState<any>(null); 217 + 218 + useEffect(() => { 219 + const fetchUser = async () => { 220 + const did = (agent as any)?.session?.did ?? (agent as any)?.assertDid; 221 + if (!did) return; 222 + try { 223 + const res = await agent!.getProfile({ actor: did }); 224 + setProfile(res.data); 225 + } catch (e) { console.error("Failed to fetch profile", e); } 226 + }; 227 + if (agent) fetchUser(); 228 + }, [agent]); 229 + 230 + if (!profile) { 231 + return ( // Skeleton loader 232 + <div className={`flex items-center gap-2.5 animate-pulse ${large ? 'mb-1' : ''}`}> 233 + <div className={`rounded-full bg-gray-300 dark:bg-gray-700 ${large ? 'w-10 h-10' : 'w-[30px] h-[30px]'}`} /> 234 + <div className="flex flex-col gap-2"> 235 + <div className={`bg-gray-300 dark:bg-gray-700 rounded ${large ? 'h-4 w-28' : 'h-3 w-20'}`} /> 236 + <div className={`bg-gray-300 dark:bg-gray-700 rounded ${large ? 'h-4 w-20' : 'h-3 w-16'}`} /> 237 + </div> 238 + </div> 239 + ); 240 + } 241 + 242 + return ( 243 + <div className={`flex flex-row items-center gap-2.5 ${large ? 'mb-1' : ''}`}> 244 + <img src={profile?.avatar} alt="avatar" className={`object-cover rounded-full ${large ? 'w-10 h-10' : 'w-[30px] h-[30px]'}`} /> 245 + <div className="flex flex-col items-start text-left"> 246 + <div className={`font-medium ${large ? 'text-gray-800 dark:text-gray-100 text-md' : 'text-gray-800 dark:text-gray-100 text-sm'}`}>{profile?.displayName}</div> 247 + <div className={` ${large ? 'text-gray-500 dark:text-gray-400 text-sm' : 'text-gray-500 dark:text-gray-400 text-xs'}`}>@{profile?.handle}</div> 248 + </div> 249 + </div> 250 + ); 251 + };
+68
src/index.css
··· 1 + :root { 2 + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; 3 + line-height: 1.5; 4 + font-weight: 400; 5 + 6 + color-scheme: light dark; 7 + color: rgba(255, 255, 255, 0.87); 8 + background-color: #242424; 9 + 10 + font-synthesis: none; 11 + text-rendering: optimizeLegibility; 12 + -webkit-font-smoothing: antialiased; 13 + -moz-osx-font-smoothing: grayscale; 14 + } 15 + 16 + a { 17 + font-weight: 500; 18 + color: #646cff; 19 + text-decoration: inherit; 20 + } 21 + a:hover { 22 + color: #535bf2; 23 + } 24 + 25 + body { 26 + margin: 0; 27 + display: flex; 28 + place-items: center; 29 + min-width: 320px; 30 + min-height: 100vh; 31 + } 32 + 33 + h1 { 34 + font-size: 3.2em; 35 + line-height: 1.1; 36 + } 37 + 38 + button { 39 + border-radius: 8px; 40 + border: 1px solid transparent; 41 + padding: 0.6em 1.2em; 42 + font-size: 1em; 43 + font-weight: 500; 44 + font-family: inherit; 45 + background-color: #1a1a1a; 46 + cursor: pointer; 47 + transition: border-color 0.25s; 48 + } 49 + button:hover { 50 + border-color: #646cff; 51 + } 52 + button:focus, 53 + button:focus-visible { 54 + outline: 4px auto -webkit-focus-ring-color; 55 + } 56 + 57 + @media (prefers-color-scheme: light) { 58 + :root { 59 + color: #213547; 60 + background-color: #ffffff; 61 + } 62 + a:hover { 63 + color: #747bff; 64 + } 65 + button { 66 + background-color: #f9f9f9; 67 + } 68 + }
+10
src/main.tsx
··· 1 + import { StrictMode } from 'react' 2 + import { createRoot } from 'react-dom/client' 3 + import './index.css' 4 + import App from './App.tsx' 5 + 6 + createRoot(document.getElementById('root')!).render( 7 + <StrictMode> 8 + <App /> 9 + </StrictMode>, 10 + )
+207
src/providers/UnifiedAuthProvider.tsx
··· 1 + // src/providers/UnifiedAuthProvider.tsx 2 + // Import both Agent and the (soon to be deprecated) AtpAgent 3 + import { Agent, AtpAgent, type AtpSessionData } from "@atproto/api"; 4 + import { 5 + type OAuthSession, 6 + TokenInvalidError, 7 + TokenRefreshError, 8 + TokenRevokedError, 9 + } from "@atproto/oauth-client-browser"; 10 + import React, { 11 + createContext, 12 + use, 13 + useCallback, 14 + useEffect, 15 + useState, 16 + } from "react"; 17 + 18 + import { oauthClient } from "../utils/oauthClient"; // Adjust path if needed 19 + 20 + // Define the unified status and authentication method 21 + type AuthStatus = "loading" | "signedIn" | "signedOut"; 22 + type AuthMethod = "password" | "oauth" | null; 23 + 24 + interface AuthContextValue { 25 + agent: Agent | null; // The agent is typed as the base class `Agent` 26 + status: AuthStatus; 27 + authMethod: AuthMethod; 28 + loginWithPassword: ( 29 + user: string, 30 + password: string, 31 + service?: string, 32 + ) => Promise<void>; 33 + loginWithOAuth: (handleOrPdsUrl: string) => Promise<void>; 34 + logout: () => Promise<void>; 35 + } 36 + 37 + const AuthContext = createContext<AuthContextValue>({} as AuthContextValue); 38 + 39 + export const UnifiedAuthProvider = ({ 40 + children, 41 + }: { 42 + children: React.ReactNode; 43 + }) => { 44 + // The state is typed as the base class `Agent`, which accepts both `Agent` and `AtpAgent` instances. 45 + const [agent, setAgent] = useState<Agent | null>(null); 46 + const [status, setStatus] = useState<AuthStatus>("loading"); 47 + const [authMethod, setAuthMethod] = useState<AuthMethod>(null); 48 + const [oauthSession, setOauthSession] = useState<OAuthSession | null>(null); 49 + 50 + // Unified Initialization Logic 51 + const initialize = useCallback(async () => { 52 + // --- 1. Try OAuth initialization first --- 53 + try { 54 + console.log("Initializing OAuth."); 55 + const oauthResult = await oauthClient.init(); 56 + if (oauthResult) { 57 + console.log("OAuth session restored."); 58 + const apiAgent = new Agent(oauthResult.session); // Standard Agent 59 + setAgent(apiAgent); 60 + setOauthSession(oauthResult.session); 61 + setAuthMethod("oauth"); 62 + setStatus("signedIn"); 63 + return; // Success 64 + } 65 + } catch (e) { 66 + console.error("OAuth init failed, checking password session.", e); 67 + } 68 + 69 + // --- 2. If no OAuth, try password-based session using AtpAgent --- 70 + try { 71 + const service = localStorage.getItem("service"); 72 + const sessionString = localStorage.getItem("sess"); 73 + 74 + if (service && sessionString) { 75 + // /*mass comment*/ console.log("Resuming password-based session using AtpAgent..."); 76 + // Use the original, working AtpAgent logic 77 + const apiAgent = new AtpAgent({ service }); 78 + const session: AtpSessionData = JSON.parse(sessionString); 79 + await apiAgent.resumeSession(session); 80 + 81 + // /*mass comment*/ console.log("Password-based session resumed successfully."); 82 + setAgent(apiAgent); // This works because AtpAgent is a subclass of Agent 83 + setAuthMethod("password"); 84 + setStatus("signedIn"); 85 + return; // Success 86 + } 87 + } catch (e) { 88 + console.error("Failed to resume password-based session.", e); 89 + localStorage.removeItem("sess"); 90 + localStorage.removeItem("service"); 91 + } 92 + 93 + // --- 3. If neither worked, user is signed out --- 94 + // /*mass comment*/ console.log("No active session found."); 95 + setStatus("signedOut"); 96 + setAgent(null); 97 + setAuthMethod(null); 98 + }, []); 99 + 100 + useEffect(() => { 101 + const handleOAuthSessionDeleted = ( 102 + event: CustomEvent<{ sub: string; cause: TokenRefreshError | TokenRevokedError | TokenInvalidError }>, 103 + ) => { 104 + console.error(`OAuth Session for ${event.detail.sub} was deleted.`, event.detail.cause); 105 + setAgent(null); 106 + setOauthSession(null); 107 + setAuthMethod(null); 108 + setStatus("signedOut"); 109 + }; 110 + 111 + oauthClient.addEventListener("deleted", handleOAuthSessionDeleted as EventListener); 112 + initialize(); 113 + 114 + return () => { 115 + oauthClient.removeEventListener("deleted", handleOAuthSessionDeleted as EventListener); 116 + }; 117 + }, [initialize]); 118 + 119 + // --- Login Methods --- 120 + const loginWithPassword = async ( 121 + user: string, 122 + password: string, 123 + service: string = "https://pds.minito.dev", 124 + ) => { 125 + if (status !== "signedOut") return; 126 + setStatus("loading"); 127 + try { 128 + let sessionData: AtpSessionData | undefined; 129 + // Use the AtpAgent for its simple login and session persistence 130 + const apiAgent = new AtpAgent({ 131 + service, 132 + persistSession: (_evt, sess) => { 133 + sessionData = sess; 134 + }, 135 + }); 136 + await apiAgent.login({ identifier: user, password }); 137 + 138 + if (sessionData) { 139 + localStorage.setItem("service", service); 140 + localStorage.setItem("sess", JSON.stringify(sessionData)); 141 + setAgent(apiAgent); // Store the AtpAgent instance in our state 142 + setAuthMethod("password"); 143 + setStatus("signedIn"); 144 + console.log("Successfully logged in with password."); 145 + } else { 146 + throw new Error("Session data not persisted after login."); 147 + } 148 + } catch (e) { 149 + console.error("Password login failed:", e); 150 + setStatus("signedOut"); 151 + throw e; 152 + } 153 + }; 154 + 155 + const loginWithOAuth = useCallback(async (handleOrPdsUrl: string) => { 156 + if (status !== "signedOut") return; 157 + try { 158 + sessionStorage.setItem("postLoginRedirect", window.location.pathname + window.location.search); 159 + await oauthClient.signIn(handleOrPdsUrl); 160 + } catch (err) { 161 + console.error("OAuth sign-in aborted or failed:", err); 162 + } 163 + }, [status]); 164 + 165 + // --- Unified Logout --- 166 + const logout = useCallback(async () => { 167 + if (status !== "signedIn" || !agent) return; 168 + setStatus("loading"); 169 + 170 + try { 171 + if (authMethod === "oauth" && oauthSession) { 172 + await oauthClient.revoke(oauthSession.sub); 173 + // /*mass comment*/ console.log("OAuth session revoked."); 174 + } else if (authMethod === "password") { 175 + localStorage.removeItem("service"); 176 + localStorage.removeItem("sess"); 177 + // AtpAgent has its own logout methods 178 + await (agent as AtpAgent).com.atproto.server.deleteSession(); 179 + // /*mass comment*/ console.log("Password-based session deleted."); 180 + } 181 + } catch (e) { 182 + console.error("Logout failed:", e); 183 + } finally { 184 + setAgent(null); 185 + setAuthMethod(null); 186 + setOauthSession(null); 187 + setStatus("signedOut"); 188 + } 189 + }, [status, authMethod, agent, oauthSession]); 190 + 191 + return ( 192 + <AuthContext 193 + value={{ 194 + agent, 195 + status, 196 + authMethod, 197 + loginWithPassword, 198 + loginWithOAuth, 199 + logout, 200 + }} 201 + > 202 + {children} 203 + </AuthContext> 204 + ); 205 + }; 206 + 207 + export const useAuth = () => use(AuthContext);
+35
src/routeTree.gen.ts
··· 1 + /* eslint-disable */ 2 + 3 + // @ts-nocheck 4 + 5 + // noinspection JSUnusedGlobalSymbols 6 + 7 + // This file was automatically generated by TanStack Router. 8 + // You should NOT make any changes in this file as it will be overwritten. 9 + // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. 10 + 11 + import { Route as rootRouteImport } from './routes/__root' 12 + 13 + export interface FileRoutesByFullPath {} 14 + export interface FileRoutesByTo {} 15 + export interface FileRoutesById { 16 + __root__: typeof rootRouteImport 17 + } 18 + export interface FileRouteTypes { 19 + fileRoutesByFullPath: FileRoutesByFullPath 20 + fullPaths: never 21 + fileRoutesByTo: FileRoutesByTo 22 + to: never 23 + id: '__root__' 24 + fileRoutesById: FileRoutesById 25 + } 26 + export interface RootRouteChildren {} 27 + 28 + declare module '@tanstack/react-router' { 29 + interface FileRoutesByPath {} 30 + } 31 + 32 + const rootRouteChildren: RootRouteChildren = {} 33 + export const routeTree = rootRouteImport 34 + ._addFileChildren(rootRouteChildren) 35 + ._addFileTypes<FileRouteTypes>()
+23
src/routes/__root.tsx
··· 1 + import * as React from 'react' 2 + import { Outlet, createRootRoute } from '@tanstack/react-router' 3 + import { UnifiedAuthProvider } from '../providers/UnifiedAuthProvider' 4 + import Login from '../components/Login' 5 + 6 + export const Route = createRootRoute({ 7 + component: RootComponent, 8 + }) 9 + 10 + function RootComponent() { 11 + return ( 12 + <React.Fragment> 13 + <h1>SkeetLonger</h1> 14 + 15 + <div className="flex items-center gap-2"> 16 + <UnifiedAuthProvider> 17 + <Login compact={false}></Login> 18 + </UnifiedAuthProvider> 19 + </div> 20 + <Outlet /> 21 + </React.Fragment> 22 + ) 23 + }
+14
src/utils/oauthClient.ts
··· 1 + import { BrowserOAuthClient, type ClientMetadata } from '@atproto/oauth-client-browser'; 2 + 3 + // i tried making this https://pds-nd.whey.party but cors is annoying as fuck 4 + const handleResolverPDS = 'https://bsky.social'; 5 + 6 + // eslint-disable-next-line @typescript-eslint/ban-ts-comment 7 + // @ts-ignore this should be fine ? the vite plugin should generate this before errors 8 + import clientMetadata from '../../public/client-metadata.json' with { type: 'json' }; 9 + 10 + export const oauthClient = new BrowserOAuthClient({ 11 + // The type assertion is needed because the static import isn't strictly typed 12 + clientMetadata: clientMetadata as ClientMetadata, 13 + handleResolver: handleResolverPDS, 14 + });
+28
tsconfig.app.json
··· 1 + { 2 + "compilerOptions": { 3 + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 + "target": "ES2022", 5 + "useDefineForClassFields": true, 6 + "lib": ["ES2022", "DOM", "DOM.Iterable"], 7 + "module": "ESNext", 8 + "types": ["vite/client"], 9 + "skipLibCheck": true, 10 + 11 + /* Bundler mode */ 12 + "moduleResolution": "bundler", 13 + "allowImportingTsExtensions": true, 14 + "verbatimModuleSyntax": true, 15 + "moduleDetection": "force", 16 + "noEmit": true, 17 + "jsx": "react-jsx", 18 + 19 + /* Linting */ 20 + "strict": true, 21 + "noUnusedLocals": true, 22 + "noUnusedParameters": true, 23 + "erasableSyntaxOnly": true, 24 + "noFallthroughCasesInSwitch": true, 25 + "noUncheckedSideEffectImports": true 26 + }, 27 + "include": ["src"] 28 + }
+7
tsconfig.json
··· 1 + { 2 + "files": [], 3 + "references": [ 4 + { "path": "./tsconfig.app.json" }, 5 + { "path": "./tsconfig.node.json" } 6 + ] 7 + }
+26
tsconfig.node.json
··· 1 + { 2 + "compilerOptions": { 3 + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 + "target": "ES2023", 5 + "lib": ["ES2023"], 6 + "module": "ESNext", 7 + "types": ["node"], 8 + "skipLibCheck": true, 9 + 10 + /* Bundler mode */ 11 + "moduleResolution": "bundler", 12 + "allowImportingTsExtensions": true, 13 + "verbatimModuleSyntax": true, 14 + "moduleDetection": "force", 15 + "noEmit": true, 16 + 17 + /* Linting */ 18 + "strict": true, 19 + "noUnusedLocals": true, 20 + "noUnusedParameters": true, 21 + "erasableSyntaxOnly": true, 22 + "noFallthroughCasesInSwitch": true, 23 + "noUncheckedSideEffectImports": true 24 + }, 25 + "include": ["vite.config.ts"] 26 + }
+69
vite.config.ts
··· 1 + import { resolve } from "node:path"; 2 + 3 + import tailwindcss from "@tailwindcss/vite"; 4 + import { TanStackRouterVite } from "@tanstack/router-plugin/vite"; 5 + import viteReact from "@vitejs/plugin-react"; 6 + import AutoImport from 'unplugin-auto-import/vite' 7 + import IconsResolver from 'unplugin-icons/resolver' 8 + import Icons from 'unplugin-icons/vite' 9 + import { defineConfig } from "vite"; 10 + 11 + import { generateMetadataPlugin } from "./oauthdev.mts"; 12 + 13 + const PROD_URL = "https://skeetlonger.app" 14 + //This will need to update every time you start the ngrok tunnel 15 + const DEV_URL = "https://7d3e-198-51-100-42.ngrok-free.app" 16 + 17 + function shp(url: string): string { 18 + return url.replace(/^https?:\/\//, ''); 19 + } 20 + 21 + // https://vite.dev/config/ 22 + export default defineConfig({ 23 + plugins: [ 24 + generateMetadataPlugin({ 25 + prod: PROD_URL, 26 + dev: DEV_URL, 27 + }), 28 + TanStackRouterVite({ autoCodeSplitting: true }), 29 + viteReact({ 30 + babel: { 31 + plugins: ['babel-plugin-react-compiler'], 32 + }, 33 + }), 34 + tailwindcss(), 35 + AutoImport({ 36 + include: [ 37 + /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx 38 + ], 39 + resolvers: [ 40 + IconsResolver({ 41 + prefix: 'Icon', 42 + extension: 'jsx', 43 + }), 44 + ], 45 + dts: 'src/auto-imports.d.ts', 46 + }), 47 + Icons({ 48 + autoInstall: true, 49 + compiler: 'jsx', 50 + jsx: 'react' 51 + }), 52 + ], 53 + // test: { 54 + // globals: true, 55 + // environment: 'jsdom', 56 + // }, 57 + resolve: { 58 + alias: { 59 + "@": resolve(__dirname, "./src"), 60 + "~": resolve(__dirname, "./src"), 61 + }, 62 + }, 63 + server: { 64 + allowedHosts: [shp(PROD_URL),shp(DEV_URL)], 65 + }, 66 + css: { 67 + devSourcemap: true, 68 + }, 69 + })