commit 9631e92147a1535b8ac5b3ffc5d123db39356b14 Author: TBQ Guy Date: Sat Dec 27 21:43:50 2025 +0530 Initial commit - build-valuecurve source code diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cdc4504 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Dependencies +node_modules/ + +# Build outputs +.svelte-kit/ +build/ +dist/ +_site/ + +# Environment +.env +.env.local + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Quarto +.quarto/ + +# Logs +*.log diff --git a/Caddyfile.local b/Caddyfile.local new file mode 100644 index 0000000..a75fd89 --- /dev/null +++ b/Caddyfile.local @@ -0,0 +1,17 @@ +# Local Caddyfile for build.valuecurve.co testing +# Run with: caddy run --config Caddyfile.local + +localhost:8080 { + root * "/Users/sarfaraz.mulla/01-context-lab/SkillBox-Learning/deeplearning.ai tutorials/build-valuecurve/dist" + + # Proxy API calls to backend (mirrors production) + handle /api/* { + reverse_proxy localhost:8000 + } + + # Serve static files with SPA fallback + handle { + try_files {path} {path}/ {path}/index.html /index.html + file_server + } +} diff --git a/_quarto.yml b/_quarto.yml new file mode 100644 index 0000000..09abe1f --- /dev/null +++ b/_quarto.yml @@ -0,0 +1,15 @@ +project: + type: website + output-dir: _site + +website: + title: "Build ValueCurve" + +format: + html: + theme: cosmo + toc: true + toc-location: right + toc-depth: 3 + embed-resources: true + mainfont: "Helvetica Neue" diff --git a/apps/flowchart/index.html b/apps/flowchart/index.html new file mode 100644 index 0000000..9094997 --- /dev/null +++ b/apps/flowchart/index.html @@ -0,0 +1,12 @@ + + + + + + Statistical Test Decision Flowchart - Svelte + + +
+ + + diff --git a/apps/flowchart/package-lock.json b/apps/flowchart/package-lock.json new file mode 100644 index 0000000..924af47 --- /dev/null +++ b/apps/flowchart/package-lock.json @@ -0,0 +1,1454 @@ +{ + "name": "statistical-test-flowchart-svelte", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "statistical-test-flowchart-svelte", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@xyflow/svelte": "^1.5.0", + "svelte": "^5.46.0", + "vite": "^7.3.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz", + "integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz", + "integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz", + "integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz", + "integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz", + "integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz", + "integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz", + "integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz", + "integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz", + "integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz", + "integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz", + "integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz", + "integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz", + "integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz", + "integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz", + "integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", + "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz", + "integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz", + "integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz", + "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz", + "integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz", + "integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz", + "integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@svelte-put/shortcut": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@svelte-put/shortcut/-/shortcut-4.1.0.tgz", + "integrity": "sha512-wImNEIkbxAIWFqlfuhcbC+jRPDeRa/uJGIXHMEVVD+jqL9xCwWNnkGQJ6Qb2XVszuRLHlb8SGZDL3Io/h3vs8w==", + "license": "MIT", + "peerDependencies": { + "svelte": "^5.1.0" + } + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", + "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.1.tgz", + "integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==", + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", + "debug": "^4.4.1", + "deepmerge": "^4.3.1", + "magic-string": "^0.30.17", + "vitefu": "^1.1.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.3.0 || ^7.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.1.tgz", + "integrity": "sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0", + "svelte": "^5.0.0", + "vite": "^6.3.0 || ^7.0.0" + } + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@xyflow/svelte": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@xyflow/svelte/-/svelte-1.5.0.tgz", + "integrity": "sha512-kHJVwMtabN7xthDJqLvx5wGT5qjOAVV90J9a26geDS51lrGsGb7CCxNRiZCMuVDlRkczGVIy9dkqdph6FL4slQ==", + "license": "MIT", + "dependencies": { + "@svelte-put/shortcut": "^4.1.0", + "@xyflow/system": "0.0.74" + }, + "peerDependencies": { + "svelte": "^5.25.0" + } + }, + "node_modules/@xyflow/system": { + "version": "0.0.74", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.74.tgz", + "integrity": "sha512-7v7B/PkiVrkdZzSbL+inGAo6tkR/WQHHG0/jhSvLQToCsfa8YubOGmBYd1s08tpKpihdHDZFwzQZeR69QSBb4Q==", + "license": "MIT", + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-interpolate": "^3.0.1", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devalue": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", + "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "license": "MIT" + }, + "node_modules/esrap": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.1.tgz", + "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz", + "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.54.0", + "@rollup/rollup-android-arm64": "4.54.0", + "@rollup/rollup-darwin-arm64": "4.54.0", + "@rollup/rollup-darwin-x64": "4.54.0", + "@rollup/rollup-freebsd-arm64": "4.54.0", + "@rollup/rollup-freebsd-x64": "4.54.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.54.0", + "@rollup/rollup-linux-arm-musleabihf": "4.54.0", + "@rollup/rollup-linux-arm64-gnu": "4.54.0", + "@rollup/rollup-linux-arm64-musl": "4.54.0", + "@rollup/rollup-linux-loong64-gnu": "4.54.0", + "@rollup/rollup-linux-ppc64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-musl": "4.54.0", + "@rollup/rollup-linux-s390x-gnu": "4.54.0", + "@rollup/rollup-linux-x64-gnu": "4.54.0", + "@rollup/rollup-linux-x64-musl": "4.54.0", + "@rollup/rollup-openharmony-arm64": "4.54.0", + "@rollup/rollup-win32-arm64-msvc": "4.54.0", + "@rollup/rollup-win32-ia32-msvc": "4.54.0", + "@rollup/rollup-win32-x64-gnu": "4.54.0", + "@rollup/rollup-win32-x64-msvc": "4.54.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svelte": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.0.tgz", + "integrity": "sha512-ZhLtvroYxUxr+HQJfMZEDRsGsmU46x12RvAv/zi9584f5KOX7bUrEbhPJ7cKFmUvZTJXi/CFZUYwDC6M1FigPw==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "devalue": "^5.5.0", + "esm-env": "^1.2.1", + "esrap": "^2.2.1", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/vite": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", + "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/zimmerframe": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", + "license": "MIT" + } + } +} diff --git a/apps/flowchart/package.json b/apps/flowchart/package.json new file mode 100644 index 0000000..60b12a5 --- /dev/null +++ b/apps/flowchart/package.json @@ -0,0 +1,20 @@ +{ + "name": "statistical-test-flowchart-svelte", + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "Statistical Test Decision Flowchart - Svelte Version", + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@xyflow/svelte": "^1.5.0", + "svelte": "^5.46.0", + "vite": "^7.3.0" + } +} diff --git a/apps/flowchart/src/App.svelte b/apps/flowchart/src/App.svelte new file mode 100644 index 0000000..2d43d20 --- /dev/null +++ b/apps/flowchart/src/App.svelte @@ -0,0 +1,415 @@ + + +
+

Statistical Test Decision Flowchart

+

Svelte Version - Click on any blue test node to learn more

+ +
+
+ + + + + +
+ +
+ {#if selectedTest} +
+

{selectedTest.name}

+ + {selectedTest.parametric ? 'Parametric' : 'Non-Parametric'} + +
+

Description

+

{selectedTest.description}

+
+
+

When to Use

+

{selectedTest.use}

+
+
+

Example

+

{selectedTest.example}

+
+
+ {:else} +
+

Select a Test

+

Click on any blue test node in the flowchart to see detailed information about that statistical test.

+ +
+

Legend

+
+
+ Start Point +
+
+
+ Decision Point +
+
+
+ Statistical Test +
+
+ +
+

Quick Reference

+ + + + + + + + + + + + + + + + +
ScenarioParametricNon-Parametric
1 sample vs valueOne-Sample TWilcoxon
2 independent groupsT-Test / Welch'sMann-Whitney U
2 paired groupsPaired T-TestWilcoxon
3+ groupsANOVAKruskal-Wallis
CorrelationPearsonSpearman
CategoricalChi-SquareFisher's Exact
+
+
+ {/if} +
+
+
+ + diff --git a/apps/flowchart/src/main.js b/apps/flowchart/src/main.js new file mode 100644 index 0000000..3b8e106 --- /dev/null +++ b/apps/flowchart/src/main.js @@ -0,0 +1,8 @@ +import { mount } from 'svelte'; +import App from './App.svelte'; + +const app = mount(App, { + target: document.getElementById('app'), +}); + +export default app; diff --git a/apps/flowchart/svelte.config.js b/apps/flowchart/svelte.config.js new file mode 100644 index 0000000..4c6b24b --- /dev/null +++ b/apps/flowchart/svelte.config.js @@ -0,0 +1,5 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +export default { + preprocess: vitePreprocess(), +}; diff --git a/apps/flowchart/vite.config.js b/apps/flowchart/vite.config.js new file mode 100644 index 0000000..ac3708f --- /dev/null +++ b/apps/flowchart/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite'; +import { svelte } from '@sveltejs/vite-plugin-svelte'; + +export default defineConfig({ + plugins: [svelte()], + base: '/tools/flowchart/', +}); diff --git a/apps/homepage/package-lock.json b/apps/homepage/package-lock.json new file mode 100644 index 0000000..3ff3f2e --- /dev/null +++ b/apps/homepage/package-lock.json @@ -0,0 +1,2556 @@ +{ + "name": "build-valuecurve-homepage", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "build-valuecurve-homepage", + "version": "1.0.0", + "devDependencies": { + "@sveltejs/adapter-static": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.32", + "svelte": "^5.0.0", + "tailwindcss": "^3.4.0", + "typescript": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz", + "integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz", + "integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz", + "integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz", + "integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz", + "integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz", + "integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz", + "integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz", + "integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz", + "integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz", + "integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz", + "integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz", + "integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz", + "integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz", + "integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz", + "integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", + "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz", + "integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz", + "integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz", + "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz", + "integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz", + "integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz", + "integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", + "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz", + "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.49.2", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.2.tgz", + "integrity": "sha512-Vp3zX/qlwerQmHMP6x0Ry1oY7eKKRcOWGc2P59srOp4zcqyn+etJyQpELgOi4+ZSUgteX8Y387NuwruLgGXLUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.14.1", + "cookie": "^0.6.0", + "devalue": "^5.3.2", + "esm-env": "^1.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^3.0.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.1.tgz", + "integrity": "sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", + "debug": "^4.4.1", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.17", + "vitefu": "^1.0.6" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", + "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.7" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", + "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001761", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", + "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devalue": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", + "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esrap": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.1.tgz", + "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz", + "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.54.0", + "@rollup/rollup-android-arm64": "4.54.0", + "@rollup/rollup-darwin-arm64": "4.54.0", + "@rollup/rollup-darwin-x64": "4.54.0", + "@rollup/rollup-freebsd-arm64": "4.54.0", + "@rollup/rollup-freebsd-x64": "4.54.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.54.0", + "@rollup/rollup-linux-arm-musleabihf": "4.54.0", + "@rollup/rollup-linux-arm64-gnu": "4.54.0", + "@rollup/rollup-linux-arm64-musl": "4.54.0", + "@rollup/rollup-linux-loong64-gnu": "4.54.0", + "@rollup/rollup-linux-ppc64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-musl": "4.54.0", + "@rollup/rollup-linux-s390x-gnu": "4.54.0", + "@rollup/rollup-linux-x64-gnu": "4.54.0", + "@rollup/rollup-linux-x64-musl": "4.54.0", + "@rollup/rollup-openharmony-arm64": "4.54.0", + "@rollup/rollup-win32-arm64-msvc": "4.54.0", + "@rollup/rollup-win32-ia32-msvc": "4.54.0", + "@rollup/rollup-win32-x64-gnu": "4.54.0", + "@rollup/rollup-win32-x64-msvc": "4.54.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.1.tgz", + "integrity": "sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "devalue": "^5.5.0", + "esm-env": "^1.2.1", + "esrap": "^2.2.1", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/zimmerframe": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/apps/homepage/package.json b/apps/homepage/package.json new file mode 100644 index 0000000..4361503 --- /dev/null +++ b/apps/homepage/package.json @@ -0,0 +1,22 @@ +{ + "name": "build-valuecurve-homepage", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@sveltejs/adapter-static": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.32", + "svelte": "^5.0.0", + "tailwindcss": "^3.4.0", + "typescript": "^5.0.0", + "vite": "^6.0.0" + }, + "type": "module" +} diff --git a/apps/homepage/postcss.config.js b/apps/homepage/postcss.config.js new file mode 100644 index 0000000..ba80730 --- /dev/null +++ b/apps/homepage/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/apps/homepage/src/app.css b/apps/homepage/src/app.css new file mode 100644 index 0000000..b692826 --- /dev/null +++ b/apps/homepage/src/app.css @@ -0,0 +1,25 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap'); + +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html { + scroll-behavior: smooth; + } + + body { + @apply antialiased; + } +} + +@layer components { + .card-hover { + @apply transition-all duration-300 hover:shadow-xl hover:-translate-y-1; + } + + .gradient-text { + @apply bg-clip-text text-transparent bg-gradient-to-r from-primary-600 to-primary-800; + } +} diff --git a/apps/homepage/src/app.html b/apps/homepage/src/app.html new file mode 100644 index 0000000..81a5c34 --- /dev/null +++ b/apps/homepage/src/app.html @@ -0,0 +1,13 @@ + + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/apps/homepage/src/lib/components/FeatureCard.svelte b/apps/homepage/src/lib/components/FeatureCard.svelte new file mode 100644 index 0000000..df6c418 --- /dev/null +++ b/apps/homepage/src/lib/components/FeatureCard.svelte @@ -0,0 +1,38 @@ + + + +
+ {icon} +
+ +

+ {title} +

+ +

+ {description} +

+ +
+ Learn more + + + +
+
diff --git a/apps/homepage/src/lib/components/Footer.svelte b/apps/homepage/src/lib/components/Footer.svelte new file mode 100644 index 0000000..41199ea --- /dev/null +++ b/apps/homepage/src/lib/components/Footer.svelte @@ -0,0 +1,14 @@ + diff --git a/apps/homepage/src/lib/components/Hero.svelte b/apps/homepage/src/lib/components/Hero.svelte new file mode 100644 index 0000000..40cc3e9 --- /dev/null +++ b/apps/homepage/src/lib/components/Hero.svelte @@ -0,0 +1,56 @@ + + +
+ +
+ + +
+ + +
+
+ +
+

+ Build with + AI +

+ +

+ Data science guides, interactive tools, and insights to accelerate your journey. +

+ + +
+
diff --git a/apps/homepage/src/lib/components/Navbar.svelte b/apps/homepage/src/lib/components/Navbar.svelte new file mode 100644 index 0000000..778b604 --- /dev/null +++ b/apps/homepage/src/lib/components/Navbar.svelte @@ -0,0 +1,38 @@ + + + diff --git a/apps/homepage/src/lib/components/NewsletterSection.svelte b/apps/homepage/src/lib/components/NewsletterSection.svelte new file mode 100644 index 0000000..8ea0154 --- /dev/null +++ b/apps/homepage/src/lib/components/NewsletterSection.svelte @@ -0,0 +1,93 @@ + + +
+
+
+

Latest from Newsletter

+ + View all → + +
+ + {#if loading} + +
+ {#each [1, 2, 3, 4] as _} +
+
+
+
+
+ {/each} +
+ {:else if error} +

+ Unable to load posts. Visit newsletter → +

+ {:else} + + {/if} +
+
diff --git a/apps/homepage/src/lib/components/ResourceCard.svelte b/apps/homepage/src/lib/components/ResourceCard.svelte new file mode 100644 index 0000000..c61bc13 --- /dev/null +++ b/apps/homepage/src/lib/components/ResourceCard.svelte @@ -0,0 +1,84 @@ + + +{#if status === 'coming-soon'} +
+
+
+ {icon} +
+ + Coming Soon + +
+ +

+ {title} +

+ +

+ {description} +

+
+{:else} + +
+
+ {icon} +
+ + {category} + +
+ +

+ {title} +

+ +

+ {description} +

+ +
+ {external ? 'Open' : 'Explore'} + + + +
+
+{/if} diff --git a/apps/homepage/src/routes/+layout.svelte b/apps/homepage/src/routes/+layout.svelte new file mode 100644 index 0000000..4039a26 --- /dev/null +++ b/apps/homepage/src/routes/+layout.svelte @@ -0,0 +1,5 @@ + + + diff --git a/apps/homepage/src/routes/+layout.ts b/apps/homepage/src/routes/+layout.ts new file mode 100644 index 0000000..ba58d86 --- /dev/null +++ b/apps/homepage/src/routes/+layout.ts @@ -0,0 +1,2 @@ +export const prerender = true; +export const trailingSlash = 'always'; diff --git a/apps/homepage/src/routes/+page.svelte b/apps/homepage/src/routes/+page.svelte new file mode 100644 index 0000000..04f5103 --- /dev/null +++ b/apps/homepage/src/routes/+page.svelte @@ -0,0 +1,77 @@ + + + + Build with AI | ValueCurve + + + +
+ + +
+ + + +
+
+
+

Featured Resources

+

+ Practical guides and interactive tools to help you make data-driven decisions. +

+
+ +
+ {#each features as feature} + + {/each} +
+
+
+ + + + + +
+
+

More Coming Soon

+

+ We're building more guides and interactive tools for machine learning, data visualization, and AI development. +

+
+
+
+ +
+
diff --git a/apps/homepage/src/routes/guides/+page.svelte b/apps/homepage/src/routes/guides/+page.svelte new file mode 100644 index 0000000..3188256 --- /dev/null +++ b/apps/homepage/src/routes/guides/+page.svelte @@ -0,0 +1,111 @@ + + + + Guides | Build with AI + + + +
+ + +
+
+ +
+

Guides

+

+ In-depth guides to help you understand statistics, data visualization, and machine learning concepts. +

+
+ + +
+
+ +
+ +
+ + +
+ {#each filteredGuides as guide} + + {/each} +
+ + {#if filteredGuides.length === 0} +
+

No guides found matching your criteria.

+
+ {/if} +
+
+ +
+
diff --git a/apps/homepage/src/routes/notebooks/+page.svelte b/apps/homepage/src/routes/notebooks/+page.svelte new file mode 100644 index 0000000..b5077dc --- /dev/null +++ b/apps/homepage/src/routes/notebooks/+page.svelte @@ -0,0 +1,163 @@ + + + + Notebooks | Build with AI + + + +
+ + +
+
+ +
+

Notebooks

+

+ Interactive Jupyter notebooks for hands-on learning. Open directly in Google Colab - no setup required. +

+
+ + +
+
+ +
+ +
+ + +
+ {#each filteredNotebooks as notebook} + {@const isAvailable = notebook.colabUrl !== '#'} +
+
+
+ {notebook.icon} +
+ + {notebook.category} + +
+ +

+ {notebook.title} +

+ +

+ {notebook.description} +

+ + {#if isAvailable} + + + + + Open in Colab + + {:else} + + Coming Soon + + {/if} +
+ {/each} +
+ + {#if filteredNotebooks.length === 0} +
+

No notebooks found matching your criteria.

+
+ {/if} +
+
+ +
+
diff --git a/apps/homepage/src/routes/tools/+page.svelte b/apps/homepage/src/routes/tools/+page.svelte new file mode 100644 index 0000000..384bcd2 --- /dev/null +++ b/apps/homepage/src/routes/tools/+page.svelte @@ -0,0 +1,135 @@ + + + + Tools | Build with AI + + + +
+ + +
+
+ +
+

Tools

+

+ Interactive tools to help you with data science, machine learning, and AI development. +

+
+ + +
+
+ +
+ +
+ + +
+ {#each filteredTools as tool} + + {/each} +
+ + {#if filteredTools.length === 0} +
+

No tools found matching your criteria.

+
+ {/if} +
+
+ +
+
diff --git a/apps/homepage/src/routes/tools/eda-gapminder/+page.svelte b/apps/homepage/src/routes/tools/eda-gapminder/+page.svelte new file mode 100644 index 0000000..34d962f --- /dev/null +++ b/apps/homepage/src/routes/tools/eda-gapminder/+page.svelte @@ -0,0 +1,548 @@ + + + + EDA Gapminder | Build with AI + + + +
+ + +
+
+ +
+
+ ← Tools +

EDA Gapminder

+ + +
+
+ + {#if error} +
+ {error} +
+ {/if} + +
+ +
+

Filters

+ + +
+ + +
+ 1952 + 2007 +
+
+ + + {#if activeTab !== 'trends'} + + {:else} +
+ Line Trends shows all years +
+ {/if} + + +
+ + +
+ + +
+ + +
+ + +
+ {#if activeTab === 'barrace'} + + + {:else} + +
All countries displayed
+ {/if} +
+ + + {#if statistics} +
+

+ Statistics ({selectedYear}) +

+
+
+ Mean: + {statistics.mean.toFixed(2)} +
+
+ Median: + {statistics.median.toFixed(2)} +
+
+ Std Dev: + {statistics.std.toFixed(2)} +
+
+ Min: + {statistics.min.toFixed(2)} +
+
+ Max: + {statistics.max.toFixed(2)} +
+
+
+ {/if} +
+ + +
+ +
+ + + +
+ + + {#if loading} +
+
+
+ {:else} +
+ {#if activeTab === 'scatter'} +
+ {:else if activeTab === 'barrace'} +
+ {:else if activeTab === 'trends'} +
+ {/if} +
+ {/if} + + + {#if data.length > 0} +
+

+ Showing {data.length} records for {selectedYear} + {selectedContinent ? ` in ${selectedContinent}` : ''} +

+
+ {/if} +
+
+
+
+ +
+
diff --git a/apps/homepage/src/routes/tools/house-predictor/+page.svelte b/apps/homepage/src/routes/tools/house-predictor/+page.svelte new file mode 100644 index 0000000..dd9fdf6 --- /dev/null +++ b/apps/homepage/src/routes/tools/house-predictor/+page.svelte @@ -0,0 +1,576 @@ + + + + House Price Predictor | Build with AI + + + +
+ + +
+
+ +
+ ← Back to Tools +

House Price Predictor

+

+ Seattle/King County house price prediction and visualization (21,613 houses, 2014-2015) +

+
+ + {#if loading} +
+
+
+ {:else if error} +
+ {error} +
+ {:else} +
+ +
+ +
+

+ Filters +

+ +
+
+ Price Range +
+ + +
+
+ +
+ Bedrooms +
+ + +
+
+ +
+ Zipcode + +
+ + + + +
+
+ + +
+

+ Selection +

+ +
+
+ + Beds: {predBedrooms} + + +
+ +
+ + Baths: {predBathrooms} + + +
+ +
+ + Sqft: {predSqft.toLocaleString()} + + +
+ +
+ + Age: {predAge}yr + + +
+
+
+
+ + +
+
+ +
+ + + +
+ + +
+
+
+
+
+ + +
+
+ {predBedrooms} bed + {predBathrooms} bath + {predSqft.toLocaleString()} sqft + {predAge}yr old +
+
+ + {#if prediction} +
+ {prediction.formatted_price} +
+ {/if} +
+
+
+
+ + +
+
+

+ Stats +

+ + {#if statistics} +
+
+

Total

+

+ {statistics.count?.toLocaleString()} +

+
+ +
+

Avg

+

+ {formatCurrency(statistics.mean)} +

+
+ +
+

Median

+

+ {formatCurrency(statistics.median)} +

+
+ +
+
+

Min

+

{formatCurrency(statistics.min)}

+
+
+

Max

+

{formatCurrency(statistics.max)}

+
+
+ + {#if statistics.percentiles} +
+

Percentiles

+
+
+ 25th + {formatCurrency(statistics.percentiles['25'])} +
+
+ 75th + {formatCurrency(statistics.percentiles['75'])} +
+
+ 90th + {formatCurrency(statistics.percentiles['90'])} +
+
+
+ {/if} +
+ {/if} + + {#if metadata} +
+

+ {metadata.region}
+ {metadata.data_period} +

+
+ {/if} +
+
+
+ {/if} +
+
+ +
+
diff --git a/apps/homepage/src/routes/tools/privacy-scanner/+page.svelte b/apps/homepage/src/routes/tools/privacy-scanner/+page.svelte new file mode 100644 index 0000000..14e4c8a --- /dev/null +++ b/apps/homepage/src/routes/tools/privacy-scanner/+page.svelte @@ -0,0 +1,915 @@ + + + + Privacy Scanner | Build with AI + + + +
+ + +
+
+ +
+
+ ← Tools +

Privacy Scanner

+ + +
+
+ +
+ +
+

Input

+ + +
+ + +
+ + {#if inputMode === 'text'} +
+
+ +
+ + {#if textInput || result} + | + + {/if} +
+
+ +
+ {:else} + +
+ + +
+ + {#if fileName} +
+ + + + {fileName} +
+ {/if} + {/if} + + +
+
+

PII Detection

+ +
+
+ + + + + + + + +
+ + + +
+ + + + {#if error} +
+ {error} +
+ {/if} +
+ + +
+

Scan Results

+ + {#if result} + +
+
+

PII Found

+

+ {result.total_entities} +

+
+
+

Types

+

+ {Object.keys(result.entities_by_type || {}).length} +

+
+
+

Risk Score

+

{result.risk_score}

+
+
+

Risk Level

+

{result.risk_level}

+
+
+ + +
+ + + +
+ + + {#if activeTab === 'overview'} +
+ {#if Object.keys(result.entities_by_type || {}).length > 0} +
+

PII by Type

+
+ {#each Object.entries(result.entities_by_type) as [type, count]} +
+
+ + {getPIITypeIcon(type)} + + {type} +
+ {count} +
+ {/each} +
+
+ {:else} +
+
+ + + + No PII detected in the input +
+
+ {/if} + +
+

Risk Assessment

+

+ {#if result.risk_level === 'CRITICAL'} + Critical risk! Highly sensitive PII (SSN, Credit Cards) detected. Immediate action required. + {:else if result.risk_level === 'HIGH'} + High risk! Multiple sensitive PII elements found. Consider redaction before sharing. + {:else if result.risk_level === 'MEDIUM'} + Medium risk. Some PII detected that may require attention. + {:else} + Low risk. Minimal or no PII detected. + {/if} +

+
+
+ {:else if activeTab === 'entities'} +
+ {#if result.entities && result.entities.length > 0} +
+ +
+ + + + + + + + + + + {#each result.entities as entity} + + + + + + + {/each} + +
TypeOriginal ValueMasked ValueConfidence
+ + {entity.type} + + {entity.value}{entity.masked_value} + + {Math.round(entity.confidence * 100)}% + +
+ {:else} +
+ No PII entities found +
+ {/if} +
+ {:else if activeTab === 'redacted'} +
+
+
+

Redacted Text Preview

+ +
+
{result.redacted_preview || 'No preview available'}
+
+

+ This preview shows PII values masked for safe sharing. +

+
+ {/if} + {:else} +
+
+ + + +
+

Enter text or upload a file to scan for PII

+
+ {/if} +
+
+
+
+ +
+
diff --git a/apps/homepage/static/favicon.png b/apps/homepage/static/favicon.png new file mode 100644 index 0000000..7f1c24b Binary files /dev/null and b/apps/homepage/static/favicon.png differ diff --git a/apps/homepage/static/logo-favicon.png b/apps/homepage/static/logo-favicon.png new file mode 100644 index 0000000..704d894 Binary files /dev/null and b/apps/homepage/static/logo-favicon.png differ diff --git a/apps/homepage/static/logo.png b/apps/homepage/static/logo.png new file mode 100644 index 0000000..48a99ef Binary files /dev/null and b/apps/homepage/static/logo.png differ diff --git a/apps/homepage/svelte.config.js b/apps/homepage/svelte.config.js new file mode 100644 index 0000000..bf09c8e --- /dev/null +++ b/apps/homepage/svelte.config.js @@ -0,0 +1,35 @@ +import adapter from '@sveltejs/adapter-static'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + preprocess: vitePreprocess(), + kit: { + adapter: adapter({ + pages: 'build', + assets: 'build', + fallback: undefined, + precompress: false, + strict: true + }), + prerender: { + handleHttpError: ({ path, message }) => { + // Ignore external links (they'll be served by Caddy separately) + // These are deployed as separate apps + if ( + path.startsWith('/guides/statistical-tests') || + path.startsWith('/tools/flowchart') || + path.startsWith('/statistical-tests') || + path.startsWith('/flowchart') || + path.startsWith('/data-visualization') || + path.startsWith('/interactive-tools') + ) { + return; + } + throw new Error(message); + } + } + } +}; + +export default config; diff --git a/apps/homepage/tailwind.config.js b/apps/homepage/tailwind.config.js new file mode 100644 index 0000000..bd1d173 --- /dev/null +++ b/apps/homepage/tailwind.config.js @@ -0,0 +1,26 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte,ts}'], + theme: { + extend: { + fontFamily: { + sans: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'] + }, + colors: { + primary: { + 50: '#e3f2fd', + 100: '#bbdefb', + 200: '#90caf9', + 300: '#64b5f6', + 400: '#42a5f5', + 500: '#2196f3', + 600: '#1e88e5', + 700: '#1976d2', + 800: '#1565c0', + 900: '#0d47a1' + } + } + } + }, + plugins: [] +}; diff --git a/apps/homepage/tsconfig.json b/apps/homepage/tsconfig.json new file mode 100644 index 0000000..4344710 --- /dev/null +++ b/apps/homepage/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } +} diff --git a/apps/homepage/vite.config.js b/apps/homepage/vite.config.js new file mode 100644 index 0000000..4fe9066 --- /dev/null +++ b/apps/homepage/vite.config.js @@ -0,0 +1,60 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; +import { readFileSync, existsSync } from 'fs'; +import { resolve, join } from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); + +// Custom Vite plugin to serve pre-built static apps in dev mode +function serveStaticApps() { + const staticRoutes = { + '/guides/statistical-tests': resolve(__dirname, '../../guides/statistical-tests'), + '/tools/flowchart': resolve(__dirname, '../../tools/flowchart') + }; + + return { + name: 'serve-static-apps', + configureServer(server) { + server.middlewares.use((req, res, next) => { + const url = req.url?.split('?')[0] || ''; + + for (const [route, basePath] of Object.entries(staticRoutes)) { + if (url.startsWith(route)) { + let filePath = url.slice(route.length) || '/index.html'; + if (filePath === '/') filePath = '/index.html'; + + const fullPath = join(basePath, filePath); + if (existsSync(fullPath)) { + try { + const content = readFileSync(fullPath); + const ext = filePath.split('.').pop() || 'html'; + const mimeTypes = { + 'html': 'text/html', + 'js': 'application/javascript', + 'css': 'text/css', + 'json': 'application/json', + 'png': 'image/png', + 'jpg': 'image/jpeg', + 'svg': 'image/svg+xml', + 'woff': 'font/woff', + 'woff2': 'font/woff2' + }; + res.setHeader('Content-Type', mimeTypes[ext] || 'application/octet-stream'); + res.end(content); + return; + } catch (e) { + // Fall through to next handler + } + } + } + } + next(); + }); + } + }; +} + +export default defineConfig({ + plugins: [serveStaticApps(), sveltekit()] +}); diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e2b2c29 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + homepage: + build: + context: ./apps/homepage + volumes: + - ./apps/homepage/build:/app/build:ro + ports: + - "3001:3000" + restart: unless-stopped + +# Build locally: cd apps/homepage && npm run build +# Deploy: scp -r apps/homepage/build/* server:/var/www/build.valuecurve.co/ diff --git a/guides/statistical-tests/index.html b/guides/statistical-tests/index.html new file mode 100644 index 0000000..3fc989e --- /dev/null +++ b/guides/statistical-tests/index.html @@ -0,0 +1,29931 @@ + + + + + + + + + +Types of Statistical Tests: A Comprehensive Guide – Build ValueCurve + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+
+

Types of Statistical Tests: A Comprehensive Guide

+
+ + + +
+ + + + +
+ + + +
+ + +

Imagine a carpenter with only a hammer. Every problem becomes a nail, every solution involves pounding. The results would be disastrous—stripped screws, shattered glass, splintered wood. Statistics works the same way. Armed with only one test, researchers force every question into the same mold, producing unreliable answers and misleading conclusions. Mastering the diverse toolkit of statistical tests transforms you from a one-trick amateur into a skilled craftsman of data analysis.

+
+

The Foundation: Why Different Tests Exist

+

Statistical tests are not interchangeable. Each is designed for specific data types, research questions, and assumptions. Using the wrong test is like measuring temperature with a ruler—the tool simply doesn’t match the task.

+

Three fundamental questions guide test selection: What type of data do you have? What relationship are you investigating? What assumptions can your data satisfy? The answers to these questions narrow the field from dozens of potential tests to the one or two that fit your situation precisely.

+

Data types form the first filter. Continuous data (height, weight, temperature) can take any value within a range. Categorical data falls into distinct groups (gender, treatment type, survey responses). Ordinal data has categories with a meaningful order but no consistent intervals (satisfaction ratings, education levels). Each data type requires tests designed to handle its unique properties.

+
+
+

Normality Tests: Checking Your Assumptions

+

Before selecting a statistical test, you must understand your data’s distribution. Many powerful tests assume data follows a normal (bell-shaped) distribution. Violating this assumption can invalidate results entirely.

+

The Shapiro-Wilk test stands as the gold standard for normality testing with small to medium samples (n < 5000). It compares your data’s distribution against a theoretical normal distribution, producing a W statistic between 0 and 1. Values close to 1 suggest normality; significantly lower values indicate departure from normality. Its power to detect non-normality exceeds most alternatives, making it the default choice for most applications.

+

The D’Agostino-Pearson test takes a different approach, examining two specific properties: skewness (asymmetry) and kurtosis (tail heaviness). By combining these measures, it identifies not just whether data is non-normal, but why. Is the distribution lopsided? Are the tails too heavy or too light? This diagnostic information guides decisions about data transformation or alternative test selection.

+

The Kolmogorov-Smirnov test offers flexibility that others lack. While typically used for normality testing, it can compare data against any theoretical distribution—exponential, uniform, Poisson, or custom distributions. This generality comes at a cost: it’s less powerful than Shapiro-Wilk for detecting non-normality specifically.

+

The Anderson-Darling test improves upon Kolmogorov-Smirnov by weighting tail observations more heavily. Since many important phenomena manifest in distribution tails (extreme events, outliers), this sensitivity often proves valuable. It’s particularly useful when tail behavior matters for your analysis.

+

Visual methods complement these formal tests. Histograms reveal distribution shape at a glance. Q-Q plots compare data quantiles against theoretical quantiles—points falling along a diagonal line indicate normality. Box plots display median, quartiles, and outliers compactly. No single method suffices; combining visual inspection with formal testing provides the most complete picture.

+
+
+

Parametric Tests: Power Through Assumptions

+

Parametric tests assume data follows a specific distribution (usually normal) and estimate population parameters like means and variances. When assumptions hold, these tests offer maximum statistical power—the ability to detect real effects.

+
+

T-Tests: Comparing Means

+

The one-sample t-test addresses a simple question: does my sample mean differ from a known or hypothesized value? A manufacturer might test whether average product weight equals the target specification. A teacher might assess whether class performance differs from the national average. The test calculates how many standard errors separate the sample mean from the hypothesized value, translating this distance into a probability.

+

The two-sample independent t-test compares means between two unrelated groups. Do men and women differ in height? Do treatment and control groups show different outcomes? The test assumes both groups are normally distributed with equal variances. When the equal variance assumption fails, Welch’s t-test provides a robust alternative, adjusting degrees of freedom to account for variance differences. Many statisticians now recommend Welch’s test as the default, since it performs well even when variances are equal.

+

The paired t-test handles related measurements—the same subjects measured twice, or naturally matched pairs. Before-and-after studies, twin comparisons, and left-right eye measurements all call for paired analysis. By focusing on within-pair differences rather than raw values, this test eliminates between-subject variability, dramatically increasing statistical power. An effect invisible to independent comparison often emerges clearly with paired analysis.

+
+
+

ANOVA: Comparing Multiple Groups

+

When comparing three or more groups, multiple t-tests create problems. Each test carries a 5% false positive risk; conducting many tests accumulates this risk until false positives become likely. Analysis of Variance (ANOVA) solves this by testing all groups simultaneously.

+

One-way ANOVA compares means across multiple groups for a single factor. Do students from different schools perform differently? Does crop yield vary across fertilizer types? ANOVA partitions total variability into between-group and within-group components, asking whether between-group differences exceed what within-group variability would predict by chance.

+

A significant ANOVA result indicates that at least one group differs—but not which one. Post-hoc tests like Tukey’s HSD, Bonferroni correction, or Scheffé’s method identify specific group differences while controlling overall error rate.

+

Levene’s test checks the equal variance assumption critical to ANOVA. When variances differ substantially, Welch’s ANOVA provides a robust alternative that doesn’t require this assumption.

+
+
+
+

Non-Parametric Tests: Distribution-Free Alternatives

+

When data violates normality assumptions or consists of ranks and ratings, non-parametric tests provide reliable alternatives. These tests make fewer assumptions, trading some statistical power for broader applicability.

+

The Mann-Whitney U test (also called Wilcoxon rank-sum) serves as the non-parametric counterpart to the independent t-test. Rather than comparing means, it compares rank distributions between two groups. After combining and ranking all observations, it tests whether one group’s ranks are systematically higher than the other’s. This approach handles skewed distributions, ordinal data, and outliers gracefully.

+

The Wilcoxon signed-rank test parallels the paired t-test for non-normal data. It ranks the absolute differences between paired observations, then compares positive and negative rank sums. If treatment has no effect, positive and negative differences should balance; systematic imbalance suggests a real effect.

+

The Kruskal-Wallis test extends Mann-Whitney to three or more groups, serving as the non-parametric alternative to one-way ANOVA. It ranks all observations regardless of group membership, then tests whether mean ranks differ across groups. Like ANOVA, a significant result requires follow-up tests (typically Dunn’s test) to identify which specific groups differ.

+
+

Choosing Between Parametric and Non-Parametric

+

The decision isn’t always straightforward. Parametric tests offer more power when assumptions hold, but non-parametric tests provide protection when they don’t. Consider these guidelines:

+

Use parametric tests when data is continuous, approximately normal (or n > 30 per group), and variances are roughly equal. Use non-parametric tests when data is ordinal, clearly non-normal, contains significant outliers, or sample sizes are small and distribution unknown.

+

When uncertain, running both types of tests provides insight. If they agree, report the parametric result for its greater power. If they disagree, the non-parametric result is typically more trustworthy.

+
+
+
+

Categorical Tests: Analyzing Frequencies

+

When both variables are categorical, entirely different tests apply. These analyze counts and proportions rather than means.

+

The Chi-square test of independence assesses whether two categorical variables are related. Is survival associated with passenger class? Does political affiliation relate to geographic region? The test compares observed cell frequencies in a contingency table against frequencies expected under independence. Large discrepancies suggest association.

+

Chi-square requires adequate sample sizes—expected frequencies should exceed 5 in each cell. When this condition fails, Fisher’s exact test provides an exact probability rather than an approximation. Originally designed for 2×2 tables, extensions now handle larger tables, though computational demands increase rapidly.

+
+
+

Correlation Tests: Measuring Relationships

+

Correlation quantifies the strength and direction of association between two continuous variables.

+

Pearson correlation measures linear relationships, producing the familiar r coefficient ranging from -1 to +1. Perfect positive correlation (r = 1) means variables move together proportionally; perfect negative correlation (r = -1) means they move oppositely; zero correlation indicates no linear relationship. Pearson assumes both variables are normally distributed and related linearly.

+

Spearman correlation measures monotonic relationships using ranks rather than raw values. It captures associations where variables consistently move together (or oppositely) without requiring a linear pattern. Robust to outliers and applicable to ordinal data, Spearman serves as the non-parametric alternative to Pearson.

+

Kendall’s tau also measures monotonic association but uses a different approach: counting concordant versus discordant pairs of observations. More robust than Spearman with small samples or many tied values, Kendall’s coefficient tends toward smaller absolute values than Spearman’s, complicating direct comparison.

+
+
+

Making the Right Choice: A Decision Framework

+

The following interactive fishbone diagram organizes statistical tests by category. Click on any test to see its description and when to use it.

+
+ +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+
+

Quick Reference Table

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScenarioParametric TestNon-Parametric Alternative
1 sample vs known valueOne-Sample T-TestWilcoxon Signed-Rank
2 independent groupsIndependent T-Test / Welch’sMann-Whitney U
2 paired/matched groupsPaired T-TestWilcoxon Signed-Rank
3+ independent groupsOne-Way ANOVAKruskal-Wallis
Correlation (continuous)PearsonSpearman / Kendall
Association (categorical)Chi-SquareFisher’s Exact
+

Selecting the appropriate test follows a logical sequence:

+

First, identify your research question. Are you comparing groups, measuring association, or testing against a known value? Are you examining one variable, two variables, or more?

+

Second, characterize your data. Is the outcome continuous, ordinal, or categorical? How many groups or variables are involved? Is the design independent or paired/related?

+

Third, check assumptions. Is the data approximately normal? Are variances equal across groups? Are expected frequencies sufficient for chi-square?

+

Fourth, select the test that matches your question, data type, and satisfied assumptions. When assumptions are violated, choose robust alternatives.

+

Finally, remember that statistical tests answer narrow questions. They indicate whether effects exist, not whether they matter. Always supplement significance tests with effect sizes, confidence intervals, and practical interpretation.

+
+
+
+

Conclusion

+

The diversity of statistical tests reflects the diversity of research questions and data types we encounter. No single test serves all purposes; no universal approach handles all situations. The skilled analyst matches tools to tasks, selecting tests whose assumptions align with data characteristics and whose outputs address research questions.

+

This matching process requires both technical knowledge and practical judgment. Knowing what each test does, what it assumes, and when it fails empowers researchers to extract valid insights from data while avoiding the pitfalls of misapplied methods.

+

Statistical tests are not arbitrary rituals but carefully designed tools, each optimized for specific purposes. Understanding their logic—not just their mechanics—transforms test selection from cookbook following to principled reasoning. And principled reasoning, ultimately, is what separates meaningful analysis from statistical theater.

+ + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/init.sh b/init.sh new file mode 100644 index 0000000..19fc2ab --- /dev/null +++ b/init.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Build and deploy script for build.valuecurve.co +# Usage: ./init.sh [build|deploy|all] + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +APP_DIR="$SCRIPT_DIR/apps/homepage" +SERVER="root@46.224.190.110" +REMOTE_PATH="/var/www/build.valuecurve.co" + +# Colors for output +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +build() { + echo -e "${YELLOW}Building homepage...${NC}" + cd "$APP_DIR" + npm run build + echo -e "${GREEN}Build complete!${NC}" +} + +deploy() { + echo -e "${YELLOW}Deploying to $SERVER...${NC}" + + if [ ! -d "$APP_DIR/build" ]; then + echo -e "${RED}Error: Build folder not found. Run './init.sh build' first.${NC}" + exit 1 + fi + + scp -r "$APP_DIR/build/"* "$SERVER:$REMOTE_PATH/" + echo -e "${GREEN}Deployment complete!${NC}" + echo -e "Site live at: https://build.valuecurve.co" +} + +case "${1:-all}" in + build) + build + ;; + deploy) + deploy + ;; + all) + build + deploy + ;; + *) + echo "Usage: ./init.sh [build|deploy|all]" + echo " build - Build the SvelteKit app" + echo " deploy - Deploy build folder to server" + echo " all - Build and deploy (default)" + exit 1 + ;; +esac diff --git a/posts/statistical-tests.qmd b/posts/statistical-tests.qmd new file mode 100644 index 0000000..cb832a4 --- /dev/null +++ b/posts/statistical-tests.qmd @@ -0,0 +1,534 @@ +--- +title: "Types of Statistical Tests: A Comprehensive Guide" +format: + html: + toc: true + toc-location: right + toc-depth: 3 + theme: cosmo + embed-resources: true + mainfont: "Helvetica Neue" +include-in-header: + - text: | + +--- + +Imagine a carpenter with only a hammer. Every problem becomes a nail, every solution involves pounding. The results would be disastrous—stripped screws, shattered glass, splintered wood. Statistics works the same way. Armed with only one test, researchers force every question into the same mold, producing unreliable answers and misleading conclusions. Mastering the diverse toolkit of statistical tests transforms you from a one-trick amateur into a skilled craftsman of data analysis. + +## The Foundation: Why Different Tests Exist + +Statistical tests are not interchangeable. Each is designed for specific data types, research questions, and assumptions. Using the wrong test is like measuring temperature with a ruler—the tool simply doesn't match the task. + +Three fundamental questions guide test selection: What type of data do you have? What relationship are you investigating? What assumptions can your data satisfy? The answers to these questions narrow the field from dozens of potential tests to the one or two that fit your situation precisely. + +Data types form the first filter. **Continuous data** (height, weight, temperature) can take any value within a range. **Categorical data** falls into distinct groups (gender, treatment type, survey responses). **Ordinal data** has categories with a meaningful order but no consistent intervals (satisfaction ratings, education levels). Each data type requires tests designed to handle its unique properties. + +## Normality Tests: Checking Your Assumptions + +Before selecting a statistical test, you must understand your data's distribution. Many powerful tests assume data follows a normal (bell-shaped) distribution. Violating this assumption can invalidate results entirely. + +The **Shapiro-Wilk test** stands as the gold standard for normality testing with small to medium samples (n < 5000). It compares your data's distribution against a theoretical normal distribution, producing a W statistic between 0 and 1. Values close to 1 suggest normality; significantly lower values indicate departure from normality. Its power to detect non-normality exceeds most alternatives, making it the default choice for most applications. + +The **D'Agostino-Pearson test** takes a different approach, examining two specific properties: skewness (asymmetry) and kurtosis (tail heaviness). By combining these measures, it identifies not just whether data is non-normal, but why. Is the distribution lopsided? Are the tails too heavy or too light? This diagnostic information guides decisions about data transformation or alternative test selection. + +The **Kolmogorov-Smirnov test** offers flexibility that others lack. While typically used for normality testing, it can compare data against any theoretical distribution—exponential, uniform, Poisson, or custom distributions. This generality comes at a cost: it's less powerful than Shapiro-Wilk for detecting non-normality specifically. + +The **Anderson-Darling test** improves upon Kolmogorov-Smirnov by weighting tail observations more heavily. Since many important phenomena manifest in distribution tails (extreme events, outliers), this sensitivity often proves valuable. It's particularly useful when tail behavior matters for your analysis. + +Visual methods complement these formal tests. **Histograms** reveal distribution shape at a glance. **Q-Q plots** compare data quantiles against theoretical quantiles—points falling along a diagonal line indicate normality. **Box plots** display median, quartiles, and outliers compactly. No single method suffices; combining visual inspection with formal testing provides the most complete picture. + +## Parametric Tests: Power Through Assumptions + +Parametric tests assume data follows a specific distribution (usually normal) and estimate population parameters like means and variances. When assumptions hold, these tests offer maximum statistical power—the ability to detect real effects. + +### T-Tests: Comparing Means + +The **one-sample t-test** addresses a simple question: does my sample mean differ from a known or hypothesized value? A manufacturer might test whether average product weight equals the target specification. A teacher might assess whether class performance differs from the national average. The test calculates how many standard errors separate the sample mean from the hypothesized value, translating this distance into a probability. + +The **two-sample independent t-test** compares means between two unrelated groups. Do men and women differ in height? Do treatment and control groups show different outcomes? The test assumes both groups are normally distributed with equal variances. When the equal variance assumption fails, **Welch's t-test** provides a robust alternative, adjusting degrees of freedom to account for variance differences. Many statisticians now recommend Welch's test as the default, since it performs well even when variances are equal. + +The **paired t-test** handles related measurements—the same subjects measured twice, or naturally matched pairs. Before-and-after studies, twin comparisons, and left-right eye measurements all call for paired analysis. By focusing on within-pair differences rather than raw values, this test eliminates between-subject variability, dramatically increasing statistical power. An effect invisible to independent comparison often emerges clearly with paired analysis. + +### ANOVA: Comparing Multiple Groups + +When comparing three or more groups, multiple t-tests create problems. Each test carries a 5% false positive risk; conducting many tests accumulates this risk until false positives become likely. **Analysis of Variance (ANOVA)** solves this by testing all groups simultaneously. + +**One-way ANOVA** compares means across multiple groups for a single factor. Do students from different schools perform differently? Does crop yield vary across fertilizer types? ANOVA partitions total variability into between-group and within-group components, asking whether between-group differences exceed what within-group variability would predict by chance. + +A significant ANOVA result indicates that at least one group differs—but not which one. **Post-hoc tests** like Tukey's HSD, Bonferroni correction, or Scheffé's method identify specific group differences while controlling overall error rate. + +**Levene's test** checks the equal variance assumption critical to ANOVA. When variances differ substantially, **Welch's ANOVA** provides a robust alternative that doesn't require this assumption. + +## Non-Parametric Tests: Distribution-Free Alternatives + +When data violates normality assumptions or consists of ranks and ratings, non-parametric tests provide reliable alternatives. These tests make fewer assumptions, trading some statistical power for broader applicability. + +The **Mann-Whitney U test** (also called Wilcoxon rank-sum) serves as the non-parametric counterpart to the independent t-test. Rather than comparing means, it compares rank distributions between two groups. After combining and ranking all observations, it tests whether one group's ranks are systematically higher than the other's. This approach handles skewed distributions, ordinal data, and outliers gracefully. + +The **Wilcoxon signed-rank test** parallels the paired t-test for non-normal data. It ranks the absolute differences between paired observations, then compares positive and negative rank sums. If treatment has no effect, positive and negative differences should balance; systematic imbalance suggests a real effect. + +The **Kruskal-Wallis test** extends Mann-Whitney to three or more groups, serving as the non-parametric alternative to one-way ANOVA. It ranks all observations regardless of group membership, then tests whether mean ranks differ across groups. Like ANOVA, a significant result requires follow-up tests (typically Dunn's test) to identify which specific groups differ. + +### Choosing Between Parametric and Non-Parametric + +The decision isn't always straightforward. Parametric tests offer more power when assumptions hold, but non-parametric tests provide protection when they don't. Consider these guidelines: + +Use parametric tests when data is continuous, approximately normal (or n > 30 per group), and variances are roughly equal. Use non-parametric tests when data is ordinal, clearly non-normal, contains significant outliers, or sample sizes are small and distribution unknown. + +When uncertain, running both types of tests provides insight. If they agree, report the parametric result for its greater power. If they disagree, the non-parametric result is typically more trustworthy. + +## Categorical Tests: Analyzing Frequencies + +When both variables are categorical, entirely different tests apply. These analyze counts and proportions rather than means. + +The **Chi-square test of independence** assesses whether two categorical variables are related. Is survival associated with passenger class? Does political affiliation relate to geographic region? The test compares observed cell frequencies in a contingency table against frequencies expected under independence. Large discrepancies suggest association. + +Chi-square requires adequate sample sizes—expected frequencies should exceed 5 in each cell. When this condition fails, **Fisher's exact test** provides an exact probability rather than an approximation. Originally designed for 2×2 tables, extensions now handle larger tables, though computational demands increase rapidly. + +## Correlation Tests: Measuring Relationships + +Correlation quantifies the strength and direction of association between two continuous variables. + +**Pearson correlation** measures linear relationships, producing the familiar r coefficient ranging from -1 to +1. Perfect positive correlation (r = 1) means variables move together proportionally; perfect negative correlation (r = -1) means they move oppositely; zero correlation indicates no linear relationship. Pearson assumes both variables are normally distributed and related linearly. + +**Spearman correlation** measures monotonic relationships using ranks rather than raw values. It captures associations where variables consistently move together (or oppositely) without requiring a linear pattern. Robust to outliers and applicable to ordinal data, Spearman serves as the non-parametric alternative to Pearson. + +**Kendall's tau** also measures monotonic association but uses a different approach: counting concordant versus discordant pairs of observations. More robust than Spearman with small samples or many tied values, Kendall's coefficient tends toward smaller absolute values than Spearman's, complicating direct comparison. + +## Making the Right Choice: A Decision Framework + +The following interactive fishbone diagram organizes statistical tests by category. **Click on any test** to see its description and when to use it. + +```{ojs} +//| echo: false + +// Test data with descriptions +testDescriptions = ({ + t1: { name: 'One-Sample T-Test', description: 'Compares a sample mean to a known or hypothesized population value.', use: 'When you have one group and want to test if its mean differs from a specific value.', example: 'Testing if average product weight equals the target specification.', parametric: true }, + t2: { name: 'Wilcoxon Signed-Rank', description: 'Non-parametric test comparing a sample to a hypothesized value using ranks.', use: 'When data is not normally distributed but you want to compare to a standard value.', example: 'Testing if median customer satisfaction differs from neutral.', parametric: false }, + t3: { name: 'Mann-Whitney U', description: 'Compares distributions of two independent groups using ranks.', use: 'When comparing two groups with non-normal data or ordinal measurements.', example: 'Comparing pain ratings between treatment and placebo groups.', parametric: false }, + t4: { name: 'Independent T-Test', description: 'Compares means of two independent groups assuming equal variances.', use: 'When comparing two unrelated groups with normal data and similar spreads.', example: 'Comparing test scores between two different teaching methods.', parametric: true }, + t5: { name: "Welch's T-Test", description: 'Compares means of two independent groups without assuming equal variances.', use: 'When comparing two groups that may have different variability.', example: 'Comparing reaction times between young and elderly participants.', parametric: true }, + t6: { name: 'Paired T-Test', description: 'Compares means of two related measurements on the same subjects.', use: 'When you have before-after measurements or matched pairs.', example: 'Testing if a training program improved employee performance.', parametric: true }, + t7: { name: 'Wilcoxon Paired', description: 'Non-parametric test for paired data using ranks of differences.', use: 'When paired data is not normally distributed.', example: 'Comparing patient pain levels before and after treatment with skewed data.', parametric: false }, + t8: { name: 'Kruskal-Wallis', description: 'Non-parametric comparison of three or more independent groups.', use: 'When comparing multiple groups with non-normal or ordinal data.', example: 'Comparing satisfaction ratings across four different product versions.', parametric: false }, + t9: { name: 'One-Way ANOVA', description: 'Compares means across three or more groups simultaneously.', use: 'When comparing multiple groups with normal data and equal variances.', example: 'Testing if crop yields differ across three fertilizer types.', parametric: true }, + t10: { name: "Welch's ANOVA", description: 'Robust ANOVA that does not assume equal variances across groups.', use: 'When comparing multiple groups that may have different variability.', example: 'Comparing salaries across departments with different spreads.', parametric: true }, + t11: { name: 'Pearson Correlation', description: 'Measures the linear relationship between two continuous variables.', use: 'When assessing how strongly two variables move together linearly.', example: 'Examining the relationship between study hours and exam scores.', parametric: true }, + t12: { name: 'Spearman Correlation', description: 'Measures monotonic relationships using ranks, robust to outliers.', use: 'When data is ordinal or the relationship is not linear.', example: 'Correlating education level with income category.', parametric: false }, + t13: { name: 'Chi-Square Test', description: 'Tests association between two categorical variables.', use: 'When examining if two categorical variables are related.', example: 'Testing if smoking status is associated with disease incidence.', parametric: false }, + t14: { name: "Fisher's Exact", description: 'Exact test for association in small sample contingency tables.', use: 'When expected cell counts are too small for chi-square.', example: 'Testing treatment effectiveness with only 20 patients total.', parametric: false } +}) + +mutable selectedTest = null + +width = 1100 +height = 580 + +// Category structure for fishbone +categories = [ + { + name: "1 Sample vs Value", + color: "#e91e63", + tests: [ + { id: 't1', label: 'One-Sample T-Test', condition: 'Normal data' }, + { id: 't2', label: 'Wilcoxon Signed-Rank', condition: 'Non-normal' } + ] + }, + { + name: "2 Groups Independent", + color: "#9c27b0", + tests: [ + { id: 't4', label: 'Independent T-Test', condition: 'Normal, equal var' }, + { id: 't5', label: "Welch's T-Test", condition: 'Normal, unequal var' }, + { id: 't3', label: 'Mann-Whitney U', condition: 'Non-normal' } + ] + }, + { + name: "2 Groups Paired", + color: "#673ab7", + tests: [ + { id: 't6', label: 'Paired T-Test', condition: 'Normal data' }, + { id: 't7', label: 'Wilcoxon Paired', condition: 'Non-normal' } + ] + }, + { + name: "3+ Groups", + color: "#3f51b5", + tests: [ + { id: 't9', label: 'One-Way ANOVA', condition: 'Normal, equal var' }, + { id: 't10', label: "Welch's ANOVA", condition: 'Normal, unequal var' }, + { id: 't8', label: 'Kruskal-Wallis', condition: 'Non-normal' } + ] + }, + { + name: "Correlation", + color: "#00796b", + tests: [ + { id: 't11', label: 'Pearson', condition: 'Linear, normal' }, + { id: 't12', label: 'Spearman', condition: 'Monotonic/ordinal' } + ] + }, + { + name: "Categorical", + color: "#ff5722", + tests: [ + { id: 't13', label: 'Chi-Square', condition: 'Large sample (n>5)' }, + { id: 't14', label: "Fisher's Exact", condition: 'Small sample' } + ] + } +] + +{ + // Create wrapper div for controls + SVG + const wrapper = d3.create("div") + .style("position", "relative"); + + // Zoom controls + const controls = wrapper.append("div") + .style("display", "flex") + .style("gap", "8px") + .style("margin-bottom", "10px") + .style("justify-content", "center"); + + const buttonStyle = ` + padding: 8px 16px; + border: none; + border-radius: 6px; + background: #1565c0; + color: white; + font-size: 14px; + font-weight: 600; + cursor: pointer; + transition: background 0.2s; + `; + + const zoomInBtn = controls.append("button") + .attr("style", buttonStyle) + .text("+ Zoom In") + .on("mouseover", function() { d3.select(this).style("background", "#1976d2"); }) + .on("mouseout", function() { d3.select(this).style("background", "#1565c0"); }); + + const zoomOutBtn = controls.append("button") + .attr("style", buttonStyle) + .text("− Zoom Out") + .on("mouseover", function() { d3.select(this).style("background", "#1976d2"); }) + .on("mouseout", function() { d3.select(this).style("background", "#1565c0"); }); + + const resetBtn = controls.append("button") + .attr("style", buttonStyle.replace("#1565c0", "#546e7a").replace("#1976d2", "#607d8b")) + .text("Reset View") + .on("mouseover", function() { d3.select(this).style("background", "#607d8b"); }) + .on("mouseout", function() { d3.select(this).style("background", "#546e7a"); }); + + const svg = wrapper.append("svg") + .attr("viewBox", [0, 0, width, height]) + .attr("width", "100%") + .attr("height", 520) + .style("font-family", "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif") + .style("background", "linear-gradient(180deg, #fafbfc 0%, #f0f2f5 100%)") + .style("border-radius", "12px") + .style("box-shadow", "0 4px 12px rgba(0,0,0,0.08)") + .style("cursor", "grab"); + + const defs = svg.append("defs"); + + // Drop shadow + const filter = defs.append("filter") + .attr("id", "shadow") + .attr("x", "-20%").attr("y", "-20%") + .attr("width", "140%").attr("height", "140%"); + filter.append("feDropShadow") + .attr("dx", "1").attr("dy", "2") + .attr("stdDeviation", "3") + .attr("flood-opacity", "0.12"); + + // Create container group for zoom/pan + const container = svg.append("g"); + + // Zoom behavior + const zoom = d3.zoom() + .scaleExtent([0.5, 3]) + .on("zoom", (event) => { + container.attr("transform", event.transform); + }); + + svg.call(zoom); + + // Button handlers + zoomInBtn.on("click", () => { + svg.transition().duration(300).call(zoom.scaleBy, 1.3); + }); + zoomOutBtn.on("click", () => { + svg.transition().duration(300).call(zoom.scaleBy, 0.7); + }); + resetBtn.on("click", () => { + svg.transition().duration(300).call(zoom.transform, d3.zoomIdentity); + }); + + // Main spine + const spineY = height / 2; + const spineStartX = 80; + const spineEndX = width - 80; + + // Draw main spine (thick line) + container.append("line") + .attr("x1", spineStartX) + .attr("y1", spineY) + .attr("x2", spineEndX) + .attr("y2", spineY) + .attr("stroke", "#37474f") + .attr("stroke-width", 4) + .attr("stroke-linecap", "round"); + + // Head (effect) - "Which Statistical Test?" + const headGroup = container.append("g") + .attr("transform", `translate(${spineEndX + 10}, ${spineY})`); + + headGroup.append("polygon") + .attr("points", "0,-35 100,-35 120,0 100,35 0,35") + .attr("fill", "#1565c0") + .attr("filter", "url(#shadow)"); + + headGroup.append("text") + .attr("x", 55) + .attr("y", -5) + .attr("text-anchor", "middle") + .attr("fill", "white") + .attr("font-size", "12px") + .attr("font-weight", "600") + .text("Which"); + headGroup.append("text") + .attr("x", 55) + .attr("y", 12) + .attr("text-anchor", "middle") + .attr("fill", "white") + .attr("font-size", "12px") + .attr("font-weight", "600") + .text("Statistical Test?"); + + // Calculate positions for branches + const branchSpacing = (spineEndX - spineStartX - 40) / (categories.length); + const topCategories = categories.filter((_, i) => i % 2 === 0); + const bottomCategories = categories.filter((_, i) => i % 2 === 1); + + // Draw branches + categories.forEach((cat, i) => { + const isTop = i % 2 === 0; + const branchX = spineStartX + 60 + (i * branchSpacing); + const branchEndY = isTop ? spineY - 180 : spineY + 180; + const direction = isTop ? -1 : 1; + + // Main branch line + container.append("line") + .attr("x1", branchX) + .attr("y1", spineY) + .attr("x2", branchX) + .attr("y2", branchEndY) + .attr("stroke", cat.color) + .attr("stroke-width", 3) + .attr("stroke-linecap", "round"); + + // Category label box + const labelGroup = container.append("g") + .attr("transform", `translate(${branchX}, ${branchEndY + direction * 25})`); + + labelGroup.append("rect") + .attr("x", -65) + .attr("y", -14) + .attr("width", 130) + .attr("height", 28) + .attr("rx", 14) + .attr("fill", cat.color) + .attr("filter", "url(#shadow)"); + + labelGroup.append("text") + .attr("text-anchor", "middle") + .attr("dominant-baseline", "middle") + .attr("fill", "white") + .attr("font-size", "11px") + .attr("font-weight", "600") + .text(cat.name); + + // Draw test nodes along the branch + const testSpacing = 140 / (cat.tests.length + 1); + + cat.tests.forEach((test, j) => { + const testY = spineY + direction * (40 + (j + 1) * testSpacing); + const testX = branchX + (isTop ? 70 : -70); + + // Small branch to test + container.append("line") + .attr("x1", branchX) + .attr("y1", testY) + .attr("x2", testX - (isTop ? 5 : -5)) + .attr("y2", testY) + .attr("stroke", cat.color) + .attr("stroke-width", 2) + .attr("opacity", 0.7); + + // Test node group + const testGroup = container.append("g") + .attr("transform", `translate(${testX}, ${testY})`) + .style("cursor", "pointer") + .on("click", () => { + mutable selectedTest = testDescriptions[test.id]; + }) + .on("mouseover", function() { + d3.select(this).select("rect") + .transition().duration(150) + .attr("transform", "scale(1.05)") + .attr("stroke-width", 3); + }) + .on("mouseout", function() { + d3.select(this).select("rect") + .transition().duration(150) + .attr("transform", "scale(1)") + .attr("stroke-width", 2); + }); + + // Test box + const boxWidth = 115; + testGroup.append("rect") + .attr("x", isTop ? 0 : -boxWidth) + .attr("y", -20) + .attr("width", boxWidth) + .attr("height", 40) + .attr("rx", 6) + .attr("fill", "white") + .attr("stroke", cat.color) + .attr("stroke-width", 2) + .attr("filter", "url(#shadow)"); + + // Test name + testGroup.append("text") + .attr("x", isTop ? boxWidth/2 : -boxWidth/2) + .attr("y", -4) + .attr("text-anchor", "middle") + .attr("fill", "#37474f") + .attr("font-size", "10px") + .attr("font-weight", "600") + .text(test.label); + + // Condition (when to use) + testGroup.append("text") + .attr("x", isTop ? boxWidth/2 : -boxWidth/2) + .attr("y", 10) + .attr("text-anchor", "middle") + .attr("fill", "#455a64") + .attr("font-size", "9px") + .attr("font-weight", "500") + .text(test.condition); + }); + }); + + // Title at the start + container.append("text") + .attr("x", 40) + .attr("y", spineY - 8) + .attr("text-anchor", "start") + .attr("fill", "#37474f") + .attr("font-size", "13px") + .attr("font-weight", "600") + .text("Research"); + container.append("text") + .attr("x", 40) + .attr("y", spineY + 10) + .attr("text-anchor", "start") + .attr("fill", "#37474f") + .attr("font-size", "13px") + .attr("font-weight", "600") + .text("Goal"); + + // Legend + const legendY = height - 35; + container.append("text") + .attr("x", width / 2) + .attr("y", legendY) + .attr("text-anchor", "middle") + .attr("fill", "#546e7a") + .attr("font-size", "12px") + .attr("font-weight", "500") + .text("Click any test • Scroll to zoom • Drag to pan"); + + return wrapper.node(); +} +``` + +```{ojs} +//| echo: false + +{ + if (selectedTest) { + return html` +
+
+

${selectedTest.name}

+ + ${selectedTest.parametric ? 'Parametric' : 'Non-Parametric'} + +
+
+
+ Description +

${selectedTest.description}

+
+
+ When to Use +

${selectedTest.use}

+
+
+ Example +

${selectedTest.example}

+
+
+
+ `; + } else { + return html` +
+

Click on any test box in the diagram above to see detailed information

+
+ `; + } +} +``` + +### Quick Reference Table + +| Scenario | Parametric Test | Non-Parametric Alternative | +|----------|-----------------|---------------------------| +| 1 sample vs known value | One-Sample T-Test | Wilcoxon Signed-Rank | +| 2 independent groups | Independent T-Test / Welch's | Mann-Whitney U | +| 2 paired/matched groups | Paired T-Test | Wilcoxon Signed-Rank | +| 3+ independent groups | One-Way ANOVA | Kruskal-Wallis | +| Correlation (continuous) | Pearson | Spearman / Kendall | +| Association (categorical) | Chi-Square | Fisher's Exact | + +Selecting the appropriate test follows a logical sequence: + +First, identify your research question. Are you comparing groups, measuring association, or testing against a known value? Are you examining one variable, two variables, or more? + +Second, characterize your data. Is the outcome continuous, ordinal, or categorical? How many groups or variables are involved? Is the design independent or paired/related? + +Third, check assumptions. Is the data approximately normal? Are variances equal across groups? Are expected frequencies sufficient for chi-square? + +Fourth, select the test that matches your question, data type, and satisfied assumptions. When assumptions are violated, choose robust alternatives. + +Finally, remember that statistical tests answer narrow questions. They indicate whether effects exist, not whether they matter. Always supplement significance tests with effect sizes, confidence intervals, and practical interpretation. + +## Conclusion + +The diversity of statistical tests reflects the diversity of research questions and data types we encounter. No single test serves all purposes; no universal approach handles all situations. The skilled analyst matches tools to tasks, selecting tests whose assumptions align with data characteristics and whose outputs address research questions. + +This matching process requires both technical knowledge and practical judgment. Knowing what each test does, what it assumes, and when it fails empowers researchers to extract valid insights from data while avoiding the pitfalls of misapplied methods. + +Statistical tests are not arbitrary rituals but carefully designed tools, each optimized for specific purposes. Understanding their logic—not just their mechanics—transforms test selection from cookbook following to principled reasoning. And principled reasoning, ultimately, is what separates meaningful analysis from statistical theater. diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..033c4a5 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -e # Exit on any error + +echo "Building build.valuecurve.co..." + +# Clean dist +rm -rf dist +mkdir -p dist + +# 1. Build SvelteKit homepage +echo "Building homepage..." +(cd apps/homepage && npm run build) + +# 2. Copy SvelteKit build (base site + listing pages) +echo "Copying SvelteKit build..." +cp -r apps/homepage/build/* dist/ + +# 3. Build flowchart app +echo "Building flowchart..." +(cd apps/flowchart && npm run build) + +# 4. Merge flowchart into tools/flowchart/ +mkdir -p dist/tools/flowchart +cp -r apps/flowchart/dist/* dist/tools/flowchart/ + +# 5. Build Quarto guide (if quarto is available) +if command -v quarto &> /dev/null; then + echo "Building statistical-tests guide..." + quarto render posts/statistical-tests.qmd + mkdir -p dist/guides/statistical-tests + cp _site/posts/statistical-tests.html dist/guides/statistical-tests/index.html +else + echo "Quarto not found, copying pre-built guide..." + if [ -d "guides/statistical-tests" ]; then + cp -r guides/statistical-tests dist/guides/ + fi +fi + +echo "" +echo "Build complete!" +echo "" +echo "dist/ contents:" +ls -la dist/ +echo "" +echo "guides/:" +ls -la dist/guides/ 2>/dev/null || echo " (none)" +echo "" +echo "tools/:" +ls -la dist/tools/ 2>/dev/null || echo " (none)" +echo "" +echo "To deploy: ./scripts/deploy.sh" diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..9cfa644 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +# Ensure dist exists and has required files +if [ ! -f "dist/index.html" ]; then + echo "Error: dist/index.html not found. Run ./scripts/build.sh first." + exit 1 +fi + +if [ ! -d "dist/guides" ] || [ ! -d "dist/tools" ] || [ ! -d "dist/notebooks" ]; then + echo "Error: dist/ is incomplete. Run ./scripts/build.sh first." + exit 1 +fi + +echo "Deploying to VPS..." +echo "Contents:" +ls -la dist/ + +rsync -avz --delete dist/ root@46.224.190.110:/var/www/build.valuecurve.co/ + +echo "" +echo "Deploy complete!" +echo "Site live at: https://build.valuecurve.co" diff --git a/scripts/dev.sh b/scripts/dev.sh new file mode 100755 index 0000000..8e243d5 --- /dev/null +++ b/scripts/dev.sh @@ -0,0 +1,50 @@ +#!/bin/bash +set -e + +# Local development server for build.valuecurve.co +# Mirrors production: static files + API proxy + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_DIR="$(dirname "$SCRIPT_DIR")" +DIST_DIR="$PROJECT_DIR/dist" + +# Configurable ports (can override with env vars) +CADDY_PORT=${CADDY_PORT:-8080} +API_PORT=${API_PORT:-8000} + +if [ ! -d "$DIST_DIR" ]; then + echo "Error: dist/ not found. Run ./scripts/build.sh first." + exit 1 +fi + +# Generate Caddyfile dynamically (HTTP-only for local dev) +CADDYFILE=$(mktemp) +cat > "$CADDYFILE" << CADDY +{ + auto_https off +} + +:$CADDY_PORT { + root * "$DIST_DIR" + + handle /api/* { + reverse_proxy localhost:$API_PORT + } + + handle { + try_files {path} {path}/ {path}/index.html /index.html + file_server + } +} +CADDY + +echo "Starting local dev server..." +echo " Static files: $DIST_DIR" +echo " Caddy: http://localhost:$CADDY_PORT" +echo " API proxy: localhost:$API_PORT" +echo "" +echo "Make sure backend is running on port $API_PORT" +echo "Press Ctrl+C to stop" +echo "" + +caddy run --adapter caddyfile --config "$CADDYFILE" diff --git a/tools/flowchart/assets/index-C0Tb9hP5.js b/tools/flowchart/assets/index-C0Tb9hP5.js new file mode 100644 index 0000000..5eeceeb --- /dev/null +++ b/tools/flowchart/assets/index-C0Tb9hP5.js @@ -0,0 +1,3 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();const vo=!1;var Lr=Array.isArray,xl=Array.prototype.indexOf,Vr=Array.from,El=Object.defineProperty,Dt=Object.getOwnPropertyDescriptor,ms=Object.getOwnPropertyDescriptors,ys=Object.prototype,Sl=Array.prototype,Br=Object.getPrototypeOf,yi=Object.isExtensible;function Pn(e){return typeof e=="function"}const Sn=()=>{};function kl(e){return e()}function po(e){for(var t=0;t{e=r,t=o});return{promise:n,resolve:e,reject:t}}function Ce(e,t,n=!1){return e===void 0?n?t():t:e}function Xn(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);const n=[];for(const r of e)if(n.push(r),n.length===t)break;return n}const xe=2,Ho=4,Fr=8,ws=1<<24,St=16,kt=32,qt=64,Kr=128,je=512,Ee=1024,ze=2048,st=4096,He=8192,wt=16384,Lo=32768,Rt=65536,_i=1<<17,bs=1<<18,tn=1<<19,xs=1<<20,mt=1<<25,Gt=32768,mo=1<<21,Vo=1<<22,It=1<<23,ot=Symbol("$state"),Es=Symbol("legacy props"),Cl=Symbol(""),ln=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};function Bo(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function Nl(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Pl(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Ml(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Al(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Tl(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Dl(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Il(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function zl(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Ol(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Rl(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const ql=1,Hl=2,Ss=4,Ll=8,Vl=16,Bl=1,Fl=2,Kl=4,Yl=8,Wl=16,ks=1,Zl=2,be=Symbol(),Xl="http://www.w3.org/1999/xhtml",Gl="@attach";function Ul(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function Ql(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function Cs(e){return e===this.v}function Ns(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Ps(e){return!Ns(e,this.v)}let kn=!1,jl=!1;function Jl(){kn=!0}const $l=[];function Ms(e,t=!1,n=!1){return pr(e,new Map,"",$l,null,n)}function pr(e,t,n,r,o=null,i=!1){if(typeof e=="object"&&e!==null){var s=t.get(e);if(s!==void 0)return s;if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(Lr(e)){var a=Array(e.length);t.set(e,a),o!==null&&t.set(o,a);for(var l=0;l{t===cn&&nc()})}cn.push(e)}function Ts(e){var t=ie;if(t===null)return ne.f|=It,e;if((t.f&Lo)===0){if((t.f&Kr)===0)throw e;t.b.error(e)}else vn(e,t)}function vn(e,t){for(;t!==null;){if((t.f&Kr)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e}const ar=new Set;let ve=null,Fe=null,et=[],Yo=null,yo=!1;class Ue{committed=!1;current=new Map;previous=new Map;#e=new Set;#t=new Set;#n=0;#r=0;#l=null;#i=new Set;#o=new Set;skipped_effects=new Set;is_fork=!1;is_deferred(){return this.is_fork||this.#r>0}process(t){et=[],this.apply();var n={parent:null,effect:null,effects:[],render_effects:[]};for(const r of t)this.#s(r,n);this.is_fork||this.#u(),this.is_deferred()?(this.#a(n.effects),this.#a(n.render_effects)):(ve=null,wi(n.render_effects),wi(n.effects),this.#l?.resolve()),Fe=null}#s(t,n){t.f^=Ee;for(var r=t.first;r!==null;){var o=r.f,i=(o&(kt|qt))!==0,s=i&&(o&Ee)!==0,a=s||(o&He)!==0||this.skipped_effects.has(r);if((r.f&Kr)!==0&&r.b?.is_pending()&&(n={parent:n,effect:r,effects:[],render_effects:[]}),!a&&r.fn!==null){i?r.f^=Ee:(o&Ho)!==0?n.effects.push(r):$n(r)&&((r.f&St)!==0&&this.#i.add(r),Ln(r));var l=r.first;if(l!==null){r=l;continue}}var c=r.parent;for(r=r.next;r===null&&c!==null;)c===n.effect&&(this.#a(n.effects),this.#a(n.render_effects),n=n.parent),r=c.next,c=c.parent}}#a(t){for(const n of t)(n.f&ze)!==0?this.#i.add(n):(n.f&st)!==0&&this.#o.add(n),this.#c(n.deps),ke(n,Ee)}#c(t){if(t!==null)for(const n of t)(n.f&xe)===0||(n.f&Gt)===0||(n.f^=Gt,this.#c(n.deps))}capture(t,n){this.previous.has(t)||this.previous.set(t,n),(t.f&It)===0&&(this.current.set(t,t.v),Fe?.set(t,t.v))}activate(){ve=this,this.apply()}deactivate(){ve===this&&(ve=null,Fe=null)}flush(){if(this.activate(),et.length>0){if(rc(),ve!==null&&ve!==this)return}else this.#n===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#t)t(this);this.#t.clear()}#u(){if(this.#r===0){for(const t of this.#e)t();this.#e.clear()}this.#n===0&&this.#d()}#d(){if(ar.size>1){this.previous.clear();var t=Fe,n=!0,r={parent:null,effect:null,effects:[],render_effects:[]};for(const i of ar){if(i===this){n=!1;continue}const s=[];for(const[l,c]of this.current){if(i.current.has(l))if(n&&c!==i.current.get(l))i.current.set(l,c);else continue;s.push(l)}if(s.length===0)continue;const a=[...i.current.keys()].filter(l=>!this.current.has(l));if(a.length>0){var o=et;et=[];const l=new Set,c=new Map;for(const d of s)Ds(d,a,l,c);if(et.length>0){ve=i,i.apply();for(const d of et)i.#s(d,r);i.deactivate()}et=o}}ve=null,Fe=t}this.committed=!0,ar.delete(this)}increment(t){this.#n+=1,t&&(this.#r+=1)}decrement(t){this.#n-=1,t&&(this.#r-=1),this.revive()}revive(){for(const t of this.#i)this.#o.delete(t),ke(t,ze),Ut(t);for(const t of this.#o)ke(t,st),Ut(t);this.flush()}oncommit(t){this.#e.add(t)}ondiscard(t){this.#t.add(t)}settled(){return(this.#l??=_s()).promise}static ensure(){if(ve===null){const t=ve=new Ue;ar.add(ve),Ue.enqueue(()=>{ve===t&&t.flush()})}return ve}static enqueue(t){nn(t)}apply(){}}function rc(){var e=Wt;yo=!0;var t=null;try{var n=0;for(Er(!0);et.length>0;){var r=Ue.ensure();if(n++>1e3){var o,i;oc()}r.process(et),zt.clear()}}finally{yo=!1,Er(e),Yo=null}}function oc(){try{Tl()}catch(e){vn(e,Yo)}}let gt=null;function wi(e){var t=e.length;if(t!==0){for(var n=0;n0)){zt.clear();for(const o of gt){if((o.f&(wt|He))!==0)continue;const i=[o];let s=o.parent;for(;s!==null;)gt.has(s)&&(gt.delete(s),i.push(s)),s=s.parent;for(let a=i.length-1;a>=0;a--){const l=i[a];(l.f&(wt|He))===0&&Ln(l)}}gt.clear()}}gt=null}}function Ds(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const o of e.reactions){const i=o.f;(i&xe)!==0?Ds(o,t,n,r):(i&(Vo|St))!==0&&(i&ze)===0&&Is(o,t,r)&&(ke(o,ze),Ut(o))}}function Is(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const o of e.deps){if(t.includes(o))return!0;if((o.f&xe)!==0&&Is(o,t,n))return n.set(o,!0),!0}return n.set(e,!1),!1}function Ut(e){for(var t=Yo=e;t.parent!==null;){t=t.parent;var n=t.f;if(yo&&t===ie&&(n&St)!==0&&(n&bs)===0)return;if((n&(qt|kt))!==0){if((n&Ee)===0)return;t.f^=Ee}}et.push(t)}function zs(e){let t=0,n=Qt(0),r;return()=>{qn()&&(u(n),Yr(()=>(t===0&&(r=qe(()=>e(()=>On(n)))),t+=1,()=>{nn(()=>{t-=1,t===0&&(r?.(),r=void 0,On(n))})})))}}var ic=Rt|tn|Kr;function sc(e,t,n){new ac(e,t,n)}class ac{parent;#e=!1;#t;#n=null;#r;#l;#i;#o=null;#s=null;#a=null;#c=null;#u=null;#d=0;#f=0;#g=!1;#h=null;#_=zs(()=>(this.#h=Qt(this.#d),()=>{this.#h=null}));constructor(t,n,r){this.#t=t,this.#r=n,this.#l=r,this.parent=ie.b,this.#e=!!this.#r.pending,this.#i=Jn(()=>{ie.b=this;{var o=this.#m();try{this.#o=Te(()=>r(o))}catch(i){this.error(i)}this.#f>0?this.#p():this.#e=!1}return()=>{this.#u?.remove()}},ic)}#w(){try{this.#o=Te(()=>this.#l(this.#t))}catch(t){this.error(t)}this.#e=!1}#b(){const t=this.#r.pending;t&&(this.#s=Te(()=>t(this.#t)),Ue.enqueue(()=>{var n=this.#m();this.#o=this.#v(()=>(Ue.ensure(),Te(()=>this.#l(n)))),this.#f>0?this.#p():(Yt(this.#s,()=>{this.#s=null}),this.#e=!1)}))}#m(){var t=this.#t;return this.#e&&(this.#u=bt(),this.#t.before(this.#u),t=this.#u),t}is_pending(){return this.#e||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!this.#r.pending}#v(t){var n=ie,r=ne,o=fe;lt(this.#i),De(this.#i),gn(this.#i.ctx);try{return t()}catch(i){return Ts(i),null}finally{lt(n),De(r),gn(o)}}#p(){const t=this.#r.pending;this.#o!==null&&(this.#c=document.createDocumentFragment(),this.#c.append(this.#u),ea(this.#o,this.#c)),this.#s===null&&(this.#s=Te(()=>t(this.#t)))}#y(t){if(!this.has_pending_snippet()){this.parent&&this.parent.#y(t);return}this.#f+=t,this.#f===0&&(this.#e=!1,this.#s&&Yt(this.#s,()=>{this.#s=null}),this.#c&&(this.#t.before(this.#c),this.#c=null))}update_pending_count(t){this.#y(t),this.#d+=t,this.#h&&pn(this.#h,this.#d)}get_effect_pending(){return this.#_(),u(this.#h)}error(t){var n=this.#r.onerror;let r=this.#r.failed;if(this.#g||!n&&!r)throw t;this.#o&&(_e(this.#o),this.#o=null),this.#s&&(_e(this.#s),this.#s=null),this.#a&&(_e(this.#a),this.#a=null);var o=!1,i=!1;const s=()=>{if(o){Ql();return}o=!0,i&&Rl(),Ue.ensure(),this.#d=0,this.#a!==null&&Yt(this.#a,()=>{this.#a=null}),this.#e=this.has_pending_snippet(),this.#o=this.#v(()=>(this.#g=!1,Te(()=>this.#l(this.#t)))),this.#f>0?this.#p():this.#e=!1};var a=ne;try{De(null),i=!0,n?.(t,s),i=!1}catch(l){vn(l,this.#i&&this.#i.parent)}finally{De(a)}r&&nn(()=>{this.#a=this.#v(()=>{Ue.ensure(),this.#g=!0;try{return Te(()=>{r(this.#t,()=>t,()=>s)})}catch(l){return vn(l,this.#i.parent),null}finally{this.#g=!1}})})}}function Os(e,t,n,r){const o=Gn()?Un:Wo;if(n.length===0&&e.length===0){r(t.map(o));return}var i=ve,s=ie,a=lc();function l(){Promise.all(n.map(c=>cc(c))).then(c=>{a();try{r([...t.map(o),...c])}catch(d){(s.f&wt)===0&&vn(d,s)}i?.deactivate(),xr()}).catch(c=>{vn(c,s)})}e.length>0?Promise.all(e).then(()=>{a();try{return l()}finally{i?.deactivate(),xr()}}):l()}function lc(){var e=ie,t=ne,n=fe,r=ve;return function(i=!0){lt(e),De(t),gn(n),i&&r?.activate()}}function xr(){lt(null),De(null),gn(null)}function Un(e){var t=xe|ze,n=ne!==null&&(ne.f&xe)!==0?ne:null;return ie!==null&&(ie.f|=tn),{ctx:fe,deps:null,effects:null,equals:Cs,f:t,fn:e,reactions:null,rv:0,v:be,wv:0,parent:n??ie,ac:null}}function cc(e,t){let n=ie;n===null&&Nl();var r=n.b,o=void 0,i=Qt(be),s=!ne,a=new Map;return _c(()=>{var l=_s();o=l.promise;try{Promise.resolve(e()).then(l.resolve,l.reject).then(()=>{c===ve&&c.committed&&c.deactivate(),xr()})}catch(f){l.reject(f),xr()}var c=ve;if(s){var d=!r.is_pending();r.update_pending_count(1),c.increment(d),a.get(c)?.reject(ln),a.delete(c),a.set(c,l)}const h=(f,g=void 0)=>{if(c.activate(),g)g!==ln&&(i.f|=It,pn(i,g));else{(i.f&It)!==0&&(i.f^=It),pn(i,f);for(const[v,_]of a){if(a.delete(v),v===c)break;_.reject(ln)}}s&&(r.update_pending_count(-1),c.decrement(d))};l.promise.then(h,f=>h(null,f||"unknown"))}),Go(()=>{for(const l of a.values())l.reject(ln)}),new Promise(l=>{function c(d){function h(){d===o?l(i):c(o)}d.then(h,h)}c(o)})}function m(e){const t=Un(e);return ta(t),t}function Wo(e){const t=Un(e);return t.equals=Ps,t}function Rs(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n0&&!Hs&&fc()}return t}function fc(){Hs=!1;var e=Wt;Er(!0);const t=Array.from(_o);try{for(const n of t)(n.f&Ee)!==0&&ke(n,st),$n(n)&&Ln(n)}finally{Er(e)}_o.clear()}function On(e){R(e,e.v+1)}function Ls(e,t){var n=e.reactions;if(n!==null)for(var r=Gn(),o=n.length,i=0;i{if(Zt===i)return a();var l=ne,c=Zt;De(null),Ei(i);var d=a();return De(l),Ei(c),d};return r&&n.set("length",se(e.length)),new Proxy(e,{defineProperty(a,l,c){(!("value"in c)||c.configurable===!1||c.enumerable===!1||c.writable===!1)&&Il();var d=n.get(l);return d===void 0?d=s(()=>{var h=se(c.value);return n.set(l,h),h}):R(d,c.value,!0),!0},deleteProperty(a,l){var c=n.get(l);if(c===void 0){if(l in a){const d=s(()=>se(be));n.set(l,d),On(o)}}else R(c,be),On(o);return!0},get(a,l,c){if(l===ot)return e;var d=n.get(l),h=l in a;if(d===void 0&&(!h||Dt(a,l)?.writable)&&(d=s(()=>{var g=nt(h?a[l]:be),v=se(g);return v}),n.set(l,d)),d!==void 0){var f=u(d);return f===be?void 0:f}return Reflect.get(a,l,c)},getOwnPropertyDescriptor(a,l){var c=Reflect.getOwnPropertyDescriptor(a,l);if(c&&"value"in c){var d=n.get(l);d&&(c.value=u(d))}else if(c===void 0){var h=n.get(l),f=h?.v;if(h!==void 0&&f!==be)return{enumerable:!0,configurable:!0,value:f,writable:!0}}return c},has(a,l){if(l===ot)return!0;var c=n.get(l),d=c!==void 0&&c.v!==be||Reflect.has(a,l);if(c!==void 0||ie!==null&&(!d||Dt(a,l)?.writable)){c===void 0&&(c=s(()=>{var f=d?nt(a[l]):be,g=se(f);return g}),n.set(l,c));var h=u(c);if(h===be)return!1}return d},set(a,l,c,d){var h=n.get(l),f=l in a;if(r&&l==="length")for(var g=c;gse(be)),n.set(g+"",v))}if(h===void 0)(!f||Dt(a,l)?.writable)&&(h=s(()=>se(void 0)),R(h,nt(c)),n.set(l,h));else{f=h.v!==be;var _=s(()=>nt(c));R(h,_)}var y=Reflect.getOwnPropertyDescriptor(a,l);if(y?.set&&y.set.call(d,c),!f){if(r&&typeof l=="string"){var w=n.get("length"),C=Number(l);Number.isInteger(C)&&C>=w.v&&R(w,C+1)}On(o)}return!0},ownKeys(a){u(o);var l=Reflect.ownKeys(a).filter(h=>{var f=n.get(h);return f===void 0||f.v!==be});for(var[c,d]of n)d.v!==be&&!(c in a)&&l.push(c);return l},setPrototypeOf(){zl()}})}function bi(e){try{if(e!==null&&typeof e=="object"&&ot in e)return e[ot]}catch{}return e}function hc(e,t){return Object.is(bi(e),bi(t))}var Ae,Vs,Bs,Fs;function gc(){if(Ae===void 0){Ae=window,Vs=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Bs=Dt(t,"firstChild").get,Fs=Dt(t,"nextSibling").get,yi(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),yi(n)&&(n.__t=void 0)}}function bt(e=""){return document.createTextNode(e)}function vt(e){return Bs.call(e)}function Qn(e){return Fs.call(e)}function ee(e,t){return vt(e)}function le(e,t=!1){{var n=vt(e);return n instanceof Comment&&n.data===""?Qn(n):n}}function $(e,t=1,n=!1){let r=e;for(;t--;)r=Qn(r);return r}function vc(e){e.textContent=""}function Ks(){return!1}function pc(e,t){if(t){const n=document.body;e.autofocus=!0,nn(()=>{document.activeElement===n&&e.focus()})}}function Xo(e){var t=ne,n=ie;De(null),lt(null);try{return e()}finally{De(t),lt(n)}}function Ys(e){ie===null&&(ne===null&&Al(),Ml()),rn&&Pl()}function mc(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function We(e,t,n){var r=ie;r!==null&&(r.f&He)!==0&&(e|=He);var o={ctx:fe,deps:null,nodes:null,f:e|ze|je,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};if(n)try{Ln(o),o.f|=Lo}catch(a){throw _e(o),a}else t!==null&&Ut(o);var i=o;if(n&&i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&(i.f&tn)===0&&(i=i.first,(e&St)!==0&&(e&Rt)!==0&&i!==null&&(i.f|=Rt)),i!==null&&(i.parent=r,r!==null&&mc(i,r),ne!==null&&(ne.f&xe)!==0&&(e&qt)===0)){var s=ne;(s.effects??=[]).push(i)}return o}function qn(){return ne!==null&&!rt}function Go(e){const t=We(Fr,null,!1);return ke(t,Ee),t.teardown=e,t}function at(e){Ys();var t=ie.f,n=!ne&&(t&kt)!==0&&(t&Lo)===0;if(n){var r=fe;(r.e??=[]).push(e)}else return Ws(e)}function Ws(e){return We(Ho|xs,e,!1)}function Zs(e){return Ys(),We(Fr|xs,e,!0)}function Xs(e){Ue.ensure();const t=We(qt|tn,e,!0);return()=>{_e(t)}}function yc(e){Ue.ensure();const t=We(qt|tn,e,!0);return(n={})=>new Promise(r=>{n.outro?Yt(t,()=>{_e(t),r(void 0)}):(_e(t),r(void 0))})}function jn(e){return We(Ho,e,!1)}function _c(e){return We(Vo|tn,e,!0)}function Yr(e,t=0){return We(Fr|t,e,!0)}function he(e,t=[],n=[],r=[]){Os(r,t,n,o=>{We(Fr,()=>e(...o.map(u)),!0)})}function Jn(e,t=0){var n=We(St|t,e,!0);return n}function Gs(e,t=0){var n=We(ws|t,e,!0);return n}function Te(e){return We(kt|tn,e,!0)}function Us(e){var t=e.teardown;if(t!==null){const n=rn,r=ne;xi(!0),De(null);try{t.call(null)}finally{xi(n),De(r)}}}function Qs(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const o=n.ac;o!==null&&Xo(()=>{o.abort(ln)});var r=n.next;(n.f&qt)!==0?n.parent=null:_e(n,t),n=r}}function wc(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&kt)===0&&_e(t),t=n}}function _e(e,t=!0){var n=!1;(t||(e.f&bs)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(bc(e.nodes.start,e.nodes.end),n=!0),Qs(e,t&&!n),Sr(e,0),ke(e,wt);var r=e.nodes&&e.nodes.t;if(r!==null)for(const i of r)i.stop();Us(e);var o=e.parent;o!==null&&o.first!==null&&js(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function bc(e,t){for(;e!==null;){var n=e===t?null:Qn(e);e.remove(),e=n}}function js(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Yt(e,t,n=!0){var r=[];Js(e,r,!0);var o=()=>{n&&_e(e),t&&t()},i=r.length;if(i>0){var s=()=>--i||o();for(var a of r)a.out(s)}else o()}function Js(e,t,n){if((e.f&He)===0){e.f^=He;var r=e.nodes&&e.nodes.t;if(r!==null)for(const a of r)(a.is_global||n)&&t.push(a);for(var o=e.first;o!==null;){var i=o.next,s=(o.f&Rt)!==0||(o.f&kt)!==0&&(e.f&St)!==0;Js(o,t,s?n:!1),o=i}}}function Uo(e){$s(e,!0)}function $s(e,t){if((e.f&He)!==0){e.f^=He,(e.f&Ee)===0&&(ke(e,ze),Ut(e));for(var n=e.first;n!==null;){var r=n.next,o=(n.f&Rt)!==0||(n.f&kt)!==0;$s(n,o?t:!1),n=r}var i=e.nodes&&e.nodes.t;if(i!==null)for(const s of i)(s.is_global||t)&&s.in()}}function ea(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var o=n===r?null:Qn(n);t.append(n),n=o}}let Wt=!1;function Er(e){Wt=e}let rn=!1;function xi(e){rn=e}let ne=null,rt=!1;function De(e){ne=e}let ie=null;function lt(e){ie=e}let xt=null;function ta(e){ne!==null&&(xt===null?xt=[e]:xt.push(e))}let Pe=null,Oe=0,Be=null;function xc(e){Be=e}let na=1,Hn=0,Zt=Hn;function Ei(e){Zt=e}function ra(){return++na}function $n(e){var t=e.f;if((t&ze)!==0)return!0;if(t&xe&&(e.f&=~Gt),(t&st)!==0){var n=e.deps;if(n!==null)for(var r=n.length,o=0;oe.wv)return!0}(t&je)!==0&&Fe===null&&ke(e,Ee)}return!1}function oa(e,t,n=!0){var r=e.reactions;if(r!==null&&!xt?.includes(e))for(var o=0;o{e.ac.abort(ln)}),e.ac=null);try{e.f|=mo;var d=e.fn,h=d(),f=e.deps;if(Pe!==null){var g;if(Sr(e,Oe),f!==null&&Oe>0)for(f.length=Oe+Pe.length,g=0;gn?.call(this,i))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?nn(()=>{t.addEventListener(e,o,r)}):t.addEventListener(e,o,r),o}function xo(e,t,n,r={}){var o=Qo(t,e,n,r);return()=>{e.removeEventListener(t,o,r)}}function kr(e,t,n,r,o){var i={capture:r,passive:o},s=Qo(e,t,n,i);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Go(()=>{t.removeEventListener(e,s,i)})}function jo(e){for(var t=0;t{throw y});throw f}}finally{e.__root=t,delete e.currentTarget,De(d),lt(h)}}}function ua(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("",""),t.content}function mn(e,t){var n=ie;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function ae(e,t){var n=(t&ks)!==0,r=(t&Zl)!==0,o,i=!e.startsWith("");return()=>{o===void 0&&(o=ua(i?e:""+e),n||(o=vt(o)));var s=r||Vs?document.importNode(o,!0):o.cloneNode(!0);if(n){var a=vt(s),l=s.lastChild;mn(a,l)}else mn(s,s);return s}}function Ic(e,t,n="svg"){var r=!e.startsWith(""),o=(t&ks)!==0,i=`<${n}>${r?e:""+e}`,s;return()=>{if(!s){var a=ua(i),l=vt(a);if(o)for(s=document.createDocumentFragment();vt(l);)s.appendChild(vt(l));else s=vt(l)}var c=s.cloneNode(!0);if(o){var d=vt(c),h=c.lastChild;mn(d,h)}else mn(c,c);return c}}function me(e,t){return Ic(e,t,"svg")}function zc(e=""){{var t=bt(e+"");return mn(t,t),t}}function Se(){var e=document.createDocumentFragment(),t=document.createComment(""),n=bt();return e.append(t,n),mn(t,n),e}function F(e,t){e!==null&&e.before(t)}function Re(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??=e.nodeValue)&&(e.__t=n,e.nodeValue=n+"")}function Oc(e,t){return Rc(e,t)}const sn=new Map;function Rc(e,{target:t,anchor:n,props:r={},events:o,context:i,intro:s=!0}){gc();var a=new Set,l=h=>{for(var f=0;f{var h=n??t.appendChild(bt());return sc(h,{pending:()=>{}},f=>{if(i){re({});var g=fe;g.c=i}o&&(r.$$events=o),c=e(f,r)||{},i&&oe()}),()=>{for(var f of a){t.removeEventListener(f,Tn);var g=sn.get(f);--g===0?(document.removeEventListener(f,Tn),sn.delete(f)):sn.set(f,g)}bo.delete(l),h!==n&&h.parentNode?.removeChild(h)}});return qc.set(c,d),c}let qc=new WeakMap;class Jo{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#l=!0;constructor(t,n=!0){this.anchor=t,this.#l=n}#i=()=>{var t=ve;if(this.#e.has(t)){var n=this.#e.get(t),r=this.#t.get(n);if(r)Uo(r),this.#r.delete(n);else{var o=this.#n.get(n);o&&(this.#t.set(n,o.effect),this.#n.delete(n),o.fragment.lastChild.remove(),this.anchor.before(o.fragment),r=o.effect)}for(const[i,s]of this.#e){if(this.#e.delete(i),i===t)break;const a=this.#n.get(s);a&&(_e(a.effect),this.#n.delete(s))}for(const[i,s]of this.#t){if(i===n||this.#r.has(i))continue;const a=()=>{if(Array.from(this.#e.values()).includes(i)){var c=document.createDocumentFragment();ea(s,c),c.append(bt()),this.#n.set(i,{effect:s,fragment:c})}else _e(s);this.#r.delete(i),this.#t.delete(i)};this.#l||!r?(this.#r.add(i),Yt(s,a,!1)):a()}}};#o=t=>{this.#e.delete(t);const n=Array.from(this.#e.values());for(const[r,o]of this.#n)n.includes(r)||(_e(o.effect),this.#n.delete(r))};ensure(t,n){var r=ve,o=Ks();if(n&&!this.#t.has(t)&&!this.#n.has(t))if(o){var i=document.createDocumentFragment(),s=bt();i.append(s),this.#n.set(t,{effect:Te(()=>n(s)),fragment:i})}else this.#t.set(t,Te(()=>n(this.anchor)));if(this.#e.set(r,t),o){for(const[a,l]of this.#t)a===t?r.skipped_effects.delete(l):r.skipped_effects.add(l);for(const[a,l]of this.#n)a===t?r.skipped_effects.delete(l.effect):r.skipped_effects.add(l.effect);r.oncommit(this.#i),r.ondiscard(this.#o)}else this.#i()}}function de(e,t,n=!1){var r=new Jo(e),o=n?Rt:0;function i(s,a){r.ensure(s,a)}Jn(()=>{var s=!1;t((a,l=!0)=>{s=!0,i(l,a)}),s||i(!1,null)},o)}function Hc(e,t){Yr(()=>{var n=t();for(var r in n){var o=n[r];o?e.style.setProperty(r,o):e.style.removeProperty(r)}})}function Lc(e,t,n){for(var r=[],o=t.length,i,s=t.length,a=0;a{if(i){if(i.pending.delete(h),i.done.add(h),i.pending.size===0){var f=e.outrogroups;Eo(Vr(i.done)),f.delete(i),f.size===0&&(e.outrogroups=null)}}else s-=1},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var c=n,d=c.parentNode;vc(d),d.append(c),e.items.clear()}Eo(t,!l)}else i={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(i)}function Eo(e,t=!0){for(var n=0;n{var w=n();return Lr(w)?w:w==null?[]:Vr(w)}),f,g=!0;function v(){y.fallback=d,Vc(y,f,s,t,r),d!==null&&(f.length===0?(d.f&mt)===0?Uo(d):(d.f^=mt,Dn(d,null,s)):Yt(d,()=>{d=null}))}var _=Jn(()=>{f=u(h);for(var w=f.length,C=new Set,k=ve,b=Ks(),A=0;Ai(s)):(d=Te(()=>i(ki??=bt())),d.f|=mt)),!g)if(b){for(const[H,K]of a)C.has(H)||k.skipped_effects.add(K.e);k.oncommit(v),k.ondiscard(()=>{})}else v();u(h)}),y={effect:_,items:a,outrogroups:null,fallback:d};g=!1}function Vc(e,t,n,r,o){var i=(r&Ll)!==0,s=t.length,a=e.items,l=e.effect.first,c,d=null,h,f=[],g=[],v,_,y,w;if(i)for(w=0;w0){var H=(r&Ss)!==0&&s===0?n:null;if(i){for(w=0;w{if(h!==void 0)for(y of h)y.nodes?.a?.apply()})}function Bc(e,t,n,r,o,i,s,a){var l=(s&ql)!==0?(s&Vl)===0?dc(n,!1,!1):Qt(n):null,c=(s&Hl)!==0?Qt(o):null;return{v:l,i:c,e:Te(()=>(i(t,l??n,c??o,a),()=>{e.delete(r)}))}}function Dn(e,t,n){if(e.nodes)for(var r=e.nodes.start,o=e.nodes.end,i=t&&(t.f&mt)===0?t.nodes.start:n;r!==null;){var s=Qn(r);if(i.before(r),r===o)return;r=s}}function Pt(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Ye(e,t,...n){var r=new Jo(e);Jn(()=>{const o=t()??null;r.ensure(o,o&&(i=>o(i,...n)))},Rt)}function Zr(e,t,n){var r=new Jo(e);Jn(()=>{var o=t()??null;r.ensure(o,o&&(i=>n(i,o)))},Rt)}function Ne(e,t,n){jn(()=>{var r=qe(()=>t(e,n?.())||{});if(n&&r?.update){var o=!1,i={};Yr(()=>{var s=n();la(s),o&&Ns(i,s)&&(i=s,r.update(s))}),o=!0}if(r?.destroy)return()=>r.destroy()})}function Fc(e,t){var n=void 0,r;Gs(()=>{n!==(n=t())&&(r&&(_e(r),r=null),n&&(r=Te(()=>{jn(()=>n(e))})))})}function da(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t=0;){var a=s+i;(s===0||Ci.includes(r[s-1]))&&(a===r.length||Ci.includes(r[a]))?r=(s===0?"":r.substring(0,s))+r.substring(a+1):s=a}}return r===""?null:r}function Ni(e,t=!1){var n=t?" !important;":";",r="";for(var o in e){var i=e[o];i!=null&&i!==""&&(r+=" "+o+": "+i+n)}return r}function no(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function Wc(e,t){if(t){var n="",r,o;if(Array.isArray(t)?(r=t[0],o=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var i=!1,s=0,a=!1,l=[];r&&l.push(...Object.keys(r).map(no)),o&&l.push(...Object.keys(o).map(no));var c=0,d=-1;const _=e.length;for(var h=0;h<_;h++){var f=e[h];if(a?f==="/"&&e[h-1]==="*"&&(a=!1):i?i===f&&(i=!1):f==="/"&&e[h+1]==="*"?a=!0:f==='"'||f==="'"?i=f:f==="("?s++:f===")"&&s--,!a&&i===!1&&s===0){if(f===":"&&d===-1)d=h;else if(f===";"||h===_-1){if(d!==-1){var g=no(e.substring(c,d).trim());if(!l.includes(g)){f!==";"&&h++;var v=e.substring(c,h).trim();n+=" "+v+";"}}c=h+1,d=-1}}}}return r&&(n+=Ni(r)),o&&(n+=Ni(o,!0)),n=n.trim(),n===""?null:n}return e==null?null:String(e)}function ut(e,t,n,r,o,i){var s=e.__className;if(s!==n||s===void 0){var a=Yc(n,r,i);a==null?e.removeAttribute("class"):t?e.className=a:e.setAttribute("class",a),e.__className=n}else if(i&&o!==i)for(var l in i){var c=!!i[l];(o==null||c!==!!o[l])&&e.classList.toggle(l,c)}return i}function ro(e,t={},n,r){for(var o in n){var i=n[o];t[o]!==i&&(n[o]==null?e.style.removeProperty(o):e.style.setProperty(o,i,r))}}function Le(e,t,n,r){var o=e.__style;if(o!==t){var i=Wc(t,r);i==null?e.removeAttribute("style"):e.style.cssText=i,e.__style=t}else r&&(Array.isArray(r)?(ro(e,n?.[0],r[0]),ro(e,n?.[1],r[1],"important")):ro(e,n,r));return r}function So(e,t,n=!1){if(e.multiple){if(t==null)return;if(!Lr(t))return Ul();for(var r of e.options)r.selected=t.includes(Pi(r));return}for(r of e.options){var o=Pi(r);if(hc(o,t)){r.selected=!0;return}}(!n||t!==void 0)&&(e.selectedIndex=-1)}function Zc(e){var t=new MutationObserver(()=>{So(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Go(()=>{t.disconnect()})}function Pi(e){return"__value"in e?e.__value:e.value}const Mt=Symbol("class"),pt=Symbol("style"),fa=Symbol("is custom element"),ha=Symbol("is html");function Xc(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function G(e,t,n,r){var o=ga(e);o[t]!==(o[t]=n)&&(t==="loading"&&(e[Cl]=n),n==null?e.removeAttribute(t):typeof n!="string"&&va(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Gc(e,t,n,r,o=!1,i=!1){var s=ga(e),a=s[fa],l=!s[ha],c=t||{},d=e.tagName==="OPTION";for(var h in t)h in n||(n[h]=null);n.class?n.class=Ht(n.class):(r||n[Mt])&&(n.class=null),n[pt]&&(n.style??=null);var f=va(e);for(const b in n){let A=n[b];if(d&&b==="value"&&A==null){e.value=e.__value="",c[b]=A;continue}if(b==="class"){var g=e.namespaceURI==="http://www.w3.org/1999/xhtml";ut(e,g,A,r,t?.[Mt],n[Mt]),c[b]=A,c[Mt]=n[Mt];continue}if(b==="style"){Le(e,A,t?.[pt],n[pt]),c[b]=A,c[pt]=n[pt];continue}var v=c[b];if(!(A===v&&!(A===void 0&&e.hasAttribute(b)))){c[b]=A;var _=b[0]+b[1];if(_!=="$$")if(_==="on"){const T={},z="$$"+b;let M=b.slice(2);var y=Pc(M);if(Cc(M)&&(M=M.slice(0,-7),T.capture=!0),!y&&v){if(A!=null)continue;e.removeEventListener(M,c[z],T),c[z]=null}if(A!=null)if(y)e[`__${M}`]=A,jo([M]);else{let H=function(K){c[b].call(this,K)};var k=H;c[z]=Qo(M,e,H,T)}else y&&(e[`__${M}`]=void 0)}else if(b==="style")G(e,b,A);else if(b==="autofocus")pc(e,!!A);else if(!a&&(b==="__value"||b==="value"&&A!=null))e.value=e.__value=A;else if(b==="selected"&&d)Xc(e,A);else{var w=b;l||(w=Ac(w));var C=w==="defaultValue"||w==="defaultChecked";if(A==null&&!a&&!C)if(s[b]=null,w==="value"||w==="checked"){let T=e;const z=t===void 0;if(w==="value"){let M=T.defaultValue;T.removeAttribute(w),T.defaultValue=M,T.value=T.__value=z?M:null}else{let M=T.defaultChecked;T.removeAttribute(w),T.defaultChecked=M,T.checked=z?M:!1}}else e.removeAttribute(b);else C||f.includes(w)&&(a||typeof A!="string")?(e[w]=A,w in s&&(s[w]=be)):typeof A!="function"&&G(e,w,A)}}}return c}function Lt(e,t,n=[],r=[],o=[],i,s=!1,a=!1){Os(o,n,r,l=>{var c=void 0,d={},h=e.nodeName==="SELECT",f=!1;if(Gs(()=>{var v=t(...l.map(u)),_=Gc(e,c,v,i,s,a);f&&h&&"value"in v&&So(e,v.value);for(let w of Object.getOwnPropertySymbols(d))v[w]||_e(d[w]);for(let w of Object.getOwnPropertySymbols(v)){var y=v[w];w.description===Gl&&(!c||y!==c[w])&&(d[w]&&_e(d[w]),d[w]=Te(()=>Fc(e,()=>y))),_[w]=y}c=_}),h){var g=e;jn(()=>{So(g,c.value,!0),Zc(g)})}f=!0})}function ga(e){return e.__attributes??={[fa]:e.nodeName.includes("-"),[ha]:e.namespaceURI===Xl}}var Mi=new Map;function va(e){var t=e.getAttribute("is")||e.nodeName,n=Mi.get(t);if(n)return n;Mi.set(t,n=[]);for(var r,o=e,i=Element.prototype;i!==o;){r=ms(o);for(var s in r)r[s].set&&n.push(s);o=Br(o)}return n}class $o{#e=new WeakMap;#t;#n;static entries=new WeakMap;constructor(t){this.#n=t}observe(t,n){var r=this.#e.get(t)||new Set;return r.add(n),this.#e.set(t,r),this.#r().observe(t,this.#n),()=>{var o=this.#e.get(t);o.delete(n),o.size===0&&(this.#e.delete(t),this.#t.unobserve(t))}}#r(){return this.#t??(this.#t=new ResizeObserver(t=>{for(var n of t){$o.entries.set(n.target,n);for(var r of this.#e.get(n.target)||[])r(n)}}))}}var Uc=new $o({box:"border-box"});function Ai(e,t,n){var r=Uc.observe(e,()=>n(e[t]));jn(()=>(qe(()=>n(e[t])),r))}function Ti(e,t){return e===t||e?.[ot]===t}function er(e={},t,n,r){return jn(()=>{var o,i;return Yr(()=>{o=i,i=[],qe(()=>{e!==n(...i)&&(t(e,...i),o&&Ti(n(...o),e)&&t(null,...o))})}),()=>{nn(()=>{i&&Ti(n(...i),e)&&t(null,...i)})}}),e}function Qc(e=!1){const t=fe,n=t.l.u;if(!n)return;let r=()=>la(t.s);if(e){let o=0,i={};const s=Un(()=>{let a=!1;const l=t.s;for(const c in l)l[c]!==i[c]&&(i[c]=l[c],a=!0);return a&&o++,o});r=()=>u(s)}n.b.length&&Zs(()=>{Di(t,r),po(n.b)}),at(()=>{const o=qe(()=>n.m.map(kl));return()=>{for(const i of o)typeof i=="function"&&i()}}),n.a.length&&at(()=>{Di(t,r),po(n.a)})}function Di(e,t){if(e.l.s)for(const n of e.l.s)u(n);t()}let lr=!1;function jc(e){var t=lr;try{return lr=!1,[e(),lr]}finally{lr=t}}const Jc={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function Vt(e,t,n){return new Proxy({props:e,exclude:t},Jc)}const $c={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(Pn(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let o=e.props[r];Pn(o)&&(o=o());const i=Dt(o,t);if(i&&i.set)return i.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(Pn(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r){const o=Dt(r,t);return o&&!o.configurable&&(o.configurable=!0),o}}},has(e,t){if(t===ot||t===Es)return!1;for(let n of e.props)if(Pn(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){const t=[];for(let n of e.props)if(Pn(n)&&(n=n()),!!n){for(const r in n)t.includes(r)||t.push(r);for(const r of Object.getOwnPropertySymbols(n))t.includes(r)||t.push(r)}return t}};function At(...e){return new Proxy({props:e},$c)}function L(e,t,n,r){var o=!kn||(n&Fl)!==0,i=(n&Yl)!==0,s=(n&Wl)!==0,a=r,l=!0,c=()=>(l&&(l=!1,a=s?qe(r):r),a),d;if(i){var h=ot in e||Es in e;d=Dt(e,t)?.set??(h&&t in e?k=>e[t]=k:void 0)}var f,g=!1;i?[f,g]=jc(()=>e[t]):f=e[t],f===void 0&&r!==void 0&&(f=c(),d&&(o&&Dl(),d(f)));var v;if(o?v=()=>{var k=e[t];return k===void 0?c():(l=!0,k)}:v=()=>{var k=e[t];return k!==void 0&&(a=void 0),k===void 0?a:k},o&&(n&Kl)===0)return v;if(d){var _=e.$$legacy;return(function(k,b){return arguments.length>0?((!o||!b||_||g)&&d(b?v():k),k):v()})}var y=!1,w=((n&Bl)!==0?Un:Wo)(()=>(y=!1,v()));i&&u(w);var C=ie;return(function(k,b){if(arguments.length>0){const A=b?u(w):o&&i?nt(k):k;return R(w,A),y=!0,a!==void 0&&(a=A),k}return rn&&y||(C.f&wt)!==0?w.v:u(w)})}function eu(e){fe===null&&Bo(),kn&&fe.l!==null?tu(fe).m.push(e):at(()=>{const t=qe(e);if(typeof t=="function")return t})}function ei(e){fe===null&&Bo(),eu(()=>()=>qe(e))}function tu(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}const nu="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(nu);var ru={value:()=>{}};function Xr(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}mr.prototype=Xr.prototype={constructor:mr,on:function(e,t){var n=this._,r=ou(e+"",n),o,i=-1,s=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(o),r=0,o,i;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),zi.hasOwnProperty(t)?{space:zi[t],local:e}:e}function su(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===ko&&t.documentElement.namespaceURI===ko?t.createElement(e):t.createElementNS(n,e)}}function au(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function pa(e){var t=Gr(e);return(t.local?au:su)(t)}function lu(){}function ti(e){return e==null?lu:function(){return this.querySelector(e)}}function cu(e){typeof e!="function"&&(e=ti(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=k&&(k=C+1);!(A=y[k])&&++k=0;)(s=r[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function zu(e){e||(e=Ou);function t(h,f){return h&&f?e(h.__data__,f.__data__):!h-!f}for(var n=this._groups,r=n.length,o=new Array(r),i=0;it?1:e>=t?0:NaN}function Ru(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function qu(){return Array.from(this)}function Hu(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?Uu:typeof t=="function"?ju:Qu)(e,t,n??"")):yn(this.node(),e)}function yn(e,t){return e.style.getPropertyValue(t)||ba(e).getComputedStyle(e,null).getPropertyValue(t)}function $u(e){return function(){delete this[e]}}function ed(e,t){return function(){this[e]=t}}function td(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function nd(e,t){return arguments.length>1?this.each((t==null?$u:typeof t=="function"?td:ed)(e,t)):this.node()[e]}function xa(e){return e.trim().split(/^|\s+/)}function ni(e){return e.classList||new Ea(e)}function Ea(e){this._node=e,this._names=xa(e.getAttribute("class")||"")}Ea.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function Sa(e,t){for(var n=ni(e),r=-1,o=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Ad(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,i;n()=>e;function Co(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:i,x:s,y:a,dx:l,dy:c,dispatch:d}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:d}})}Co.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Vd(e){return!e.ctrlKey&&!e.button}function Bd(){return this.parentNode}function Fd(e,t){return t??{x:e.x,y:e.y}}function Kd(){return navigator.maxTouchPoints||"ontouchstart"in this}function Yd(){var e=Vd,t=Bd,n=Fd,r=Kd,o={},i=Xr("start","drag","end"),s=0,a,l,c,d,h=0;function f(b){b.on("mousedown.drag",g).filter(r).on("touchstart.drag",y).on("touchmove.drag",w,Ld).on("touchend.drag touchcancel.drag",C).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(b,A){if(!(d||!e.call(this,b,A))){var T=k(this,t.call(this,b,A),b,A,"mouse");T&&(Ke(b.view).on("mousemove.drag",v,Vn).on("mouseup.drag",_,Vn),Pa(b.view),oo(b),c=!1,a=b.clientX,l=b.clientY,T("start",b))}}function v(b){if(dn(b),!c){var A=b.clientX-a,T=b.clientY-l;c=A*A+T*T>h}o.mouse("drag",b)}function _(b){Ke(b.view).on("mousemove.drag mouseup.drag",null),Ma(b.view,c),dn(b),o.mouse("end",b)}function y(b,A){if(e.call(this,b,A)){var T=b.changedTouches,z=t.call(this,b,A),M=T.length,H,K;for(H=0;H>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?ur(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?ur(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Zd.exec(e))?new Ie(t[1],t[2],t[3],1):(t=Xd.exec(e))?new Ie(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Gd.exec(e))?ur(t[1],t[2],t[3],t[4]):(t=Ud.exec(e))?ur(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Qd.exec(e))?Bi(t[1],t[2]/100,t[3]/100,1):(t=jd.exec(e))?Bi(t[1],t[2]/100,t[3]/100,t[4]):Oi.hasOwnProperty(e)?Hi(Oi[e]):e==="transparent"?new Ie(NaN,NaN,NaN,0):null}function Hi(e){return new Ie(e>>16&255,e>>8&255,e&255,1)}function ur(e,t,n,r){return r<=0&&(e=t=n=NaN),new Ie(e,t,n,r)}function ef(e){return e instanceof nr||(e=jt(e)),e?(e=e.rgb(),new Ie(e.r,e.g,e.b,e.opacity)):new Ie}function No(e,t,n,r){return arguments.length===1?ef(e):new Ie(e,t,n,r??1)}function Ie(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ri(Ie,No,Aa(nr,{brighter(e){return e=e==null?Nr:Math.pow(Nr,e),new Ie(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Bn:Math.pow(Bn,e),new Ie(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ie(Xt(this.r),Xt(this.g),Xt(this.b),Pr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Li,formatHex:Li,formatHex8:tf,formatRgb:Vi,toString:Vi}));function Li(){return`#${Kt(this.r)}${Kt(this.g)}${Kt(this.b)}`}function tf(){return`#${Kt(this.r)}${Kt(this.g)}${Kt(this.b)}${Kt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Vi(){const e=Pr(this.opacity);return`${e===1?"rgb(":"rgba("}${Xt(this.r)}, ${Xt(this.g)}, ${Xt(this.b)}${e===1?")":`, ${e})`}`}function Pr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Xt(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Kt(e){return e=Xt(e),(e<16?"0":"")+e.toString(16)}function Bi(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ge(e,t,n,r)}function Ta(e){if(e instanceof Ge)return new Ge(e.h,e.s,e.l,e.opacity);if(e instanceof nr||(e=jt(e)),!e)return new Ge;if(e instanceof Ge)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),s=NaN,a=i-o,l=(i+o)/2;return a?(t===i?s=(n-r)/a+(n0&&l<1?0:s,new Ge(s,a,l,e.opacity)}function nf(e,t,n,r){return arguments.length===1?Ta(e):new Ge(e,t,n,r??1)}function Ge(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ri(Ge,nf,Aa(nr,{brighter(e){return e=e==null?Nr:Math.pow(Nr,e),new Ge(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Bn:Math.pow(Bn,e),new Ge(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new Ie(io(e>=240?e-240:e+120,o,r),io(e,o,r),io(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new Ge(Fi(this.h),dr(this.s),dr(this.l),Pr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Pr(this.opacity);return`${e===1?"hsl(":"hsla("}${Fi(this.h)}, ${dr(this.s)*100}%, ${dr(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Fi(e){return e=(e||0)%360,e<0?e+360:e}function dr(e){return Math.max(0,Math.min(1,e||0))}function io(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const oi=e=>()=>e;function rf(e,t){return function(n){return e+n*t}}function of(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function sf(e){return(e=+e)==1?Da:function(t,n){return n-t?of(t,n,e):oi(isNaN(t)?n:t)}}function Da(e,t){var n=t-e;return n?rf(e,n):oi(isNaN(e)?t:e)}const Mr=(function e(t){var n=sf(t);function r(o,i){var s=n((o=No(o)).r,(i=No(i)).r),a=n(o.g,i.g),l=n(o.b,i.b),c=Da(o.opacity,i.opacity);return function(d){return o.r=s(d),o.g=a(d),o.b=l(d),o.opacity=c(d),o+""}}return r.gamma=e,r})(1);function af(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),o;return function(i){for(o=0;on&&(i=t.slice(n,i),a[s]?a[s]+=i:a[++s]=i),(r=r[0])===(o=o[0])?a[s]?a[s]+=o:a[++s]=o:(a[++s]=null,l.push({i:s,x:tt(r,o)})),n=so.lastIndex;return n180?d+=360:d-c>180&&(c+=360),f.push({i:h.push(o(h)+"rotate(",null,r)-2,x:tt(c,d)})):d&&h.push(o(h)+"rotate("+d+r)}function a(c,d,h,f){c!==d?f.push({i:h.push(o(h)+"skewX(",null,r)-2,x:tt(c,d)}):d&&h.push(o(h)+"skewX("+d+r)}function l(c,d,h,f,g,v){if(c!==h||d!==f){var _=g.push(o(g)+"scale(",null,",",null,")");v.push({i:_-4,x:tt(c,h)},{i:_-2,x:tt(d,f)})}else(h!==1||f!==1)&&g.push(o(g)+"scale("+h+","+f+")")}return function(c,d){var h=[],f=[];return c=e(c),d=e(d),i(c.translateX,c.translateY,d.translateX,d.translateY,h,f),s(c.rotate,d.rotate,h,f),a(c.skewX,d.skewX,h,f),l(c.scaleX,c.scaleY,d.scaleX,d.scaleY,h,f),c=d=null,function(g){for(var v=-1,_=f.length,y;++v<_;)h[(y=f[v]).i]=y.x(g);return h.join("")}}}var pf=Oa(gf,"px, ","px)","deg)"),mf=Oa(vf,", ",")",")"),yf=1e-12;function Yi(e){return((e=Math.exp(e))+1/e)/2}function _f(e){return((e=Math.exp(e))-1/e)/2}function wf(e){return((e=Math.exp(2*e))-1)/(e+1)}const yr=(function e(t,n,r){function o(i,s){var a=i[0],l=i[1],c=i[2],d=s[0],h=s[1],f=s[2],g=d-a,v=h-l,_=g*g+v*v,y,w;if(_=0&&e._call.call(void 0,t),e=e._next;--_n}function Wi(){Jt=(Tr=Kn.now())+Ur,_n=In=0;try{xf()}finally{_n=0,Sf(),Jt=0}}function Ef(){var e=Kn.now(),t=e-Tr;t>Ra&&(Ur-=t,Tr=e)}function Sf(){for(var e,t=Ar,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Ar=n);zn=e,Ao(r)}function Ao(e){if(!_n){In&&(In=clearTimeout(In));var t=e-Jt;t>24?(e<1/0&&(In=setTimeout(Wi,e-Kn.now()-Ur)),Mn&&(Mn=clearInterval(Mn))):(Mn||(Tr=Kn.now(),Mn=setInterval(Ef,Ra)),_n=1,qa(Wi))}}function Zi(e,t,n){var r=new Dr;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var kf=Xr("start","end","cancel","interrupt"),Cf=[],La=0,Xi=1,To=2,_r=3,Gi=4,Do=5,wr=6;function Qr(e,t,n,r,o,i){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Nf(e,n,{name:t,index:r,group:o,on:kf,tween:Cf,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:La})}function si(e,t){var n=Je(e,t);if(n.state>La)throw new Error("too late; already scheduled");return n}function dt(e,t){var n=Je(e,t);if(n.state>_r)throw new Error("too late; already running");return n}function Je(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Nf(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=Ha(i,0,n.time);function i(c){n.state=Xi,n.timer.restart(s,n.delay,n.time),n.delay<=c&&s(c-n.delay)}function s(c){var d,h,f,g;if(n.state!==Xi)return l();for(d in r)if(g=r[d],g.name===n.name){if(g.state===_r)return Zi(s);g.state===Gi?(g.state=wr,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete r[d]):+dTo&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function rh(e,t,n){var r,o,i=nh(t)?si:dt;return function(){var s=i(this,e),a=s.on;a!==r&&(o=(r=a).copy()).on(t,n),s.on=o}}function oh(e,t){var n=this._id;return arguments.length<2?Je(this.node(),n).on.on(e):this.each(rh(n,e,t))}function ih(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function sh(){return this.on("end.remove",ih(this._id))}function ah(e){var t=this._name,n=this._id;typeof e!="function"&&(e=ti(e));for(var r=this._groups,o=r.length,i=new Array(o),s=0;s()=>e;function Dh(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function yt(e,t,n){this.k=e,this.x=t,this.y=n}yt.prototype={constructor:yt,scale:function(e){return e===1?this:new yt(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new yt(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var jr=new yt(1,0,0);Ka.prototype=yt.prototype;function Ka(e){for(;!e.__zoom;)if(!(e=e.parentNode))return jr;return e.__zoom}function ao(e){e.stopImmediatePropagation()}function An(e){e.preventDefault(),e.stopImmediatePropagation()}function Ih(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function zh(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Ui(){return this.__zoom||jr}function Oh(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Rh(){return navigator.maxTouchPoints||"ontouchstart"in this}function qh(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),s>i?(i+s)/2:Math.min(0,i)||Math.max(0,s))}function Ya(){var e=Ih,t=zh,n=qh,r=Oh,o=Rh,i=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=yr,c=Xr("start","zoom","end"),d,h,f,g=500,v=150,_=0,y=10;function w(p){p.property("__zoom",Ui).on("wheel.zoom",M,{passive:!1}).on("mousedown.zoom",H).on("dblclick.zoom",K).filter(o).on("touchstart.zoom",P).on("touchmove.zoom",x).on("touchend.zoom touchcancel.zoom",N).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}w.transform=function(p,E,S,D){var O=p.selection?p.selection():p;O.property("__zoom",Ui),p!==O?A(p,E,S,D):O.interrupt().each(function(){T(this,arguments).event(D).start().zoom(null,typeof E=="function"?E.apply(this,arguments):E).end()})},w.scaleBy=function(p,E,S,D){w.scaleTo(p,function(){var O=this.__zoom.k,I=typeof E=="function"?E.apply(this,arguments):E;return O*I},S,D)},w.scaleTo=function(p,E,S,D){w.transform(p,function(){var O=t.apply(this,arguments),I=this.__zoom,q=S==null?b(O):typeof S=="function"?S.apply(this,arguments):S,V=I.invert(q),W=typeof E=="function"?E.apply(this,arguments):E;return n(k(C(I,W),q,V),O,s)},S,D)},w.translateBy=function(p,E,S,D){w.transform(p,function(){return n(this.__zoom.translate(typeof E=="function"?E.apply(this,arguments):E,typeof S=="function"?S.apply(this,arguments):S),t.apply(this,arguments),s)},null,D)},w.translateTo=function(p,E,S,D,O){w.transform(p,function(){var I=t.apply(this,arguments),q=this.__zoom,V=D==null?b(I):typeof D=="function"?D.apply(this,arguments):D;return n(jr.translate(V[0],V[1]).scale(q.k).translate(typeof E=="function"?-E.apply(this,arguments):-E,typeof S=="function"?-S.apply(this,arguments):-S),I,s)},D,O)};function C(p,E){return E=Math.max(i[0],Math.min(i[1],E)),E===p.k?p:new yt(E,p.x,p.y)}function k(p,E,S){var D=E[0]-S[0]*p.k,O=E[1]-S[1]*p.k;return D===p.x&&O===p.y?p:new yt(p.k,D,O)}function b(p){return[(+p[0][0]+ +p[1][0])/2,(+p[0][1]+ +p[1][1])/2]}function A(p,E,S,D){p.on("start.zoom",function(){T(this,arguments).event(D).start()}).on("interrupt.zoom end.zoom",function(){T(this,arguments).event(D).end()}).tween("zoom",function(){var O=this,I=arguments,q=T(O,I).event(D),V=t.apply(O,I),W=S==null?b(V):typeof S=="function"?S.apply(O,I):S,Y=Math.max(V[1][0]-V[0][0],V[1][1]-V[0][1]),B=O.__zoom,U=typeof E=="function"?E.apply(O,I):E,Z=l(B.invert(W).concat(Y/B.k),U.invert(W).concat(Y/U.k));return function(X){if(X===1)X=U;else{var Q=Z(X),ue=Y/Q[2];X=new yt(ue,W[0]-Q[0]*ue,W[1]-Q[1]*ue)}q.zoom(null,X)}})}function T(p,E,S){return!S&&p.__zooming||new z(p,E)}function z(p,E){this.that=p,this.args=E,this.active=0,this.sourceEvent=null,this.extent=t.apply(p,E),this.taps=0}z.prototype={event:function(p){return p&&(this.sourceEvent=p),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(p,E){return this.mouse&&p!=="mouse"&&(this.mouse[1]=E.invert(this.mouse[0])),this.touch0&&p!=="touch"&&(this.touch0[1]=E.invert(this.touch0[0])),this.touch1&&p!=="touch"&&(this.touch1[1]=E.invert(this.touch1[0])),this.that.__zoom=E,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(p){var E=Ke(this.that).datum();c.call(p,this.that,new Dh(p,{sourceEvent:this.sourceEvent,target:w,transform:this.that.__zoom,dispatch:c}),E)}};function M(p,...E){if(!e.apply(this,arguments))return;var S=T(this,E).event(p),D=this.__zoom,O=Math.max(i[0],Math.min(i[1],D.k*Math.pow(2,r.apply(this,arguments)))),I=Xe(p);if(S.wheel)(S.mouse[0][0]!==I[0]||S.mouse[0][1]!==I[1])&&(S.mouse[1]=D.invert(S.mouse[0]=I)),clearTimeout(S.wheel);else{if(D.k===O)return;S.mouse=[I,D.invert(I)],br(this),S.start()}An(p),S.wheel=setTimeout(q,v),S.zoom("mouse",n(k(C(D,O),S.mouse[0],S.mouse[1]),S.extent,s));function q(){S.wheel=null,S.end()}}function H(p,...E){if(f||!e.apply(this,arguments))return;var S=p.currentTarget,D=T(this,E,!0).event(p),O=Ke(p.view).on("mousemove.zoom",W,!0).on("mouseup.zoom",Y,!0),I=Xe(p,S),q=p.clientX,V=p.clientY;Pa(p.view),ao(p),D.mouse=[I,this.__zoom.invert(I)],br(this),D.start();function W(B){if(An(B),!D.moved){var U=B.clientX-q,Z=B.clientY-V;D.moved=U*U+Z*Z>_}D.event(B).zoom("mouse",n(k(D.that.__zoom,D.mouse[0]=Xe(B,S),D.mouse[1]),D.extent,s))}function Y(B){O.on("mousemove.zoom mouseup.zoom",null),Ma(B.view,D.moved),An(B),D.event(B).end()}}function K(p,...E){if(e.apply(this,arguments)){var S=this.__zoom,D=Xe(p.changedTouches?p.changedTouches[0]:p,this),O=S.invert(D),I=S.k*(p.shiftKey?.5:2),q=n(k(C(S,I),D,O),t.apply(this,E),s);An(p),a>0?Ke(this).transition().duration(a).call(A,q,D,p):Ke(this).call(w.transform,q,D,p)}}function P(p,...E){if(e.apply(this,arguments)){var S=p.touches,D=S.length,O=T(this,E,p.changedTouches.length===D).event(p),I,q,V,W;for(ao(p),q=0;q"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:r}", edge id: ${t}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},Io=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Wa=["Enter"," ","Escape"],Hh={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var wn;(function(e){e.Strict="strict",e.Loose="loose"})(wn||(wn={}));var hn;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(hn||(hn={}));var Ir;(function(e){e.Partial="partial",e.Full="full"})(Ir||(Ir={}));const zo={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var Tt;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(Tt||(Tt={}));var zr;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(zr||(zr={}));var j;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(j||(j={}));const Qi={[j.Left]:j.Right,[j.Right]:j.Left,[j.Top]:j.Bottom,[j.Bottom]:j.Top};function Lh(e,t){if(!e&&!t)return!0;if(!e||!t||e.size!==t.size)return!1;if(!e.size&&!t.size)return!0;for(const n of e.keys())if(!t.has(n))return!1;return!0}function ji(e,t,n){if(!n)return;const r=[];e.forEach((o,i)=>{t?.has(i)||r.push(o)}),r.length&&n(r)}function Vh(e){return e===null?null:e?"valid":"invalid"}const Za=e=>"id"in e&&"source"in e&&"target"in e,Bh=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),li=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),rr=(e,t=[0,0])=>{const{width:n,height:r}=Bt(e),o=e.origin??t,i=n*o[0],s=r*o[1];return{x:e.position.x-i,y:e.position.y-s}},Fh=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,o)=>{const i=typeof o=="string";let s=!t.nodeLookup&&!i?o:void 0;t.nodeLookup&&(s=i?t.nodeLookup.get(o):li(o)?o:t.nodeLookup.get(o.id));const a=s?Or(s,t.nodeOrigin):{x:0,y:0,x2:0,y2:0};return Jr(r,a)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return $r(n)},or=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(o=>{(t.filter===void 0||t.filter(o))&&(n=Jr(n,Or(o)),r=!0)}),r?$r(n):{x:0,y:0,width:0,height:0}},ci=(e,t,[n,r,o]=[0,0,1],i=!1,s=!1)=>{const a={...sr(t,[n,r,o]),width:t.width/o,height:t.height/o},l=[];for(const c of e.values()){const{measured:d,selectable:h=!0,hidden:f=!1}=c;if(s&&!h||f)continue;const g=d.width??c.width??c.initialWidth??null,v=d.height??c.height??c.initialHeight??null,_=Wn(a,xn(c)),y=(g??0)*(v??0),w=i&&_>0;(!c.internals.handleBounds||w||_>=y||c.dragging)&&l.push(c)}return l},Kh=(e,t)=>{const n=new Set;return e.forEach(r=>{n.add(r.id)}),t.filter(r=>n.has(r.source)||n.has(r.target))};function Yh(e,t){const n=new Map,r=t?.nodes?new Set(t.nodes.map(o=>o.id)):null;return e.forEach(o=>{o.measured.width&&o.measured.height&&(t?.includeHiddenNodes||!o.hidden)&&(!r||r.has(o.id))&&n.set(o.id,o)}),n}async function Wh({nodes:e,width:t,height:n,panZoom:r,minZoom:o,maxZoom:i},s){if(e.size===0)return Promise.resolve(!0);const a=Yh(e,s),l=or(a),c=ui(l,t,n,s?.minZoom??o,s?.maxZoom??i,s?.padding??.1);return await r.setViewport(c,{duration:s?.duration,ease:s?.ease,interpolate:s?.interpolate}),Promise.resolve(!0)}function Xa({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:o,onError:i}){const s=n.get(e),a=s.parentId?n.get(s.parentId):void 0,{x:l,y:c}=a?a.internals.positionAbsolute:{x:0,y:0},d=s.origin??r;let h=s.extent||o;if(s.extent==="parent"&&!s.expandParent)if(!a)i?.("005",Yn.error005());else{const g=a.measured.width,v=a.measured.height;g&&v&&(h=[[l,c],[l+g,c+v]])}else a&&En(s.extent)&&(h=[[s.extent[0][0]+l,s.extent[0][1]+c],[s.extent[1][0]+l,s.extent[1][1]+c]]);const f=En(h)?$t(t,h,s.measured):t;return(s.measured.width===void 0||s.measured.height===void 0)&&i?.("015",Yn.error015()),{position:{x:f.x-l+(s.measured.width??0)*d[0],y:f.y-c+(s.measured.height??0)*d[1]},positionAbsolute:f}}async function Zh({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:o}){const i=new Set(e.map(f=>f.id)),s=[];for(const f of n){if(f.deletable===!1)continue;const g=i.has(f.id),v=!g&&f.parentId&&s.find(_=>_.id===f.parentId);(g||v)&&s.push(f)}const a=new Set(t.map(f=>f.id)),l=r.filter(f=>f.deletable!==!1),d=Kh(s,l);for(const f of l)a.has(f.id)&&!d.find(v=>v.id===f.id)&&d.push(f);if(!o)return{edges:d,nodes:s};const h=await o({nodes:s,edges:d});return typeof h=="boolean"?h?{edges:d,nodes:s}:{edges:[],nodes:[]}:h}const bn=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),$t=(e={x:0,y:0},t,n)=>({x:bn(e.x,t[0][0],t[1][0]-(n?.width??0)),y:bn(e.y,t[0][1],t[1][1]-(n?.height??0))});function Ga(e,t,n){const{width:r,height:o}=Bt(n),{x:i,y:s}=n.internals.positionAbsolute;return $t(e,[[i,s],[i+r,s+o]],t)}const Ji=(e,t,n)=>en?-bn(Math.abs(e-n),1,t)/t:0,Ua=(e,t,n=15,r=40)=>{const o=Ji(e.x,r,t.width-r)*n,i=Ji(e.y,r,t.height-r)*n;return[o,i]},Jr=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Oo=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),$r=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),xn=(e,t=[0,0])=>{const{x:n,y:r}=li(e)?e.internals.positionAbsolute:rr(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},Or=(e,t=[0,0])=>{const{x:n,y:r}=li(e)?e.internals.positionAbsolute:rr(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},Qa=(e,t)=>$r(Jr(Oo(e),Oo(t))),Wn=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},$i=e=>_t(e.width)&&_t(e.height)&&_t(e.x)&&_t(e.y),_t=e=>!isNaN(e)&&isFinite(e),Xh=(e,t)=>{},ir=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),sr=({x:e,y:t},[n,r,o],i=!1,s=[1,1])=>{const a={x:(e-n)/o,y:(t-r)/o};return i?ir(a,s):a},Rr=({x:e,y:t},[n,r,o])=>({x:e*o+n,y:t*o+r});function an(e,t){if(typeof e=="number")return Math.floor((t-t/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(n)}if(typeof e=="string"&&e.endsWith("%")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function Gh(e,t,n){if(typeof e=="string"||typeof e=="number"){const r=an(e,n),o=an(e,t);return{top:r,right:o,bottom:r,left:o,x:o*2,y:r*2}}if(typeof e=="object"){const r=an(e.top??e.y??0,n),o=an(e.bottom??e.y??0,n),i=an(e.left??e.x??0,t),s=an(e.right??e.x??0,t);return{top:r,right:s,bottom:o,left:i,x:i+s,y:r+o}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function Uh(e,t,n,r,o,i){const{x:s,y:a}=Rr(e,[t,n,r]),{x:l,y:c}=Rr({x:e.x+e.width,y:e.y+e.height},[t,n,r]),d=o-l,h=i-c;return{left:Math.floor(s),top:Math.floor(a),right:Math.floor(d),bottom:Math.floor(h)}}const ui=(e,t,n,r,o,i)=>{const s=Gh(i,t,n),a=(t-s.x)/e.width,l=(n-s.y)/e.height,c=Math.min(a,l),d=bn(c,r,o),h=e.x+e.width/2,f=e.y+e.height/2,g=t/2-h*d,v=n/2-f*d,_=Uh(e,g,v,d,t,n),y={left:Math.min(_.left-s.left,0),top:Math.min(_.top-s.top,0),right:Math.min(_.right-s.right,0),bottom:Math.min(_.bottom-s.bottom,0)};return{x:g-y.left+y.right,y:v-y.top+y.bottom,zoom:d}},Zn=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0;function En(e){return e!=null&&e!=="parent"}function Bt(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function ja(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function Qh(e,t={width:0,height:0},n,r,o){const i={...e},s=r.get(n);if(s){const a=s.origin||o;i.x+=s.internals.positionAbsolute.x-(t.width??0)*a[0],i.y+=s.internals.positionAbsolute.y-(t.height??0)*a[1]}return i}function jh(e){return{...Hh,...e||{}}}function lo(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:o}){const{x:i,y:s}=Qe(e),a=sr({x:i-(o?.left??0),y:s-(o?.top??0)},r),{x:l,y:c}=n?ir(a,t):a;return{xSnapped:l,ySnapped:c,...a}}const Ja=e=>({width:e.offsetWidth,height:e.offsetHeight}),$a=e=>e?.getRootNode?.()||window?.document,Jh=["INPUT","SELECT","TEXTAREA"];function el(e){const t=e.composedPath?.()?.[0]||e.target;return t?.nodeType!==1?!1:Jh.includes(t.nodeName)||t.hasAttribute("contenteditable")||!!t.closest(".nokey")}const tl=e=>"clientX"in e,Qe=(e,t)=>{const n=tl(e),r=n?e.clientX:e.touches?.[0].clientX,o=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:o-(t?.top??0)}},es=(e,t,n,r,o)=>{const i=t.querySelectorAll(`.${e}`);return!i||!i.length?null:Array.from(i).map(s=>{const a=s.getBoundingClientRect();return{id:s.getAttribute("data-handleid"),type:e,nodeId:o,position:s.getAttribute("data-handlepos"),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...Ja(s)}})};function $h({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:o,sourceControlY:i,targetControlX:s,targetControlY:a}){const l=e*.125+o*.375+s*.375+n*.125,c=t*.125+i*.375+a*.375+r*.125,d=Math.abs(l-e),h=Math.abs(c-t);return[l,c,d,h]}function gr(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function ts({pos:e,x1:t,y1:n,x2:r,y2:o,c:i}){switch(e){case j.Left:return[t-gr(t-r,i),n];case j.Right:return[t+gr(r-t,i),n];case j.Top:return[t,n-gr(n-o,i)];case j.Bottom:return[t,n+gr(o-n,i)]}}function nl({sourceX:e,sourceY:t,sourcePosition:n=j.Bottom,targetX:r,targetY:o,targetPosition:i=j.Top,curvature:s=.25}){const[a,l]=ts({pos:n,x1:e,y1:t,x2:r,y2:o,c:s}),[c,d]=ts({pos:i,x1:r,y1:o,x2:e,y2:t,c:s}),[h,f,g,v]=$h({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:a,sourceControlY:l,targetControlX:c,targetControlY:d});return[`M${e},${t} C${a},${l} ${c},${d} ${r},${o}`,h,f,g,v]}function rl({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,i=n0}const ng=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||""}-${n}${r||""}`,rg=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),og=(e,t,n={})=>{if(!e.source||!e.target)return t;const r=n.getEdgeId||ng;let o;return Za(e)?o={...e}:o={...e,id:r(e)},rg(o,t)?t:(o.sourceHandle===null&&delete o.sourceHandle,o.targetHandle===null&&delete o.targetHandle,t.concat(o))};function ol({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[o,i,s,a]=rl({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,o,i,s,a]}const ns={[j.Left]:{x:-1,y:0},[j.Right]:{x:1,y:0},[j.Top]:{x:0,y:-1},[j.Bottom]:{x:0,y:1}},ig=({source:e,sourcePosition:t=j.Bottom,target:n})=>t===j.Left||t===j.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function sg({source:e,sourcePosition:t=j.Bottom,target:n,targetPosition:r=j.Top,center:o,offset:i,stepPosition:s}){const a=ns[t],l=ns[r],c={x:e.x+a.x*i,y:e.y+a.y*i},d={x:n.x+l.x*i,y:n.y+l.y*i},h=ig({source:c,sourcePosition:t,target:d}),f=h.x!==0?"x":"y",g=h[f];let v=[],_,y;const w={x:0,y:0},C={x:0,y:0},[,,k,b]=rl({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(a[f]*l[f]===-1){f==="x"?(_=o.x??c.x+(d.x-c.x)*s,y=o.y??(c.y+d.y)/2):(_=o.x??(c.x+d.x)/2,y=o.y??c.y+(d.y-c.y)*s);const T=[{x:_,y:c.y},{x:_,y:d.y}],z=[{x:c.x,y},{x:d.x,y}];a[f]===g?v=f==="x"?T:z:v=f==="x"?z:T}else{const T=[{x:c.x,y:d.y}],z=[{x:d.x,y:c.y}];if(f==="x"?v=a.x===g?z:T:v=a.y===g?T:z,t===r){const x=Math.abs(e[f]-n[f]);if(x<=i){const N=Math.min(i-1,i-x);a[f]===g?w[f]=(c[f]>e[f]?-1:1)*N:C[f]=(d[f]>n[f]?-1:1)*N}}if(t!==r){const x=f==="x"?"y":"x",N=a[f]===l[x],p=c[x]>d[x],E=c[x]=P?(_=(M.x+H.x)/2,y=v[0].y):(_=v[0].x,y=(M.y+H.y)/2)}return[[e,{x:c.x+w.x,y:c.y+w.y},...v,{x:d.x+C.x,y:d.y+C.y},n],_,y,k,b]}function ag(e,t,n,r){const o=Math.min(rs(e,t)/2,rs(t,n)/2,r),{x:i,y:s}=t;if(e.x===i&&i===n.x||e.y===s&&s===n.y)return`L${i} ${s}`;if(e.y===s){const c=e.x{let b="";return k>0&&kn.id===t):e[0])||null}function Ro(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`:""}function cg(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:o}){const i=new Set;return e.reduce((s,a)=>([a.markerStart||r,a.markerEnd||o].forEach(l=>{if(l&&typeof l=="object"){const c=Ro(l,t);i.has(c)||(s.push({id:c,color:l.color||n,...l}),i.add(c))}}),s),[]).sort((s,a)=>s.id.localeCompare(a.id))}const il=1e3,ug=10,fi={nodeOrigin:[0,0],nodeExtent:Io,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},dg={...fi,checkEquality:!0};function hi(e,t){const n={...e};for(const r in t)t[r]!==void 0&&(n[r]=t[r]);return n}function fg(e,t,n){const r=hi(fi,n);for(const o of e.values())if(o.parentId)vi(o,e,t,r);else{const i=rr(o,r.nodeOrigin),s=En(o.extent)?o.extent:r.nodeExtent,a=$t(i,s,Bt(o));o.internals.positionAbsolute=a}}function hg(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;const n=[],r=[];for(const o of e.handles){const i={id:o.id,width:o.width??1,height:o.height??1,nodeId:e.id,x:o.x,y:o.y,position:o.position,type:o.type};o.type==="source"?n.push(i):o.type==="target"&&r.push(i)}return{source:n,target:r}}function gi(e){return e==="manual"}function gg(e,t,n,r={}){const o=hi(dg,r),i={i:0},s=new Map(t),a=o?.elevateNodesOnSelect&&!gi(o.zIndexMode)?il:0;let l=e.length>0;t.clear(),n.clear();for(const c of e){let d=s.get(c.id);if(o.checkEquality&&c===d?.internals.userNode)t.set(c.id,d);else{const h=rr(c,o.nodeOrigin),f=En(c.extent)?c.extent:o.nodeExtent,g=$t(h,f,Bt(c));d={...o.defaults,...c,measured:{width:c.measured?.width,height:c.measured?.height},internals:{positionAbsolute:g,handleBounds:hg(c,d),z:sl(c,a,o.zIndexMode),userNode:c}},t.set(c.id,d)}(d.measured===void 0||d.measured.width===void 0||d.measured.height===void 0)&&!d.hidden&&(l=!1),c.parentId&&vi(d,t,n,r,i)}return l}function vg(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function vi(e,t,n,r,o){const{elevateNodesOnSelect:i,nodeOrigin:s,nodeExtent:a,zIndexMode:l}=hi(fi,r),c=e.parentId,d=t.get(c);if(!d){console.warn(`Parent node ${c} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}vg(e,n),o&&!d.parentId&&d.internals.rootParentIndex===void 0&&l==="auto"&&(d.internals.rootParentIndex=++o.i,d.internals.z=d.internals.z+o.i*ug),o&&d.internals.rootParentIndex!==void 0&&(o.i=d.internals.rootParentIndex);const h=i&&!gi(l)?il:0,{x:f,y:g,z:v}=pg(e,d,s,a,h,l),{positionAbsolute:_}=e.internals,y=f!==_.x||g!==_.y;(y||v!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:y?{x:f,y:g}:_,z:v}})}function sl(e,t,n){const r=_t(e.zIndex)?e.zIndex:0;return gi(n)?r:r+(e.selected?t:0)}function pg(e,t,n,r,o,i){const{x:s,y:a}=t.internals.positionAbsolute,l=Bt(e),c=rr(e,n),d=En(e.extent)?$t(c,e.extent,l):c;let h=$t({x:s+d.x,y:a+d.y},r,l);e.extent==="parent"&&(h=Ga(h,l,t));const f=sl(e,o,i),g=t.internals.z??0;return{x:h.x,y:h.y,z:g>=f?g+1:f}}function mg(e,t,n,r=[0,0]){const o=[],i=new Map;for(const s of e){const a=t.get(s.parentId);if(!a)continue;const l=i.get(s.parentId)?.expandedRect??xn(a),c=Qa(l,s.rect);i.set(s.parentId,{expandedRect:c,parent:a})}return i.size>0&&i.forEach(({expandedRect:s,parent:a},l)=>{const c=a.internals.positionAbsolute,d=Bt(a),h=a.origin??r,f=s.x0||g>0||y||w)&&(o.push({id:l,type:"position",position:{x:a.position.x-f+y,y:a.position.y-g+w}}),n.get(l)?.forEach(C=>{e.some(k=>k.id===C.id)||o.push({id:C.id,type:"position",position:{x:C.position.x+f,y:C.position.y+g}})})),(d.width0){const g=mg(f,t,n,o);c.push(...g)}return{changes:c,updatedInternals:l}}async function _g({delta:e,panZoom:t,transform:n,translateExtent:r,width:o,height:i}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);const s=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[o,i]],r),a=!!s&&(s.x!==n[0]||s.y!==n[1]||s.k!==n[2]);return Promise.resolve(a)}function as(e,t,n,r,o,i){let s=o;const a=r.get(s)||new Map;r.set(s,a.set(n,t)),s=`${o}-${e}`;const l=r.get(s)||new Map;if(r.set(s,l.set(n,t)),i){s=`${o}-${e}-${i}`;const c=r.get(s)||new Map;r.set(s,c.set(n,t))}}function wg(e,t,n){e.clear(),t.clear();for(const r of n){const{source:o,target:i,sourceHandle:s=null,targetHandle:a=null}=r,l={edgeId:r.id,source:o,target:i,sourceHandle:s,targetHandle:a},c=`${o}-${s}--${i}-${a}`,d=`${i}-${a}--${o}-${s}`;as("source",l,d,e,o,s),as("target",l,c,e,i,a),t.set(r.id,r)}}function al(e,t){if(!e.parentId)return!1;const n=t.get(e.parentId);return n?n.selected?!0:al(n,t):!1}function ls(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function bg(e,t,n,r){const o=new Map;for(const[i,s]of e)if((s.selected||s.id===r)&&(!s.parentId||!al(s,e))&&(s.draggable||t&&typeof s.draggable>"u")){const a=e.get(i);a&&o.set(i,{id:i,position:a.position||{x:0,y:0},distance:{x:n.x-a.internals.positionAbsolute.x,y:n.y-a.internals.positionAbsolute.y},extent:a.extent,parentId:a.parentId,origin:a.origin,expandParent:a.expandParent,internals:{positionAbsolute:a.internals.positionAbsolute||{x:0,y:0}},measured:{width:a.measured.width??0,height:a.measured.height??0}})}return o}function co({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){const o=[];for(const[s,a]of t){const l=n.get(s)?.internals.userNode;l&&o.push({...l,position:a.position,dragging:r})}if(!e)return[o[0],o];const i=n.get(e)?.internals.userNode;return[i?{...i,position:t.get(e)?.position||i.position,dragging:r}:o[0],o]}function xg({dragItems:e,snapGrid:t,x:n,y:r}){const o=e.values().next().value;if(!o)return null;const i={x:n-o.distance.x,y:r-o.distance.y},s=ir(i,t);return{x:s.x-i.x,y:s.y-i.y}}function Eg({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:o}){let i={x:null,y:null},s=0,a=new Map,l=!1,c={x:0,y:0},d=null,h=!1,f=null,g=!1,v=!1,_=null;function y({noDragClassName:C,handleSelector:k,domNode:b,isSelectable:A,nodeId:T,nodeClickDistance:z=0}){f=Ke(b);function M({x,y:N}){const{nodeLookup:p,nodeExtent:E,snapGrid:S,snapToGrid:D,nodeOrigin:O,onNodeDrag:I,onSelectionDrag:q,onError:V,updateNodePositions:W}=t();i={x,y:N};let Y=!1;const B=a.size>1,U=B&&E?Oo(or(a)):null,Z=B&&D?xg({dragItems:a,snapGrid:S,x,y:N}):null;for(const[X,Q]of a){if(!p.has(X))continue;let ue={x:x-Q.distance.x,y:N-Q.distance.y};D&&(ue=Z?{x:Math.round(ue.x+Z.x),y:Math.round(ue.y+Z.y)}:ir(ue,S));let we=null;if(B&&E&&!Q.extent&&U){const{positionAbsolute:te}=Q.internals,Me=te.x-U.x+E[0][0],Ct=te.x+Q.measured.width-U.x2+E[1][0],Nt=te.y-U.y+E[0][1],ft=te.y+Q.measured.height-U.y2+E[1][1];we=[[Me,Nt],[Ct,ft]]}const{position:J,positionAbsolute:pe}=Xa({nodeId:X,nextPosition:ue,nodeLookup:p,nodeExtent:we||E,nodeOrigin:O,onError:V});Y=Y||Q.position.x!==J.x||Q.position.y!==J.y,Q.position=J,Q.internals.positionAbsolute=pe}if(v=v||Y,!!Y&&(W(a,!0),_&&(r||I||!T&&q))){const[X,Q]=co({nodeId:T,dragItems:a,nodeLookup:p});r?.(_,a,X,Q),I?.(_,X,Q),T||q?.(_,Q)}}async function H(){if(!d)return;const{transform:x,panBy:N,autoPanSpeed:p,autoPanOnNodeDrag:E}=t();if(!E){l=!1,cancelAnimationFrame(s);return}const[S,D]=Ua(c,d,p);(S!==0||D!==0)&&(i.x=(i.x??0)-S/x[2],i.y=(i.y??0)-D/x[2],await N({x:S,y:D})&&M(i)),s=requestAnimationFrame(H)}function K(x){const{nodeLookup:N,multiSelectionActive:p,nodesDraggable:E,transform:S,snapGrid:D,snapToGrid:O,selectNodesOnDrag:I,onNodeDragStart:q,onSelectionDragStart:V,unselectNodesAndEdges:W}=t();h=!0,(!I||!A)&&!p&&T&&(N.get(T)?.selected||W()),A&&I&&T&&e?.(T);const Y=lo(x.sourceEvent,{transform:S,snapGrid:D,snapToGrid:O,containerBounds:d});if(i=Y,a=bg(N,E,Y,T),a.size>0&&(n||q||!T&&V)){const[B,U]=co({nodeId:T,dragItems:a,nodeLookup:N});n?.(x.sourceEvent,a,B,U),q?.(x.sourceEvent,B,U),T||V?.(x.sourceEvent,U)}}const P=Yd().clickDistance(z).on("start",x=>{const{domNode:N,nodeDragThreshold:p,transform:E,snapGrid:S,snapToGrid:D}=t();d=N?.getBoundingClientRect()||null,g=!1,v=!1,_=x.sourceEvent,p===0&&K(x),i=lo(x.sourceEvent,{transform:E,snapGrid:S,snapToGrid:D,containerBounds:d}),c=Qe(x.sourceEvent,d)}).on("drag",x=>{const{autoPanOnNodeDrag:N,transform:p,snapGrid:E,snapToGrid:S,nodeDragThreshold:D,nodeLookup:O}=t(),I=lo(x.sourceEvent,{transform:p,snapGrid:E,snapToGrid:S,containerBounds:d});if(_=x.sourceEvent,(x.sourceEvent.type==="touchmove"&&x.sourceEvent.touches.length>1||T&&!O.has(T))&&(g=!0),!g){if(!l&&N&&h&&(l=!0,H()),!h){const q=Qe(x.sourceEvent,d),V=q.x-c.x,W=q.y-c.y;Math.sqrt(V*V+W*W)>D&&K(x)}(i.x!==I.xSnapped||i.y!==I.ySnapped)&&a&&h&&(c=Qe(x.sourceEvent,d),M(I))}}).on("end",x=>{if(!(!h||g)&&(l=!1,h=!1,cancelAnimationFrame(s),a.size>0)){const{nodeLookup:N,updateNodePositions:p,onNodeDragStop:E,onSelectionDragStop:S}=t();if(v&&(p(a,!1),v=!1),o||E||!T&&S){const[D,O]=co({nodeId:T,dragItems:a,nodeLookup:N,dragging:!1});o?.(x.sourceEvent,a,D,O),E?.(x.sourceEvent,D,O),T||S?.(x.sourceEvent,O)}}}).filter(x=>{const N=x.target;return!x.button&&(!C||!ls(N,`.${C}`,b))&&(!k||ls(N,k,b))});f.call(P)}function w(){f?.on(".drag",null)}return{update:y,destroy:w}}function Sg(e,t,n){const r=[],o={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const i of t.values())Wn(o,xn(i))>0&&r.push(i);return r}const kg=250;function Cg(e,t,n,r){let o=[],i=1/0;const s=Sg(e,n,t+kg);for(const a of s){const l=[...a.internals.handleBounds?.source??[],...a.internals.handleBounds?.target??[]];for(const c of l){if(r.nodeId===c.nodeId&&r.type===c.type&&r.id===c.id)continue;const{x:d,y:h}=en(a,c,c.position,!0),f=Math.sqrt(Math.pow(d-e.x,2)+Math.pow(h-e.y,2));f>t||(f1){const a=r.type==="source"?"target":"source";return o.find(l=>l.type===a)??o[0]}return o[0]}function ll(e,t,n,r,o,i=!1){const s=r.get(e);if(!s)return null;const a=o==="strict"?s.internals.handleBounds?.[t]:[...s.internals.handleBounds?.source??[],...s.internals.handleBounds?.target??[]],l=(n?a?.find(c=>c.id===n):a?.[0])??null;return l&&i?{...l,...en(s,l,l.position,!0)}:l}function cl(e,t){return e||(t?.classList.contains("target")?"target":t?.classList.contains("source")?"source":null)}function Ng(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const ul=()=>!0;function Pg(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:o,edgeUpdaterType:i,isTarget:s,domNode:a,nodeLookup:l,lib:c,autoPanOnConnect:d,flowId:h,panBy:f,cancelConnection:g,onConnectStart:v,onConnect:_,onConnectEnd:y,isValidConnection:w=ul,onReconnectEnd:C,updateConnection:k,getTransform:b,getFromHandle:A,autoPanSpeed:T,dragThreshold:z=1,handleDomNode:M}){const H=$a(e.target);let K=0,P;const{x,y:N}=Qe(e),p=cl(i,M),E=a?.getBoundingClientRect();let S=!1;if(!E||!p)return;const D=ll(o,p,r,l,t);if(!D)return;let O=Qe(e,E),I=!1,q=null,V=!1,W=null;function Y(){if(!d||!E)return;const[J,pe]=Ua(O,E,T);f({x:J,y:pe}),K=requestAnimationFrame(Y)}const B={...D,nodeId:o,type:p,position:D.position},U=l.get(o);let X={inProgress:!0,isValid:null,from:en(U,B,j.Left,!0),fromHandle:B,fromPosition:B.position,fromNode:U,to:O,toHandle:null,toPosition:Qi[B.position],toNode:null,pointer:O};function Q(){S=!0,k(X),v?.(e,{nodeId:o,handleId:r,handleType:p})}z===0&&Q();function ue(J){if(!S){const{x:ft,y:ce}=Qe(J),ye=ft-x,Ze=ce-N;if(!(ye*ye+Ze*Ze>z*z))return;Q()}if(!A()||!B){we(J);return}const pe=b();O=Qe(J,E),P=Cg(sr(O,pe,!1,[1,1]),n,l,B),I||(Y(),I=!0);const te=dl(J,{handle:P,connectionMode:t,fromNodeId:o,fromHandleId:r,fromType:s?"target":"source",isValidConnection:w,doc:H,lib:c,flowId:h,nodeLookup:l});W=te.handleDomNode,q=te.connection,V=Ng(!!P,te.isValid);const Me=l.get(o),Ct=Me?en(Me,B,j.Left,!0):X.from,Nt={...X,from:Ct,isValid:V,to:te.toHandle&&V?Rr({x:te.toHandle.x,y:te.toHandle.y},pe):O,toHandle:te.toHandle,toPosition:V&&te.toHandle?te.toHandle.position:Qi[B.position],toNode:te.toHandle?l.get(te.toHandle.nodeId):null,pointer:O};k(Nt),X=Nt}function we(J){if(!("touches"in J&&J.touches.length>0)){if(S){(P||W)&&q&&V&&_?.(q);const{inProgress:pe,...te}=X,Me={...te,toPosition:X.toHandle?X.toPosition:null};y?.(J,Me),i&&C?.(J,Me)}g(),cancelAnimationFrame(K),I=!1,V=!1,q=null,W=null,H.removeEventListener("mousemove",ue),H.removeEventListener("mouseup",we),H.removeEventListener("touchmove",ue),H.removeEventListener("touchend",we)}}H.addEventListener("mousemove",ue),H.addEventListener("mouseup",we),H.addEventListener("touchmove",ue),H.addEventListener("touchend",we)}function dl(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:o,fromType:i,doc:s,lib:a,flowId:l,isValidConnection:c=ul,nodeLookup:d}){const h=i==="target",f=t?s.querySelector(`.${a}-flow__handle[data-id="${l}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:g,y:v}=Qe(e),_=s.elementFromPoint(g,v),y=_?.classList.contains(`${a}-flow__handle`)?_:f,w={handleDomNode:y,isValid:!1,connection:null,toHandle:null};if(y){const C=cl(void 0,y),k=y.getAttribute("data-nodeid"),b=y.getAttribute("data-handleid"),A=y.classList.contains("connectable"),T=y.classList.contains("connectableend");if(!k||!C)return w;const z={source:h?k:r,sourceHandle:h?b:o,target:h?r:k,targetHandle:h?o:b};w.connection=z;const H=A&&T&&(n===wn.Strict?h&&C==="source"||!h&&C==="target":k!==r||b!==o);w.isValid=H&&c(z),w.toHandle=ll(k,C,b,d,n,!0)}return w}const cs={onPointerDown:Pg,isValid:dl};function Mg({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){const o=Ke(e);function i({translateExtent:a,width:l,height:c,zoomStep:d=1,pannable:h=!0,zoomable:f=!0,inversePan:g=!1}){const v=k=>{if(k.sourceEvent.type!=="wheel"||!t)return;const b=n(),A=k.sourceEvent.ctrlKey&&Zn()?10:1,T=-k.sourceEvent.deltaY*(k.sourceEvent.deltaMode===1?.05:k.sourceEvent.deltaMode?1:.002)*d,z=b[2]*Math.pow(2,T*A);t.scaleTo(z)};let _=[0,0];const y=k=>{(k.sourceEvent.type==="mousedown"||k.sourceEvent.type==="touchstart")&&(_=[k.sourceEvent.clientX??k.sourceEvent.touches[0].clientX,k.sourceEvent.clientY??k.sourceEvent.touches[0].clientY])},w=k=>{const b=n();if(k.sourceEvent.type!=="mousemove"&&k.sourceEvent.type!=="touchmove"||!t)return;const A=[k.sourceEvent.clientX??k.sourceEvent.touches[0].clientX,k.sourceEvent.clientY??k.sourceEvent.touches[0].clientY],T=[A[0]-_[0],A[1]-_[1]];_=A;const z=r()*Math.max(b[2],Math.log(b[2]))*(g?-1:1),M={x:b[0]-T[0]*z,y:b[1]-T[1]*z},H=[[0,0],[l,c]];t.setViewportConstrained({x:M.x,y:M.y,zoom:b[2]},H,a)},C=Ya().on("start",y).on("zoom",h?w:null).on("zoom.wheel",f?v:null);o.call(C,{})}function s(){o.on("zoom",null)}return{update:i,destroy:s,pointer:Xe}}const eo=e=>({x:e.x,y:e.y,zoom:e.k}),uo=({x:e,y:t,zoom:n})=>jr.translate(e,t).scale(n),un=(e,t)=>e.target.closest(`.${t}`),fl=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Ag=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,fo=(e,t=0,n=Ag,r=()=>{})=>{const o=typeof t=="number"&&t>0;return o||r(),o?e.transition().duration(t).ease(n).on("end",r):e},hl=e=>{const t=e.ctrlKey&&Zn()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Tg({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:o,panOnScrollSpeed:i,zoomOnPinch:s,onPanZoomStart:a,onPanZoom:l,onPanZoomEnd:c}){return d=>{if(un(d,t))return d.ctrlKey&&d.preventDefault(),!1;d.preventDefault(),d.stopImmediatePropagation();const h=n.property("__zoom").k||1;if(d.ctrlKey&&s){const y=Xe(d),w=hl(d),C=h*Math.pow(2,w);r.scaleTo(n,C,y,d);return}const f=d.deltaMode===1?20:1;let g=o===hn.Vertical?0:d.deltaX*f,v=o===hn.Horizontal?0:d.deltaY*f;!Zn()&&d.shiftKey&&o!==hn.Vertical&&(g=d.deltaY*f,v=0),r.translateBy(n,-(g/h)*i,-(v/h)*i,{internal:!0});const _=eo(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(l?.(d,_),e.panScrollTimeout=setTimeout(()=>{c?.(d,_),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,a?.(d,_))}}function Dg({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,o){const i=r.type==="wheel",s=!t&&i&&!r.ctrlKey,a=un(r,e);if(r.ctrlKey&&i&&a&&r.preventDefault(),s||a)return null;r.preventDefault(),n.call(this,r,o)}}function Ig({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;const o=eo(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=o,r.sourceEvent?.type==="mousedown"&&t(!0),n&&n?.(r.sourceEvent,o)}}function zg({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:o}){return i=>{e.usedRightMouseButton=!!(n&&fl(t,e.mouseButton??0)),i.sourceEvent?.sync||r([i.transform.x,i.transform.y,i.transform.k]),o&&!i.sourceEvent?.internal&&o?.(i.sourceEvent,eo(i.transform))}}function Og({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:o,onPaneContextMenu:i}){return s=>{if(!s.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,i&&fl(t,e.mouseButton??0)&&!e.usedRightMouseButton&&s.sourceEvent&&i(s.sourceEvent),e.usedRightMouseButton=!1,r(!1),o)){const a=eo(s.transform);e.prevViewport=a,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{o?.(s.sourceEvent,a)},n?150:0)}}}function Rg({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:o,zoomOnDoubleClick:i,userSelectionActive:s,noWheelClassName:a,noPanClassName:l,lib:c,connectionInProgress:d}){return h=>{const f=e||t,g=n&&h.ctrlKey,v=h.type==="wheel";if(h.button===1&&h.type==="mousedown"&&(un(h,`${c}-flow__node`)||un(h,`${c}-flow__edge`)))return!0;if(!r&&!f&&!o&&!i&&!n||s||d&&!v||un(h,a)&&v||un(h,l)&&(!v||o&&v&&!e)||!n&&h.ctrlKey&&v)return!1;if(!n&&h.type==="touchstart"&&h.touches?.length>1)return h.preventDefault(),!1;if(!f&&!o&&!g&&v||!r&&(h.type==="mousedown"||h.type==="touchstart")||Array.isArray(r)&&!r.includes(h.button)&&h.type==="mousedown")return!1;const _=Array.isArray(r)&&r.includes(h.button)||!h.button||h.button<=1;return(!h.ctrlKey||v)&&_}}function qg({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:o,onPanZoom:i,onPanZoomStart:s,onPanZoomEnd:a,onDraggingChange:l}){const c={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},d=e.getBoundingClientRect(),h=Ya().scaleExtent([t,n]).translateExtent(r),f=Ke(e).call(h);C({x:o.x,y:o.y,zoom:bn(o.zoom,t,n)},[[0,0],[d.width,d.height]],r);const g=f.on("wheel.zoom"),v=f.on("dblclick.zoom");h.wheelDelta(hl);function _(P,x){return f?new Promise(N=>{h?.interpolate(x?.interpolate==="linear"?Rn:yr).transform(fo(f,x?.duration,x?.ease,()=>N(!0)),P)}):Promise.resolve(!1)}function y({noWheelClassName:P,noPanClassName:x,onPaneContextMenu:N,userSelectionActive:p,panOnScroll:E,panOnDrag:S,panOnScrollMode:D,panOnScrollSpeed:O,preventScrolling:I,zoomOnPinch:q,zoomOnScroll:V,zoomOnDoubleClick:W,zoomActivationKeyPressed:Y,lib:B,onTransformChange:U,connectionInProgress:Z,paneClickDistance:X,selectionOnDrag:Q}){p&&!c.isZoomingOrPanning&&w();const ue=E&&!Y&&!p;h.clickDistance(Q?1/0:!_t(X)||X<0?0:X);const we=ue?Tg({zoomPanValues:c,noWheelClassName:P,d3Selection:f,d3Zoom:h,panOnScrollMode:D,panOnScrollSpeed:O,zoomOnPinch:q,onPanZoomStart:s,onPanZoom:i,onPanZoomEnd:a}):Dg({noWheelClassName:P,preventScrolling:I,d3ZoomHandler:g});if(f.on("wheel.zoom",we,{passive:!1}),!p){const pe=Ig({zoomPanValues:c,onDraggingChange:l,onPanZoomStart:s});h.on("start",pe);const te=zg({zoomPanValues:c,panOnDrag:S,onPaneContextMenu:!!N,onPanZoom:i,onTransformChange:U});h.on("zoom",te);const Me=Og({zoomPanValues:c,panOnDrag:S,panOnScroll:E,onPaneContextMenu:N,onPanZoomEnd:a,onDraggingChange:l});h.on("end",Me)}const J=Rg({zoomActivationKeyPressed:Y,panOnDrag:S,zoomOnScroll:V,panOnScroll:E,zoomOnDoubleClick:W,zoomOnPinch:q,userSelectionActive:p,noPanClassName:x,noWheelClassName:P,lib:B,connectionInProgress:Z});h.filter(J),W?f.on("dblclick.zoom",v):f.on("dblclick.zoom",null)}function w(){h.on("zoom",null)}async function C(P,x,N){const p=uo(P),E=h?.constrain()(p,x,N);return E&&await _(E),new Promise(S=>S(E))}async function k(P,x){const N=uo(P);return await _(N,x),new Promise(p=>p(N))}function b(P){if(f){const x=uo(P),N=f.property("__zoom");(N.k!==P.zoom||N.x!==P.x||N.y!==P.y)&&h?.transform(f,x,null,{sync:!0})}}function A(){const P=f?Ka(f.node()):{x:0,y:0,k:1};return{x:P.x,y:P.y,zoom:P.k}}function T(P,x){return f?new Promise(N=>{h?.interpolate(x?.interpolate==="linear"?Rn:yr).scaleTo(fo(f,x?.duration,x?.ease,()=>N(!0)),P)}):Promise.resolve(!1)}function z(P,x){return f?new Promise(N=>{h?.interpolate(x?.interpolate==="linear"?Rn:yr).scaleBy(fo(f,x?.duration,x?.ease,()=>N(!0)),P)}):Promise.resolve(!1)}function M(P){h?.scaleExtent(P)}function H(P){h?.translateExtent(P)}function K(P){const x=!_t(P)||P<0?0:P;h?.clickDistance(x)}return{update:y,destroy:w,setViewport:k,setViewportConstrained:C,getViewport:A,scaleTo:T,scaleBy:z,setScaleExtent:M,setTranslateExtent:H,syncViewport:b,setClickDistance:K}}var us;(function(e){e.Line="line",e.Handle="handle"})(us||(us={}));function pi(){const e={};return[t=>{if(t&&!ec(e))throw new Error(t);return Fo(e)},t=>As(e,t)]}const[Hg,Lg]=pi(),[Vg,Bg]=pi(),[Fg,Kg]=pi();var Yg=ae("
");function qr(e,t){re(t,!0);let n=L(t,"id",3,null),r=L(t,"type",3,"source"),o=L(t,"position",19,()=>j.Top),i=L(t,"isConnectableStart",3,!0),s=L(t,"isConnectableEnd",3,!0),a=Vt(t,["$$slots","$$events","$$legacy","id","type","position","style","class","isConnectable","isConnectableStart","isConnectableEnd","isValidConnection","onconnect","ondisconnect","children"]);const l=Hg("Handle must be used within a Custom Node component"),c=Vg("Handle must be used within a Custom Node component");let d=m(()=>r()==="target"),h=m(()=>t.isConnectable!==void 0?t.isConnectable:c.value),f=Ft(),g=m(()=>f.ariaLabelConfig),v=null;Zs(()=>{if(t.onconnect||t.ondisconnect){f.edges;let x=f.connectionLookup.get(`${l}-${r()}${n()?`-${n()}`:""}`);if(v&&!Lh(x,v)){const N=x??new Map;ji(v,N,t.ondisconnect),ji(N,v,t.onconnect)}v=new Map(x)}});let _=m(()=>{if(!f.connection.inProgress)return[!1,!1,!1,!1,null];const{fromHandle:x,toHandle:N,isValid:p}=f.connection,E=x&&x.nodeId===l&&x.type===r()&&x.id===n(),S=N&&N.nodeId===l&&N.type===r()&&N.id===n(),D=f.connectionMode===wn.Strict?x?.type!==r():l!==x?.nodeId||n()!==x?.id;return[!0,E,S,D,S&&p]}),y=m(()=>Xn(u(_),5)),w=m(()=>u(y)[0]),C=m(()=>u(y)[1]),k=m(()=>u(y)[2]),b=m(()=>u(y)[3]),A=m(()=>u(y)[4]);function T(x){const N=f.onbeforeconnect?f.onbeforeconnect(x):x;N&&(f.addEdge(N),f.onconnect?.(x))}function z(x){const N=tl(x);x.currentTarget&&(N&&x.button===0||!N)&&cs.onPointerDown(x,{handleId:n(),nodeId:l,isTarget:u(d),connectionRadius:f.connectionRadius,domNode:f.domNode,nodeLookup:f.nodeLookup,connectionMode:f.connectionMode,lib:"svelte",autoPanOnConnect:f.autoPanOnConnect,autoPanSpeed:f.autoPanSpeed,flowId:f.flowId,isValidConnection:t.isValidConnection??f.isValidConnection,updateConnection:f.updateConnection,cancelConnection:f.cancelConnection,panBy:f.panBy,onConnect:T,onConnectStart:(p,E)=>{f.onconnectstart?.(p,{nodeId:E.nodeId,handleId:E.handleId,handleType:E.handleType})},onConnectEnd:(p,E)=>{f.onconnectend?.(p,E)},getTransform:()=>[f.viewport.x,f.viewport.y,f.viewport.zoom],getFromHandle:()=>f.connection.fromHandle,dragThreshold:f.connectionDragThreshold,handleDomNode:x.currentTarget})}function M(x){if(!l||!f.clickConnectStartHandle&&!i())return;if(!f.clickConnectStartHandle){f.onclickconnectstart?.(x,{nodeId:l,handleId:n(),handleType:r()}),f.clickConnectStartHandle={nodeId:l,type:r(),id:n()};return}const N=$a(x.target),p=t.isValidConnection??f.isValidConnection,{connectionMode:E,clickConnectStartHandle:S,flowId:D,nodeLookup:O}=f,{connection:I,isValid:q}=cs.isValid(x,{handle:{nodeId:l,id:n(),type:r()},connectionMode:E,fromNodeId:S.nodeId,fromHandleId:S.id??null,fromType:S.type,isValidConnection:p,flowId:D,doc:N,lib:"svelte",nodeLookup:O});q&&I&&T(I);const V=structuredClone(Ms(f.connection));delete V.inProgress,V.toPosition=V.toHandle?V.toHandle.position:null,f.onclickconnectend?.(x,V),f.clickConnectStartHandle=null}var H=Yg(),K=()=>{};Lt(H,()=>({"data-handleid":n(),"data-nodeid":l,"data-handlepos":o(),"data-id":`${f.flowId??""}-${l??""}-${n()??"null"??""}-${r()??""}`,class:["svelte-flow__handle",`svelte-flow__handle-${o()}`,f.noDragClass,f.noPanClass,o(),t.class],onmousedown:z,ontouchstart:z,onclick:f.clickConnect?M:void 0,onkeypress:K,style:t.style,role:"button","aria-label":u(g)["handle.ariaLabel"],tabindex:"-1",...a,[Mt]:{valid:u(A),connectingto:u(k),connectingfrom:u(C),source:!u(d),target:u(d),connectablestart:i(),connectableend:s(),connectable:u(h),connectionindicator:u(h)&&(!u(w)||u(b))&&(u(w)||f.clickConnectStartHandle?s():i())}}));var P=ee(H);Ye(P,()=>t.children??Sn),F(e,H),oe()}var Wg=ae(" ",1);function gl(e,t){re(t,!0);let n=L(t,"targetPosition",19,()=>j.Top),r=L(t,"sourcePosition",19,()=>j.Bottom);var o=Wg(),i=le(o);qr(i,{type:"target",get position(){return n()}});var s=$(i),a=$(s);qr(a,{type:"source",get position(){return r()}}),he(()=>Re(s,` ${t.data?.label??""} `)),F(e,o),oe()}var Zg=ae(" ",1);function Xg(e,t){re(t,!0);let n=L(t,"data",19,()=>({label:"Node"})),r=L(t,"sourcePosition",19,()=>j.Bottom);var o=Zg(),i=le(o),s=$(i);qr(s,{type:"source",get position(){return r()}}),he(()=>Re(i,`${n()?.label??""} `)),F(e,o),oe()}var Gg=ae(" ",1);function Ug(e,t){re(t,!0);let n=L(t,"data",19,()=>({label:"Node"})),r=L(t,"targetPosition",19,()=>j.Top);var o=Gg(),i=le(o),s=$(i);qr(s,{type:"target",get position(){return r()}}),he(()=>Re(i,`${n()?.label??""} `)),F(e,o),oe()}function Qg(e,t){}function ho(e,t,n){if(!n||!t)return;const r=n==="root"?t:t.querySelector(`.svelte-flow__${n}`);r&&r.appendChild(e)}function jg(e,t){const n=m(Ft),r=m(()=>u(n).domNode);let o;return u(r)?ho(e,u(r),t):o=Xs(()=>{at(()=>{ho(e,u(r),t),o?.()})}),{async update(i){ho(e,u(r),i)},destroy(){e.parentNode&&e.parentNode.removeChild(e),o?.()}}}function Jg(){let e=se(typeof window>"u");if(u(e)){const t=Xs(()=>{at(()=>{R(e,!1),t?.()})})}return{get value(){return u(e)}}}const ds=e=>Bh(e),$g=e=>Za(e);function ct(e){return e===void 0?void 0:`${e}px`}const Hr={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var ev=ae("
");function tv(e,t){re(t,!0);let n=L(t,"x",3,0),r=L(t,"y",3,0),o=L(t,"selectEdgeOnClick",3,!1),i=L(t,"transparent",3,!1),s=Vt(t,["$$slots","$$events","$$legacy","x","y","width","height","selectEdgeOnClick","transparent","class","children"]);const a=Ft(),l=Fg("EdgeLabel must be used within a Custom Edge component");let c=m(()=>a.visible.edges.get(l)?.zIndex);var d=ev(),h=()=>{o()&&l&&a.handleEdgeSelection(l)};Lt(d,g=>({class:["svelte-flow__edge-label",{transparent:i()},t.class],tabindex:"-1",onclick:h,...s,[pt]:g}),[()=>({display:Jg().value?"none":void 0,cursor:o()?"pointer":void 0,transform:`translate(-50%, -50%) translate(${n()??""}px,${r()??""}px)`,"pointer-events":"all",width:ct(t.width),height:ct(t.height),"z-index":u(c)})],void 0,void 0,"svelte-1wg91mu");var f=ee(d);Ye(f,()=>t.children??Sn),Ne(d,(g,v)=>jg?.(g,v),()=>"edge-labels"),F(e,d),oe()}var nv=me(""),rv=me('',1);function to(e,t){let n=L(t,"interactionWidth",3,20),r=Vt(t,["$$slots","$$events","$$legacy","id","path","label","labelX","labelY","labelStyle","markerStart","markerEnd","style","interactionWidth","class"]);var o=rv(),i=le(o),s=$(i);{var a=d=>{var h=nv();Lt(h,()=>({d:t.path,"stroke-opacity":0,"stroke-width":n(),fill:"none",class:"svelte-flow__edge-interaction",...r})),F(d,h)};de(s,d=>{n()>0&&d(a)})}var l=$(s);{var c=d=>{tv(d,{get x(){return t.labelX},get y(){return t.labelY},get style(){return t.labelStyle},selectEdgeOnClick:!0,children:(h,f)=>{var g=zc();he(()=>Re(g,t.label)),F(h,g)},$$slots:{default:!0}})};de(l,d=>{t.label&&d(c)})}he(()=>{G(i,"id",t.id),G(i,"d",t.path),ut(i,0,Ht(["svelte-flow__edge-path",t.class])),G(i,"marker-start",t.markerStart),G(i,"marker-end",t.markerEnd),Le(i,t.style)}),F(e,o)}function vl(e,t){re(t,!0);let n=m(()=>nl({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition,curvature:t.pathOptions?.curvature})),r=m(()=>Xn(u(n),3)),o=m(()=>u(r)[0]),i=m(()=>u(r)[1]),s=m(()=>u(r)[2]);to(e,{get id(){return t.id},get path(){return u(o)},get labelX(){return u(i)},get labelY(){return u(s)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),oe()}function ov(e,t){re(t,!0);let n=m(()=>di({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition})),r=m(()=>Xn(u(n),3)),o=m(()=>u(r)[0]),i=m(()=>u(r)[1]),s=m(()=>u(r)[2]);to(e,{get path(){return u(o)},get labelX(){return u(i)},get labelY(){return u(s)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),oe()}function iv(e,t){re(t,!0);let n=m(()=>ol({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY})),r=m(()=>Xn(u(n),3)),o=m(()=>u(r)[0]),i=m(()=>u(r)[1]),s=m(()=>u(r)[2]);to(e,{get path(){return u(o)},get labelX(){return u(i)},get labelY(){return u(s)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),oe()}function sv(e,t){re(t,!0);let n=m(()=>di({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition,borderRadius:0})),r=m(()=>Xn(u(n),3)),o=m(()=>u(r)[0]),i=m(()=>u(r)[1]),s=m(()=>u(r)[2]);to(e,{get path(){return u(o)},get labelX(){return u(i)},get labelY(){return u(s)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),oe()}class av{#e;#t;constructor(t,n){this.#e=t,this.#t=zs(n)}get current(){return this.#t(),this.#e()}}const lv=/\(.+\)/,cv=new Set(["all","print","screen","and","or","not","only"]);class uv extends av{constructor(t,n){let r=lv.test(t)||t.split(/[\s,]+/).some(i=>cv.has(i.trim()))?t:`(${t})`;const o=window.matchMedia(r);super(()=>o.matches,i=>xo(o,"change",i))}}function dv(e,t,n,r){const o=new Map;return ci(e,{x:0,y:0,width:n,height:r},t,!0).forEach(i=>{o.set(i.id,i)}),o}function fs(e){const{edges:t,defaultEdgeOptions:n,nodeLookup:r,previousEdges:o,connectionMode:i,onerror:s,onlyRenderVisible:a,elevateEdgesOnSelect:l,zIndexMode:c}=e,d=new Map;for(const h of t){const f=r.get(h.source),g=r.get(h.target);if(!f||!g)continue;if(a){const{visibleNodes:y,transform:w,width:C,height:k}=e;if(tg({sourceNode:f,targetNode:g,width:C,height:k,transform:w}))y.set(f.id,f),y.set(g.id,g);else continue}const v=o.get(h.id);if(v&&h===v.edge&&f==v.sourceNode&&g==v.targetNode){d.set(h.id,v);continue}const _=lg({id:h.id,sourceNode:f,targetNode:g,sourceHandle:h.sourceHandle||null,targetHandle:h.targetHandle||null,connectionMode:i,onError:s});_&&d.set(h.id,{...n,...h,..._,zIndex:eg({selected:h.selected,zIndex:h.zIndex??n.zIndex,sourceNode:f,targetNode:g,elevateOnSelect:l,zIndexMode:c}),sourceNode:f,targetNode:g,edge:h})}return d}const pl={input:Xg,output:Ug,default:gl,group:Qg},ml={straight:iv,smoothstep:ov,default:vl,step:sv};function fv(e,t,n,r,o,i){if(t&&!n&&r&&o){const s=or(i,{filter:a=>!!((a.width||a.initialWidth)&&(a.height||a.initialHeight))});return ui(s,r,o,.5,2,.1)}else return n??{x:0,y:0,zoom:1}}function hv(e){class t{#e=m(()=>e.props.id??"1");get flowId(){return u(this.#e)}set flowId(r){R(this.#e,r)}#t=se(null);get domNode(){return u(this.#t)}set domNode(r){R(this.#t,r)}#n=se(null);get panZoom(){return u(this.#n)}set panZoom(r){R(this.#n,r)}#r=se(e.width??0);get width(){return u(this.#r)}set width(r){R(this.#r,r)}#l=se(e.height??0);get height(){return u(this.#l)}set height(r){R(this.#l,r)}#i=se(e.props.zIndexMode??"basic");get zIndexMode(){return u(this.#i)}set zIndexMode(r){R(this.#i,r)}#o=m(()=>{const r=gg(e.nodes,this.nodeLookup,this.parentLookup,{nodeExtent:this.nodeExtent,nodeOrigin:this.nodeOrigin,elevateNodesOnSelect:e.props.elevateNodesOnSelect??!0,checkEquality:!0,zIndexMode:this.zIndexMode});return this.fitViewQueued&&r&&(this.fitViewOptions?.duration?this.resolveFitView():queueMicrotask(()=>{this.resolveFitView()})),r});get nodesInitialized(){return u(this.#o)}set nodesInitialized(r){R(this.#o,r)}#s=m(()=>this.panZoom!==null);get viewportInitialized(){return u(this.#s)}set viewportInitialized(r){R(this.#s,r)}#a=m(()=>(wg(this.connectionLookup,this.edgeLookup,e.edges),e.edges));get _edges(){return u(this.#a)}set _edges(r){R(this.#a,r)}get nodes(){return this.nodesInitialized,e.nodes}set nodes(r){e.nodes=r}get edges(){return this._edges}set edges(r){e.edges=r}_prevSelectedNodes=[];_prevSelectedNodeIds=new Set;#c=m(()=>{const r=this._prevSelectedNodeIds.size,o=new Set,i=this.nodes.filter(s=>(s.selected&&(o.add(s.id),this._prevSelectedNodeIds.delete(s.id)),s.selected));return(r!==o.size||this._prevSelectedNodeIds.size>0)&&(this._prevSelectedNodes=i),this._prevSelectedNodeIds=o,this._prevSelectedNodes});get selectedNodes(){return u(this.#c)}set selectedNodes(r){R(this.#c,r)}_prevSelectedEdges=[];_prevSelectedEdgeIds=new Set;#u=m(()=>{const r=this._prevSelectedEdgeIds.size,o=new Set,i=this.edges.filter(s=>(s.selected&&(o.add(s.id),this._prevSelectedEdgeIds.delete(s.id)),s.selected));return(r!==o.size||this._prevSelectedEdgeIds.size>0)&&(this._prevSelectedEdges=i),this._prevSelectedEdgeIds=o,this._prevSelectedEdges});get selectedEdges(){return u(this.#u)}set selectedEdges(r){R(this.#u,r)}selectionChangeHandlers=new Map;nodeLookup=new Map;parentLookup=new Map;connectionLookup=new Map;edgeLookup=new Map;_prevVisibleEdges=new Map;#d=m(()=>{const{nodes:r,_edges:o,_prevVisibleEdges:i,nodeLookup:s,connectionMode:a,onerror:l,onlyRenderVisibleElements:c,defaultEdgeOptions:d,zIndexMode:h}=this;let f,g;const v={edges:o,defaultEdgeOptions:d,previousEdges:i,nodeLookup:s,connectionMode:a,elevateEdgesOnSelect:e.props.elevateEdgesOnSelect??!0,zIndexMode:h,onerror:l};if(c){const{viewport:_,width:y,height:w}=this,C=[_.x,_.y,_.zoom];f=dv(s,C,y,w),g=fs({...v,onlyRenderVisible:!0,visibleNodes:f,transform:C,width:y,height:w})}else f=this.nodeLookup,g=fs(v);return{nodes:f,edges:g}});get visible(){return u(this.#d)}set visible(r){R(this.#d,r)}#f=m(()=>e.props.nodesDraggable??!0);get nodesDraggable(){return u(this.#f)}set nodesDraggable(r){R(this.#f,r)}#g=m(()=>e.props.nodesConnectable??!0);get nodesConnectable(){return u(this.#g)}set nodesConnectable(r){R(this.#g,r)}#h=m(()=>e.props.elementsSelectable??!0);get elementsSelectable(){return u(this.#h)}set elementsSelectable(r){R(this.#h,r)}#_=m(()=>e.props.nodesFocusable??!0);get nodesFocusable(){return u(this.#_)}set nodesFocusable(r){R(this.#_,r)}#w=m(()=>e.props.edgesFocusable??!0);get edgesFocusable(){return u(this.#w)}set edgesFocusable(r){R(this.#w,r)}#b=m(()=>e.props.disableKeyboardA11y??!1);get disableKeyboardA11y(){return u(this.#b)}set disableKeyboardA11y(r){R(this.#b,r)}#m=m(()=>e.props.minZoom??.5);get minZoom(){return u(this.#m)}set minZoom(r){R(this.#m,r)}#v=m(()=>e.props.maxZoom??2);get maxZoom(){return u(this.#v)}set maxZoom(r){R(this.#v,r)}#p=m(()=>e.props.nodeOrigin??[0,0]);get nodeOrigin(){return u(this.#p)}set nodeOrigin(r){R(this.#p,r)}#y=m(()=>e.props.nodeExtent??Io);get nodeExtent(){return u(this.#y)}set nodeExtent(r){R(this.#y,r)}#x=m(()=>e.props.translateExtent??Io);get translateExtent(){return u(this.#x)}set translateExtent(r){R(this.#x,r)}#E=m(()=>e.props.defaultEdgeOptions??{});get defaultEdgeOptions(){return u(this.#E)}set defaultEdgeOptions(r){R(this.#E,r)}#S=m(()=>e.props.nodeDragThreshold??1);get nodeDragThreshold(){return u(this.#S)}set nodeDragThreshold(r){R(this.#S,r)}#k=m(()=>e.props.autoPanOnNodeDrag??!0);get autoPanOnNodeDrag(){return u(this.#k)}set autoPanOnNodeDrag(r){R(this.#k,r)}#C=m(()=>e.props.autoPanOnConnect??!0);get autoPanOnConnect(){return u(this.#C)}set autoPanOnConnect(r){R(this.#C,r)}#N=m(()=>e.props.autoPanOnNodeFocus??!0);get autoPanOnNodeFocus(){return u(this.#N)}set autoPanOnNodeFocus(r){R(this.#N,r)}#P=m(()=>e.props.autoPanSpeed??15);get autoPanSpeed(){return u(this.#P)}set autoPanSpeed(r){R(this.#P,r)}#M=m(()=>e.props.connectionDragThreshold??1);get connectionDragThreshold(){return u(this.#M)}set connectionDragThreshold(r){R(this.#M,r)}fitViewQueued=e.props.fitView??!1;fitViewOptions=e.props.fitViewOptions;fitViewResolver=null;#A=m(()=>e.props.snapGrid??null);get snapGrid(){return u(this.#A)}set snapGrid(r){R(this.#A,r)}#T=se(!1);get dragging(){return u(this.#T)}set dragging(r){R(this.#T,r)}#D=se(null);get selectionRect(){return u(this.#D)}set selectionRect(r){R(this.#D,r)}#I=se(!1);get selectionKeyPressed(){return u(this.#I)}set selectionKeyPressed(r){R(this.#I,r)}#z=se(!1);get multiselectionKeyPressed(){return u(this.#z)}set multiselectionKeyPressed(r){R(this.#z,r)}#O=se(!1);get deleteKeyPressed(){return u(this.#O)}set deleteKeyPressed(r){R(this.#O,r)}#R=se(!1);get panActivationKeyPressed(){return u(this.#R)}set panActivationKeyPressed(r){R(this.#R,r)}#q=se(!1);get zoomActivationKeyPressed(){return u(this.#q)}set zoomActivationKeyPressed(r){R(this.#q,r)}#H=se(null);get selectionRectMode(){return u(this.#H)}set selectionRectMode(r){R(this.#H,r)}#L=se("");get ariaLiveMessage(){return u(this.#L)}set ariaLiveMessage(r){R(this.#L,r)}#V=m(()=>e.props.selectionMode??Ir.Partial);get selectionMode(){return u(this.#V)}set selectionMode(r){R(this.#V,r)}#B=m(()=>({...pl,...e.props.nodeTypes}));get nodeTypes(){return u(this.#B)}set nodeTypes(r){R(this.#B,r)}#F=m(()=>({...ml,...e.props.edgeTypes}));get edgeTypes(){return u(this.#F)}set edgeTypes(r){R(this.#F,r)}#K=m(()=>e.props.noPanClass??"nopan");get noPanClass(){return u(this.#K)}set noPanClass(r){R(this.#K,r)}#Y=m(()=>e.props.noDragClass??"nodrag");get noDragClass(){return u(this.#Y)}set noDragClass(r){R(this.#Y,r)}#W=m(()=>e.props.noWheelClass??"nowheel");get noWheelClass(){return u(this.#W)}set noWheelClass(r){R(this.#W,r)}#Z=m(()=>jh(e.props.ariaLabelConfig));get ariaLabelConfig(){return u(this.#Z)}set ariaLabelConfig(r){R(this.#Z,r)}#X=se(fv(this.nodesInitialized,e.props.fitView,e.props.initialViewport,this.width,this.height,this.nodeLookup));get _viewport(){return u(this.#X)}set _viewport(r){R(this.#X,r)}get viewport(){return e.viewport??this._viewport}set viewport(r){e.viewport&&(e.viewport=r),this._viewport=r}#G=se(zo);get _connection(){return u(this.#G)}set _connection(r){R(this.#G,r)}#U=m(()=>this._connection.inProgress?{...this._connection,to:sr(this._connection.to,[this.viewport.x,this.viewport.y,this.viewport.zoom])}:this._connection);get connection(){return u(this.#U)}set connection(r){R(this.#U,r)}#Q=m(()=>e.props.connectionMode??wn.Strict);get connectionMode(){return u(this.#Q)}set connectionMode(r){R(this.#Q,r)}#j=m(()=>e.props.connectionRadius??20);get connectionRadius(){return u(this.#j)}set connectionRadius(r){R(this.#j,r)}#J=m(()=>e.props.isValidConnection??(()=>!0));get isValidConnection(){return u(this.#J)}set isValidConnection(r){R(this.#J,r)}#$=m(()=>e.props.selectNodesOnDrag??!0);get selectNodesOnDrag(){return u(this.#$)}set selectNodesOnDrag(r){R(this.#$,r)}#ee=m(()=>e.props.defaultMarkerColor===void 0?"#b1b1b7":e.props.defaultMarkerColor);get defaultMarkerColor(){return u(this.#ee)}set defaultMarkerColor(r){R(this.#ee,r)}#te=m(()=>cg(e.edges,{defaultColor:this.defaultMarkerColor,id:this.flowId,defaultMarkerStart:this.defaultEdgeOptions.markerStart,defaultMarkerEnd:this.defaultEdgeOptions.markerEnd}));get markers(){return u(this.#te)}set markers(r){R(this.#te,r)}#ne=m(()=>e.props.onlyRenderVisibleElements??!1);get onlyRenderVisibleElements(){return u(this.#ne)}set onlyRenderVisibleElements(r){R(this.#ne,r)}#re=m(()=>e.props.onflowerror??Xh);get onerror(){return u(this.#re)}set onerror(r){R(this.#re,r)}#oe=m(()=>e.props.ondelete);get ondelete(){return u(this.#oe)}set ondelete(r){R(this.#oe,r)}#ie=m(()=>e.props.onbeforedelete);get onbeforedelete(){return u(this.#ie)}set onbeforedelete(r){R(this.#ie,r)}#se=m(()=>e.props.onbeforeconnect);get onbeforeconnect(){return u(this.#se)}set onbeforeconnect(r){R(this.#se,r)}#ae=m(()=>e.props.onconnect);get onconnect(){return u(this.#ae)}set onconnect(r){R(this.#ae,r)}#le=m(()=>e.props.onconnectstart);get onconnectstart(){return u(this.#le)}set onconnectstart(r){R(this.#le,r)}#ce=m(()=>e.props.onconnectend);get onconnectend(){return u(this.#ce)}set onconnectend(r){R(this.#ce,r)}#ue=m(()=>e.props.onbeforereconnect);get onbeforereconnect(){return u(this.#ue)}set onbeforereconnect(r){R(this.#ue,r)}#de=m(()=>e.props.onreconnect);get onreconnect(){return u(this.#de)}set onreconnect(r){R(this.#de,r)}#fe=m(()=>e.props.onreconnectstart);get onreconnectstart(){return u(this.#fe)}set onreconnectstart(r){R(this.#fe,r)}#he=m(()=>e.props.onreconnectend);get onreconnectend(){return u(this.#he)}set onreconnectend(r){R(this.#he,r)}#ge=m(()=>e.props.clickConnect??!0);get clickConnect(){return u(this.#ge)}set clickConnect(r){R(this.#ge,r)}#ve=m(()=>e.props.onclickconnectstart);get onclickconnectstart(){return u(this.#ve)}set onclickconnectstart(r){R(this.#ve,r)}#pe=m(()=>e.props.onclickconnectend);get onclickconnectend(){return u(this.#pe)}set onclickconnectend(r){R(this.#pe,r)}#me=se(null);get clickConnectStartHandle(){return u(this.#me)}set clickConnectStartHandle(r){R(this.#me,r)}#ye=m(()=>e.props.onselectiondrag);get onselectiondrag(){return u(this.#ye)}set onselectiondrag(r){R(this.#ye,r)}#_e=m(()=>e.props.onselectiondragstart);get onselectiondragstart(){return u(this.#_e)}set onselectiondragstart(r){R(this.#_e,r)}#we=m(()=>e.props.onselectiondragstop);get onselectiondragstop(){return u(this.#we)}set onselectiondragstop(r){R(this.#we,r)}resolveFitView=async()=>{this.panZoom&&(await Wh({nodes:this.nodeLookup,width:this.width,height:this.height,panZoom:this.panZoom,minZoom:this.minZoom,maxZoom:this.maxZoom},this.fitViewOptions),this.fitViewResolver?.resolve(!0),this.fitViewQueued=!1,this.fitViewOptions=void 0,this.fitViewResolver=null)};_prefersDark=new uv("(prefers-color-scheme: dark)",e.props.colorModeSSR==="dark");#be=m(()=>e.props.colorMode==="system"?this._prefersDark.current?"dark":"light":e.props.colorMode??"light");get colorMode(){return u(this.#be)}set colorMode(r){R(this.#be,r)}constructor(){}resetStoreValues(){this.dragging=!1,this.selectionRect=null,this.selectionRectMode=null,this.selectionKeyPressed=!1,this.multiselectionKeyPressed=!1,this.deleteKeyPressed=!1,this.panActivationKeyPressed=!1,this.zoomActivationKeyPressed=!1,this._connection=zo,this.clickConnectStartHandle=null,this.viewport=e.props.initialViewport??{x:0,y:0,zoom:1},this.ariaLiveMessage=""}}return new t}function Ft(){const e=Fo(qo);if(!e)throw new Error("To call useStore outside of you need to wrap your component in a ");return e.getStore()}const qo=Symbol();function gv(e){const t=hv(e);function n(P){t.nodeTypes={...pl,...P}}function r(P){t.edgeTypes={...ml,...P}}function o(P){t.edges=og(P,t.edges)}const i=(P,x=!1)=>{t.nodes=t.nodes.map(N=>{if(t.connection.inProgress&&t.connection.fromNode.id===N.id){const E=t.nodeLookup.get(N.id);E&&(t.connection={...t.connection,from:en(E,t.connection.fromHandle,j.Left,!0)})}const p=P.get(N.id);return p?{...N,position:p.position,dragging:x}:N})};function s(P){const{changes:x,updatedInternals:N}=yg(P,t.nodeLookup,t.parentLookup,t.domNode,t.nodeOrigin,t.nodeExtent,t.zIndexMode);if(!N)return;fg(t.nodeLookup,t.parentLookup,{nodeOrigin:t.nodeOrigin,nodeExtent:t.nodeExtent,zIndexMode:t.zIndexMode}),t.fitViewQueued&&t.resolveFitView();const p=new Map;for(const E of x){const S=t.nodeLookup.get(E.id)?.internals.userNode;if(!S)continue;const D={...S};switch(E.type){case"dimensions":{const O={...D.measured,...E.dimensions};E.setAttributes&&(D.width=E.dimensions?.width??D.width,D.height=E.dimensions?.height??D.height),D.measured=O;break}case"position":D.position=E.position??D.position;break}p.set(E.id,D)}t.nodes=t.nodes.map(E=>p.get(E.id)??E)}function a(P){const x=t.fitViewResolver??Promise.withResolvers();return t.fitViewQueued=!0,t.fitViewOptions=P,t.fitViewResolver=x,t.nodes=[...t.nodes],x.promise}async function l(P,x,N){const p=typeof N?.zoom<"u"?N.zoom:t.maxZoom,E=t.panZoom;return E?(await E.setViewport({x:t.width/2-P*p,y:t.height/2-x*p,zoom:p},{duration:N?.duration,ease:N?.ease,interpolate:N?.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)}function c(P,x){const N=t.panZoom;return N?N.scaleBy(P,x):Promise.resolve(!1)}function d(P){return c(1.2,P)}function h(P){return c(1/1.2,P)}function f(P){const x=t.panZoom;x&&(x.setScaleExtent([P,t.maxZoom]),t.minZoom=P)}function g(P){const x=t.panZoom;x&&(x.setScaleExtent([t.minZoom,P]),t.maxZoom=P)}function v(P){const x=t.panZoom;x&&(x.setTranslateExtent(P),t.translateExtent=P)}function _(P,x=null){let N=!1;const p=P.map(E=>(x?x.has(E.id):!0)&&E.selected?(N=!0,{...E,selected:!1}):E);return[N,p]}function y(P){const x=P?.nodes?new Set(P.nodes.map(O=>O.id)):null,[N,p]=_(t.nodes,x);N&&(t.nodes=p);const E=P?.edges?new Set(P.edges.map(O=>O.id)):null,[S,D]=_(t.edges,E);S&&(t.edges=D)}function w(P){const x=t.multiselectionKeyPressed;t.nodes=t.nodes.map(N=>{const p=P.includes(N.id),E=x&&N.selected||p;return!!N.selected!==E?{...N,selected:E}:N}),x||y({nodes:[]})}function C(P){const x=t.multiselectionKeyPressed;t.edges=t.edges.map(N=>{const p=P.includes(N.id),E=x&&N.selected||p;return!!N.selected!==E?{...N,selected:E}:N}),x||y({edges:[]})}function k(P,x,N){const p=t.nodeLookup.get(P);if(!p){console.warn("012",Yn.error012(P));return}t.selectionRect=null,t.selectionRectMode=null,p.selected?(x||p.selected&&t.multiselectionKeyPressed)&&(y({nodes:[p],edges:[]}),requestAnimationFrame(()=>N?.blur())):w([P])}function b(P){const x=t.edgeLookup.get(P);if(!x){console.warn("012",Yn.error012(P));return}(x.selectable||t.elementsSelectable&&typeof x.selectable>"u")&&(t.selectionRect=null,t.selectionRectMode=null,x.selected?x.selected&&t.multiselectionKeyPressed&&y({nodes:[],edges:[x]}):C([P]))}function A(P,x){const{nodeExtent:N,snapGrid:p,nodeOrigin:E,nodeLookup:S,nodesDraggable:D,onerror:O}=t,I=new Map,q=p?.[0]??5,V=p?.[1]??5,W=P.x*q*x,Y=P.y*V*x;for(const B of S.values()){if(!(B.selected&&(B.draggable||D&&typeof B.draggable>"u")))continue;let Z={x:B.internals.positionAbsolute.x+W,y:B.internals.positionAbsolute.y+Y};p&&(Z=ir(Z,p));const{position:X,positionAbsolute:Q}=Xa({nodeId:B.id,nextPosition:Z,nodeLookup:S,nodeExtent:N,nodeOrigin:E,onError:O});B.position=X,B.internals.positionAbsolute=Q,I.set(B.id,B)}i(I)}function T(P){return _g({delta:P,panZoom:t.panZoom,transform:[t.viewport.x,t.viewport.y,t.viewport.zoom],translateExtent:t.translateExtent,width:t.width,height:t.height})}const z=P=>{t._connection={...P}};function M(){t._connection=zo}function H(){t.resetStoreValues(),y()}return Object.assign(t,{setNodeTypes:n,setEdgeTypes:r,addEdge:o,updateNodePositions:i,updateNodeInternals:s,zoomIn:d,zoomOut:h,fitView:a,setCenter:l,setMinZoom:f,setMaxZoom:g,setTranslateExtent:v,unselectNodesAndEdges:y,addSelectedNodes:w,addSelectedEdges:C,handleNodeSelection:k,handleEdgeSelection:b,moveSelectedNodes:A,panBy:T,updateConnection:z,cancelConnection:M,reset:H})}function vv(e,t){const{minZoom:n,maxZoom:r,initialViewport:o,onPanZoomStart:i,onPanZoom:s,onPanZoomEnd:a,translateExtent:l,setPanZoomInstance:c,onDraggingChange:d,onTransformChange:h}=t,f=qg({domNode:e,minZoom:n,maxZoom:r,translateExtent:l,viewport:o,onPanZoom:s,onPanZoomStart:i,onPanZoomEnd:a,onDraggingChange:d}),g=f.getViewport();return(o.x!==g.x||o.y!==g.y||o.zoom!==g.zoom)&&h([g.x,g.y,g.zoom]),c(f),f.update(t),{update(v){f.update(v)}}}var pv=ae('
');function mv(e,t){re(t,!0);let n=L(t,"store",15),r=m(()=>n().panActivationKeyPressed||t.panOnDrag),o=m(()=>n().panActivationKeyPressed||t.panOnScroll);const{viewport:i}=n();let s=!1;at(()=>{!s&&n().viewportInitialized&&(t.oninit?.(),s=!0)});var a=pv(),l=ee(a);Ye(l,()=>t.children),Ne(a,(c,d)=>vv?.(c,d),()=>({viewport:n().viewport,minZoom:n().minZoom,maxZoom:n().maxZoom,initialViewport:i,onDraggingChange:c=>{n(n().dragging=c,!0)},setPanZoomInstance:c=>{n(n().panZoom=c,!0)},onPanZoomStart:t.onmovestart,onPanZoom:t.onmove,onPanZoomEnd:t.onmoveend,zoomOnScroll:t.zoomOnScroll,zoomOnDoubleClick:t.zoomOnDoubleClick,zoomOnPinch:t.zoomOnPinch,panOnScroll:u(o),panOnDrag:u(r),panOnScrollSpeed:t.panOnScrollSpeed,panOnScrollMode:t.panOnScrollMode,zoomActivationKeyPressed:n().zoomActivationKeyPressed,preventScrolling:typeof t.preventScrolling=="boolean"?t.preventScrolling:!0,noPanClassName:n().noPanClass,noWheelClassName:n().noWheelClass,userSelectionActive:!!n().selectionRect,translateExtent:n().translateExtent,lib:"svelte",paneClickDistance:t.paneClickDistance,selectionOnDrag:t.selectionOnDrag,onTransformChange:c=>{n(n().viewport={x:c[0],y:c[1],zoom:c[2]},!0)},connectionInProgress:n().connection.inProgress})),F(e,a),oe()}function hs(e,t){return n=>{n.target===t&&e?.(n)}}function gs(e){return t=>{const n=e.has(t.id);return!!t.selected!==n?{...t,selected:n}:t}}function vs(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}var yv=ae("
");function _v(e,t){re(t,!0);let n=L(t,"store",15),r=L(t,"panOnDrag",3,!0),o=L(t,"paneClickDistance",3,1),i,s=null,a=new Set,l=new Set,c=m(()=>n().panActivationKeyPressed||r()),d=m(()=>n().selectionKeyPressed||!!n().selectionRect||t.selectionOnDrag&&u(c)!==!0),h=m(()=>n().elementsSelectable&&(u(d)||n().selectionRectMode==="user")),f=!1;function g(M){if(s=i?.getBoundingClientRect(),!s)return;const H=M.target===i,K=!H&&!!M.target.closest(".nokey"),P=t.selectionOnDrag&&H||n().selectionKeyPressed;if(K||!u(d)||!P||M.button!==0||!M.isPrimary)return;M.target?.setPointerCapture?.(M.pointerId),f=!1;const{x,y:N}=Qe(M,s);n(n().selectionRect={width:0,height:0,startX:x,startY:N,x,y:N},!0),H||(M.stopPropagation(),M.preventDefault())}function v(M){if(!u(d)||!s||!n().selectionRect)return;const H=Qe(M,s),{startX:K=0,startY:P=0}=n().selectionRect;if(!f){const S=n().selectionKeyPressed?0:o();if(Math.hypot(H.x-K,H.y-P)<=S)return;n().unselectNodesAndEdges(),t.onselectionstart?.(M)}f=!0;const x={...n().selectionRect,x:H.xS.id));const E=n().defaultEdgeOptions.selectable??!0;l=new Set;for(const S of a){const D=n().connectionLookup.get(S);if(D)for(const{edgeId:O}of D.values()){const I=n().edgeLookup.get(O);I&&(I.selectable??E)&&l.add(O)}}vs(N,a)||n(n().nodes=n().nodes.map(gs(a)),!0),vs(p,l)||n(n().edges=n().edges.map(gs(l)),!0),n(n().selectionRectMode="user",!0),n(n().selectionRect=x,!0)}function _(M){M.button===0&&(M.target?.releasePointerCapture?.(M.pointerId),!f&&M.target===i&&C?.(M),n(n().selectionRect=null,!0),f&&n(n().selectionRectMode=a.size>0?"nodes":null,!0),f&&t.onselectionend?.(M))}const y=M=>{if(Array.isArray(u(c))&&u(c).includes(2)){M.preventDefault();return}t.onpanecontextmenu?.({event:M})},w=M=>{f&&(M.stopPropagation(),f=!1)};function C(M){if(f||n().connection.inProgress){f=!1;return}t.onpaneclick?.({event:M}),n().unselectNodesAndEdges(),n(n().selectionRectMode=null,!0),n(n().selectionRect=null,!0)}var k=yv();let b;var A=m(()=>u(h)?void 0:hs(C,i));k.__click=function(...M){u(A)?.apply(this,M)},k.__pointermove=function(...M){(u(h)?v:void 0)?.apply(this,M)},k.__pointerup=function(...M){(u(h)?_:void 0)?.apply(this,M)};var T=m(()=>hs(y,i));k.__contextmenu=function(...M){u(T)?.apply(this,M)};var z=ee(k);Ye(z,()=>t.children),er(k,M=>i=M,()=>i),he(M=>b=ut(k,1,"svelte-flow__pane svelte-flow__container",null,b,M),[()=>({draggable:r()===!0||Array.isArray(r())&&r().includes(0),dragging:n().dragging,selection:u(d)})]),kr("pointerdown",k,function(...M){(u(h)?g:void 0)?.apply(this,M)},!0),kr("click",k,function(...M){(u(h)?w:void 0)?.apply(this,M)},!0),F(e,k),oe()}jo(["click","pointermove","pointerup","contextmenu"]);var wv=ae('
');function bv(e,t){re(t,!0);var n=wv();let r;var o=ee(n);Ye(o,()=>t.children),he(()=>r=Le(n,"",r,{transform:`translate(${t.store.viewport.x??""}px, ${t.store.viewport.y??""}px) scale(${t.store.viewport.zoom??""})`})),F(e,n),oe()}function yl(e,t){const{store:n,onDrag:r,onDragStart:o,onDragStop:i,onNodeMouseDown:s}=t,a=Eg({onDrag:r,onDragStart:o,onDragStop:i,onNodeMouseDown:s,getStoreItems:()=>{const{snapGrid:c,viewport:d}=n;return{nodes:n.nodes,nodeLookup:n.nodeLookup,edges:n.edges,nodeExtent:n.nodeExtent,snapGrid:c||[0,0],snapToGrid:!!c,nodeOrigin:n.nodeOrigin,multiSelectionActive:n.multiselectionKeyPressed,domNode:n.domNode,transform:[d.x,d.y,d.zoom],autoPanOnNodeDrag:n.autoPanOnNodeDrag,nodesDraggable:n.nodesDraggable,selectNodesOnDrag:n.selectNodesOnDrag,nodeDragThreshold:n.nodeDragThreshold,unselectNodesAndEdges:n.unselectNodesAndEdges,updateNodePositions:n.updateNodePositions,onSelectionDrag:n.onselectiondrag,onSelectionDragStart:n.onselectiondragstart,onSelectionDragStop:n.onselectiondragstop,panBy:n.panBy}}});function l(c,d){if(d.disabled){a.destroy();return}a.update({domNode:c,noDragClassName:d.noDragClass,handleSelector:d.handleSelector,nodeId:d.nodeId,isSelectable:d.isSelectable,nodeClickDistance:d.nodeClickDistance})}return l(e,t),{update(c){l(e,c)},destroy(){a.destroy()}}}var xv=ae('
'),Ev=ae('
',1);function Sv(e,t){re(t,!0);var n=Ev(),r=le(n),o=ee(r),i=$(r,2),s=ee(i),a=$(i,2);{var l=c=>{var d=xv(),h=ee(d);he(()=>{G(d,"id",`${kv}-${t.store.flowId}`),Re(h,t.store.ariaLiveMessage)}),F(c,d)};de(a,c=>{t.store.disableKeyboardA11y||c(l)})}he(()=>{G(r,"id",`${_l}-${t.store.flowId}`),Re(o,t.store.disableKeyboardA11y?t.store.ariaLabelConfig["node.a11yDescription.default"]:t.store.ariaLabelConfig["node.a11yDescription.keyboardDisabled"]),G(i,"id",`${wl}-${t.store.flowId}`),Re(s,t.store.ariaLabelConfig["edge.a11yDescription.default"])}),F(e,n),oe()}const _l="svelte-flow__node-desc",wl="svelte-flow__edge-desc",kv="svelte-flow__aria-live";var Cv=ae("
");function Nv(e,t){re(t,!0);let n=L(t,"store",15),r=m(()=>Ce(t.node.data,()=>({}),!0)),o=m(()=>Ce(t.node.selected,!1)),i=m(()=>t.node.draggable),s=m(()=>t.node.selectable),a=m(()=>Ce(t.node.deletable,!0)),l=m(()=>t.node.connectable),c=m(()=>t.node.focusable),d=m(()=>Ce(t.node.hidden,!1)),h=m(()=>Ce(t.node.dragging,!1)),f=m(()=>Ce(t.node.style,"")),g=m(()=>t.node.class),v=m(()=>Ce(t.node.type,"default")),_=m(()=>t.node.parentId),y=m(()=>t.node.sourcePosition),w=m(()=>t.node.targetPosition),C=m(()=>Ce(t.node.measured,()=>({width:0,height:0}),!0).width),k=m(()=>Ce(t.node.measured,()=>({width:0,height:0}),!0).height),b=m(()=>t.node.initialWidth),A=m(()=>t.node.initialHeight),T=m(()=>t.node.width),z=m(()=>t.node.height),M=m(()=>t.node.dragHandle),H=m(()=>Ce(t.node.internals.z,0)),K=m(()=>t.node.internals.positionAbsolute.x),P=m(()=>t.node.internals.positionAbsolute.y),x=m(()=>t.node.internals.userNode),{id:N}=t.node,p=m(()=>u(i)??n().nodesDraggable),E=m(()=>u(s)??n().elementsSelectable),S=m(()=>u(l)??n().nodesConnectable),D=m(()=>ja(t.node)),O=m(()=>!!t.node.internals.handleBounds),I=m(()=>u(D)&&u(O)),q=m(()=>u(c)??n().nodesFocusable);function V(ce){return n().parentLookup.has(ce)}let W=m(()=>V(N)),Y=se(null),B=null,U=u(v),Z=u(y),X=u(w),Q=m(()=>n().nodeTypes[u(v)]??gl),ue=m(()=>n().ariaLabelConfig),we={get value(){return u(S)}};Lg(N),Bg(we);let J=m(()=>{const ce=u(C)===void 0?u(T)??u(b):u(T),ye=u(k)===void 0?u(z)??u(A):u(z);if(!(ce===void 0&&ye===void 0&&u(f)===void 0))return`${u(f)};${ce?`width:${ct(ce)};`:""}${ye?`height:${ct(ye)};`:""}`});at(()=>{(u(v)!==U||u(y)!==Z||u(w)!==X)&&u(Y)!==null&&requestAnimationFrame(()=>{u(Y)!==null&&n().updateNodeInternals(new Map([[N,{id:N,nodeElement:u(Y),force:!0}]]))}),U=u(v),Z=u(y),X=u(w)}),at(()=>{t.resizeObserver&&(!u(I)||u(Y)!==B)&&(B&&t.resizeObserver.unobserve(B),u(Y)&&t.resizeObserver.observe(u(Y)),B=u(Y))}),ei(()=>{B&&t.resizeObserver?.unobserve(B)});function pe(ce){u(E)&&(!n().selectNodesOnDrag||!u(p)||n().nodeDragThreshold>0)&&n().handleNodeSelection(N),t.onnodeclick?.({node:u(x),event:ce})}function te(ce){if(!(el(ce)||n().disableKeyboardA11y))if(Wa.includes(ce.key)&&u(E)){const ye=ce.key==="Escape";n().handleNodeSelection(N,ye,u(Y))}else u(p)&&t.node.selected&&Object.prototype.hasOwnProperty.call(Hr,ce.key)&&(ce.preventDefault(),n(n().ariaLiveMessage=u(ue)["node.a11yDescription.ariaLiveMessage"]({direction:ce.key.replace("Arrow","").toLowerCase(),x:~~t.node.internals.positionAbsolute.x,y:~~t.node.internals.positionAbsolute.y}),!0),n().moveSelectedNodes(Hr[ce.key],ce.shiftKey?4:1))}const Me=()=>{if(n().disableKeyboardA11y||!n().autoPanOnNodeFocus||!u(Y)?.matches(":focus-visible"))return;const{width:ce,height:ye,viewport:Ze}=n();ci(new Map([[N,t.node]]),{x:0,y:0,width:ce,height:ye},[Ze.x,Ze.y,Ze.zoom],!0).length>0||n().setCenter(t.node.position.x+(t.node.measured.width??0)/2,t.node.position.y+(t.node.measured.height??0)/2,{zoom:Ze.zoom})};var Ct=Se(),Nt=le(Ct);{var ft=ce=>{var ye=Cv();Lt(ye,()=>({"data-id":N,class:["svelte-flow__node",`svelte-flow__node-${u(v)}`,u(g)],style:u(J),onclick:pe,onpointerenter:t.onnodepointerenter?ge=>t.onnodepointerenter({node:u(x),event:ge}):void 0,onpointerleave:t.onnodepointerleave?ge=>t.onnodepointerleave({node:u(x),event:ge}):void 0,onpointermove:t.onnodepointermove?ge=>t.onnodepointermove({node:u(x),event:ge}):void 0,oncontextmenu:t.onnodecontextmenu?ge=>t.onnodecontextmenu({node:u(x),event:ge}):void 0,onkeydown:u(q)?te:void 0,onfocus:u(q)?Me:void 0,tabIndex:u(q)?0:void 0,role:t.node.ariaRole??(u(q)?"group":void 0),"aria-roledescription":"node","aria-describedby":n().disableKeyboardA11y?void 0:`${_l}-${n().flowId}`,...t.node.domAttributes,[Mt]:{dragging:u(h),selected:u(o),draggable:u(p),connectable:u(S),selectable:u(E),nopan:u(p),parent:u(W)},[pt]:{"z-index":u(H),transform:`translate(${u(K)??""}px, ${u(P)??""}px)`,visibility:u(D)?"visible":"hidden"}}));var Ze=ee(ye);Zr(Ze,()=>u(Q),(ge,on)=>{on(ge,{get data(){return u(r)},get id(){return N},get selected(){return u(o)},get selectable(){return u(E)},get deletable(){return u(a)},get sourcePosition(){return u(y)},get targetPosition(){return u(w)},get zIndex(){return u(H)},get dragging(){return u(h)},get draggable(){return u(p)},get dragHandle(){return u(M)},get parentId(){return u(_)},get type(){return u(v)},get isConnectable(){return u(S)},get positionAbsoluteX(){return u(K)},get positionAbsoluteY(){return u(P)},get width(){return u(T)},get height(){return u(z)}})}),Ne(ye,(ge,on)=>yl?.(ge,on),()=>({nodeId:N,isSelectable:u(E),disabled:!u(p),handleSelector:u(M),noDragClass:n().noDragClass,nodeClickDistance:t.nodeClickDistance,onNodeMouseDown:n().handleNodeSelection,onDrag:(ge,on,Cn,Nn)=>{t.onnodedrag?.({event:ge,targetNode:Cn,nodes:Nn})},onDragStart:(ge,on,Cn,Nn)=>{t.onnodedragstart?.({event:ge,targetNode:Cn,nodes:Nn})},onDragStop:(ge,on,Cn,Nn)=>{t.onnodedragstop?.({event:ge,targetNode:Cn,nodes:Nn})},store:n()})),er(ye,ge=>R(Y,ge),()=>u(Y)),F(ce,ye)};de(Nt,ce=>{u(d)||ce(ft)})}F(e,Ct),oe()}var Pv=ae('
');function Mv(e,t){re(t,!0);let n=L(t,"store",15);const r=typeof ResizeObserver>"u"?null:new ResizeObserver(i=>{const s=new Map;i.forEach(a=>{const l=a.target.getAttribute("data-id");s.set(l,{id:l,nodeElement:a.target,force:!0})}),n().updateNodeInternals(s)});ei(()=>{r?.disconnect()});var o=Pv();Wr(o,21,()=>n().visible.nodes.values(),i=>i.id,(i,s)=>{Nv(i,{get node(){return u(s)},get resizeObserver(){return r},get nodeClickDistance(){return t.nodeClickDistance},get onnodeclick(){return t.onnodeclick},get onnodepointerenter(){return t.onnodepointerenter},get onnodepointermove(){return t.onnodepointermove},get onnodepointerleave(){return t.onnodepointerleave},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get onnodecontextmenu(){return t.onnodecontextmenu},get store(){return n()},set store(a){n(a)}})}),F(e,o),oe()}var Av=me('');function Tv(e,t){re(t,!0);let n=m(()=>t.edge.id),r=m(()=>t.edge.source),o=m(()=>t.edge.target),i=m(()=>t.edge.sourceX),s=m(()=>t.edge.sourceY),a=m(()=>t.edge.targetX),l=m(()=>t.edge.targetY),c=m(()=>t.edge.sourcePosition),d=m(()=>t.edge.targetPosition),h=m(()=>Ce(t.edge.animated,!1)),f=m(()=>Ce(t.edge.selected,!1)),g=m(()=>t.edge.label),v=m(()=>t.edge.labelStyle),_=m(()=>Ce(t.edge.data,()=>({}),!0)),y=m(()=>t.edge.style),w=m(()=>t.edge.interactionWidth),C=m(()=>Ce(t.edge.type,"default")),k=m(()=>t.edge.sourceHandle),b=m(()=>t.edge.targetHandle),A=m(()=>t.edge.markerStart),T=m(()=>t.edge.markerEnd),z=m(()=>t.edge.selectable),M=m(()=>t.edge.focusable),H=m(()=>Ce(t.edge.deletable,!0)),K=m(()=>t.edge.hidden),P=m(()=>t.edge.zIndex),x=m(()=>t.edge.class),N=m(()=>t.edge.ariaLabel);Kg(u(n));let p=null,E=m(()=>u(z)??t.store.elementsSelectable),S=m(()=>u(M)??t.store.edgesFocusable),D=m(()=>t.store.edgeTypes[u(C)]??vl),O=m(()=>u(A)?`url('#${Ro(u(A),t.store.flowId)}')`:void 0),I=m(()=>u(T)?`url('#${Ro(u(T),t.store.flowId)}')`:void 0);function q(Z){const X=t.store.edgeLookup.get(u(n));X&&(u(E)&&t.store.handleEdgeSelection(u(n)),t.onedgeclick?.({event:Z,edge:X}))}function V(Z,X){const Q=t.store.edgeLookup.get(u(n));Q&&X({event:Z,edge:Q})}function W(Z){if(!t.store.disableKeyboardA11y&&Wa.includes(Z.key)&&u(E)){const{unselectNodesAndEdges:X,addSelectedEdges:Q}=t.store;Z.key==="Escape"?(p?.blur(),X({edges:[t.edge]})):Q([u(n)])}}var Y=Se(),B=le(Y);{var U=Z=>{var X=Av();let Q;var ue=ee(X);Lt(ue,()=>({class:["svelte-flow__edge",u(x)],"data-id":u(n),onclick:q,oncontextmenu:t.onedgecontextmenu?J=>{V(J,t.onedgecontextmenu)}:void 0,onpointerenter:t.onedgepointerenter?J=>{V(J,t.onedgepointerenter)}:void 0,onpointerleave:t.onedgepointerleave?J=>{V(J,t.onedgepointerleave)}:void 0,"aria-label":u(N)===null?void 0:u(N)?u(N):`Edge from ${u(r)} to ${u(o)}`,"aria-describedby":u(S)?`${wl}-${t.store.flowId}`:void 0,role:t.edge.ariaRole??(u(S)?"group":"img"),"aria-roledescription":"edge",onkeydown:u(S)?W:void 0,tabindex:u(S)?0:void 0,...t.edge.domAttributes,[Mt]:{animated:u(h),selected:u(f),selectable:u(E)}}));var we=ee(ue);Zr(we,()=>u(D),(J,pe)=>{pe(J,{get id(){return u(n)},get source(){return u(r)},get target(){return u(o)},get sourceX(){return u(i)},get sourceY(){return u(s)},get targetX(){return u(a)},get targetY(){return u(l)},get sourcePosition(){return u(c)},get targetPosition(){return u(d)},get animated(){return u(h)},get selected(){return u(f)},get label(){return u(g)},get labelStyle(){return u(v)},get data(){return u(_)},get style(){return u(y)},get interactionWidth(){return u(w)},get selectable(){return u(E)},get deletable(){return u(H)},get type(){return u(C)},get sourceHandleId(){return u(k)},get targetHandleId(){return u(b)},get markerStart(){return u(O)},get markerEnd(){return u(I)}})}),er(ue,J=>p=J,()=>p),he(()=>Q=Le(X,"",Q,{"z-index":u(P)})),F(Z,X)};de(B,Z=>{u(K)||Z(U)})}F(e,Y),oe()}Jl();var Dv=me("");function Iv(e,t){re(t,!1);const n=Ft();Qc();var r=Dv();Wr(r,5,()=>n.markers,o=>o.id,(o,i)=>{qv(o,At(()=>u(i)))}),F(e,r),oe()}var zv=me(''),Ov=me(''),Rv=me('');function qv(e,t){re(t,!0);let n=L(t,"width",3,12.5),r=L(t,"height",3,12.5),o=L(t,"markerUnits",3,"strokeWidth"),i=L(t,"orient",3,"auto-start-reverse"),s=L(t,"color",3,"none");var a=Rv(),l=ee(a);{var c=h=>{var f=zv();let g;he(()=>{G(f,"stroke-width",t.strokeWidth),g=Le(f,"",g,{stroke:s()})}),F(h,f)},d=h=>{var f=Se(),g=le(f);{var v=_=>{var y=Ov();let w;he(()=>{G(y,"stroke-width",t.strokeWidth),w=Le(y,"",w,{stroke:s(),fill:s()})}),F(_,y)};de(g,_=>{t.type===zr.ArrowClosed&&_(v)},!0)}F(h,f)};de(l,h=>{t.type===zr.Arrow?h(c):h(d,!1)})}he(()=>{G(a,"id",t.id),G(a,"markerWidth",`${n()}`),G(a,"markerHeight",`${r()}`),G(a,"markerUnits",o()),G(a,"orient",i())}),F(e,a),oe()}var Hv=ae('
');function Lv(e,t){re(t,!0);let n=L(t,"store",15);var r=Hv(),o=ee(r),i=ee(o);Iv(i,{});var s=$(o,2);Wr(s,17,()=>n().visible.edges.values(),a=>a.id,(a,l)=>{Tv(a,{get edge(){return u(l)},get onedgeclick(){return t.onedgeclick},get onedgecontextmenu(){return t.onedgecontextmenu},get onedgepointerenter(){return t.onedgepointerenter},get onedgepointerleave(){return t.onedgepointerleave},get store(){return n()},set store(c){n(c)}})}),F(e,r),oe()}var Vv=ae('
');function bl(e,t){re(t,!0);let n=L(t,"x",3,0),r=L(t,"y",3,0),o=L(t,"width",3,0),i=L(t,"height",3,0),s=L(t,"isVisible",3,!0);var a=Se(),l=le(a);{var c=d=>{var h=Vv();let f;he(g=>f=Le(h,"",f,g),[()=>({width:typeof o()=="string"?o():ct(o()),height:typeof i()=="string"?i():ct(i()),transform:`translate(${n()}px, ${r()}px)`})]),F(d,h)};de(l,d=>{s()&&d(c)})}F(e,a),oe()}var Bv=ae("
");function Fv(e,t){re(t,!0);let n=se(void 0);at(()=>{t.store.disableKeyboardA11y||u(n)?.focus({preventScroll:!0})});let r=m(()=>{if(t.store.selectionRectMode==="nodes"){t.store.nodes;const d=or(t.store.nodeLookup,{filter:h=>!!h.selected});if(d.width>0&&d.height>0)return d}return null});function o(d){const h=t.store.nodes.filter(f=>f.selected);t.onselectioncontextmenu?.({nodes:h,event:d})}function i(d){const h=t.store.nodes.filter(f=>f.selected);t.onselectionclick?.({nodes:h,event:d})}function s(d){Object.prototype.hasOwnProperty.call(Hr,d.key)&&(d.preventDefault(),t.store.moveSelectedNodes(Hr[d.key],d.shiftKey?4:1))}var a=Se(),l=le(a);{var c=d=>{var h=Bv();h.__contextmenu=o,h.__click=i,h.__keydown=function(...v){(t.store.disableKeyboardA11y?void 0:s)?.apply(this,v)};let f;var g=ee(h);bl(g,{width:"100%",height:"100%",x:0,y:0}),Ne(h,(v,_)=>yl?.(v,_),()=>({disabled:!1,store:t.store,onDrag:(v,_,y,w)=>{t.onnodedrag?.({event:v,targetNode:null,nodes:w})},onDragStart:(v,_,y,w)=>{t.onnodedragstart?.({event:v,targetNode:null,nodes:w})},onDragStop:(v,_,y,w)=>{t.onnodedragstop?.({event:v,targetNode:null,nodes:w})}})),er(h,v=>R(n,v),()=>u(n)),he(v=>{ut(h,1,Ht(["svelte-flow__selection-wrapper",t.store.noPanClass]),"svelte-sf2y5e"),G(h,"role",t.store.disableKeyboardA11y?void 0:"button"),G(h,"tabindex",t.store.disableKeyboardA11y?void 0:-1),f=Le(h,"",f,v)},[()=>({width:ct(u(r).width),height:ct(u(r).height),transform:`translate(${u(r).x??""}px, ${u(r).y??""}px)`})]),F(d,h)};de(l,d=>{t.store.selectionRectMode==="nodes"&&u(r)&&_t(u(r).x)&&_t(u(r).y)&&d(c)})}F(e,a),oe()}jo(["contextmenu","click","keydown"]);function Kv(e){switch(e){case"ctrl":return 8;case"shift":return 4;case"alt":return 2;case"meta":return 1}}function $e(e,t){let{enabled:n=!0,trigger:r,type:o="keydown"}=t;function i(a){const l=Array.isArray(r)?r:[r],c=[a.metaKey,a.altKey,a.shiftKey,a.ctrlKey].reduce((d,h,f)=>h?d|1<0){const C=Array.isArray(f)?f:[f];let k=!1;for(const b of C)if((Array.isArray(b)?b:[b]).reduce((T,z)=>T|Kv(z),0)===c){k=!0;break}if(!k)continue}_&&a.preventDefault();const w={node:e,trigger:h,originalEvent:a};e.dispatchEvent(new CustomEvent("shortcut",{detail:w})),v?.(w)}}}let s;return n&&(s=xo(e,o,i)),{update:a=>{const{enabled:l=!0,type:c="keydown"}=a;n&&(!l||o!==c)?s?.():!n&&l&&(s=xo(e,c,i)),n=l,o=c,r=a.trigger},destroy:()=>{s?.()}}}function Yv(){const e=m(Ft),t=i=>{const s=ds(i)?i:u(e).nodeLookup.get(i.id),a=s.parentId?Qh(s.position,s.measured,s.parentId,u(e).nodeLookup,u(e).nodeOrigin):s.position,l={...s,position:a,width:s.measured?.width??s.width,height:s.measured?.height??s.height};return xn(l)};function n(i,s,a={replace:!1}){u(e).nodes=qe(()=>u(e).nodes).map(l=>{if(l.id===i){const c=typeof s=="function"?s(l):s;return a?.replace&&ds(c)?c:{...l,...c}}return l})}function r(i,s,a={replace:!1}){u(e).edges=qe(()=>u(e).edges).map(l=>{if(l.id===i){const c=typeof s=="function"?s(l):s;return a.replace&&$g(c)?c:{...l,...c}}return l})}const o=i=>u(e).nodeLookup.get(i);return{zoomIn:u(e).zoomIn,zoomOut:u(e).zoomOut,getInternalNode:o,getNode:i=>o(i)?.internals.userNode,getNodes:i=>i===void 0?u(e).nodes:ps(u(e).nodeLookup,i),getEdge:i=>u(e).edgeLookup.get(i),getEdges:i=>i===void 0?u(e).edges:ps(u(e).edgeLookup,i),setZoom:(i,s)=>{const a=u(e).panZoom;return a?a.scaleTo(i,{duration:s?.duration}):Promise.resolve(!1)},getZoom:()=>u(e).viewport.zoom,setViewport:async(i,s)=>{const a=u(e).viewport;return u(e).panZoom?(await u(e).panZoom.setViewport({x:i.x??a.x,y:i.y??a.y,zoom:i.zoom??a.zoom},s),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>Ms(u(e).viewport),setCenter:async(i,s,a)=>u(e).setCenter(i,s,a),fitView:i=>u(e).fitView(i),fitBounds:async(i,s)=>{if(!u(e).panZoom)return Promise.resolve(!1);const a=ui(i,u(e).width,u(e).height,u(e).minZoom,u(e).maxZoom,s?.padding??.1);return await u(e).panZoom.setViewport(a,{duration:s?.duration,ease:s?.ease,interpolate:s?.interpolate}),Promise.resolve(!0)},getIntersectingNodes:(i,s=!0,a)=>{const l=$i(i),c=l?i:t(i);return c?(a||u(e).nodes).filter(d=>{const h=u(e).nodeLookup.get(d.id);if(!h||!l&&d.id===i.id)return!1;const f=xn(h),g=Wn(f,c);return s&&g>0||g>=f.width*f.height||g>=c.width*c.height}):[]},isNodeIntersecting:(i,s,a=!0)=>{const c=$i(i)?i:t(i);if(!c)return!1;const d=Wn(c,s);return a&&d>0||d>=s.width*s.height||d>=c.width*c.height},deleteElements:async({nodes:i=[],edges:s=[]})=>{const{nodes:a,edges:l}=await Zh({nodesToRemove:i,edgesToRemove:s,nodes:u(e).nodes,edges:u(e).edges,onBeforeDelete:u(e).onbeforedelete});return a&&(u(e).nodes=qe(()=>u(e).nodes).filter(c=>!a.some(({id:d})=>d===c.id))),l&&(u(e).edges=qe(()=>u(e).edges).filter(c=>!l.some(({id:d})=>d===c.id))),(a.length>0||l.length>0)&&u(e).ondelete?.({nodes:a,edges:l}),{deletedNodes:a,deletedEdges:l}},screenToFlowPosition:(i,s={snapToGrid:!0})=>{if(!u(e).domNode)return i;const a=s.snapToGrid?u(e).snapGrid:!1,{x:l,y:c,zoom:d}=u(e).viewport,{x:h,y:f}=u(e).domNode.getBoundingClientRect(),g={x:i.x-h,y:i.y-f};return sr(g,[l,c,d],a!==null,a||[1,1])},flowToScreenPosition:i=>{if(!u(e).domNode)return i;const{x:s,y:a,zoom:l}=u(e).viewport,{x:c,y:d}=u(e).domNode.getBoundingClientRect(),h=Rr(i,[s,a,l]);return{x:h.x+c,y:h.y+d}},toObject:()=>structuredClone({nodes:[...u(e).nodes],edges:[...u(e).edges],viewport:{...u(e).viewport}}),updateNode:n,updateNodeData:(i,s,a)=>{const l=u(e).nodeLookup.get(i)?.internals.userNode;if(!l)return;const c=typeof s=="function"?s(l):s;n(i,d=>({...d,data:a?.replace?c:{...d.data,...c}}))},updateEdge:r,getNodesBounds:i=>Fh(i,{nodeLookup:u(e).nodeLookup,nodeOrigin:u(e).nodeOrigin}),getHandleConnections:({type:i,id:s,nodeId:a})=>Array.from(u(e).connectionLookup.get(`${a}-${i}-${s??null}`)?.values()??[])}}function ps(e,t){const n=[];for(const r of t){const o=e.get(r);if(o){const i="internals"in o?o.internals?.userNode:o;n.push(i)}}return n}function Wv(e,t){re(t,!0);let n=L(t,"store",15),r=L(t,"selectionKey",3,"Shift"),o=L(t,"multiSelectionKey",19,()=>Zn()?"Meta":"Control"),i=L(t,"deleteKey",3,"Backspace"),s=L(t,"panActivationKey",3," "),a=L(t,"zoomActivationKey",19,()=>Zn()?"Meta":"Control"),{deleteElements:l}=Yv();function c(_){return _!==null&&typeof _=="object"}function d(_){return c(_)?_.modifier||[]:[]}function h(_){return _==null?"":c(_)?_.key:_}function f(_,y){return(Array.isArray(_)?_:[_]).map(C=>{const k=h(C);return{key:k,modifier:d(C),enabled:k!==null,callback:y}})}function g(){n(n().selectionRect=null,!0),n(n().selectionKeyPressed=!1,!0),n(n().multiselectionKeyPressed=!1,!0),n(n().deleteKeyPressed=!1,!0),n(n().panActivationKeyPressed=!1,!0),n(n().zoomActivationKeyPressed=!1,!0)}function v(){const _=n().nodes.filter(w=>w.selected),y=n().edges.filter(w=>w.selected);l({nodes:_,edges:y})}kr("blur",Ae,g),kr("contextmenu",Ae,g),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!0,!0)),type:"keydown"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!1,!0)),type:"keyup"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(o(),()=>{n(n().multiselectionKeyPressed=!0,!0)}),type:"keydown"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(o(),()=>n(n().multiselectionKeyPressed=!1,!0)),type:"keyup"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(i(),_=>{!(_.originalEvent.ctrlKey||_.originalEvent.metaKey||_.originalEvent.shiftKey)&&!el(_.originalEvent)&&(n(n().deleteKeyPressed=!0,!0),v())}),type:"keydown"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(i(),()=>n(n().deleteKeyPressed=!1,!0)),type:"keyup"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(s(),()=>n(n().panActivationKeyPressed=!0,!0)),type:"keydown"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(s(),()=>n(n().panActivationKeyPressed=!1,!0)),type:"keyup"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(a(),()=>n(n().zoomActivationKeyPressed=!0,!0)),type:"keydown"})),Ne(Ae,(_,y)=>$e?.(_,y),()=>({trigger:f(a(),()=>n(n().zoomActivationKeyPressed=!1,!0)),type:"keyup"})),oe()}var Zv=me(''),Xv=me('');function Gv(e,t){re(t,!0);let n=m(()=>{if(!t.store.connection.inProgress)return"";const s={sourceX:t.store.connection.from.x,sourceY:t.store.connection.from.y,sourcePosition:t.store.connection.fromPosition,targetX:t.store.connection.to.x,targetY:t.store.connection.to.y,targetPosition:t.store.connection.toPosition};switch(t.type){case Tt.Bezier:{const[a]=nl(s);return a}case Tt.Straight:{const[a]=ol(s);return a}case Tt.Step:case Tt.SmoothStep:{const[a]=di({...s,borderRadius:t.type===Tt.Step?0:void 0});return a}}});var r=Se(),o=le(r);{var i=s=>{var a=Xv(),l=ee(a),c=ee(l);{var d=f=>{var g=Se(),v=le(g);Zr(v,()=>t.LineComponent,(_,y)=>{y(_,{})}),F(f,g)},h=f=>{var g=Zv();he(()=>{G(g,"d",u(n)),Le(g,t.style)}),F(f,g)};de(c,f=>{t.LineComponent?f(d):f(h,!1)})}he(f=>{G(a,"width",t.store.width),G(a,"height",t.store.height),Le(a,t.containerStyle),ut(l,0,f)},[()=>Ht(["svelte-flow__connection",Vh(t.store.connection.isValid)])]),F(s,a)};de(o,s=>{t.store.connection.inProgress&&s(i)})}F(e,r),oe()}var Uv=ae("
");function mi(e,t){re(t,!0);let n=L(t,"position",3,"top-right"),r=Vt(t,["$$slots","$$events","$$legacy","position","style","class","children"]),o=m(()=>`${n()}`.split("-"));var i=Uv();Lt(i,a=>({class:a,style:t.style,...r}),[()=>["svelte-flow__panel",t.class,...u(o)]]);var s=ee(i);Ye(s,()=>t.children??Sn),F(e,i),oe()}var Qv=ae('Svelte Flow');function jv(e,t){re(t,!0);let n=L(t,"position",3,"bottom-right");var r=Se(),o=le(r);{var i=s=>{mi(s,{get position(){return n()},class:"svelte-flow__attribution","data-message":"Feel free to remove the attribution or check out how you could support us: https://svelteflow.dev/support-us",children:(a,l)=>{var c=Qv();F(a,c)},$$slots:{default:!0}})};de(o,s=>{t.proOptions?.hideAttribution||s(i)})}F(e,r),oe()}var Jv=ae("
");function $v(e,t){re(t,!0);let n=L(t,"domNode",15),r=L(t,"clientWidth",15),o=L(t,"clientHeight",15),i=m(()=>t.rest.class),s=m(()=>kc(t.rest,["id","class","nodeTypes","edgeTypes","colorMode","isValidConnection","onmove","onmovestart","onmoveend","onflowerror","ondelete","onbeforedelete","onbeforeconnect","onconnect","onconnectstart","onconnectend","onbeforereconnect","onreconnect","onreconnectstart","onreconnectend","onclickconnectstart","onclickconnectend","oninit","onselectionchange","onselectiondragstart","onselectiondrag","onselectiondragstop","onselectionstart","onselectionend","clickConnect","fitView","fitViewOptions","nodeOrigin","nodeDragThreshold","connectionDragThreshold","minZoom","maxZoom","initialViewport","connectionRadius","connectionMode","selectionMode","selectNodesOnDrag","snapGrid","defaultMarkerColor","translateExtent","nodeExtent","onlyRenderVisibleElements","autoPanOnConnect","autoPanOnNodeDrag","colorModeSSR","defaultEdgeOptions","elevateNodesOnSelect","elevateEdgesOnSelect","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","elementsSelectable","nodesFocusable","edgesFocusable","disableKeyboardA11y","noDragClass","noPanClass","noWheelClass","ariaLabelConfig","autoPanSpeed","panOnScrollSpeed","zIndexMode"]));function a(d){d.currentTarget.scrollTo({top:0,left:0,behavior:"auto"}),t.rest.onscroll&&t.rest.onscroll(d)}var l=Jv();Lt(l,d=>({class:["svelte-flow","svelte-flow__container",u(i),t.colorMode],"data-testid":"svelte-flow__wrapper",role:"application",onscroll:a,...u(s),[pt]:d}),[()=>({width:ct(t.width),height:ct(t.height)})],void 0,void 0,"svelte-mkap6j");var c=ee(l);Ye(c,()=>t.children??Sn),er(l,d=>n(d),()=>n()),Ai(l,"clientHeight",o),Ai(l,"clientWidth",r),F(e,l),oe()}var e0=ae('
',1),t0=ae(" ",1),n0=ae(" ",1);function r0(e,t){re(t,!0);let n=L(t,"paneClickDistance",3,1),r=L(t,"nodeClickDistance",3,1),o=L(t,"panOnScrollMode",19,()=>hn.Free),i=L(t,"preventScrolling",3,!0),s=L(t,"zoomOnScroll",3,!0),a=L(t,"zoomOnDoubleClick",3,!0),l=L(t,"zoomOnPinch",3,!0),c=L(t,"panOnScroll",3,!1),d=L(t,"panOnScrollSpeed",3,.5),h=L(t,"panOnDrag",3,!0),f=L(t,"selectionOnDrag",3,!1),g=L(t,"connectionLineType",19,()=>Tt.Bezier),v=L(t,"nodes",31,()=>nt([])),_=L(t,"edges",31,()=>nt([])),y=L(t,"viewport",15,void 0),w=Vt(t,["$$slots","$$events","$$legacy","width","height","proOptions","selectionKey","deleteKey","panActivationKey","multiSelectionKey","zoomActivationKey","paneClickDistance","nodeClickDistance","onmovestart","onmoveend","onmove","oninit","onnodeclick","onnodecontextmenu","onnodedrag","onnodedragstart","onnodedragstop","onnodepointerenter","onnodepointermove","onnodepointerleave","onselectionclick","onselectioncontextmenu","onselectionstart","onselectionend","onedgeclick","onedgecontextmenu","onedgepointerenter","onedgepointerleave","onpaneclick","onpanecontextmenu","panOnScrollMode","preventScrolling","zoomOnScroll","zoomOnDoubleClick","zoomOnPinch","panOnScroll","panOnScrollSpeed","panOnDrag","selectionOnDrag","connectionLineComponent","connectionLineStyle","connectionLineContainerStyle","connectionLineType","attributionPosition","children","nodes","edges","viewport"]),C=gv({props:w,width:t.width,height:t.height,get nodes(){return v()},set nodes(b){v(b)},get edges(){return _()},set edges(b){_(b)},get viewport(){return y()},set viewport(b){y(b)}});const k=Fo(qo);k&&k.setStore&&k.setStore(C),As(qo,{provider:!1,getStore(){return C}}),at(()=>{const b={nodes:C.selectedNodes,edges:C.selectedEdges};qe(()=>t.onselectionchange)?.(b);for(const A of C.selectionChangeHandlers.values())A(b)}),ei(()=>{C.reset()}),$v(e,{get colorMode(){return C.colorMode},get width(){return t.width},get height(){return t.height},get rest(){return w},get domNode(){return C.domNode},set domNode(b){C.domNode=b},get clientWidth(){return C.width},set clientWidth(b){C.width=b},get clientHeight(){return C.height},set clientHeight(b){C.height=b},children:(b,A)=>{var T=n0(),z=le(T);Wv(z,{get selectionKey(){return t.selectionKey},get deleteKey(){return t.deleteKey},get panActivationKey(){return t.panActivationKey},get multiSelectionKey(){return t.multiSelectionKey},get zoomActivationKey(){return t.zoomActivationKey},get store(){return C},set store(x){C=x}});var M=$(z,2);mv(M,{get panOnScrollMode(){return o()},get preventScrolling(){return i()},get zoomOnScroll(){return s()},get zoomOnDoubleClick(){return a()},get zoomOnPinch(){return l()},get panOnScroll(){return c()},get panOnScrollSpeed(){return d()},get panOnDrag(){return h()},get paneClickDistance(){return n()},get selectionOnDrag(){return f()},get onmovestart(){return t.onmovestart},get onmove(){return t.onmove},get onmoveend(){return t.onmoveend},get oninit(){return t.oninit},get store(){return C},set store(x){C=x},children:(x,N)=>{_v(x,{get onpaneclick(){return t.onpaneclick},get onpanecontextmenu(){return t.onpanecontextmenu},get onselectionstart(){return t.onselectionstart},get onselectionend(){return t.onselectionend},get panOnDrag(){return h()},get paneClickDistance(){return n()},get selectionOnDrag(){return f()},get store(){return C},set store(p){C=p},children:(p,E)=>{var S=t0(),D=le(S);bv(D,{get store(){return C},set store(I){C=I},children:(I,q)=>{var V=e0(),W=$(le(V),2);Lv(W,{get onedgeclick(){return t.onedgeclick},get onedgecontextmenu(){return t.onedgecontextmenu},get onedgepointerenter(){return t.onedgepointerenter},get onedgepointerleave(){return t.onedgepointerleave},get store(){return C},set store(Z){C=Z}});var Y=$(W,4);Gv(Y,{get type(){return g()},get LineComponent(){return t.connectionLineComponent},get containerStyle(){return t.connectionLineContainerStyle},get style(){return t.connectionLineStyle},get store(){return C},set store(Z){C=Z}});var B=$(Y,2);Mv(B,{get nodeClickDistance(){return r()},get onnodeclick(){return t.onnodeclick},get onnodecontextmenu(){return t.onnodecontextmenu},get onnodepointerenter(){return t.onnodepointerenter},get onnodepointermove(){return t.onnodepointermove},get onnodepointerleave(){return t.onnodepointerleave},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get store(){return C},set store(Z){C=Z}});var U=$(B,2);Fv(U,{get onselectionclick(){return t.onselectionclick},get onselectioncontextmenu(){return t.onselectioncontextmenu},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get store(){return C},set store(Z){C=Z}}),F(I,V)},$$slots:{default:!0}});var O=$(D,2);{let I=m(()=>!!(C.selectionRect&&C.selectionRectMode==="user")),q=m(()=>C.selectionRect?.width),V=m(()=>C.selectionRect?.height),W=m(()=>C.selectionRect?.x),Y=m(()=>C.selectionRect?.y);bl(O,{get isVisible(){return u(I)},get width(){return u(q)},get height(){return u(V)},get x(){return u(W)},get y(){return u(Y)}})}F(p,S)},$$slots:{default:!0}})},$$slots:{default:!0}});var H=$(M,2);jv(H,{get proOptions(){return t.proOptions},get position(){return t.attributionPosition}});var K=$(H,2);Sv(K,{get store(){return C}});var P=$(K,2);Ye(P,()=>t.children??Sn),F(b,T)},$$slots:{default:!0}}),oe()}var o0=ae("");function vr(e,t){let n=Vt(t,["$$slots","$$events","$$legacy","class","bgColor","bgColorHover","color","colorHover","borderColor","onclick","children"]);var r=o0();Lt(r,()=>({type:"button",onclick:t.onclick,class:["svelte-flow__controls-button",t.class],...n,[pt]:{"--xy-controls-button-background-color-props":t.bgColor,"--xy-controls-button-background-color-hover-props":t.bgColorHover,"--xy-controls-button-color-props":t.color,"--xy-controls-button-color-hover-props":t.colorHover,"--xy-controls-button-border-color-props":t.borderColor}}));var o=ee(r);Ye(o,()=>t.children??Sn),F(e,r)}var i0=me('');function s0(e){var t=i0();F(e,t)}var a0=me('');function l0(e){var t=a0();F(e,t)}var c0=me('');function u0(e){var t=c0();F(e,t)}var d0=me('');function f0(e){var t=d0();F(e,t)}var h0=me('');function g0(e){var t=h0();F(e,t)}var v0=ae(" ",1),p0=ae(" ",1);function m0(e,t){re(t,!0);let n=L(t,"position",3,"bottom-left"),r=L(t,"orientation",3,"vertical"),o=L(t,"showZoom",3,!0),i=L(t,"showFitView",3,!0),s=L(t,"showLock",3,!0),a=Vt(t,["$$slots","$$events","$$legacy","position","orientation","showZoom","showFitView","showLock","style","class","buttonBgColor","buttonBgColorHover","buttonColor","buttonColorHover","buttonBorderColor","fitViewOptions","children","before","after"]),l=m(Ft);const c={bgColor:t.buttonBgColor,bgColorHover:t.buttonBgColorHover,color:t.buttonColor,colorHover:t.buttonColorHover,borderColor:t.buttonBorderColor};let d=m(()=>u(l).nodesDraggable||u(l).nodesConnectable||u(l).elementsSelectable),h=m(()=>u(l).viewport.zoom<=u(l).minZoom),f=m(()=>u(l).viewport.zoom>=u(l).maxZoom),g=m(()=>u(l).ariaLabelConfig),v=m(()=>r()==="horizontal"?"horizontal":"vertical");const _=()=>{u(l).zoomIn()},y=()=>{u(l).zoomOut()},w=()=>{u(l).fitView(t.fitViewOptions)},C=()=>{let k=!u(d);u(l).nodesDraggable=k,u(l).nodesConnectable=k,u(l).elementsSelectable=k};{let k=m(()=>["svelte-flow__controls",u(v),t.class]);mi(e,At({get class(){return u(k)},get position(){return n()},"data-testid":"svelte-flow__controls",get"aria-label"(){return u(g)["controls.ariaLabel"]},get style(){return t.style}},()=>a,{children:(b,A)=>{var T=p0(),z=le(T);{var M=I=>{var q=Se(),V=le(q);Ye(V,()=>t.before),F(I,q)};de(z,I=>{t.before&&I(M)})}var H=$(z,2);{var K=I=>{var q=v0(),V=le(q);vr(V,At({onclick:_,class:"svelte-flow__controls-zoomin",get title(){return u(g)["controls.zoomIn.ariaLabel"]},get"aria-label"(){return u(g)["controls.zoomIn.ariaLabel"]},get disabled(){return u(f)}},()=>c,{children:(Y,B)=>{s0(Y)},$$slots:{default:!0}}));var W=$(V,2);vr(W,At({onclick:y,class:"svelte-flow__controls-zoomout",get title(){return u(g)["controls.zoomOut.ariaLabel"]},get"aria-label"(){return u(g)["controls.zoomOut.ariaLabel"]},get disabled(){return u(h)}},()=>c,{children:(Y,B)=>{l0(Y)},$$slots:{default:!0}})),F(I,q)};de(H,I=>{o()&&I(K)})}var P=$(H,2);{var x=I=>{vr(I,At({class:"svelte-flow__controls-fitview",onclick:w,get title(){return u(g)["controls.fitView.ariaLabel"]},get"aria-label"(){return u(g)["controls.fitView.ariaLabel"]}},()=>c,{children:(q,V)=>{u0(q)},$$slots:{default:!0}}))};de(P,I=>{i()&&I(x)})}var N=$(P,2);{var p=I=>{vr(I,At({class:"svelte-flow__controls-interactive",onclick:C,get title(){return u(g)["controls.interactive.ariaLabel"]},get"aria-label"(){return u(g)["controls.interactive.ariaLabel"]}},()=>c,{children:(q,V)=>{var W=Se(),Y=le(W);{var B=Z=>{g0(Z)},U=Z=>{f0(Z)};de(Y,Z=>{u(d)?Z(B):Z(U,!1)})}F(q,W)},$$slots:{default:!0}}))};de(N,I=>{s()&&I(p)})}var E=$(N,2);{var S=I=>{var q=Se(),V=le(q);Ye(V,()=>t.children),F(I,q)};de(E,I=>{t.children&&I(S)})}var D=$(E,2);{var O=I=>{var q=Se(),V=le(q);Ye(V,()=>t.after),F(I,q)};de(D,I=>{t.after&&I(O)})}F(b,T)},$$slots:{default:!0}}))}oe()}var Ot;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(Ot||(Ot={}));var y0=me("");function _0(e,t){var n=y0();he(()=>{G(n,"cx",t.radius),G(n,"cy",t.radius),G(n,"r",t.radius),ut(n,0,Ht(["svelte-flow__background-pattern","dots",t.class]))}),F(e,n)}var w0=me("");function b0(e,t){re(t,!0);var n=w0();he(()=>{G(n,"stroke-width",t.lineWidth),G(n,"d",`M${t.dimensions[0]/2} 0 V${t.dimensions[1]} M0 ${t.dimensions[1]/2} H${t.dimensions[0]}`),ut(n,0,Ht(["svelte-flow__background-pattern",t.variant,t.class]))}),F(e,n),oe()}const x0={[Ot.Dots]:1,[Ot.Lines]:1,[Ot.Cross]:6};var E0=me('');function S0(e,t){re(t,!0);let n=L(t,"variant",19,()=>Ot.Dots),r=L(t,"gap",3,20),o=L(t,"lineWidth",3,1),i=m(Ft),s=m(()=>n()===Ot.Dots),a=m(()=>n()===Ot.Cross),l=m(()=>Array.isArray(r())?r():[r(),r()]),c=m(()=>`background-pattern-${u(i).flowId}-${t.id??""}`),d=m(()=>[u(l)[0]*u(i).viewport.zoom||1,u(l)[1]*u(i).viewport.zoom||1]),h=m(()=>(t.size??x0[n()])*u(i).viewport.zoom),f=m(()=>u(a)?[u(h),u(h)]:u(d)),g=m(()=>u(s)?[u(h)/2,u(h)/2]:[u(f)[0]/2,u(f)[1]/2]);var v=E0();let _;var y=ee(v),w=ee(y);{var C=A=>{{let T=m(()=>u(h)/2);_0(A,{get radius(){return u(T)},get class(){return t.patternClass}})}},k=A=>{b0(A,{get dimensions(){return u(f)},get variant(){return n()},get lineWidth(){return o()},get class(){return t.patternClass}})};de(w,A=>{u(s)?A(C):A(k,!1)})}var b=$(y);he(()=>{ut(v,0,Ht(["svelte-flow__background","svelte-flow__container",t.class])),_=Le(v,"",_,{"--xy-background-color-props":t.bgColor,"--xy-background-pattern-color-props":t.patternColor}),G(y,"id",u(c)),G(y,"x",u(i).viewport.x%u(d)[0]),G(y,"y",u(i).viewport.y%u(d)[1]),G(y,"width",u(d)[0]),G(y,"height",u(d)[1]),G(y,"patternTransform",`translate(-${u(g)[0]},-${u(g)[1]})`),G(b,"fill",`url(#${u(c)})`)}),F(e,v),oe()}var k0=me("");function C0(e,t){let n=L(t,"borderRadius",3,5),r=L(t,"strokeWidth",3,2);var o=Se(),i=le(o);{var s=l=>{const c=m(()=>t.nodeComponent);var d=Se(),h=le(d);Zr(h,()=>u(c),(f,g)=>{g(f,{get id(){return t.id},get x(){return t.x},get y(){return t.y},get width(){return t.width},get height(){return t.height},get borderRadius(){return n()},get class(){return t.class},get color(){return t.color},get shapeRendering(){return t.shapeRendering},get strokeColor(){return t.strokeColor},get strokeWidth(){return r()},get selected(){return t.selected}})}),F(l,d)},a=l=>{var c=k0();let d,h;he(()=>{d=ut(c,0,Ht(["svelte-flow__minimap-node",t.class]),null,d,{selected:t.selected}),G(c,"x",t.x),G(c,"y",t.y),G(c,"rx",n()),G(c,"ry",n()),G(c,"width",t.width),G(c,"height",t.height),G(c,"shape-rendering",t.shapeRendering),h=Le(c,"",h,{fill:t.color,stroke:t.strokeColor,"stroke-width":r()})}),F(l,c)};de(i,l=>{t.nodeComponent?l(s):l(a,!1)})}F(e,o)}function N0(e,t){const n=Mg({domNode:e,panZoom:t.panZoom,getTransform:()=>{const{viewport:o}=t.store;return[o.x,o.y,o.zoom]},getViewScale:t.getViewScale});n.update({translateExtent:t.translateExtent,width:t.width,height:t.height,inversePan:t.inversePan,zoomStep:t.zoomStep,pannable:t.pannable,zoomable:t.zoomable});function r(o){n.update({translateExtent:o.translateExtent,width:o.width,height:o.height,inversePan:o.inversePan,zoomStep:o.zoomStep,pannable:o.pannable,zoomable:o.zoomable})}return{update:r,destroy(){n.destroy()}}}const go=e=>e instanceof Function?e:()=>e;var P0=me(" "),M0=me(''),A0=ae('',1);function T0(e,t){re(t,!0);let n=L(t,"position",3,"bottom-right"),r=L(t,"nodeStrokeColor",3,"transparent"),o=L(t,"nodeClass",3,""),i=L(t,"nodeBorderRadius",3,5),s=L(t,"nodeStrokeWidth",3,2),a=L(t,"width",3,200),l=L(t,"height",3,150),c=L(t,"pannable",3,!0),d=L(t,"zoomable",3,!0),h=Vt(t,["$$slots","$$events","$$legacy","position","ariaLabel","nodeStrokeColor","nodeColor","nodeClass","nodeBorderRadius","nodeStrokeWidth","nodeComponent","bgColor","maskColor","maskStrokeColor","maskStrokeWidth","width","height","pannable","zoomable","inversePan","zoomStep","class"]),f=m(Ft),g=m(()=>u(f).ariaLabelConfig);const v=t.nodeColor===void 0?void 0:go(t.nodeColor),_=go(r()),y=go(o()),w=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";let C=m(()=>`svelte-flow__minimap-desc-${u(f).flowId}`),k=m(()=>({x:-u(f).viewport.x/u(f).viewport.zoom,y:-u(f).viewport.y/u(f).viewport.zoom,width:u(f).width/u(f).viewport.zoom,height:u(f).height/u(f).viewport.zoom})),b=m(()=>Qa(or(u(f).nodeLookup,{filter:O=>!O.hidden}),u(k))),A=m(()=>u(b).width/a()),T=m(()=>u(b).height/l()),z=m(()=>Math.max(u(A),u(T))),M=m(()=>u(z)*a()),H=m(()=>u(z)*l()),K=m(()=>5*u(z)),P=m(()=>u(b).x-(u(M)-u(b).width)/2-u(K)),x=m(()=>u(b).y-(u(H)-u(b).height)/2-u(K)),N=m(()=>u(M)+u(K)*2),p=m(()=>u(H)+u(K)*2);const E=()=>u(z);var S=A0(),D=le(S);{let O=m(()=>["svelte-flow__minimap",t.class]);Hc(D,()=>({"--xy-minimap-background-color-props":t.bgColor})),mi(D.lastChild,At({get position(){return n()},get class(){return u(O)},"data-testid":"svelte-flow__minimap"},()=>h,{children:(I,q)=>{var V=Se(),W=le(V);{var Y=B=>{var U=M0();let Z;var X=ee(U);{var Q=J=>{var pe=P0(),te=ee(pe);he(()=>{G(pe,"id",u(C)),Re(te,t.ariaLabel??u(g)["minimap.ariaLabel"])}),F(J,pe)};de(X,J=>{(t.ariaLabel??u(g)["minimap.ariaLabel"])&&J(Q)})}var ue=$(X);Wr(ue,17,()=>u(f).nodes,J=>J.id,(J,pe)=>{const te=m(()=>u(f).nodeLookup.get(u(pe).id));var Me=Se(),Ct=le(Me);{var Nt=ft=>{const ce=m(()=>Bt(u(te)));{let ye=m(()=>v?.(u(te))),Ze=m(()=>_(u(te))),ge=m(()=>y(u(te)));C0(ft,At({get id(){return u(te).id},get x(){return u(te).internals.positionAbsolute.x},get y(){return u(te).internals.positionAbsolute.y}},()=>u(ce),{get selected(){return u(te).selected},get nodeComponent(){return t.nodeComponent},get color(){return u(ye)},get borderRadius(){return i()},get strokeColor(){return u(Ze)},get strokeWidth(){return s()},get shapeRendering(){return w},get class(){return u(ge)}}))}};de(Ct,ft=>{u(te)&&ja(u(te))&&!u(te).hidden&&ft(Nt)})}F(J,Me)});var we=$(ue);Ne(U,(J,pe)=>N0?.(J,pe),()=>({store:u(f),panZoom:u(f).panZoom,getViewScale:E,translateExtent:u(f).translateExtent,width:u(f).width,height:u(f).height,inversePan:t.inversePan,zoomStep:t.zoomStep,pannable:c(),zoomable:d()})),he(()=>{G(U,"width",a()),G(U,"height",l()),G(U,"viewBox",`${u(P)??""} ${u(x)??""} ${u(N)??""} ${u(p)??""}`),G(U,"aria-labelledby",u(C)),Z=Le(U,"",Z,{"--xy-minimap-mask-background-color-props":t.maskColor,"--xy-minimap-mask-stroke-color-props":t.maskStrokeColor,"--xy-minimap-mask-stroke-width-props":t.maskStrokeWidth?t.maskStrokeWidth*u(z):void 0}),G(we,"d",`M${u(P)-u(K)},${u(x)-u(K)}h${u(N)+u(K)*2}v${u(p)+u(K)*2}h${-u(N)-u(K)*2}z + M${u(k).x??""},${u(k).y??""}h${u(k).width??""}v${u(k).height??""}h${-u(k).width}z`)}),F(B,U)};de(W,B=>{u(f).panZoom&&B(Y)})}F(I,V)},$$slots:{default:!0}}))}F(e,S),oe()}var D0=ae(" ",1),I0=ae('

Description

When to Use

Example

'),z0=ae(`

Select a Test

Click on any blue test node in the flowchart to see detailed information about that statistical test.

Legend

Start Point
Decision Point
Statistical Test

Quick Reference

ScenarioParametricNon-Parametric
1 sample vs valueOne-Sample TWilcoxon
2 independent groupsT-Test / Welch'sMann-Whitney U
2 paired groupsPaired T-TestWilcoxon
3+ groupsANOVAKruskal-Wallis
CorrelationPearsonSpearman
CategoricalChi-SquareFisher's Exact
`),O0=ae('

Statistical Test Decision Flowchart

Svelte Version - Click on any blue test node to learn more

');function R0(e){const t="background: #c8e6c9; border: 2px solid #2e7d32; border-radius: 25px; padding: 15px 25px; font-weight: bold; font-size: 14px;",n="background: #fff3e0; border: 2px solid #e65100; border-radius: 8px; padding: 12px 18px; font-weight: 500; font-size: 12px; text-align: center;",r="background: #e1f5fe; border: 2px solid #01579b; border-radius: 8px; padding: 12px 20px; font-weight: bold; font-size: 12px; color: #01579b; cursor: pointer;";let o=nt([{id:"start",position:{x:500,y:0},data:{label:"What is your research goal?"},style:t},{id:"q1",position:{x:450,y:100},data:{label:"Comparing groups or measuring relationship?"},style:n+" width: 180px;"},{id:"q2",position:{x:280,y:230},data:{label:"How many groups?"},style:n},{id:"q3",position:{x:820,y:230},data:{label:"Data type?"},style:n},{id:"q4",position:{x:80,y:360},data:{label:"Data normal?"},style:n},{id:"q5",position:{x:280,y:360},data:{label:"Independent or paired?"},style:n+" width: 130px;"},{id:"q6",position:{x:520,y:360},data:{label:"Data normal?"},style:n},{id:"q11",position:{x:720,y:360},data:{label:"Data normal?"},style:n},{id:"q12",position:{x:920,y:360},data:{label:"Sample size adequate?"},style:n+" width: 120px;"},{id:"t1",position:{x:20,y:480},data:{label:"One-Sample T-Test"},style:r},{id:"t2",position:{x:20,y:560},data:{label:"Wilcoxon Signed-Rank"},style:r},{id:"q7",position:{x:200,y:480},data:{label:"Data normal?"},style:n},{id:"q8",position:{x:360,y:480},data:{label:"Data normal?"},style:n},{id:"q10",position:{x:560,y:480},data:{label:"Equal variances?"},style:n},{id:"t8",position:{x:700,y:480},data:{label:"Kruskal-Wallis Test"},style:r},{id:"t11",position:{x:740,y:620},data:{label:"Pearson Correlation"},style:r},{id:"t12",position:{x:890,y:620},data:{label:"Spearman Correlation"},style:r},{id:"t13",position:{x:940,y:480},data:{label:"Chi-Square Test"},style:r},{id:"t14",position:{x:1080,y:480},data:{label:"Fisher's Exact Test"},style:r},{id:"q9",position:{x:150,y:600},data:{label:"Equal variances?"},style:n},{id:"t3",position:{x:280,y:600},data:{label:"Mann-Whitney U"},style:r},{id:"t6",position:{x:340,y:600},data:{label:"Paired T-Test"},style:r},{id:"t7",position:{x:340,y:680},data:{label:"Wilcoxon Signed-Rank"},style:r},{id:"t9",position:{x:540,y:580},data:{label:"One-Way ANOVA"},style:r},{id:"t10",position:{x:680,y:580},data:{label:"Welch's ANOVA"},style:r},{id:"t4",position:{x:100,y:720},data:{label:"Independent T-Test"},style:r},{id:"t5",position:{x:240,y:720},data:{label:"Welch's T-Test"},style:r}]),i=nt([{id:"e-start-q1",source:"start",target:"q1"},{id:"e-q1-q2",source:"q1",target:"q2",label:"Comparing Groups"},{id:"e-q1-q3",source:"q1",target:"q3",label:"Measuring Relationship"},{id:"e-q2-q4",source:"q2",target:"q4",label:"1 group vs value"},{id:"e-q2-q5",source:"q2",target:"q5",label:"2 groups"},{id:"e-q2-q6",source:"q2",target:"q6",label:"3+ groups"},{id:"e-q3-q11",source:"q3",target:"q11",label:"Both Continuous"},{id:"e-q3-q12",source:"q3",target:"q12",label:"Both Categorical"},{id:"e-q4-t1",source:"q4",target:"t1",label:"Yes"},{id:"e-q4-t2",source:"q4",target:"t2",label:"No"},{id:"e-q5-q7",source:"q5",target:"q7",label:"Independent"},{id:"e-q5-q8",source:"q5",target:"q8",label:"Paired"},{id:"e-q6-q10",source:"q6",target:"q10",label:"Yes"},{id:"e-q6-t8",source:"q6",target:"t8",label:"No"},{id:"e-q7-q9",source:"q7",target:"q9",label:"Yes"},{id:"e-q7-t3",source:"q7",target:"t3",label:"No"},{id:"e-q8-t6",source:"q8",target:"t6",label:"Yes"},{id:"e-q8-t7",source:"q8",target:"t7",label:"No"},{id:"e-q9-t4",source:"q9",target:"t4",label:"Yes"},{id:"e-q9-t5",source:"q9",target:"t5",label:"No"},{id:"e-q10-t9",source:"q10",target:"t9",label:"Yes"},{id:"e-q10-t10",source:"q10",target:"t10",label:"No"},{id:"e-q11-t11",source:"q11",target:"t11",label:"Yes"},{id:"e-q11-t12",source:"q11",target:"t12",label:"No"},{id:"e-q12-t13",source:"q12",target:"t13",label:"Yes (freq ≥ 5)"},{id:"e-q12-t14",source:"q12",target:"t14",label:"No (small)"}]);const s={t1:{name:"One-Sample T-Test",description:"Compares a sample mean to a known or hypothesized population value.",use:"Testing if your sample differs from a target value.",example:"Is the average weight of products equal to 500g specification?",parametric:!0},t2:{name:"Wilcoxon Signed-Rank Test",description:"Non-parametric alternative to one-sample t-test for non-normal data.",use:"When data is skewed or ordinal.",example:"Do median satisfaction ratings differ from neutral (3)?",parametric:!1},t3:{name:"Mann-Whitney U Test",description:"Compares distributions of two independent groups without assuming normality.",use:"Non-parametric alternative to independent t-test.",example:"Do two groups have different rank distributions?",parametric:!1},t4:{name:"Independent T-Test",description:"Compares means of two independent groups with equal variances.",use:"Classic comparison of two unrelated groups.",example:"Do men and women differ in average height?",parametric:!0},t5:{name:"Welch's T-Test",description:"Compares means of two groups without assuming equal variances.",use:"Robust alternative when variances differ.",example:"Comparing treatment vs control with different variability.",parametric:!0},t6:{name:"Paired T-Test",description:"Compares means of two related measurements (same subjects measured twice).",use:"Before-after studies, matched pairs.",example:"Does blood pressure change after medication?",parametric:!0},t7:{name:"Wilcoxon Signed-Rank Test",description:"Non-parametric paired comparison for non-normal data.",use:"Paired data that violates normality.",example:"Do rankings improve after training?",parametric:!1},t8:{name:"Kruskal-Wallis Test",description:"Non-parametric comparison of 3+ groups based on ranks.",use:"Alternative to ANOVA for non-normal data.",example:"Do satisfaction scores differ across 4 product types?",parametric:!1},t9:{name:"One-Way ANOVA",description:"Compares means across 3 or more groups simultaneously.",use:"Testing if any group differs from others.",example:"Do students from different schools perform differently?",parametric:!0},t10:{name:"Welch's ANOVA",description:"ANOVA alternative when group variances are unequal.",use:"Robust multi-group comparison.",example:"Comparing yields across treatments with different variability.",parametric:!0},t11:{name:"Pearson Correlation",description:"Measures linear relationship strength between two continuous variables.",use:"Quantifying linear association.",example:"How strongly are height and weight related?",parametric:!0},t12:{name:"Spearman Correlation",description:"Measures monotonic relationship using ranks, robust to outliers.",use:"Non-linear but consistent relationships.",example:"Do income and happiness increase together?",parametric:!1},t13:{name:"Chi-Square Test",description:"Tests independence between two categorical variables.",use:"Association between categories.",example:"Is survival rate related to passenger class?",parametric:!1},t14:{name:"Fisher's Exact Test",description:"Exact test for categorical association with small samples.",use:"When expected frequencies are below 5.",example:"Association in a 2x2 table with few observations.",parametric:!1}};let a=se(null);function l(w){const C=w.detail.node.id;C.startsWith("t")?R(a,s[C],!0):R(a,null)}var c=O0(),d=$(ee(c),4),h=ee(d),f=ee(h);r0(f,{get nodes(){return o},get edges(){return i},fitView:!0,fitViewOptions:{padding:.2,minZoom:.5,maxZoom:1},minZoom:.3,maxZoom:2,onnodeclick:l,children:(w,C)=>{var k=D0(),b=le(k);m0(b,{});var A=$(b,2);S0(A,{variant:"dots",gap:12,size:1});var T=$(A,2);T0(T,{}),F(w,k)},$$slots:{default:!0}});var g=$(h,2),v=ee(g);{var _=w=>{var C=I0(),k=ee(C),b=ee(k),A=$(k,2),T=ee(A),z=$(A,2),M=$(ee(z),2),H=ee(M),K=$(z,2),P=$(ee(K),2),x=ee(P),N=$(K,2),p=$(ee(N),2),E=ee(p);he(()=>{Re(b,u(a).name),ut(A,1,`badge ${u(a).parametric?"parametric":"non-parametric"}`,"svelte-1n46o8q"),Re(T,u(a).parametric?"Parametric":"Non-Parametric"),Re(H,u(a).description),Re(x,u(a).use),Re(E,u(a).example)}),F(w,C)},y=w=>{var C=z0();F(w,C)};de(v,w=>{u(a)?w(_):w(y,!1)})}F(e,c)}Oc(R0,{target:document.getElementById("app")}); diff --git a/tools/flowchart/assets/index-KvuvRHxr.css b/tools/flowchart/assets/index-KvuvRHxr.css new file mode 100644 index 0000000..2f88ba5 --- /dev/null +++ b/tools/flowchart/assets/index-KvuvRHxr.css @@ -0,0 +1 @@ +.transparent.svelte-1wg91mu{background:transparent}.a11y-hidden.svelte-13pq11u{display:none}.a11y-live-msg.svelte-13pq11u{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(0px,0px,0px,0px);clip-path:inset(100%)}.svelte-flow__selection.svelte-1vr3gfi{position:absolute;top:0;left:0}.svelte-flow__selection-wrapper.svelte-sf2y5e{position:absolute;top:0;left:0;z-index:2000;pointer-events:all}.svelte-flow__selection-wrapper.svelte-sf2y5e:focus,.svelte-flow__selection-wrapper.svelte-sf2y5e:focus-visible{outline:none}.svelte-flow.svelte-mkap6j{width:100%;height:100%;overflow:hidden;position:relative;z-index:0;background-color:var(--background-color, var(--background-color-default))}:root{--background-color-default: #fff;--background-pattern-color-default: #ddd;--minimap-mask-color-default: rgb(240, 240, 240, .6);--minimap-mask-stroke-color-default: none;--minimap-mask-stroke-width-default: 1;--controls-button-background-color-default: #fefefe;--controls-button-background-color-hover-default: #f4f4f4;--controls-button-color-default: inherit;--controls-button-color-hover-default: inherit;--controls-button-border-color-default: #eee}.svelte-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.svelte-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.svelte-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.svelte-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.svelte-flow__pane{z-index:1}.svelte-flow__pane.draggable{cursor:grab}.svelte-flow__pane.dragging{cursor:grabbing}.svelte-flow__pane.selection{cursor:pointer}.svelte-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.svelte-flow__renderer{z-index:4}.svelte-flow__selection{z-index:6}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible{outline:none}.svelte-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.svelte-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.svelte-flow .svelte-flow__edges{position:absolute}.svelte-flow .svelte-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.svelte-flow__edge{pointer-events:visibleStroke}.svelte-flow__edge.selectable{cursor:pointer}.svelte-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.svelte-flow__edge.animated path.svelte-flow__edge-interaction{stroke-dasharray:none;animation:none}.svelte-flow__edge.inactive{pointer-events:none}.svelte-flow__edge.selected,.svelte-flow__edge:focus,.svelte-flow__edge:focus-visible{outline:none}.svelte-flow__edge.selected .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus-visible .svelte-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.svelte-flow__edge-textwrapper{pointer-events:all}.svelte-flow__edge .svelte-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.svelte-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.svelte-flow__connection{pointer-events:none}.svelte-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.svelte-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.svelte-flow__nodes{pointer-events:none;transform-origin:0 0}.svelte-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.svelte-flow__node.selectable{cursor:pointer}.svelte-flow__node.draggable{cursor:grab;pointer-events:all}.svelte-flow__node.draggable.dragging{cursor:grabbing}.svelte-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.svelte-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.svelte-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.svelte-flow__handle.connectingfrom{pointer-events:all}.svelte-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.svelte-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.svelte-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.svelte-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.svelte-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.svelte-flow__edgeupdater{cursor:move;pointer-events:all}.svelte-flow__pane.selection .svelte-flow__panel{pointer-events:none}.svelte-flow__panel{position:absolute;z-index:5;margin:15px}.svelte-flow__panel.top{top:0}.svelte-flow__panel.bottom{bottom:0}.svelte-flow__panel.top.center,.svelte-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.svelte-flow__panel.left{left:0}.svelte-flow__panel.right{right:0}.svelte-flow__panel.left.center,.svelte-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.svelte-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.svelte-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.svelte-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.svelte-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.svelte-flow__minimap-svg{display:block}.svelte-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.svelte-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.svelte-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.svelte-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.svelte-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.svelte-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.svelte-flow__controls.horizontal{flex-direction:row}.svelte-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.svelte-flow__edge.updating .svelte-flow__edge-path{stroke:#777}.svelte-flow__edge-text{font-size:10px}.svelte-flow__node.selectable:focus,.svelte-flow__node.selectable:focus-visible{outline:none}.svelte-flow__node-input,.svelte-flow__node-default,.svelte-flow__node-output,.svelte-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.svelte-flow__node-input.selectable:hover,.svelte-flow__node-default.selectable:hover,.svelte-flow__node-output.selectable:hover,.svelte-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.svelte-flow__node-input.selectable.selected,.svelte-flow__node-input.selectable:focus,.svelte-flow__node-input.selectable:focus-visible,.svelte-flow__node-default.selectable.selected,.svelte-flow__node-default.selectable:focus,.svelte-flow__node-default.selectable:focus-visible,.svelte-flow__node-output.selectable.selected,.svelte-flow__node-output.selectable:focus,.svelte-flow__node-output.selectable:focus-visible,.svelte-flow__node-group.selectable.selected,.svelte-flow__node-group.selectable:focus,.svelte-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.svelte-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.svelte-flow__nodesselection-rect,.svelte-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible,.svelte-flow__selection:focus,.svelte-flow__selection:focus-visible{outline:none}.svelte-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.svelte-flow__controls-button:disabled{pointer-events:none}.svelte-flow__controls-button:disabled svg{fill-opacity:.4}.svelte-flow__controls-button:last-child{border-bottom:none}.svelte-flow__controls.horizontal .svelte-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.svelte-flow__controls.horizontal .svelte-flow__controls-button:last-child{border-right:none}.svelte-flow__resize-control{position:absolute}.svelte-flow__resize-control.left,.svelte-flow__resize-control.right{cursor:ew-resize}.svelte-flow__resize-control.top,.svelte-flow__resize-control.bottom{cursor:ns-resize}.svelte-flow__resize-control.top.left,.svelte-flow__resize-control.bottom.right{cursor:nwse-resize}.svelte-flow__resize-control.bottom.left,.svelte-flow__resize-control.top.right{cursor:nesw-resize}.svelte-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.svelte-flow__resize-control.handle.left{left:0;top:50%}.svelte-flow__resize-control.handle.right{left:100%;top:50%}.svelte-flow__resize-control.handle.top{left:50%;top:0}.svelte-flow__resize-control.handle.bottom{left:50%;top:100%}.svelte-flow__resize-control.handle.top.left,.svelte-flow__resize-control.handle.bottom.left{left:0}.svelte-flow__resize-control.handle.top.right,.svelte-flow__resize-control.handle.bottom.right{left:100%}.svelte-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.svelte-flow__resize-control.line.left,.svelte-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.svelte-flow__resize-control.line.left{left:0;border-left-width:1px}.svelte-flow__resize-control.line.right{left:100%;border-right-width:1px}.svelte-flow__resize-control.line.top,.svelte-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.svelte-flow__resize-control.line.top{top:0;border-top-width:1px}.svelte-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.svelte-flow__edge-label{text-align:center;position:absolute;padding:2px;font-size:10px;color:var(--xy-edge-label-color, var(--xy-edge-label-color-default));background:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.svelte-flow__container{-webkit-user-select:none;-moz-user-select:none;user-select:none}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:#f5f5f5}.app-container.svelte-1n46o8q{min-height:100vh;padding:20px}h1.svelte-1n46o8q{text-align:center;color:#333;margin-bottom:5px;font-size:28px}.subtitle.svelte-1n46o8q{text-align:center;color:#666;margin-bottom:20px;font-size:14px}.main-content.svelte-1n46o8q{display:flex;gap:20px;height:calc(100vh - 120px);min-height:600px}.flowchart-container.svelte-1n46o8q{flex:1;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.info-panel.svelte-1n46o8q{width:300px;min-width:300px;max-width:300px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:20px;overflow-y:auto}.test-info.svelte-1n46o8q h2:where(.svelte-1n46o8q){color:#01579b;margin-bottom:10px;font-size:22px}.badge.svelte-1n46o8q{display:inline-block;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;margin-bottom:20px}.badge.parametric.svelte-1n46o8q{background:#e8f5e9;color:#2e7d32}.badge.non-parametric.svelte-1n46o8q{background:#fff3e0;color:#e65100}.info-section.svelte-1n46o8q{margin-bottom:20px}.info-section.svelte-1n46o8q h3:where(.svelte-1n46o8q){color:#555;font-size:14px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.info-section.svelte-1n46o8q p:where(.svelte-1n46o8q){color:#333;line-height:1.6;font-size:15px}.info-section.svelte-1n46o8q .example:where(.svelte-1n46o8q){background:#f8f9fa;padding:12px;border-radius:8px;border-left:3px solid #01579b;font-style:italic}.placeholder.svelte-1n46o8q h2:where(.svelte-1n46o8q){color:#333;margin-bottom:15px}.placeholder.svelte-1n46o8q>p:where(.svelte-1n46o8q){color:#666;line-height:1.6;margin-bottom:30px}.highlight.svelte-1n46o8q{background:#e1f5fe;color:#01579b;padding:2px 6px;border-radius:4px;font-weight:500}.legend.svelte-1n46o8q{margin-bottom:30px}.legend.svelte-1n46o8q h3:where(.svelte-1n46o8q),.quick-ref.svelte-1n46o8q h3:where(.svelte-1n46o8q){color:#555;font-size:14px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px}.legend-item.svelte-1n46o8q{display:flex;align-items:center;gap:12px;margin-bottom:10px}.legend-box.svelte-1n46o8q{width:24px;height:24px;border-radius:4px;border:2px solid}.legend-box.start.svelte-1n46o8q{background:#c8e6c9;border-color:#2e7d32;border-radius:12px}.legend-box.decision.svelte-1n46o8q{background:#fff3e0;border-color:#e65100}.legend-box.test.svelte-1n46o8q{background:#e1f5fe;border-color:#01579b}.legend-item.svelte-1n46o8q span:where(.svelte-1n46o8q){color:#555;font-size:14px}.quick-ref.svelte-1n46o8q table:where(.svelte-1n46o8q){width:100%;border-collapse:collapse;font-size:12px}.quick-ref.svelte-1n46o8q th:where(.svelte-1n46o8q){background:#f5f5f5;padding:8px 6px;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #ddd}.quick-ref.svelte-1n46o8q td:where(.svelte-1n46o8q){padding:8px 6px;border-bottom:1px solid #eee;color:#555}.quick-ref.svelte-1n46o8q tr:where(.svelte-1n46o8q):hover td:where(.svelte-1n46o8q){background:#f8f9fa} diff --git a/tools/flowchart/index.html b/tools/flowchart/index.html new file mode 100644 index 0000000..7413a96 --- /dev/null +++ b/tools/flowchart/index.html @@ -0,0 +1,13 @@ + + + + + + Statistical Test Decision Flowchart - Svelte + + + + +
+ +