diff --git a/BExIS.Modules.DQM.UI.Svelte/index.html b/BExIS.Modules.DQM.UI.Svelte/index.html new file mode 100644 index 0000000..b607bfa --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/index.html @@ -0,0 +1,11 @@ + + + + + Test Widget + + + + + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI.Svelte/package-lock.json b/BExIS.Modules.DQM.UI.Svelte/package-lock.json new file mode 100644 index 0000000..d21b074 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/package-lock.json @@ -0,0 +1,2949 @@ +{ + "name": "my-svelte-webcomponent", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "my-svelte-webcomponent", + "version": "1.0.0", + "dependencies": { + "@bexis2/bexis2-core-ui": "^0.4.65", + "@sgratzl/chartjs-chart-boxplot": "^4.4.4", + "@skeletonlabs/skeleton": "^2.11.0", + "@skeletonlabs/tw-plugin": "^0.4.1", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", + "chart.js": "^4.5.0", + "chartjs-plugin-datalabels": "^2.2.0", + "vite": "^4.5.14", + "vite-plugin-string": "^1.2.3" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.5.3", + "svelte": "^4.2.20", + "tailwindcss": "^3.4.3" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@bexis2/bexis2-core-ui": { + "version": "0.4.65", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.65.tgz", + "integrity": "sha512-oXc5ZQ+7dkMUZ5eFqcpgxPCbDzETjpUx/cxqN+iNVqARmg3/o0C2vqI0le+kvxA7TiQlhGdSFekX+w1z6uCxSQ==", + "dependencies": { + "@codemirror/lang-html": "^6.4.9", + "@codemirror/lang-javascript": "^6.2.2", + "@codemirror/lang-json": "^6.0.1", + "@codemirror/lint": "^6.8.1", + "@codemirror/theme-one-dark": "^6.1.2", + "@floating-ui/dom": "^1.6.8", + "@fortawesome/fontawesome-free": "^6.6.0", + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/free-regular-svg-icons": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@sveltejs/kit": "^2.5.19", + "@sveltejs/vite-plugin-svelte": "^3.1.1", + "axios": "^1.7.3", + "codemirror": "^6.0.1", + "dateformat": "^5.0.3", + "delay": "^6.0.0", + "dotenv": "^16.4.5", + "eslint4b-prebuilt": "^6.7.2", + "highlight.js": "^11.10.0", + "highlightjs-svelte": "^1.0.6", + "svelte": "^4.2.18", + "svelte-codemirror-editor": "^1.4.0", + "svelte-fa": "^4.0.2", + "svelte-file-dropzone": "^2.0.7", + "svelte-headless-table": "^0.18.2", + "svelte-select": "5.8.3", + "vest": "^5.4.0" + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/@sveltejs/kit": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.21.5.tgz", + "integrity": "sha512-P5m7yZtvD1Kx/Z6JcjgJtdMqef/tCGMDrd9B9S2q8j+FMnkeKTMxW1nidnjVzk4HEDRGf4IlBI94/niy6t3hLA==", + "dependencies": { + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.14.1", + "cookie": "^0.6.0", + "devalue": "^5.1.0", + "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", + "vitefu": "^1.0.6" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3 || ^6.0.0" + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/@sveltejs/kit/node_modules/vitefu": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", + "integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==", + "workspaces": [ + "tests/deps/*", + "tests/projects/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/@sveltejs/vite-plugin-svelte/node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "peer": true + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/@bexis2/bexis2-core-ui/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==" + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/rollup": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "peer": true, + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/@bexis2/bexis2-core-ui/node_modules/vite": { + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.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", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.18.6", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz", + "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz", + "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz", + "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.1.7" + } + }, + "node_modules/@codemirror/lang-html": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz", + "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.4.tgz", + "integrity": "sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-json": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz", + "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.1.tgz", + "integrity": "sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.5", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz", + "integrity": "sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.35.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.11", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz", + "integrity": "sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz", + "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.37.2", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.37.2.tgz", + "integrity": "sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==", + "dependencies": { + "@codemirror/state": "^6.5.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz", + "integrity": "sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz", + "integrity": "sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==", + "dependencies": { + "@floating-ui/core": "^1.7.1", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", + "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz", + "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==" + }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==" + }, + "node_modules/@lezer/css": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.2.1.tgz", + "integrity": "sha512-2F5tOqzKEKbCUNraIXc0f6HKeyKlmMWJnBB0i4XW6dJgssrZO/YlZ2pY5xgyqDleqqhiNJ3dQhbrV2aClZQMvg==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/html": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz", + "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.1.tgz", + "integrity": "sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/json": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.3.tgz", + "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==" + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "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==" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@sgratzl/boxplots": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sgratzl/boxplots/-/boxplots-2.0.0.tgz", + "integrity": "sha512-XHQTNTk0OtDEZyT7v+BKNKt4OEXYhn4GtfI+iQ1eFiFsx8Aq/csz+mOJYbfpkiP8Popd/8Nky8vLh1zzkYn0gw==" + }, + "node_modules/@sgratzl/chartjs-chart-boxplot": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@sgratzl/chartjs-chart-boxplot/-/chartjs-chart-boxplot-4.4.4.tgz", + "integrity": "sha512-yenMztcbRyiBm20FxYry5HiJZPVGL/+Tc0nj3SIU5JlruthH2Awl3qSyrXUOwTzAhye2Lc/45Tw3j/UTBMLcrQ==", + "dependencies": { + "@sgratzl/boxplots": "^2.0.0" + }, + "peerDependencies": { + "chart.js": "^4.1.1" + } + }, + "node_modules/@skeletonlabs/skeleton": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@skeletonlabs/skeleton/-/skeleton-2.11.0.tgz", + "integrity": "sha512-ORMZYACsIlfKyBx2ZIHBy7zE877t99fxU7LzcY1dveVmn2//+OeqnbQb5RryNILsMR62Tuu1VLnCu01/ByHlbQ==", + "dependencies": { + "esm-env": "1.0.0" + }, + "peerDependencies": { + "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@skeletonlabs/tw-plugin": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@skeletonlabs/tw-plugin/-/tw-plugin-0.4.1.tgz", + "integrity": "sha512-crrC8BGKis0GNTp7V2HF6mk1ECLUvAxgTTV26LMgt/rV3U6Xd7N7dL5qIL8fE4MTHvpKa1SBsdqsnMbEvATeEg==", + "peerDependencies": { + "tailwindcss": ">=3.0.0" + } + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", + "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.5.3.tgz", + "integrity": "sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^1.0.4", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.3", + "svelte-hmr": "^0.15.3", + "vitefu": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-next.0", + "vite": "^4.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.4.tgz", + "integrity": "sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.2.0", + "svelte": "^3.54.0 || ^4.0.0", + "vite": "^4.0.0" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, + "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==" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "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==", + "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==" + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/chart.js": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz", + "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chartjs-plugin-datalabels": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.2.0.tgz", + "integrity": "sha512-14ZU30lH7n89oq+A4bWaJPnAG8a7ZTk7dKf48YAzMvJjQtjrgg5Dpk9f+LbjCF6bpx3RAGTeL13IXpKQYyRvlw==", + "peerDependencies": { + "chart.js": ">=3.0.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==", + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/context": { + "version": "3.0.33", + "resolved": "https://registry.npmjs.org/context/-/context-3.0.33.tgz", + "integrity": "sha512-9nBbXhHVKRFLYKk3oa7W+aHt/eiGm5aIMp4Y4IwQsiAO+deRtlJ72EA8m7Cvs3v7gjjBuqKljvt2eyihVHUJoQ==", + "dependencies": { + "vest-utils": "^1.3.3" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dateformat": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz", + "integrity": "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/eslint4b-prebuilt": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/eslint4b-prebuilt/-/eslint4b-prebuilt-6.7.2.tgz", + "integrity": "sha512-iGdYi7sSc/nVV1GPinJhWrLRsy7PtKONYJTmgSv7lVar/RzlvIQEGOG3Tbb8rIi4aPmgvsncmVCk7WqDmATlkw==" + }, + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "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==", + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/highlightjs-svelte": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/highlightjs-svelte/-/highlightjs-svelte-1.0.6.tgz", + "integrity": "sha512-aXuBPz8df3sOXg90q8rRcBLyxIR8ozPU39a6tJ2rpJUjjd9brRIr55aC0IccW4gsPhQxZ+B3rFugdXsg9/ckDw==" + }, + "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==", + "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==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "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==", + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "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==" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "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==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/n4s": { + "version": "5.0.28", + "resolved": "https://registry.npmjs.org/n4s/-/n4s-5.0.28.tgz", + "integrity": "sha512-64ap7Qn8Oyua2ImIZH6/pkql89qyiTZ4jJqpS2g863++0tgbM4cuv3KJvZqMpa8kY2ovZ4q3cD0/KU4SImjg5g==", + "dependencies": { + "context": "^3.0.33", + "vest-utils": "^1.3.3" + } + }, + "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" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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==", + "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==", + "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==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.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==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/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==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/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==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "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==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "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==", + "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==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "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==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/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==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "4.2.20", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.20.tgz", + "integrity": "sha512-eeEgGc2DtiUil5ANdtd8vPwt9AgaMdnuUFnPft9F5oMvU/FHu5IHFic+p1dR/UOB7XU2mX2yHW+NcTch4DCh5Q==", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-codemirror-editor": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/svelte-codemirror-editor/-/svelte-codemirror-editor-1.4.1.tgz", + "integrity": "sha512-Pv350iro0Y/AZTT/y2OLaonheQqAwl50Hdfipa2Jv1Z04TSP5kPUyxQnRjqxeRW7DXOX9s5Nd11tHdBl9iYSzw==", + "peerDependencies": { + "codemirror": "^6.0.0", + "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/svelte-fa": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/svelte-fa/-/svelte-fa-4.0.4.tgz", + "integrity": "sha512-85BomCGkTrH8kPDGvb8JrVwq9CqR9foprbKjxemP4Dtg3zPR7OXj5hD0xVYK0C+UCzFI1zooLoK/ndIX6aYXAw==", + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/svelte-file-dropzone": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/svelte-file-dropzone/-/svelte-file-dropzone-2.0.9.tgz", + "integrity": "sha512-+gS9DscyEcy2Q0jhcADPs7uUEnz56YKudKtLGteEGNi4lF7anPTyxDXoDRiNACWzsp3PF5KfYkw0GgrTieZK9Q==", + "dependencies": { + "file-selector": "^0.6.0" + }, + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0 || ^5" + } + }, + "node_modules/svelte-floating-ui": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/svelte-floating-ui/-/svelte-floating-ui-1.5.8.tgz", + "integrity": "sha512-dVvJhZ2bT+kQDHlE4Lep8t+sgEc0XD96fXLzAi2DDI2bsaegBbClxXVNMma0C2WsG+n9GJSYx292dTvA8CYRtw==", + "dependencies": { + "@floating-ui/core": "^1.5.0", + "@floating-ui/dom": "^1.5.3" + } + }, + "node_modules/svelte-headless-table": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/svelte-headless-table/-/svelte-headless-table-0.18.3.tgz", + "integrity": "sha512-1zVnqXW0dvn6ZceYa94k+ziK+w5Dj9nlWYTQGXBv2JhM0resj9w7CWpclZK1TJwAALfEeH4InPBPO87L5fr+nQ==", + "dependencies": { + "svelte-keyed": "^2.0.0", + "svelte-render": "^2.0.1", + "svelte-subscribe": "^2.0.1" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", + "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-keyed": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svelte-keyed/-/svelte-keyed-2.0.0.tgz", + "integrity": "sha512-7TeEn+QbJC2OJrHiuM0T8vMBkms3DNpTE+Ir+NtnVBnBMA78aL4f1ft9t0Hn/pBbD/TnIXi4YfjFRAgtN+DZ5g==", + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/svelte-render": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/svelte-render/-/svelte-render-2.0.1.tgz", + "integrity": "sha512-RpB0SurwXm4xhjvHHtjeqMmvd645FURb79GFOotScOSqnKK5vpqBgoBPGC0pp+E/eZgDSQ9rRAdn/+N4ys1mXQ==", + "dependencies": { + "svelte-subscribe": "^2.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/svelte-select": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/svelte-select/-/svelte-select-5.8.3.tgz", + "integrity": "sha512-nQsvflWmTCOZjssdrNptzfD1Ok45hHVMTL5IHay5DINk7dfu5Er+8KsVJnZMJdSircqtR0YlT4YkCFlxOUhVPA==", + "dependencies": { + "svelte-floating-ui": "1.5.8" + } + }, + "node_modules/svelte-subscribe": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/svelte-subscribe/-/svelte-subscribe-2.0.1.tgz", + "integrity": "sha512-eKXIjLxB4C7eQWPqKEdxcGfNXm2g/qJ67zmEZK/GigCZMfrTR3m7DPY93R6MX+5uoqM1FRYxl8LZ1oy4URWi2A==", + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/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==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "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==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "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==", + "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==", + "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==" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "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==" + }, + "node_modules/vast": { + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/vast/-/vast-1.0.42.tgz", + "integrity": "sha512-YP3zNDRVZZRuHgUJ5xD7HAF0AFius2KWqIYSAuzA6E4ftPkL+gSQrp9agPM1HgsHS9L7XWoegYxsH81kawztuQ==", + "dependencies": { + "vest-utils": "^1.3.3" + } + }, + "node_modules/vest": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/vest/-/vest-5.4.6.tgz", + "integrity": "sha512-Q3KQYluxdjnz5/HmR8coHNlXbJPLWMfrwz4wlcqMX4SaJ8qcmy5Ix9NTiQt3hTMrETdj+q+513J/kt+ahdJlLg==", + "dependencies": { + "context": "^3.0.33", + "n4s": "^5.0.28", + "vast": "^1.0.42", + "vest-utils": "^1.3.3", + "vestjs-runtime": "^1.5.1" + } + }, + "node_modules/vest-utils": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/vest-utils/-/vest-utils-1.3.3.tgz", + "integrity": "sha512-9y+26YXjOpv89QmEXlFrTFLUMwUjAuwpimUVgb8HS3eNuBR3HEY68o4U/sPyGTh3OEvS7N502pX82WDm1zvsaA==" + }, + "node_modules/vestjs-runtime": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/vestjs-runtime/-/vestjs-runtime-1.5.1.tgz", + "integrity": "sha512-kiXuNJBS/6ZkzMArLuiEBtXe/cMr/8NE4lp6flpLuEzVwXM2nli9UfvQ26lmuvU1/ggPgjJNv/FpSnWofvHYcA==", + "dependencies": { + "context": "^3.0.33", + "vest-utils": "^1.3.3" + } + }, + "node_modules/vite": { + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.14.tgz", + "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-string": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/vite-plugin-string/-/vite-plugin-string-1.2.3.tgz", + "integrity": "sha512-zw2jL0c4B6CAvxO8PshX04494jTcqJjNH2kW1AugBH+fImRY0evdNtVgmeS1i1VFdua/OFhL7fMqIPh0uF21/Q==", + "dependencies": { + "@rollup/pluginutils": ">=4.1.0" + }, + "peerDependencies": { + "vite": ">=2" + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + } + } +} diff --git a/BExIS.Modules.DQM.UI.Svelte/package.json b/BExIS.Modules.DQM.UI.Svelte/package.json new file mode 100644 index 0000000..b8e9ef4 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/package.json @@ -0,0 +1,26 @@ +{ + "name": "my-svelte-webcomponent", + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.5.3", + "svelte": "^4.2.20", + "tailwindcss": "^3.4.3" + }, + "dependencies": { + "@bexis2/bexis2-core-ui": "^0.4.65", + "@sgratzl/chartjs-chart-boxplot": "^4.4.4", + "@skeletonlabs/skeleton": "^2.11.0", + "@skeletonlabs/tw-plugin": "^0.4.1", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", + "chart.js": "^4.5.0", + "chartjs-plugin-datalabels": "^2.2.0", + "vite": "^4.5.14", + "vite-plugin-string": "^1.2.3" + } +} diff --git a/BExIS.Modules.DQM.UI.Svelte/src/DataQuality.svelte b/BExIS.Modules.DQM.UI.Svelte/src/DataQuality.svelte new file mode 100644 index 0000000..9c41233 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/DataQuality.svelte @@ -0,0 +1,797 @@ + + + + + +
+
+ + {#if error == true} +

An error occurred.

+
+ Dataset does not contain structured primary data or the dataset is not public and you are not + logged in. +
+ {/if} + {#if loading == true} +
+
+

Loading

+ {props.value}% +
+
+ {:else}{/if} +

1. Duplicate Check

+
+ {#if duplicate_percent == 0} + + {/if} + {#if duplicate_percent <= 10 && duplicate_percent > 0} + + {/if} + {#if duplicate_percent > 10} + + {/if} +
+
+
+ + +

2. Missing Value Check

+ + Graph + Table + + + + + +

+ 3. Distribution & Count of Unique Values +

+ + + + Bubble Plot (#){count_number} + + Bar Chart{count_text} + + + + + + + + + +
+
+ + + diff --git a/BExIS.Modules.DQM.UI.Svelte/src/app.css b/BExIS.Modules.DQM.UI.Svelte/src/app.css new file mode 100644 index 0000000..79ce83c --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/app.css @@ -0,0 +1,4 @@ + +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI.Svelte/src/app.postcss b/BExIS.Modules.DQM.UI.Svelte/src/app.postcss new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/app.postcss @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI.Svelte/src/draw_charts.js b/BExIS.Modules.DQM.UI.Svelte/src/draw_charts.js new file mode 100644 index 0000000..092be39 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/draw_charts.js @@ -0,0 +1,1127 @@ +/* + Everything you need to install and use Chart.js can be found here: + https://chartjs-plugin-datalabels.netlify.app + https://www.chartjs.org + + Boxplot-Github: + https://github.com/sgratzl/chartjs-chart-boxplot + */ +import { + Chart, + LinearScale, + CategoryScale, + PieController, + BubbleController, + BarController, + LogarithmicScale, + ArcElement, + PointElement, + BarElement, + Decimation, + Filler, + Legend, + Title, + Tooltip +} from 'chart.js'; + +import { BoxPlotController, BoxAndWiskers } from '@sgratzl/chartjs-chart-boxplot'; + +// @ts-ignore +Chart.defaults.color = 'white'; + +// REMOVE double scaling: let Chart.js handle DPR itself +// Chart.defaults.devicePixelRatio = window.devicePixelRatio || 1; + +// @ts-ignore +Chart.register( + BoxPlotController, + BoxAndWiskers, + LinearScale, + CategoryScale, + PieController, + BubbleController, + BarController, + LogarithmicScale, + ArcElement, + PointElement, + BarElement, + Decimation, + Filler, + Legend, + Title, + Tooltip +); +// Globale Font-Einstellungen - ERHÖHEN +Chart.defaults.font.size = 18; // Von 16 auf 18 +Chart.defaults.font.family = 'Arial, sans-serif'; +Chart.defaults.font.weight = 'bold'; // NEU: Fett für bessere Lesbarkeit + +/** + * @param {{ count: any; countRows?: number; countColumns?: number; countData: any; countMv: any; countNull: any; missingValues?: any[]; affectedVariablen?: any[]; allVariablen?: any[]; duplicates?: any[]; }} d + * @param {HTMLElement | null} pieDiv + */ + +export function prepareCanvas(canvas, width = 800, height = 500) { + // Set CSS size (visual) and the drawing buffer to the SAME size. + // Chart.js will apply its own DPR scaling for crisp text. + canvas.style.width = width + "px"; + canvas.style.height = height + "px"; + canvas.width = width; + canvas.height = height; + return canvas.getContext("2d"); +} + +// TextZoom-Plugin: vergrößert nur Text im Canvas, ohne Canvas/Chart zu skalieren +const TextZoomPlugin = { + id: 'textZoom', + beforeInit(chart, _args, opts) { + const factor = Math.max(1, (opts && opts.factor) || 1.5); + const ctx = chart.ctx; + if (!ctx || ctx.__textZoomApplied) return; + ctx.__textZoomApplied = true; + + const origFill = ctx.fillText.bind(ctx); + const origStroke = ctx.strokeText.bind(ctx); + + ctx.fillText = function (text, x, y, maxWidth) { + this.save(); + this.scale(factor, factor); + origFill(text, x / factor, y / factor, maxWidth ? maxWidth / factor : undefined); + this.restore(); + }; + ctx.strokeText = function (text, x, y, maxWidth) { + this.save(); + this.scale(factor, factor); + origStroke(text, x / factor, y / factor, maxWidth ? maxWidth / factor : undefined); + this.restore(); + }; + } +}; + +Chart.register(TextZoomPlugin); + +// HTML-Legende: Box oben, Text darunter +const htmlLegendPlugin = { + id: 'htmlLegend', + afterUpdate(chart, _args, options) { + const container = options.container; + if (!container) return; + + // Container leeren + container.innerHTML = ''; + + // Legendendaten wie bisher über generateLabels holen + const items = chart.options.plugins.legend.labels.generateLabels(chart); + + items.forEach((item) => { + const entry = document.createElement('div'); + entry.style.display = 'flex'; + entry.style.flexDirection = 'column'; + entry.style.alignItems = 'center'; + entry.style.marginRight = '16px'; + entry.style.fontSize = '18px'; + entry.style.fontWeight = 'bold'; + entry.style.cursor = 'pointer'; + + // Farbbox + const box = document.createElement('div'); + box.style.width = '40px'; + box.style.height = '24px'; + box.style.border = '1px solid #333'; + box.style.background = item.fillStyle; + + // Text UNTER der Box + const label = document.createElement('div'); + if (Array.isArray(item.text)) { + // falls du wie aktuell [label, "77%"] zurückgibst + label.innerHTML = item.text.join('
'); + } else { + label.textContent = item.text; + } + label.style.fontSize = '14px'; + label.style.fontWeight = 'normal'; + label.style.lineHeight = '1.1'; + label.style.textAlign = 'center'; + + entry.appendChild(box); + entry.appendChild(label); + + // Klick zum Ein-/Ausblenden des Segments + entry.onclick = () => { + chart.toggleDataVisibility(item.index); + chart.update(); + }; + + container.appendChild(entry); + }); + } +}; + +Chart.register(htmlLegendPlugin); + + +export function completeness_pie(d, pieDiv) { + const pieCanvas = document.createElement('canvas'); + pieCanvas.width = 500; + pieCanvas.height = 250; + pieCanvas.style.width = '500px'; + pieCanvas.style.height = '250px'; + + const legendDiv = document.createElement('div'); +legendDiv.style.display = 'flex'; +legendDiv.style.justifyContent = 'center'; // 🔹 mittig +legendDiv.style.gap = '24px'; +legendDiv.style.margin = '10px auto'; // 🔹 zentriert + Abstand +legendDiv.style.alignItems = 'flex-start'; + + // zuerst die Legende, dann das Canvas ins übergebene pieDiv packen + pieDiv?.appendChild(legendDiv); + pieDiv?.appendChild(pieCanvas); + /** + * @type {string[]} + */ + let labels = ['Data']; + /** + * @type {any[]} + */ + let data = [d.countData]; + let backgroundColor = ['rgba(218, 240, 236, 1)']; + let hoverBackgroundColor = ['rgba(218, 240, 236, 1)']; + + if (d.countMv > 0) { + labels.push('Missing Value (NA)'); + data.push(d.countMv); + backgroundColor.push('rgb(255,229,191, 1)'); + hoverBackgroundColor.push('rgba(255,229,191,1)'); // Korrigiert von 'srgba' zu 'rgba' + } + if (d.countNull > 0) { + labels.push('empty cells'); + data.push(d.countNull); + backgroundColor.push('rgba(255,191,191, 1)'); + hoverBackgroundColor.push('rgba(255,191,191,1)'); + } + const ctx = prepareCanvas(pieCanvas, 500, 250); + + new Chart(ctx, { + type: 'pie', + data: { + labels: labels, + datasets: [ + { + data: data, + backgroundColor: backgroundColor, + hoverBackgroundColor: hoverBackgroundColor + } + ] + }, + options: { + borderWidth: 1, + responsive: false, + layout: { + // padding: { + // top: 20, + // right: 40, + // bottom: 20, + // left: 40 + // } + }, + plugins: { + //textZoom: { factor: 1.8 }, + legend: { + display: false, + labels: { + font: { size: 26, weight: 'bold' }, + generateLabels: function (chart) { + const data = chart.data; + if (data.labels.length && data.datasets.length) { + const dataset = data.datasets[0]; + const total = dataset.data.reduce((acc, val) => acc + val, 0); + + return data.labels.map((label, i) => { + const value = dataset.data[i]; + const percentage = ((value * 100) / total).toFixed(2); + + return { + // hier kannst du frei definieren, was unter der Box stehen soll + text: [label, percentage + '%'], + fillStyle: dataset.backgroundColor[i], + hidden: false, + index: i + }; + }); + } + return []; + } + } + }, + htmlLegend: { + container: legendDiv + }, + + datalabels: { + formatter: (value) => { + return ((value * 100) / d.count).toFixed(2) + '%'; + }, + color: '#fff', + font: { + size: 24, + weight: 'bold' + }, + display: [d.countData > 0, d.countMv > 0, d.countNull > 0], + align: 'start', + offset: [-16, -32, -48] + }, + tooltip: { + enabled: false + }, + } + }}); + + // @ts-ignore + pieDiv?.appendChild(pieCanvas); +} + +/** + * @param {{ count?: number; countRows: any; countColumns: any; countData?: number; countMv?: number; countNull?: number; missingValues: any; affectedVariablen: any; allVariablen: any; duplicates?: any[]; }} d + * @param {HTMLElement | null} barDiv + */ +export function completeness_bar(d, barDiv) { + const barCanvas = document.createElement('canvas'); + const w = 500; + const h = Math.max(250, d.affectedVariablen.length * 22); + barCanvas.width = w; + barCanvas.height = h; + barCanvas.style.width = w + 'px'; + barCanvas.style.height = h + 'px'; + //create needed data for the bar + const barData = { + labels: [], + datasets: [] + }; + //definde background colors of the first 5 missing values type + const bgcs = [ + 'rgba(255, 159, 64, 0.2)', + 'rgba(54, 162, 235, 0.2)', + 'rgba(153, 102, 255, 0.2)', + 'rgba(75, 192, 192, 0.2)', + 'rgba(201, 203, 207, 0.2)' + ]; + //definde background colors on hover of the first 5 missing values type + const bcs = [ + 'rgb(255, 229, 191)', + 'rgb(229, 243, 240)', + 'rgb(210, 234, 229)', + 'rgb(75, 192, 192)', + 'rgb(201, 203, 207)' + ]; + + //create on dataset for each type of missing values and put it in the list barData.datasets + d.missingValues.forEach((/** @type {any} */ mv, /** @type {number} */ i) => { + //if there is more then 5 type of missing values, create random color for each new type + if (i > 4) { + const color = getRandomColor(); // Verwende die neue Funktion + bcs.push(color); + bgcs.push(color + '33'); + } + const dataset = { + label: mv, + data: [], + backgroundColor: bgcs[i], + borderColor: bcs[i] + }; + // @ts-ignore + barData.datasets.push(dataset); + }); + + //create dataset for empty cells (null) and put it in the list bar.Data.datasets + const nullsDataset = { + label: 'empty cells', + data: [], + backgroundColor: 'rgba(255,191,191, 1)', + borderColor: 'rgba(0, 0, 0, 0.45)' + }; + // @ts-ignore + barData.datasets.push(nullsDataset); + + //set the names of each dataset, this names are variables names + d.affectedVariablen.forEach((/** @type {{ [x: string]: any; VariableName: any; }} */ v) => { + // @ts-ignore + barData.labels.push(v.variableName); + barData.datasets.forEach((d) => { + // @ts-ignore + if (v[d.label]) { + // @ts-ignore + d.data.push(v[d.label]); + return; + } + // @ts-ignore + d.data.push(null); + }); + }); + + // @ts-ignore + if (barDiv) { + barDiv.innerHTML = ''; + } + // get html element of the table that used to show affected variables + // prefer the passed-in element (works with ShadowRoot), fallback to document lookup + // let affectedDiv = arguments[2] ?? document.getElementById('affectedVar'); + // fallback to barDiv (so table is at least visible near chart) and debug + // if (!affectedDiv) { + // console.warn('affectedVar not found in document; falling back to barDiv. Pass affectedVarDiv to completeness_bar.'); + // affectedDiv = barDiv ?? null; + // } + // if (affectedDiv) { + // affectedDiv.innerHTML = ''; + // } + + // Prefer an explicit third argument (works with ShadowRoot). Do NOT silently fall back to barDiv, + // otherwise the table may be appended into the chart container. + // @ts-ignore - support optional args via arguments + const affectedDiv = arguments[2] ?? null; + if (!affectedDiv) { + console.warn('completeness_bar: no affectedVarDiv provided; table will not be rendered. Pass the bound affectedVar element as 3rd arg to place the table beside the chart.'); + } else { + affectedDiv.innerHTML = ''; + } + + if (d.affectedVariablen.length > 0) { + if (d.affectedVariablen.length > 10) { + barCanvas.height = d.affectedVariablen.length * 16; + barCanvas.style.height = barCanvas.height + 'px'; + } + + // Tabelle rechts befüllen mit BExIS-Farben + const table = document.createElement('table'); + const thead = document.createElement('thead'); + const tbody = document.createElement('tbody'); + + // Tabellen-Grundstyles + table.style.width = '100%'; + table.style.borderCollapse = 'collapse'; + table.style.backgroundColor = '#ffffff'; + table.style.boxShadow = '0 1px 3px rgba(0, 0, 0, 0.1)'; + table.style.fontSize = '1.3rem'; + + // Header mit BExIS-Farben und STICKY Position + const headRow = document.createElement('tr'); + const th = document.createElement('th'); + th.textContent = `${d.affectedVariablen.length} of ${d.countColumns} variables are affected`; + th.style.backgroundColor = '#bee1da'; + th.style.color = '#2c3e50'; + th.style.fontWeight = '600'; + th.style.padding = '0.75rem 1rem'; + th.style.borderBottom = '2px solid #95c9be'; + th.style.whiteSpace = 'nowrap'; + th.style.textAlign = 'left'; + th.style.position = 'sticky'; // STICKY HEADER + th.style.top = '0'; // Bleibt oben beim Scrollen + th.style.zIndex = '10'; // Über anderen Elementen + headRow.appendChild(th); + thead.appendChild(headRow); + table.appendChild(thead); + + // Body mit korrigiertem Farbverhalten + d.allVariablen.forEach((v, index) => { + const tr = document.createElement('tr'); + const td = document.createElement('td'); + td.textContent = v.variableName; + td.style.padding = '0.75rem 1rem'; + td.style.borderBottom = '1px solid #dee2e6'; + td.style.color = '#212529'; + td.style.whiteSpace = 'nowrap'; + + // Prüfe, ob Variable betroffen ist + const isAffected = d.affectedVariablen.some(av => av.variableId === v.variableId); + + // Setze Hintergrundfarben basierend auf Affected-Status + let originalBg; + if (isAffected) { + // Betroffene Variablen: Rot-Töne + tr.style.backgroundColor = '#ffbfbf'; + tr.style.borderLeft = '3px solid #dc3545'; + originalBg = '#ffbfbf'; + } else if (index % 2 === 1) { + // Nicht betroffene, ungerade Zeilen: Helles Grau + tr.style.backgroundColor = '#f8fafa'; + originalBg = '#f8fafa'; + } else { + // Nicht betroffene, gerade Zeilen: Weiß + tr.style.backgroundColor = '#ffffff'; + originalBg = '#ffffff'; + } + + // Hover-Effekt: Unterschiedliche Farben für affected/nicht-affected + tr.addEventListener('mouseenter', function() { + if (isAffected) { + this.style.backgroundColor = '#ff9999'; // Dunkleres Rot beim Hover + } else { + this.style.backgroundColor = '#e3f3f1'; // Türkis beim Hover + } + this.style.cursor = 'pointer'; + }); + + tr.addEventListener('mouseleave', function() { + // Zurück zur Original-Farbe + this.style.backgroundColor = originalBg; + }); + + tr.appendChild(td); + tbody.appendChild(tr); + }); + + table.appendChild(tbody); + affectedDiv?.appendChild(table); + + // WICHTIG: nicht zurück auf 500x250 skalieren → sonst Abschneiden/Blur + const ctx = prepareCanvas(barCanvas, w, barCanvas.height); + new Chart(ctx, { + type: 'bar', + data: barData, + options: { + responsive: false, + skipNull: true, + borderWidth: 1, + indexAxis: 'y', + layout: { + padding: { + top: 20, + right: 50, + bottom: 30, + left: 50 + } + }, + plugins: { + //textZoom: { factor: 1.8 }, // Schrift intern größer zeichnen + legend: { + labels: { + font: { size: 30, weight: 'bold' }, + } + }, + datalabels: { + formatter: (value) => { + if (value) { + const pr = ((value * 100) / d.countRows).toFixed(2); + return pr > 8 ? pr + '%' : null; + } + return null; + }, + font: { size: 22, weight: 'bold' }, // Von 18 auf 22 + display: 'auto' + }, + tooltip: { + backgroundColor: '#fff', + titleColor: '#000', + bodyColor: '#000', + enabled: true, + titleFont: { size: 10, weight: 'normal' }, // Kleinere Titel-Schriftgröße + bodyFont: { size: 8, weight: 'normal' }, // Kleinere Schriftgröße für Tooltip-Text + callbacks: { + label: function(context) { + return `${context.label}: ${context.raw}`; + } + }, + padding: 12, // Zusätzlicher Abstand für noch größere Boxen + displayColors: false, // Entfernt Farbboxen + boxHeight: 18, // Noch größere Höhe der Tooltip-Box + boxWidth: 18 // Noch größere Breite der Tooltip-Box + } + }, + scales: { + x: { + title: { + display: true, + text: "Row's number", + font: { size: 26, weight: 'bold' } // Von 20 auf 26 + }, + ticks: { font: { size: 22, weight: 'bold' } }, // Von 18 auf 22 + max: d.countRows, + stacked: true + }, + y: { + title: { + display: true, + text: 'Variables', + font: { size: 26, weight: 'bold' } // Von 20 auf 26 + }, + stacked: true, + ticks: { + font: { size: 22, weight: 'bold' }, + padding: 30, + callback: function (index) { + let label = this.getLabelForValue(index); + if (label.length > 20) label = label.substring(0, 20) + '...'; + return label; + } + }, + padding: { left: 90 } + } + }, + interaction: { mode: 'index', axis: 'y', intersect: false } + } + }); + barDiv?.appendChild(barCanvas); + } +} + +/** + * @param {{ count: number; countRows: number; countColumns: number; countData: number; countMv: number; countNull: number; missingValues: any[]; affectedVariablen: any[]; allVariablen: any[]; duplicates: any[]; }} d + * @param {{ DataTypeSystemType: string; uniqueValues: any[]; missingValues: { placeholder: any; }[]; VariableName: string; }} v + * @param {HTMLElement | null} scatterDiv + */ +export function show_unique_value_distribution(d, v, scatterDiv) { + //this scatter show all values in on variable of the table + //const scatterDiv = document.getElementById("scatter"); + const scatterCanvas = document.createElement('canvas'); + const wS = 900, hS = 500; +scatterCanvas.width = wS; +scatterCanvas.height = hS; +scatterCanvas.style.width = wS + 'px'; +scatterCanvas.style.height = hS + 'px'; + + /** + * @param {{ labels: any[]; datasets: any[]; }} d + */ + let scatterData = { + labels: [], + datasets: [] + }; + // d.allVariablen.forEach((v) => { + //if the type of the vriable is string, there is no need for the visualizaion + const types = ['String', 'DateTime']; + if (types.includes(v.dataTypeSystemType)) { + return; + } + //it is not possible to show all variables in one visualization because the range of values can be very different, therefore only one variable needs to be visualized. + //this is exaple, you can change it to visualize one variable of the table + //if (v.VariableName !== "Nitrat") { + // return; + //} + //create random color for border color and background color for the dataset + const color = getRandomColor(); // Verwende die neue Funktion statt der alten Berechnung + + //this is list of the values in the variable as points of x-y-coordinate system + /** + * @type {{ x: any; y: any; r: number; }[]} + */ + const points = []; + /** + * @type {any[]} + */ + let without_missing = []; + if (v.missingValues.length > 0) { + without_missing = v.uniqueValues.filter(function (/** @type {{ var: any; }} */ obj) { + //console.log(v.missingValues[0].placeholder); + return obj.var != v.missingValues[0].placeholder; + }); + } else { + without_missing = v.uniqueValues; + } + + const max = Math.max(...without_missing.map((/** @type {{ count: any; }} */ o) => o.count)); + const min = Math.min(...without_missing.map((/** @type {{ count: any; }} */ o) => o.count)); + const without_max = without_missing.filter(function (/** @type {{ count: number; }} */ obj) { + return obj.count !== max; + }); + const max_new = Math.max(...without_max.map((/** @type {{ count: any; }} */ o) => o.count)); + // console.log(max, min, max_new); + let text = ''; + let add = ''; + if (max / max_new < 10) { + let intval = max / 50; + if (max < 50) { + intval = 1; + } + text = ': max count ' + max; + without_missing.forEach( + (/** @type {{ count: number; var: any; }} */ uv, /** @type {any} */ i) => { + let count = 0; + if (max < 50) { + count = uv.count; + } else { + count = Math.round(uv.count / intval + 1); + add = ' (radius: count/' + intval + ' +1)'; + } + points.push({ + x: i, + y: uv.var, + r: count + }); + } + ); + } else { + let intval = max_new / 50; + + text = ': excluding max count ' + max; + without_max.forEach((/** @type {{ count: number; var: any; }} */ uv, /** @type {any} */ i) => { + let count = 0; + if (max_new < 50) { + count = uv.count; + } else { + count = Math.round(uv.count / intval + 1); + add = ' (radius: count/' + intval + ' +1)'; + } + points.push({ + x: i, + y: uv.var, + r: count + }); + }); + } + // console.log(points); + // @ts-ignore + scatterData.datasets.push({ + label: v.variableName + text + add, + data: points, + borderColor: color, + backgroundColor: color + '33', //make the background color brighter of the border color + borderWidth: 1 + }); + // }); + // console.log(scatterDiv, 'scatter'); + // @ts-ignore + if (scatterDiv) { + scatterDiv.innerHTML = ''; + } + if (scatterData.datasets.length > 0) { + const ctx = prepareCanvas(scatterCanvas, 1000, 500); + new Chart(ctx, { + type: 'bubble', + data: scatterData, + options: { + responsive: false, + layout: { + padding: { + top: 30, + right: 30, + bottom: 30, + left: 30 + } + }, + plugins: { + textZoom: { factor: 1.8 }, + datalabels: { + display: false + }, + legend: { + display: true, // Legende anzeigen + labels: { + font: { size: 50, weight: 'bold' }, + boxWidth: 0, // Keine Box-Breite + boxHeight: 0 // Keine Box-Höhe + } + }, + tooltip: { + titleFont: { size: 40, weight: 'bold' }, // Von 22 auf 26 + bodyFont: { size: 40, weight: 'bold' } // Von 22 auf 24 + } + }, + scales: { + x: { + title: { display: true, text: 'Index', font: { size: 28, weight: 'bold' } }, + ticks: { font: { size: 24, weight: 'bold' } } + }, + y: { + title: { display: true, text: v.variableName, font: { size: 28, weight: 'bold' } }, + ticks: { font: { size: 24, weight: 'bold' } } + } + } +} + }); + scatterDiv?.appendChild(scatterCanvas); + } +} + +/** + * @param {{ duplicates: any[]; allVariablen: any[]; countRows: number; }} d + */ +export function show_dublicates(d) { + // console.log('show_dublicates', d); + + const dupTableElement = arguments[1] ?? document.getElementById('dupTable'); + const duplicatesElement = arguments[2] ?? document.getElementById('duplicates'); + const dupTable = dupTableElement; + const duplicates = duplicatesElement; + + if (dupTable) { + dupTable.innerHTML = ''; + } + if (duplicates) { + duplicates.innerHTML = ''; + } + + let dupPerc = 0; + + if (d.duplicates && d.duplicates.length > 0) { + const table = document.createElement('table'); + const tHead = document.createElement('thead'); + const tBody = document.createElement('tbody'); + + // Tabellen-Grundstyles + table.style.width = '100%'; + table.style.borderCollapse = 'collapse'; + table.style.backgroundColor = '#ffffff'; + table.style.boxShadow = '0 1px 3px rgba(0, 0, 0, 0.1)'; + table.style.fontSize = '1.3rem'; + + // Header Row mit BExIS-Farben + const tr = document.createElement('tr'); + const headcount = document.createElement('th'); + headcount.innerText = 'Duplicates'; + headcount.style.backgroundColor = '#bee1da'; + headcount.style.color = '#2c3e50'; + headcount.style.fontWeight = '600'; + headcount.style.padding = '0.75rem 1rem'; + headcount.style.borderBottom = '2px solid #95c9be'; + headcount.style.whiteSpace = 'nowrap'; + headcount.style.textAlign = 'left'; + tr.appendChild(headcount); + + d.allVariablen.forEach((v) => { + const th = document.createElement('th'); + th.innerText = v.variableName; + th.style.backgroundColor = '#bee1da'; + th.style.color = '#2c3e50'; + th.style.fontWeight = '600'; + th.style.padding = '0.75rem 1rem'; + th.style.borderBottom = '2px solid #95c9be'; + th.style.whiteSpace = 'nowrap'; + th.style.textAlign = 'left'; + tr.appendChild(th); + }); + + tHead.appendChild(tr); + table.appendChild(tHead); + + // Body Rows mit Zebra-Streifen und Hover + let dupSum = -d.duplicates.length; + d.duplicates.forEach((dup, index) => { + const tr = document.createElement('tr'); + + // Zebra-Streifen für gerade Zeilen + if (index % 2 === 1) { + tr.style.backgroundColor = '#f8fafa'; + } else { + tr.style.backgroundColor = '#ffffff'; + } + + const dupCount = document.createElement('td'); + dupCount.innerText = dup['count']; + dupCount.style.fontWeight = '600'; + dupCount.style.padding = '0.75rem 1rem'; + dupCount.style.borderBottom = '1px solid #dee2e6'; + dupCount.style.color = '#212529'; + dupCount.style.whiteSpace = 'nowrap'; + dupSum += dup['count']; + tr.appendChild(dupCount); + + d.allVariablen.forEach((v) => { + const td = document.createElement('td'); + td.innerText = dup['var' + v.variableId]; + td.style.padding = '0.75rem 1rem'; + td.style.borderBottom = '1px solid #dee2e6'; + td.style.color = '#212529'; + td.style.whiteSpace = 'nowrap'; + tr.appendChild(td); + }); + + // Hover-Effekt + const originalBg = index % 2 === 1 ? '#f8fafa' : '#ffffff'; + tr.addEventListener('mouseenter', function() { + this.style.backgroundColor = '#e3f3f1'; + this.style.cursor = 'pointer'; + }); + + tr.addEventListener('mouseleave', function() { + this.style.backgroundColor = originalBg; + }); + + tBody.appendChild(tr); + }); + + table.appendChild(tBody); + dupTable?.appendChild(table); + + dupPerc = parseFloat(((dupSum / d.countRows) * 100).toFixed(20)); + } + + return dupPerc; +} + +/** + * @param {{ DataTypeSystemType: string; uniqueValues: any[]; missingValues: { placeholder: any; }[]; VariableName: string; }} v + * @param {HTMLElement | null} boxplotDiv + */ +export function boxplot(v, boxplotDiv) { + if (!boxplotDiv) { + console.warn('boxplotDiv ist null!'); + return; + } + const boxplotCanvas = document.createElement('canvas'); + boxplotCanvas.width = 600; + boxplotCanvas.height = 400; + boxplotCanvas.style.width = '600px'; + boxplotCanvas.style.height = '400px'; + + const boxplotData = { + labels: [], + datasets: [] + }; + + const types = ['String', 'DateTime']; + if (types.includes(v.dataTypeSystemType)) { + return; + } + + boxplotData.labels.push(v.VariableName || v.variableName || 'Variable'); + + // Erzeuge ein Array mit allen Rohwerten (nicht nur unique) + const data = []; + let without_missing = []; + if (v.missingValues.length > 0) { + without_missing = v.uniqueValues.filter(obj => obj.var != v.missingValues[0].placeholder); + } else { + without_missing = v.uniqueValues; + } + without_missing.forEach(uv => { + if (typeof uv.var !== 'number') return; + for (let i = 0; i < uv.count; i++) { + data.push(uv.var); + } + }); + + boxplotData.datasets.push({ + label: v.VariableName || v.variableName || 'Variable', + data: [data], // Chart.js erwartet ein Array von Arrays für mehrere Boxen! + borderColor: 'rgb(54, 162, 235)', + backgroundColor: 'rgba(54, 162, 235, 0.2)', + borderWidth: 1, + outlierBackgroundColor: 'red', + itemBackgroundColor: '#000', + outlierRadius: 4, + itemRadius: 2 + }); + + if (boxplotData.datasets.length > 0) { + const ctx = prepareCanvas(boxplotCanvas, 600, 400); + new Chart(ctx, { + type: 'boxplot', + data: boxplotData, + options: { + responsive: false, + layout: { + padding: { + top: 20, + right: 30, + bottom: 20, + left: 20 + } + }, + plugins: { + textZoom: { factor: 1.8 }, + legend: { + labels: { font: { size: 26, weight: 'bold' } } + }, + datalabels: { + display: false + }, + tooltip: { + backgroundColor: '#fff', + titleColor: '#000', + bodyColor: '#000', + titleFont: { size: 26, weight: 'bold' }, // Von 22 auf 26 + bodyFont: { size: 24, weight: 'bold' }, // Von 22 auf 24 + enabled: true + } + }, + scales: { + x: { + ticks: { font: { size: 18 } } + }, + y: { + title: { + display: true, + text: 'Value', + font: { size: 26, weight: 'bold' } // NEU + }, + type: 'logarithmic', + //set the min and max of the y-axis + min: v.min - 1, + max: v.max + 1, + ticks: { font: { size: 22, weight: 'bold' } } // Von 18 auf 22 + } + } + } + }); + boxplotDiv.appendChild(boxplotCanvas); + } +} + +/** + * @param {{ DataTypeSystemType: string; uniqueValues: { var: any; count: any; }[]; VariableName: string; missingValues: { placeholder: any; }[];}} v + * @param {HTMLElement | null} barDiv + */ +export function bar_cat(v, barDiv) { + const barCanvas = document.createElement('canvas'); + const categories = Math.min(20, (v.uniqueValues?.length || 0)); + const w = 1400; + const h = 500; // Match the height of the scatter chart + barCanvas.width = w; + barCanvas.height = h; + barCanvas.style.width = w + 'px'; + barCanvas.style.height = h + 'px'; + + // Dynamically calculate bar thickness based on available space + const maxBarWidth = Math.floor(w / (categories * 2)); // Ensure bars fit within the canvas + const barThickness = Math.min(maxBarWidth, 50); // Cap the bar thickness at 50px + + //if the type of the vriable is string, there is no need for the visualizaion + const types = ['String']; + if (!types.includes(v.dataTypeSystemType)) { + return; + } + + // @ts-ignore + //boxplotData.labels.push(v.VariableName); + /** + * @type {any[]} + */ + const data = []; + /** + * @type {any[]} + */ + const label = []; + let i = 0; + + /** + * @type {any[]} + */ + let without_missing = []; + if (v.missingValues.length > 0) { + without_missing = v.uniqueValues.filter(function (/** @type {{ var: any; }} */ obj) { + return obj.var != v.missingValues[0].placeholder; + }); + } else { + without_missing = v.uniqueValues; + } + + without_missing.sort(compare); + + without_missing.forEach((/** @type {{ var: any; count: any}} */ uv) => { + //if the value is not number (null) don't put it in the data for the boxplot, otherwise, it's not gonna working + + if (i < 20) { + label.push(uv.var); + data.push(uv.count); + } + i = i + 1; + }); + // console.log('bar_cat', data, label); + // @ts-ignore + let barData = { + labels: [], + datasets: [] + }; + // @ts-ignore + barData.labels = label; + // @ts-ignore + barData.datasets.push({ + label: v.variableName, + data: data, + borderColor: 'rgb(54, 162, 235)', //border color of the dataset + backgroundColor: 'rgba(190, 225, 218, 1)', //background color of the dataset + barPercentage: 0.5, + barThickness: barThickness, // Dynamically calculated bar thickness + maxBarThickness: barThickness, // Ensure max thickness matches calculated value + minBarLength: 2 + }); + + // @ts-ignore + if (barDiv) { + barDiv.innerHTML = ''; + } + if (barData.datasets.length > 0) { + const ctx = prepareCanvas(barCanvas, w, h); + new Chart(ctx, { + type: 'bar', + data: barData, + options: { + responsive: false, + layout: { + padding: { + top: 30, + right: 30, + bottom: 30, + left: 30 + } + }, + plugins: { + textZoom: { factor: 1.8 }, // Schrift intern größer zeichnen + legend: { + display: true, + labels: { + font: { size: 30, weight: 'bold' }, + boxWidth: 0, + boxHeight: 0 + } + }, + datalabels: { + display: false + }, + tooltip: { + titleFont: { size: 14, weight: 'bold' }, + bodyFont: { size: 14, weight: 'bold' }, + boxHeight: 18, + boxWidth: 25 + } + }, + scales: { + x: { title: { + display: true, + text: 'Categories', + font: { size: 40, weight: 'bold' } // Von 20 auf 26 + }, + ticks: { font: { size: 40, weight: 'bold' } } }, + y: { + title: { + display: true, + text: 'Count', + font: { size: 40, weight: 'bold' } // Von 20 auf 26 + }, + beginAtZero: true, + ticks: { font: { size: 40, weight: 'bold' } } } + } + } + }); + barDiv?.appendChild(barCanvas); + } +} + +/** + * @param {{ count: number; }} a + * @param {{ count: number; }} b + */ +function compare(a, b) { + if (a.count > b.count) { + return -1; + } + if (a.count < b.count) { + return 1; + } + return 0; +} + + +/** + * @returns {string} Hex-Farbcode + */ +function getRandomColor() { + const colorPalette = [ + '#7dc9bd', + '#ffb64d', + '#81cb7b' + ]; + + const randomIndex = Math.floor(Math.random() * colorPalette.length); + return colorPalette[randomIndex]; +} diff --git a/BExIS.Modules.DQM.UI.Svelte/src/main.js b/BExIS.Modules.DQM.UI.Svelte/src/main.js new file mode 100644 index 0000000..083a0fb --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/main.js @@ -0,0 +1,4 @@ +import MyComponent from './DatQuality.svelte'; + +// Register as a custom element +customElements.define('data-quality', MyComponent); \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI.Svelte/src/services/DataCaller.js b/BExIS.Modules.DQM.UI.Svelte/src/services/DataCaller.js new file mode 100644 index 0000000..93dd6b2 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/services/DataCaller.js @@ -0,0 +1,22 @@ +import { Api } from "@bexis2/bexis2-core-ui"; +import { setApiConfig } from '@bexis2/bexis2-core-ui'; + + + + +// Fetch data from API and return as JSON object +export const getData = async (endpoint, id) => { + //setApiConfig('http://localhost:44345/', 'epetzold', '2021.B2.Go$On'); + try{ + console.log("Fetching data from API for ID:", id); + + const response = await Api.get(endpoint + '/' + id); + console.log("Data fetched from API:", response.data); + return response.data; + } + catch(error){ + console.error(error); + } + +} + diff --git a/BExIS.Modules.DQM.UI.Svelte/src/shims/environment.js b/BExIS.Modules.DQM.UI.Svelte/src/shims/environment.js new file mode 100644 index 0000000..73b7444 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/shims/environment.js @@ -0,0 +1,4 @@ +export const browser = true; +export const dev = false; +export const mode = 'production'; +export const prerendering = false; \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI.Svelte/src/store/store.js b/BExIS.Modules.DQM.UI.Svelte/src/store/store.js new file mode 100644 index 0000000..dd293b3 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/store/store.js @@ -0,0 +1,33 @@ +import { writable } from 'svelte/store'; + +const createLocalStore = (key, startValue) => { + const { subscribe, set, update } = writable(startValue); + + return { + subscribe, + set, + update, + useLocalStorage: () => { + const json = localStorage.getItem(key); + if (json) { + set(JSON.parse(json)); + } + + subscribe((current) => { + localStorage.setItem(key, JSON.stringify(current)); + }); + } + }; +}; + +export const datasets_result = createLocalStore('datasets_result', []); +export const structured_datasets = createLocalStore('structured_datasets', []); +export const table_content = createLocalStore('table_content', []); +export const token = createLocalStore('token', ''); +export const username = createLocalStore('username', ''); +export const url = createLocalStore('url', ''); +export const api_version = createLocalStore('api_version', ''); +export const storeCurrentUrl = writable(); + +export const structured_datasets_date = createLocalStore('structured_datasets_date', ''); +export const datasets_result_date = createLocalStore('datasets_result_date', ''); \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI.Svelte/src/tailwind.generated.css b/BExIS.Modules.DQM.UI.Svelte/src/tailwind.generated.css new file mode 100644 index 0000000..a34327b --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/src/tailwind.generated.css @@ -0,0 +1 @@ +/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:#0000;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=checkbox]:indeterminate,[type=radio]:checked:focus,[type=radio]:checked:hover{border-color:#0000;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:#0000;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}@media (min-width:768px){.\!legend{font-size:1.5rem!important;line-height:2rem!important}.legend{font-size:1.5rem;line-height:2rem}}body{background-color:rgb(var(--color-surface-50));font-size:1rem;line-height:1.5rem;font-family:var(--theme-font-family-base);color:rgba(var(--theme-font-color-base))}.dark body{background-color:rgb(var(--color-surface-900));color:rgba(var(--theme-font-color-dark))}::-moz-selection{background-color:rgb(var(--color-primary-500)/.3)}::selection{background-color:rgb(var(--color-primary-500)/.3)}html{-webkit-tap-highlight-color:rgba(128,128,128,.5);scrollbar-color:#0003 #ffffff0d}:root{scrollbar-color:#80808080 #0000001a;scrollbar-width:thin}html.dark{scrollbar-color:#ffffff1a #0000000d}hr:not(.divider){display:block;border-top-width:1px;border-style:solid;border-color:rgb(var(--color-surface-300))}.dark hr:not(.divider){border-color:rgb(var(--color-surface-600))}fieldset,label,legend{display:block}::-moz-placeholder{color:rgb(var(--color-surface-500))}::placeholder{color:rgb(var(--color-surface-500))}.dark ::-moz-placeholder{color:rgb(var(--color-surface-400))}.dark ::placeholder{color:rgb(var(--color-surface-400))}:is(.dark input::-webkit-calendar-picker-indicator){--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z'/%3E%3C/svg%3E") no-repeat 50% 50%;pointer-events:none;height:1rem;width:1rem;border-radius:9999px;background-size:contain;opacity:0}input[type=search]:focus::-webkit-search-cancel-button{pointer-events:auto;opacity:1}:is(.dark input[type=search]::-webkit-search-cancel-button){--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}progress{webkit-appearance:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;height:.5rem;width:100%;overflow:hidden;border-radius:var(--theme-rounded-base);background-color:rgb(var(--color-surface-400))}.dark progress{background-color:rgb(var(--color-surface-500))}progress::-webkit-progress-bar{background-color:rgb(var(--color-surface-400))}.dark progress::-webkit-progress-bar{background-color:rgb(var(--color-surface-500))}progress::-webkit-progress-value{background-color:rgb(var(--color-surface-900))}.dark progress::-webkit-progress-value{background-color:rgb(var(--color-surface-50))}::-moz-progress-bar{background-color:rgb(var(--color-surface-900))}.dark ::-moz-progress-bar{background-color:rgb(var(--color-surface-50))}:indeterminate::-moz-progress-bar{width:0}input[type=file]:not(.file-dropzone-input)::file-selector-button:disabled{cursor:not-allowed;opacity:.5}input[type=file]:not(.file-dropzone-input)::file-selector-button:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}input[type=file]:not(.file-dropzone-input)::file-selector-button:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}input[type=file]:not(.file-dropzone-input)::file-selector-button{font-size:.875rem;line-height:1.25rem;padding:.375rem .75rem;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-radius:var(--theme-rounded-base);background-color:rgb(var(--color-surface-900));color:rgb(var(--color-surface-50));margin-right:.5rem;border-width:0}input[type=file]:not(.file-dropzone-input)::file-selector-button>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}input[type=file]:not(.file-dropzone-input)::file-selector-button:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}input[type=file]:not(.file-dropzone-input)::file-selector-button:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark input[type=file]:not(.file-dropzone-input)::file-selector-button{background-color:rgb(var(--color-surface-50));color:rgb(var(--color-surface-900))}[type=range]{width:100%;accent-color:rgb(var(--color-surface-900)/1)}:is(.dark [type=range]){accent-color:rgb(var(--color-surface-50)/1)}[data-sort]{cursor:pointer}.dark [data-sort]:hover:hover,[data-sort]:hover:hover{background-color:rgb(var(--color-primary-500)/.1)}[data-sort]:after{margin-left:.5rem!important;opacity:0;--tw-content:"↓"!important;content:var(--tw-content)!important}[data-popup]{position:absolute;top:0;left:0;display:none;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.dark .divider-vertical{border-color:rgb(var(--color-surface-600))}.h2{font-size:1.5rem;line-height:2rem;font-family:var(--theme-font-family-heading)}.h3{font-size:1.25rem}.h3,.h4{line-height:1.75rem;font-family:var(--theme-font-family-heading)}.h4{font-size:1.125rem}.h5{font-size:1rem;line-height:1.5rem}.h5,.h6{font-family:var(--theme-font-family-heading)}.h6{font-size:.875rem;line-height:1.25rem}.anchor{--tw-text-opacity:1;color:rgb(var(--color-primary-700)/var(--tw-text-opacity));text-decoration-line:underline}.anchor:hover{--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:is(.dark .anchor){--tw-text-opacity:1;color:rgb(var(--color-primary-500)/var(--tw-text-opacity))}.blockquote{border-left-width:8px;--tw-border-opacity:1;border-left-color:rgb(var(--color-secondary-500)/var(--tw-border-opacity));padding-right:1rem;padding-left:1rem;font-size:1rem;line-height:1.5rem;font-style:italic;color:rgba(var(--theme-font-color-base))}.dark .blockquote{color:rgba(var(--theme-font-color-dark))}.dark .kbd{background-color:rgb(var(--color-surface-600))}.time{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(var(--color-surface-500)/var(--tw-text-opacity))}:is(.dark .time){--tw-text-opacity:1;color:rgb(var(--color-surface-400)/var(--tw-text-opacity))}.pre{overflow-x:auto;white-space:pre-wrap;background-color:#171717e6;padding:1rem;font-size:1rem;line-height:1.5rem;color:rgb(255 255 255/var(--tw-text-opacity));border-radius:var(--theme-rounded-container)}.code,.pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tw-text-opacity:1}.code{white-space:nowrap;font-size:.75rem;line-height:1rem;color:rgb(var(--color-primary-700)/var(--tw-text-opacity));background-color:rgb(var(--color-primary-500)/.3);border-radius:.25rem;padding:.125rem .25rem}:is(.dark .code){--tw-text-opacity:1;color:rgb(var(--color-primary-400)/var(--tw-text-opacity));background-color:rgb(var(--color-primary-500)/.2)}.alert{display:flex;flex-direction:column;align-items:flex-start;padding:1rem;color:rgb(var(--color-surface-900));border-radius:var(--theme-rounded-container)}.alert>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.dark .alert{color:rgb(var(--color-surface-50))}.alert-message{flex:1 1 auto}.alert-message>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.badge{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:.75rem;line-height:1rem;font-weight:600;padding:.25rem .5rem;border-radius:var(--theme-rounded-base)}.badge>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}:is(.dark .badge-glass){background-color:rgb(var(--color-surface-500)/.2);--tw-ring-color:#fafafa0d}.dark .crumb-separator{color:rgb(var(--color-surface-200))}.btn-group>:disabled,.btn-icon:disabled,.btn:disabled{cursor:not-allowed!important;opacity:.5!important}.btn-group>:disabled:hover,.btn-icon:disabled:hover,.btn:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.btn-group>:disabled:active,.btn-icon:disabled:active,.btn:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn{font-size:1rem;line-height:1.5rem;padding:9px 1.25rem;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-radius:var(--theme-rounded-base)}.btn>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.btn:hover{--tw-brightness:brightness(1.15)}.btn:active,.btn:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.btn:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9)}.btn-sm{padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem}.btn-icon{font-size:1rem;line-height:1.5rem;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;padding:0;aspect-ratio:1/1;width:43px;border-radius:9999px}.btn-icon>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.btn-icon:hover{--tw-brightness:brightness(1.15)}.btn-icon:active,.btn-icon:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.btn-icon:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9)}.btn-icon-sm{aspect-ratio:1/1;width:33px;font-size:.875rem;line-height:1.25rem}.btn-group{display:inline-flex;flex-direction:row;overflow:hidden;border-radius:var(--theme-rounded-base);isolation:isolate}.btn-group>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0px*var(--tw-space-x-reverse));margin-left:calc(0px*(1 - var(--tw-space-x-reverse)))}.btn-group a,.btn-group button,.btn-group-vertical a,.btn-group-vertical button{font-size:1rem;line-height:1.5rem;padding:9px 1.25rem;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;color:inherit!important;text-decoration-line:none!important}.btn-group a>:not([hidden])~:not([hidden]),.btn-group button>:not([hidden])~:not([hidden]),.btn-group-vertical a>:not([hidden])~:not([hidden]),.btn-group-vertical button>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.btn-group a:hover,.btn-group button:hover,.btn-group-vertical a:hover,.btn-group-vertical button:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);background-color:rgb(var(--color-surface-50)/3%)}.btn-group a:active,.btn-group button:active,.btn-group-vertical a:active,.btn-group-vertical button:active{background-color:rgb(var(--color-surface-900)/3%)}.btn-group>*+*{border-top-width:0;border-left-width:1px;border-color:rgb(var(--color-surface-500)/.2)}.card{background-color:rgb(var(--color-surface-100));--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:#1717170d;border-radius:var(--theme-rounded-container)}.card,.dark .card{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dark .card{background-color:rgb(var(--color-surface-800));--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:#fafafa0d}a.card{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}a.card:hover{--tw-brightness:brightness(1.05);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.codeblock pre{counter-reset:line}.codeblock code.lineNumbers>span.line{counter-increment:line}.codeblock code.lineNumbers>span.line:before{content:counter(line) "";opacity:.5}.\!chip{cursor:pointer!important;white-space:nowrap!important;padding:.375rem .75rem!important;text-align:center!important;font-size:.75rem!important;line-height:1rem!important;border-radius:.25rem!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;transition-property:all!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important}.chip{cursor:pointer;white-space:nowrap;padding:.375rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;border-radius:.25rem;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.\!chip>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0!important;margin-right:calc(.5rem*var(--tw-space-x-reverse))!important;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))!important}.chip>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}a.chip:hover,button.chip:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}a.\!chip:hover,button.\!chip:hover{--tw-brightness:brightness(1.15)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.\!chip:disabled,.chip-disabled,.chip:disabled{cursor:not-allowed!important;opacity:.5!important}.\!chip:disabled:active{--tw-scale-x:1!important;--tw-scale-y:1!important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.chip-disabled:active,.chip:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!legend{font-size:1.25rem!important;line-height:1.75rem!important;font-family:var(--theme-font-family-heading)!important}.legend{font-size:1.25rem;line-height:1.75rem;font-family:var(--theme-font-family-heading)}.label>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.\!input{width:100%!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.2s!important;background-color:rgb(var(--color-surface-200))!important;border-width:var(--theme-border-base)!important;border-color:rgb(var(--color-surface-400))!important}.\!input,.input,.input-group,.select,.textarea{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.input,.input-group,.select,.textarea{width:100%;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;background-color:rgb(var(--color-surface-200));border-width:var(--theme-border-base);border-color:rgb(var(--color-surface-400))}.dark .input,.dark .input-group,.dark .select,.dark .textarea{background-color:rgb(var(--color-surface-700));border-color:rgb(var(--color-surface-500))}.dark .\!input{background-color:rgb(var(--color-surface-700))!important;border-color:rgb(var(--color-surface-500))!important}.\!input:hover{--tw-brightness:brightness(1.05)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.input-group:hover,.input:hover,.select:hover,.textarea:hover{--tw-brightness:brightness(1.05);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!input:focus{--tw-brightness:brightness(1.05)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.input-group:focus,.input:focus,.select:focus,.textarea:focus{--tw-brightness:brightness(1.05);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!input:focus-within{--tw-border-opacity:1!important;border-color:rgb(var(--color-primary-500)/var(--tw-border-opacity))!important}.input-group:focus-within,.input:focus-within,.select:focus-within,.textarea:focus-within{--tw-border-opacity:1;border-color:rgb(var(--color-primary-500)/var(--tw-border-opacity))}.\!input{border-radius:var(--theme-rounded-base)!important}.input,.input-group{border-radius:var(--theme-rounded-base)}.select,.textarea{border-radius:var(--theme-rounded-container)}.select>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.select{padding:.5rem 2rem .5rem .5rem}.select[size]{background-image:none}.select optgroup>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.select optgroup{font-weight:700}.select optgroup option{margin-left:0;padding-left:0}.select optgroup option:first-of-type{margin-top:.75rem}.select optgroup option:last-child{margin-bottom:.75rem!important}.select option{cursor:pointer;padding:.5rem 1rem;background-color:rgb(var(--color-surface-200));border-radius:var(--theme-rounded-base)}.dark .select option{background-color:rgb(var(--color-surface-700))}.select option:checked{background:rgb(var(--color-primary-500)) linear-gradient(0deg,rgb(var(--color-primary-500)) 0,rgb(var(--color-primary-500)) 100%);color:rgb(var(--on-primary))}.checkbox,.radio{height:1.25rem;width:1.25rem;cursor:pointer;border-radius:.25rem;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;background-color:rgb(var(--color-surface-200));border-width:var(--theme-border-base);border-color:rgb(var(--color-surface-400))}.dark .checkbox,.dark .radio{background-color:rgb(var(--color-surface-700));border-color:rgb(var(--color-surface-500))}.checkbox:focus,.checkbox:hover,.radio:focus,.radio:hover{--tw-brightness:brightness(1.05);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.checkbox:focus,.radio:focus{--tw-border-opacity:1;border-color:rgb(var(--color-primary-500)/var(--tw-border-opacity))}.checkbox:checked,.checkbox:checked:focus,.checkbox:checked:hover,.checkbox:indeterminate,.checkbox:indeterminate:focus,.checkbox:indeterminate:hover,.radio:checked,.radio:checked:focus,.radio:checked:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500)/var(--tw-bg-opacity))}.checkbox:checked:focus,.checkbox:indeterminate:focus,.radio:checked:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.radio{border-radius:var(--theme-rounded-base)}.\!input[type=file]{padding:.25rem!important}.input[type=file]{padding:.25rem}.\!input[type=color]{height:2.5rem!important;width:2.5rem!important;cursor:pointer!important;overflow:hidden!important;border-style:none!important;border-radius:var(--theme-rounded-base)!important;-webkit-appearance:none!important}.input[type=color]{height:2.5rem;width:2.5rem;cursor:pointer;overflow:hidden;border-style:none;border-radius:var(--theme-rounded-base);-webkit-appearance:none}.\!input[type=color]::-webkit-color-swatch-wrapper{padding:0!important}.input[type=color]::-webkit-color-swatch-wrapper{padding:0}.\!input[type=color]::-webkit-color-swatch{border-style:none!important}.input[type=color]::-webkit-color-swatch{border-style:none}.\!input[type=color]::-webkit-color-swatch:hover{--tw-brightness:brightness(1.1)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.input[type=color]::-webkit-color-swatch:hover{--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!input[type=color]::-moz-color-swatch{border-style:none!important}.input[type=color]::-moz-color-swatch{border-style:none}.\!input:disabled,.input-group>input:disabled,.input-group>select:disabled,.input-group>textarea:disabled,.input:disabled,.select:disabled,.textarea:disabled{cursor:not-allowed!important;opacity:.5!important}.\!input:disabled:hover,.input-group>input:disabled:hover,.input-group>select:disabled:hover,.input-group>textarea:disabled:hover,.input:disabled:hover,.select:disabled:hover,.textarea:disabled:hover{--tw-brightness:brightness(1)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.\!input[readonly],.input[readonly],.select[readonly],.textarea[readonly]{cursor:not-allowed!important;border-color:#0000!important}.\!input[readonly]:hover,.input[readonly]:hover,.select[readonly]:hover,.textarea[readonly]:hover{--tw-brightness:brightness(1)!important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.input-group{display:grid;overflow:hidden}.input-group input:not([type=checkbox]):not([type=radio]),.input-group select{border-width:0;background-color:initial;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.input-group select option{background-color:rgb(var(--color-surface-200))}.dark .input-group select option{background-color:rgb(var(--color-surface-700))}.input-group a,.input-group button,.input-group div{display:flex;align-items:center;justify-content:space-between;padding-left:1rem;padding-right:1rem}.input-group-divider a,.input-group-divider div,.input-group-divider input,.input-group-divider select{border-left-width:1px;border-color:rgb(var(--color-surface-400));--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;min-width:-moz-fit-content!important;min-width:fit-content!important}.dark .input-group-divider a,.dark .input-group-divider div,.dark .input-group-divider input,.dark .input-group-divider select{border-color:rgb(var(--color-surface-500))}.input-group-divider a:focus,.input-group-divider div:focus,.input-group-divider input:focus,.input-group-divider select:focus{border-color:rgb(var(--color-surface-400))}.dark .input-group-divider a:focus,.dark .input-group-divider div:focus,.dark .input-group-divider input:focus,.dark .input-group-divider select:focus{border-color:rgb(var(--color-surface-500))}.input-group-divider :first-child{border-left-width:0!important}.dark .input-group-shim{color:rgb(var(--color-surface-300))}:is(.dark .input-success){border-color:rgb(var(--color-success-500)/var(--tw-border-opacity));background-color:rgb(var(--color-success-200)/var(--tw-bg-opacity));color:rgb(var(--color-success-700)/var(--tw-text-opacity))}:is(.dark .input-success),:is(.dark .input-warning){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .input-warning){border-color:rgb(var(--color-warning-500)/var(--tw-border-opacity));background-color:rgb(var(--color-warning-200)/var(--tw-bg-opacity));color:rgb(var(--color-warning-700)/var(--tw-text-opacity))}.input-error,:is(.dark .input-error){--tw-border-opacity:1;border-color:rgb(var(--color-error-500)/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(var(--color-error-200)/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(var(--color-error-500)/var(--tw-text-opacity))}.input-error::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--color-error-500)/var(--tw-text-opacity))}.input-error::placeholder{--tw-text-opacity:1;color:rgb(var(--color-error-500)/var(--tw-text-opacity))}.variant-form-material{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;background-color:rgb(var(--color-surface-500)/.1);border-width:0 0 2px}:is(.dark .variant-form-material){background-color:rgb(var(--color-surface-500)/.2)}.variant-form-material[type=file]{padding-top:.375rem!important;padding-bottom:.375rem!important}.list,.list-dl,.list-nav ul{list-style-type:none}.list-dl>:not([hidden])~:not([hidden]),.list-nav ul>:not([hidden])~:not([hidden]),.list>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.list li{display:flex;align-items:center;border-radius:var(--theme-rounded-base)}.list li>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.list-nav a,.list-nav button,.list-option{display:flex;align-items:center;padding:.5rem 1rem;outline:2px solid #0000;outline-offset:2px;cursor:pointer;border-radius:var(--theme-rounded-base)}.list-nav a>:not([hidden])~:not([hidden]),.list-nav button>:not([hidden])~:not([hidden]),.list-option>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.dark .list-nav a:hover,.dark .list-nav button:hover,.dark .list-option:hover,.list-nav a:hover,.list-nav button:hover,.list-option:hover{background-color:rgb(var(--color-primary-500)/.1)}.list-nav a:focus,.list-nav button:focus,.list-option:focus{background-color:rgb(var(--color-primary-400)/.2);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;color:rgb(var(--color-primary-700))}.dark .list-nav a:focus,.dark .list-nav button:focus,.dark .list-option:focus{color:rgb(var(--color-primary-200))}:is(.dark .list-nav a:focus),:is(.dark .list-nav button:focus),:is(.dark .list-option:focus){background-color:rgb(var(--color-primary-500)/.2)}.dark .logo-item{background-color:rgb(var(--color-surface-800))}:is(.dark .logo-item){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.placeholder{height:1.25rem;background-color:rgb(var(--color-surface-300));border-radius:var(--theme-rounded-base)}.dark .placeholder,.dark .placeholder-circle{background-color:rgb(var(--color-surface-600))}.table-container{overflow-x:auto}.table,.table-container{width:100%;border-radius:var(--theme-rounded-container)}.table{table-layout:auto;overflow:hidden;background-color:rgb(var(--color-surface-100))}.dark .table{background-color:rgb(var(--color-surface-800))}.table-interactive tbody tr{cursor:pointer}.dark .table-interactive tbody tr:hover:hover,.dark .table-interactive tbody tr:hover:nth-child(2n):hover,.table-interactive tbody tr:hover:hover,.table-interactive tbody tr:hover:nth-child(2n):hover{background-color:rgb(var(--color-primary-500)/.1)}.table-sort-asc:after{--tw-content:"↑"!important}.table-sort-asc:after,.table-sort-dsc:after{opacity:.5;content:var(--tw-content)!important}.table-sort-dsc:after{--tw-content:"↓"!important}.table thead{border-bottom-width:1px;border-color:rgb(var(--color-surface-500)/.2);background-color:rgb(var(--color-surface-200))}.dark .table thead{background-color:rgb(var(--color-surface-700))}.table thead tr{text-align:left;text-transform:capitalize}.table thead th{padding:1rem;font-weight:700}.table tbody tr{border-bottom-width:1px;border-color:rgb(var(--color-surface-500)/.2)}.table tbody tr:nth-child(2n){background-color:rgb(var(--color-surface-500)/.05)}.table tbody td{white-space:nowrap;padding:1rem .75rem;vertical-align:top;font-size:.875rem;line-height:1.25rem}.table tfoot{background-color:rgb(var(--color-surface-100))}.dark .table tfoot{background-color:rgb(var(--color-surface-800))}.table tfoot tr{text-align:left;text-transform:capitalize}.table tfoot td,.table tfoot th{padding:1rem}.w-modal{width:100%;max-width:640px}.modal :focus:not([tabindex="-1"]):not(.input):not(.textarea):not(.select):not(.input-group):not(.input-group input){outline-style:auto;outline-color:-webkit-focus-ring-color}[data-popup] .\!arrow{position:absolute!important;height:.5rem!important;width:.5rem!important;--tw-rotate:45deg!important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}[data-popup] .arrow{position:absolute;height:.5rem;width:.5rem;--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(.dark .variant-outline-primary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-primary-500)/var(--tw-ring-opacity))}:is(.dark .variant-outline-secondary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-secondary-500)/var(--tw-ring-opacity))}:is(.dark .variant-outline-tertiary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-tertiary-500)/var(--tw-ring-opacity))}:is(.dark .variant-outline-success){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-success-500)/var(--tw-ring-opacity))}:is(.dark .variant-outline-warning){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-warning-500)/var(--tw-ring-opacity))}:is(.dark .variant-outline-error){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-error-500)/var(--tw-ring-opacity))}:is(.dark .variant-outline),:is(.dark .variant-outline-surface){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-surface-500)/var(--tw-ring-opacity))}.variant-filled{background-color:rgb(var(--color-surface-900));color:rgb(var(--color-surface-50))}.dark .variant-filled{background-color:rgb(var(--color-surface-50));color:rgb(var(--color-surface-900))}.variant-filled-primary,:is(.dark .variant-filled-primary){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500)/var(--tw-bg-opacity));color:rgb(var(--on-primary))}.variant-filled-secondary,:is(.dark .variant-filled-secondary){--tw-bg-opacity:1;background-color:rgb(var(--color-secondary-500)/var(--tw-bg-opacity));color:rgb(var(--on-secondary))}:is(.dark .variant-filled-tertiary){--tw-bg-opacity:1;background-color:rgb(var(--color-tertiary-500)/var(--tw-bg-opacity));color:rgb(var(--on-tertiary))}:is(.dark .variant-filled-success){--tw-bg-opacity:1;background-color:rgb(var(--color-success-500)/var(--tw-bg-opacity));color:rgb(var(--on-success))}:is(.dark .variant-filled-warning){--tw-bg-opacity:1;background-color:rgb(var(--color-warning-500)/var(--tw-bg-opacity));color:rgb(var(--on-warning))}:is(.dark .variant-filled-error){--tw-bg-opacity:1;background-color:rgb(var(--color-error-500)/var(--tw-bg-opacity));color:rgb(var(--on-error))}.variant-filled-surface{background-color:rgb(var(--color-surface-400));color:rgb(var(--on-surface))}.dark .variant-filled-surface{background-color:rgb(var(--color-surface-500))}:is(.dark .variant-filled-surface){color:rgb(var(--on-surface))}:is(.dark .variant-ringed){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-surface-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ringed-primary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-primary-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ringed-secondary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-secondary-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ringed-tertiary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-tertiary-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ringed-success){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-success-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ringed-warning){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-warning-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ringed-error){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-error-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ringed-surface){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-surface-500)/var(--tw-ring-opacity));background-color:initial}:is(.dark .variant-ghost-primary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-primary-500)/var(--tw-ring-opacity));background-color:rgb(var(--color-primary-500)/.2)}:is(.dark .variant-ghost-secondary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-secondary-500)/var(--tw-ring-opacity));background-color:rgb(var(--color-secondary-500)/.2)}:is(.dark .variant-ghost-tertiary){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-tertiary-500)/var(--tw-ring-opacity));background-color:rgb(var(--color-tertiary-500)/.2)}.variant-ghost-success{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-inset:inset}.variant-ghost-success,:is(.dark .variant-ghost-success){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-success-500)/var(--tw-ring-opacity));background-color:rgb(var(--color-success-500)/.2)}.variant-ghost-warning{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-inset:inset}.variant-ghost-warning,:is(.dark .variant-ghost-warning){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-warning-500)/var(--tw-ring-opacity));background-color:rgb(var(--color-warning-500)/.2)}.variant-ghost-error{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-inset:inset}.variant-ghost-error,:is(.dark .variant-ghost-error){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-error-500)/var(--tw-ring-opacity));background-color:rgb(var(--color-error-500)/.2)}.variant-ghost,.variant-ghost-surface{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-inset:inset}.variant-ghost,.variant-ghost-surface,:is(.dark .variant-ghost),:is(.dark .variant-ghost-surface){--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-surface-500)/var(--tw-ring-opacity));background-color:rgb(var(--color-surface-500)/.2)}.dark .variant-soft-primary{color:rgb(var(--color-primary-200))}:is(.dark .variant-soft-primary){background-color:rgb(var(--color-primary-500)/.2)}.dark .variant-soft-secondary{color:rgb(var(--color-secondary-200))}:is(.dark .variant-soft-secondary){background-color:rgb(var(--color-secondary-500)/.2)}.dark .variant-soft-tertiary{color:rgb(var(--color-tertiary-200))}:is(.dark .variant-soft-tertiary){background-color:rgb(var(--color-tertiary-500)/.2)}.dark .variant-soft-success{color:rgb(var(--color-success-200))}:is(.dark .variant-soft-success){background-color:rgb(var(--color-success-500)/.2)}.dark .variant-soft-warning{color:rgb(var(--color-warning-200))}:is(.dark .variant-soft-warning){background-color:rgb(var(--color-warning-500)/.2)}.dark .variant-soft-error{color:rgb(var(--color-error-200))}:is(.dark .variant-soft-error){background-color:rgb(var(--color-error-500)/.2)}.variant-soft,.variant-soft-surface{background-color:rgb(var(--color-surface-400)/.2);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;color:rgb(var(--color-surface-700))}.dark .variant-soft,.dark .variant-soft-surface{color:rgb(var(--color-surface-200))}:is(.dark .variant-soft),:is(.dark .variant-soft-surface){background-color:rgb(var(--color-surface-500)/.2)}:is(.dark .variant-glass-primary){background-color:rgb(var(--color-primary-500)/.2)}:is(.dark .variant-glass-secondary){background-color:rgb(var(--color-secondary-500)/.2)}:is(.dark .variant-glass-tertiary){background-color:rgb(var(--color-tertiary-500)/.2)}:is(.dark .variant-glass-success){background-color:rgb(var(--color-success-500)/.2)}:is(.dark .variant-glass-warning){background-color:rgb(var(--color-warning-500)/.2)}:is(.dark .variant-glass-error){background-color:rgb(var(--color-error-500)/.2)}:is(.dark .variant-glass-surface){background-color:rgb(var(--color-surface-500)/.2)}.variant-glass{background-color:rgb(var(--color-surface-50)/.3);--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}:is(.dark .variant-glass){background-color:rgb(var(--color-surface-900)/.3)}@media (min-width:768px){.h2{font-size:2.25rem;line-height:2.5rem}.h3{font-size:1.5rem;line-height:2rem}.h4{font-size:1.25rem}.h4,.h5{line-height:1.75rem}.h5{font-size:1.125rem}.h6{font-size:1rem;line-height:1.5rem}.\!legend{font-size:1.5rem!important;line-height:2rem!important}.legend{font-size:1.5rem;line-height:2rem}.table tbody td{white-space:normal}}@media (min-width:1024px){.alert{flex-direction:row;align-items:center}.alert>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;--tw-space-x-reverse:0;margin:calc(0px*(1 - var(--tw-space-y-reverse))) calc(1rem*var(--tw-space-x-reverse)) calc(0px*var(--tw-space-y-reverse)) calc(1rem*(1 - var(--tw-space-x-reverse)))}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-left-full{left:-100%}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.isolate{isolation:isolate}.z-10{z-index:10}.z-40{z-index:40}.z-\[1\]{z-index:1}.z-\[888\]{z-index:888}.z-\[999\]{z-index:999}.mx-auto{margin-left:auto;margin-right:auto}.-mt-\[15px\]{margin-top:-15px}.mb-4{margin-bottom:1rem}.ml-12{margin-left:3rem}.ml-16{margin-left:4rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.mr-2{margin-right:.5rem}.mt-\[15px\]{margin-top:15px}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0{height:0}.h-10{height:2.5rem}.h-2{height:.5rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[50\%\]{height:50%}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.max-h-\[200px\]{max-height:200px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0{width:0}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-36{width:9rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[50\%\]{width:50%}.w-\[70\%\]{width:70%}.w-\[90\%\]{width:90%}.w-auto{width:auto}.w-full{width:100%}.min-w-\[150px\]{min-width:150px}.max-w-3xl{max-width:48rem}.max-w-\[120px\]{max-width:120px}.max-w-\[640px\]{max-width:640px}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.origin-\[50\%_50\%\]{transform-origin:50% 50%}.translate-x-\[100\%\],.translate-x-full{--tw-translate-x:100%}.-rotate-90,.translate-x-\[100\%\],.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.rotate-180{--tw-rotate:180deg}.rotate-180,.scale-\[0\.8\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[0\.8\]{--tw-scale-x:0.8;--tw-scale-y:0.8}.scale-\[105\%\]{--tw-scale-x:105%;--tw-scale-y:105%}.scale-\[105\%\],.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.\!cursor-default{cursor:default!important}.\!cursor-not-allowed{cursor:not-allowed!important}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-y-2{row-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-neutral-900\/90{background-color:#171717e6}.bg-primary-500{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500)/var(--tw-bg-opacity))}.bg-surface-400{--tw-bg-opacity:1;background-color:rgb(var(--color-surface-400)/var(--tw-bg-opacity))}.bg-surface-50{--tw-bg-opacity:1;background-color:rgb(var(--color-surface-50)/var(--tw-bg-opacity))}.bg-surface-500{--tw-bg-opacity:1;background-color:rgb(var(--color-surface-500)/var(--tw-bg-opacity))}.bg-surface-900{--tw-bg-opacity:1;background-color:rgb(var(--color-surface-900)/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/75{background-color:#ffffffbf}.fill-current{fill:currentColor}.fill-surface-50{fill:rgb(var(--color-surface-50)/1)}.fill-surface-900{fill:rgb(var(--color-surface-900)/1)}.fill-transparent{fill:#0000}.stroke-surface-500\/30{stroke:rgb(var(--color-surface-500)/.3)}.stroke-surface-900{stroke:rgb(var(--color-surface-900)/1)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.\!px-3{padding-left:.75rem!important;padding-right:.75rem!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.\!py-1\.5{padding-top:.375rem!important;padding-bottom:.375rem!important}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-4{padding-bottom:1rem}.pl-20{padding-left:5rem}.pl-4{padding-left:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-center{text-align:center}.text-start{text-align:start}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.\!text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-primary-500{--tw-text-opacity:1;color:rgb(var(--color-primary-500)/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-secondary-700{--tw-text-opacity:1;color:rgb(var(--color-secondary-700)/var(--tw-text-opacity))}.text-surface-50{--tw-text-opacity:1;color:rgb(var(--color-surface-50)/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-white\/50{color:#ffffff80}.accent-surface-900{accent-color:rgb(var(--color-surface-900)/1)}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.-outline-offset-\[3px\]{outline-offset:-3px}.\!ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-\[1px\]{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-\[1px\]{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-surface-500\/30{--tw-ring-color:rgb(var(--color-surface-500)/0.3)}.blur{--tw-blur:blur(8px)}.blur,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[stroke-dashoffset\]{transition-property:stroke-dashoffset;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-300{transition-duration:.3s}.duration-\[200ms\]{transition-duration:.2s}.dark .bg-primary-backdrop-token{background-color:rgb(var(--color-primary-900)/.7)}.bg-primary-hover-token:hover,.dark .bg-primary-hover-token:hover{background-color:rgb(var(--color-primary-500)/.1)}.bg-primary-active-token{background-color:rgb(var(--color-primary-500))!important;color:rgb(var(--on-primary));fill:rgb(var(--on-primary))}.dark .bg-primary-50-900-token{background-color:rgb(var(--color-primary-900))}.dark .bg-primary-100-800-token{background-color:rgb(var(--color-primary-800))}.dark .bg-primary-200-700-token{background-color:rgb(var(--color-primary-700))}.dark .bg-primary-300-600-token{background-color:rgb(var(--color-primary-600))}.dark .bg-primary-400-500-token{background-color:rgb(var(--color-primary-500))}.dark .bg-primary-900-50-token{background-color:rgb(var(--color-primary-50))}.dark .bg-primary-800-100-token{background-color:rgb(var(--color-primary-100))}.dark .bg-primary-700-200-token{background-color:rgb(var(--color-primary-200))}.dark .bg-primary-600-300-token{background-color:rgb(var(--color-primary-300))}.dark .bg-primary-500-400-token{background-color:rgb(var(--color-primary-400))}.dark .bg-secondary-backdrop-token{background-color:rgb(var(--color-secondary-900)/.7)}.dark .bg-secondary-hover-token:hover{background-color:rgb(var(--color-secondary-500)/.1)}.dark .bg-secondary-50-900-token{background-color:rgb(var(--color-secondary-900))}.dark .bg-secondary-100-800-token{background-color:rgb(var(--color-secondary-800))}.dark .bg-secondary-200-700-token{background-color:rgb(var(--color-secondary-700))}.dark .bg-secondary-300-600-token{background-color:rgb(var(--color-secondary-600))}.dark .bg-secondary-400-500-token{background-color:rgb(var(--color-secondary-500))}.dark .bg-secondary-900-50-token{background-color:rgb(var(--color-secondary-50))}.dark .bg-secondary-800-100-token{background-color:rgb(var(--color-secondary-100))}.dark .bg-secondary-700-200-token{background-color:rgb(var(--color-secondary-200))}.dark .bg-secondary-600-300-token{background-color:rgb(var(--color-secondary-300))}.dark .bg-secondary-500-400-token{background-color:rgb(var(--color-secondary-400))}.dark .bg-tertiary-backdrop-token{background-color:rgb(var(--color-tertiary-900)/.7)}.dark .bg-tertiary-hover-token:hover{background-color:rgb(var(--color-tertiary-500)/.1)}.dark .bg-tertiary-50-900-token{background-color:rgb(var(--color-tertiary-900))}.dark .bg-tertiary-100-800-token{background-color:rgb(var(--color-tertiary-800))}.dark .bg-tertiary-200-700-token{background-color:rgb(var(--color-tertiary-700))}.dark .bg-tertiary-300-600-token{background-color:rgb(var(--color-tertiary-600))}.dark .bg-tertiary-400-500-token{background-color:rgb(var(--color-tertiary-500))}.dark .bg-tertiary-900-50-token{background-color:rgb(var(--color-tertiary-50))}.dark .bg-tertiary-800-100-token{background-color:rgb(var(--color-tertiary-100))}.dark .bg-tertiary-700-200-token{background-color:rgb(var(--color-tertiary-200))}.dark .bg-tertiary-600-300-token{background-color:rgb(var(--color-tertiary-300))}.dark .bg-tertiary-500-400-token{background-color:rgb(var(--color-tertiary-400))}.dark .bg-success-backdrop-token{background-color:rgb(var(--color-success-900)/.7)}.dark .bg-success-hover-token:hover{background-color:rgb(var(--color-success-500)/.1)}.dark .bg-success-50-900-token{background-color:rgb(var(--color-success-900))}.dark .bg-success-100-800-token{background-color:rgb(var(--color-success-800))}.dark .bg-success-200-700-token{background-color:rgb(var(--color-success-700))}.dark .bg-success-300-600-token{background-color:rgb(var(--color-success-600))}.dark .bg-success-400-500-token{background-color:rgb(var(--color-success-500))}.dark .bg-success-900-50-token{background-color:rgb(var(--color-success-50))}.dark .bg-success-800-100-token{background-color:rgb(var(--color-success-100))}.dark .bg-success-700-200-token{background-color:rgb(var(--color-success-200))}.dark .bg-success-600-300-token{background-color:rgb(var(--color-success-300))}.dark .bg-success-500-400-token{background-color:rgb(var(--color-success-400))}.dark .bg-warning-backdrop-token{background-color:rgb(var(--color-warning-900)/.7)}.dark .bg-warning-hover-token:hover{background-color:rgb(var(--color-warning-500)/.1)}.dark .bg-warning-50-900-token{background-color:rgb(var(--color-warning-900))}.dark .bg-warning-100-800-token{background-color:rgb(var(--color-warning-800))}.dark .bg-warning-200-700-token{background-color:rgb(var(--color-warning-700))}.dark .bg-warning-300-600-token{background-color:rgb(var(--color-warning-600))}.dark .bg-warning-400-500-token{background-color:rgb(var(--color-warning-500))}.dark .bg-warning-900-50-token{background-color:rgb(var(--color-warning-50))}.dark .bg-warning-800-100-token{background-color:rgb(var(--color-warning-100))}.dark .bg-warning-700-200-token{background-color:rgb(var(--color-warning-200))}.dark .bg-warning-600-300-token{background-color:rgb(var(--color-warning-300))}.dark .bg-warning-500-400-token{background-color:rgb(var(--color-warning-400))}.dark .bg-error-backdrop-token{background-color:rgb(var(--color-error-900)/.7)}.dark .bg-error-hover-token:hover{background-color:rgb(var(--color-error-500)/.1)}.dark .bg-error-50-900-token{background-color:rgb(var(--color-error-900))}.dark .bg-error-100-800-token{background-color:rgb(var(--color-error-800))}.dark .bg-error-200-700-token{background-color:rgb(var(--color-error-700))}.dark .bg-error-300-600-token{background-color:rgb(var(--color-error-600))}.dark .bg-error-400-500-token{background-color:rgb(var(--color-error-500))}.dark .bg-error-900-50-token{background-color:rgb(var(--color-error-50))}.dark .bg-error-800-100-token{background-color:rgb(var(--color-error-100))}.dark .bg-error-700-200-token{background-color:rgb(var(--color-error-200))}.dark .bg-error-600-300-token{background-color:rgb(var(--color-error-300))}.dark .bg-error-500-400-token{background-color:rgb(var(--color-error-400))}.bg-surface-backdrop-token{background-color:rgb(var(--color-surface-400)/.7)}.dark .bg-surface-backdrop-token{background-color:rgb(var(--color-surface-900)/.7)}.dark .bg-surface-hover-token:hover{background-color:rgb(var(--color-surface-500)/.1)}.dark .bg-surface-50-900-token{background-color:rgb(var(--color-surface-900))}.bg-surface-100-800-token{background-color:rgb(var(--color-surface-100))}.dark .bg-surface-100-800-token{background-color:rgb(var(--color-surface-800))}.bg-surface-200-700-token{background-color:rgb(var(--color-surface-200))}.dark .bg-surface-200-700-token{background-color:rgb(var(--color-surface-700))}.dark .bg-surface-300-600-token{background-color:rgb(var(--color-surface-600))}.bg-surface-400-500-token{background-color:rgb(var(--color-surface-400))}.dark .bg-surface-400-500-token{background-color:rgb(var(--color-surface-500))}.bg-surface-900-50-token{background-color:rgb(var(--color-surface-900))}.dark .bg-surface-900-50-token{background-color:rgb(var(--color-surface-50))}.dark .bg-surface-800-100-token{background-color:rgb(var(--color-surface-100))}.dark .bg-surface-700-200-token{background-color:rgb(var(--color-surface-200))}.dark .bg-surface-600-300-token{background-color:rgb(var(--color-surface-300))}.dark .bg-surface-500-400-token{background-color:rgb(var(--color-surface-400))}.border-token{border-width:var(--theme-border-base)}.dark .border-primary-50-900-token,.dark .divide-primary-50-900-token{border-color:rgb(var(--color-primary-900))}.dark .border-primary-100-800-token,.dark .divide-primary-100-800-token{border-color:rgb(var(--color-primary-800))}.dark .border-primary-200-700-token,.dark .divide-primary-200-700-token{border-color:rgb(var(--color-primary-700))}.dark .border-primary-300-600-token,.dark .divide-primary-300-600-token{border-color:rgb(var(--color-primary-600))}.dark .border-primary-400-500-token,.dark .divide-primary-400-500-token{border-color:rgb(var(--color-primary-500))}.dark .border-primary-900-50-token,.dark .divide-primary-900-50-token{border-color:rgb(var(--color-primary-50))}.dark .border-primary-800-100-token,.dark .divide-primary-800-100-token{border-color:rgb(var(--color-primary-100))}.dark .border-primary-700-200-token,.dark .divide-primary-700-200-token{border-color:rgb(var(--color-primary-200))}.dark .border-primary-600-300-token,.dark .divide-primary-600-300-token{border-color:rgb(var(--color-primary-300))}.dark .border-primary-500-400-token,.dark .divide-primary-500-400-token{border-color:rgb(var(--color-primary-400))}.dark .border-secondary-50-900-token,.dark .divide-secondary-50-900-token{border-color:rgb(var(--color-secondary-900))}.dark .border-secondary-100-800-token,.dark .divide-secondary-100-800-token{border-color:rgb(var(--color-secondary-800))}.dark .border-secondary-200-700-token,.dark .divide-secondary-200-700-token{border-color:rgb(var(--color-secondary-700))}.dark .border-secondary-300-600-token,.dark .divide-secondary-300-600-token{border-color:rgb(var(--color-secondary-600))}.dark .border-secondary-400-500-token,.dark .divide-secondary-400-500-token{border-color:rgb(var(--color-secondary-500))}.dark .border-secondary-900-50-token,.dark .divide-secondary-900-50-token{border-color:rgb(var(--color-secondary-50))}.dark .border-secondary-800-100-token,.dark .divide-secondary-800-100-token{border-color:rgb(var(--color-secondary-100))}.dark .border-secondary-700-200-token,.dark .divide-secondary-700-200-token{border-color:rgb(var(--color-secondary-200))}.dark .border-secondary-600-300-token,.dark .divide-secondary-600-300-token{border-color:rgb(var(--color-secondary-300))}.dark .border-secondary-500-400-token,.dark .divide-secondary-500-400-token{border-color:rgb(var(--color-secondary-400))}.dark .border-tertiary-50-900-token,.dark .divide-tertiary-50-900-token{border-color:rgb(var(--color-tertiary-900))}.dark .border-tertiary-100-800-token,.dark .divide-tertiary-100-800-token{border-color:rgb(var(--color-tertiary-800))}.dark .border-tertiary-200-700-token,.dark .divide-tertiary-200-700-token{border-color:rgb(var(--color-tertiary-700))}.dark .border-tertiary-300-600-token,.dark .divide-tertiary-300-600-token{border-color:rgb(var(--color-tertiary-600))}.dark .border-tertiary-400-500-token,.dark .divide-tertiary-400-500-token{border-color:rgb(var(--color-tertiary-500))}.dark .border-tertiary-900-50-token,.dark .divide-tertiary-900-50-token{border-color:rgb(var(--color-tertiary-50))}.dark .border-tertiary-800-100-token,.dark .divide-tertiary-800-100-token{border-color:rgb(var(--color-tertiary-100))}.dark .border-tertiary-700-200-token,.dark .divide-tertiary-700-200-token{border-color:rgb(var(--color-tertiary-200))}.dark .border-tertiary-600-300-token,.dark .divide-tertiary-600-300-token{border-color:rgb(var(--color-tertiary-300))}.dark .border-tertiary-500-400-token,.dark .divide-tertiary-500-400-token{border-color:rgb(var(--color-tertiary-400))}.dark .border-success-50-900-token,.dark .divide-success-50-900-token{border-color:rgb(var(--color-success-900))}.dark .border-success-100-800-token,.dark .divide-success-100-800-token{border-color:rgb(var(--color-success-800))}.dark .border-success-200-700-token,.dark .divide-success-200-700-token{border-color:rgb(var(--color-success-700))}.dark .border-success-300-600-token,.dark .divide-success-300-600-token{border-color:rgb(var(--color-success-600))}.dark .border-success-400-500-token,.dark .divide-success-400-500-token{border-color:rgb(var(--color-success-500))}.dark .border-success-900-50-token,.dark .divide-success-900-50-token{border-color:rgb(var(--color-success-50))}.dark .border-success-800-100-token,.dark .divide-success-800-100-token{border-color:rgb(var(--color-success-100))}.dark .border-success-700-200-token,.dark .divide-success-700-200-token{border-color:rgb(var(--color-success-200))}.dark .border-success-600-300-token,.dark .divide-success-600-300-token{border-color:rgb(var(--color-success-300))}.dark .border-success-500-400-token,.dark .divide-success-500-400-token{border-color:rgb(var(--color-success-400))}.dark .border-warning-50-900-token,.dark .divide-warning-50-900-token{border-color:rgb(var(--color-warning-900))}.dark .border-warning-100-800-token,.dark .divide-warning-100-800-token{border-color:rgb(var(--color-warning-800))}.dark .border-warning-200-700-token,.dark .divide-warning-200-700-token{border-color:rgb(var(--color-warning-700))}.dark .border-warning-300-600-token,.dark .divide-warning-300-600-token{border-color:rgb(var(--color-warning-600))}.dark .border-warning-400-500-token,.dark .divide-warning-400-500-token{border-color:rgb(var(--color-warning-500))}.dark .border-warning-900-50-token,.dark .divide-warning-900-50-token{border-color:rgb(var(--color-warning-50))}.dark .border-warning-800-100-token,.dark .divide-warning-800-100-token{border-color:rgb(var(--color-warning-100))}.dark .border-warning-700-200-token,.dark .divide-warning-700-200-token{border-color:rgb(var(--color-warning-200))}.dark .border-warning-600-300-token,.dark .divide-warning-600-300-token{border-color:rgb(var(--color-warning-300))}.dark .border-warning-500-400-token,.dark .divide-warning-500-400-token{border-color:rgb(var(--color-warning-400))}.dark .border-error-50-900-token,.dark .divide-error-50-900-token{border-color:rgb(var(--color-error-900))}.dark .border-error-100-800-token,.dark .divide-error-100-800-token{border-color:rgb(var(--color-error-800))}.dark .border-error-200-700-token,.dark .divide-error-200-700-token{border-color:rgb(var(--color-error-700))}.dark .border-error-300-600-token,.dark .divide-error-300-600-token{border-color:rgb(var(--color-error-600))}.dark .border-error-400-500-token,.dark .divide-error-400-500-token{border-color:rgb(var(--color-error-500))}.dark .border-error-900-50-token,.dark .divide-error-900-50-token{border-color:rgb(var(--color-error-50))}.dark .border-error-800-100-token,.dark .divide-error-800-100-token{border-color:rgb(var(--color-error-100))}.dark .border-error-700-200-token,.dark .divide-error-700-200-token{border-color:rgb(var(--color-error-200))}.dark .border-error-600-300-token,.dark .divide-error-600-300-token{border-color:rgb(var(--color-error-300))}.dark .border-error-500-400-token,.dark .divide-error-500-400-token{border-color:rgb(var(--color-error-400))}.dark .border-surface-50-900-token,.dark .divide-surface-50-900-token{border-color:rgb(var(--color-surface-900))}.dark .border-surface-100-800-token,.dark .divide-surface-100-800-token{border-color:rgb(var(--color-surface-800))}.dark .border-surface-200-700-token,.dark .divide-surface-200-700-token{border-color:rgb(var(--color-surface-700))}.dark .border-surface-300-600-token,.dark .divide-surface-300-600-token{border-color:rgb(var(--color-surface-600))}.border-surface-400-500-token{border-color:rgb(var(--color-surface-400))}.dark .border-surface-400-500-token,.dark .divide-surface-400-500-token{border-color:rgb(var(--color-surface-500))}.border-surface-900-50-token{border-color:rgb(var(--color-surface-900))}.dark .border-surface-900-50-token,.dark .divide-surface-900-50-token{border-color:rgb(var(--color-surface-50))}.dark .border-surface-800-100-token,.dark .divide-surface-800-100-token{border-color:rgb(var(--color-surface-100))}.dark .border-surface-700-200-token,.dark .divide-surface-700-200-token{border-color:rgb(var(--color-surface-200))}.dark .border-surface-600-300-token,.dark .divide-surface-600-300-token{border-color:rgb(var(--color-surface-300))}.dark .border-surface-500-400-token,.dark .divide-surface-500-400-token{border-color:rgb(var(--color-surface-400))}.rounded-token{border-radius:var(--theme-rounded-base)}.rounded-container-token{border-radius:var(--theme-rounded-container)}.rounded-tl-container-token{border-top-left-radius:var(--theme-rounded-container)}.rounded-tr-container-token{border-top-right-radius:var(--theme-rounded-container)}.rounded-bl-container-token{border-bottom-left-radius:var(--theme-rounded-container)}.rounded-br-container-token{border-bottom-right-radius:var(--theme-rounded-container)}.fill-token{fill:rgba(var(--theme-font-color-base))}.dark .fill-token{fill:rgba(var(--theme-font-color-dark))}.text-token{color:rgba(var(--theme-font-color-base))}.dark .text-token{color:rgba(var(--theme-font-color-dark))}.dark .text-primary-50-900-token{color:rgb(var(--color-primary-900))}.dark .decoration-primary-50-900-token{text-decoration-color:rgb(var(--color-primary-900))}.dark .text-primary-100-800-token{color:rgb(var(--color-primary-800))}.dark .decoration-primary-100-800-token{text-decoration-color:rgb(var(--color-primary-800))}.dark .text-primary-200-700-token{color:rgb(var(--color-primary-700))}.dark .decoration-primary-200-700-token{text-decoration-color:rgb(var(--color-primary-700))}.dark .text-primary-300-600-token{color:rgb(var(--color-primary-600))}.dark .decoration-primary-300-600-token{text-decoration-color:rgb(var(--color-primary-600))}.dark .text-primary-400-500-token{color:rgb(var(--color-primary-500))}.dark .decoration-primary-400-500-token{text-decoration-color:rgb(var(--color-primary-500))}.dark .text-primary-900-50-token{color:rgb(var(--color-primary-50))}.dark .decoration-primary-900-50-token{text-decoration-color:rgb(var(--color-primary-50))}.dark .text-primary-800-100-token{color:rgb(var(--color-primary-100))}.dark .decoration-primary-800-100-token{text-decoration-color:rgb(var(--color-primary-100))}.dark .text-primary-700-200-token{color:rgb(var(--color-primary-200))}.dark .decoration-primary-700-200-token{text-decoration-color:rgb(var(--color-primary-200))}.dark .text-primary-600-300-token{color:rgb(var(--color-primary-300))}.dark .decoration-primary-600-300-token{text-decoration-color:rgb(var(--color-primary-300))}.dark .text-primary-500-400-token{color:rgb(var(--color-primary-400))}.dark .decoration-primary-500-400-token{text-decoration-color:rgb(var(--color-primary-400))}.dark .text-secondary-50-900-token{color:rgb(var(--color-secondary-900))}.dark .decoration-secondary-50-900-token{text-decoration-color:rgb(var(--color-secondary-900))}.dark .text-secondary-100-800-token{color:rgb(var(--color-secondary-800))}.dark .decoration-secondary-100-800-token{text-decoration-color:rgb(var(--color-secondary-800))}.dark .text-secondary-200-700-token{color:rgb(var(--color-secondary-700))}.dark .decoration-secondary-200-700-token{text-decoration-color:rgb(var(--color-secondary-700))}.dark .text-secondary-300-600-token{color:rgb(var(--color-secondary-600))}.dark .decoration-secondary-300-600-token{text-decoration-color:rgb(var(--color-secondary-600))}.dark .text-secondary-400-500-token{color:rgb(var(--color-secondary-500))}.dark .decoration-secondary-400-500-token{text-decoration-color:rgb(var(--color-secondary-500))}.dark .text-secondary-900-50-token{color:rgb(var(--color-secondary-50))}.dark .decoration-secondary-900-50-token{text-decoration-color:rgb(var(--color-secondary-50))}.dark .text-secondary-800-100-token{color:rgb(var(--color-secondary-100))}.dark .decoration-secondary-800-100-token{text-decoration-color:rgb(var(--color-secondary-100))}.dark .text-secondary-700-200-token{color:rgb(var(--color-secondary-200))}.dark .decoration-secondary-700-200-token{text-decoration-color:rgb(var(--color-secondary-200))}.dark .text-secondary-600-300-token{color:rgb(var(--color-secondary-300))}.dark .decoration-secondary-600-300-token{text-decoration-color:rgb(var(--color-secondary-300))}.dark .text-secondary-500-400-token{color:rgb(var(--color-secondary-400))}.dark .decoration-secondary-500-400-token{text-decoration-color:rgb(var(--color-secondary-400))}.dark .text-tertiary-50-900-token{color:rgb(var(--color-tertiary-900))}.dark .decoration-tertiary-50-900-token{text-decoration-color:rgb(var(--color-tertiary-900))}.dark .text-tertiary-100-800-token{color:rgb(var(--color-tertiary-800))}.dark .decoration-tertiary-100-800-token{text-decoration-color:rgb(var(--color-tertiary-800))}.dark .text-tertiary-200-700-token{color:rgb(var(--color-tertiary-700))}.dark .decoration-tertiary-200-700-token{text-decoration-color:rgb(var(--color-tertiary-700))}.dark .text-tertiary-300-600-token{color:rgb(var(--color-tertiary-600))}.dark .decoration-tertiary-300-600-token{text-decoration-color:rgb(var(--color-tertiary-600))}.dark .text-tertiary-400-500-token{color:rgb(var(--color-tertiary-500))}.dark .decoration-tertiary-400-500-token{text-decoration-color:rgb(var(--color-tertiary-500))}.dark .text-tertiary-900-50-token{color:rgb(var(--color-tertiary-50))}.dark .decoration-tertiary-900-50-token{text-decoration-color:rgb(var(--color-tertiary-50))}.dark .text-tertiary-800-100-token{color:rgb(var(--color-tertiary-100))}.dark .decoration-tertiary-800-100-token{text-decoration-color:rgb(var(--color-tertiary-100))}.dark .text-tertiary-700-200-token{color:rgb(var(--color-tertiary-200))}.dark .decoration-tertiary-700-200-token{text-decoration-color:rgb(var(--color-tertiary-200))}.dark .text-tertiary-600-300-token{color:rgb(var(--color-tertiary-300))}.dark .decoration-tertiary-600-300-token{text-decoration-color:rgb(var(--color-tertiary-300))}.dark .text-tertiary-500-400-token{color:rgb(var(--color-tertiary-400))}.dark .decoration-tertiary-500-400-token{text-decoration-color:rgb(var(--color-tertiary-400))}.dark .text-success-50-900-token{color:rgb(var(--color-success-900))}.dark .decoration-success-50-900-token{text-decoration-color:rgb(var(--color-success-900))}.dark .text-success-100-800-token{color:rgb(var(--color-success-800))}.dark .decoration-success-100-800-token{text-decoration-color:rgb(var(--color-success-800))}.dark .text-success-200-700-token{color:rgb(var(--color-success-700))}.dark .decoration-success-200-700-token{text-decoration-color:rgb(var(--color-success-700))}.dark .text-success-300-600-token{color:rgb(var(--color-success-600))}.dark .decoration-success-300-600-token{text-decoration-color:rgb(var(--color-success-600))}.dark .text-success-400-500-token{color:rgb(var(--color-success-500))}.dark .decoration-success-400-500-token{text-decoration-color:rgb(var(--color-success-500))}.dark .text-success-900-50-token{color:rgb(var(--color-success-50))}.dark .decoration-success-900-50-token{text-decoration-color:rgb(var(--color-success-50))}.dark .text-success-800-100-token{color:rgb(var(--color-success-100))}.dark .decoration-success-800-100-token{text-decoration-color:rgb(var(--color-success-100))}.dark .text-success-700-200-token{color:rgb(var(--color-success-200))}.dark .decoration-success-700-200-token{text-decoration-color:rgb(var(--color-success-200))}.dark .text-success-600-300-token{color:rgb(var(--color-success-300))}.dark .decoration-success-600-300-token{text-decoration-color:rgb(var(--color-success-300))}.dark .text-success-500-400-token{color:rgb(var(--color-success-400))}.dark .decoration-success-500-400-token{text-decoration-color:rgb(var(--color-success-400))}.dark .text-warning-50-900-token{color:rgb(var(--color-warning-900))}.dark .decoration-warning-50-900-token{text-decoration-color:rgb(var(--color-warning-900))}.dark .text-warning-100-800-token{color:rgb(var(--color-warning-800))}.dark .decoration-warning-100-800-token{text-decoration-color:rgb(var(--color-warning-800))}.dark .text-warning-200-700-token{color:rgb(var(--color-warning-700))}.dark .decoration-warning-200-700-token{text-decoration-color:rgb(var(--color-warning-700))}.dark .text-warning-300-600-token{color:rgb(var(--color-warning-600))}.dark .decoration-warning-300-600-token{text-decoration-color:rgb(var(--color-warning-600))}.dark .text-warning-400-500-token{color:rgb(var(--color-warning-500))}.dark .decoration-warning-400-500-token{text-decoration-color:rgb(var(--color-warning-500))}.dark .text-warning-900-50-token{color:rgb(var(--color-warning-50))}.dark .decoration-warning-900-50-token{text-decoration-color:rgb(var(--color-warning-50))}.dark .text-warning-800-100-token{color:rgb(var(--color-warning-100))}.dark .decoration-warning-800-100-token{text-decoration-color:rgb(var(--color-warning-100))}.dark .text-warning-700-200-token{color:rgb(var(--color-warning-200))}.dark .decoration-warning-700-200-token{text-decoration-color:rgb(var(--color-warning-200))}.dark .text-warning-600-300-token{color:rgb(var(--color-warning-300))}.dark .decoration-warning-600-300-token{text-decoration-color:rgb(var(--color-warning-300))}.dark .text-warning-500-400-token{color:rgb(var(--color-warning-400))}.dark .decoration-warning-500-400-token{text-decoration-color:rgb(var(--color-warning-400))}.dark .text-error-50-900-token{color:rgb(var(--color-error-900))}.dark .decoration-error-50-900-token{text-decoration-color:rgb(var(--color-error-900))}.dark .text-error-100-800-token{color:rgb(var(--color-error-800))}.dark .decoration-error-100-800-token{text-decoration-color:rgb(var(--color-error-800))}.dark .text-error-200-700-token{color:rgb(var(--color-error-700))}.dark .decoration-error-200-700-token{text-decoration-color:rgb(var(--color-error-700))}.dark .text-error-300-600-token{color:rgb(var(--color-error-600))}.dark .decoration-error-300-600-token{text-decoration-color:rgb(var(--color-error-600))}.dark .text-error-400-500-token{color:rgb(var(--color-error-500))}.dark .decoration-error-400-500-token{text-decoration-color:rgb(var(--color-error-500))}.dark .text-error-900-50-token{color:rgb(var(--color-error-50))}.dark .decoration-error-900-50-token{text-decoration-color:rgb(var(--color-error-50))}.dark .text-error-800-100-token{color:rgb(var(--color-error-100))}.dark .decoration-error-800-100-token{text-decoration-color:rgb(var(--color-error-100))}.dark .text-error-700-200-token{color:rgb(var(--color-error-200))}.dark .decoration-error-700-200-token{text-decoration-color:rgb(var(--color-error-200))}.dark .text-error-600-300-token{color:rgb(var(--color-error-300))}.dark .decoration-error-600-300-token{text-decoration-color:rgb(var(--color-error-300))}.dark .text-error-500-400-token{color:rgb(var(--color-error-400))}.dark .decoration-error-500-400-token{text-decoration-color:rgb(var(--color-error-400))}.dark .text-surface-50-900-token{color:rgb(var(--color-surface-900))}.dark .decoration-surface-50-900-token{text-decoration-color:rgb(var(--color-surface-900))}.dark .text-surface-100-800-token{color:rgb(var(--color-surface-800))}.dark .decoration-surface-100-800-token{text-decoration-color:rgb(var(--color-surface-800))}.dark .text-surface-200-700-token{color:rgb(var(--color-surface-700))}.dark .decoration-surface-200-700-token{text-decoration-color:rgb(var(--color-surface-700))}.dark .text-surface-300-600-token{color:rgb(var(--color-surface-600))}.dark .decoration-surface-300-600-token{text-decoration-color:rgb(var(--color-surface-600))}.dark .text-surface-400-500-token{color:rgb(var(--color-surface-500))}.dark .decoration-surface-400-500-token{text-decoration-color:rgb(var(--color-surface-500))}.dark .text-surface-900-50-token{color:rgb(var(--color-surface-50))}.dark .decoration-surface-900-50-token{text-decoration-color:rgb(var(--color-surface-50))}.dark .text-surface-800-100-token{color:rgb(var(--color-surface-100))}.dark .decoration-surface-800-100-token{text-decoration-color:rgb(var(--color-surface-100))}.dark .text-surface-700-200-token{color:rgb(var(--color-surface-200))}.dark .decoration-surface-700-200-token{text-decoration-color:rgb(var(--color-surface-200))}.dark .text-surface-600-300-token{color:rgb(var(--color-surface-300))}.dark .decoration-surface-600-300-token{text-decoration-color:rgb(var(--color-surface-300))}.dark .text-surface-500-400-token{color:rgb(var(--color-surface-400))}.dark .decoration-surface-500-400-token{text-decoration-color:rgb(var(--color-surface-400))}.dark .ring-outline-token{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-inset:inset;--tw-ring-color:#fafafa0d}.dark .ring-primary-50-900-token{--tw-ring-color:rgb(var(--color-primary-900)/1)}.dark .ring-primary-100-800-token{--tw-ring-color:rgb(var(--color-primary-800)/1)}.dark .ring-primary-200-700-token{--tw-ring-color:rgb(var(--color-primary-700)/1)}.dark .ring-primary-300-600-token{--tw-ring-color:rgb(var(--color-primary-600)/1)}.dark .ring-primary-400-500-token{--tw-ring-color:rgb(var(--color-primary-500)/1)}.dark .ring-primary-900-50-token{--tw-ring-color:rgb(var(--color-primary-50)/1)}.dark .ring-primary-800-100-token{--tw-ring-color:rgb(var(--color-primary-100)/1)}.dark .ring-primary-700-200-token{--tw-ring-color:rgb(var(--color-primary-200)/1)}.dark .ring-primary-600-300-token{--tw-ring-color:rgb(var(--color-primary-300)/1)}.dark .ring-primary-500-400-token{--tw-ring-color:rgb(var(--color-primary-400)/1)}.dark .ring-secondary-50-900-token{--tw-ring-color:rgb(var(--color-secondary-900)/1)}.dark .ring-secondary-100-800-token{--tw-ring-color:rgb(var(--color-secondary-800)/1)}.dark .ring-secondary-200-700-token{--tw-ring-color:rgb(var(--color-secondary-700)/1)}.dark .ring-secondary-300-600-token{--tw-ring-color:rgb(var(--color-secondary-600)/1)}.dark .ring-secondary-400-500-token{--tw-ring-color:rgb(var(--color-secondary-500)/1)}.dark .ring-secondary-900-50-token{--tw-ring-color:rgb(var(--color-secondary-50)/1)}.dark .ring-secondary-800-100-token{--tw-ring-color:rgb(var(--color-secondary-100)/1)}.dark .ring-secondary-700-200-token{--tw-ring-color:rgb(var(--color-secondary-200)/1)}.dark .ring-secondary-600-300-token{--tw-ring-color:rgb(var(--color-secondary-300)/1)}.dark .ring-secondary-500-400-token{--tw-ring-color:rgb(var(--color-secondary-400)/1)}.dark .ring-tertiary-50-900-token{--tw-ring-color:rgb(var(--color-tertiary-900)/1)}.dark .ring-tertiary-100-800-token{--tw-ring-color:rgb(var(--color-tertiary-800)/1)}.dark .ring-tertiary-200-700-token{--tw-ring-color:rgb(var(--color-tertiary-700)/1)}.dark .ring-tertiary-300-600-token{--tw-ring-color:rgb(var(--color-tertiary-600)/1)}.dark .ring-tertiary-400-500-token{--tw-ring-color:rgb(var(--color-tertiary-500)/1)}.dark .ring-tertiary-900-50-token{--tw-ring-color:rgb(var(--color-tertiary-50)/1)}.dark .ring-tertiary-800-100-token{--tw-ring-color:rgb(var(--color-tertiary-100)/1)}.dark .ring-tertiary-700-200-token{--tw-ring-color:rgb(var(--color-tertiary-200)/1)}.dark .ring-tertiary-600-300-token{--tw-ring-color:rgb(var(--color-tertiary-300)/1)}.dark .ring-tertiary-500-400-token{--tw-ring-color:rgb(var(--color-tertiary-400)/1)}.dark .ring-success-50-900-token{--tw-ring-color:rgb(var(--color-success-900)/1)}.dark .ring-success-100-800-token{--tw-ring-color:rgb(var(--color-success-800)/1)}.dark .ring-success-200-700-token{--tw-ring-color:rgb(var(--color-success-700)/1)}.dark .ring-success-300-600-token{--tw-ring-color:rgb(var(--color-success-600)/1)}.dark .ring-success-400-500-token{--tw-ring-color:rgb(var(--color-success-500)/1)}.dark .ring-success-900-50-token{--tw-ring-color:rgb(var(--color-success-50)/1)}.dark .ring-success-800-100-token{--tw-ring-color:rgb(var(--color-success-100)/1)}.dark .ring-success-700-200-token{--tw-ring-color:rgb(var(--color-success-200)/1)}.dark .ring-success-600-300-token{--tw-ring-color:rgb(var(--color-success-300)/1)}.dark .ring-success-500-400-token{--tw-ring-color:rgb(var(--color-success-400)/1)}.dark .ring-warning-50-900-token{--tw-ring-color:rgb(var(--color-warning-900)/1)}.dark .ring-warning-100-800-token{--tw-ring-color:rgb(var(--color-warning-800)/1)}.dark .ring-warning-200-700-token{--tw-ring-color:rgb(var(--color-warning-700)/1)}.dark .ring-warning-300-600-token{--tw-ring-color:rgb(var(--color-warning-600)/1)}.dark .ring-warning-400-500-token{--tw-ring-color:rgb(var(--color-warning-500)/1)}.dark .ring-warning-900-50-token{--tw-ring-color:rgb(var(--color-warning-50)/1)}.dark .ring-warning-800-100-token{--tw-ring-color:rgb(var(--color-warning-100)/1)}.dark .ring-warning-700-200-token{--tw-ring-color:rgb(var(--color-warning-200)/1)}.dark .ring-warning-600-300-token{--tw-ring-color:rgb(var(--color-warning-300)/1)}.dark .ring-warning-500-400-token{--tw-ring-color:rgb(var(--color-warning-400)/1)}.dark .ring-error-50-900-token{--tw-ring-color:rgb(var(--color-error-900)/1)}.dark .ring-error-100-800-token{--tw-ring-color:rgb(var(--color-error-800)/1)}.dark .ring-error-200-700-token{--tw-ring-color:rgb(var(--color-error-700)/1)}.dark .ring-error-300-600-token{--tw-ring-color:rgb(var(--color-error-600)/1)}.dark .ring-error-400-500-token{--tw-ring-color:rgb(var(--color-error-500)/1)}.dark .ring-error-900-50-token{--tw-ring-color:rgb(var(--color-error-50)/1)}.dark .ring-error-800-100-token{--tw-ring-color:rgb(var(--color-error-100)/1)}.dark .ring-error-700-200-token{--tw-ring-color:rgb(var(--color-error-200)/1)}.dark .ring-error-600-300-token{--tw-ring-color:rgb(var(--color-error-300)/1)}.dark .ring-error-500-400-token{--tw-ring-color:rgb(var(--color-error-400)/1)}.dark .ring-surface-50-900-token{--tw-ring-color:rgb(var(--color-surface-900)/1)}.dark .ring-surface-100-800-token{--tw-ring-color:rgb(var(--color-surface-800)/1)}.dark .ring-surface-200-700-token{--tw-ring-color:rgb(var(--color-surface-700)/1)}.dark .ring-surface-300-600-token{--tw-ring-color:rgb(var(--color-surface-600)/1)}.dark .ring-surface-400-500-token{--tw-ring-color:rgb(var(--color-surface-500)/1)}.dark .ring-surface-900-50-token{--tw-ring-color:rgb(var(--color-surface-50)/1)}.dark .ring-surface-800-100-token{--tw-ring-color:rgb(var(--color-surface-100)/1)}.dark .ring-surface-700-200-token{--tw-ring-color:rgb(var(--color-surface-200)/1)}.dark .ring-surface-600-300-token{--tw-ring-color:rgb(var(--color-surface-300)/1)}.dark .ring-surface-500-400-token{--tw-ring-color:rgb(var(--color-surface-400)/1)}.hover\:variant-soft:hover{background-color:rgb(var(--color-surface-400)/.2);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;color:rgb(var(--color-surface-700))}.dark .hover\:variant-soft:hover{color:rgb(var(--color-surface-200))}:is(.dark .hover\:variant-soft:hover){background-color:rgb(var(--color-surface-500)/.2)}.hover\:opacity-100:hover{opacity:1}.hover\:brightness-\[105\%\]:hover{--tw-brightness:brightness(105%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark .hover\:bg-primary-hover-token:hover:hover,.hover\:bg-primary-hover-token:hover:hover{background-color:rgb(var(--color-primary-500)/.1)}.disabled\:\!opacity-0:disabled{opacity:0!important}.dark\:bg-surface-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(var(--color-surface-300)/var(--tw-bg-opacity))}.dark\:bg-surface-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(var(--color-surface-700)/var(--tw-bg-opacity))}.dark\:stroke-surface-50:is(.dark *){stroke:rgb(var(--color-surface-50)/1)}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:accent-surface-50:is(.dark *){accent-color:rgb(var(--color-surface-50)/1)}.dark\:hover\:brightness-110:hover:is(.dark *){--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.md\:w-auto{width:auto}.md\:flex-row{flex-direction:row}.md\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none} \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI.Svelte/tailwind.config.cjs b/BExIS.Modules.DQM.UI.Svelte/tailwind.config.cjs new file mode 100644 index 0000000..b5083b9 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/tailwind.config.cjs @@ -0,0 +1,24 @@ +// tailwind.config.js +import { join } from 'path'; +import { skeleton } from '@skeletonlabs/tw-plugin'; + +export default { + darkMode: 'class', + content: [ + './src/**/*.{html,js,svelte,ts}', + + // Skeleton-Komponenten + './node_modules/@skeletonlabs/skeleton/**/*.{html,js,svelte,ts}', + + // BEXIS2-Komponenten + //'./node_modules/@bexis2/bexis2-core-ui/**/*.{html,js,svelte,ts}' + ], + theme: { + extend: {} + }, + plugins: [ + require('@tailwindcss/forms'), + require('@tailwindcss/typography'), + skeleton() + ] +}; diff --git a/BExIS.Modules.DQM.UI.Svelte/vite.config.js b/BExIS.Modules.DQM.UI.Svelte/vite.config.js new file mode 100644 index 0000000..2fddb66 --- /dev/null +++ b/BExIS.Modules.DQM.UI.Svelte/vite.config.js @@ -0,0 +1,24 @@ +import { defineConfig } from 'vite'; +import { svelte } from '@sveltejs/vite-plugin-svelte'; +import path from 'path'; +import stringPlugin from 'vite-plugin-string'; + +export default defineConfig({ + build: { + lib: { + entry: 'src/DataQuality.svelte', + name: 'DataQuality', + fileName: () => 'data-quality.js', + formats: ['iife'] + } + }, + plugins: [ + svelte({ compilerOptions: { customElement: true} }), + stringPlugin({ include: '**/*.css' }) + ], + resolve: { + alias: { + '$app/environment': path.resolve('./src/shims/environment.js') + } + } +}); \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/.gitignore b/BExIS.Modules.DQM.UI/.gitignore new file mode 100644 index 0000000..7ab57c1 --- /dev/null +++ b/BExIS.Modules.DQM.UI/.gitignore @@ -0,0 +1,263 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# BExIS-specific files +[Ww]orkspace/ + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +Workspace/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# SPECIFIC +/Console/BExIS.Web.Shell/Credentials.config +/Console/BExIS.Web.Shell/Areas/DCM/Content/Images/Help +/Console/BExIS.Web.Shell/Areas/RPM/Content/Images/Help +/Console/BExIS.Web.Shell/Areas/SAM/Content/Images/Help +/Console/*.zip diff --git a/BExIS.Modules.DQM.UI/BExIS.Modules.Dqm.UI.csproj b/BExIS.Modules.DQM.UI/BExIS.Modules.Dqm.UI.csproj new file mode 100644 index 0000000..c9bd206 --- /dev/null +++ b/BExIS.Modules.DQM.UI/BExIS.Modules.Dqm.UI.csproj @@ -0,0 +1,276 @@ + + + + + Debug + AnyCPU + + + 2.0 + {857755F0-C234-40F3-9128-4F5138C22A8C} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + BExIS.Modules.Dqm.UI + BExIS.Modules.Dqm.UI + v4.8 + false + true + + + + + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + ..\..\..\..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll + True + + + + ..\..\..\..\packages\Microsoft.AspNet.WebHelpers.3.2.3\lib\net45\Microsoft.Web.Helpers.dll + True + + + ..\..\..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll + True + + + + + + ..\..\..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll + True + + + + + + + ..\..\..\..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll + True + + + ..\..\..\..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll + True + + + ..\..\..\..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll + True + + + + + + + True + ..\..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + True + ..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll + + + True + ..\..\..\..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll + + + True + ..\..\..\..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll + + + True + ..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll + + + True + ..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll + + + True + ..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll + + + + ..\..\..\..\packages\TelerikMvcExtensions.2013.2.611\lib\net40\Telerik.Web.Mvc.dll + + + ..\..\..\..\packages\WebActivator.1.2.0.0\lib\NETFramework40\WebActivator.dll + True + + + ..\..\..\..\packages\WebGrease.1.5.2\lib\WebGrease.dll + True + + + ..\..\..\..\packages\Microsoft.AspNet.WebPages.Data.3.2.3\lib\net45\WebMatrix.Data.dll + True + + + ..\..\..\..\packages\Microsoft.AspNet.WebPages.WebData.3.2.3\lib\net45\WebMatrix.WebData.dll + True + + + + + + + + + + + + + + + + + + + + + + + + web.config + + + web.config + + + + + + + + + {C230693B-D780-438B-B26C-82257642DD5C} + BExIS.Security.Entities + + + {681C8BC4-55F0-4F43-A685-90E246A88CB1} + BExIS.Security.Services + + + {7D7FBF8E-37D7-4A4C-B40E-3F267E9B9760} + BExIS.App.Bootstrap + + + {B4E7B1BF-01B4-40AF-8D19-B8F362167261} + BExIS.Dlm.Entities + + + {C4CA0A99-0AF3-4372-A9B7-B9073599BD8B} + BExIS.Dlm.Services + + + {DE0AD99C-C559-422F-8132-CC4D7C46FF83} + BExIS.UI + + + {b446c14f-9df1-4c3c-a634-e3addd05c48a} + Vaiona.Core + + + {c4d4bc9e-8832-4966-be58-cb684e9a74e8} + Vaiona.Entities.Orm.NH + + + {0815d220-3625-4e23-bbbc-8152345637fe} + Vaiona.Entities + + + {e8b37581-1cac-463d-903b-b4bee8b2b0e3} + Vaiona.Logging + + + {a60ac05f-8c9a-4efd-9826-452e6049da4d} + Vaiona.Model + + + {640BF81D-354A-4BF0-85FC-F0AD587CF8A2} + Vaiona.Persistence.Api + + + {63fcacaa-9534-4fdd-a082-78dcc06baf28} + Vaiona.Utils + + + {705f8751-e58a-453e-a7fd-0c310fd3cae8} + Vaiona.Web.Mvc.Modularity + + + {5f5d22e8-8c05-49cd-854e-8fe8eff1aa6c} + Vaiona.Web.Mvc + + + {5b48b5a8-eae8-4ef8-8f2c-7fedb1b095d3} + Vaiona.Web + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + + + + True + True + 16528 + / + http://localhost:16528/ + False + False + + + False + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + mkdir "$(SolutionDir)Console\Workspace\Modules\DQM" +C:\Windows\System32\xcopy "$(ProjectDir)Dqm.Settings.json" "$(SolutionDir)Console\Workspace\Modules\DQM" /C /Y /I + + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Content/main.css b/BExIS.Modules.DQM.UI/Content/main.css new file mode 100644 index 0000000..da71aca --- /dev/null +++ b/BExIS.Modules.DQM.UI/Content/main.css @@ -0,0 +1,54 @@ +.dtm-divBox { + border-left: #388670 6px solid; + border-right: #388670 2px solid; + border-bottom: #388670 2px solid; + border-top: #388670 10px solid; + margin-bottom: 1em; +} + +.dtm-para_green { + background-color: #bbddd9; + font-size: 14px; + padding: 0.5em; +} + +.dtm-divBox .dtm-controls { + display: flex; + flex-wrap: wrap; + padding: 0.1em 0.5em; +} + +.dtm-divBox .dtm-controls span { + flex-grow: 1; + flex-basis: 0; + text-align: center; + white-space: nowrap; + min-width: 18%; + width: 19%; +} + +.dtm-divBox button { + margin-left: 0.5em; +} + +.dtm-error { + color: red; + max-width: 75%; + float: right; + padding: 3px 0; + margin: 2px 1em 0; +} + +[data-selectall-target] span { + display: none; +} + +[data-selectall-target].dtm-selectall .dtm-selectall, +[data-selectall-target]:not(.dtm-selectall) :not(.dtm-selectall) { + display: inline; +} + +label.bx-disabled { + opacity: 0.6; + pointer-events: none; /* workaround for checkboxes being disabled, but still send to model */ +} \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Controllers/Hooks/DataQualityController.cs b/BExIS.Modules.DQM.UI/Controllers/Hooks/DataQualityController.cs new file mode 100644 index 0000000..52eae46 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Controllers/Hooks/DataQualityController.cs @@ -0,0 +1,47 @@ +using BExIS.App.Bootstrap.Attributes; +using BExIS.Dlm.Entities.Data; +using BExIS.Dlm.Services.Data; +using BExIS.Security.Entities.Authorization; +using BExIS.UI.Helpers; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using Vaiona.Web.Mvc.Models; + +namespace BExIS.Modules.Dqm.UI.Controllers.Legacy +{ + public class DataQualityController : Controller + { + // GET: DataQuality + public ActionResult Index(long id, int version) + { + ViewBag.Id = id; + ViewBag.Version = version; + + return PartialView("Index"); + } + + public ActionResult Test() + { + return View("Index"); + + } + + /// + /// Entrypoint for Data Quality Hook + /// + /// + /// + /// + [BExISEntityAuthorize(typeof(Dataset), "id", RightType.Read)] + public ActionResult Start(long id, int version = 0) + { + //return RedirectToAction("index", new { id, version }); + return RedirectToAction("Index", new { id, version }); + } + } + + +} \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Dqm.Manifest.xml b/BExIS.Modules.DQM.UI/Dqm.Manifest.xml new file mode 100644 index 0000000..6a25731 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Dqm.Manifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Dqm.Module.cs b/BExIS.Modules.DQM.UI/Dqm.Module.cs new file mode 100644 index 0000000..02ab125 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Dqm.Module.cs @@ -0,0 +1,35 @@ +using BExIS.Modules.Dov.UI.Helper; +using System; +using Vaiona.Logging; +using Vaiona.Web.Mvc.Modularity; + +namespace BExIS.Modules.Dqm.UI +{ + public class DQMModule : ModuleBase + { + public DQMModule(): base("DQM") + { + } + + + public override void Install() + { + LoggerFactory.GetFileLogger().LogCustom("... start install of DQM ..."); + try + { + base.Install(); + //using (DqmSeedDataGenerator generator = new DovSeedDataGenerator()) + //{ + // //generator.GenerateSeedData(); + //} + } + catch (Exception e) + { + LoggerFactory.GetFileLogger().LogCustom(e.Message); + LoggerFactory.GetFileLogger().LogCustom(e.StackTrace); + } + + LoggerFactory.GetFileLogger().LogCustom("... end install of DQM ..."); + } + } +} diff --git a/BExIS.Modules.DQM.UI/Dqm.Settings.json b/BExIS.Modules.DQM.UI/Dqm.Settings.json new file mode 100644 index 0000000..f879568 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Dqm.Settings.json @@ -0,0 +1,16 @@ +{ + "id": "dqm", + "name": "Dataset Quality", + "description": "...", + "entries": [ + { + "key": "help", + "title": "Help URL", + "value": "", + "type": "String", + "description": "URL to the manual. If empty, it links to the latest manual from BEXIS2" + } + + + ] +} \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Dqm.Settings.xml b/BExIS.Modules.DQM.UI/Dqm.Settings.xml new file mode 100644 index 0000000..26cb7bb --- /dev/null +++ b/BExIS.Modules.DQM.UI/Dqm.Settings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Helper/DqmSeedDataGenerator.cs b/BExIS.Modules.DQM.UI/Helper/DqmSeedDataGenerator.cs new file mode 100644 index 0000000..cd6a73f --- /dev/null +++ b/BExIS.Modules.DQM.UI/Helper/DqmSeedDataGenerator.cs @@ -0,0 +1,44 @@ +using BExIS.Security.Entities.Objects; +using BExIS.Security.Services.Objects; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using Vaiona.Web.Mvc.Modularity; + +namespace BExIS.Modules.Dov.UI.Helper +{ + public class DovSeedDataGenerator : IModuleSeedDataGenerator + { + public void GenerateSeedData() + { + FeatureManager featureManager = new FeatureManager(); + OperationManager operationManager = new OperationManager(); + + try + { + Feature rootDataToolsFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Data Quality Hook")); + if (rootDataToolsFeature == null) rootDataToolsFeature = featureManager.Create("Data Quality Hook", "Data Quality Hook"); + + Feature GalleryFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Datasets Overview")); + if (GalleryFeature == null) GalleryFeature = featureManager.Create("Datasets Overview", "Datasets Overview", rootDataToolsFeature); + + operationManager.Create("DOV", "DatasetsOverview", "*", GalleryFeature); + } + catch (Exception ex) + { + throw ex; + } + finally + { + featureManager.Dispose(); + operationManager.Dispose(); + } + } + + public void Dispose() + { + // nothing to do for now... + } + } +} \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Hooks/DataQualityHook.cs b/BExIS.Modules.DQM.UI/Hooks/DataQualityHook.cs new file mode 100644 index 0000000..431e59b --- /dev/null +++ b/BExIS.Modules.DQM.UI/Hooks/DataQualityHook.cs @@ -0,0 +1,52 @@ +using BExIS.Dlm.Services.Data; +using BExIS.Security.Entities.Authorization; +using BExIS.UI.Hooks; + +namespace BExIS.Modules.Dqm.UI.Hooks +{ + public class DataQualityHook : Hook + { + public DataQualityHook() + { + Start = "/dqm/dataquality/start"; + } + + public override void Check(long id, string username) + { + // check status + checkStatus(id, username); + + // check if subject is checked in + // only check if status is open + checkAvailablity(id); + } + + private void checkStatus(long id, string username) + { + // check if the user has access rights to the entrypoint - set in Start + bool hasAccess = hasUserAccessRights(username); + + // user rights to the dataset + bool hasRights = hasUserEntityRights(id, username, RightType.Read); + + // if one fail then access is denied + if (hasAccess == false || hasRights == false) Status = HookStatus.AccessDenied; + else Status = HookStatus.Open; + + using (var datasetManager = new DatasetManager()) + { + var dataset = datasetManager.GetDataset(id); + if (dataset.Status != Dlm.Entities.Data.DatasetStatus.CheckedIn) Status = HookStatus.Disabled; + } + } + + private void checkAvailablity(long id) + { + // check if subject is checked in + // only check if status is open + if (Status == HookStatus.Open) + using (var datasetManager = new DatasetManager()) + Status = datasetManager.IsDatasetCheckedIn(id) == true ? HookStatus.Open : HookStatus.Waiting; + } + } +} \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Models/DataQualityModel.cs b/BExIS.Modules.DQM.UI/Models/DataQualityModel.cs new file mode 100644 index 0000000..aece609 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Models/DataQualityModel.cs @@ -0,0 +1,15 @@ +using System.Data; + +namespace BExIS.Modules.Dqm.UI.Models +{ + public class DatasetsOverviewDataModel + { + public DataTable data { get; set; } + public string GenerationTime { get; set; } + + public DatasetsOverviewDataModel() + { + data = new DataTable(); + } + } +} \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Properties/AssemblyInfo.cs b/BExIS.Modules.DQM.UI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e219b8c --- /dev/null +++ b/BExIS.Modules.DQM.UI/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BExIS.Modules.Lui.UI")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BExIS.Modules.Lui.UI")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("dea22f9c-47be-4146-94be-1c9aa969afc3")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BExIS.Modules.DQM.UI/Properties/PublishProfiles/BexisServer_BE_DevSite.pubxml b/BExIS.Modules.DQM.UI/Properties/PublishProfiles/BexisServer_BE_DevSite.pubxml new file mode 100644 index 0000000..21b3fa6 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Properties/PublishProfiles/BexisServer_BE_DevSite.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + FileSystem + Release + Any CPU + + True + False + C:\inetpub\wwwroot\BE_DevSite\Site\Areas\DQM + False + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/Scripts/txt.txt b/BExIS.Modules.DQM.UI/Scripts/txt.txt new file mode 100644 index 0000000..e69de29 diff --git a/BExIS.Modules.DQM.UI/Views/DataQuality/Index.cshtml b/BExIS.Modules.DQM.UI/Views/DataQuality/Index.cshtml new file mode 100644 index 0000000..295aabf --- /dev/null +++ b/BExIS.Modules.DQM.UI/Views/DataQuality/Index.cshtml @@ -0,0 +1,43 @@ +@using BExIS.Utils.Extensions +@{ + string debugPath2 = ""; + if (Html.IsDebug()) + { + debugPath2 = "BExIS.Modules.Dqm.UI/"; + } + + var datasetId = ViewBag.Id ?? ""; + var datasetVersion = ViewBag.Version ?? ""; + var scriptPath = "/Areas/DQM/"+ debugPath2 + "Scripts/data-quality.js"; +} + +
+ + diff --git a/BExIS.Modules.DQM.UI/Views/Shared/Error.cshtml b/BExIS.Modules.DQM.UI/Views/Shared/Error.cshtml new file mode 100644 index 0000000..806232b --- /dev/null +++ b/BExIS.Modules.DQM.UI/Views/Shared/Error.cshtml @@ -0,0 +1,18 @@ +@model System.Web.Mvc.HandleErrorInfo +@{ + Layout = null; +} + + + + + + Error + + +
+

Error.

+

An error occurred while processing your request.

+
+ + diff --git a/BExIS.Modules.DQM.UI/Views/Web.config b/BExIS.Modules.DQM.UI/Views/Web.config new file mode 100644 index 0000000..afe4e22 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Views/Web.config @@ -0,0 +1,43 @@ + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BExIS.Modules.DQM.UI/Views/_ViewStart.cshtml b/BExIS.Modules.DQM.UI/Views/_ViewStart.cshtml new file mode 100644 index 0000000..67b7d48 --- /dev/null +++ b/BExIS.Modules.DQM.UI/Views/_ViewStart.cshtml @@ -0,0 +1,5 @@ +@using Vaiona.Web.Mvc; +@*@using Microsoft.Web.Helpers;*@ +@{ + Layout = Html.GetLayoutName(); +} diff --git a/BExIS.Modules.DQM.UI/packages.config b/BExIS.Modules.DQM.UI/packages.config new file mode 100644 index 0000000..1596c89 --- /dev/null +++ b/BExIS.Modules.DQM.UI/packages.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/web.Debug.config b/BExIS.Modules.DQM.UI/web.Debug.config new file mode 100644 index 0000000..fae9cfe --- /dev/null +++ b/BExIS.Modules.DQM.UI/web.Debug.config @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/web.Release.config b/BExIS.Modules.DQM.UI/web.Release.config new file mode 100644 index 0000000..da6e960 --- /dev/null +++ b/BExIS.Modules.DQM.UI/web.Release.config @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/BExIS.Modules.DQM.UI/web.config b/BExIS.Modules.DQM.UI/web.config new file mode 100644 index 0000000..5d4a87e --- /dev/null +++ b/BExIS.Modules.DQM.UI/web.config @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file