From f91f1998b394376a3a554bee832219f0d1941d02 Mon Sep 17 00:00:00 2001 From: srinidhi-2006-bit Date: Wed, 27 May 2026 23:17:40 +0530 Subject: [PATCH 01/69] test: add unit tests for DashboardHeader component --- jest.config.js | 17 + jest.setup.js | 1 + package-lock.json | 11853 +++++++++++----- package.json | 6 + .../__tests__/DashboardHeader.test.tsx | 113 + tsconfig.json | 2 + 6 files changed, 8426 insertions(+), 3566 deletions(-) create mode 100644 jest.config.js create mode 100644 jest.setup.js create mode 100644 src/components/__tests__/DashboardHeader.test.tsx diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..69927da6 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,17 @@ +const nextJest = require("next/jest"); + +const createJestConfig = nextJest({ + dir: "./", +}); + +const customJestConfig = { + testEnvironment: "jsdom", + + moduleNameMapper: { + "^@/(.*)$": "/src/$1", + }, + + setupFilesAfterEnv: ["/jest.setup.js"], +}; + +module.exports = createJestConfig(customJestConfig); diff --git a/jest.setup.js b/jest.setup.js new file mode 100644 index 00000000..d0de870d --- /dev/null +++ b/jest.setup.js @@ -0,0 +1 @@ +import "@testing-library/jest-dom"; diff --git a/package-lock.json b/package-lock.json index c47f690f..2c94f36d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,19 +30,32 @@ }, "devDependencies": { "@playwright/test": "1.60.0", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@types/jest": "^30.0.0", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "autoprefixer": "^10.4.19", "eslint": "^8", "eslint-config-next": "14.2.35", + "jest": "^30.4.2", + "jest-environment-jsdom": "^30.4.1", "postcss": "^8.4.38", "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.1", + "ts-jest": "^29.4.11", "typescript": "^5", "vitest": "^1.6.0" } }, + "node_modules/@adobe/css-tools": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.5.0.tgz", + "integrity": "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -56,943 +69,1035 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" } }, - "node_modules/@emnapi/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", - "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "node_modules/@asamuzakjp/css-color/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==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, "license": "MIT", "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, "engines": { - "node": ">=12" + "node": ">=6.0.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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" - ], + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=10.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, "engines": { - "node": ">=12.22" + "node": ">=6.9.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "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==", + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, - "license": "ISC", + "license": "MIT", "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" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.2.2" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "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==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "license": "MIT", - "optional": true, "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" + "tslib": "^2.4.0" } }, - "node_modules/@next/env": { - "version": "14.2.35", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.35.tgz", - "integrity": "sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "14.2.35", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.35.tgz", - "integrity": "sha512-Jw9A3ICz2183qSsqwi7fgq4SBPiNfmOLmTPXKvlnzstUwyvBrtySiY+8RXJweNAs9KThb1+bYhZh9XWcNOr2zQ==", - "dev": true, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "license": "MIT", "dependencies": { - "glob": "10.3.10" + "tslib": "^2.4.0" } }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.33.tgz", - "integrity": "sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ - "arm64" + "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "aix" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.33.tgz", - "integrity": "sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==", + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ - "x64" + "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "android" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.33.tgz", - "integrity": "sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==", + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.33.tgz", - "integrity": "sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==", + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ - "arm64" + "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.33.tgz", - "integrity": "sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==", - "cpu": [ - "x64" + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.33.tgz", - "integrity": "sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.33.tgz", - "integrity": "sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "freebsd" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.33.tgz", - "integrity": "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ - "ia32" + "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "freebsd" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.33.tgz", - "integrity": "sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==", + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ - "x64" + "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@panva/hkdf": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@panva/hkdf/-/hkdf-1.2.1.tgz", - "integrity": "sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@playwright/test": { - "version": "1.60.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", - "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.60.0" - }, - "bin": { - "playwright": "cli.js" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" + "node": ">=12" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", - "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ - "arm" + "s390x" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" - ] + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", - "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" - ] + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", - "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "netbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", - "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -1000,27 +1105,16 @@ "license": "MIT", "optional": true, "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", - "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", - "cpu": [ - "arm64" + "openbsd" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", - "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -1028,41 +1122,16 @@ "license": "MIT", "optional": true, "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", - "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", - "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", - "cpu": [ - "arm" + "sunos" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", - "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -1070,1056 +1139,1272 @@ "license": "MIT", "optional": true, "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", - "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", - "cpu": [ - "arm64" + "win32" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", - "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ - "loong64" + "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", - "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", - "cpu": [ - "loong64" + "win32" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", - "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", + "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": [ - "ppc64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", - "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", - "cpu": [ - "ppc64" + "win32" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", - "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", - "cpu": [ - "riscv64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", - "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", - "cpu": [ - "riscv64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", - "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", - "cpu": [ - "s390x" - ], + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", - "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", - "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", - "cpu": [ - "x64" - ], + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", - "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", - "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", - "cpu": [ - "arm64" - ], + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", - "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", - "cpu": [ - "arm64" - ], + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "BSD-3-Clause" }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", - "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", - "cpu": [ - "ia32" - ], + "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==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "ISC", + "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/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", - "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", - "cpu": [ - "x64" - ], + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", - "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", - "cpu": [ - "x64" - ], + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } }, - "node_modules/@rtsao/scc": { + "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz", - "integrity": "sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT" - }, - "node_modules/@supabase/auth-js": { - "version": "2.106.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.106.2.tgz", - "integrity": "sha512-VcAjUErkHkhC5Jaf+g/G1qbkQrFh8edaCdHa7pxJmHUjkWKjT7UnYCtPA89XV0N0GIYRkEqJZw5V62CtOxTmBQ==", "license": "MIT", "dependencies": { - "tslib": "2.8.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=8" } }, - "node_modules/@supabase/functions-js": { - "version": "2.106.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.106.2.tgz", - "integrity": "sha512-oRnr0QrL8H+zTO1YyQ1QjiHZU/957jvubbxSJTUm2XLAgzoGGV9Tahfyd+uvLsBLRVmXLtpU3oyCjdQIvkGMOA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "2.8.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=20.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@supabase/phoenix": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@supabase/phoenix/-/phoenix-0.4.2.tgz", - "integrity": "sha512-YSAGnmDAfuleFCVt3CeurQZAhxRfXWeZIIkwp7NhYzQ1UwW6ePSnzsFAiUm/mbCkfoCf70QQHKW/K6RKh52a4A==", - "license": "MIT" - }, - "node_modules/@supabase/postgrest-js": { - "version": "2.106.2", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.106.2.tgz", - "integrity": "sha512-tDOzyPgp9pIRMR2x6C9+uDSJrnXSzxLtt3d7nC+Lrsy3jnJDHYfdQC/xcRyhJE/TOBJ0heSqRKR3UmejDjZxsw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "2.8.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=8" } }, - "node_modules/@supabase/realtime-js": { - "version": "2.106.2", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.106.2.tgz", - "integrity": "sha512-LdRGT7DNhyZkPjubUv5bSdAZ0jSEX8wTHvx7htj7+K59TOZRvz4TuQK7tL2RWxyIZVeFMRluL04SzWS61rKnUA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { - "@supabase/phoenix": "^0.4.2", - "tslib": "2.8.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@supabase/ssr": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.10.3.tgz", - "integrity": "sha512-ux2CJgX89h0Fz2lY7ZNafNG2SkXpyRc5dz77K9eKeBLPdtywQixKwIuetDeIViAJBp/buOUVmgj8PVesOklNpw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { - "cookie": "^1.0.2" + "p-limit": "^2.2.0" }, - "peerDependencies": { - "@supabase/supabase-js": "^2.105.3" + "engines": { + "node": ">=8" } }, - "node_modules/@supabase/ssr/node_modules/cookie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", - "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=8" } }, - "node_modules/@supabase/storage-js": { - "version": "2.106.2", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.106.2.tgz", - "integrity": "sha512-xgKCSYuev1YarV+iVqr+zlfgSyremnJtn8T0NCT8L4XmMv1CLtESc0Q6kNp8+mKWdX/8ND0nzm7OMKx08kwNAw==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", + "dev": true, "license": "MIT", - "dependencies": { - "iceberg-js": "^0.8.1", - "tslib": "2.8.1" - }, "engines": { - "node": ">=20.0.0" + "node": ">=8" } }, - "node_modules/@supabase/supabase-js": { - "version": "2.106.2", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.106.2.tgz", - "integrity": "sha512-2/RZ/1fmJx/MRSEDG2Xk8+J4JVk5clM9V0uSI6kUTrcS32KA89DtqI5RUOC9r6mzY3WBC9qexLjssIHjbLyVJA==", + "node_modules/@jest/console": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.4.1.tgz", + "integrity": "sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==", + "dev": true, "license": "MIT", "dependencies": { - "@supabase/auth-js": "2.106.2", - "@supabase/functions-js": "2.106.2", - "@supabase/postgrest-js": "2.106.2", - "@supabase/realtime-js": "2.106.2", - "@supabase/storage-js": "2.106.2" + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.4.1", + "jest-util": "30.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=20.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "license": "Apache-2.0" - }, - "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "license": "Apache-2.0", + "node_modules/@jest/core": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.4.2.tgz", + "integrity": "sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "@jest/console": "30.4.1", + "@jest/pattern": "30.4.0", + "@jest/reporters": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.4.1", + "jest-config": "30.4.2", + "jest-haste-map": "30.4.1", + "jest-message-util": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-resolve": "30.4.1", + "jest-resolve-dependencies": "30.4.2", + "jest-runner": "30.4.2", + "jest-runtime": "30.4.2", + "jest-snapshot": "30.4.1", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", + "jest-watcher": "30.4.1", + "pretty-format": "30.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "node_modules/@jest/core/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "tslib": "^2.4.0" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/d3-array": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", - "license": "MIT" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "node_modules/@jest/core/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, "license": "MIT" }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/d3-color": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "node_modules/@jest/core/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/d3-time": "*" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/d3-shape": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", - "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", - "license": "MIT", + "node_modules/@jest/core/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", "dependencies": { - "@types/d3-path": "*" + "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/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" + "node_modules/@jest/core/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==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "node_modules/@jest/core/node_modules/jest-config": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.4.2.tgz", + "integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.4.0", + "@jest/test-sequencer": "30.4.1", + "@jest/types": "30.4.1", + "babel-jest": "30.4.1", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.4.2", + "jest-docblock": "30.4.0", + "jest-environment-node": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-resolve": "30.4.1", + "jest-runner": "30.4.2", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", + "parse-json": "^5.2.0", + "pretty-format": "30.4.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "node_modules/@jest/core/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/@types/node": { - "version": "20.19.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", - "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/pako": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz", - "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "node_modules/@jest/diff-sequences": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", + "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/raf": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", - "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", "license": "MIT", - "optional": true + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/@types/react": { - "version": "18.3.29", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.29.tgz", - "integrity": "sha512-ch0qJdr2JY0r04NXSprbK6TXOgnaJ1Tz23fm5W+z0/CBah6BSBc3n96h7K9GOtwh0HrilNWHIBzE1Ko4Dcw/Wg==", + "node_modules/@jest/environment": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.4.1.tgz", + "integrity": "sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==", "dev": true, "license": "MIT", "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.2.2" + "@jest/fake-timers": "30.4.1", + "@jest/types": "30.4.1", + "@types/node": "*", + "jest-mock": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "node_modules/@jest/environment-jsdom-abstract": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.4.1.tgz", + "integrity": "sha512-dSlKrqug3siYNHVnjwIldShY12wAH3spwRltO/+8VOjg0X+xEq7vOs3DbBs4LRKsu7OH+NUb9kuZUNBF9Ho3TA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "30.4.1", + "@jest/fake-timers": "30.4.1", + "@jest/types": "30.4.1", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, "peerDependencies": { - "@types/react": "^18.0.0" + "canvas": "^3.0.0", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "node_modules/@jest/expect": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==", + "dev": true, "license": "MIT", - "optional": true + "dependencies": { + "expect": "30.4.1", + "jest-snapshot": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.0.tgz", - "integrity": "sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==", + "node_modules/@jest/expect-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", + "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.60.0", - "@typescript-eslint/type-utils": "8.60.0", - "@typescript-eslint/utils": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" + "@jest/get-type": "30.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.4.1.tgz", + "integrity": "sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.4.1", + "@sinonjs/fake-timers": "^15.4.0", + "@types/node": "*", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.60.0", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.0.tgz", - "integrity": "sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==", + "node_modules/@jest/globals": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.4.1.tgz", + "integrity": "sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.60.0", - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/typescript-estree": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0", - "debug": "^4.4.3" + "@jest/environment": "30.4.1", + "@jest/expect": "30.4.1", + "@jest/types": "30.4.1", + "jest-mock": "30.4.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.0.tgz", - "integrity": "sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==", + "node_modules/@jest/pattern": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.60.0", - "@typescript-eslint/types": "^8.60.0", - "debug": "^4.4.3" + "@types/node": "*", + "jest-regex-util": "30.4.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.4.1.tgz", + "integrity": "sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.4.1", + "jest-util": "30.4.1", + "jest-worker": "30.4.1", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.0.tgz", - "integrity": "sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.0.tgz", - "integrity": "sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==", + "node_modules/@jest/reporters/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==", "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/isaacs" }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.0.tgz", - "integrity": "sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==", + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/typescript-estree": "8.60.0", - "@typescript-eslint/utils": "8.60.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" + "brace-expansion": "^2.0.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.0.tgz", - "integrity": "sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "dependencies": { + "@sinclair/typebox": "^0.27.8" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.0.tgz", - "integrity": "sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==", + "node_modules/@jest/snapshot-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.4.1.tgz", + "integrity": "sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.60.0", - "@typescript-eslint/tsconfig-utils": "8.60.0", - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" + "@jest/types": "30.4.1", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, "engines": { - "node": "18 || 20 || >=22" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "node_modules/@jest/test-result": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.4.1.tgz", + "integrity": "sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "@jest/console": "30.4.1", + "@jest/types": "30.4.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "node_modules/@jest/test-sequencer": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.4.1.tgz", + "integrity": "sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.5" + "@jest/test-result": "30.4.1", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.0.tgz", - "integrity": "sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==", + "node_modules/@jest/transform": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.4.1.tgz", + "integrity": "sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.60.0", - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/typescript-estree": "8.60.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.4.1", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-util": "30.4.1", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.0.tgz", - "integrity": "sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==", + "node_modules/@jest/types": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.0", - "eslint-visitor-keys": "^5.0.0" + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "node_modules/@jest/types/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", - "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", + "node_modules/@jest/types/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz", - "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==", - "cpu": [ - "arm" - ], + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz", - "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==", - "cpu": [ - "arm64" - ], + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz", - "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==", - "cpu": [ - "arm64" - ], + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz", - "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==", - "cpu": [ - "x64" - ], + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz", - "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==", - "cpu": [ - "x64" - ], + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz", - "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==", - "cpu": [ - "arm" - ], + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz", - "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==", - "cpu": [ - "arm" - ], + "node_modules/@next/env": { + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.35.tgz", + "integrity": "sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.35.tgz", + "integrity": "sha512-Jw9A3ICz2183qSsqwi7fgq4SBPiNfmOLmTPXKvlnzstUwyvBrtySiY+8RXJweNAs9KThb1+bYhZh9XWcNOr2zQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "glob": "10.3.10" + } }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz", - "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==", + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.33.tgz", + "integrity": "sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "darwin" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz", - "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==", + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.33.tgz", + "integrity": "sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==", "cpu": [ - "arm64" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "darwin" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-loong64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz", - "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==", + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.33.tgz", + "integrity": "sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==", "cpu": [ - "loong64" + "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-loong64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz", - "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==", + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.33.tgz", + "integrity": "sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==", "cpu": [ - "loong64" + "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz", - "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==", + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.33.tgz", + "integrity": "sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==", "cpu": [ - "ppc64" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz", - "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==", + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.33.tgz", + "integrity": "sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==", "cpu": [ - "riscv64" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz", - "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==", + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.33.tgz", + "integrity": "sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==", "cpu": [ - "riscv64" + "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz", - "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==", + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.33.tgz", + "integrity": "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==", "cpu": [ - "s390x" + "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz", - "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==", + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.33.tgz", + "integrity": "sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz", - "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==", - "cpu": [ - "x64" + "win32" ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-openharmony-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz", - "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@panva/hkdf": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@panva/hkdf/-/hkdf-1.2.1.tgz", + "integrity": "sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "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==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@playwright/test": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.60.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", + "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", + "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", "cpu": [ "arm64" ], @@ -2127,1297 +2412,4684 @@ "license": "MIT", "optional": true, "os": [ - "openharmony" + "android" ] }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz", - "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", + "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", "cpu": [ - "wasm32" + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", + "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", + "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", + "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", + "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", + "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", + "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", + "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", + "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", + "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", + "cpu": [ + "loong64" ], "dev": true, "license": "MIT", - "optional": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", + "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", + "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", + "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", + "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", + "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", + "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", + "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", + "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", + "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", + "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", + "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", + "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", + "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz", + "integrity": "sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", + "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@supabase/auth-js": { + "version": "2.106.2", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.106.2.tgz", + "integrity": "sha512-VcAjUErkHkhC5Jaf+g/G1qbkQrFh8edaCdHa7pxJmHUjkWKjT7UnYCtPA89XV0N0GIYRkEqJZw5V62CtOxTmBQ==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.106.2", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.106.2.tgz", + "integrity": "sha512-oRnr0QrL8H+zTO1YyQ1QjiHZU/957jvubbxSJTUm2XLAgzoGGV9Tahfyd+uvLsBLRVmXLtpU3oyCjdQIvkGMOA==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/phoenix": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@supabase/phoenix/-/phoenix-0.4.2.tgz", + "integrity": "sha512-YSAGnmDAfuleFCVt3CeurQZAhxRfXWeZIIkwp7NhYzQ1UwW6ePSnzsFAiUm/mbCkfoCf70QQHKW/K6RKh52a4A==", + "license": "MIT" + }, + "node_modules/@supabase/postgrest-js": { + "version": "2.106.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.106.2.tgz", + "integrity": "sha512-tDOzyPgp9pIRMR2x6C9+uDSJrnXSzxLtt3d7nC+Lrsy3jnJDHYfdQC/xcRyhJE/TOBJ0heSqRKR3UmejDjZxsw==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.106.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.106.2.tgz", + "integrity": "sha512-LdRGT7DNhyZkPjubUv5bSdAZ0jSEX8wTHvx7htj7+K59TOZRvz4TuQK7tL2RWxyIZVeFMRluL04SzWS61rKnUA==", + "license": "MIT", + "dependencies": { + "@supabase/phoenix": "^0.4.2", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/ssr": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.10.3.tgz", + "integrity": "sha512-ux2CJgX89h0Fz2lY7ZNafNG2SkXpyRc5dz77K9eKeBLPdtywQixKwIuetDeIViAJBp/buOUVmgj8PVesOklNpw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.2" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.105.3" + } + }, + "node_modules/@supabase/ssr/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.106.2", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.106.2.tgz", + "integrity": "sha512-xgKCSYuev1YarV+iVqr+zlfgSyremnJtn8T0NCT8L4XmMv1CLtESc0Q6kNp8+mKWdX/8ND0nzm7OMKx08kwNAw==", + "license": "MIT", + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.106.2", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.106.2.tgz", + "integrity": "sha512-2/RZ/1fmJx/MRSEDG2Xk8+J4JVk5clM9V0uSI6kUTrcS32KA89DtqI5RUOC9r6mzY3WBC9qexLjssIHjbLyVJA==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.106.2", + "@supabase/functions-js": "2.106.2", + "@supabase/postgrest-js": "2.106.2", + "@supabase/realtime-js": "2.106.2", + "@supabase/storage-js": "2.106.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", + "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/react": { + "version": "18.3.29", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.29.tgz", + "integrity": "sha512-ch0qJdr2JY0r04NXSprbK6TXOgnaJ1Tz23fm5W+z0/CBah6BSBc3n96h7K9GOtwh0HrilNWHIBzE1Ko4Dcw/Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.0.tgz", + "integrity": "sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/type-utils": "8.60.0", + "@typescript-eslint/utils": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.60.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.0.tgz", + "integrity": "sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.0.tgz", + "integrity": "sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.60.0", + "@typescript-eslint/types": "^8.60.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.0.tgz", + "integrity": "sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.0.tgz", + "integrity": "sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.0.tgz", + "integrity": "sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/utils": "8.60.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.0.tgz", + "integrity": "sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.0.tgz", + "integrity": "sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.60.0", + "@typescript-eslint/tsconfig-utils": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.0.tgz", + "integrity": "sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.0.tgz", + "integrity": "sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.60.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", + "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz", + "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz", + "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz", + "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz", + "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz", + "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz", + "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz", + "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz", + "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz", + "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz", + "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz", + "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz", + "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz", + "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz", + "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz", + "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz", + "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz", + "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-openharmony-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz", + "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz", + "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz", + "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz", + "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz", + "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@upstash/redis": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@upstash/redis/-/redis-1.38.0.tgz", + "integrity": "sha512-wu+dZBptlLy0+MCUEoHmzrY/TnmgDey3+c7EbIGwrLqAvkP8yi5MWZHYGIFtAygmL4Bkz2TdFu+eU0vFPncIcg==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/@vercel/analytics": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-2.0.1.tgz", + "integrity": "sha512-MTQG6V9qQrt1tsDeF+2Uoo5aPjqbVPys1xvnIftXSJYG2SrwXRHnqEvVoYID7BTruDz4lCd2Z7rM1BdkUehk2g==", + "license": "MIT", + "peerDependencies": { + "@remix-run/react": "^2", + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "nuxt": ">= 3", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@remix-run/react": { + "optional": true + }, + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "nuxt": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } + } + }, + "node_modules/@vercel/speed-insights": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-2.0.0.tgz", + "integrity": "sha512-jwkNcrTeafWxjmWq4AHBaptSqZiJkYU5adLC9QBSqeim0GcqDMgN5Ievh8OG1rJ6W3A4l1oiP7qr9CWxGuzu3w==", + "license": "Apache-2.0", + "peerDependencies": { + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "nuxt": ">= 3", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "nuxt": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", + "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", + "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "1.6.1", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", + "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/snapshot/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/spy": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", + "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", + "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.11.4", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.4.tgz", + "integrity": "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-jest": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.4.1.tgz", + "integrity": "sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.4.1", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.4.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.4.0.tgz", + "integrity": "sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.4.0.tgz", + "integrity": "sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.4.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.32", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", + "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001793", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", + "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canvg": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.11.tgz", + "integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "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/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "license": "MIT", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssstyle": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "^1.1.4" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18" } }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz", - "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==", - "cpu": [ - "arm64" - ], + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz", - "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==", - "cpu": [ - "ia32" - ], + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz", - "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==", - "cpu": [ - "x64" - ], + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@upstash/redis": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/@upstash/redis/-/redis-1.38.0.tgz", - "integrity": "sha512-wu+dZBptlLy0+MCUEoHmzrY/TnmgDey3+c7EbIGwrLqAvkP8yi5MWZHYGIFtAygmL4Bkz2TdFu+eU0vFPncIcg==", + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "license": "MIT", - "dependencies": { - "uncrypto": "^0.1.3" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, - "node_modules/@vercel/analytics": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-2.0.1.tgz", - "integrity": "sha512-MTQG6V9qQrt1tsDeF+2Uoo5aPjqbVPys1xvnIftXSJYG2SrwXRHnqEvVoYID7BTruDz4lCd2Z7rM1BdkUehk2g==", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", - "peerDependencies": { - "@remix-run/react": "^2", - "@sveltejs/kit": "^1 || ^2", - "next": ">= 13", - "nuxt": ">= 3", - "react": "^18 || ^19 || ^19.0.0-rc", - "svelte": ">= 4", - "vue": "^3", - "vue-router": "^4" + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@remix-run/react": { - "optional": true - }, - "@sveltejs/kit": { - "optional": true - }, - "next": { - "optional": true - }, - "nuxt": { - "optional": true - }, - "react": { - "optional": true - }, - "svelte": { - "optional": true - }, - "vue": { - "optional": true - }, - "vue-router": { + "supports-color": { "optional": true } } }, - "node_modules/@vercel/speed-insights": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-2.0.0.tgz", - "integrity": "sha512-jwkNcrTeafWxjmWq4AHBaptSqZiJkYU5adLC9QBSqeim0GcqDMgN5Ievh8OG1rJ6W3A4l1oiP7qr9CWxGuzu3w==", - "license": "Apache-2.0", + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "dev": true, + "license": "MIT", "peerDependencies": { - "@sveltejs/kit": "^1 || ^2", - "next": ">= 13", - "nuxt": ">= 3", - "react": "^18 || ^19 || ^19.0.0-rc", - "svelte": ">= 4", - "vue": "^3", - "vue-router": "^4" + "babel-plugin-macros": "^3.1.0" }, "peerDependenciesMeta": { - "@sveltejs/kit": { - "optional": true - }, - "next": { - "optional": true - }, - "nuxt": { - "optional": true - }, - "react": { - "optional": true - }, - "svelte": { - "optional": true - }, - "vue": { - "optional": true - }, - "vue-router": { + "babel-plugin-macros": { "optional": true } } }, - "node_modules/@vitest/expect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", - "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "chai": "^4.3.10" + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@vitest/runner": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", - "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.6.1", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { + "node_modules/didyoumean": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@vitest/snapshot": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", - "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "esutils": "^2.0.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@vitest/snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peer": true + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "node_modules/@vitest/snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/dompurify": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.5.tgz", + "integrity": "sha512-OrwIBKsdNSVEeubdJ1HBv/wNENRM9ytAVCv7YXt//A3vPdVMNuACRqK9mXCGCBW2ln7BT/A4X0jXHo2Gu89miA==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optional": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "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==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/@vitest/snapshot/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, - "node_modules/@vitest/spy": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", - "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "node_modules/electron-to-chromium": { + "version": "1.5.361", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz", + "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", - "dependencies": { - "tinyspy": "^2.2.0" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/@vitest/utils": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", - "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "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==", "dev": true, - "license": "MIT", - "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "license": "MIT" + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@vitest/utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/@vitest/utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@vitest/utils/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "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==", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + }, + "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==", "dev": true, "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "node_modules/es-iterator-helpers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", + "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.11.0" + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" } }, - "node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "es-errors": "^1.3.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 0.4" } }, - "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==", + "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==", "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "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==", + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/any-promise": { + "node_modules/es-to-primitive": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "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==", "dev": true, - "license": "Apache-2.0", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">= 0.4" + "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/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "node_modules/eslint-config-next": { + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.35.tgz", + "integrity": "sha512-BpLsv01UisH193WyT/1lpHqq5iJ/Orfz9h/NOOlAmTUq4GY349PextQ62K4XpnaM9supeiEn3TaOTeQO07gURg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" + "@next/eslint-plugin-next": "14.2.35", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" }, "engines": { - "node": ">= 0.4" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "debug": "^3.2.7" }, "engines": { - "node": ">= 0.4" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "ms": "^2.1.1" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">= 0.4" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/autoprefixer": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", - "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "browserslist": "^4.28.2", - "caniuse-lite": "^1.0.30001787", - "fraction.js": "^5.3.4", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=4.0" }, "peerDependencies": { - "postcss": "^8.1.0" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/axe-core": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.4.tgz", - "integrity": "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==", + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0-canary-7118f5dd7-20230705", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", + "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", "dev": true, - "license": "MPL-2.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-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==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT" - }, - "node_modules/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 0.6.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", - "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "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==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "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==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" + "estraverse": "^5.1.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=0.10" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "streamsearch": "^1.1.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10.16.0" + "node": ">=4.0" } }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/call-bind": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", - "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "get-intrinsic": "^1.3.0", - "set-function-length": "^1.2.2" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "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==", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8.0" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/expect": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "@jest/expect-utils": "30.4.1", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz", + "integrity": "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=6.0.0" } }, - "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==", + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, "engines": { - "node": ">= 6" + "node": ">=8.6.0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/canvg": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.11.tgz", - "integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==", - "license": "MIT", - "optional": true, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/runtime": "^7.12.5", - "@types/raf": "^3.4.0", - "core-js": "^3.8.3", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.7", - "rgbcolor": "^1.0.1", - "stackblur-canvas": "^2.0.0", - "svg-pathdata": "^6.0.3" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">= 6" } }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, + "license": "MIT" + }, + "node_modules/fast-png": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fast-png/-/fast-png-6.4.0.tgz", + "integrity": "sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==", "license": "MIT", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" + "@types/pako": "^2.0.3", + "iobuffer": "^5.3.2", + "pako": "^2.1.0" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fflate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { - "get-func-name": "^2.0.2" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">=10" }, "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">= 6" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "hasInstallScript": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.6" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/core-js": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", - "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", - "hasInstallScript": true, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", - "optional": true, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/css-line-break": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", - "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "utrie": "^1.0.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, "engines": { - "node": ">=12" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", + "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==", + "dev": true, + "license": "MIT", + "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": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-format": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", - "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", - "license": "ISC", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.0.0" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", + "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==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1 - 3" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-path": "^3.1.0" + "resolve-pkg-maps": "^1.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, "license": "ISC", "dependencies": { - "d3-array": "2 - 3" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { - "d3-time": "1 - 3" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=12" + "node": ">=10.13.0" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -3426,35 +7098,60 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/inspect-js" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3462,70 +7159,66 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/date-fns": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" + "engines": { + "node": ">=8" } }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" + "es-define-property": "^1.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", - "license": "MIT" - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "license": "MIT", "dependencies": { - "type-detect": "^4.0.0" + "dunder-proto": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "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==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "dependencies": { + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -3534,286 +7227,245 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", + "node_modules/html-to-image": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz", + "integrity": "sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==", + "license": "MIT" + }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "license": "MIT", + "optional": true, "dependencies": { - "esutils": "^2.0.2" + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dompurify": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.5.tgz", - "integrity": "sha512-OrwIBKsdNSVEeubdJ1HBv/wNENRM9ytAVCv7YXt//A3vPdVMNuACRqK9mXCGCBW2ln7BT/A4X0jXHo2Gu89miA==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optional": true, - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "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==", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">= 0.4" + "node": ">= 14" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.361", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz", - "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==", + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "license": "ISC" + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } }, - "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==", - "dev": true, - "license": "MIT" + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } }, - "node_modules/es-abstract": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", - "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "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==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 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==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-iterator-helpers": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", - "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.2", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.1.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.3.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.5", - "math-intrinsics": "^1.1.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "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==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/es-shim-unscopables": { + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/iobuffer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", + "integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==", + "license": "MIT" + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -3822,951 +7474,987 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, - "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" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "binary-extensions": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-next": { - "version": "14.2.35", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.35.tgz", - "integrity": "sha512-BpLsv01UisH193WyT/1lpHqq5iJ/Orfz9h/NOOlAmTUq4GY349PextQ62K4XpnaM9supeiEn3TaOTeQO07gURg==", + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "14.2.35", - "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "semver": "^7.7.1" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", - "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.16.1", - "resolve": "^2.0.0-next.6" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=4" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { + "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=6" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0-canary-7118f5dd7-20230705", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", - "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": ">=0.12.0" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=16.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, - "license": "MIT" - }, - "node_modules/fast-equals": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz", - "integrity": "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==", "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=8.6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "MIT" + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } }, - "node_modules/fast-png": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fast-png/-/fast-png-6.4.0.tgz", - "integrity": "sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==", - "license": "MIT", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@types/pako": "^2.0.3", - "iobuffer": "^5.3.2", - "pako": "^2.1.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "reusify": "^1.0.4" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fflate": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", - "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", - "license": "MIT" - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "flat-cache": "^3.0.4" + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10" } }, - "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==", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "to-regex-range": "^5.0.1" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "node_modules/jest": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.4.2.tgz", + "integrity": "sha512-Yi1jqNC/Oq0N4hBgNH/YvBpP1P57QqundgytzYqy3yqAa7NZPNjSoi4SGbRAXDMdBzNE6xBCi5U7RgfrvMEUVQ==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "@jest/core": "30.4.2", + "@jest/types": "30.4.1", + "import-local": "^3.2.0", + "jest-cli": "30.4.2" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/jest-changed-files": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.4.1.tgz", + "integrity": "sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" + "execa": "^5.1.1", + "jest-util": "30.4.1", + "p-limit": "^3.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "ISC" + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/jest-changed-files/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "path-key": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "node_modules/jest-changed-files/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-changed-files/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=6" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "node_modules/jest-circus": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.4.2.tgz", + "integrity": "sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "30.4.1", + "@jest/expect": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.4.1", + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-runtime": "30.4.2", + "jest-snapshot": "30.4.1", + "jest-util": "30.4.1", + "p-limit": "^3.1.0", + "pretty-format": "30.4.1", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, "engines": { - "node": "*" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-circus/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", "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" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "dependencies": { + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/jest-cli": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.4.2.tgz", + "integrity": "sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/core": "30.4.2", + "@jest/test-result": "30.4.1", + "@jest/types": "30.4.1", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.4.2", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=16" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/jest-cli/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-cli/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/get-tsconfig": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", - "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "node_modules/jest-cli/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "balanced-match": "^1.0.0" } }, - "node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/jest-cli/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "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" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "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==", + "node_modules/jest-cli/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==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "is-glob": "^4.0.3" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=10.13.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "node_modules/jest-cli/node_modules/jest-config": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.4.2.tgz", + "integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.4.0", + "@jest/test-sequencer": "30.4.1", + "@jest/types": "30.4.1", + "babel-jest": "30.4.1", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.4.2", + "jest-docblock": "30.4.0", + "jest-environment-node": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-resolve": "30.4.1", + "jest-runner": "30.4.2", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", + "parse-json": "^5.2.0", + "pretty-format": "30.4.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/glob/node_modules/minimatch": { + "node_modules/jest-cli/node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", @@ -4782,781 +8470,936 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/jest-cli/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/jest-diff": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", + "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "@jest/diff-sequences": "30.4.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.4.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/jest-diff/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/jest-diff/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, "license": "MIT" }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/jest-docblock": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.4.0.tgz", + "integrity": "sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "detect-newline": "^3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "node_modules/jest-each": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.4.1.tgz", + "integrity": "sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==", "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.0" + "@jest/get-type": "30.1.0", + "@jest/types": "30.4.1", + "chalk": "^4.1.2", + "jest-util": "30.4.1", + "pretty-format": "30.4.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-each/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-each/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "node_modules/jest-each/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/html-to-image": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz", - "integrity": "sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==", - "license": "MIT" - }, - "node_modules/html2canvas": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", - "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "node_modules/jest-environment-jsdom": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.4.1.tgz", + "integrity": "sha512-o3nfaN4zej7qgk2X0j8Jhq/S9nAVKs2xK3QeQxeHVvpkEPxaA1yxDGydR+iVI7zPy7Cp62Aq2h3Ja46QvfWHGA==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "css-line-break": "^2.1.0", - "text-segmentation": "^1.0.3" + "@jest/environment": "30.4.1", + "@jest/environment-jsdom-abstract": "30.4.1", + "jsdom": "^26.1.0" }, "engines": { - "node": ">=8.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "node_modules/jest-environment-node": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.4.1.tgz", + "integrity": "sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "@jest/environment": "30.4.1", + "@jest/fake-timers": "30.4.1", + "@jest/types": "30.4.1", + "@types/node": "*", + "jest-mock": "30.4.1", + "jest-util": "30.4.1", + "jest-validate": "30.4.1" + }, "engines": { - "node": ">=16.17.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/iceberg-js": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", - "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "node_modules/jest-haste-map": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.4.1.tgz", + "integrity": "sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "30.4.1", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.4.0", + "jest-util": "30.4.1", + "jest-worker": "30.4.1", + "picomatch": "^4.0.3", + "walker": "^1.0.8" + }, "engines": { - "node": ">=20.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/jest-haste-map/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 4" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-leak-detector": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.4.1.tgz", + "integrity": "sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.4.1" + }, "engines": { - "node": ">=0.8.19" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/jest-leak-detector/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" + }, "engines": { - "node": ">=12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/iobuffer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", - "integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==", - "license": "MIT" - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "node_modules/jest-matcher-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", + "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.4.1", + "pretty-format": "30.4.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/jest-message-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", + "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.4.1", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-util": "30.4.1", + "picomatch": "^4.0.3", + "pretty-format": "30.4.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "node_modules/jest-message-util/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.7.1" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-message-util/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "node_modules/jest-message-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "node_modules/jest-mock": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", + "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "@jest/types": "30.4.1", + "@types/node": "*", + "jest-util": "30.4.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-regex-util": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "node_modules/jest-resolve": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.4.1.tgz", + "integrity": "sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.4.1", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.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==", + "node_modules/jest-resolve-dependencies": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.4.2.tgz", + "integrity": "sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==", "dev": true, "license": "MIT", + "dependencies": { + "jest-regex-util": "30.4.0", + "jest-snapshot": "30.4.1" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "node_modules/jest-runner": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.4.2.tgz", + "integrity": "sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "@jest/console": "30.4.1", + "@jest/environment": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.4.0", + "jest-environment-node": "30.4.1", + "jest-haste-map": "30.4.1", + "jest-leak-detector": "30.4.1", + "jest-message-util": "30.4.1", + "jest-resolve": "30.4.1", + "jest-runtime": "30.4.2", + "jest-util": "30.4.1", + "jest-watcher": "30.4.1", + "jest-worker": "30.4.1", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.4.2.tgz", + "integrity": "sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.4.1", + "@jest/fake-timers": "30.4.1", + "@jest/globals": "30.4.1", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-resolve": "30.4.1", + "jest-snapshot": "30.4.1", + "jest-util": "30.4.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/jest-runtime/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==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, "engines": { - "node": ">= 0.4" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "node_modules/jest-snapshot": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.4.1.tgz", + "integrity": "sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.4.1", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.4.1", + "graceful-fs": "^4.2.11", + "jest-diff": "30.4.1", + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-util": "30.4.1", + "pretty-format": "30.4.1", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/jest-snapshot/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "node_modules/jest-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "node_modules/jest-validate": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.4.1.tgz", + "integrity": "sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@jest/get-type": "30.1.0", + "@jest/types": "30.4.1", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.4.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "node_modules/jest-validate/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "node_modules/jest-validate/node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "node_modules/jest-watcher": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.4.1.tgz", + "integrity": "sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "@jest/test-result": "30.4.1", + "@jest/types": "30.4.1", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.4.1", + "string-length": "^4.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "node_modules/jest-worker": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.4.1.tgz", + "integrity": "sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.4.1", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/jiti": { @@ -5597,6 +9440,59 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -5604,6 +9500,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -5700,7 +9603,17 @@ "language-subtag-registry": "^0.3.20" }, "engines": { - "node": ">=0.10" + "node": ">=0.10" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/levn": { @@ -5776,6 +9689,13 @@ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5826,6 +9746,17 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -5836,6 +9767,39 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -5890,6 +9854,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", @@ -6003,6 +9977,13 @@ "dev": true, "license": "MIT" }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, "node_modules/next": { "version": "14.2.35", "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", @@ -6142,6 +10123,13 @@ "semver": "bin/semver.js" } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, "node_modules/node-releases": { "version": "2.0.46", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", @@ -6191,6 +10179,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nwsapi": { + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/oauth": { "version": "0.9.15", "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", @@ -6446,6 +10441,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", @@ -6465,6 +10477,38 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -6589,6 +10633,75 @@ "node": ">= 6" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pkg-types": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", @@ -6894,6 +11007,23 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -6956,6 +11086,22 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, + "node_modules/react-is-18": { + "name": "react-is", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-is-19": { + "name": "react-is", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.6.tgz", + "integrity": "sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==", + "dev": true, + "license": "MIT" + }, "node_modules/react-smooth": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", @@ -7049,6 +11195,20 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -7100,6 +11260,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "2.0.0-next.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", @@ -7124,6 +11294,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -7256,6 +11449,13 @@ "dev": true, "license": "MIT" }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -7335,6 +11535,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -7525,6 +11745,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/sonner": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz", @@ -7535,6 +11765,16 @@ "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -7544,6 +11784,24 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/stable-hash": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", @@ -7551,6 +11809,29 @@ "dev": true, "license": "MIT" }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -7597,6 +11878,20 @@ "node": ">=10.0.0" } }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -7830,6 +12125,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -7940,9 +12248,32 @@ "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", "license": "MIT", - "optional": true, + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" } }, "node_modules/tailwind-scrollbar": { @@ -8028,6 +12359,43 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/text-segmentation": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", @@ -8149,6 +12517,33 @@ "node": ">=14.0.0" } }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -8162,6 +12557,32 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -8182,6 +12603,85 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/ts-jest": { + "version": "29.4.11", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.11.tgz", + "integrity": "sha512-IrFl7l9AuB/qrNw5quqvAv/hmKMb8dhWOH4jQOGo0Oq8tCeo1O86/iTFG1FaRimgUkF13l4PcepO8ATFT6Ns4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.9", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.8.0", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <7" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -8336,6 +12836,20 @@ "dev": true, "license": "MIT" }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -8474,6 +12988,21 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/victory-vendor": { "version": "36.9.2", "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", @@ -8660,6 +13189,77 @@ } } }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -8792,6 +13392,13 @@ "node": ">=0.10.0" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -8900,12 +13507,126 @@ "dev": true, "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 9a4f060d..f31bb9ee 100644 --- a/package.json +++ b/package.json @@ -34,15 +34,21 @@ }, "devDependencies": { "@playwright/test": "1.60.0", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@types/jest": "^30.0.0", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "autoprefixer": "^10.4.19", "eslint": "^8", "eslint-config-next": "14.2.35", + "jest": "^30.4.2", + "jest-environment-jsdom": "^30.4.1", "postcss": "^8.4.38", "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.1", + "ts-jest": "^29.4.11", "typescript": "^5", "vitest": "^1.6.0" } diff --git a/src/components/__tests__/DashboardHeader.test.tsx b/src/components/__tests__/DashboardHeader.test.tsx new file mode 100644 index 00000000..adba311a --- /dev/null +++ b/src/components/__tests__/DashboardHeader.test.tsx @@ -0,0 +1,113 @@ +import "@testing-library/jest-dom"; +import { render, screen, waitFor } from "@testing-library/react"; +import DashboardHeader from "../DashboardHeader"; +import { useSession } from "next-auth/react"; + +jest.mock("next-auth/react"); + +jest.mock("@/components/NotificationBell", () => { + const MockNotificationBell = () =>
NotificationBell
; + MockNotificationBell.displayName = "MockNotificationBell"; + return MockNotificationBell; +}); + +jest.mock("@/components/AccountToggle", () => { + const MockAccountToggle = () =>
AccountToggle
; + MockAccountToggle.displayName = "MockAccountToggle"; + return MockAccountToggle; +}); + +jest.mock("@/components/SignOutButton", () => { + const MockSignOutButton = () =>
SignOutButton
; + MockSignOutButton.displayName = "MockSignOutButton"; + return MockSignOutButton; +}); + +jest.mock("@/components/ThemeToggle", () => { + const MockThemeToggle = () =>
ThemeToggle
; + MockThemeToggle.displayName = "MockThemeToggle"; + return MockThemeToggle; +}); + +jest.mock("@/components/UserAvatar", () => { + const MockUserAvatar = () =>
UserAvatar
; + MockUserAvatar.displayName = "MockUserAvatar"; + return MockUserAvatar; +}); + +jest.mock("@/components/KeyboardShortcuts", () => { + const MockKeyboardShortcuts = () =>
KeyboardShortcuts
; + MockKeyboardShortcuts.displayName = "MockKeyboardShortcuts"; + return MockKeyboardShortcuts; +}); + +const mockedUseSession = useSession as jest.Mock; + +describe("DashboardHeader", () => { + beforeEach(() => { + global.fetch = jest.fn() as jest.Mock; + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it("renders Dashboard heading", () => { + mockedUseSession.mockReturnValue({ + data: null, + status: "unauthenticated", + }); + + render(); + + expect( + screen.getByText(/Dashboard/i) + ).toBeInTheDocument(); + }); + + it("renders subtitle text", () => { + mockedUseSession.mockReturnValue({ + data: null, + status: "unauthenticated", + }); + + render(); + + expect( + screen.getByText(/coding activity at a glance/i) + ).toBeInTheDocument(); + }); + + it("does not fetch settings when session is null", () => { + mockedUseSession.mockReturnValue({ + data: null, + status: "unauthenticated", + }); + + render(); + + expect(fetch).not.toHaveBeenCalled(); + }); + + it("fetches user settings on mount when session exists", async () => { + mockedUseSession.mockReturnValue({ + data: { + githubLogin: "testuser", + }, + status: "authenticated", + }); + + (fetch as jest.Mock).mockResolvedValue({ + ok: true, + json: async () => ({ + is_public: true, + }), + }); + + render(); + + await waitFor(() => { + expect(fetch).toHaveBeenCalledWith("/api/user/settings"); + }); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 7f043b29..520035c8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "types": ["jest", "node"], "lib": [ "dom", "dom.iterable", @@ -41,4 +42,5 @@ "client", "server" ] + } From c31fb09e1b4110feb8c492d71abf0f874c0db353 Mon Sep 17 00:00:00 2001 From: srinidhi-2006-bit Date: Thu, 28 May 2026 01:54:50 +0530 Subject: [PATCH 02/69] feat: add sponsor badge UI integration --- src/app/leaderboard/page.tsx | 11 +++++++++-- src/app/u/[username]/page.tsx | 7 ++++--- src/components/SponsorBadge.tsx | 17 +++++++++++++++++ src/lib/public-profile-data.ts | 11 ++++++----- 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 src/components/SponsorBadge.tsx diff --git a/src/app/leaderboard/page.tsx b/src/app/leaderboard/page.tsx index 7945bd75..807284dd 100644 --- a/src/app/leaderboard/page.tsx +++ b/src/app/leaderboard/page.tsx @@ -1,4 +1,5 @@ import Link from "next/link"; +import SponsorBadge from "@/components/SponsorBadge"; type LeaderboardTab = "streak" | "commits" | "prs"; @@ -11,6 +12,7 @@ interface LeaderboardEntry { commits: number; prs: number; score: number; + is_sponsor?: boolean; } interface LeaderboardPayload { @@ -63,7 +65,11 @@ export default async function LeaderboardPage({ : "streak"; const leaderboard = await fetchLeaderboard(); const activeMeta = tabs.find((tab) => tab.id === activeTab) ?? tabs[0]; - const rows = leaderboard?.leaders[activeTab] ?? []; + const rows = + leaderboard?.leaders[activeTab].map((entry) => ({ + ...entry, + is_sponsor: entry.username === "Priyanshu-byte-coder", + })) ?? []; return (
@@ -145,8 +151,9 @@ export default async function LeaderboardPage({ className="h-10 w-10 rounded-full border border-[var(--border)]" />
-
+
@{entry.username} + {entry.is_sponsor && }
{entry.commits} commits · {entry.prs} PRs · {entry.streak}d diff --git a/src/app/u/[username]/page.tsx b/src/app/u/[username]/page.tsx index fc5fed22..3e43c324 100644 --- a/src/app/u/[username]/page.tsx +++ b/src/app/u/[username]/page.tsx @@ -4,10 +4,10 @@ import BadgeSection from "@/components/BadgeSection"; import GitHubAchievements from "@/components/GitHubAchievements"; import StatsCard from "@/components/StatsCard"; import CopyLinkButton from "@/components/CopyLinkButton"; -import ThemeToggle from "@/components/ThemeToggle"; +import ThemeToggle from "@/components/ThemeToggle"; import { getUserByUsername } from "@/lib/supabase"; import { syncGitHubAchievementsForUser } from "@/lib/github-achievements"; - +import SponsorBadge from "@/components/SponsorBadge"; @@ -141,9 +141,10 @@ export default async function PublicProfilePage({
-

+

@{profile.username}'s Profile

+

diff --git a/src/components/SponsorBadge.tsx b/src/components/SponsorBadge.tsx new file mode 100644 index 00000000..c3324fa0 --- /dev/null +++ b/src/components/SponsorBadge.tsx @@ -0,0 +1,17 @@ +interface SponsorBadgeProps { + className?: string; +} + +export default function SponsorBadge({ + className = "", +}: SponsorBadgeProps) { + return ( + + 💎 Sponsor + + ); +} diff --git a/src/lib/public-profile-data.ts b/src/lib/public-profile-data.ts index 6ca05c43..42a605d1 100644 --- a/src/lib/public-profile-data.ts +++ b/src/lib/public-profile-data.ts @@ -30,6 +30,7 @@ export interface PublicProfileData { streak: StreakData; achievements: GitHubAchievement[]; achievementsError?: string | null; + is_sponsor?: boolean; } async function ghFetch(url: string, token?: string): Promise { @@ -174,18 +175,18 @@ export async function fetchTopLanguage( `${GITHUB_API}/users/${username}/repos?sort=updated&per_page=30`, token ); - + if (!res.ok) return null; - + const repos = (await res.json()) as Array<{ language: string | null }>; - + const counts: Record = {}; for (const r of repos) { if (r.language) { counts[r.language] = (counts[r.language] || 0) + 1; } } - + let topLang: string | null = null; let maxCount = 0; for (const [lang, count] of Object.entries(counts)) { @@ -194,6 +195,6 @@ export async function fetchTopLanguage( topLang = lang; } } - + return topLang; } From 0fb1eea5b4fd3bd81dfd1543c640beec3e406fde Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 28 May 2026 14:49:49 +0530 Subject: [PATCH 03/69] docs: enhance FUNDING.yml with multiple sponsorship options (#1373) Merging FUNDING.yml enhancement --- .github/FUNDING.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 7f5ba5c4..9aff9c47 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1,17 @@ +# Support DevTrack Development +# Your sponsorship helps us maintain and improve this open-source project + +# GitHub Sponsors - Direct monthly support github: Priyanshu-byte-coder + +# Open Collective - Community funding platform +open_collective: devtrack + +# Buy Me a Coffee - One-time or recurring support +buy_me_a_coffee: priyanshu_byte + +# Ko-fi - Simple and transparent sponsorship +ko_fi: priyanshu_byte + +# Custom donation link (Stripe, PayPal, etc. can be configured) +custom: ["https://paypal.me/priyanshu_byte"] From 64bd5b55354eddb975f5343b2ac9a4913488289c Mon Sep 17 00:00:00 2001 From: Abhijeet Kangane Date: Thu, 28 May 2026 14:49:59 +0530 Subject: [PATCH 04/69] docs: update npm to pnpm in Quick Start instructions (#1159) (#1257) Merging README Quick Start formatting --- README.md | 94 +++++++++++++++++++++++++++---------------------------- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 369e8d8d..4c8c10b3 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,6 @@ --- - - ## 📋 Table of Contents - [Why DevTrack?](#-why-devtrack) @@ -56,28 +54,28 @@ Whether you're a solo developer tracking consistency, a student building your po ## ✨ Features -| Feature | Description | -|---|---| -| **GitHub OAuth** | Sign in with GitHub — no extra account needed | +| Feature | Description | +| ------------------------- | ------------------------------------------------------------------------ | +| **GitHub OAuth** | Sign in with GitHub — no extra account needed | | **Commit Activity Chart** | Visualize daily commit activity with 7d / 14d / 30d / 90d range selector | -| **Commit Streak Tracker** | Current streak, longest streak, active days — stay consistent | -| **PR Analytics** | Average review time, merge rate, open/closed PR count | -| **Top Repositories** | Ranked list of your most active repos over any time range | -| **Weekly Goal Tracker** | Set coding goals and track progress with a progress bar UI | -| **No separate backend** | Next.js API routes + Supabase, deploy to Vercel for free | +| **Commit Streak Tracker** | Current streak, longest streak, active days — stay consistent | +| **PR Analytics** | Average review time, merge rate, open/closed PR count | +| **Top Repositories** | Ranked list of your most active repos over any time range | +| **Weekly Goal Tracker** | Set coding goals and track progress with a progress bar UI | +| **No separate backend** | Next.js API routes + Supabase, deploy to Vercel for free | --- ## 🛠 Tech Stack -| Layer | Technology | -|---|---| -| Frontend | Next.js 14 (App Router), TypeScript, Tailwind CSS | -| Auth | GitHub OAuth via NextAuth.js | -| Database | Supabase (PostgreSQL) | -| API | Next.js Route Handlers (`/app/api/`) | -| Charts | Recharts | -| Deployment | Vercel (free, auto-deploys from GitHub) | +| Layer | Technology | +| ---------- | ------------------------------------------------- | +| Frontend | Next.js 14 (App Router), TypeScript, Tailwind CSS | +| Auth | GitHub OAuth via NextAuth.js | +| Database | Supabase (PostgreSQL) | +| API | Next.js Route Handlers (`/app/api/`) | +| Charts | Recharts | +| Deployment | Vercel (free, auto-deploys from GitHub) | --- @@ -128,7 +126,7 @@ To deploy your own production instance, see the **[Self-Hosting Guide](./docs/se ```bash git clone https://github.com/Priyanshu-byte-coder/devtrack.git cd devtrack -npm install +pnpm install ``` **2. Set up Supabase** @@ -158,26 +156,26 @@ Fill in the environment variables. Below is a detailed description of each varia > [!WARNING] > Never commit `.env` or `.env.local` files to Git. They contain sensitive security credentials. The `.gitignore` file is pre-configured to ignore these files. -| Variable | Required | Description | Example / Recommendation | -|---|---|---|---| -| `NEXT_PUBLIC_SUPABASE_URL` | **Yes** | Your Supabase project URL | `https://your-project.supabase.co` | -| `NEXT_PUBLIC_SUPABASE_ANON_KEY` | **Yes** | Supabase public API anonymous key | `eyJhbGciOiJIUzI1NiIsInR...` | -| `SUPABASE_SERVICE_ROLE_KEY` | **Yes** | Supabase service role key (Never expose client-side) | `eyJhbGciOiJIUzI1NiIsInR...` | -| `NEXTAUTH_URL` | **Yes** | Fully qualified base URL of the app | `http://localhost:3000` (Local) | -| `NEXTAUTH_SECRET` | **Yes** | NextAuth session encryption key | Generate with `openssl rand -base64 32` | -| `GITHUB_ID` | **Yes** | GitHub OAuth Application Client ID | Obtain from GitHub Developer Settings | -| `GITHUB_SECRET` | **Yes** | GitHub OAuth Application Client Secret | Obtain from GitHub Developer Settings | -| `ENCRYPTION_KEY` | **Yes** | 32-byte hex key for encrypting OAuth tokens | Generate with `openssl rand -hex 32` | -| `GITHUB_WEBHOOK_SECRET` | No | Real-time metric refresh signature validation key | Generate with `openssl rand -hex 32` | -| `GITHUB_TOKEN` | No | Personal Access Token to avoid GitHub API rate limits | Classic or fine-grained GitHub PAT | -| `UPSTASH_REDIS_REST_URL` | No | Upstash Redis REST endpoint for caching | `https://your-db.upstash.io` | -| `UPSTASH_REDIS_REST_TOKEN` | No | Upstash Redis REST access token | Caching credentials from Upstash | -| `GROQ_API_KEY` | No | Groq API Key to enable AI-powered weekly insights | `gsk_...` (From console.groq.com) | +| Variable | Required | Description | Example / Recommendation | +| ------------------------------- | -------- | ----------------------------------------------------- | --------------------------------------- | +| `NEXT_PUBLIC_SUPABASE_URL` | **Yes** | Your Supabase project URL | `https://your-project.supabase.co` | +| `NEXT_PUBLIC_SUPABASE_ANON_KEY` | **Yes** | Supabase public API anonymous key | `eyJhbGciOiJIUzI1NiIsInR...` | +| `SUPABASE_SERVICE_ROLE_KEY` | **Yes** | Supabase service role key (Never expose client-side) | `eyJhbGciOiJIUzI1NiIsInR...` | +| `NEXTAUTH_URL` | **Yes** | Fully qualified base URL of the app | `http://localhost:3000` (Local) | +| `NEXTAUTH_SECRET` | **Yes** | NextAuth session encryption key | Generate with `openssl rand -base64 32` | +| `GITHUB_ID` | **Yes** | GitHub OAuth Application Client ID | Obtain from GitHub Developer Settings | +| `GITHUB_SECRET` | **Yes** | GitHub OAuth Application Client Secret | Obtain from GitHub Developer Settings | +| `ENCRYPTION_KEY` | **Yes** | 32-byte hex key for encrypting OAuth tokens | Generate with `openssl rand -hex 32` | +| `GITHUB_WEBHOOK_SECRET` | No | Real-time metric refresh signature validation key | Generate with `openssl rand -hex 32` | +| `GITHUB_TOKEN` | No | Personal Access Token to avoid GitHub API rate limits | Classic or fine-grained GitHub PAT | +| `UPSTASH_REDIS_REST_URL` | No | Upstash Redis REST endpoint for caching | `https://your-db.upstash.io` | +| `UPSTASH_REDIS_REST_TOKEN` | No | Upstash Redis REST access token | Caching credentials from Upstash | +| `GROQ_API_KEY` | No | Groq API Key to enable AI-powered weekly insights | `gsk_...` (From console.groq.com) | **5. Run locally** ```bash -npm run dev +pnpm run dev ``` Open [http://localhost:3000](http://localhost:3000) and sign in with GitHub. 🎉 @@ -201,18 +199,18 @@ Open [http://localhost:3000](http://localhost:3000) and sign in with GitHub. > New to open source? Issues marked **`good first issue`** are a great place to start! -| Issue | Feature | Difficulty | -|---|---|---| -| [#1](https://github.com/Priyanshu-byte-coder/devtrack/issues/1) | Dark mode toggle | 🟢 Beginner | -| [#14](https://github.com/Priyanshu-byte-coder/devtrack/issues/14) | Responsive mobile layout | 🟢 Beginner | -| [#13](https://github.com/Priyanshu-byte-coder/devtrack/issues/13) | Create Goal form UI | 🟢 Beginner | -| [#17](https://github.com/Priyanshu-byte-coder/devtrack/issues/17) | Chart type toggle (bar/line) | 🟡 Intermediate | -| [#18](https://github.com/Priyanshu-byte-coder/devtrack/issues/18) | Contribution heatmap calendar | 🟡 Intermediate | -| [#32](https://github.com/Priyanshu-byte-coder/devtrack/issues/32) | Language breakdown widget | 🟡 Intermediate | -| [#33](https://github.com/Priyanshu-byte-coder/devtrack/issues/33) | Activity feed | 🟡 Intermediate | -| [#34](https://github.com/Priyanshu-byte-coder/devtrack/issues/34) | Auto-progress goals from commits | 🔴 Advanced | -| [#6](https://github.com/Priyanshu-byte-coder/devtrack/issues/6) | GitLab integration | 🔴 Advanced | -| [#20](https://github.com/Priyanshu-byte-coder/devtrack/issues/20) | Slack/Discord weekly digest | 🔴 Advanced | +| Issue | Feature | Difficulty | +| ----------------------------------------------------------------- | -------------------------------- | --------------- | +| [#1](https://github.com/Priyanshu-byte-coder/devtrack/issues/1) | Dark mode toggle | 🟢 Beginner | +| [#14](https://github.com/Priyanshu-byte-coder/devtrack/issues/14) | Responsive mobile layout | 🟢 Beginner | +| [#13](https://github.com/Priyanshu-byte-coder/devtrack/issues/13) | Create Goal form UI | 🟢 Beginner | +| [#17](https://github.com/Priyanshu-byte-coder/devtrack/issues/17) | Chart type toggle (bar/line) | 🟡 Intermediate | +| [#18](https://github.com/Priyanshu-byte-coder/devtrack/issues/18) | Contribution heatmap calendar | 🟡 Intermediate | +| [#32](https://github.com/Priyanshu-byte-coder/devtrack/issues/32) | Language breakdown widget | 🟡 Intermediate | +| [#33](https://github.com/Priyanshu-byte-coder/devtrack/issues/33) | Activity feed | 🟡 Intermediate | +| [#34](https://github.com/Priyanshu-byte-coder/devtrack/issues/34) | Auto-progress goals from commits | 🔴 Advanced | +| [#6](https://github.com/Priyanshu-byte-coder/devtrack/issues/6) | GitLab integration | 🔴 Advanced | +| [#20](https://github.com/Priyanshu-byte-coder/devtrack/issues/20) | Slack/Discord weekly digest | 🔴 Advanced | ### 🔭 Future Vision @@ -234,7 +232,7 @@ DevTrack actively welcomes contributors of all skill levels, including **GSSoC 2 1. **Browse** [open issues](https://github.com/Priyanshu-byte-coder/devtrack/issues) — start with the `good first issue` label 2. **Comment** on the issue to get assigned before you start work 3. **Fork → branch** (`feat/issue-42-description`) → **PR against `main`** -4. **Check CI passes**: `npm run lint && npm run type-check` +4. **Check CI passes**: `pnpm run lint && pnpm run type-check` See **[CONTRIBUTING.md](./CONTRIBUTING.md)** for full guidelines, commit style, and the review process. From 9fdaf8ccbc5a8f49a7947d2201df38eba6f247f4 Mon Sep 17 00:00:00 2001 From: Indresh Date: Thu, 28 May 2026 14:50:08 +0530 Subject: [PATCH 05/69] updated contributing ms (#1258) Merging comprehensive CONTRIBUTING.md --- CONTRIBUTING.md | 291 ++++++++++++++++++++++++------------------------ 1 file changed, 145 insertions(+), 146 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d043ceaa..63362848 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,40 +1,14 @@ # Contributing to DevTrack -Thank you for your interest in contributing to DevTrack! Whether you are a GSSoC participant or a general open-source contributor, we are thrilled to have you. +Thank you for your interest in contributing to DevTrack! Whether you are a GSSoC (GirlScript Summer of Code) participant or a general open-source contributor, we are thrilled to have you. -Following these guidelines helps ensure a smooth, efficient, and consistent development process for everyone. +Please note that this project is released with a [Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project, you agree to abide by its terms. --- -## Table of Contents +## ⚡ Quick Start (Setup in < 10 Steps) -1. [Onboarding & Claiming Issues](#1-onboarding--claiming-issues) -2. [Local Development Setup](#2-local-development-setup) -3. [Branching and Workflow](#3-branching-and-workflow) -4. [Commit Guidelines](#4-commit-guidelines) -5. [Code Style & Standards](#5-code-style--standards) -6. [Pull Request (PR) Checklist](#6-pull-request-pr-checklist) - ---- - -## 1. Onboarding & Claiming Issues - -To keep the development queue clean and organized: -* **Claim Before You Build:** Comment on the open issue you want to work on. Wait for a maintainer to assign it to you before writing code. -* **Avoid Duplicates:** Check the active Pull Requests and assigned issues first to ensure someone else is not already working on the same task. -* **Ask Questions:** If an issue's requirements are unclear, comment directly on the issue to seek clarification. - ---- - -## 2. Local Development Setup - -To run DevTrack on your machine, follow these steps: - -### Prerequisites -Make sure you have [Node.js](https://nodejs.org/) (v18 or higher recommended) and npm installed. - -### Steps -1. **Fork the Repository:** Click the "Fork" button at the top-right of the [DevTrack repository](https://github.com/Priyanshu-byte-coder/devtrack) to create your own copy. +1. **Fork the Repo:** Click the "Fork" button at the top-right of the [DevTrack repository](https://github.com/Priyanshu-byte-coder/devtrack). 2. **Clone Your Fork:** ```bash git clone https://github.com//devtrack.git @@ -44,173 +18,198 @@ Make sure you have [Node.js](https://nodejs.org/) (v18 or higher recommended) an ```bash git remote add upstream https://github.com/Priyanshu-byte-coder/devtrack.git ``` -4. **Install Dependencies:** +4. **Install pnpm (Package Manager):** We use `pnpm` for this project. If you don't have it installed: ```bash - npm install + npm install -g pnpm ``` -5. **Environment Configuration:** - * Copy the example environment file: - ```bash - cp .env.example .env.local - ``` - * Open `.env.local` and populate any required configuration values (e.g., Supabase, NextAuth credentials). -6. **Start the Dev Server:** +5. **Install Dependencies:** + ```bash + pnpm install + ``` +6. **Set Up Environment:** Copy the template file: + ```bash + cp .env.example .env.local + ``` +7. **Configure Keys:** Open `.env.local` in your editor and add your development keys (see [Environment Variables Guide](#3-environment-variables-guide) below). +8. **Start the Dev Server:** ```bash - npm run dev + pnpm dev ``` - Open [http://localhost:3000](http://localhost:3000) in your browser to view the application. +9. **Open the App:** Navigate to [http://localhost:3000](http://localhost:3000) in your browser. --- -## 3. Branching and Workflow - -Always create a descriptive branch for your changes rather than committing directly to `main`. +## 📋 Table of Contents -### Branch Naming Conventions -Choose a prefix matching the nature of your task: -* **Features:** `feat/` (e.g., `feat/add-404-page`) -* **Bug Fixes:** `fix/` (e.g., `fix/streak-at-risk-mobile`) -* **Documentation:** `docs/` (e.g., `docs/add-contributing-guidelines`) -* **Tests:** `test/` (e.g., `test/timezone-parsing`) -* **Refactoring:** `refactor/` (e.g., `refactor/webhooks-signature`) +1. [Prerequisites](#1-prerequisites) +2. [Local Development Setup](#2-local-development-setup) +3. [Environment Variables Guide](#3-environment-variables-guide) +4. [Code Style & Standards](#4-code-style--standards) +5. [Branch Naming Conventions](#5-branch-naming-conventions) +6. [Commit Guidelines](#6-commit-guidelines) +7. [Issue Labels & GSSoC Levels](#7-issue-labels--gssoc-levels) +8. [Pull Request (PR) Checklist](#8-pull-request-pr-checklist) +9. [Self-Hosting & Deployment](#9-self-hosting--deployment) --- -## 4. Commit Guidelines +## 1. Prerequisites -We use **Conventional Commits** to keep our repository history structured, descriptive, and clean. +Before setting up DevTrack locally, make sure you have configured the following: -### Format -```text -(): -``` - -### Types -* `feat`: A new feature -* `fix`: A bug fix -* `docs`: Documentation changes -* `style`: Code style changes (white-space, formatting, missing semi-colons, etc.) -* `refactor`: A code change that neither fixes a bug nor adds a feature -* `test`: Adding missing tests or correcting existing ones -* `chore`: Updating build tasks, package manager configs, etc. - -### Examples -* `feat(landing): add custom 404 page for better branding` -* `fix(dashboard): resolve mobile layout stats card overflow` -* `docs(readme): update setup prerequisites in README` +- **Node.js**: Version `20` or higher is required. +- **pnpm**: Version `9` or higher is required. +- **GitHub OAuth App**: + 1. Go to your GitHub profile → **Settings** → **Developer Settings** → **OAuth Apps** → **New OAuth App**. + 2. Set **Application Name** to `DevTrack Dev`. + 3. Set **Homepage URL** to `http://localhost:3000`. + 4. Set **Authorization callback URL** to `http://localhost:3000/api/auth/callback/github`. + 5. Register the application, then copy the **Client ID** and generate a new **Client Secret**. --- -## 5. Code Style & Standards - -To maintain a professional codebase: -* **Automated Formatting:** We use ESLint and Prettier. Ensure your files are clean before committing: - ```bash - npm run lint - ``` -* **No Unused Code:** Remove any unused imports, commented-out dead code blocks, or active `console.log` statements prior to opening a PR. -* **Accessibility (a11y):** Build with semantic HTML elements and include proper ARIA roles and labels for interactive components. - ---- - -## 6. Pull Request (PR) Checklist +## 2. Local Development Setup -Before submitting your PR to the upstream repository, verify the following: +To get a fully functional copy running with authentication and metrics: -- [ ] **Tests Pass:** All unit/integration tests run and pass without errors (`npx vitest run`). -- [ ] **No Build Errors:** The application builds correctly (`npm run build`). -- [ ] **No Console Errors:** Verify in the browser console that there are no warnings or runtime exceptions. -- [ ] **Descriptive PR Details:** Fill out the PR template completely. Link the issue being closed (e.g., `Closes #123`). -- [ ] **Screenshots Included:** If your change modifies any UI or styling, attach clear mobile and desktop screenshots or a short demo GIF in the PR description. -- [ ] **Clean Git History:** Rebase your branch against the latest upstream `main` to resolve conflicts cleanly. +1. **Database Setup (Supabase)**: + - Create a free project on [Supabase](https://supabase.com). + - Retrieve your project API URL, anon key, and service role key from **Project Settings** → **API**. +2. **Environment Variables**: + - Ensure you have copied `.env.example` to `.env.local` and filled in all required fields. +3. **Run Dev Commands**: + - Install all project dependencies: + ```bash + pnpm install + ``` + - Run the Next.js development server: + ```bash + pnpm dev + ``` --- +## 3. Environment Variables Guide + +DevTrack relies on a set of environment variables to connect to external APIs and database services. Copy `.env.example` to `.env.local` and populate these values: + +| Variable | Required? | Description | +| :--- | :---: | :--- | +| `NEXT_PUBLIC_SUPABASE_URL` | **Yes** | Your Supabase project URL (e.g., `https://your-ref.supabase.co`). | +| `NEXT_PUBLIC_SUPABASE_ANON_KEY` | **Yes** | Your Supabase public anonymous API key. | +| `SUPABASE_SERVICE_ROLE_KEY` | **Yes** | Server-side Supabase secret key (never expose this client-side). | +| `NEXTAUTH_URL` | **Yes** | The base URL where your app is running locally (e.g., `http://localhost:3000`). | +| `NEXTAUTH_SECRET` | **Yes** | Used to sign NextAuth tokens. Generate with: `openssl rand -base64 32`. | +| `GITHUB_ID` | **Yes** | The Client ID from your registered GitHub OAuth Application. | +| `GITHUB_SECRET` | **Yes** | The Client Secret from your registered GitHub OAuth Application. | +| `ENCRYPTION_KEY` | **Yes** | A 32-byte hex key used to encrypt OAuth tokens. Generate with: `openssl rand -hex 32`. | +| `GITHUB_WEBHOOK_SECRET` | No | Secret key to verify incoming GitHub webhooks. Generate with: `openssl rand -hex 32`. | +| `GITHUB_TOKEN` | No | Fine-grained or classic PAT to bypass rate limits when fetching repository metrics. | +| `UPSTASH_REDIS_REST_URL` | No | Upstash Redis URL for API rate limiting/caching. | +| `UPSTASH_REDIS_REST_TOKEN` | No | Upstash Redis REST Token. | +| `GROQ_API_KEY` | No | Groq API Key to enable Llama-3 AI insights in the mentor widget. | + --- -## 7. GSSoC 2026 Contribution Guidelines +## 4. Code Style & Standards -We warmly welcome contributors participating in GSSoC 2026 🎉 +To ensure code readability and maintainability, please adhere to our styling rules: -### Contribution Levels +* **Linting & Formatting**: We use ESLint and Prettier. Check your code using: + ```bash + pnpm run lint + ``` +* **TypeScript strict mode**: Write clean, strongly typed code. Run type checking before committing: + ```bash + pnpm run type-check + ``` +* **Clean Code**: + - Remove all unused imports and variables. + - Delete any debugging statements like `console.log` or temporary comments. + - Ensure proper semantic HTML and accessibility (a11y) standards. -* **Level 1 (Beginner):** 20 points -* **Level 2 (Intermediate):** 35 points -* **Level 3 (Advanced):** 55 points +--- -### Common Labels +## 5. Branch Naming Conventions -* `gssoc26` → Issue is part of GSSoC 2026 -* `gssoc:assigned` → Issue already assigned -* `needs-triage` → Maintainers are reviewing the issue +Always create a new branch for your task. Never push directly to `main`. Use the following format: -### Important Notes +`prefix/short-descriptive-name` -* Work only on issues assigned to you. -* Stay active after assignment to avoid unassignment. -* Always link your PR to the issue number. -* Follow the repository guidelines carefully before submitting PRs. +### Prefix Types: +* `feat/` — A new user feature (e.g., `feat/add-achievements-tab`) +* `fix/` — A bug fix (e.g., `fix/oauth-token-expiry`) +* `docs/` — Documentation changes only (e.g., `docs/update-installation-guide`) +* `test/` — Adding or updating tests (e.g., `test/visual-regression-setup`) +* `refactor/` — Code refactoring with no behavior changes (e.g., `refactor/api-routes`) --- -## 8. Troubleshooting Common Issues - -### Supabase Connection Errors +## 6. Commit Guidelines -* Verify all Supabase keys inside `.env.local` -* Restart the development server after updating environment variables -* Ensure your Supabase project is active and accessible +We enforce **Conventional Commits** to keep our git history clean and understandable. -### GitHub OAuth Callback Errors - -* Ensure callback URLs match exactly in GitHub OAuth settings -* Verify `NEXTAUTH_URL` is configured correctly -* Check GitHub Client ID and Secret values +### Format +```text +(): +``` -### Environment Variable Issues +### Types +* `feat`: New feature +* `fix`: Bug fix +* `docs`: Documentation updates +* `style`: Code style/formatting changes (spaces, semicolons, etc.) +* `refactor`: Refactoring code structure +* `test`: Adding or correcting tests +* `chore`: Maintenance tasks, dependencies, lockfile updates -* Ensure `.env.local` exists in the project root -* Avoid extra spaces or quotes in environment values -* Restart the server after modifying environment variables +### Examples +- `feat(auth): integrate github oauth authentication` +- `fix(dashboard): resolve chart container responsive scaling` +- `docs(contributing): document environment variable configuration` --- -## 9. Testing Guidelines - -Before submitting your Pull Request, run the following commands: +## 7. Issue Labels & GSSoC Levels -```bash -npm run lint -npm run build -npx vitest run -``` +For contributors joining through GirlScript Summer of Code (GSSoC), we map issues using levels to indicate complexity and points: -### Verify the Following +| Label | Level / Difficulty | Points | +| :--- | :--- | :---: | +| `gssoc:level1` | **Beginner** — Simple styling, documentation fixes, minor bugs | **20** | +| `gssoc:level2` | **Intermediate** — Feature additions, routing changes, basic tests | **35** | +| `gssoc:level3` | **Advanced** — Complex logic, API integrations, deep layout refactoring | **55** | -* Application runs without crashes -* No console warnings or runtime errors -* UI works correctly on mobile and desktop -* Existing functionality remains unaffected +### Guidelines: +* **One Issue at a Time**: You can only be assigned to one issue at a time. +* **Auto-unassignment**: If there is no progress or communication on an assigned issue within **3 days**, it will be unassigned and given to another contributor. +* **Link Issue to PR**: Ensure your pull request description explicitly links to your assigned issue (e.g. `Closes #45`). --- -## 10. Adding Screenshots or GIFs to PRs +## 8. Pull Request (PR) Checklist -If your PR introduces UI or styling changes, please include screenshots or demo GIFs. +Before submitting your PR, make sure you have verified the following: -### Recommended Tools +- [ ] **Lockfile Consistency**: Only use `pnpm` and do not commit `package-lock.json` changes. Ensure `pnpm-lock.yaml` is clean. +- [ ] **Tests Pass**: Run unit tests and ensure they pass: + ```bash + pnpm run test + ``` +- [ ] **Application Builds**: Verify that the production build compiles successfully: + ```bash + pnpm run build + ``` +- [ ] **No Console Errors**: Check for console warnings/errors in developer tools. +- [ ] **Visual Validation**: If your changes involve UI edits, include mobile and desktop screenshots or a short demo GIF in the PR description. +- [ ] **Clean History**: Ensure commits are cleanly written and follow conventional formats. -* **Windows:** Snipping Tool, ShareX -* **macOS:** Built-in Screenshot Tool -* **GIF Recording:** ScreenToGif, LiceCap +--- -### Suggested PR Attachments +## 9. Self-Hosting & Deployment -* Before vs After screenshots -* Mobile responsiveness preview -* Short demo GIF for interactive features +For guides on self-hosting DevTrack or deploying it manually, please check the [Self-Hosting Documentation](./docs/self-hosting.md). --- - -Thank you for contributing to DevTrack! 🚀 +Thank you for helping make DevTrack better! Happy coding! 🚀 From 318aa490a2572ebfa2b60ba05e52373bf9078eab Mon Sep 17 00:00:00 2001 From: NAMRA RAFIQUE Date: Thu, 28 May 2026 14:50:20 +0530 Subject: [PATCH 06/69] "Add explicit type attribute to retry button" (#1273) Merging explicit type attribute for retry button --- public/offline.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/offline.html b/public/offline.html index 92f2789f..d7eaae86 100644 --- a/public/offline.html +++ b/public/offline.html @@ -52,7 +52,12 @@

You are offline

DevTrack is installed, but this page needs internet. Please reconnect and try again.

- +
From 7ea8c81690914daa39e59d6c2c126d55fd429108 Mon Sep 17 00:00:00 2001 From: Akhil Modi Date: Thu, 28 May 2026 14:50:28 +0530 Subject: [PATCH 07/69] fix: add MAX_PAGES cap to GitLab contributions fetch to prevent infinite loop (#1248) Merging GitLab MAX_PAGES cap fix --- src/app/api/metrics/contributions/route.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/api/metrics/contributions/route.ts b/src/app/api/metrics/contributions/route.ts index 7eb0c44f..e39db827 100644 --- a/src/app/api/metrics/contributions/route.ts +++ b/src/app/api/metrics/contributions/route.ts @@ -204,6 +204,7 @@ async function fetchGitLabContributions( const MAX_PAGES = 10; let page = 1; + const MAX_PAGES = 10; const commitsByDay: Record = {}; while (page > 0 && page <= MAX_PAGES) { From ef3fb9db13e0eadb3e5802e657aa11ec8bbe202e Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 14:50:37 +0530 Subject: [PATCH 08/69] test : added unit tests for public-profile-data.ts (#1370) Merging public-profile-data unit tests --- test/public-profile-data.test.ts | 132 +++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 test/public-profile-data.test.ts diff --git a/test/public-profile-data.test.ts b/test/public-profile-data.test.ts new file mode 100644 index 00000000..2d6d35b0 --- /dev/null +++ b/test/public-profile-data.test.ts @@ -0,0 +1,132 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; +import { + fetchPublicTopRepos, + fetchPublicContributions, + fetchPublicStreak, + fetchTopLanguage, +} from "../src/lib/public-profile-data"; + +describe("public-profile-data", () => { + beforeEach(() => { + vi.stubGlobal("fetch", vi.fn()); + }); + + afterEach(() => { + vi.unstubAllGlobals(); + }); + + describe("fetchPublicTopRepos", () => { + it("should return sorted top repositories on successful API response", async () => { + const mockFetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + items: [ + { repository: { full_name: "owner/repo-a", html_url: "https://github.com/owner/repo-a" } }, + { repository: { full_name: "owner/repo-a", html_url: "https://github.com/owner/repo-a" } }, + { repository: { full_name: "owner/repo-b", html_url: "https://github.com/owner/repo-b" } }, + ], + }), + }); + vi.stubGlobal("fetch", mockFetch); + + const repos = await fetchPublicTopRepos("user123"); + expect(repos.length).toBe(2); + expect(repos[0].name).toBe("owner/repo-a"); + expect(repos[0].commits).toBe(2); + expect(repos[1].name).toBe("owner/repo-b"); + expect(repos[1].commits).toBe(1); + }); + + it("should return empty array on failed API response", async () => { + const mockFetch = vi.fn().mockResolvedValue({ ok: false }); + vi.stubGlobal("fetch", mockFetch); + + const repos = await fetchPublicTopRepos("user123"); + expect(repos).toEqual([]); + }); + }); + + describe("fetchPublicContributions", () => { + it("should aggregate commits by day on successful response", async () => { + const mockFetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + total_count: 3, + items: [ + { commit: { author: { date: "2026-05-10T12:00:00Z" } } }, + { commit: { author: { date: "2026-05-10T15:00:00Z" } } }, + { commit: { author: { date: "2026-05-11T12:00:00Z" } } }, + ], + }), + }); + vi.stubGlobal("fetch", mockFetch); + + const contributions = await fetchPublicContributions("user123"); + expect(contributions.total).toBe(3); + expect(contributions.data["2026-05-10"]).toBe(2); + expect(contributions.data["2026-05-11"]).toBe(1); + }); + }); + + describe("fetchPublicStreak", () => { + it("should compute current and longest streak correctly", async () => { + // Mock dates: today and yesterday + const today = new Date().toISOString().slice(0, 10); + const yesterday = new Date(Date.now() - 86400000).toISOString().slice(0, 10); + const twoDaysAgo = new Date(Date.now() - 2 * 86400000).toISOString().slice(0, 10); + + const mockFetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + items: [ + { commit: { author: { date: today } } }, + { commit: { author: { date: yesterday } } }, + { commit: { author: { date: twoDaysAgo } } }, + ], + }), + }); + vi.stubGlobal("fetch", mockFetch); + + const streak = await fetchPublicStreak("user123"); + expect(streak.current).toBe(3); + expect(streak.longest).toBe(3); + expect(streak.totalActiveDays).toBe(3); + }); + + it("should return zero values on failed API response", async () => { + const mockFetch = vi.fn().mockResolvedValue({ ok: false }); + vi.stubGlobal("fetch", mockFetch); + + const streak = await fetchPublicStreak("user123"); + expect(streak.current).toBe(0); + expect(streak.longest).toBe(0); + expect(streak.lastCommitDate).toBeNull(); + }); + }); + + describe("fetchTopLanguage", () => { + it("should extract most frequent repository language", async () => { + const mockFetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => [ + { language: "TypeScript" }, + { language: "TypeScript" }, + { language: "Python" }, + { language: null }, + ], + }); + vi.stubGlobal("fetch", mockFetch); + + const topLang = await fetchTopLanguage("user123"); + expect(topLang).toBe("TypeScript"); + }); + + it("should return null on failed API response", async () => { + const mockFetch = vi.fn().mockResolvedValue({ ok: false }); + vi.stubGlobal("fetch", mockFetch); + + const topLang = await fetchTopLanguage("user123"); + expect(topLang).toBeNull(); + }); + }); +}); From b8d5ef75ec12439ca4d105381640019e34cb97b1 Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 14:50:53 +0530 Subject: [PATCH 09/69] test : added unit tests for developer-persona (#1376) Merging developer-persona unit tests --- test/developer-persona.test.ts | 193 +++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 test/developer-persona.test.ts diff --git a/test/developer-persona.test.ts b/test/developer-persona.test.ts new file mode 100644 index 00000000..23179dc8 --- /dev/null +++ b/test/developer-persona.test.ts @@ -0,0 +1,193 @@ +import { describe, it, expect } from "vitest"; +import { + buildDeveloperPersonaResponse, + mergeCommitCounts, + mergeSignals, + DeveloperSignals, +} from "../src/lib/developer-persona"; + +describe("Developer Persona Utilities", () => { + const emptySignals: DeveloperSignals = { + commitCountsByDate: {}, + timeBlocks: { morning: 0, afternoon: 0, evening: 0, night: 0 }, + prsOpened: 0, + prsMerged: 0, + prMergeTotalHours: 0, + prMergeSampleSize: 0, + additions: 0, + deletions: 0, + }; + + describe("mergeCommitCounts", () => { + it("should merge two empty commit count records", () => { + expect(mergeCommitCounts({}, {})).toEqual({}); + }); + + it("should merge commit counts from distinct days", () => { + const a = { "2026-05-01": 5 }; + const b = { "2026-05-02": 3 }; + expect(mergeCommitCounts(a, b)).toEqual({ + "2026-05-01": 5, + "2026-05-02": 3, + }); + }); + + it("should sum commit counts for overlapping days", () => { + const a = { "2026-05-01": 5, "2026-05-02": 2 }; + const b = { "2026-05-02": 3, "2026-05-03": 1 }; + expect(mergeCommitCounts(a, b)).toEqual({ + "2026-05-01": 5, + "2026-05-02": 5, + "2026-05-03": 1, + }); + }); + }); + + describe("mergeSignals", () => { + it("should merge two empty developer signals", () => { + expect(mergeSignals(emptySignals, emptySignals)).toEqual(emptySignals); + }); + + it("should merge and sum values for two signals correctly", () => { + const s1: DeveloperSignals = { + commitCountsByDate: { "2026-05-01": 2 }, + timeBlocks: { morning: 1, afternoon: 2, evening: 3, night: 4 }, + prsOpened: 3, + prsMerged: 2, + prMergeTotalHours: 12, + prMergeSampleSize: 2, + additions: 150, + deletions: 50, + }; + + const s2: DeveloperSignals = { + commitCountsByDate: { "2026-05-01": 3, "2026-05-02": 1 }, + timeBlocks: { morning: 2, afternoon: 1, evening: 0, night: 1 }, + prsOpened: 1, + prsMerged: 1, + prMergeTotalHours: 3, + prMergeSampleSize: 1, + additions: 200, + deletions: 300, + }; + + expect(mergeSignals(s1, s2)).toEqual({ + commitCountsByDate: { "2026-05-01": 5, "2026-05-02": 1 }, + timeBlocks: { morning: 3, afternoon: 3, evening: 3, night: 5 }, + prsOpened: 4, + prsMerged: 3, + prMergeTotalHours: 15, + prMergeSampleSize: 3, + additions: 350, + deletions: 350, + }); + }); + }); + + describe("buildDeveloperPersonaResponse", () => { + it("should fall back to balanced_builder for empty or neutral signals", () => { + const result = buildDeveloperPersonaResponse(emptySignals); + expect(result.persona.key).toBe("balanced_builder"); + expect(result.insights.length).toBe(0); + }); + + it("should categorize as night_owl when nighttime commits are highly dominant", () => { + const signals: DeveloperSignals = { + ...emptySignals, + commitCountsByDate: { + "2026-05-01": 2, + "2026-05-02": 2, + "2026-05-03": 2, + "2026-05-04": 2, + "2026-05-05": 2, + }, + timeBlocks: { morning: 0, afternoon: 0, evening: 1, night: 9 }, + }; + + const result = buildDeveloperPersonaResponse(signals); + expect(result.persona.key).toBe("night_owl"); + expect(result.insights.some(i => i.title === "Late-Night Focus")).toBe(true); + }); + + it("should categorize as early_bird when morning commits are highly dominant", () => { + const signals: DeveloperSignals = { + ...emptySignals, + commitCountsByDate: { + "2026-05-01": 2, + "2026-05-02": 2, + "2026-05-03": 2, + "2026-05-04": 2, + "2026-05-05": 2, + }, + timeBlocks: { morning: 9, afternoon: 1, evening: 0, night: 0 }, + }; + + const result = buildDeveloperPersonaResponse(signals); + expect(result.persona.key).toBe("early_bird"); + expect(result.insights.some(i => i.title === "Early Session")).toBe(true); + }); + + it("should categorize as refactorer when deletions outnumber additions", () => { + const signals: DeveloperSignals = { + ...emptySignals, + commitCountsByDate: { "2026-05-01": 1 }, + additions: 10, + deletions: 50, + }; + + const result = buildDeveloperPersonaResponse(signals); + expect(result.persona.key).toBe("refactorer"); + expect(result.insights.some(i => i.title === "Refactoring Powerhouse")).toBe(true); + }); + + it("should categorize as marathoner for long active streaks", () => { + const commitCountsByDate: Record = {}; + const baseDate = new Date("2026-05-01"); + for (let i = 0; i < 15; i++) { + const nextDate = new Date(baseDate.getTime() + i * 86400000); + commitCountsByDate[nextDate.toISOString().slice(0, 10)] = 1; + } + + const signals: DeveloperSignals = { + ...emptySignals, + commitCountsByDate, + }; + + const result = buildDeveloperPersonaResponse(signals); + expect(result.persona.key).toBe("marathoner"); + }); + + it("should categorize as speed_runner for fast PR merges", () => { + const signals: DeveloperSignals = { + ...emptySignals, + commitCountsByDate: { "2026-05-01": 5 }, + prMergeSampleSize: 3, + prMergeTotalHours: 6, // 2 hours avg + }; + + const result = buildDeveloperPersonaResponse(signals); + expect(result.persona.key).toBe("speed_runner"); + expect(result.insights.some(i => i.title === "PR Champion")).toBe(true); + }); + + it("should compute momentum builder insights correctly", () => { + // Mock dates for this week and last week + const today = new Date(); + const thisWeekDay = new Date(today.getTime()); + const lastWeekDay = new Date(today.getTime() - 7 * 86400000); + + const commitCountsByDate = { + [thisWeekDay.toISOString().slice(0, 10)]: 10, + [lastWeekDay.toISOString().slice(0, 10)]: 2, + }; + + const signals: DeveloperSignals = { + ...emptySignals, + commitCountsByDate, + }; + + const result = buildDeveloperPersonaResponse(signals); + expect(result.insights.some(i => i.title === "Momentum Builder")).toBe(true); + }); + }); +}); From 7c5726e89eb70476e7ccbb655b873ab702cbea01 Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 14:51:01 +0530 Subject: [PATCH 10/69] test: add unit tests for crypto safeCompare and verifyGitHubSignature (#1284) Merging crypto safeCompare and verifyGitHubSignature tests --- test/crypto.test.js | 57 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/test/crypto.test.js b/test/crypto.test.js index 3c10a70c..38ae8d30 100644 --- a/test/crypto.test.js +++ b/test/crypto.test.js @@ -59,3 +59,60 @@ test("decryptToken still decrypts valid encrypted tokens", () => { "github-token-123" ); }); + +test("safeCompare returns true for identical strings", () => { + const { safeCompare } = loadCryptoModule(); + assert.equal(safeCompare("test", "test"), true); +}); + +test("safeCompare returns false for different length strings", () => { + const { safeCompare } = loadCryptoModule(); + assert.equal(safeCompare("short", "longerstring"), false); +}); + +test("safeCompare returns false for non-identical strings of same length", () => { + const { safeCompare } = loadCryptoModule(); + assert.equal(safeCompare("aaaa", "bbbb"), false); +}); + +test("safeCompare returns true for empty strings", () => { + const { safeCompare } = loadCryptoModule(); + assert.equal(safeCompare("", ""), true); +}); + +test("safeCompare returns false for empty vs non-empty", () => { + const { safeCompare } = loadCryptoModule(); + assert.equal(safeCompare("", "a"), false); + assert.equal(safeCompare("a", ""), false); +}); + +test("verifyGitHubSignature returns true for valid signature", () => { + const { verifyGitHubSignature, getExpectedSignature } = loadCryptoModule(); + const secret = "webhook-secret-123"; + const body = '{"action":"push"}'; + const validSignature = getExpectedSignature(secret, body); + assert.equal(verifyGitHubSignature(body, validSignature, secret), true); +}); + +test("verifyGitHubSignature returns false for invalid signature", () => { + const { verifyGitHubSignature } = loadCryptoModule(); + const secret = "webhook-secret-123"; + const body = '{"action":"push"}'; + const invalidSignature = "sha256=0000000000000000000000000000000000000000000000000000000000000000"; + assert.equal(verifyGitHubSignature(body, invalidSignature, secret), false); +}); + +test("verifyGitHubSignature returns false for null signature", () => { + const { verifyGitHubSignature } = loadCryptoModule(); + const secret = "webhook-secret-123"; + const body = '{"action":"push"}'; + assert.equal(verifyGitHubSignature(body, null, secret), false); +}); + +test("verifyGitHubSignature returns false for signature without sha256 prefix", () => { + const { verifyGitHubSignature } = loadCryptoModule(); + const secret = "webhook-secret-123"; + const body = '{"action":"push"}'; + const badSignature = "abc123def456"; + assert.equal(verifyGitHubSignature(body, badSignature, secret), false); +}); From 279900c4f21c4891a2cda46009996a108081e1c2 Mon Sep 17 00:00:00 2001 From: Akshita Date: Thu, 28 May 2026 14:51:09 +0530 Subject: [PATCH 11/69] test: add unit tests for getLinkedAccounts, getAllAccounts, and getAccountToken (#1239) Merging github-accounts unit tests --- test/github-accounts.test.ts | 150 +++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 test/github-accounts.test.ts diff --git a/test/github-accounts.test.ts b/test/github-accounts.test.ts new file mode 100644 index 00000000..03f40406 --- /dev/null +++ b/test/github-accounts.test.ts @@ -0,0 +1,150 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; + +const mockSelect = vi.fn().mockReturnThis(); +const mockEq = vi.fn(); +const mockSingle = vi.fn(); +const mockSupabaseChain = { + select: mockSelect, + eq: mockEq, + single: mockSingle, +}; +const mockSupabaseAdmin = { from: vi.fn(() => mockSupabaseChain) }; + +vi.mock('@/lib/supabase', () => ({ supabaseAdmin: mockSupabaseAdmin })); +vi.mock('@/lib/crypto', () => ({ decryptToken: vi.fn() })); + +describe('getLinkedAccounts', () => { + beforeEach(() => { + vi.clearAllMocks(); + mockSelect.mockReturnThis(); + mockSupabaseAdmin.from = vi.fn(() => mockSupabaseChain); + }); + + it('returns empty array when no linked accounts exist', async () => { + mockEq.mockResolvedValue({ data: [], error: null }); + const { getLinkedAccounts } = await import('../src/lib/github-accounts'); + const result = await getLinkedAccounts('user1'); + expect(result).toEqual([]); + }); + + it('returns decrypted accounts from database rows', async () => { + const { decryptToken } = await import('@/lib/crypto'); + (decryptToken as ReturnType).mockReturnValue('decrypted-token'); + mockEq.mockResolvedValue({ + data: [ + { github_id: '123', github_login: 'user1', access_token_encrypted: 'e1', access_token_iv: 'i1' }, + { github_id: '456', github_login: 'user2', access_token_encrypted: 'e2', access_token_iv: 'i2' }, + ], + error: null, + }); + const { getLinkedAccounts } = await import('../src/lib/github-accounts'); + const result = await getLinkedAccounts('user1'); + expect(result).toHaveLength(2); + expect(result[0]).toEqual({ githubId: '123', githubLogin: 'user1', token: 'decrypted-token' }); + expect(result[1]).toEqual({ githubId: '456', githubLogin: 'user2', token: 'decrypted-token' }); + }); + + it('filters out accounts where decryption returns null', async () => { + const { decryptToken } = await import('@/lib/crypto'); + const returns = ['valid-token', null, 'another-token']; + (decryptToken as ReturnType).mockImplementation(() => returns.shift()); + mockEq.mockResolvedValue({ + data: [ + { github_id: '1', github_login: 'a', access_token_encrypted: 'e1', access_token_iv: 'i1' }, + { github_id: '2', github_login: 'b', access_token_encrypted: 'e2', access_token_iv: 'i2' }, + { github_id: '3', github_login: 'c', access_token_encrypted: 'e3', access_token_iv: 'i3' }, + ], + error: null, + }); + const { getLinkedAccounts } = await import('../src/lib/github-accounts'); + const result = await getLinkedAccounts('user1'); + expect(result).toHaveLength(2); + }); + + it('throws error when database query fails', async () => { + mockEq.mockResolvedValue({ data: null, error: new Error('DB down') }); + const { getLinkedAccounts } = await import('../src/lib/github-accounts'); + await expect(getLinkedAccounts('user1')).rejects.toThrow('Failed to fetch linked accounts'); + }); +}); + +describe('getAllAccounts', () => { + beforeEach(() => { + vi.clearAllMocks(); + mockSelect.mockReturnThis(); + mockSupabaseAdmin.from = vi.fn(() => mockSupabaseChain); + }); + + it('returns primary account when no linked accounts', async () => { + mockEq.mockResolvedValue({ data: [], error: null }); + const { getAllAccounts } = await import('../src/lib/github-accounts'); + const result = await getAllAccounts( + { token: 'primary-token', githubId: '1', githubLogin: 'main' }, + 'user1' + ); + expect(result).toHaveLength(1); + expect(result[0]).toEqual({ token: 'primary-token', githubId: '1', githubLogin: 'main' }); + }); + + it('deduplicates linked account that matches primary githubId', async () => { + const { decryptToken } = await import('@/lib/crypto'); + (decryptToken as ReturnType).mockReturnValue('linked-token'); + mockEq.mockResolvedValue({ + data: [ + { github_id: '1', github_login: 'main', access_token_encrypted: 'e1', access_token_iv: 'i1' }, + { github_id: '2', github_login: 'other', access_token_encrypted: 'e2', access_token_iv: 'i2' }, + ], + error: null, + }); + const { getAllAccounts } = await import('../src/lib/github-accounts'); + const result = await getAllAccounts( + { token: 'primary-token', githubId: '1', githubLogin: 'main' }, + 'user1' + ); + expect(result).toHaveLength(2); + expect(result[0].githubId).toBe('1'); + expect(result[1].githubId).toBe('2'); + }); +}); + +describe('getAccountToken', () => { + beforeEach(() => { + vi.clearAllMocks(); + mockSelect.mockReturnThis(); + mockSupabaseAdmin.from = vi.fn(() => mockSupabaseChain); + }); + + it('returns decrypted token when account exists', async () => { + const { decryptToken } = await import('@/lib/crypto'); + (decryptToken as ReturnType).mockReturnValue('account-token'); + mockEq.mockReturnThis(); + mockSingle.mockResolvedValue({ + data: { access_token_encrypted: 'enc', access_token_iv: 'iv' }, + error: null, + }); + const { getAccountToken } = await import('../src/lib/github-accounts'); + const result = await getAccountToken('user1', '456'); + expect(result).toBe('account-token'); + }); + + it('returns null when account not found', async () => { + mockEq.mockReturnThis(); + mockSingle.mockResolvedValue({ data: null, error: { message: 'Not found' } }); + const { getAccountToken } = await import('../src/lib/github-accounts'); + const result = await getAccountToken('user1', 'nonexistent'); + expect(result).toBeNull(); + }); + + it('returns null when decryption fails', async () => { + const { decryptToken } = await import('@/lib/crypto'); + (decryptToken as ReturnType).mockImplementation(() => { throw new Error('decrypt fail'); }); + mockEq.mockReturnThis(); + mockSingle.mockResolvedValue({ + data: { access_token_encrypted: 'bad', access_token_iv: 'bad' }, + error: null, + }); + const { getAccountToken } = await import('../src/lib/github-accounts'); + const result = await getAccountToken('user1', '456'); + expect(result).toBeNull(); + }); +}); From c1d0c50343beb401d296634650949cbdba210d60 Mon Sep 17 00:00:00 2001 From: Yash Gupta <142967741+gitsofyash@users.noreply.github.com> Date: Thu, 28 May 2026 15:03:36 +0530 Subject: [PATCH 12/69] fix landing ticker Safari resume (#1255) Co-authored-by: yash gupta --- src/components/landing/LandingPage.tsx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/components/landing/LandingPage.tsx b/src/components/landing/LandingPage.tsx index dc8c84bb..d374a212 100644 --- a/src/components/landing/LandingPage.tsx +++ b/src/components/landing/LandingPage.tsx @@ -434,13 +434,30 @@ margin: '0 0 24px', COMMIT TICKER ═══════════════════════════════════════════ */ function CommitTicker() { + const tickerRef = useRef(null); const doubled = [...COMMITS, ...COMMITS]; + + useEffect(() => { + const restartTickerAnimation = () => { + const ticker = tickerRef.current; + + if (document.hidden || !ticker) return; + + ticker.style.animation = 'none'; + void ticker.offsetHeight; + ticker.style.animation = ''; + }; + + document.addEventListener('visibilitychange', restartTickerAnimation); + return () => document.removeEventListener('visibilitychange', restartTickerAnimation); + }, []); + return (
-
+
{doubled.map((c, i) => ( Date: Thu, 28 May 2026 15:28:52 +0530 Subject: [PATCH 13/69] fix: prevent leaderboard username overflow on mobile (#1259) Co-authored-by: KrutagyaKaneria --- src/app/api/metrics/contributions/route.ts | 1 - src/app/leaderboard/page.tsx | 14 +++++++++----- src/app/u/[username]/page.tsx | 2 ++ src/components/DashboardHeader.tsx | 5 ++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/app/api/metrics/contributions/route.ts b/src/app/api/metrics/contributions/route.ts index e39db827..7eb0c44f 100644 --- a/src/app/api/metrics/contributions/route.ts +++ b/src/app/api/metrics/contributions/route.ts @@ -204,7 +204,6 @@ async function fetchGitLabContributions( const MAX_PAGES = 10; let page = 1; - const MAX_PAGES = 10; const commitsByDay: Record = {}; while (page > 0 && page <= MAX_PAGES) { diff --git a/src/app/leaderboard/page.tsx b/src/app/leaderboard/page.tsx index 807284dd..e8bde985 100644 --- a/src/app/leaderboard/page.tsx +++ b/src/app/leaderboard/page.tsx @@ -151,9 +151,14 @@ export default async function LeaderboardPage({ className="h-10 w-10 rounded-full border border-[var(--border)]" />
-
- @{entry.username} - {entry.is_sponsor && } +
+
+ @{entry.username} + {entry.is_sponsor && } +
{entry.commits} commits · {entry.prs} PRs · {entry.streak}d @@ -187,5 +192,4 @@ export default async function LeaderboardPage({
); -} - +} \ No newline at end of file diff --git a/src/app/u/[username]/page.tsx b/src/app/u/[username]/page.tsx index 3e43c324..6c54eca7 100644 --- a/src/app/u/[username]/page.tsx +++ b/src/app/u/[username]/page.tsx @@ -55,6 +55,7 @@ async function fetchPublicProfile( streak, achievements: achievementsCache.achievements, achievementsError: achievementsCache.error, + is_sponsor: user.github_login === "Priyanshu-byte-coder", }; } @@ -143,6 +144,7 @@ export default async function PublicProfilePage({

@{profile.username}'s Profile + {profile.is_sponsor && }

diff --git a/src/components/DashboardHeader.tsx b/src/components/DashboardHeader.tsx index 0b53420a..e4d59705 100644 --- a/src/components/DashboardHeader.tsx +++ b/src/components/DashboardHeader.tsx @@ -29,9 +29,8 @@ export default function DashboardHeader() { } else { setIsPublic(false); } - } catch (error) { - console.error("Failed to load settings:", error); - setIsPublic(false); + } catch { + setIsPublic(false); } } From 509af483230e3566e73612cdd68537503add43fc Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:32:09 +0530 Subject: [PATCH 14/69] fix(ui): prevent welcome text overflow on sign-in page (#1201) Co-authored-by: Man1ac-1773 --- src/app/auth/signin/page.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/auth/signin/page.tsx b/src/app/auth/signin/page.tsx index e54b67be..b89babda 100644 --- a/src/app/auth/signin/page.tsx +++ b/src/app/auth/signin/page.tsx @@ -98,9 +98,9 @@ export default function SignInPage() { style={{ fontFamily: DISP, fontWeight: 800, - fontSize: "clamp(34px,6vw,52px)", + fontSize: "clamp(34px,6vw,35px)", letterSpacing: "-0.04em", - lineHeight: 0.95, + lineHeight: 1.25, color: "#e8e8e8", margin: "0 0 16px", }} From a0c88deca04963ef870fa72983bd0860c4d0a038 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:33:50 +0530 Subject: [PATCH 15/69] fix(dashboard): resolve keyboard shortcuts modal overlap issue (#1217) Co-authored-by: adityapai05 --- src/app/dashboard/page.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 0489e0a3..183b0912 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -128,8 +128,8 @@ export default async function DashboardPage() {
-
-
+
+

Your Year in Code is here! ✨

Discover your top languages, longest streaks, and coding habits of the year.

@@ -138,8 +138,6 @@ export default async function DashboardPage() { View Wrapped
-
-
From 7ea97f6543e009210af7c5590259d987948a0116 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:35:19 +0530 Subject: [PATCH 16/69] fix: use finally block to always reset creating state in handleCreate (#1244) Co-authored-by: akhilmodi29 --- src/components/GoalTracker.tsx | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/components/GoalTracker.tsx b/src/components/GoalTracker.tsx index f4ae9a8a..d7621156 100644 --- a/src/components/GoalTracker.tsx +++ b/src/components/GoalTracker.tsx @@ -139,25 +139,24 @@ export default function GoalTracker() { if (!response.ok) { throw new Error("Failed to create goal"); } + + setTitle(""); + setTarget(7); + setUnit("commits"); + setRecurrence("none"); + setDeadline(""); + + // Immediately sync if it was a commit-based goal or prs + if (unit === "commits" || unit === "prs") { + await handleSync(); + } else { + await loadGoals().catch(() => { }); + } } catch { setCreateError("Failed to create goal. Please try again."); - setCreating(false); - return; - } - - setTitle(""); - setTarget(7); - setUnit("commits"); - setRecurrence("none"); - setDeadline(""); - - // Immediately sync if it was a commit-based goal or prs - if (unit === "commits" || unit === "prs") { - await handleSync(); - } else { - await loadGoals().catch(() => {}); + } finally { + setCreating(false); } - setCreating(false); } async function handleDelete(id: string) { From 1af8a39e8cf0c9dd24758a6b044a3ed2f6a47679 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:39:56 +0530 Subject: [PATCH 17/69] feat: add prefers-reduced-motion accessibility support (#1271) Co-authored-by: namrarafique93-del --- public/offline.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/public/offline.html b/public/offline.html index d7eaae86..c71cc2bd 100644 --- a/public/offline.html +++ b/public/offline.html @@ -46,6 +46,13 @@ font-weight: 600; cursor: pointer; } + @media (prefers-reduced-motion: reduce) { + * { + scroll-behavior: auto; + transition: none !important; + animation: none !important; + } + } From c46358ac00175bf4227b7f2cb18e13f8ff65c7d7 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:40:33 +0530 Subject: [PATCH 18/69] =?UTF-8?q?fix:=20improve=20UserAvatar=20accessibili?= =?UTF-8?q?ty=20=E2=80=94=20keyboard=20focusable=20GitHub=20link=20(#1253)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: YashKrTripathi --- package-lock.json | 14 ++++++++++++++ src/components/UserAvatar.tsx | 10 ++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d08001b..5e241fc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10767,6 +10767,20 @@ "node": ">=18" } }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", diff --git a/src/components/UserAvatar.tsx b/src/components/UserAvatar.tsx index 6b77e504..717675c9 100644 --- a/src/components/UserAvatar.tsx +++ b/src/components/UserAvatar.tsx @@ -17,7 +17,13 @@ export default function UserAvatar() { const showImage = image && !imageFailed; return ( -
+
{showImage ? ( {name} -
+
); } From ba1d1c8d14fe3fd6ef3bb0e39aa27988a6dffbec Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:45:34 +0530 Subject: [PATCH 19/69] feat: add leaderboard empty state with EmptyState component (#1287) Co-authored-by: DiyaRathod-16 --- src/app/leaderboard/page.tsx | 22 ++++++++++---------- src/components/EmptyState.tsx | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 src/components/EmptyState.tsx diff --git a/src/app/leaderboard/page.tsx b/src/app/leaderboard/page.tsx index e8bde985..80923cb9 100644 --- a/src/app/leaderboard/page.tsx +++ b/src/app/leaderboard/page.tsx @@ -1,5 +1,6 @@ import Link from "next/link"; import SponsorBadge from "@/components/SponsorBadge"; +import EmptyState from "@/components/EmptyState"; type LeaderboardTab = "streak" | "commits" | "prs"; @@ -131,9 +132,13 @@ export default async function LeaderboardPage({ Leaderboard data is temporarily unavailable.
) : rows.length === 0 ? ( -
- No opted-in public profiles yet. -
+ ) : ( rows.map((entry) => (
-
-
- @{entry.username} - {entry.is_sponsor && } -
+
+ @{entry.username} + {entry.is_sponsor && }
{entry.commits} commits · {entry.prs} PRs · {entry.streak}d diff --git a/src/components/EmptyState.tsx b/src/components/EmptyState.tsx new file mode 100644 index 00000000..cd1479ed --- /dev/null +++ b/src/components/EmptyState.tsx @@ -0,0 +1,39 @@ +import Link from "next/link"; + +interface EmptyStateProps { + icon?: string; + title: string; + description: string; + actionLabel?: string; + actionHref?: string; +} + +export default function EmptyState({ + icon = "🏆", + title, + description, + actionLabel, + actionHref, +}: EmptyStateProps) { + return ( +
+
+ {icon} +
+

+ {title} +

+

+ {description} +

+ {actionLabel && actionHref && ( + + {actionLabel} → + + )} +
+ ); +} \ No newline at end of file From acf063057bb1cb4e9c8bc5b9ea50c9b41a37944c Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:46:19 +0530 Subject: [PATCH 20/69] fix: validate LEADERBOARD_USER_CONCURRENCY env var with bounds checking (#1230) Co-authored-by: Aryanshravan --- .env.example | 8 ++++++ src/app/api/leaderboard/route.ts | 45 +++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index e2c6f404..e0fb50a8 100644 --- a/.env.example +++ b/.env.example @@ -63,3 +63,11 @@ UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_rest_token # console.groq.com → API Keys GROQ_API_KEY=gsk_... +# ------------------------------------------------------- +# Leaderboard Configuration +# Controls concurrent user fetches during leaderboard builds +# Safe range: 1-100 (default: 5) +# Higher values = faster builds but more resource usage +# WARNING: Do not exceed 100 without load testing — risks memory exhaustion +LEADERBOARD_USER_CONCURRENCY=5 + diff --git a/src/app/api/leaderboard/route.ts b/src/app/api/leaderboard/route.ts index d2106f34..912dd0ed 100644 --- a/src/app/api/leaderboard/route.ts +++ b/src/app/api/leaderboard/route.ts @@ -25,7 +25,50 @@ const CACHE_REFRESH_SECONDS = 60 * 60; // 1 hour const CACHE_STALE_SECONDS = 6 * 60 * 60; // 6 hours const RATE_LIMIT_REQUESTS = 20; const RATE_LIMIT_WINDOW_MS = 60 * 1000; -const USER_CONCURRENCY = Number(process.env.LEADERBOARD_USER_CONCURRENCY ?? 5); + +/** + * Validates and sanitizes the LEADERBOARD_USER_CONCURRENCY environment variable + * Ensures the value is within safe operational bounds [1, 100] + */ +function validateUserConcurrency(value: string | undefined): number { + const DEFAULT_CONCURRENCY = 5; + const MIN_CONCURRENCY = 1; + const MAX_CONCURRENCY = 100; + + // No value provided: use default + if (!value) { + return DEFAULT_CONCURRENCY; + } + + // Parse the value + const parsed = Number(value); + + // Validate: must be a finite integer + if (!Number.isFinite(parsed) || !Number.isInteger(parsed)) { + console.warn( + `[Leaderboard] Invalid LEADERBOARD_USER_CONCURRENCY value: "${value}". Using default: ${DEFAULT_CONCURRENCY}` + ); + return DEFAULT_CONCURRENCY; + } + + // Validate: must be within bounds + if (parsed < MIN_CONCURRENCY || parsed > MAX_CONCURRENCY) { + const clamped = Math.max(MIN_CONCURRENCY, Math.min(MAX_CONCURRENCY, parsed)); + console.warn( + `[Leaderboard] LEADERBOARD_USER_CONCURRENCY ${parsed} is outside safe range [${MIN_CONCURRENCY}, ${MAX_CONCURRENCY}]. Clamping to ${clamped}` + ); + return clamped; + } + + // Log when using non-default value + if (parsed !== DEFAULT_CONCURRENCY) { + console.info(`[Leaderboard] Using custom concurrency: ${parsed}`); + } + + return parsed; +} + +const USER_CONCURRENCY = validateUserConcurrency(process.env.LEADERBOARD_USER_CONCURRENCY); const LEADERBOARD_CACHE_KEY = "leaderboard:v1"; const LEADERBOARD_BUILD_LOCK_KEY = "leaderboard:build-lock:v1"; From 55f569d90dd3fb173bac342c12d30f3cd7249008 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:46:42 +0530 Subject: [PATCH 21/69] fix: guard unavailable supabase admin client with typed proxy (#1263) Co-authored-by: mittalsonal --- src/lib/supabase.ts | 23 ++++++++++++++++------- test/supabase-guard.test.ts | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 test/supabase-guard.test.ts diff --git a/src/lib/supabase.ts b/src/lib/supabase.ts index bc01e8e3..d0f611f5 100644 --- a/src/lib/supabase.ts +++ b/src/lib/supabase.ts @@ -3,12 +3,25 @@ import { createClient } from "@supabase/supabase-js"; const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL; const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY; -// Do not throw here — build-time rendering can touch this module before +export const SUPABASE_ADMIN_UNAVAILABLE_MESSAGE = + "Supabase admin client is unavailable. Check NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY."; + +type SupabaseAdminClient = ReturnType; + +function createUnavailableSupabaseAdmin(): SupabaseAdminClient { + return { + from() { + throw new Error(SUPABASE_ADMIN_UNAVAILABLE_MESSAGE); + }, + } as unknown as SupabaseAdminClient; +} + +// Do not throw here - build-time rendering can touch this module before // runtime environment variables are present. Guard call sites instead. -export const supabaseAdmin: any = +export const supabaseAdmin: SupabaseAdminClient = supabaseUrl && serviceRoleKey && !supabaseUrl.includes("placeholder") ? createClient(supabaseUrl, serviceRoleKey) - : null; + : createUnavailableSupabaseAdmin(); interface User { id: string; @@ -26,8 +39,6 @@ interface User { export async function getUserByUsername( username: string ): Promise { - if (!supabaseAdmin) return null; - try { const { data, error } = await supabaseAdmin .from("users") @@ -58,8 +69,6 @@ export async function updateUserPublicFlag( userId: string, isPublic: boolean ): Promise { - if (!supabaseAdmin) return null; - try { const { data, error } = await supabaseAdmin .from("users") diff --git a/test/supabase-guard.test.ts b/test/supabase-guard.test.ts new file mode 100644 index 00000000..3f8b2c5f --- /dev/null +++ b/test/supabase-guard.test.ts @@ -0,0 +1,32 @@ +import { afterEach, describe, expect, it, vi } from "vitest"; + +describe("supabase admin guard", () => { + afterEach(() => { + vi.unstubAllEnvs(); + vi.resetModules(); + }); + + it("throws a clear configuration error instead of exposing a null client", async () => { + vi.stubEnv("NEXT_PUBLIC_SUPABASE_URL", ""); + vi.stubEnv("SUPABASE_SERVICE_ROLE_KEY", ""); + + const { supabaseAdmin, SUPABASE_ADMIN_UNAVAILABLE_MESSAGE } = await import("@/lib/supabase"); + + expect(() => supabaseAdmin.from("users")).toThrow(SUPABASE_ADMIN_UNAVAILABLE_MESSAGE); + }); + + it("lets helper functions fail safely when the admin client is unavailable", async () => { + const errorSpy = vi.spyOn(console, "error").mockImplementation(() => {}); + + vi.stubEnv("NEXT_PUBLIC_SUPABASE_URL", ""); + vi.stubEnv("SUPABASE_SERVICE_ROLE_KEY", ""); + + const { getUserByUsername } = await import("@/lib/supabase"); + const result = await getUserByUsername("octocat"); + + expect(result).toBeNull(); + expect(errorSpy).toHaveBeenCalled(); + + errorSpy.mockRestore(); + }); +}); From a477ca2b2a28cb5b4cdfa026bc8e555a5f05bfc5 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 15:50:26 +0530 Subject: [PATCH 22/69] fix: restore goal form after failed refresh in create flow (#1262) Co-authored-by: mittalsonal --- src/components/GoalTracker.tsx | 25 ++++----- src/lib/goal-tracker.ts | 68 +++++++++++++++++++++++ test/goal-tracker-submit-flow.test.ts | 77 +++++++++++++++++++++++++++ 3 files changed, 156 insertions(+), 14 deletions(-) create mode 100644 src/lib/goal-tracker.ts create mode 100644 test/goal-tracker-submit-flow.test.ts diff --git a/src/components/GoalTracker.tsx b/src/components/GoalTracker.tsx index d7621156..e3fef46d 100644 --- a/src/components/GoalTracker.tsx +++ b/src/components/GoalTracker.tsx @@ -1,6 +1,7 @@ "use client"; import { useCallback, useEffect, useState, useRef } from "react"; +import { submitGoalWithRefresh } from "@/lib/goal-tracker"; type Recurrence = "none" | "weekly" | "monthly"; @@ -130,14 +131,15 @@ export default function GoalTracker() { setCreateError(null); try { - const response = await fetch("/api/goals", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ title, target, unit, recurrence, deadline: deadline || null }), + const result = await submitGoalWithRefresh({ + payload: { title, target, unit, recurrence, deadline: deadline || null }, + handleSync, + loadGoals, }); - if (!response.ok) { - throw new Error("Failed to create goal"); + if (!result.created) { + setCreateError(result.error); + return; } setTitle(""); @@ -146,16 +148,11 @@ export default function GoalTracker() { setRecurrence("none"); setDeadline(""); - // Immediately sync if it was a commit-based goal or prs - if (unit === "commits" || unit === "prs") { - await handleSync(); - } else { - await loadGoals().catch(() => { }); + if (result.error) { + setCreateError(result.error); } - } catch { - setCreateError("Failed to create goal. Please try again."); } finally { - setCreating(false); + setCreating(false); } } diff --git a/src/lib/goal-tracker.ts b/src/lib/goal-tracker.ts new file mode 100644 index 00000000..c5f14b69 --- /dev/null +++ b/src/lib/goal-tracker.ts @@ -0,0 +1,68 @@ +type Recurrence = "none" | "weekly" | "monthly"; + +export interface CreateGoalPayload { + title: string; + target: number; + unit: string; + recurrence: Recurrence; + deadline: string | null; +} + +interface SubmitGoalOptions { + fetchImpl?: typeof fetch; + payload: CreateGoalPayload; + handleSync: () => Promise; + loadGoals: () => Promise; +} + +export interface SubmitGoalResult { + created: boolean; + error: string | null; +} + +export async function submitGoalWithRefresh({ + fetchImpl = fetch, + payload, + handleSync, + loadGoals, +}: SubmitGoalOptions): Promise { + let response: Response; + + try { + response = await fetchImpl("/api/goals", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }); + } catch { + return { + created: false, + error: "Failed to create goal. Please try again.", + }; + } + + if (!response.ok) { + return { + created: false, + error: "Failed to create goal. Please try again.", + }; + } + + try { + if (payload.unit === "commits" || payload.unit === "prs") { + await handleSync(); + } else { + await loadGoals(); + } + } catch { + return { + created: true, + error: "Goal created, but refreshing goals failed. Please try refreshing.", + }; + } + + return { + created: true, + error: null, + }; +} diff --git a/test/goal-tracker-submit-flow.test.ts b/test/goal-tracker-submit-flow.test.ts new file mode 100644 index 00000000..b4e32cf9 --- /dev/null +++ b/test/goal-tracker-submit-flow.test.ts @@ -0,0 +1,77 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; + +import { submitGoalWithRefresh, type CreateGoalPayload } from "@/lib/goal-tracker"; + +const payload: CreateGoalPayload = { + title: "Ship more fixes", + target: 5, + unit: "commits", + recurrence: "none", + deadline: null, +}; + +describe("submitGoalWithRefresh", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("returns a create error when the POST request fails", async () => { + const fetchImpl = vi.fn().mockResolvedValue({ ok: false }); + const handleSync = vi.fn(); + const loadGoals = vi.fn(); + + const result = await submitGoalWithRefresh({ + fetchImpl, + payload, + handleSync, + loadGoals, + }); + + expect(result).toEqual({ + created: false, + error: "Failed to create goal. Please try again.", + }); + expect(handleSync).not.toHaveBeenCalled(); + expect(loadGoals).not.toHaveBeenCalled(); + }); + + it("keeps the goal created and returns a refresh error when sync fails", async () => { + const fetchImpl = vi.fn().mockResolvedValue({ ok: true }); + const handleSync = vi.fn().mockRejectedValue(new Error("sync failed")); + const loadGoals = vi.fn(); + + const result = await submitGoalWithRefresh({ + fetchImpl, + payload, + handleSync, + loadGoals, + }); + + expect(result).toEqual({ + created: true, + error: "Goal created, but refreshing goals failed. Please try refreshing.", + }); + expect(handleSync).toHaveBeenCalledTimes(1); + expect(loadGoals).not.toHaveBeenCalled(); + }); + + it("reloads goals for non auto-synced units", async () => { + const fetchImpl = vi.fn().mockResolvedValue({ ok: true }); + const handleSync = vi.fn(); + const loadGoals = vi.fn().mockResolvedValue(undefined); + + const result = await submitGoalWithRefresh({ + fetchImpl, + payload: { ...payload, unit: "hours" }, + handleSync, + loadGoals, + }); + + expect(result).toEqual({ + created: true, + error: null, + }); + expect(handleSync).not.toHaveBeenCalled(); + expect(loadGoals).toHaveBeenCalledTimes(1); + }); +}); From 41474a279079ce2831ac44dbda20ac679690663c Mon Sep 17 00:00:00 2001 From: Mayookh Ghosh Chowdhury <99263588+Man1ac-1773@users.noreply.github.com> Date: Thu, 28 May 2026 16:05:19 +0530 Subject: [PATCH 23/69] fix: Text bleed outside dedicated box on signin page, adjusted font size and lineHeight spacing for fix (#1201) From b8a0f07eb7bafb413fe411d12de00ba53397b851 Mon Sep 17 00:00:00 2001 From: YashKrTripathi Date: Thu, 28 May 2026 16:07:15 +0530 Subject: [PATCH 24/69] Fix UserAvatar accessibility focus skipping (#1253) From a0cdf5a625536382ed03bd4045ee28364b498b3a Mon Sep 17 00:00:00 2001 From: KRUTAGYA HIRENBHAI KANERIA Date: Thu, 28 May 2026 16:07:24 +0530 Subject: [PATCH 25/69] fix: prevent leaderboard username overflow on mobile (#1259) From 5f6205db5ed6d5f3dc4c672778931a58c90536e7 Mon Sep 17 00:00:00 2001 From: Sonal Mittal <105050791+mittalsonal@users.noreply.github.com> Date: Thu, 28 May 2026 16:07:33 +0530 Subject: [PATCH 26/69] fix: re-enable goal submit after refresh failures (#1262) From de3a1e3e4a5fccdcd838ff968b3afe7c2168f8d7 Mon Sep 17 00:00:00 2001 From: Sonal Mittal <105050791+mittalsonal@users.noreply.github.com> Date: Thu, 28 May 2026 16:07:42 +0530 Subject: [PATCH 27/69] fix: guard unavailable supabase admin client (#1263) From a107e8e93600352d2ae9f4dc3bfef76fa449c32c Mon Sep 17 00:00:00 2001 From: NAMRA RAFIQUE Date: Thu, 28 May 2026 16:07:51 +0530 Subject: [PATCH 28/69] "Add prefers-reduced-motion accessibility support" (#1271) From eaba290376f8e9af48403641ea8c09a521d3c409 Mon Sep 17 00:00:00 2001 From: Aryan Shravan Chouti Date: Thu, 28 May 2026 16:08:06 +0530 Subject: [PATCH 29/69] Fix: Add validation for LEADERBOARD_USER_CONCURRENCY environment variable (#1230) From 2535c712903133d9b1410031a22d1ef234d02fe1 Mon Sep 17 00:00:00 2001 From: Akhil Modi Date: Thu, 28 May 2026 16:10:10 +0530 Subject: [PATCH 30/69] fix: use finally block to always reset creating state in handleCreate (#1244) --- src/components/GoalTracker.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/GoalTracker.tsx b/src/components/GoalTracker.tsx index e3fef46d..39685f5c 100644 --- a/src/components/GoalTracker.tsx +++ b/src/components/GoalTracker.tsx @@ -148,11 +148,16 @@ export default function GoalTracker() { setRecurrence("none"); setDeadline(""); - if (result.error) { - setCreateError(result.error); + // Immediately sync if it was a commit-based goal or prs + if (unit === "commits" || unit === "prs") { + await handleSync(); + } else { + await loadGoals().catch(() => { }); } + } catch { + setCreateError("Failed to create goal. Please try again."); } finally { - setCreating(false); + setCreating(false); } } From 6beadc277aeb2317e5c097df3ec07e297bd4adc2 Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 16:13:06 +0530 Subject: [PATCH 31/69] test: add unit tests for coding-activity-insights helpers (#1390) Co-authored-by: Test User --- test/coding-activity-insights.test.ts | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 test/coding-activity-insights.test.ts diff --git a/test/coding-activity-insights.test.ts b/test/coding-activity-insights.test.ts new file mode 100644 index 00000000..e59f2603 --- /dev/null +++ b/test/coding-activity-insights.test.ts @@ -0,0 +1,46 @@ +import { describe, it, expect } from "vitest"; +import { + formatHourRange, + formatTimeZoneLabel, +} from "../src/lib/coding-activity-insights"; + +describe("coding-activity-insights", () => { + describe("formatHourRange", () => { + it("formats 0 as 12 AM - 1 AM", () => { + expect(formatHourRange(0)).toBe("12 AM \u2013 1 AM"); + }); + + it("formats 12 as 12 PM - 1 PM", () => { + expect(formatHourRange(12)).toBe("12 PM \u2013 1 PM"); + }); + + it("formats 23 as 11 PM - 12 AM", () => { + expect(formatHourRange(23)).toBe("11 PM \u2013 12 AM"); + }); + + it("formats 6 as 6 AM - 7 AM", () => { + expect(formatHourRange(6)).toBe("6 AM \u2013 7 AM"); + }); + + it("formats 18 as 6 PM - 7 PM", () => { + expect(formatHourRange(18)).toBe("6 PM \u2013 7 PM"); + }); + }); + + describe("formatTimeZoneLabel", () => { + it("returns UTC offset for valid timezone", () => { + const result = formatTimeZoneLabel("America/New_York"); + expect(result).toMatch(/UTC/); + }); + + it("returns raw timezone for invalid timezone", () => { + const result = formatTimeZoneLabel("Invalid/Timezone"); + expect(result).toBe("Invalid/Timezone"); + }); + + it("handles UTC timezone", () => { + const result = formatTimeZoneLabel("UTC"); + expect(result).toMatch(/UTC/); + }); + }); +}); \ No newline at end of file From cc50143d2e47ddf9415184367be43280d2e2a57c Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 16:13:10 +0530 Subject: [PATCH 32/69] test: add unit tests for github utility types (#1391) Co-authored-by: Test User --- test/github.test.ts | 139 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 test/github.test.ts diff --git a/test/github.test.ts b/test/github.test.ts new file mode 100644 index 00000000..e17e8641 --- /dev/null +++ b/test/github.test.ts @@ -0,0 +1,139 @@ +import { describe, it, expect } from "vitest"; +import type { + GitHubEvent, + GitHubRepo, + GitHubCommitSearchItem, + CommitItem, + GitHubIssueItem, + IssuesMetrics, +} from "../src/lib/github"; + +describe("github types and interfaces", () => { + describe("GitHubEvent", () => { + it("accepts valid event structure", () => { + const event: GitHubEvent = { + id: "123", + type: "PushEvent", + created_at: "2024-01-15T10:00:00Z", + repo: { name: "owner/repo" }, + }; + expect(event.id).toBe("123"); + expect(event.type).toBe("PushEvent"); + }); + }); + + describe("GitHubRepo", () => { + it("accepts valid repo structure", () => { + const repo: GitHubRepo = { + id: 123, + name: "repo", + full_name: "owner/repo", + html_url: "https://github.com/owner/repo", + private: false, + visibility: "public", + open_issues_count: 5, + stargazers_count: 100, + pushed_at: "2024-01-15T10:00:00Z", + updated_at: "2024-01-15T10:00:00Z", + }; + expect(repo.full_name).toBe("owner/repo"); + expect(repo.visibility).toBe("public"); + }); + + it("accepts repo with optional archived field", () => { + const repo: GitHubRepo = { + id: 123, + name: "repo", + full_name: "owner/repo", + html_url: "https://github.com/owner/repo", + private: false, + open_issues_count: 0, + stargazers_count: 0, + pushed_at: null, + updated_at: "2024-01-15T10:00:00Z", + archived: true, + }; + expect(repo.archived).toBe(true); + }); + }); + + describe("GitHubCommitSearchItem", () => { + it("accepts valid commit search item", () => { + const item: GitHubCommitSearchItem = { + sha: "abc123", + commit: { + author: { date: "2024-01-15T10:00:00Z" }, + message: "Initial commit", + }, + repository: { full_name: "owner/repo" }, + html_url: "https://github.com/owner/repo/commit/abc123", + }; + expect(item.sha).toBe("abc123"); + expect(item.commit.message).toBe("Initial commit"); + }); + }); + + describe("CommitItem", () => { + it("accepts valid commit item", () => { + const item: CommitItem = { + sha: "abc123", + message: "Initial commit", + date: "2024-01-15T10:00:00Z", + repo: "owner/repo", + url: "https://github.com/owner/repo/commit/abc123", + }; + expect(item.repo).toBe("owner/repo"); + }); + }); + + describe("GitHubIssueItem", () => { + it("accepts open issue", () => { + const item: GitHubIssueItem = { + state: "open", + created_at: "2024-01-15T10:00:00Z", + closed_at: null, + repository_url: "https://api.github.com/repos/owner/repo", + }; + expect(item.state).toBe("open"); + expect(item.closed_at).toBeNull(); + }); + + it("accepts closed issue", () => { + const item: GitHubIssueItem = { + state: "closed", + created_at: "2024-01-15T10:00:00Z", + closed_at: "2024-01-16T10:00:00Z", + repository_url: "https://api.github.com/repos/owner/repo", + }; + expect(item.state).toBe("closed"); + expect(item.closed_at).toBe("2024-01-16T10:00:00Z"); + }); + }); + + describe("IssuesMetrics", () => { + it("accepts valid metrics structure", () => { + const metrics: IssuesMetrics = { + opened: 10, + closed: 5, + currentlyOpen: 3, + avgCloseTimeDays: 2.5, + trend: 2, + mostActiveRepo: "owner/repo", + }; + expect(metrics.opened).toBe(10); + expect(metrics.trend).toBe(2); + }); + + it("accepts metrics with null mostActiveRepo", () => { + const metrics: IssuesMetrics = { + opened: 0, + closed: 0, + currentlyOpen: 0, + avgCloseTimeDays: 0, + trend: 0, + mostActiveRepo: null, + }; + expect(metrics.mostActiveRepo).toBeNull(); + }); + }); +}); \ No newline at end of file From c69b10ab1578b56f618b34bae3b7aa86c361c68d Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 16:13:14 +0530 Subject: [PATCH 33/69] test: add unit tests for repo-health scoring utilities (#1394) Co-authored-by: Test User --- test/repo-health.test.ts | 147 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 test/repo-health.test.ts diff --git a/test/repo-health.test.ts b/test/repo-health.test.ts new file mode 100644 index 00000000..888e8f56 --- /dev/null +++ b/test/repo-health.test.ts @@ -0,0 +1,147 @@ +import { describe, it, expect } from "vitest"; +import { + scoreCommitFrequency, + scorePrMergeRate, + scoreAvgPrOpenTimeHours, + scoreOpenIssuesCount, + scoreDaysSinceLastCommit, + gradeForScore, + computeHealthScore, +} from "../src/lib/repo-health"; +import type { RepoHealthSignals } from "@/types/repo-health"; + +describe("repo-health scoring utilities", () => { + describe("scoreCommitFrequency", () => { + it("returns 0 for 0 commits", () => { + expect(scoreCommitFrequency(0)).toBe(0); + }); + + it("returns 25 for 10+ commits", () => { + expect(scoreCommitFrequency(10)).toBe(25); + expect(scoreCommitFrequency(15)).toBe(25); + }); + + it("returns proportional score for 1-9 commits", () => { + expect(scoreCommitFrequency(5)).toBe(12.5); + }); + + it("handles NaN gracefully", () => { + expect(scoreCommitFrequency(NaN)).toBe(0); + }); + }); + + describe("scorePrMergeRate", () => { + it("returns 0 for 0 rate", () => { + expect(scorePrMergeRate(0)).toBe(0); + }); + + it("returns 25 for rate of 1", () => { + expect(scorePrMergeRate(1)).toBe(25); + }); + + it("returns half for rate of 0.5", () => { + expect(scorePrMergeRate(0.5)).toBe(12.5); + }); + + it("clamps rate above 1", () => { + expect(scorePrMergeRate(2)).toBe(25); + }); + }); + + describe("scoreAvgPrOpenTimeHours", () => { + it("returns 20 for avg hours <= 24", () => { + expect(scoreAvgPrOpenTimeHours(0)).toBe(20); + expect(scoreAvgPrOpenTimeHours(24)).toBe(20); + }); + + it("returns 0 for avg hours >= 168 (1 week)", () => { + expect(scoreAvgPrOpenTimeHours(168)).toBe(0); + expect(scoreAvgPrOpenTimeHours(200)).toBe(0); + }); + + it("returns proportional score between 24 and 168 hours", () => { + const score96 = scoreAvgPrOpenTimeHours(96); + expect(score96).toBeGreaterThan(0); + expect(score96).toBeLessThan(20); + }); + }); + + describe("scoreOpenIssuesCount", () => { + it("returns 15 for 0 open issues", () => { + expect(scoreOpenIssuesCount(0)).toBe(15); + }); + + it("returns 0 for 20+ open issues", () => { + expect(scoreOpenIssuesCount(20)).toBe(0); + expect(scoreOpenIssuesCount(50)).toBe(0); + }); + + it("returns proportional score between 0 and 20", () => { + expect(scoreOpenIssuesCount(10)).toBe(7.5); + }); + }); + + describe("scoreDaysSinceLastCommit", () => { + it("returns 15 for <= 7 days", () => { + expect(scoreDaysSinceLastCommit(0)).toBe(15); + expect(scoreDaysSinceLastCommit(7)).toBe(15); + }); + + it("returns 0 for >= 30 days", () => { + expect(scoreDaysSinceLastCommit(30)).toBe(0); + expect(scoreDaysSinceLastCommit(100)).toBe(0); + }); + + it("returns proportional score between 7 and 30 days", () => { + const score18 = scoreDaysSinceLastCommit(18); + expect(score18).toBeGreaterThan(0); + expect(score18).toBeLessThan(15); + }); + }); + + describe("gradeForScore", () => { + it("returns green for score >= 70", () => { + expect(gradeForScore(70)).toBe("green"); + expect(gradeForScore(100)).toBe("green"); + }); + + it("returns yellow for score >= 40 and < 70", () => { + expect(gradeForScore(40)).toBe("yellow"); + expect(gradeForScore(69)).toBe("yellow"); + }); + + it("returns red for score < 40", () => { + expect(gradeForScore(39)).toBe("red"); + expect(gradeForScore(0)).toBe("red"); + }); + }); + + describe("computeHealthScore", () => { + it("computes health score from signals", () => { + const signals: RepoHealthSignals = { + commitFrequency: 10, + prMergeRate: 1, + avgPrOpenTimeHours: 24, + openIssuesCount: 0, + daysSinceLastCommit: 7, + }; + const result = computeHealthScore("owner/repo", signals); + expect(result.repo).toBe("owner/repo"); + expect(result.score).toBe(100); + expect(result.grade).toBe("green"); + }); + + it("returns red grade for low activity repo", () => { + const signals: RepoHealthSignals = { + commitFrequency: 0, + prMergeRate: 0, + avgPrOpenTimeHours: 200, + openIssuesCount: 25, + daysSinceLastCommit: 35, + }; + const result = computeHealthScore("owner/repo", signals); + expect(result.score).toBe(0); + expect(result.grade).toBe("red"); + }); + }); +}); \ No newline at end of file From 2b132977bc4113e15804936b7de57889c5266654 Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 16:13:18 +0530 Subject: [PATCH 34/69] test: add edge case tests for dateDiffDays (#1395) Co-authored-by: Test User --- test/dateDiffDays.test.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 test/dateDiffDays.test.ts diff --git a/test/dateDiffDays.test.ts b/test/dateDiffDays.test.ts new file mode 100644 index 00000000..ab0d60c3 --- /dev/null +++ b/test/dateDiffDays.test.ts @@ -0,0 +1,37 @@ +import { describe, it, expect } from "vitest"; +import { dateDiffDays } from "../src/lib/dateUtils"; + +describe("dateUtils dateDiffDays", () => { + it("returns 0 for same day", () => { + expect(dateDiffDays("2024-06-15", "2024-06-15")).toBe(0); + }); + + it("returns positive for future date", () => { + expect(dateDiffDays("2024-06-15", "2024-06-20")).toBe(5); + }); + + it("returns negative for past date", () => { + expect(dateDiffDays("2024-06-20", "2024-06-15")).toBe(-5); + }); + + it("handles leap year Feb 28 to Mar 1", () => { + expect(dateDiffDays("2024-02-28", "2024-03-01")).toBe(2); + }); + + it("handles year boundary crossing", () => { + expect(dateDiffDays("2023-12-31", "2024-01-01")).toBe(1); + }); + + it("handles month boundary within year", () => { + expect(dateDiffDays("2024-01-31", "2024-02-01")).toBe(1); + }); + + it("returns exact day difference for sequential days", () => { + expect(dateDiffDays("2024-05-01", "2024-05-02")).toBe(1); + expect(dateDiffDays("2024-05-01", "2024-05-03")).toBe(2); + }); + + it("handles large day differences", () => { + expect(dateDiffDays("2024-01-01", "2024-12-31")).toBe(365); + }); +}); \ No newline at end of file From a16a7428ba3268b3849cdf3d33eb5eba8c71028d Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:24:57 +0530 Subject: [PATCH 35/69] test: add unit tests for github-achievements parsing utilities (#1389) --- src/lib/github-achievements.ts | 16 +- test/github-achievements.test.ts | 263 +++++++++++++++++++++++++++++++ 2 files changed, 271 insertions(+), 8 deletions(-) create mode 100644 test/github-achievements.test.ts diff --git a/src/lib/github-achievements.ts b/src/lib/github-achievements.ts index b2056408..85f3dc26 100644 --- a/src/lib/github-achievements.ts +++ b/src/lib/github-achievements.ts @@ -68,7 +68,7 @@ function logGitHubAchievements( } } -function decodeHtml(value: string): string { +export function decodeHtml(value: string): string { return value .replace(/&/g, "&") .replace(/"/g, "\"") @@ -77,11 +77,11 @@ function decodeHtml(value: string): string { .replace(/>/g, ">"); } -function stripTags(value: string): string { +export function stripTags(value: string): string { return decodeHtml(value.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim()); } -function titleFromSlug(slug: string): string { +export function titleFromSlug(slug: string): string { return slug .split("-") .filter(Boolean) @@ -89,7 +89,7 @@ function titleFromSlug(slug: string): string { .join(" "); } -function slugFromTitle(title: string): string { +export function slugFromTitle(title: string): string { return title .trim() .toLowerCase() @@ -101,7 +101,7 @@ function achievementDescription(slug: string, title: string): string { return ACHIEVEMENT_DESCRIPTIONS[slug] ?? `${title} achievement on GitHub.`; } -function absoluteGitHubUrl(value: string): string { +export function absoluteGitHubUrl(value: string): string { const decoded = decodeHtml(value); if (decoded.startsWith("http://") || decoded.startsWith("https://")) { return decoded; @@ -115,19 +115,19 @@ function absoluteGitHubUrl(value: string): string { return decoded; } -function getHtmlAttribute(tag: string, attribute: string): string | null { +export function getHtmlAttribute(tag: string, attribute: string): string | null { const pattern = new RegExp(`${attribute}="([^"]*)"`, "i"); const match = tag.match(pattern); return match?.[1] ? decodeHtml(match[1]) : null; } -function slugFromAchievementImage(imageUrl: string): string | null { +export function slugFromAchievementImage(imageUrl: string): string | null { const fileName = imageUrl.split("/").pop()?.split("?")[0] ?? ""; const match = fileName.match(/^(.+?)(?:-(?:default|badge|dark|light))?-[a-f0-9]{6,}\.png$/i); return match?.[1]?.toLowerCase() ?? null; } -function sanitizeGitHubLogin(username: string): string { +export function sanitizeGitHubLogin(username: string): string { return username.trim().replace(/^@/, ""); } diff --git a/test/github-achievements.test.ts b/test/github-achievements.test.ts new file mode 100644 index 00000000..ca61e58a --- /dev/null +++ b/test/github-achievements.test.ts @@ -0,0 +1,263 @@ +import { describe, it, expect } from "vitest"; +import { + decodeHtml, + stripTags, + titleFromSlug, + slugFromTitle, + absoluteGitHubUrl, + getHtmlAttribute, + slugFromAchievementImage, + sanitizeGitHubLogin, +} from "../src/lib/github-achievements"; + +describe("github-achievements parsing utilities", () => { + describe("decodeHtml", () => { + it("decodes & to &", () => { + expect(decodeHtml("foo & bar")).toBe("foo & bar"); + }); + + it("decodes " to double quote", () => { + expect(decodeHtml(""quoted"")).toBe('"quoted"'); + }); + + it("decodes ' to single quote", () => { + expect(decodeHtml("'quoted'")).toBe("'quoted'"); + }); + + it("decodes < to <", () => { + expect(decodeHtml("<div>")).toBe("
"); + }); + + it("decodes > to >", () => { + expect(decodeHtml("<div>")).toBe("
"); + }); + + it("decodes multiple entities in sequence", () => { + expect(decodeHtml("<tag> & "quote" 'apostrophe'")).toBe( + ' & "quote" \'apostrophe\'' + ); + }); + + it("returns input unchanged when no entities present", () => { + expect(decodeHtml("plain text")).toBe("plain text"); + }); + }); + + describe("stripTags", () => { + it("removes simple HTML tags", () => { + expect(stripTags("bold")).toBe("bold"); + }); + + it("removes nested tags", () => { + expect(stripTags("
nested
")).toBe("nested"); + }); + + it("collapses whitespace", () => { + expect(stripTags("
spaced
")).toBe("spaced"); + }); + + it("trims leading and trailing whitespace", () => { + expect(stripTags("
text
")).toBe("text"); + }); + + it("decodes HTML entities in stripped content", () => { + expect(stripTags("'quoted'")).toBe("'quoted'"); + }); + + it("handles empty string", () => { + expect(stripTags("")).toBe(""); + }); + + it("handles string with no tags", () => { + expect(stripTags("plain text")).toBe("plain text"); + }); + }); + + describe("titleFromSlug", () => { + it("converts simple slug to title case", () => { + expect(titleFromSlug("hello-world")).toBe("Hello World"); + }); + + it("handles single word slug", () => { + expect(titleFromSlug("hello")).toBe("Hello"); + }); + + it("filters empty parts", () => { + expect(titleFromSlug("one--multiple---words")).toBe("One Multiple Words"); + }); + + it("capitalizes first letter of each part", () => { + expect(titleFromSlug("pull-shark")).toBe("Pull Shark"); + }); + + it("handles achievement-style slugs", () => { + expect(titleFromSlug("arctic-code-vault-contributor")).toBe( + "Arctic Code Vault Contributor" + ); + }); + }); + + describe("slugFromTitle", () => { + it("converts simple title to slug", () => { + expect(slugFromTitle("Hello World")).toBe("hello-world"); + }); + + it("converts to lowercase", () => { + expect(slugFromTitle("Hello World")).toBe("hello-world"); + }); + + it("replaces spaces with hyphens", () => { + expect(slugFromTitle("hello world")).toBe("hello-world"); + }); + + it("removes non-alphanumeric characters", () => { + expect(slugFromTitle("Hello! World?")).toBe("hello-world"); + }); + + it("trims leading and trailing hyphens", () => { + expect(slugFromTitle(" hello world ")).toBe("hello-world"); + }); + + it("handles multiple spaces between words", () => { + expect(slugFromTitle("hello world")).toBe("hello-world"); + }); + + it("is reversible with titleFromSlug for simple titles", () => { + const title = "Hello World"; + expect(slugFromTitle(title)).toBe("hello-world"); + }); + }); + + describe("absoluteGitHubUrl", () => { + it("returns https URLs unchanged", () => { + expect(absoluteGitHubUrl("https://github.com/user/repo")).toBe( + "https://github.com/user/repo" + ); + }); + + it("returns http URLs unchanged", () => { + expect(absoluteGitHubUrl("http://github.com/user/repo")).toBe( + "http://github.com/user/repo" + ); + }); + + it("prepends https to protocol-relative URLs", () => { + expect(absoluteGitHubUrl("//github.com/user/repo")).toBe( + "https://github.com/user/repo" + ); + }); + + it("prepends GitHub base URL to absolute paths", () => { + expect(absoluteGitHubUrl("/user/repo")).toBe( + "https://github.com/user/repo" + ); + }); + + it("returns relative paths with GitHub base URL", () => { + expect(absoluteGitHubUrl("/settings/keys")).toBe( + "https://github.com/settings/keys" + ); + }); + + it("returns decoded URLs unchanged if absolute", () => { + expect(absoluteGitHubUrl("https://github.com/user/repo")).toBe( + "https://github.com/user/repo" + ); + }); + }); + + describe("getHtmlAttribute", () => { + it("extracts src attribute", () => { + const tag = 'test'; + expect(getHtmlAttribute(tag, "src")).toBe("image.png"); + }); + + it("extracts alt attribute", () => { + const tag = 'test image'; + expect(getHtmlAttribute(tag, "alt")).toBe("test image"); + }); + + it("returns null when attribute not found", () => { + const tag = ''; + expect(getHtmlAttribute(tag, "alt")).toBeNull(); + }); + + it("is case insensitive for attribute name", () => { + const tag = ''; + expect(getHtmlAttribute(tag, "src")).toBe("image.png"); + }); + + it("decodes HTML entities in attribute values", () => { + const tag = 'test & value'; + expect(getHtmlAttribute(tag, "alt")).toBe("test & value"); + }); + + it("handles empty attribute value", () => { + const tag = 'test'; + expect(getHtmlAttribute(tag, "src")).toBeNull(); + }); + }); + + describe("slugFromAchievementImage", () => { + it("extracts slug from default badge image", () => { + const url = "https://github.githubassets.com/images/modules/achievements/pull-shark-default-a1b2c3d4e5f6.png"; + expect(slugFromAchievementImage(url)).toBe("pull-shark"); + }); + + it("extracts slug from badge image", () => { + const url = "https://github.githubassets.com/images/modules/achievements/starstruck-badge-a1b2c3d4e5f6.png"; + expect(slugFromAchievementImage(url)).toBe("starstruck"); + }); + + it("extracts slug from dark variant", () => { + const url = "https://github.githubassets.com/images/modules/achievements/night-owl-dark-a1b2c3d4e5f6.png"; + expect(slugFromAchievementImage(url)).toBe("night-owl"); + }); + + it("extracts slug from light variant", () => { + const url = "https://github.githubassets.com/images/modules/achievements/early-bird-light-a1b2c3d4e5f6.png"; + expect(slugFromAchievementImage(url)).toBe("early-bird"); + }); + + it("returns null for non-achievement images", () => { + const url = "https://github.com/user/avatar.png"; + expect(slugFromAchievementImage(url)).toBeNull(); + }); + + it("handles query strings in URL", () => { + const url = "https://github.githubassets.com/images/modules/achievements/pull-shark-default-a1b2c3d4e5f6.png?v=1"; + expect(slugFromAchievementImage(url)).toBe("pull-shark"); + }); + + it("returns null for short hash images", () => { + const url = "https://github.githubassets.com/images/modules/achievements/pull-shark-default-12345.png"; + expect(slugFromAchievementImage(url)).toBeNull(); + }); + }); + + describe("sanitizeGitHubLogin", () => { + it("trims whitespace", () => { + expect(sanitizeGitHubLogin(" username ")).toBe("username"); + }); + + it("removes @ prefix", () => { + expect(sanitizeGitHubLogin("@username")).toBe("username"); + }); + + it("handles @ prefix with whitespace", () => { + expect(sanitizeGitHubLogin(" @username ")).toBe("username"); + }); + + it("returns username unchanged when no @ prefix", () => { + expect(sanitizeGitHubLogin("username")).toBe("username"); + }); + + it("handles empty string", () => { + expect(sanitizeGitHubLogin("")).toBe(""); + }); + + it("handles only whitespace", () => { + expect(sanitizeGitHubLogin(" ")).toBe(""); + }); + }); +}); \ No newline at end of file From 767ead1f621c48ae97d19ad422f3b22c63bc4825 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:25:25 +0530 Subject: [PATCH 36/69] test: add activity formatter tests for DiscussionCommentEvent (#1392) --- test/activity-formatter.test.ts | 82 +++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/test/activity-formatter.test.ts b/test/activity-formatter.test.ts index 06a2ef2a..7be223be 100644 --- a/test/activity-formatter.test.ts +++ b/test/activity-formatter.test.ts @@ -103,4 +103,86 @@ describe("formatActivity", () => { expect(result?.title).toBe("Published release"); }); + + it("returns null for unsupported event types", () => { + const event = { + type: "UnsupportedEvent", + }; + expect(formatActivity(event as any)).toBeNull(); + }); + + it("returns null for unsupported event types that still have repo names", () => { + const event = { + type: "RandomEvent", + repo: { + name: "test/repo", + }, + payload: {}, + }; + expect(formatActivity(event as any)).toBeNull(); + }); + + it("formats PushEvent with malformed refs correctly", () => { + const event = { + type: "PushEvent", + repo: { + name: "test/repo", + }, + payload: { + commits: [{}], + ref: "refs/tags/v1.0", + }, + }; + const result = formatActivity(event as any); + expect(result?.title).toBe("Pushed 1 commit to refs/tags/v1.0"); + }); + + it("formats ReleaseEvent edge cases (different action and missing tag)", () => { + const event = { + type: "ReleaseEvent", + repo: { + name: "test/repo", + }, + payload: { + action: "created", + release: { + name: "Initial Release", + }, + }, + }; + const result = formatActivity(event as any); + expect(result?.title).toBe("Created release"); + expect(result?.subtitle).toBe("Initial Release"); + }); + + it("formats DiscussionEvent with various action types", () => { + const event = { + type: "DiscussionEvent", + repo: { + name: "test/repo", + }, + payload: { + action: "answered", + discussion: { + number: 10, + title: "How to use?", + }, + }, + }; + const result = formatActivity(event as any); + expect(result?.title).toBe("Answered discussion #10"); + }); + + it("is case sensitive in event type matching and returns null for lowercase types", () => { + const event = { + type: "pushevent", + repo: { + name: "test/repo", + }, + payload: { + commits: [{}], + }, + }; + expect(formatActivity(event as any)).toBeNull(); + }); }); \ No newline at end of file From 85b63f8b0a0f61f550d2fa2c318a0e91a9fd01bb Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:25:36 +0530 Subject: [PATCH 37/69] test: add github-accounts endpoint validation tests (#1393) --- test/github-accounts-api.test.ts | 208 +++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 test/github-accounts-api.test.ts diff --git a/test/github-accounts-api.test.ts b/test/github-accounts-api.test.ts new file mode 100644 index 00000000..96422d21 --- /dev/null +++ b/test/github-accounts-api.test.ts @@ -0,0 +1,208 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { GET } from "@/app/api/user/github-accounts/route"; +import { DELETE } from "@/app/api/user/github-accounts/[githubId]/route"; +import { NextRequest } from "next/server"; +import { getServerSession } from "next-auth"; +import { resolveAppUser } from "@/lib/resolve-user"; + +// Mock next-auth +vi.mock("next-auth", () => ({ + getServerSession: vi.fn(), +})); + +// Mock resolve-user +vi.mock("@/lib/resolve-user", () => ({ + resolveAppUser: vi.fn(), +})); + +// Mock Supabase admin client methods +const mockOrder = vi.fn(); +const mockEq = vi.fn(); +const mockSelect = vi.fn(); +const mockDelete = vi.fn(); +const mockFrom = vi.fn().mockImplementation((table: string) => { + return { + select: mockSelect, + delete: mockDelete, + }; +}); + +vi.mock("@/lib/supabase", () => ({ + supabaseAdmin: { + from: (table: string) => mockFrom(table), + }, +})); + +describe("GitHub Accounts API Endpoints", () => { + beforeEach(() => { + vi.clearAllMocks(); + + // Default chain for GET + mockSelect.mockReturnValue({ + eq: mockEq.mockReturnValue({ + order: mockOrder.mockResolvedValue({ + data: [ + { id: "account-1", github_id: "999", github_login: "linked-user", added_at: "2026-05-28T00:00:00Z" } + ], + error: null, + }), + }), + }); + + // Default chain for DELETE + mockDelete.mockReturnValue({ + eq: vi.fn().mockReturnValue({ + eq: vi.fn().mockReturnValue({ + select: vi.fn().mockResolvedValue({ + data: [{ github_id: "999" }], + error: null, + }), + }), + }), + }); + + // Default session resolution + (getServerSession as any).mockResolvedValue({ + githubId: "12345", + githubLogin: "primary-user", + }); + + (resolveAppUser as any).mockResolvedValue({ + id: "user-uuid-123", + github_id: "12345", + github_login: "primary-user", + }); + }); + + describe("GET /api/user/github-accounts", () => { + it("returns 401 when user is not authenticated", async () => { + (getServerSession as any).mockResolvedValue(null); + + const res = await GET(); + expect(res.status).toBe(401); + expect(await res.json()).toEqual({ error: "Unauthorized" }); + }); + + it("returns 401 when authenticated session user is not found in database", async () => { + (resolveAppUser as any).mockResolvedValue(null); + + const res = await GET(); + expect(res.status).toBe(401); + expect(await res.json()).toEqual({ error: "Unauthorized" }); + }); + + it("returns 500 when database fetch fails", async () => { + mockOrder.mockResolvedValue({ data: null, error: { message: "Database Error" } }); + + const res = await GET(); + expect(res.status).toBe(500); + expect(await res.json()).toEqual({ error: "Failed to fetch accounts" }); + }); + + it("successfully fetches linked accounts", async () => { + const res = await GET(); + expect(res.status).toBe(200); + expect(await res.json()).toEqual({ + accounts: [ + { + id: "account-1", + githubId: "999", + githubLogin: "linked-user", + addedAt: "2026-05-28T00:00:00Z", + } + ] + }); + }); + }); + + describe("DELETE /api/user/github-accounts/[githubId]", () => { + it("returns 401 when user is not authenticated", async () => { + (getServerSession as any).mockResolvedValue(null); + + const req = new NextRequest("http://localhost/api/user/github-accounts/999", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "999" } }); + expect(res.status).toBe(401); + expect(await res.json()).toEqual({ error: "Unauthorized" }); + }); + + it("returns 400 when githubId parameter is empty", async () => { + const req = new NextRequest("http://localhost/api/user/github-accounts/ ", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "" } }); + expect(res.status).toBe(400); + expect(await res.json()).toEqual({ error: "Invalid githubId parameter" }); + }); + + it("returns 400 when githubId parameter is non-numeric", async () => { + const req = new NextRequest("http://localhost/api/user/github-accounts/abc", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "abc" } }); + expect(res.status).toBe(400); + expect(await res.json()).toEqual({ error: "Invalid githubId parameter" }); + }); + + it("returns 400 when githubId parameter has spaces or special characters", async () => { + const req = new NextRequest("http://localhost/api/user/github-accounts/ 123", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: " 123 " } }); + expect(res.status).toBe(400); + expect(await res.json()).toEqual({ error: "Invalid githubId parameter" }); + }); + + it("returns 401 when authenticated session user is not found in database", async () => { + (resolveAppUser as any).mockResolvedValue(null); + + const req = new NextRequest("http://localhost/api/user/github-accounts/999", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "999" } }); + expect(res.status).toBe(401); + expect(await res.json()).toEqual({ error: "Unauthorized" }); + }); + + it("returns 400 when trying to remove the primary account", async () => { + const req = new NextRequest("http://localhost/api/user/github-accounts/12345", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "12345" } }); + expect(res.status).toBe(400); + expect(await res.json()).toEqual({ error: "Cannot remove primary account" }); + }); + + it("returns 500 when database deletion query fails", async () => { + mockDelete.mockReturnValue({ + eq: vi.fn().mockReturnValue({ + eq: vi.fn().mockReturnValue({ + select: vi.fn().mockResolvedValue({ + data: null, + error: { message: "Database failure" }, + }), + }), + }), + }); + + const req = new NextRequest("http://localhost/api/user/github-accounts/999", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "999" } }); + expect(res.status).toBe(500); + expect(await res.json()).toEqual({ error: "Delete failed" }); + }); + + it("returns 404 when the account to delete is not found", async () => { + mockDelete.mockReturnValue({ + eq: vi.fn().mockReturnValue({ + eq: vi.fn().mockReturnValue({ + select: vi.fn().mockResolvedValue({ + data: [], + error: null, + }), + }), + }), + }); + + const req = new NextRequest("http://localhost/api/user/github-accounts/999", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "999" } }); + expect(res.status).toBe(404); + expect(await res.json()).toEqual({ error: "Account not found" }); + }); + + it("successfully deletes the secondary linked account", async () => { + const req = new NextRequest("http://localhost/api/user/github-accounts/999", { method: "DELETE" }); + const res = await DELETE(req, { params: { githubId: "999" } }); + expect(res.status).toBe(200); + expect(await res.json()).toEqual({ success: true }); + }); + }); +}); From 479bfc575ca2a833f6f4917cf78c033a3328f33f Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:25:47 +0530 Subject: [PATCH 38/69] fix(activity): deduplicate combined account activity feed (#1396) --- src/app/api/metrics/activity/route.ts | 29 ++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/app/api/metrics/activity/route.ts b/src/app/api/metrics/activity/route.ts index 7b91f634..9f225edd 100644 --- a/src/app/api/metrics/activity/route.ts +++ b/src/app/api/metrics/activity/route.ts @@ -1,10 +1,7 @@ import { getServerSession } from "next-auth"; import { NextRequest } from "next/server"; import { authOptions } from "@/lib/auth"; -import { - getAccountToken, - getAllAccounts, -} from "@/lib/github-accounts"; +import { getAccountToken, getAllAccounts } from "@/lib/github-accounts"; import { GITHUB_API, fetchUserEvents } from "@/lib/github"; import { isMetricsCacheBypassed, @@ -22,7 +19,6 @@ import { export const dynamic = "force-dynamic"; - async function fetchFormattedActivity(token: string): Promise { const events = (await fetchUserEvents(token)) as RawEvent[]; @@ -135,19 +131,34 @@ export async function GET(req: NextRequest) { const results = await Promise.allSettled( accounts.map((account) => - fetchFormattedActivityWithFallback(account.token, account.githubLogin) + fetchFormattedActivityWithFallback( + account.token, + account.githubLogin + ) ) ); - const merged = results + const mergedActivities = results .filter( (result): result is PromiseFulfilledResult => result.status === "fulfilled" ) - .flatMap((result) => result.value) + .flatMap((result) => result.value); + + const uniqueActivities = Array.from( + new Map( + mergedActivities.map((item) => [ + `${item.type}-${item.repo}-${item.createdAt}-${item.title}`, + item, + ]) + ).values() + ); + + const merged = uniqueActivities .sort( (a, b) => - new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() + new Date(b.createdAt).getTime() - + new Date(a.createdAt).getTime() ) .slice(0, 15); From f0e418600f23607d0d0967c36ba93a1c8ea49a32 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:25:52 +0530 Subject: [PATCH 39/69] fix: improve pointer event handling and typing in DailyBreakdownSheet (#1399) --- src/components/DailyBreakdownSheet.tsx | 31 +++++++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/components/DailyBreakdownSheet.tsx b/src/components/DailyBreakdownSheet.tsx index 07a4f225..36561ebb 100644 --- a/src/components/DailyBreakdownSheet.tsx +++ b/src/components/DailyBreakdownSheet.tsx @@ -45,7 +45,25 @@ export default function DailyBreakdownSheet({ useEffect(() => { onCloseRef.current = onClose; }, [onClose]); +const sheetRef = useRef(null); +useEffect(() => { + if (!isOpen) return; + const handleClickOutside = (e: MouseEvent | TouchEvent) => { + if ( + sheetRef.current && + !sheetRef.current.contains(e.target as Node) + ) { + onClose(); + } + }; + document.addEventListener("mousedown", handleClickOutside); + document.addEventListener("touchstart", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + document.removeEventListener("touchstart", handleClickOutside); + }; +}, [isOpen, onClose]); useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === "Escape") onCloseRef.current(); @@ -72,12 +90,13 @@ export default function DailyBreakdownSheet({ onClick={onClose} aria-hidden="true" /> -
+

From c6c0593e42b23b0771224e8bb175ed254e646db7 Mon Sep 17 00:00:00 2001 From: T Mitra Date: Thu, 28 May 2026 16:27:10 +0530 Subject: [PATCH 40/69] test: add unit tests for github-achievements parsing utilities (#1389) Co-authored-by: Test User From 6525122c1791b903bf9e9521e8251dd885254e4d Mon Sep 17 00:00:00 2001 From: Pitta Shankumar Date: Thu, 28 May 2026 16:27:17 +0530 Subject: [PATCH 41/69] Fix/issue 1385 activity formatter tests (#1392) * test: add test cases for unsupported events, malformed push refs, and specific release/discussion edge cases * fix: resolve duplicate MAX_PAGES constant causing type errors From 312a209b31fbf794be76c972040e0d72edafd94d Mon Sep 17 00:00:00 2001 From: Bhavya jain Date: Thu, 28 May 2026 16:27:24 +0530 Subject: [PATCH 42/69] test: add user github-accounts endpoints validation tests (#815) (#1393) From e3fe18ea33af180da9d26337f750c7a2765c3ed0 Mon Sep 17 00:00:00 2001 From: Aditya Pai Date: Thu, 28 May 2026 16:27:31 +0530 Subject: [PATCH 43/69] fix(activity): deduplicate combined account activity feed (#1396) * fix(activity): deduplicate combined account activity feed * fix: resolve duplicate MAX_PAGES declaration From b9141dbe80c4aa8f59793250e14d782d81b81888 Mon Sep 17 00:00:00 2001 From: Rohith PM Date: Thu, 28 May 2026 16:27:40 +0530 Subject: [PATCH 44/69] `Fix/pointer event typing` (#1399) * Implement close functionality for DailyBreakdownSheet Implemented `outside click` and `Escape key` handling for improved sheet dismissal UX and accessibility. * Fix duplicate MAX_PAGES declaration From c2477a3709c643f49cd7c61492301fb2ac033f13 Mon Sep 17 00:00:00 2001 From: Mallya Moni Date: Thu, 28 May 2026 16:29:01 +0530 Subject: [PATCH 45/69] refactor: add githubFetch helper to centralize GitHub API fetch logic (#959) (#1285) --- src/lib/github-fetch.ts | 87 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/lib/github-fetch.ts diff --git a/src/lib/github-fetch.ts b/src/lib/github-fetch.ts new file mode 100644 index 00000000..fa0dadd4 --- /dev/null +++ b/src/lib/github-fetch.ts @@ -0,0 +1,87 @@ +/** + * Typed GitHub API fetch helper. + * Centralises Authorization headers, Accept header, ok-check, + * and 403/429 rate-limit error handling so metric routes don't + * repeat the same ~10-line pattern. + */ + +import { GITHUB_API } from "@/lib/github"; + +export { GITHUB_API }; + +export class GitHubRateLimitError extends Error { + constructor(public resetAt: Date | null) { + super("GitHub API rate limit exceeded"); + this.name = "GitHubRateLimitError"; + } +} + +export class GitHubApiError extends Error { + constructor(public status: number) { + super(`GitHub API error: ${status}`); + this.name = "GitHubApiError"; + } +} + +/** + * Fetch a GitHub API endpoint with standard headers. + * Throws GitHubRateLimitError on 403/429, GitHubApiError on other non-ok responses. + */ +export async function githubFetch( + url: string, + token: string, + options: RequestInit = {} +): Promise { + const res = await fetch(url, { + ...options, + headers: { + Authorization: `Bearer ${token}`, + Accept: "application/vnd.github+json", + ...((options.headers as Record) ?? {}), + }, + cache: (options.cache as RequestCache) ?? "no-store", + }); + + if (res.status === 403 || res.status === 429) { + const resetHeader = res.headers.get("X-RateLimit-Reset"); + const resetAt = resetHeader ? new Date(Number(resetHeader) * 1000) : null; + throw new GitHubRateLimitError(resetAt); + } + + if (!res.ok) { + throw new GitHubApiError(res.status); + } + + return res.json() as Promise; +} + +/** + * POST to GitHub GraphQL API. + */ +export async function githubGraphQL( + query: string, + token: string +): Promise { + const res = await fetch("https://api.github.com/graphql", { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ query }), + cache: "no-store", + }); + + if (res.status === 403 || res.status === 429) { + const resetHeader = res.headers.get("X-RateLimit-Reset"); + const resetAt = resetHeader ? new Date(Number(resetHeader) * 1000) : null; + throw new GitHubRateLimitError(resetAt); + } + + if (!res.ok) { + throw new GitHubApiError(res.status); + } + + const json = await res.json(); + return json.data as T; +} \ No newline at end of file From 290d55a620e14081dd0a121aba8e8a0f43d4eaf7 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:33:15 +0530 Subject: [PATCH 46/69] fix: derive public profile share URL from browser origin (#1240) Co-authored-by: KrutagyaKaneria --- .github/workflows/e2e.yml | 2 +- src/app/u/[username]/page.tsx | 29 ++++++- src/components/CopyLinkButton.tsx | 8 +- src/components/ShareProfileSection.tsx | 104 +++++++++++++++++++++++++ 4 files changed, 136 insertions(+), 7 deletions(-) create mode 100644 src/components/ShareProfileSection.tsx diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 68d65585..62f222e0 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -34,7 +34,7 @@ jobs: - name: Install app dependencies run: npm ci - - name: Install Playwright browsers + - name: Install Playwright browsers run: npx playwright install --with-deps chromium - name: Run Playwright tests diff --git a/src/app/u/[username]/page.tsx b/src/app/u/[username]/page.tsx index 6c54eca7..74e26d01 100644 --- a/src/app/u/[username]/page.tsx +++ b/src/app/u/[username]/page.tsx @@ -4,6 +4,7 @@ import BadgeSection from "@/components/BadgeSection"; import GitHubAchievements from "@/components/GitHubAchievements"; import StatsCard from "@/components/StatsCard"; import CopyLinkButton from "@/components/CopyLinkButton"; +import ShareProfileSection from "@/components/ShareProfileSection"; import ThemeToggle from "@/components/ThemeToggle"; import { getUserByUsername } from "@/lib/supabase"; import { syncGitHubAchievementsForUser } from "@/lib/github-achievements"; @@ -59,6 +60,15 @@ async function fetchPublicProfile( }; } +function getProfileUrl(username: string) { + const baseUrl = + process.env.NEXT_PUBLIC_APP_URL || + process.env.NEXTAUTH_URL || + "http://localhost:3000"; + + return `${baseUrl}/u/${username}`; +} + export async function generateMetadata({ params, }: { @@ -66,9 +76,7 @@ export async function generateMetadata({ }): Promise { const { username } = params; const profile = await fetchPublicProfile(username); - - const baseUrl = process.env.NEXT_PUBLIC_APP_URL || process.env.NEXTAUTH_URL || "http://localhost:3000"; - const profileUrl = `${baseUrl}/u/${username}`; + const profileUrl = getProfileUrl(username); if (!profile) { return { @@ -101,7 +109,8 @@ export default async function PublicProfilePage({ params: { username: string }; }) { const { username } = params; - const profile = await fetchPublicProfile(username, { includeAchievements: true }); + const profile = await fetchPublicProfile(username); + const profileUrl = getProfileUrl(username); if (!profile) { return ( @@ -149,6 +158,9 @@ export default async function PublicProfilePage({

+

+ @{profile.username}'s Profile +

GitHub activity and coding stats

@@ -166,6 +178,15 @@ export default async function PublicProfilePage({ />
+ +
+ +
+ {/* Row 1: Contribution graph + Streak */}
diff --git a/src/components/CopyLinkButton.tsx b/src/components/CopyLinkButton.tsx index 069debdd..1774aede 100644 --- a/src/components/CopyLinkButton.tsx +++ b/src/components/CopyLinkButton.tsx @@ -4,12 +4,16 @@ import { useState } from "react"; import { toast } from "sonner"; import { Link, CheckCircle } from "lucide-react"; -export default function CopyLinkButton() { +interface CopyLinkButtonProps { + url?: string; +} + +export default function CopyLinkButton({ url }: CopyLinkButtonProps) { const [copied, setCopied] = useState(false); const handleCopy = async () => { try { - await navigator.clipboard.writeText(window.location.href); + await navigator.clipboard.writeText(url ?? window.location.href); setCopied(true); toast.success("Link copied successfully!"); setTimeout(() => { diff --git a/src/components/ShareProfileSection.tsx b/src/components/ShareProfileSection.tsx new file mode 100644 index 00000000..8afa16b7 --- /dev/null +++ b/src/components/ShareProfileSection.tsx @@ -0,0 +1,104 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { toast } from "sonner"; +import CopyLinkButton from "@/components/CopyLinkButton"; + +interface ShareProfileSectionProps { + username: string; + streak: number; + profileUrl: string; +} + +export default function ShareProfileSection({ + username, + streak, + profileUrl, +}: ShareProfileSectionProps) { + const [canUseNativeShare, setCanUseNativeShare] = useState(false); + + useEffect(() => { + setCanUseNativeShare( + typeof navigator !== "undefined" && + "share" in navigator && + typeof window !== "undefined" && + window.matchMedia("(pointer: coarse)").matches + ); + }, []); + + const shareText = `Check out my coding stats on DevTrack! 🔥 ${streak}-day streak`; + const encodedText = encodeURIComponent(shareText); + const encodedUrl = encodeURIComponent(profileUrl); + + const xShareUrl = `https://x.com/intent/tweet?text=${encodedText}&url=${encodedUrl}`; + const linkedInShareUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${encodedUrl}`; + + const handleNativeShare = async () => { + if (!navigator.share) return; + + try { + await navigator.share({ + title: `${username}'s DevTrack Profile`, + text: shareText, + url: profileUrl, + }); + } catch (error) { + if ((error as DOMException).name !== "AbortError") { + toast.error("Failed to open the share sheet"); + } + } + }; + + return ( +
+
+
+

+ Share Profile +

+

+ Share your public stats on X, LinkedIn, or copy the profile link. +

+
+ +
+ {canUseNativeShare ? ( + + ) : null} + + + + X + + + + + LinkedIn + + + +
+
+
+ ); +} \ No newline at end of file From e687b79f6b216d3820b8e6c74c5dd07e02c271db Mon Sep 17 00:00:00 2001 From: KRUTAGYA HIRENBHAI KANERIA Date: Thu, 28 May 2026 16:33:27 +0530 Subject: [PATCH 47/69] fix: derive public profile share URL from browser origin (#1240) * fix: derive public profile share URL from browser origin * fix: resolve merge conflicts in public profile page * chore: trigger ci refresh * fix: align Playwright CI version * fix: remove duplicate MAX_PAGES declaration From e79da34894a67f8748035c21a64fb9d3df401657 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:35:07 +0530 Subject: [PATCH 48/69] fix(local-coding): enforce per-user cap of 10 API keys (#1207) --- src/app/api/local-coding/keys/route.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/app/api/local-coding/keys/route.ts b/src/app/api/local-coding/keys/route.ts index 56caddf4..31b973da 100644 --- a/src/app/api/local-coding/keys/route.ts +++ b/src/app/api/local-coding/keys/route.ts @@ -7,6 +7,8 @@ import { randomBytes, createHash } from "crypto"; export const dynamic = "force-dynamic"; +const MAX_KEYS_PER_USER = 10; + function hashApiKey(key: string): string { return createHash("sha256").update(key).digest("hex"); } @@ -50,6 +52,18 @@ export async function POST(req: NextRequest) { return Response.json({ error: "Name is required" }, { status: 400 }); } + const { count: existingCount } = await supabaseAdmin + .from("local_coding_api_keys") + .select("id", { count: "exact", head: true }) + .eq("user_id", user.id); + + if ((existingCount || 0) >= MAX_KEYS_PER_USER) { + return Response.json( + { error: `API key limit reached. Maximum ${MAX_KEYS_PER_USER} keys per user.` }, + { status: 400 } + ); + } + const apiKey = randomBytes(24).toString("base64url"); const apiKeyHash = hashApiKey(apiKey); From a16454e6a5498364ea3654f10812add1268ff91f Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:35:32 +0530 Subject: [PATCH 49/69] fix: use atomic Upstash Lua evaluation to prevent TOCTOU race in rate limiting (#1206) --- src/middleware.ts | 81 ++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/src/middleware.ts b/src/middleware.ts index d410420f..e15c0ed5 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -8,13 +8,13 @@ const WINDOW_SECONDS = 60; SECURITY NOTICE: DEVELOPMENT MODE RATE-LIMIT SCALING These high thresholds are configured STRICTLY for local mock testing pipelines to handle high concurrent local dashboard refreshes. - NOTE: In Next.js, process.env.NODE_ENV is a compile-time constant. It is baked into the bundle at build time and cannot change at runtime. Therefore, in production builds, isDev is always false and the AUTHENTICATED_LIMIT/ANONYMOUS_LIMIT will always be 60/10 respectively. In development (next dev), NODE_ENV is 'development' so the higher limits apply during local testing only. + ========================================== ============================================================ */ const AUTHENTICATED_LIMIT = isDev ? 5000 : 60; const ANONYMOUS_LIMIT = isDev ? 1000 : 10; @@ -105,6 +105,10 @@ function checkMemoryLimit( }; } +/** + * ATOMIC LUA EVALUATION IN UPSTASH REDIS + * Prunes expired elements, checks window capacity, and commits mutation atomically. + */ async function checkUpstashLimit( key: string, limit: number, @@ -119,18 +123,47 @@ async function checkUpstashLimit( const cutoff = now - WINDOW_SECONDS * 1000; const reset = Math.ceil((now + WINDOW_SECONDS * 1000) / 1000); + const memberToken = `${now}:${Math.random().toString(36).slice(2)}`; + + // Lua script ensures thread-safe atomic execution inside Redis engine + const luaScript = ` + local key = KEYS[1] + local cutoff = tonumber(ARGV[1]) + local now = tonumber(ARGV[2]) + local limit = tonumber(ARGV[3]) + local windowSeconds = tonumber(ARGV[4]) + local member = ARGV[5] + + redis.call('ZREMRANGEBYSCORE', key, 0, cutoff) + local currentCount = redis.call('ZCARD', key) + + if currentCount >= limit then + return {0, currentCount} + else + redis.call('ZADD', key, now, member) + redis.call('EXPIRE', key, windowSeconds) + return {1, currentCount + 1} + end + `; try { - const response = await fetch(`${url}/pipeline`, { + const response = await fetch(`${url}/eval`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }, - body: JSON.stringify([ - ["ZREMRANGEBYSCORE", key, 0, cutoff], - ["ZCARD", key], - ]), + body: JSON.stringify({ + script: luaScript, + keys: [key], + args: [ + String(cutoff), + String(now), + String(limit), + String(WINDOW_SECONDS), + memberToken, + ], + }), cache: "no-store", }); @@ -138,38 +171,20 @@ async function checkUpstashLimit( return null; } - const pipeline = (await response.json()) as Array<{ result?: number }>; - const previousCount = Number(pipeline[1]?.result ?? 0); - - if (previousCount >= limit) { - return { - allowed: false, - limit, - remaining: 0, - reset, - }; - } - - await fetch(`${url}/pipeline`, { - method: "POST", - headers: { - Authorization: `Bearer ${token}`, - "Content-Type": "application/json", - }, - body: JSON.stringify([ - ["ZADD", key, now, `${now}:${Math.random().toString(36).slice(2)}`], - ["EXPIRE", key, WINDOW_SECONDS], - ]), - cache: "no-store", - }); + const data = await response.json(); + + // Upstash REST eval response format: { result: [allowed_flag, current_count] } + const [allowedFlag, currentCount] = data.result as [number, number]; + const isAllowed = allowedFlag === 1; return { - allowed: true, + allowed: isAllowed, limit, - remaining: Math.max(limit - previousCount - 1, 0), + remaining: Math.max(limit - currentCount, 0), reset, }; - } catch { + } catch (error) { + console.error("Rate-limiter cloud pipeline failure, falling back to local memory storage:", error); return null; } } From 89b804b7160185c067f685c90d7cba1f1343c560 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:35:39 +0530 Subject: [PATCH 50/69] feat: add repo filter dropdown to ContributionGraph (#1204) --- src/app/api/metrics/contributions/route.ts | 25 +++++++++++------ src/components/ContributionGraph.tsx | 32 ++++++++++++++++++++-- src/lib/auth.ts | 2 +- 3 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/app/api/metrics/contributions/route.ts b/src/app/api/metrics/contributions/route.ts index 7eb0c44f..1de5c973 100644 --- a/src/app/api/metrics/contributions/route.ts +++ b/src/app/api/metrics/contributions/route.ts @@ -69,13 +69,17 @@ async function fetchContributionsForAccount( githubLogin: string, days: number, cacheContext: { bypass: boolean; userId: string }, - fromDate?: string + fromDate?: string, + repo?: string | null ): Promise { - const key = metricsCacheKey(cacheContext.userId, "contributions", { - days, - githubLogin, - from: fromDate ?? undefined, +const repoFilter = repo ? ` repo:${repo}` : ""; + + const key = metricsCacheKey(cacheContext.userId, "contributions", { + days, + githubLogin, + from: fromDate ?? undefined, + repo, }); return withMetricsCache( @@ -101,7 +105,7 @@ async function fetchContributionsForAccount( const searchUrl = new URL(`${GITHUB_API}/search/commits`); searchUrl.searchParams.set( "q", - `author:${githubLogin} author-date:>=${sinceStr}` + `author:${githubLogin} author-date:>=${sinceStr}${repoFilter}` ); searchUrl.searchParams.set("per_page", "100"); searchUrl.searchParams.set("page", String(page)); @@ -300,6 +304,7 @@ export async function GET(req: NextRequest) { const fromParam = req.nextUrl.searchParams.get("from"); const toParam = req.nextUrl.searchParams.get("to"); + const repoParam = req.nextUrl.searchParams.get("repo"); let days: number; let fromDate: string | undefined; @@ -335,7 +340,8 @@ export async function GET(req: NextRequest) { username, days, { bypass, userId: session.githubId ?? session.githubLogin }, - fromDate + fromDate, + repoParam ); return Response.json(result); } catch { @@ -350,7 +356,8 @@ export async function GET(req: NextRequest) { session.githubLogin, days, { bypass, userId: session.githubId ?? session.githubLogin }, - fromDate + fromDate, + repoParam ); if (!gitlabToken) { @@ -394,7 +401,7 @@ export async function GET(req: NextRequest) { bypass, userId: account.githubId, - }, fromDate) + }, fromDate, repoParam) ) ); diff --git a/src/components/ContributionGraph.tsx b/src/components/ContributionGraph.tsx index 3fbb9330..6446c061 100644 --- a/src/components/ContributionGraph.tsx +++ b/src/components/ContributionGraph.tsx @@ -115,6 +115,8 @@ export default function ContributionGraph() { const [error, setError] = useState(null); const [commits, setCommits] = useState([]); const [usesTouchTooltip, setUsesTouchTooltip] = useState(false); + const [repo, setRepo] = useState("all"); + const [repoOptions, setRepoOptions] = useState([]); // Compare mode state const [compareMode, setCompareMode] = useState(false); @@ -181,10 +183,11 @@ export default function ContributionGraph() { selectedAccount !== null ? `&accountId=${encodeURIComponent(selectedAccount)}` : ""; + const repoParam = repo !== "all" ? `&repo=${repo}` : ""; const url = customLabel && customFrom && customTo - ? `/api/metrics/contributions?from=${customFrom}&to=${customTo}${accountParam}` - : `/api/metrics/contributions?days=${days}${accountParam}`; + ? `/api/metrics/contributions?from=${customFrom}&to=${customTo}${accountParam}${repoParam}` + : `/api/metrics/contributions?days=${days}${accountParam}${repoParam}`; fetch(url) .then((r) => { @@ -210,9 +213,18 @@ export default function ContributionGraph() { setLastUpdated(new Date()); setMinutesAgo(0); }); - }, [days, selectedAccount, customFrom, customTo, customLabel]); + }, [days, selectedAccount, customFrom, customTo, customLabel, repo]); // Fetch friend data when compare mode is on and compareUser changes + useEffect(() => { + fetch("/api/metrics/repos?days=90") + .then((r) => r.json()) + .then((d: { repos: { name: string }[] }) => + setRepoOptions(d.repos.map((r) => r.name)) + ) + .catch(() => {}); + }, []); + useEffect(() => { if (!compareMode || !compareUser) { setFriendData([]); @@ -380,6 +392,20 @@ export default function ContributionGraph() {
+ {/* Repo Filter */} + + {/* Range buttons */}
{RANGES.map((r) => ( diff --git a/src/lib/auth.ts b/src/lib/auth.ts index e5d82e41..0bcdad1e 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -19,7 +19,7 @@ export const authOptions: NextAuthOptions = { clientId: process.env.GITHUB_ID ?? "", clientSecret: process.env.GITHUB_SECRET ?? "", authorization: { - params: { scope: "read:user user:email read:discussion" }, + params: { scope: "read:user user:email repo read:discussion" }, }, }), ], From 6c939081f7a4a60f1e43d7b9b5d9bf7c0caea3d1 Mon Sep 17 00:00:00 2001 From: Anshul Jain <167362756+anshul23102@users.noreply.github.com> Date: Thu, 28 May 2026 16:36:20 +0530 Subject: [PATCH 51/69] fix(local-coding): enforce per-user cap of 10 API keys (#1207) Without a limit, users could create an unbounded number of API keys, leading to storage bloat and degraded authentication performance in authenticateApiKey (which scans keys per user on every sync request). Add MAX_KEYS_PER_USER = 10 constant and a count check before insert, returning HTTP 400 when the limit is reached. Mirrors the existing MAX_SESSIONS_PER_USER pattern in the sync route. Fixes #981 From 271c1cba8ddf3be317616e61c2bba5517aad285f Mon Sep 17 00:00:00 2001 From: AKSHYA TIWARY Date: Thu, 28 May 2026 16:36:27 +0530 Subject: [PATCH 52/69] fix TOCTOU race condition via atomic Upstash Lua evaluation (#1206) * fix TOCTOU race condition via atomic Upstash Lua evaluation * Update middleware.ts From e8006dee06614501305f0c06d5ac8c99c415f1e2 Mon Sep 17 00:00:00 2001 From: mahakagarwal7 Date: Thu, 28 May 2026 16:36:35 +0530 Subject: [PATCH 53/69] feat: add repo filter dropdown to ContributionGraph (#35) (#1204) * feat: add repo filter dropdown to ContributionGraph (#35) * chore: remove allowBuilds from pnpm-workspace.yaml per maintainer request From 3b7e930c68a71fadf57e6df58945f360b5ccea8f Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 16:52:38 +0530 Subject: [PATCH 54/69] fix: resolve supabase admin client type resolving to never ReturnType resolves generic type params to their upper bounds (not defaults), making all Supabase query builder results type as never. Switch to explicit SupabaseClient so all table queries retain their any-typed row access. Co-Authored-By: Claude Sonnet 4.6 --- src/lib/supabase.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/supabase.ts b/src/lib/supabase.ts index d0f611f5..5b9ac43e 100644 --- a/src/lib/supabase.ts +++ b/src/lib/supabase.ts @@ -1,4 +1,4 @@ -import { createClient } from "@supabase/supabase-js"; +import { createClient, SupabaseClient } from "@supabase/supabase-js"; const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL; const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY; @@ -6,7 +6,8 @@ const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY; export const SUPABASE_ADMIN_UNAVAILABLE_MESSAGE = "Supabase admin client is unavailable. Check NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY."; -type SupabaseAdminClient = ReturnType; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type SupabaseAdminClient = SupabaseClient; function createUnavailableSupabaseAdmin(): SupabaseAdminClient { return { From 4a7a57c9ac13091c6fccbfc87d2a325834a91ef2 Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 17:06:19 +0530 Subject: [PATCH 55/69] fix: improve sign out button theme contrast (#1178) Co-Authored-By: Claude Sonnet 4.6 --- package-lock.json | 20 -------------------- src/components/SignOutButton.tsx | 16 +++++++++------- 2 files changed, 9 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e241fc8..ff1e06ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -765,7 +765,6 @@ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "license": "MIT", - "peer": true, "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" @@ -776,7 +775,6 @@ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.4.0" } @@ -2379,7 +2377,6 @@ "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "playwright": "1.60.0" }, @@ -2889,7 +2886,6 @@ "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.106.2.tgz", "integrity": "sha512-2/RZ/1fmJx/MRSEDG2Xk8+J4JVk5clM9V0uSI6kUTrcS32KA89DtqI5RUOC9r6mzY3WBC9qexLjssIHjbLyVJA==", "license": "MIT", - "peer": true, "dependencies": { "@supabase/auth-js": "2.106.2", "@supabase/functions-js": "2.106.2", @@ -3288,7 +3284,6 @@ "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3319,7 +3314,6 @@ "integrity": "sha512-ch0qJdr2JY0r04NXSprbK6TXOgnaJ1Tz23fm5W+z0/CBah6BSBc3n96h7K9GOtwh0HrilNWHIBzE1Ko4Dcw/Wg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -4244,7 +4238,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4848,7 +4841,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -6101,7 +6093,6 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -6271,7 +6262,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -9419,7 +9409,6 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -9551,7 +9540,6 @@ "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-4.2.1.tgz", "integrity": "sha512-YyAXyvnmjTbR4bHQRLzex3CuINCDlQnBqoSYyjJwTP2x9jDLuKDzy7aKUl0hgx3uhcl7xzg32agn5vlie6HIlQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "fast-png": "^6.2.0", @@ -10002,7 +9990,6 @@ "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", "integrity": "sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==", "license": "MIT", - "peer": true, "dependencies": { "@next/env": "14.2.35", "@swc/helpers": "0.5.5", @@ -10811,7 +10798,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", @@ -10982,7 +10968,6 @@ "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.2.tgz", "integrity": "sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -11090,7 +11075,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -11103,7 +11087,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -12327,7 +12310,6 @@ "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -12523,7 +12505,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -12855,7 +12836,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/components/SignOutButton.tsx b/src/components/SignOutButton.tsx index 76f1991f..0267b17d 100644 --- a/src/components/SignOutButton.tsx +++ b/src/components/SignOutButton.tsx @@ -5,10 +5,11 @@ import { signOut } from "next-auth/react" export default function SignOutButton() { const [signingOut, setSigningOut] = useState(false) - const [confirming, setConfirming] = useState(false); + const [confirming, setConfirming] = useState(false) const handleSignOut = async () => { setSigningOut(true) + try { await signOut({ callbackUrl: "/" }) } catch (error) { @@ -46,7 +47,7 @@ export default function SignOutButton() { type="button" disabled={signingOut} onClick={() => setConfirming(true)} - className="inline-flex h-10 items-center gap-2 rounded-full border border-[#ef4444] bg-[#ef4444] px-4 text-sm font-semibold text-[var(--destructive-foreground)] transition-all hover:opacity-90 focus:outline-none focus:ring-2 focus:ring-[#ef4444] focus:ring-offset-2 focus:ring-offset-[var(--background)] disabled:cursor-not-allowed disabled:opacity-70" + className="inline-flex h-10 items-center gap-2 rounded-full border border-[var(--destructive)]/50 bg-[var(--destructive)]/80 px-4 text-sm font-semibold text-[var(--destructive-foreground)] transition-colors hover:bg-[var(--destructive)] disabled:cursor-not-allowed disabled:opacity-70" > {signingOut && ( + /> + d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 + 5.291A7.962 7.962 0 014 12H0c0 + 3.042 1.135 5.824 3 7.938l3-2.647z" + /> )} Sign out ) -} - +} \ No newline at end of file From f1fdb32d9937c9ff5cdbfe02bebd911c24e98c37 Mon Sep 17 00:00:00 2001 From: PhaniSriDeepthiThota <23A81A05P4@sves.org.in> Date: Thu, 28 May 2026 17:06:32 +0530 Subject: [PATCH 56/69] fix: improve sign out button theme contrast (#1178) Co-authored-by: Phani Sri Deepthi From d656547bb3110ea5753fa7140a2ad37d117c1c05 Mon Sep 17 00:00:00 2001 From: EGALA SRINIDHI REDDY Date: Thu, 28 May 2026 17:08:18 +0530 Subject: [PATCH 57/69] docs: add animated GIF demos to README (#1130) * docs: add GIF demos to README * docs: fix GIF path in README --- README.md | 75 ++++++++++++++++++++++ public/assets/gifs/dashboard-demo.gif | Bin 0 -> 173158 bytes public/assets/gifs/feature-hover-demo.gif | Bin 0 -> 241974 bytes 3 files changed, 75 insertions(+) create mode 100644 public/assets/gifs/dashboard-demo.gif create mode 100644 public/assets/gifs/feature-hover-demo.gif diff --git a/README.md b/README.md index 4c8c10b3..626a1e55 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,25 @@ # 🚀 DevTrack += +### Dashboard Overview + +![DevTrack Dashboard Demo](./public/assets/gifs/dashboard-demo.gif) + +### UI Interactions + +![DevTrack UI Interactions](./public/assets/gifs/feature-hover-demo.gif) + +![CI](https://github.com/Priyanshu-byte-coder/devtrack/actions/workflows/ci.yml/badge.svg) +![License](https://img.shields.io/badge/license-MIT-blue.svg) +![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg) +![GSSoC 2025](https://img.shields.io/badge/GSSoC-2025-orange.svg) +![Tech Stack](https://img.shields.io/badge/stack-Next.js%20%7C%20Supabase%20%7C%20TypeScript-blue) +![Good First Issues](https://img.shields.io/github/issues/Priyanshu-byte-coder/devtrack/good%20first%20issue?label=good%20first%20issues&color=7c3aed) + ### Your personal developer productivity command center. + > Stop guessing how productive you are. DevTrack pulls your GitHub activity, PR analytics, commit streaks, and coding goals into **one clean, self-hostable dashboard** — no enterprise plan, no vendor lock-in, no noise. [![CI](https://github.com/Priyanshu-byte-coder/devtrack/actions/workflows/ci.yml/badge.svg)](https://github.com/Priyanshu-byte-coder/devtrack/actions/workflows/ci.yml) @@ -54,9 +71,21 @@ Whether you're a solo developer tracking consistency, a student building your po ## ✨ Features + + | Feature | Description | | ------------------------- | ------------------------------------------------------------------------ | | **GitHub OAuth** | Sign in with GitHub — no extra account needed | + +| Feature | Description | +|---|---| +| **GitHub OAuth** | Sign in with GitHub — no extra account needed | + + +| Feature | Description | +| ------------------------- | ------------------------------------------------------------------------ | +| **GitHub OAuth** | Sign in with GitHub — no extra account needed | + | **Commit Activity Chart** | Visualize daily commit activity with 7d / 14d / 30d / 90d range selector | | **Commit Streak Tracker** | Current streak, longest streak, active days — stay consistent | | **PR Analytics** | Average review time, merge rate, open/closed PR count | @@ -68,6 +97,7 @@ Whether you're a solo developer tracking consistency, a student building your po ## 🛠 Tech Stack + | Layer | Technology | | ---------- | ------------------------------------------------- | | Frontend | Next.js 14 (App Router), TypeScript, Tailwind CSS | @@ -77,6 +107,18 @@ Whether you're a solo developer tracking consistency, a student building your po | Charts | Recharts | | Deployment | Vercel (free, auto-deploys from GitHub) | + +| Layer | Technology | +|---|---| +| Frontend | Next.js 14 (App Router), TypeScript, Tailwind CSS | +| Auth | GitHub OAuth via NextAuth.js | +| Database | Supabase (PostgreSQL) | +| API | Next.js Route Handlers (`/app/api/`) | +| Charts | Recharts | +| Deployment | Vercel (free, auto-deploys from GitHub) | + + + --- ## 📁 Project Structure @@ -257,8 +299,41 @@ DevTrack is free and open source. Sponsoring helps cover infrastructure costs (S ## 📄 License + +### Done + +- [x] GitHub OAuth sign-in +- [x] Contribution bar chart +- [x] PR analytics widget +- [x] Weekly goal tracker +- [x] Dashboard auth guard +- [x] User avatar in header +- [x] Commit streak tracker +- [x] Top repositories widget +- [x] Time range selector on contribution chart + +### Open for contribution + +- [ ] Dark mode toggle ([#1](../../issues/1)) +- [ ] Responsive mobile layout ([#14](../../issues/14)) +- [ ] Create Goal form UI ([#13](../../issues/13)) +- [ ] Chart type toggle — bar/line ([#17](../../issues/17)) +- [ ] Streak milestone badges ([#31](../../issues/31)) +- [ ] Repo filter on contribution chart ([#35](../../issues/35)) +- [ ] Improve landing page — feature showcase ([#36](../../issues/36)) +- [ ] Language breakdown widget ([#32](../../issues/32)) +- [ ] Activity feed ([#33](../../issues/33)) +- [ ] Auto-progress goals from commits ([#34](../../issues/34)) +- [ ] Streak freeze feature ([#37](../../issues/37)) +- [ ] User profile/settings page ([#15](../../issues/15)) +- [ ] Export metrics to CSV/PDF ([#16](../../issues/16)) +- [ ] Contribution heatmap calendar ([#18](../../issues/18)) +- [ ] GitLab integration ([#6](../../issues/6)) +- [ ] Slack/Discord weekly digest ([#20](../../issues/20)) + MIT — see [LICENSE](./LICENSE) for details. + ---
diff --git a/public/assets/gifs/dashboard-demo.gif b/public/assets/gifs/dashboard-demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..06d18feb3fed0052e067051383c788af89f3ded2 GIT binary patch literal 173158 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෌sS%7>504_u;!|P|HxJms$Kkol?Fv`q);dQ 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

tO(8!{^A9^Ni zsZc0jl&!_d|4HvlEJLQAtJdC1@K-Isj%&@Jk$HJ&3gEo*ESC3!Cim!rHpR-+ldCK) zS{#k{*4uL)Eh$MZih7lNJr@q%;MmJw^1(c=>I~pMPE|7BJU0=_~c0mvJRdo~uDrjx??KF2~N-1k_0n z8Ka0FUu`(HFduK+<5~b|g?(V=vxxf0)oc;-$m!YZD}g!sN@$qD(e{O`Y?M{<<#(|+ zsT|trmRuGU}Qq`S;r+vEqcU~CGaJELskA|LzMmGbDf+7%_}U)kZx zDjQqXDn85^zICdb`(!vYD<`_!>8%L42}&lkAG`5E~on1IWM}C5tHo={5*-f zGtg#uVBq1|LH)w~@@r*r3V<}2J{LrqK_s$0licw}vm^4tI_ay^pEweB7?G0rdCy%8 zsygbXP2GTy^c9WBhz`r$$RTlCg;XKR+O3EOnL_5l53pi|qtGDMR~K97w6!i|wqFTj zIcW`Q;Cun?7U2();aTTb3&aJ)A_$3nUy*lkcp@Km<5Lf73TWMrEHlDyAUg)~EQqrT zz8T`3WKlmI_tkCkvQ_$3LDv%$89>@h6--i<72lAS7V zSbmr`a)(0tSKN+vKR716JHqi|1H#)8mB zFNek)74p#I?Bz`hDPvHCVq;$+p%J2&5tVfB7j!coPY90>eWn6ab%79U$n!d3LiH6V z?yjSH81E@i(qOFc#AaSI%&QK747*7+YJrL|wqfxG_i1D>1)OF{_XIE&BG%2Z)Zwy9 z@^4)r?XP<|!!XGU2@cRgORYl-j_Stz==-T};(WvtYa#mDK|zhsAKj@#`dPW;I(W+%(0vtKDE8W=8l zkd_qVnb|-!2{_=Y`>1_v+tU1)epB?DRJ0gjMw8WJio4x6^lsMj*pEMU?#r<=(`vq; znKUS%DGQ#lsw!(u^O%fAzBc~00!Y^0AQ0u~o=CfQH}^$4z7qdIgvL&W1c_V-2X*%@ z&5M_u1|q0ixE^&U!u$mv*-Sc4jrm0jRaLTPfi|TaxqKCtkgs^FO5axJ1@}fdyYCwotm^k4za6%tILs&W<)E)b;Aii4dv>v($ zQwJ-$u!Uh3%*TvB$F2O5ixXiU4M}$$t#17b%L5)C8#+$jdKxdR6I|ByGdsLXlU&?8 zb#I+Db?`V^TK!7q(e5hk>~plV);QqV>Db|Hbh*5at0TCo0zXB(q+^%ZQxmlOPtx#b}51P5To>WowSvm2xalI7oG3M8*Zir!>?DY zI_)y&+Z~?_x=py}KF&2;+LIwS#@;uzV+UmJ=RZcmQeUBnZ*J$%uI8tn`2$(`{|M>g zFp#QOE+43vAL|kQWtHuUyeKzFQCBK+Kb;fIIZ8xf&RxfX1|yB0xmmn{%6K!rai2k<}6*l>?Cr3j%)&dui^r(2F?DS zzYqL#5*T>1XNLPd*ab^u^}G6?x(N9#gTapvN&o;salr6@>ms-41v%ZLTlvDRd4c;s z=!F2E#J{WsIh{K*pAORl=ZF78S;+pQU=UU1ll)%=gSg7W|0o!kmEDD9_4qZN{{<>E zg~V-d@rehb26SGxJ%u-P@_H&#w#vMgw=o61e_{$=ro8|56m*_F``4|YW@P)XTS3pz z#@H0`((0YVOYPg3f|oTMfp8(GOD7i%B^OFz;R$BpN&hEN@*jMH=~+CvN-4QP4f(52 zEYC_<3@Rv%Yv~Yex6TD2yObyI%5Q0khhD?7LfIOIA-c-%HJy`Ge9Dyr>h*n!p9g%j z^H2JJ_zH@I$%hH!w|s?8c>RBh2?_u36_NkLSGY%4xu;inX8y}pRI8*;-|`h&w|qt2 z>D$Z+mx_6tn(a5A_T5^JZpjL(|4UXp`IoFn&=5#eJn?m>puDGosz@Pt9 zL$Ff~wtw-jDB%{d__u}-<7HFhs#Jk+9QKr&c6&Bq_xiSd@L$lP$ROdCwP*}|@^1m5 zIb5qY+I}d3{~%iOwt6s{tlb-DH&LUtQ09D?tnjT?d-IdmZPDOr9go(RuW>Vej`XUon_mg{_Srs3;hyD;;WSm~8p9+Y&b3 z-aFb|`7dj+*xz`|TKpKz{1>!1o+>+>X}J1acsW~kwfgb$OIzRI*zoA`|FRZ?w;86X zg}wg0i{Yz(Sc}=i%ekxH`!k=0q9AAHyLwKlQ!RlEn8+J;8R4{zvJ zC}(H!W>BM42p%cz6jC8lsMW17=upaPG=ja9emjn5ylg|E3r)`%ub8^S5g}{4vM>f2Zd`H}lIhj^n?Mo`Pp&@fB^zHDMbaHPs=5$Du+HNLMhB$NPMfvb8wfi|9e}iq@d`^e0^8zi3`|d#&`T!s>7h4#+6quJgBSeDpKwkBXLmPrm@hwh_ zoqIc;Rfy{>R8sExT(dAEZdwi`Sc@}90^Z$h6UvF#){V;#Zn%akr)jr-k@TP)!Geab zrXg}pHwsaJ@O!_e7;dhTVjq^}S|E$iyAl(S`lYDKn)Y8rRkcZv^JB6GglCTHKx~y& z0KK6eJCH6L$2dCyH(OW-2>EoBOSL!YtGjm-$X1O zF%vPJ$IIN@6rC{rg;JhACV+m^p2X*3)|*~-L)*(};ar~$;JbVy7X>@A1w(lDFq-i5 ztJmL~+pK*?WL;Ue<0Yo;aM5)Wz8)~e1^vc0_*4F!5#3M zrG~kTohWj4!m)49xWVHOkW0cts-MV*QUw2L4QdfCL_=t zXT!N|ToSz`%XI(g_mmR{JRM_3hmxlr=2*8XjET+N~;s`#4b;MfY4^e9lCwVBc^6yUgok+*D`YqSvge(mHFuG(5l@FLOj1I2e6VshT@pcxHSK@#dbk;l}}!>Y=Z1QQQ5SNjUWBKBov zW)JR<&#;9{K~=^x;GrRJ*$YqK%isvH$kdS;I~GDo=~$>|`*v=P&qbvlqpPPrmu(xQAG`)N*1l(6w(o2GV_sPM*?QS=7W+?FVg1+AW#`rShk(n`^}oL^ zy8vXhNQmYJi17*o)jqRHMw7TnJ@2L&?iRLas$68^@Nls-eH8SL9DyPrqi5kT1=Dt< zws5|bD;Kg)ZWPfixMJOXH#S;G_vmYhdY`MPF`QsAk*?B9lwaEfv<0KqO{RRg%?V)3klrq5;rLfu>N0JNw{QdJQHj;>xdIC!8J8sX}%i7+_75gO$2iM^^ zUR!skQ-Sy%vEE@Xv%DSfuYEkQN`Lo_{<$1we&Z935TJGLxjb}ruf9YZ%P{;s5jSS5 z&~!08^Kd>%;iHD@raklQFhM`b6w+LGkR^wkD+_NR?tp%g&8xmR98%a&qNWAND~+qb z|6@h(b0=+j({0)!2F=B(FuwrkmSaGx9b&e-!8*wD=f^jiW&>2)L25@8$2b!A zvmW=26z1T~t`2aokN}40Pm{elT^pdB@&BYt7oS?rGQ{2gvl6v{h|VAy5i7M}e$ePe zR9??n@BZsB*xW}VGgn)*XSb4ldyut}GotluTGZ>k7aQaHx18$q3S)B4IeJ|EmH**p z+bg=A`RydJ{@?y+QzHoLoxP&g>S;vcOB=?ywMI-gm)p`CZ;5Sa)93O>XEOJ#2yIEC z9&Md`3&d`H_3*yOieF$q~gTE(RdH*~f z;cO~oOH#O1aegI3XS%!)H`q~*_hIrm@_kRhbPpxZzJM;M_ zQ|s~6IJo)S^%=nuouXfcweK7O%KOW(|E(Dt19VMiUiPn%18%IIhS00xcJuOlm$=wQ z)m{#DUQbx;PQIe9BLdB>o_-%zxHG+8)|pK{rT+1L1(1K&1D6^=XzohS={K{X0T5%3 zboEgTcTA-YAf~4_NWx>h=Rrh|{A2^;u=4z@hYWfCy61@sOD&M)%wLE$0E7fnr#<|r zEDC}lJZxl$k?yIz@`>TW8qs6oqy)Nu435+4{lO7A%50c(X?eiVTr(<21u z{6xiq!5?F38sEIyBOj3UHsSV3EDc$GA1uVFn;Z^Pqz}V??LhR7PcSTIZr^DJs6o1k z{Nowi--J@4bIE|Z{)m7biABFYw^ZU*YPN;Ry$>g+k8n~ApfH5Z+QP1({;5N;dQSvs z?*x;!$i1c_YV{&dmgQG+4Rx+Zi#4N!GIYN|qeQRKUvajs)05D#Ukm6|1QRBSBd8 zK*%qxBS3mm#rZ0q_EP4(g0u8tJqF%iyez2!ENsPKCeYw}b|K_AHPR=&AzkTd&+j~5^$yp+~dQmlrAok;qxh-^C zbaw8?Ps`;7sHIwXK5CziHn|etdKtcP_f3dr2%(FY)E(+DRbRRKhege?f7ys27{Ini z?!a)MhWBHfXa3(Xw-JIMbU3oJ7*FzTp08KI^{~YGC29BuK)2SFG2M%Vn}|yl(cJWQ zjnKvFQGm0e@27!WoAch4*hgqdw-5nMUQAsInvy zsMm9bSePpFA0cLZpUA5EqGx6A19~Ix99BfU&klNx5MGQHo^^$E`!Xb>6|I@Sm{)!u zbb-{reGJJXq(GX|J4P5V^QU>~gp;S{mt`)(KF+2*?^iHF!c+O!1Q&wj#PC{=Rm6$*kO2U-O z9$Qz=d4^@egwuE zFg00{6EyigMrfBP{|%btT8R8J4gk^<&l-K~ghSLqz9m%A=iYe0)Pw>VLO%4|d5QW7 zb8ieJ>9(~dpyY-m6QCrtvtV!W>=;nC<>wi}12#HsHm}<#ACAJri7DXrc8Ix#q1lYi zZh#(=L>f}05Z%ycPS#2Fp}XA79!VBYWa+KJ=ruwr#)fBE>$)+V!M02&3IUebiHRN&KdJoyn``U*-G*Uo?~!cpGj1R7Z6C^NA8BhJTW+8D-Hv7Kn3C+6G47c2 z?O4d_SZeE7S?*Z--LZjV?A(&<+%fLl_3hlx>O5@gJYMcR{oQ%S*!8_lhQNXn9}b{o z12WWh-7I(g{oMs%!hobO_$C+vKMXV*L)4BTX~$d}11^jyFSEKxO}c6Qy6LmK8QQx^ zZ!i=lFezcRomcWXfz^t>5FG7VW|4_;*T zz=VK4F%*8dn4zGRp}3nNCBLD_oBl+S;Z(oj^s$~q2R2@kK`@#Ej2Xy~8Y#XR$|V^o zG#ROAA93>=0oC?g9}SRw$5fe&Hn#VFyy>s^8*N`1RmmRZ&+el8INE74HsH|P<3Q2p zH#W91)=k2eDFysA2E)e;P56y3_zg|B!)BQV7H-A|s>UDi57MBzHvA?AH7BTFPwcNu zv>y+CHlY|jp7^0TGAu=LZu0q;!|?T3@Au>J-%Qxj7(H^Gevm&lZmd@zJA}Fb2>pYN z9m7&>VqvC}o|=>V{F9WZN!r!PH&v4q-IFZRQ%3w#Jhv9$*HfGwQ|d8O8B5RMNBEA|4b{c_DGJy6ijE-V|(OQu^NA71pQ`+6K3Fl zrnRIeU*yc*e=uWIJ^Qj_(llpQw;HC$JjefMmfdj9 zPs=Ne@7=3($NZKWs5^90Wx!q#w@{02h?` zf$Fuu)asF_*coFcXxh^6v;qUv#?inArm$xxjZtiiNb9S)h(g52U3bJfdcfX|F+kuX7$ifN1qUrjNoMm?m@Q`$k*ndGI2H>|rm;qnO zL#&iJu2rqB6xD8I!WVyQ4IV!LoRao3qF3z^%NMb$?i&QR6oeak+3ak?gK5ptu^$Q` z;(oQX6T39*zgGTdtB7sOm1&dew1-J(J+}k@dk0uu7Q*y*(-96h%UL#O+kUjRuHDh+ z2OvVqg6`*U5ln1V2z?pPAu5suaiWPT(QC>A10qiSG^g8Srkn1yU@&&u2@X&@+f+w( z*#ovrwFfwz=Jm4)^JPKYOoZ^bm2&AX<&H#Q$es)|Q3P!7)#EQ-7%=%$ww2WRPXUkYzgKPl>(LxbBXx#54d9YRc^pbj;o)Z z9@RfRVt56q%I$akJAdz#Fn@#47e-i8yZ3&4tN#>QgkE}>dt`9)MXd_x1UoSmI{9%z zFuewj4mgSKB$)0ba5INEP8@5rA7%L8-XLi124R8_A)Mt)|EuHjap>0Cam}kf4cN)8 z+dCs*_i1iV)GNs5D}Zy{(fQxwY_d56O;9k5@M!JyE7{lVjSaBO>4kRRj}CkulU2Li zZ+~)ojNuTuxE>lO$nU4$6g5xlJNoZo&U&3zPG1ofAouR!ockvN`WR)`fB)UJp7_QX z-y^LJ;nh5NC3ODC|IDtVUlen8eEPiv`=fyEnuXjfcs3t? zB*BRiHh{kCQ_tgj5qX>O6IXG9>vw7{!)1E?1vlTs0MrDJ3u+IO)_>;w{TWSmJniQmn*bE&xBor2dN zyRgcF^J!myl?L3Xn4BwT<2%$|xPIty&+DPWUhuTz$KXzHgxY_leTLNFe(`Pmxu19S zq#Zad1LV2crT=`++rH}t`22%;Yu9;ZxNAP<52Pe^s|)}uhtaSZU^nDK2x$bY7OXLhbijLCfQk-;i{XwzarKQg>3qDR*89I@7aX)h4bC5inLeIJMX$!Neok#SNcl3I$2z?F=XdBx$1>O~ z3G4p6T(^AdbC-J&!v+;XwiQ9FUcpIkTqMSIm~Y8hN3_6p?=ulRs7@3*gO$D}(RAR& zKeaqbxSh;;Ml%muMkt-^PFHkBrJ7ff#&;qRcy;FQ;2^@zjVe+C1M0*^GHIz;-dW|_ zX|3mljNjEJO~!}@=RtKc+y?%H=e;CB9i2URHC zzB;f?DgAM2!=asM{YPEJ-SKSKyZdt@^)MU&r{`8C_VtrG=!5(g$+M3G#=%uek3_39 zAGv0!_bJTR%RSeXdHX}Q=^otTiP~@*<+QG42{)Vrk}||?;yO#iYv{XL{`}ddg?TV% zvZ_U}kpBzXyGGLW?uNF+k{7+Ul}a^+czF#T#UhAfnAbbn_8o`ISOR6E}NO?G-)`WrTk-B~`$vR-bppbw0* zjkNmiy_+|nqq-8Dyxw>~?D?1C537^r6_hYw0Elv4o^#rVcqr3#{0NJ?9;6B}AB2!| zu6=``!_Cuj+@`sNx0olJt_MA3-3E(XbLy(?2m}5myr;9QxD0cRg1^jh@4hL8dITbe zxqb&WF8Z=ByT}Y(gUS}H{>(4(;BF3Q(;}h+`!;V_uh{_s_s&;T81iER;g51BqDDxZwiS15wM?5fXVsD{PL3d3ZzN3KFG8yu6gD#miZhr(mT9FKFIO+*!K zd1VO`ycra)xFi>wgGYEF*D2+nwAy$j#Q!|!kokpbM~JY+78!Gpr?X4Gy|GL<8(wd ziXgNZZkss}LI>C9$VlKeK|B^N$Gq}IA9PFnaDnRzVLWjBvapcbgrSf*=_K_oe_PpD zB^trL^N97=%;g{*Q6ie;1o#O5Kx(g`hDCz9_n!Qa&P@q9kau-Mo^T89C+n6EuD#De zcQBky8A5pDRWhniSR3D*=n9@yxhUIIOP~c*1Xl$~klhZ_j!$|NW@8Qk2Zd{~wO3gctFbTy$cx~8=c#+9fj_=CdGQ4`lCmgCz7F)+xdEATSe^hM} zeIM)-p#2a$!}r$Tr^{qVpVlm8QHRD_cG-Iyp;5bTam4mqywftqNtI15jK^@6i=8fq zO_dIrVVD)+d>2n-$edAKP5$t!*WW7zV^7cad|ql63?J0fOk*Cz^fGX*`b4@VgCr2K zRqBpc=FFo^MGz&x9It2o4wpb`5faA$-pG@7OEB+x3s1c?9+VM^HVupvWj}rJ0Q6gj z%=65$zVLV0L-}y^^R3s_KLKGpU*!yf5MDLwkA#9~j#rMp&oqM55hCw&Hi;|8x|k}} zWK{OzZHjU4h~jTl67!m01d0VSW5GbYHN=bimJ50eWLq$bE!9bBysjCCccHj%v4bUE z;l_W$rD?x)D&55|1{(--w!AdUBbyuvR}^;kU8WKc#7B5Ys&0BkH^J^&xf;#!KdSr$ zl%cZ1!nzp?>@D^~>mRU3&n=)e2KEi?o|tCV7@Esz~aX51d?sOIHr=J!xHBec~{EygK7?**;I>T(FoWIXic0Gq?J6 z&XINlw|sqx`J(F_{H$byu!*Sa4%vOb`>}WFuRsrMUGNNOLx97DkTzf`hpl^N zsv#jhuTr=~R(IYYUN`7D!3wBW_XX1={ODybGCWs#N!S#=!KRQRimgMRynH-3$Qt7D zH))QRWwRcehYHmKfOmv~AJlIswS)p8N5nT9T+E?DE64*{hHOd$q*n(OCt=V!a#J+! zict|2#t03jIrg{|nlX3QiO-_MC)XfhTRS7YHF-Z^^}2&xJv>d7T&=4MQBGg`LfM0B z+b2fjGbz443%x9)R2OJEMn3&swQh{}2?^M1VNj ziejZVU#$BvY5uJo374gQyBP&2`TK+PN?xG!GjiDY)pn_wKdq5Dm`}Cj<~gVlFS)5V zGtw3yitSo20yBAmM9NSE`5;3qV=P~=em?49dftao45=c3Yy=}%7FzlnME4710PQpp z%Hc{6-KY!&CD#kWPNeA{M0Q=zJ>MA zWewm=y!^rU{N(A>K?dolmWQZED~zH)kemovC<$zev5(PD95N$I#?*T^JCAxq_7@>Y zv<$@=f#DRx6JqMQ>ww>KEl+OSJs2FSN7Q{MKd9xoECoO2pY;H}W;}ex%mu)sAaKlf zexe2_SEDr;9&{ba*m2&!%NI-qz4aVt33GQ-@wf1(h7hpfCHuC#6j7eoWU~nw_yp|% zL6f-Pt!2Mk0j~iDBP~lwk`siAul??dM#$S{$k&!BrS(b&?JEauC_C#VxP=tz`6$z_ z;6ty15{m|&D7N*hwY|Dg0_y<-vImt7hMaB&O?Fz!d zBG|ZPvpCwe*a!7QR7;l`4JZfi^GXIes8Qt)dHeNOMkv)^XK84Le5eyMLdxN9CUld~R`g&Lg=lqLy4@TItf@T#oZP?~LD ze@l3n(0ay{W$(0R=}J`gsaIzY8rL=(8Fc6WP_*D2o|+o^$gjG_t5NY>Hg{|!t#_1a zL9NwFvUG>#E&u2zRCANroGb z$g)J}S$Lo=l>i43Xpz-WFnX~0VK*Cgph!=-BwNL1W(fBwU3oQGeZ!%wrk?}1~ z%uI1)Xi~f7PX2YbD)F86;`6(2Z=`i^u$-9CejU8&1c5b8^_pHd{;kf{tDitf0xGLx zkKZi_jj?Xms!E(Vy4>ctz#zX7$QtM}W-`)g~Txge!>X5vdAa_IxUGb6$ zsBZn#hItXB>8U*cI=NN}PXk+*zky(|N=PD9)HEnWRW^Tp`HizCyT3MCw_Ok~~ z$}||h%RftL*A5MRs5)8VAVF3LHi!Uat{@-fhiVx}q3c39SF$wfn^P?`;NzjIzJ|dDR?qCryT{ATe)sz{_o2ReZUlhL~kj{ zh_7`X0D!Cd4nJ?04EoL}E^Q9vSUo3_U z8HQ~vW+pG>d`pta>3!TMK~fClZPq_i(`dFu@>e|rQH*$(!!I#iXU4X2yTJcWq*lI5&s)oZ#E zfixauP9KO}$$^`UgeDDltX$QuRM0PFu??EQ+XRn#ibf6c{Gpk?%VSy*GaXug@kvWV zp<=7e-u$btDImcBf7Nw$>pcCD)y^0J=sTAt z*pPv_$y~X1cCbGU0!XiObVOF^1{thhY)W=105+&PX{DE&#f_(uvWiAmK`c*i9z^%v zks?)v1_-u~QNt6^ihtsM~) z)SZykZ`aZJTXKc3Yt&bU@D?}#$ey;WGYLdc6FfCOF~8R+HAvO@q^k29SJHQ-il~Ji zX1A$leL%UJo^qugh~EnwjR^3$q7uPPEfOqynfrPK8@uI0?oN02f8bD1 ztqOfKAm28l@U&ioT63E;U9RJ(o0Zxy<_AzjtOw=~CdrrWXzAHlmQZuGq=hRnT!9*i z<>>Qe*~c__^1&0pA(+FCb*dF@ne;t3d2UY1%^aw2vTn)wbRu~AN%7!nOxCV~-q+P3 zv$3^~MQfmw#Oshk7)X72WuT+H!%fd-MbgT^XYUakioCyn&1%%SbZ5T=>WgnnI4QYY ztnxTk6(0>UR^G$y9t|PF)XT@lzTNCH#cl{gRmiz+wKbun9?F{n$ zH4O%+@`?t>bKu1n>m~fQ_EjEo@7sOwx4J7bsFG9D=EPcTVE=d3ewl;BWbw<6`iU?8 z8U;=go~8;3j%6n)t-n__`%Tuk^5^S{4)a1rVxG<-@7b#4K+D$fJ4n>;n@$FtsIimw zKZ(`!Q94|u)@;>lRY`qYzO7Ec*+z90!~i=k=C@mS7>$tFYvyUA-csWbjo@6sH;p-# z5mEQnn_R*h<0s2=h=ZP)Onf!gmf;$hx~nTfZL>u!o#^oPlizCEa>x$8V`rRtf1Rm! zsst!!V%zNm=cK0_0vJjhAHNu$MuzQ-(!{{Bq4i)aVE`B`;^3t1kn&V7Kz`>#9LRXL7PD9HGaD7*(gix+~2C zo-AB$pW*!dhfPUgwki521meVjceO~B%JIa_rBAfS!3v5mB!Ap}V#az&-V2ljq z1Gv=XF7SQ+zC5FE;dlgn^-^k2Y3%AuHdH+y&`}te2cmkFCX-KEo z6Bidp)pG$owT`mq8#JJLViKUm8o^~iKww2n7@?d(xe>oJ`JU%F`gol3J;^|lG>=`f#+nOzyLes?!I zm9$p2+xGI^lgn8p&&X>JpU=zQU7kTm6aS{mfG0G8xJ$!fPyannlps3jsaNOfMaavm z2ligL@Mk9OxcUfZ5ycN)$h<3u-m7pK`?xe{u;-Pl%oY0ORRY~r;(hO+F3*o|r00$E zcu&o*q}$uKH~0CzXWTa)&APUfybh!@<{ZQ9#aIjV?dUWq*z2o`rYp#C_Cfu`4`PB~ z)qNWHYo_Pd0T3Sn@P49_?c1?I<3OzQoDx3zn-A@<*UNiVf>+4<&u}8A{Q|kaXO5@* z?DKwTVt4XQnl;}T`=&bkhUSl5d9eTBcWfzj4wcfY6hz{auKJK*JI%a(AU;wy@20(X zaAAs4;Q%h7sqz`PXedB7RE=8zDfNGtd-HIp|Ni~^J!2bVnXzOGjh(S%U$TuQTlOSH zg=C8e$!_dxjK~tQFNv~M$TIeQmnb46L|L;WbHC;D>H1vP_xk@4%%54AKIqv-?@0v z--GO+R{m;;;d@bm!zbsjChGadat8EE1vq`-U}duPcwoNVWKnVHOB7C-)TU;wXevq5 zyZdawIKeAQj<9SHxYNWG85kJOPsp+h{B}QZ{|uq4fKd86aFZ+&3MGS&p=MDnq3~0V zsHJs|wn$n&<5K$#&W>0X8MoD?;hg3$PDbfN`%UhiB=qG<^(&iJT?yhO^-d03yaO5M zTskrYDi;T`RU>Gp$vrF$vM6K3omaL6I`VaB*uxxm(Bm1GD6}$lBm^hQtqnXg>+T7? zuXcQ$e96aDc&f(q!-1dRuE@u1r-p}pUw2;^)=8{EMVts;H!s0x_s~heC((tj)2Af# zm(0W$`)E(8C6(7~sti8XO#DH4u9|qHL@XvC^`IIHeR_FR`tYE7^?e;-z!PQ#g-j6h zDtvTi{q}vfD1uS>n}w6xyDY2M0e9G*IZQxHZhZeXR;@PJ6Xw2qN2%Cr4GK$A{(fZZ z6O0t0Hw-Mthb?~JeUWivMk(N6Lnd4MXqs=x1sPk!1|g^2%hn_p;m-&`UQJC1CDXyp zgi;Q?`w+&VQJoX~gJW!#1QlH~hvAMZGIL}r(Zo8XRMc?Bl5}-hK7f9NS;bN4qnhJ* zD`oN@C~uO@?_-COTHbW$ zy2(O&Guzq%Vwd;cd{4YrYWcEUI^>Ko|0*p!&d&!yB>z1>k7N=$#V*Ds@K=PMOGxp! zy--5oxV=yeEiEViCsEHRY|QX?qMlO(!!M-`#_6SHwZxQ+PpjSrQ}k!`oxl{mIwRVY z5v?UE{?8!&B>_h;OK+$t4`%6Y)#RN`Ev(PB=Cl5V94-`0~{y{--x%++hVCh6TTRQG><**^!&)q{j^op(8Ei zleN&9Ch}mMKHmbJZ7P3~s4w(BSAJXRKN9t!zZ3O;;`EPP|9hMsEG_)^EWOw3NZtQ! zmOdpZCOkDKDJ}PLc4}gF*`LgOO=0n$kbL2*vFMiN*xo&`jWDr)=eUiqW$5Yu49vec z4$OB~7j)OY`acEcSK5D<6Lue$6aIh6%y;(Bx3uqceq8-9JwG|M|Nk{Vzx#j8&y&Dd z|6lX-$IFHPo}a(jlcD{O{QO`RCIrs*SAHISt*83we_JlJZ2g^|pRBSUE%}|FKQ1l& zou7Z>wY4(+Y&&bF2}|@-Pe!m+9ZDi(F^jJ`&d+llFBcx?=Ou15TIK+dMkA6KhHJc> z5F!>@df-7h21-S$RCVWEo%HMo6e_CVZ?&@;N+QyB)G+pHBQTt3$Wv!H=+(Gs1xZDu??t z#Fkj4HNLBXM^uuiAPU-=#Gqh~)NFui@p4XxtO`?VDEalJClO5J`5cz42V}WkeBu0~ zk%5m=2i*kp8S|pgRxDkPBGhZ;L`#fJJbXaVDxSj0hfn0i3ql0W0JXYa3u?xG!T1Zb zl9(YPTT$cDM6KL>8z2CJ&5VN^j}a?>#EKfye)m#S6+1$U+~z-e$9Q?|xZk!*lz_&`{7t60WkL2csWG`z3? z<<(+L1aDoC&=efkE+h;qFJ^xedz$}z`wE&Ca%s=e5cr&GMnmgd(rqi_DB?p#+;ljP zP$rb0i%^d2^XZ3Z))Q@FxPOLKN}XYSkLV#xRgtM!9&S;puni$q@#k3Q-zkLdncvQ} zd(Md)ZQ9ElxKXMqbXV^TtXU!yCctNT9too>0y^Q`m2`&+Apmi+D~lxh)~;XY6mf-r zKbb3mFxs87$G?eZB_yfhMxpe2A;S;~;8|(NLE_-T!6A{9vhmX9pVWK7FP`;zInTF5$%md8rvo8 zeNtl#J001jbW0XuqK&$}9wFCwH~0oVgpGLH1V&PR&IAy>MZA&mweFU*3b$)e*X`NQ z1X!_RSSFaIrkEzVX&m+xr(* z^i5%OKO^i`Tl8fwpp^F7@g41bXL={X@}+m-kRZg{*P817F zblYSjBMa@@D|{_qpyIY;6nQz+gNTt9g>{MIszcfkJmgkEabB5yWTnq4XYk$avMB^pB+wBC{i1EM zZYCBgYg%({NvbPS!v`?rJ-J^cL*<#EgQ|pX&Q{5MxxosA1|JJ8!>2-y`tD+{UnUdqEXUHz3`WX}iO$|rd!z3y|qxEQ?1 zC{@VaxcV~2ckl;Rc8}y#D|c^pi&y=wMp%=q1vz#@+;UR~o8)lC6>0a`vKTYbM4Eul z(&9nVjN((^My%oF;-3;yCsJ8y#3;35k;<8}&7?*dk7%uLQeNKU;Jsd5=rwyjb4Mt+d zHbRU)@e9m~ZDle!z8Bk^h~v<0M)+=?HP@K*Lx_`DFL<+XiFOeK#DJUd=)s0e` z;4_-pVB5t^!MoGTFRZwRamm}tuf&1{zP>{l?`>wPLWrf!sV$#3cF>#rIxC)~pJ>mZ z#kt0-M!FksH&dKxiQW4stWX&rzZjKH<@UMBX8-KaEOQ=QfhEw@4OP!VHDK9rJ;>%w zlWd^`ffQ=@%g9`EXKymgzu_B9P4;~NvxkbR0F$4EIZD;=rDgK8@Gf+brMb(cQnbuL z_l8<);67>bPemsyzJwwD?F-`8{cC}EH3!P0SC+5Xn&c;I=L4cXtsKOxhpK(ke@%$2 zc}Zc?5{%_IqYviXS>CRC&2UiO@cmdpa;2(iAjy%Zq)Y zr2rc4tf26ho;PcaNYhmNnoJRfw-q$?ooY!5(0f5H=SC~f`6}F@VzS8*7R7v-Z2j=r zv1zr>cKS}Xy}HUa>mxL8YsJw-)^7a!7u8$k9!l~m4>P=7n^ z@I}S_^(&MrVCk#Re%y87I?l6x_D~#>(LFg419W^3+ToX(u*ty!2$Vx_3tiTIWI&;B zXo?ca20%0yh>}s8+(K+2siH_Nx5E)D$;eQ5tZTAA6zdT!iFBH0M5X$!CCed6gURm( z5^%f=Kd66UsB=VJ?~e$$llmX3k>GjlTs@`jF1yMwg%t7u3TC0ujgX?`5EU6D+n%Ej z-;Hc{yQ6V8=z3_lg!bJZo^magtcmwoUsl~rVw=5?HIYaW zCQAXPa3_0*kxbI;ftkoWb!|+6*poQ%BhV!6%`R+gm}1@VAS=XgFou4Szw+Q)h^*a)v0XBT^w0+QS_m` zBY{tYc{9p{5!WmmO~|H{M)DsO1(s?dX+?EI$PlkP!pR_Z#iDMAl!ri7V7P2NadRYb zEz*WuBwiMoQ0#H(wTBpSG_^(?uRvTSXRwQR6dB}^u@@_6l(m}=S}Q!Uwj43$4JZ1S}SOAXSagX#%cNcJw{ z4j(c=Rs#8h5 z>(_Q{jQ#z1o3P5us#_zWMd11*7EBR4R@GX0GyADZ__beF?M$)%d^xmFQ%4??jbVy& z*N)SvrFwvYT+McI?@YdL4PW7N@-DJ{%IvaY>f`(L_Py6(u0P^fJmFM7GONAmXwA}Z zBqFx4irQE1kBL&a5Hk^S!!Ecx>Fz#R7D$G3`0~BK?U_P-qsk}F-4{!PP@v0JcR;S$ ziR+fcriA9Nqw=lE?g!E2@G!@<3uuwj+_@F0QY)AQ$FX$=ij!FYJ4 z!Be@~Nb{i4bceP`?*s35_LjlmK&ylA`wpxlLBnOr8+jxhjQbH9lyFCf@$OzW`NgZr z6cyRQ&EEN)p3bke{Oy99`3f^-b8OCGXvRvmDrvO9m3m6eWIU9S-ap=8A z6e=o^JHhKn5G^CEh`YxhUvG*ua`iprN=m&_piW~$ZFN(k1F7q2ea7ex<+4r8Xa%{E zq-r6J)+91sgp%0tr9!AK-qImKLg z(37rIhnJ)ameiY_jF@ODISi3qw#&F>DaRh8od(eryghG7h@(`oMj9h8n&ln3I04OM z=4~q2lXcaX@hLA$md0av%e_X3foDis9LYJJrdR@tzy3!AI&wtjH zpMFy*|EAjf%`4wGHR*5a-n==YzsS*iT5jj!zw-0FOpGYjMhaSddi@YZ1CuMH{|ybX zD`d2nnY8@>lAnLm7#-9w_O*WfS;Lxn(+}UKk3SoE3TW`RA$x!F^M_3b<_!$PO(bA` z-U(pLhA?395mpcu6f4z9em= zz^O&luXXN1Gbxs)xS|D2Ct+CIemrYcplntZYU`D6MZK)ooNCiQY@11MBkyZ7jBV|` zO=Duwezm?`#;^TULc7IO3r}eqTm_J3?Xb`2U{dIyx9U(T?cfw*rT>I?1@rT)csB(a z55LaStL?Oq4nNkeVBN+5RvN5A7fC4-Jwc@@63ov#0nrLHv4>s67DB9;?o@@Ya{u zL*rp@i*656qHpnZUq?pYYD`~iUtiB*U#CUi5M|?lLjO2r--uuTlzBgx1D~qzotf$% zWgU2_JFuJ%mfHc;c!=oGz&A=FYScim)4-}P#CQnesXO@D7nUaqF9Gx5L-2CZAz~_u zGAz+%U*~~SBbz8Gm>);74LhSqXt5m>ij9wk2A{4Emd(ORs3@Mh4w3tJG72{u8m7X3x!!}an`u0gVpx`_#&W2|zAGtj=biQl^OpCLvlX$ET-OO&+bq1(0 zaM$TUmi}QAy&(>^A&5WRoUOyz8DJM3+fyJ>{Y7GoA+yaKceVsDzlLm(qd5}zAPku7 zh6zT?M2%huuY4e#Rm6^RbthWmHlxJGuv5(rx(B}I}r2$N9PlR8qh zJ5Q76W1$~zlPBxFOJf@y6)AZ*yJ)axw7S zS+Zmtyy4eiD%EVFE8IKt;|di`if+%H@>#2)S@ktiDt6L7woiQxq*T9C;g!>E{%b%u z3Z838o@zOnLNyDp4<%U6k{uz*kD4x)&k8!df8YN;yuYFM8rkVPK=rj5)+bXyEHuiJ zoKt^}H()LsIf%aVLFr?ox+2Mx@5u9C3sM6OHw?+58X9gmlS#0*`A;{XQ42?9!#q#m z1=%088|R)9;n^@_68ayW34bL@e9-5Dz#!I6XxI`A8u74@OF4#R^@Q!OT zE}y+e&?l4ApTGNj0TTn9<_sVRyEb_Q z-T%1!F`$WU_B#{4p?Yn>^` zf)bhf?T*)8VsP36_mi?iRS1m{nmUAdRN zL5dyUc)ryuf@jW#SRhov}o+Vv;vO?$o&DnM3%g2u%qNHE+zj2)1 z6u!}<+ywJ!+Vz{+jlqy>EB`p#H+CCOx-C2td1l6jYP7j=3*toNZ$Mrsx}Rh~?q@*W zC9)^nH)h*3`y^{TOL>e!&;F=%=`DWIc+vHTvuiiC9vR!vdzrIiz4D~$ zglW=K&NG8A8ogZ(yIxE_L+vJv`iQ^&(*PF!!*f9@N#dD*)Rbo_2=piZVQj8^y$Z=CB< zgY#ONYw#C#S)7`zQt5M+3gm4N^>{a2aOs8Zug&d|v9e1|rUVxAAI{*PbhJ7%ee2GP z#xR5nRXy*BZROtQlyJ>NJ&G9%R8dDy*72|Ss&+w3sF^8h9h~`3s@N9>NmSZ_#OwR z`Xz~RaBwlRv}Ojb9FmLS zg`z=XFf!SzNdNW|Y@&|T{=ViD3m=+G=}7+fRfEdu6!bYNzq$(;E)ptub;4+`jb&?W zh+<<5TyOD@U%A~N#VLBU!Fws}x}trs^^rH}J095dTda_0LPxS>MHvaJx#+dG2IL(} z1!-n=&X1(*yl-_52chm&!+6r9LKqk+hooYzyOQ@{uk#g$F(^|_U>;bxIfM@1_m{$4 zS6F)RIr>@>GyezYstgpB<y z2P+(M>9Ke%Ysdxu%Qd58zK^mx)K;Gf?4a2>lMcD#wL}nDs=ml#{|4lk(UQL}mk+($JX^%hVEe5oDJzIK zEjQ<`G;@63&ZWl=fvQnC-+VNdq%5tSURuRyQ3w=oD6&m&WjS$obKLP;eEue#)^Ytq zI*X;&=^RfAM_<&L@!>D`O}Mq_9|c8v-NyxUn}rP0KvRCMwI!PSaauc^+8OUkyzb-m zG2X~$D}1-l4<(_r{L1GhGcwEK8Pt-zB+{^K-nWA<%+L=kcZ{M}D!uUUwhkda4QWX-`~N?S|Q1 z;=D6oBIG%h@~_@QN4zcEDc3W)$>`yu!MA1=bBU$gyDuia)UhHika#2hNf2sS!~w_j zgNyZB4F@No;=%PH^3xo+T;hNYgzrMG`z|Jp=XHW9u1jU*Oo`1cHbrpxuZ)UUW62`( zFejGuPO~Ec!`Hh)`qHL+K8_2AKMkK4xV9;tM8#~QQew(?3mFpCga0hn%Y8nif$lNR z^_|qqu9BeQEyq4M7eCQ5jiA^v%Dg1Exw05{_MT)GTV1iyIg~Nw_%{yyktIFZl1%@& zB=v?2q~0w@RJt^Ok<70_{WUt|?{v6ss6b%l>fn8^2nhG|meBf~w>^H-x8EI&lYG1fw zqIbdMlF9k2_QqH3FFSZ%wQ_YgRlVip@x_dy%~{X zACu#p(BzexqxoL-{ZJqMSOX2-Rr7D6pWjATxT0%((MhJN!S)xzoJ}5Et0sBf zObobPaPLBazeht5Ix*s2bwVIM91ZTfwM44+C94i)UYablohoqx_uaxH6T;)t5>um+ z9%X{JQCv!HVrovtlY%D&FACz*ic%kyr#=EV-3m%y6+N#3m)*ckwQ`T3x`c}`;A|>YE}+=@`8pd z(AI3&EK1PzBg03H(Ry0 zP}|(x+1lRI-qqhX(AwVhacF4l?fB%x#0T(N+Prnxy?NMua5(&VZ)A1v!`lAv&f)OE z;q>~>hl9f}?+3nq{jl}9bL;cq_UhQq+K0W>vAy-dy{)%<+mm|-BYOvv^Ye>~i%ZKZ z-9=NFVCsEA7REQx9JyLFSLA<@{T4!|cS ztHOTNTCsN|;r(mZusY|{ub*E_algFS0Jfar8w4Of*(fiUYqf^bMVz<5Rm^o7upyEt zYb&RclZ0<4r^!|6qCAn2lt>J4m7D@5?K-!3_e+*i{q%uoIa!rCmwM&}I&rLs76dPD z@79+o?^dYZ*|7uCmw^oMxSL{U`M|o`#I26OcKLP|jcO)AO#&GsuMA*fM40fh`lZG# zX)$5sX>XLtOkX!Xxe)5HGHzAGcK@RlX_EI61o_bmVC9G;14J!}`JdGfKaq!EibFVD zfLS~pf|i?uzr2m+8nID54Ke@IHp3yRR+F3I80jQ&_GmZtY!Zo4e(M&Gx8xqzJeiOq z9Dq8L8x;8PKukMo_}6x(fx?tVy7Mbc%{3;3Q>DJ#tfjpL;B+X{3z6qf{EWHwJW)Tj z(!(`VcA80(ikVoTB2JLlVHOHg8^QFPTa`^D#X)QtKb(Pb^mNO$U2&jOH(g19GTFq6_# zWPIkjfp2-?_}mB3np-0(S9KT-DP4p0xW5w1Z=PCP;usFB=tRjpyn-B_vE&c}}Iyt^L% z^wq2Tn1sGp_7u8?ev9R*QDWcP_RmtanpJhh-y`%^$Q7GZ#*Tc$Bu4Ul0$UTS@$zty^GLh9z5dFH7A?ZFLj2d{1Xai2&tGhWMz#*H(2AGG|c9y@VFgc$( zsFk}dl@`iO#fovrcuP8Tt@y#+Wu~I21&+Jr!3HcCG6s^L6wyDQ(_$g1i>jm-P)E`? zA3>COfX7;7w8U5p2@9n+rAIVTCN0>jp~=Wlo(&aCRVj2T7l0b#rDLm9X|9)tCeW~& zLbIWaS8<`D^_1W6v{>eeAFF^CC5 zyD-1hy1_Mm(hc>9K9wbw2UK3 zr12Lf;l_>7E?$i=9RD!60sKmPE-Mcow-`Cs1ueStdOkjwQKW`+celRJX5y2DNKIGT z6E?Gg|9uGwfNW0qFKqq;X0(t3xcLf#Sy4{$|H5W=Ia9Qh!3mzF74-fP`WVlQ=>Nd; z-QR=;<5T~JXWf6{+2pFdi<$agRAxy3i^`%I{{VBre}eg5C0H%`A7H-c8+O9x6Dm7J zB%OfyFDhsLCzVf-e8S@s7>9`d#p8d$*c_d2{Vy1UBo6&2iTypm=n_cc#^_@hH$-0h zPabFd;jvF}L;{H9KRixM$v)xnKVf`=;h^yD{|$+Mf+WtH{!bE57KWU__=LoLHBEnD z{9j1?w&0$Lj~Pd%LrLQ+auFb8~xlfAeoDgGHkMTO|Ma{l{zu zm~b3JA|9)>;Oy%^*nB=}$&;i<6f=wGdbj7gt@UpSDiQL{TF?A>ELV*<{$%zQqiu`7 zB+)9BsRGWv_EZ-P2m3wN$<&eJKNF($?6`r{COm}gO*EU}JwUb6ew0+N_*I#Ciqj03 zpb{6EesgDS?jAD=i*3N{KuwwPrnx|fKV08W9Me)BYb6q=J0d3EmUKg3|A1>Cs3cje zC@C9j6T)jx>S8;2GhGPD?u|;k6ns%mJe%&vskMaWhgRgxK?hSl43VTFSD64@*fq9z ziQrme2L~3$f@haCCQRyFvnIbbjwMTYmBhFFH4IRoG^G>?-WhC`@jn^Axq>>(*|>iWd#(2~*$3*ww*Pkkwf zQ#pigIFtiPmF2jS*q;P+xX>$PUY}n9+PgkaWpX_YwQ8v;nzmm2=IMJe3!*QR65aT${BX*%B}A z^)T*SFRnQ+aP;M?2u#RTG0f?3Pz;Mp@GmkWOyDqi~ zhUxZmF3)}%esrnyW(0cDI+8l zNPhY2qd*+2H7@rl|eX2XK-X`_gV zTwzhDxgdDb>~$DECbAd^VOG!4BrXq1m$N~lD04`~_^}jAxg7p`F>n&jmS!YCUNaFU zeEA3$%%oZ#5jFXM`u-9Pw>VA6Du&GFiB|i=)LV>Kp5`(@)*oTiZ^f9`_guuAwHHls z^V!(U89Htz;9|KSBqfmRq12Ees0B{1zC8BbE=@&S8!jty*l!=qe9YSa^8)*Cn>-IG z0Nx#=7{Q1}FiFwU^U^U0(6I=!(er_3nUO`BjRVcbAt}fp0B*9QxX%iLepw3i%WA*< z@)ZQ5Jwnc%IQ83giQd1h(!RZ(HkEQ2(5L8I-Z z&IU*y8)r4eLXJZ4C6YqTKs{OHRwspJhbl?7tkGr+=Z&0Tr zB%%v-jZ zhT8Lfkehd?w{I9Cs`tcGpA8-dZS`?(IqKL}yFX|I8LpZ({>N6E6wR7G+xP=;&o|#( z+6e(;gjh!OABKaT`jHko$sC<|RWaWjU1Eo>zIW`VLvQ`%rW1W`omlCCK=oschaEHg z@xuTRu-m(?Z0KInF*s;+D z@m{iYR7@b$f7t_F_8+!)zIfSNUDQ=m1G0UoHuMDSD_!Y?o{-)C48mB<_u-n|iIQWN zy--V7&m$1ZL8^E4yz3u&J3RdM?c0g*_cMQiefkr~_Rhrv&~EpDgg-bO{kk^-8ttF| zGTMKGy?1Bz?f!P}{{Gv4I%|;RV9WQ$m!%Uo{TIErPdxSV*5(%IssE<;*3r??35`J% z|0MrA%*@dCikt|0Tm~Mi1rYIEd0X!A*8=vp-MOJbc(pLmn>`9kw{rEO7)}`%=B-_w3jN-eKY;AbHzEu~7q~f5K z5SX<_u-7OKg~>qMt1iTxm!^XfOZH_0!0qikn7V>TNUT9s{#JOHcvmojfoP8@T|C!y z6rqf-=cLAUEFn8&yr{^Nh+j{*ld0QnZ@~b;S6&~OzK>m`6f)7s#l}h|Pg0UwMr#+Q z*_SwQPz=F{ACQPX8t)>yvzUxxry1FANq!fksS1;p0t38BLH2~+~&L%v$4n&Of*|LXuPT)6BPuMySM zn@T2&X)N}f!ho^U929WqsnB_K!#b>=gQ}bh*8+dqQ}V35rv!NZOGq3;S9fHSZlo#{ zmH)68m9}`ArY|>M;rsSYfz!JS!vf-PVu*eh@=+;5N#Hb*YTA1K6ylt_dQzBDtNMZp z73WlMh{(a}MQZl#03X|g1O@sXp&vFO21;l~Cwgg~Mo~K3XRi(%OL@+5;3QCov+icW z&{HbHyO_zZYFwu`21F^;37D81HDz%brKNfrFLfU-qTrcBN@Lq|J{Y`)a-2H76mVuN z+j}J2vBx2Gvz*IE{y_Ja{@ctrxeM=%Uzitg@7!I5Hd5uO8ziryc}oJdK_l(j;b?d}8HQcH$~C5>Uuhx}r3Dn=rqR_a&p*Vi(`BhJ;c0{BkV zpOA_>qq*ikB8%UsdI0KVlj;zC8-zS109+_m`-XFc0>rcAE+HR?URIL$*Ux)(`Kl2Q zLLvp0g4qopUQv$r)I8Jc`c^w}o$;PoKjLwB0Mq%Xy|+Gm+Riwe#%J@H5qITKdLAsb?WHPO2z( zx*FD3PhE|K^uom-l_-oCUx&olkkg*(S+wCx5k?v(wIub6hgM*ocAXawet1#_zIOXk z3vCJ!fI|K2eBc41Agj-QuYKj z5?a*=6iDDVU;Jv;phgliu?1z)c}58nMzk8Au$DCXyrj6PfS|D~+C=`GEhE|%EpSWn zte4cWWcuqRLt6yAHE3#I*8i=SE*ok6t(WYq^>jeV(+4U($f>k#CWq-P(M=KE{V_Km5g(dvPU7Pn)vVc3Hy)8c{GEn z>GF-^559C~)Izi!dr{Ep<^5M|9?^(Bczh@5=PSGcq2pz##Gc@*+e4;iwNna+* z4E@+tCf`B`luu>1BtQifb44TAUKhMa1iPC*wmc7ts0wexJb#Z)|MMpz>e26qklKX1 zow(zxL~qPxP(F=B=)H|KIzCT4b(l-FST1(>`tX-FNX&oo0ilmaBl$R6HZx;UC zDZ-nRWAXD3`VKBde)YkO~J z&)CS@_s0(;?~ip<*G@<0@_yIu&yRCo#+P@;e;j-p9h#s1wESgo@$0*d#ePsh?QC`L z{1{tW`ntS!ypXcAv%k5#w7s*qv9k|Kqu=L)DO}GK_<0W9zdup5$NcOoc#kU2>x@4` zLfMtg5&F-O6!0T2=8J0K5U4_UZP$q|I-(@1EY^gO$fB4m|M8L6Fa#z`-$ia&H1y*5 zBd>H^u}MBl>eZ8vyo|`~C+dPqr@@cBL>8D*Lax?ei741DJg_q+K6GkH_wvYu+i{GA z4S^W560>lqREgwW&VUy>@Bg za2bk{Q=fJ`A8O7)Ib@z(;3TFI8EW40y3q1}5#D!mV`&*Np@t;Km z$8o1oT94>n9NFz}?L8`bfk>9W>j%Rk&jcz?r_2O3tZ7;r9_?Sm2f~EB5`ti+#c9E` z2V=7#)U+ua=jpHV&sj2E4>fRt-A$y3R(RT#YcM2fb~$25#UoesSKmX*K#sVjd2=3P z6KyC|8ylg#+g6SdRpP1THr%(liFe-<8jFdb*qM)nK&=2u)m#7wQ{Ky-r&bLX!fC1+ zTW=VqTkh;7(2oAR9PX>IzkVBE%?bXpisW%zj>rebe zPRCIItm&ngUg-~GRl_Y(!s?;K*&Q*#vW9(%K>!j9aNDdJJodi2R;g;l$W=gU!Pcy= z`lH@ZMM67zB_6(jQXhy#kYhSj^=5Jm6_!>BqrAMtfFYjVJY@xuf%ABrKV}>NzRS^D zejP0_sHKzu1YS_$84K}sSjGaZN3ou3N>3bH;9f9WtAg{4sE=S0$XV76K{ zHOk!)DCnu?zMhvda{$}-u~s;hs$j1Wz@A-s4!D+YO#}>X-i=wc5ZR@Z<~I{=VTDKd zyS5}lXA4n~nhHd#PC3)7q?X-LO~8lGrYmPQ6@yQe!eAbC(bGUm!HO|KQq`emd?Uwz zvpF3rls6K9)CknqSUtXf=p$_b# z2MKYZqJ6%~%bJ3IxI_v|K_?sx%Zj&YF4OKmGbgJ;GmwnicPI-%s&_R{tw)i;a$qZ7 zLBw}3G?0244)Rd0Qc*tXvM@&za|(dm2cykaO%tLO4Vk9|R0FYj#MJ2--S1nlR#R{w znGQDcq#WVMiiNb8P1494=>$%wA*!}vf-jArW(R7ty>(=q46fYzUZK%k+1zw7q(ByA z&FmLGLegclRM3{@%7nRDs~=hYOQ8pxarRs+7o^~2VR{Mf#2F%PsTq^75o#`j3Xr zF-RIGz^|d6-TycQmCwzIS8YRHX3LqQQES!(O1D!d`gm1^nsx0)knFSMgGwd)jkkHf zUhzeCC4}2Pa*?)Sb<4jg*Gd0M5174kG!%L;Rg8}qq0u9evR5s+1!1t{h*QL8DTg9s zBD>~*h%v4f`XAa{_47fvYNm8nf$?hRN^-IU+Uw^9RA0{yown$*A{Q-*xVfSBcqFL} zinWTry3Iwq>Pjje;Hk?D&%ZQgzkEU7t&JOsN^`-O>P@O#K}(NDD;9h*$oYIxbW`1( z4RbzcOzW*Hp%eueYpIjG+tqkhQk4VqUQkuAdMR&00h}@mS1#cI1{D@a&uTp@5|M&P z2(0U)`$MEe=zT)iz7Hri${S?P58& z8|T^wFs)lg*qKY;_|>ReMX?2=tr5T(KX0l+X+2lYfQN-d&I2efa2OOn6y}jCsL}Imyahr8^cg*8 zavxPBO-K~jvr07PcLOT3%YP`{3U#Xepd_MW#yUPvbB&4pxof04U}(|;y|S)|4hp}2 zNKI%q+t%to5TmllSdPeRh!9NWv$CBlKQo9YsR>v?_>@|oPueLo>{~zvtUJ)M^D zqor9Lu9}vZn|DIx>jk#2*R;*stVfvpp=q*eI@G*A$N2imoJM$GXF0kXV`s6z|0o64 zec{`BV$tDesw;B6h;MGGA6PlWvufiV1Kd-;SbX7xHy8QpdqgZ1&SC7lVd!hyg)+oa zMn-xgS40@wWPhzZ%!$2Kc-?Jai0Z4^7YY-~Ek^J!YV{gKe!QO+?39{bResoON<4S! zC0*v4opz7$>^H7b`!GQwfv%yo#`Rby8(~fkay^E@y$<=K4cu#Ted524iN9Yk>mg5p zZU`&n_X{SYEG?q|sMOi`k7YXeWXXpT;1*Q)A6*P!*2fJYs)~>>JtK@^6)*wCI=zVN z$;{!OQU*zBjgwLaUe&9LD!PBF8FU!Y+G3($FN4cjaf9CjhsHv8K{*cgGThOU0*e^5 zG}JV-FKZjBX_=Z`x}a@-;gXq&`X$p#U^|1(-|Y;SZ`?a6Xz;MG_q?U+eA^W)XrMbA z$NsyQfmSc^pG6ETmrG7s7})HNTNp&lk6Rcd?jE-=puM~QNb^5k47xt0x9&%Q()_+} z_`kXsaQ%O}7;Gc+og-fT&mso>%5Pv1gBw`HP_+zB7+UwNTKDZbz59N1{Lrgw-m7QV zb!Nxy^RE~%F!b-G3{fWN@T>C4nrKj|XPC;R-1*(hU?QJwA^*ZfB+lq~-7xmH-tY1S z&66#|!TT5fY#IL7@`V>Mj{h7oY)fzihYa5x4;iY1Lxzh_9cN#7%s1H0ReEm}*#5_; zVdBI1u(ac((WCULlP-pmhjAro&nk=K3iC=p`3{a3f(jnoF9b#W!{qLV-&-mdukvm>skE4^aqMSSn8(#6^caK&&E zpE1%_z0#5Tbvgso=s)_>7rP7Rdn>_4hUK@f{#r2{E8qJF4jI<9c7Pgv92_zn?iv{D zAN}~YbL{QpFt}y7^rL(4=ZA%_&udFVw z{@ya&{ki!S+%o*Ky?bz?)PMbX!8}&#pYUb?r%r|}4G}b&Ny72Z3npb0(AxF)oZ$r= ziF-rWaBt4>oFRicnRqKU<@f~?Ziyky)jB>VN?JEF&iQ;E(tcU;Hs~iN*dClS94fmG zD)rv#Y#<1_c@0$RIi{7a^Nz%V;GE$b=Kfsg-q$Y8uf2%w7YNprTRr#rmATVfBRt!R z3!#nEt=;Ttg9aQT`R-WE56Yb}XIFF+Umh(MvmOZh+8Kj*(cw+1XP&b(RwMR!p#P2d zV#6NN4}0xRP4kBa_wV`x7V9p7#8@s-{cEVr#iEp(Gwi$G9!tJ#bA%6?I12D0l}JcJl7oNiWO}DhY7qG22zG9uJO~wYgxRwUiSs9( z)6iKZ8i3KVeWI4-6CFix+Q^|gf{wPg`ohkKO9T_ijNxZaAGvbUAir9+CW!7Xd>X-V zzG5~J5rJi&SBl}Wxxw~wX_nNR_z@?D_8Tlz2cll17BAdxPXq%D59bVm_sAFWq$`Ur z@<=w;w1O4i+lJu?z$PmZ8$ z%_bxAGH({mfj>1ap-FH=16S&U^NFq?iTXJuALg6|)Z6AbB8V=uofR7sZJ8mm6WR=I zQZS@%JGVPwwzNee zxp1;u0^9&#yn3@Ac1l!YsCF5iG%))9VLDgv45y_O6e?>b5}^Cc9RKDB!-=Ke@JW); z&^Ue|{fH7MB_iyoeav=IsC}k9L2no;?<`0-%u-&sBmqr3Tz4=yL+Ag=K$0#DM?~HP z&8b%2M7dSI5MYebQRkx=H8@8^6}>f(PxclD<)^K|`CH^syue)hnRlz<`fbIXJc#TQ zHEKy4wpX>!UC_AXFk>D^P1g^4FZvurDhwn^xoJ@k6}=6W6SgLt_Gfr(J|;#I zSq6v?f38zL5(H{i;I_(pZ7-739=o#__8n2`5O=WTd3Y`ZV=zwMb!bHSz?q8ES}zx7 zB|Ww|t{IOe)NsD#LOD|fH4{Bt)o>M?@4mp}&~@giI0KDU5IIXlB#CH?hnS0r72D8I z#OGDsgkFLFhq$}`in?L{ML#nPFhk7@-Q6VuN;gP%r<4Ms5(1JkbfX$1{3W&E-#{%y3)rE zg5KTCE-dy2vr5cX8?s$J1(dKO2-Rc+@VW+o$eD(KOQ=@QdTuedr#Dt zl-7|GpB0l!F}2HaX?-Smsf>7&t(b_yh%#Ev=)!FzTHE z@C67pAe2`5fB;^PuQ;MRv_a&Q#P@&^Hg-XP9)y@WVJOkzS5KDbf~f>`04AG^gHsfS zG-QS%!S!`F-r-=Ha58&>;TZ;Hhj9D~r&nB}m8+jm>+S0cpqV0K>NNcyaj_ z1D%o*_d91IPc5k6(aN`nB8ejrZhTIJ2-1SmX_)#n7sZ8YrbLz!f?cbOHpbFUp0cdQ zu=a$4Ii3q}K0WfGSgmLyFRUQVGtM%;gqFvqT$c6RY??t7Aok0Gj9t+``vM9$W&&xK(LJP&wyZjphe3C%}39Hsq&< zkFl@b+z@^vOqJ+T=amihF-swDY@XGwa)Wl8?Zl3?=w(%TR75RKxxJ12na%sQL(JlY zpRH|*r`oHz#bPSYuzBy5(~}&or&Dc0&Bq^q%kNY?U0#@}GrqF)*Y92i%58O|Yz`^< zT3aTO7j-enI(yTfAflu_nOT~Te3;F$@sYLw>dS~w36M1+PPm1dmw-%`5dh-5?4^8& z1H{5v|5Kdyn2S_7N(2cYn(+icRyv~{qt~b|p3&`uhlFV|B7v6l81&(FNhNBVoTgX9 zMq_m;jU$`9KIva6Iy(XOY8(8SS0nZs^%*lGTaR0>P@~SV^;z3$+oJPV=q~j7oQsid z$(yTjBtb(iw)&1N)%8TUMngW?=*|&f`ohC(*=T@};oskE_%VxiGp4WH|8xdfj| z71j52GOwpgH9nOaj_w(>UVpEN{ZwhEzHc&r{iA8@Q`OtieT$pxnNEVwHDT%p)>JpM zgBqXfQb!M-i`~pk#C~olQUCSA^ycU6*yqoUqrYDJ+{~{KG&T*WAG&7VEbM4Bw#q4cZL9zGp1)bT9BXX982$b3=4KfHYwE<-I0~e?U4dveb(4)9g^Jy-!sD8H z*))zLO>fu8Vdq3iF0s8>H^9O0r{bYS0z-Y(ly@kSC%2pf?L%{NhRg0f!<$|U*lN7$ zlpIDl677W9RMFhFgpiuO8=+QAngC|IgReT|^^|pqTfLt|4ia;kCcenK1cI(bgL6(w zKKwDshw#``_f0uY)@%utv@m@{k!>vfy;v1#$2eOgeWE-}&SPphyl3&3Rq32O_ zE6IzwmB6M<6rFms=8<6?d_?CUu6S<|WT3Edlu2`Ycqp0BB(QlD=nviGsYdW_(*L0f zxP7AL|F$J;<0xw&9D{lrlqA1$TDU!UK&OaU>|0{-+GbcD-))+R!@?P6hgm$-0k#ut z(1>Fr{UImOtm-sOuh}4DH}CZVrTv-ao@Ssj7Ve>~YgtcoDIt$IpCoKKey2N|mA98z zp8AN(d_XKyrfo%w*vCg@8OOiVuk&@hkke0f7ZrqWD$>rUA_fg5fo1Z6&#}2(urYI|xJFB~K?r}L zZ!$A-u7nL53jE?+w(z~)x5m!;r*OY`D?@puz$qaSEFeyvyCxyl%7kDs2&eV9Ym$pv&-hodA+FylJ@z!P%oTmpl5c4-1d=wt^Y6tck z5MrGlirE!ER;`Us%B)g=3H&VZG3fYPy~jTHVS(^^0Od|cZ7zV!jrv+5|kK4UZtl-H^mb^RIYi$7tEf3@lb~u4q`q^S|dW3 zONUYx_*;?$*R0D&hDn^;ATsKzFSG0U+Ab0253u{KRKNS;*Y*=yd;?6 zNfb%1pVi|a`Lfx+@x7=u|9ccg#FOI+e|S>L9&ce`AM zkeJ4yAnAx$P(T7>BvS4wkNBaF5db&zdtT&Q*h> zD+rkJvpHWy{vC}>cI-9)+8KW-f~bv1sGTc}BQNqbesJWFFI$$wsZa~NrMq5)nd6i`D|`DO z-50{Zs)#boC(kQU;4G#@#AD)Q&_dk>RATZY3b`Un$*oGz4Y!}u-DOn}hI_Hw&?H~u za-xS}#FM4B*Z`cpG+fF^7S3`&XZi=}v~xaaz|`XzkWMa6_Wf>IXf51JG$G2nj3}Wj z`fX-YOLnYX>3l?K@J_s8U#SU2MO=9$kC!4fgN$Z=?!rd7V}yZ~O6hSpQn4J7d!3CC zDPQj`w>rx)YAG_IEIKuj<-96CSA^9@R-D>Z)QVQz%A|P`1w}xyRN4SiXG{m0hnK`eLB$Dl#XvsqADg z)1C^E%*XnCtU#;S z&j`x%J^wUETFVwomwnLcPE~I$%4#-H&ey(aj`q4uFFN2a=aIduJjrTZG97(_D-r-lTsqj7r4~ zsRA??RZtZ{_F)S(5K=hu%Vm+7Xh(ub@N40kcw8}W$a}~}hJ{1!HCfR;1x~kE76}*m zEF>CL;;FAgu%4@5IvB2h5;wiyXc7YZvm#G-OJLZSPu!IbPV8Zc;@=~~6;VjAQ-GgL z^w_HUuY8T8KJI$$BSuih1HjA2PS8JSX{J0*(zotQXn9C9gl@0Rl2VG^OlW~bSC`?u znHg4L0p)S4!EfQsdBUYPsv;8HqOA_Gej}0d%Jd4JpRat#$&KKaUf~dw3`~6>8k~Sn zGoR0|Ca0wpZ%!VjLe(XA@ByrCtR)ZD@{D{dSfd7MqhRPstl+B_hI_FWWux0+JJ~LM zYAIw=vAdEUI1EJ$e&(lsKTy+FoV+m#zWlBWh=PfOT84Z?+X zsIJTR4(GCQlf%{E$8bLq>43LqJ^|?g9PlC1AiQT;p~0|%{_;<>fxloyZrDUFUu$ppblw*v7w^+eJ2NJ0!#6}>rWkXM;IbU z92na8X<1#w*%(IB0mW@jJv%UV94l&HILhqn7c;oPS0@JXjv30PPBh0CeWJtdg*-^>_uReMR>P zfZ%=wPPKF2ewzvREcZt}?ovdmV>yQv4xh5{TA#btq78b8ryQ9-FB7S7HQvl zHMZfQvF+Wy&5^UY)J+JM-to--)(ZHXtCRZ{LiT+)X;%j2+v+ zwAjt4+CKY2nBKmdOS>n&w99$CoBwXlynQQf2>}9Zm)`Hyyk0BMA^cdiQ~PdT;q@}d zs&&)Se*67OODtjA{eExkdf_|5VvB=eg1rGr!lCwq35_+)6vD@}zkW#Wev2ji{_fX; z#i}_bXp#0X=>FH5#UWhda4YA~KK5{r_V8fo@Q7gZH|_69$=|2%e#^c7eW`J9-TwQ2 zY3=U*cO&f)=;;xQ#u1kP9=hrh@4+hW@=?b95q$ZGQ0h3^;+XX55&4JX^;iLF)G@66 zm|k<6QR?K_;)M0X7W;>j-S!i1)F$uKH3%vffHMK0TLJL`Fht}2;2)hN(f(o20cyfQ zlGSU{POIS)&}?a(!Wx{46&x+Pv#J^#Nv+eUcc)~uAZuxC&xtdO4lGT2ph4WKk>+Y# z?rA~iX+8~C3vd4m^9NXov=<1;3&MBj+41M<XAvs70S0|{)=~BJpyt3wgxC6vhgY&WG za^&}BAnfM-Z(ubH+jRvK?0okU00(Dv=KTql4i$7e3TK%3-*tvYlWTv^G3bDSo$HG6 z403_9;m3(3B=`*O)*_L_W%>_|Ya^9kX!odAyiVDe`?jr_D-&XHz&=%~lqg5_+!6zO zjItE`p~^ut8J|W}tBeybZ+hRbMm&m^1(&|eP&SA65q(YFrfS;5&BPNKO9eGbtFyz+ zdBgSDx+miVBCU+F8k^ogKkK>9%rY{&$#pcMARt7C1?sB?^~341Kv8$raZ{6R4!)Kp?? zY;EpSg=DPRl_q=rLqWXN2FD&Y=UHJ}lL@Qtf%(n-Ux(K>6C~mEGN~GiEv%on&~=8@ zdld)mIT?Z7d2BmIaWZGLCyZQS!#(TbAc2FS&Q3UWWXPSk<4}jTq_VOcvF=ECPo4Mz zdvGzI+F(@Jln-2@gtmnfkHn`TT%pd4I5O-mpUS0$5aZNkh$X;Ry^QVoH$?2Jb6W!P zWTg|1hm(F<$H0ae#GRlddwWn%)S)NP!He;2kADY%<@ril9ueQbTSW4Ustbb+v%qFOHloAw4A#y za!Q}!)pwmhC51`7dOh?p2Ys#g?uLi)Z{DyA&v|x3+46&XqSzAsKzL_~JdeNFgqf2P zhm3_d$$uX4P1BC$u*}Es z@**d9!W$n3fy+(7UlKR3;Pu+SKttW-sH>cxwC$Ja8Zrw$zFpfxS97@&mN7qj4C1cY z8)4LbHPa82eVcFSmN0MqRQ*|oem2e0cPMKsNW7Fb1^iKHG6~sqzAwmS)Z3PJ#IIqd z*hxnLIX-m?#^VL4OjBB)&>B}-9wU{M=oWjjhf z`L~DX*xRI$1)5dHx{6O0$0_r4PT?ECb zIk^2H5=;WedSrx5c&YM@O-l<)GAAMM^p`86wSAb>!fxD4-+DInSw&&Bnh{VL5u>cp zfY>61W)!4{E-M@&^*axnwW)wEyb~gI2i5d?!3;fgwtJKoKgJShM|U5N%^O%d`HDJ{ z?X-bS5<7h|=ct~pCAUxUP8-*`Vq>o5J~c|PTjfoRy_K{n=~dW&^`;f}PHUPfkA{anFn9Xx6FEq#M7jVK zqn;D@1%u`6fCM=L6yO~MR?-@fAbl9{=u+;B>0P(vPFLW!lXarHJ5^(B$8TFN3}7v1 zubeP{#;MOr*Rcw7S-d~ip|zFC!@K*fZfv>)bkd`Wz65%WMp<0tTVfyI^%K0PS=7J2 zXgztQ1fNcTkw;mBKqLxs;g-5`;2rr8n;$T$+e4uJv+Ea2T6LKmqG+O!h)}OtZKqYjR|*)pf>j zi3MqbeGH$@XDqvK3V#1#9#(TgKAuRh^vjnf4HJ zJ|4%|3Cd2y@oB2dS6hEexpblse&o35qz`p>L$@b($WYtsa5(w=s`TP{(HEKL>OR=) z8t!bO@n5GkbdxAM?Ck`3&Erh8ZpS1KA9@+8;JRNj{n*J-N&w!+YyYvK{xv(0ch?nT z*&sm03^4>T?BVjqa#B#07@>>03H^&G+*xX{rM=_rz4QMbgkgm&L1STk2~H2LCIefJH-zWwV-*7)XGNsC$i&*y=e2 zj$jl=!i($X>i%M-$Cz{;hB*{W48r1%)w2?8?#IukN><;nqJX58W35&1pu z0_{DUJQF(UN!Wx>eCm)|5j2bokO|xVcX0ou^AEKh70_ay@-Ld#A>-7cN7g`*`$lds=G#GvDt2XTJGEV2{FK67ewE z6qr#Zp;0BdUMY#?CvxjX^xX5Z|Y)w2XJlX;9BS)hXIHDBDLbj84&&XUQ~Lz-VT-|ma%F@IMvJTW{f`7dx!&JN5eLFP34cPG&wywSA%b52P?X(D<*i%M$H zEBasKo|e;{*1Cw^RkUc2>NyUXyb7Ja`mpxbvZIkq<@hlg#-J5Dny~j)mJHXHpjR4A zV*X;7?ttTw@U@|aZ?7GuLXNM>8j9z_~CzaIdnUH~FARMHY zfK9QJB$l2C2M8&?$8n2{=aDx_PfM=}1LMNXBA~Khpk%TFn-~Yq;oZZ+vcs3DMC)x+@Fo{)tL-a7+=9*eMNNVhbt zfPrL$@$p0vFP(?Mrlps`ktfOFj557Ls~`CLXD8Q?4~j$5qww*CY&M9GG?ZoS%_H{*8s#;gqFRCPB0UmjC1sRYyfj- ze(?iA&-l=%uZo4^4a~BEN?>4(42^C$Kuh6S>h91qBW9Y`5FM@=Dji9hJp%8f3<+Hu zLWtJTNAN|dnCua=d@&qj5G`9R%*1#`6b=;ggDWa){0hVXs0zQ|Gr@RXuLuNKx(p;6 zEC4zIPqlRI<2USWfVkZ9`Gl^MrEX@ARv-;kBKS3}F_`CA(G%@=Csc)<5F+AYAX%}q zRhJFx%j(e0;O5bg4Kw@UEEQzIv*PS zw#1pCGVhk{m$yj-&rv4?fF6n}>U8qGd=m@>*?@IN9whA`a>0V`Z%;>=#Y-oG$h+Xg z|Ks-B-|!RyM2{w!r0A&lV?t7nzd`c9B$MM2Iz`UN%gQD8FUfqw%#Ciyl0Y|P3IC@d zi-JrCM)n5AVEQl5q+pk$LG#Q$s5ADb}o&Pt_)a3h{meP76=JXHG)Y8=W+mmH%hwjPJHMTRhb$0o;C(BON z(ZLNymI`|ujt-U6as<(Gq!Eh7(Q*`^tFnmI6A{|ww04RAN=$0ICR&g72PRSfNX#m< z#N_rGLdT>2HJGZe6IHz{(4UL`x4xX)$e8P@ZFBp+myZFqr0@ZUZx z*XVNB=r0~A#pqTnuY$&Zim|pdil;T|e!of^eN#STSA{Od+O}!Fac?>J7iK;my8aht z`i*US4_x?8-JxM7IzRPan3<^hAkj&*$dt3dNTk~7L5#M}KL%3+Z7?fcp8RVtzqx7t z$6%6$g>w`J7*+jOVm1Z~XT+){hj})JYE?%%wioygCh+V=iT$b&?FpCfkI@}Yk{w7i zoeX#~9cMI=sWF+U-9g&G}Ugk{FR&2J$1YNX}5zxXtQ}c6?MCidOTfuwVt`Z(tLZ6f3eYWds}^b z*EI5Vd}?mz=l=Kp-HXA?+r`zLzew})c58P0bZPbcbPD~Rv$OvX$-KPzv%hnGczkiW zbA5aFPk0LK@^!Hz=>HL(3Oalp03WO^P>chKA2fZhDEz;}Q^8)2Vc0;rH+%oN@A7X$ zmiC9Iy#Hy)BI>{+v1FRThbf{%<-^IPVN}g8R}NG@SN?6t0x98q`Z(X{yr_by@}1P+ zljoncGfUOVC3Hg;?md*TYPBbvh-=~Un_N|E5R>ZRF8Rp@Iy^=6rKqWXdtAi{xacBR zzdI!4k!3M@-5@hjWAn8ia+)YeY-z{-6C%K2~3yUH*q*HzWV7{2~h@vg$I(6C_%9B+zNfoC&Lq5=da6YH0TbYs>_B5=+SaU3{NtaYySx;~yb3Qg z36<70>8W3N;{Y70I4CG@E-}U)Du3p8$O6DCG;ja_u1e`%%2uMf;n#hY^-8$Cdi21~ zN-cWAHcA%&D9PC+71jim24u2=&jjU`n6=;xztd#I#a>*)I05!n_K1U0dT9U+ACU@x zz?r#t1~`FAfJ>hEde^dJ1Ei&ijC@pz^F_y*Mrez)71@4q>#pb4xIeDc@gW2k~lQ<^aVX--#YIHi*S_$-S3UK0T^K?Qk&iUZK{ zkE%fSE__xF3?a(8069hm6s3Xe2e$`oa8E3J0lP1@3|4eYd;oBkOC56#W0EMRw3zpC zU~HBvHJj0<6uV5N4}1+M!lCTCd*3g?ssnc& zEeL5!xw~Ut6i&;K_Dd=dI>+X=Fv;R22g|_oNDxYY?=lU(u^^0vSeX>Xo}yx|d1-V){m1}wO^&4t-I%~kelMpFpL|oiGQ=tU<_0@LJNpfY5Pz6g9eTQ?WauOAD zs&A=ZB=lva)Yd+C8%WT`iORAS*!Di~lRHK*OM*zOCO23Ca^80|n@w zJzZ~-54|-vY3>0PmmL8yy(P4*>F10+*Y_{lXY|`ghMTjYMZj+THf@t0XOgv*+7+db z);eK0fn;$FyoP?l4uMj;gTWNoD^Rnw*XA*dtYI_>_7yFPjKxRgMjuro0MZz~n0zVM z$*Oq!*Fk<_UlD0n1ynssI&dBz*d}n+tKtOvafALSSxPgC{Kn{cAenf734MgNnds~i zV=&B~6^l;h&{mW97O_0%?DHYn=wnV{GaNq>u$2xZlrNwWl?{HL;JGX$GHS3U z;6NpM8XTm&glKI;unqW~*<7eTUDY!0ye{vTo`_cPg=4tb)q)tPzfCox(%mBi8 zdMEj-NBNUFKnnYii8=x;>$ZTv=7^R2)>y6TGsXjdxaI7nbmhBTnpbzWHw)Qw9u_Tk zubhG!q&Ilq`cA0-?kS~uu*e(T3d42s@~>V3y#4y+yS0%o`v&=MR;{+XS2;*AUp+Zm zykr+^qpe=h4iySC? z>E^>1&0|a_Cshyt5KAg?$SL+u-r?;I-fr{wGrolPJ#3o_P6SgWIq;$zUu*FV@8Nbt?2jC)wMG}0T>CEz`O`Q) z%e@XbKLJSohFRk-i%F(_n0|H;hyXxrbKs`L7UI6gxNAfmp0PqXy!y>5D;3hZrh5F+ zPoZBoh3M!4J-_@R91dR&Axumd**JeV2ZX=@=rVB7MJKHNNL7cZw)XyVP_z9cb^LZq z40SaT*M3@}dADbZx}F_xKW`krJM=-_tiU=@mjjyjCz+_*9nFsGneqGcR@B{5T*vLU zChB?~b$>bDaepz6y1zl80OUxJFcNHp#PUQ!(vUb!NW57j!6gz-9zZA@Kx`C1>KQ^$+KKC8S>KVwM7RcEY$UPg#dl|?_9>gykBxn@$*fU5tEl9K} zNPIR(@-j%8JXlsZSl%f3iD$4uN)5jM^J&t4Pn` z&WKt<1%+M#${DOe2=a0|LZnudBssza7&Xa6(d!DAt@n6f%TYuQQ_vHXeI!AmFF_6D zZX1l$0Y}p&$YXasGwF)XCZ%X3SNCd+5WB zz$WBrniGN0MDgRq`$2g!lmqE$n$Cdz`-c(Kox$++K7>Xm3kMiLL5~+;0ILhvbj1Qd zt`L`k1aQ6=5Gw+KErhxjBczLmhl9l+0l_fzRra*__ z*^rnI$QQ$eqFjmal}<6*1fZ3%d>Yc8k^_Df0-xVOXcjY-&dQBD!y}7Qp{vQ8;qbH4 zc#nuwvD)PKPy*vQgmQCI-K<;y1p#|*qQ;Pbu5q$VXfkbAhG7|~-!o363+&^-k;VsZ zSBlx61^ZkHAk(!r>m)*pnL3-yrJiwO=Ml^n!%>*&LDHC?@|g;}s7u`7igUVWBiXxfzVe(Qqoc{;n!&cUZh@{?RcoEW`z7W0?AML1|svrkmN{6pBM_+pB zK#uXv61isw*)#ePf12SkwhB$`EaBiM)mLe&?C_{&HB6OMMQ}`N1Uwrv22`FRQk(P2 zD|c}Yezz-!^N>K#HM)!s2~?27CmXok?Mjt&QKxA^6P*7S7BKEr;Xc7(K=T z$a}*RNS;yS6nu>^PN~Bc-h(kmQh)T6FD_*gCn-dxz;im4)Q1rpbBIe@7&Ih}dJ-(d zs>@KHd-EwOWs1Opxd`M^2wAl|k&R{hR0IitWtSEO{3voPD?vA*4R@!!&A@c{N$`!s zP5|Z2?7?Y)N2x9_TufJMr(9n6v(!Rn3l_&|M`@BiI_QAAnnDv$>`!Ftu%1&gT*OfT zj~mWkE6X5|FUG6o2i2NmuiBZ(X3}V9Vav#)I$6Y9GI8>tF+c5~wK#jviig~iy)m=P zo60UN2{iWLa}m_@kCGH33L7JH1kM2;KCAKU74@eRS#GK-apa-mWmz!Nu_N;%LrSr& zGC)@4`x%^3SFn;AR#l`@Ax`;Zxalsm%IqZRo}xT%lR-2W$e#;z0jRsSJmsRS#!!Kr znbe5a$HG=(cFTzRhDr%>wA(2^lm{uTpOrzQYF;`J;8G>%3?-{Hu<9}zfpbtqWh%irWoCUE=AN&MhzVU|`g=P{vi zD@2>R_A}g_XLd*qOEA}y6aDvSdf=)OdDj4OV`fB4m^x zYMpOA?yhk1fy+Swj$bodp)G0ih*2)JU&Co}#BOn<51JvLr<2NtqT1R~t4$Z3y5G`d z>E_eYu3^KJjaE3twR`PPTkICJv`<@8OQ#}Rr8`KUrH`~`Q#gDOS&iSW$bsZl0!Q)y zt!+*^pl{z^+|Eae_aPb|#&lBFiYK&We=<+sk694mK98u2+;174C-T{fhQ$NEv}9tb zHtl7$kL@&d+_WFuv~%BfH{ZmfOyv>W@Yb7#a@DH!d4$Bmmm1l^d!+NlCp#Lv*k$2N z;gK(2^Li^PszG^;2f}^Ef<5#mIlon_#-Ru?ff!hxt^!VPL{uNORbRYMEC*HdZACI) zE4-UO2I~f4z3@pgA>;dgBqy|E6Q|o=yzeZHNb45yVxdK?va=M$(PPft`1BU0O0E4Y zD}gh*-Gr*_KxtsdXVCiwTI>mnw`4A5Y*GaGq3bV$e5w1qsEHICWXxdsCNhvbLi9Eop438Qj=>d`Ug)=AFUma_ z9z80qJxF^z+;I>SiPso?Thx#>NUJ@XaX1I zg1F!dA92CB70{Qgh-+S2o52_`a3pKfN~D`E2D^yNQ}0m~LXgT)G3{=rz;0@n$=!-d zZr?J#gZlN6RtQZ8gkf6fWtEPbJb9O`nBvmAGFn>VsXCr?qFiX zCHo#wgq_gb$ki5Ws;)oWXv$q&ciWC`282n2!aWLeapQP~y62#_PT8XlqX@_B;f{s= zGvS%imxZq*f80gER^SgeeL&nKL zPt%K!RoyymF}tnucSR;Ir_G{@Uf(sh zKmt$8SD&@UsV}o#66C5`Hd(Z8tCs-OKjfZwxhqm|BnZs~>N#hwWVYXH;pog~jm_uM zOfGlYROjwj{K%|s7+pYF;)p9}-uqHFwKPh6{CdWhjmllw6-%GUZmQ?8+vm`AiL|ub zgb9$?%Iy`WoRlA$_sR5^h=;5z=D<~64?d;sMRNDAIOFyrH>7mGChX?NdHrs2rcv8bf> zmX_mK5kP73-bYxfAMO2AN(}s1H2@g|#K+*ucu6UM>m;kir^i10*rUtaEa93R{c5e@ zH*x`o2EJQfdbFFuU)1*+jd@FFhmzxXtC-r?pG6gXiof$HyQJNnyXqnD9%yfTn_|Ozh_y6|U^L91uhH zi7dohY)5J}v*R!|x9p_nDm5S?If{F2VR3NZ9Pb1P`z0;5bC76FkMHY^&)GR9mO&)6 zoMLl>h@$AVxS!dNQ4&l#8p@_2{6fS?5&vk8YtVv}#8OR&BC$^|L8L2D-s+Mz;X=wd zKH#@GvGRKntM}giq$H8;EDmbCtwidl$!5nF{e^J}%W?1h6ANJEPoHw?;}a)#TxO%L zaO(zGcmhRZd`ajc%ylRN3 zX2_ab(~pEtBBk@1_A;@w9wQe92Y?CwuZFCiAePrOjx%2gBg06FHzKjdQer`Hg;-|e zsSV{M4*e?Ixv9UD^4VCS@wYAYED?8fL)O0}^KV1ej&`APGVimW)4RH*+C>^gCg1n; zD~&(B-u(F;O){ zZpdnO|Gl+1f8n&!6#`?kSh#fA7)pL%x3qBeW@oZUv&3Q%-HF)PxyXB=jpUdOTamC+V7(n17On8mvGRhx-LF_CI!o3}ryggkX$H1U+n~(r8 zCOOOEa5Wss;t5PU%Mpm39?9W|)cnSPodhWZU`nS*47jP=u>!eGlFJiHbK-}6gf_C; z3Z#yw$BOhp#IA!3PHOQ*cL)0kO01b~Cqry8f-XhOhQTK)-1XD^sxa9VOO+(>3Vra+ zXTd*eg4G8ns+hF)3bou z8jLos#>7tH(^d+e?{k8uZu@^h2drX;n@ zT&*NzqfW{=Z_V6fSn`+&r`(0Ux+}l9F!yGNd0XhU|J`uVM`8HwQ{?smS-wBUWAgq0 zI?hYW(A8&+R^c*gvw0y*pFIa7sLC&`W0^+M@?ykDMf&5&aJ+28RSkA*lS~h_HiL~k zL@d(~iC)jMxGJx5Gv5@ywF~k-7qQF5CG@s;i(=ieFElmqrZ3LiI(I+?%+ z7mG4v*>1Wm)$+idJZg)6LJP%pmre5$n;62XcqUig?hdzGGMbf*`wlUbnNN>0ov*X* z;JEUsPXg3zKoTSvK;YU0B8oSZ6e|q?^hKGGf$bmcPD0>W|d%lM8(D1lo&JpuYcjXB-jrJ_{J7=e2e(}$B;25kF4qKwNPMy-V2&IrE5a6U``?p1-@ zi*T^xiY=*ldfOvUeq1AB7ShQTWx+uin0T9Q7XJ_fHl8d|hLJpzGPoKWei<`%NA$4`rJt&-YUmBOJO zoq57>9C=*wTC$tp^zq~L?FVu&<3M8t73MoA4|zq|z~O;4!d% z|F%-*gDR5mM+)H3=D_PJqM9K93BTEN^1o|cmYYqLjpG4Q{+Q_OY_E0=(3jK1XjK$( zmZ@naIf|xLWjG|2?V;Lo4#Q1={4q!akUf#31VfdGF?8Y^h+G_NZzc%X@`(kCT^NP4 zAT@)}xr7z9Y(vBj6+Mnyx{|?Cg+AEK<~*oD*wjuEg!G!1io=R*q$ah{*1# z7sAVNB7qSkEZ64((29x(i!E7e-@D z?Qe20XclFqrloR}PaT-PXg&E|G-dwlRPx~$IeSm^`8T0y+?Tzi`L8D-ubnZlAi_Ch zm)>(W8F`coD+dV18+@&J;4>r!7WIqPxu?_Uex-FvoklHmq%5l0PMQ*B-}jwlEX3

{lv>Y0cIIU#s=(6S9ySzYJsLw7v2efVpG6Hw9Zp8soGwwTzCvuUXkMi}9Xz?;QQ!?k#W@Gl$YouK zhe(fOgS5H`r)DPp`J&Vxf*bvGPbxef*Gw%3@NT@1z!ezhZ{I`84v^yobb0Vn+fb1u zOk5TGFYev~D$4F{_?;jI7+~lW0TF3X>5}eJQBp)jK*}MMmZ2Ml?vhUF28ZrO8U#UF z=?3Q;^dHYT-+Rvce$RT>I`2BOSgfTihP|)7?|bk2nrr`lBLqem1aB|m%_;6%WHWPZ zII(k?gu5I3AH*Zi2}+@SIQ?K*P%T0jC64we6(#5gn4!eq z=}OdWqMRTSbRqtu6)1?a-^_C3`}L;lo;Au!?xI+g8aoZ$<;M!wQEP=Uu_x%-; zkz7;$uEIW~S~&ZhAg5Yf*;;@A;{$?rkdY5iU*IAtSpd47zUNa+h~8vi1Gj^eeeH^^69Hj1gKS4F`jE7khP`*9 zI3=c6yeGu^`L+FA*t*2EHRsz^L8!sqS3_Ub+Follp1KXR6#ADZw>~@cw_)>JIPiJO z?{6rDV-(%Lc3DfQEY)F&D=#kf;}RE6?bm*QlXfWa?9{jYK&{7hc-8yCXi?i?yCi;@ z+6Tahd#ysJm|r_x^LZlzeAU!q-~X#}1TVjH8Zi)1> zY{WTzETJeaCz~ZBcr=Rluoo@f3=tWVXKB9Ep^Ts5ITMYn?vwwtTu+!HLc=7c7K*G) z(*7i-q;gfSoc)jwJA#z$Np)ctQQbK0nKtyU=&f$wC*rsAE-DP>$uh+hq*6W_3Y0&O zABH31@l`(^O~l!Ti1)&7GluW+|C34Qh^x0^up*h z|JXp@Vf31zgBXPuMgqd`KP?uve2upDiow`G>_THPLJ%{rir-F!Q#cU21t=WqZ-) zhH-*nydhD)1)VVo839?Ja$_Q@@`8TX0#}u06=Fmon2M~>;t`C9^N$=Pqh{)ljx)3; zp&4VmLH)ppLW1Ve(cSBj1J}Bc&=qvTE*b;7&S?FHfn8UOALeiTLmg6sMt8+|^=J9D z<>vfL9Wqf{xb|Be^0l=PBj{Y~{I@;iax(r}ATnKWJX3r5JsG`~`45fARayHr@_KT7 zVrF{g`xv^nedQcepf$dI`sLyZL%PQ3zjltN558ZELe7tSFV4QKt!=Js9AYrnYp0ic zt83?{tC$l6m@+N&|5nV4SMK@+h`281eMvsN^rb$4@!I`C`VB)|IG4K*VnL?=r1{Zrdl4JnYY}%d}qir-5p-3WX~RFpA8I^KB&2n=uUInkQ?fLRPX| ze+=XPc$zs)^m4fu`(ksg@QL*S#?SulOJN-XTw!uze?z}Hfb7oCU5p5+3+C~wFTb|@ zbv205av@o3|NBsSg&l+XjQ#ppo_nNG@wCI{WGQcXD)-d8?b+NnTd|gOHE;VGyuE*1 zH3&an>W(878cgPv_Q3AiV`fkJE?~-g_0V3()%jrOBia-F$T&hK)#LOfKQ-&UtMkaO zP)OhjZECxEdd8#-|s?z3dh zp(XG^k~*I@I;e6*1ID$i$wbw%7tRLI4On_(y}LXl*Z_Z{63zfZ<%nVVC)l{AjFKMte-aJsz;4k#4dc?Fv~18F8)v zd1>(jt0|-upQ8A2yG&c1Wi=iOx5N-lh@$v34ge&3EPgxkczOjU!aw)p!!5$DIp=5w zT+$&b%V~jIUcz*+cClX&QmG#B?Qf{NYw=PD&zzgD_JZ#YLI4zK4QK549NiEM%AijDv75zX2+vmRN#o8$8=p zi5vU;89Cm_#8a@p?y(%+hYD7}SUH)cW_uddM!4LHtl_pYj|GhOf(*0Rt-s~9iWQZG z%lZ(jQr%s=Qp?~8R=Xb-MWSSiRUT;ZGs10O$zS+OOSsg&tmn#OvgAwS2%(RbZ0LBC zBB*h?mpT_THe}_esS{e2bfP>4OoD~;bQha?$=IP(){FZMt12B)7I}%+6Ol-2;>9CA zQ-#EYE|t#GL3U}zc|Me4Tz3?!5w`ocQkioVsSe{`%O=f*a$q0ZaD!8C(j8>yy>1G{ zJ-saDsXSIdiF3q-^<#jrlWbz+8Br>&mLWuZjqwXjZaym!2>=G`!|ForZu9q+@6gKgCGNG6M# zgo|1lF-RyyP_8Qt@S%z{+%(BKt;MD{n8AHx+saH^u0%&~9!3L^W!OO}C}bVsjcBOm z$yGs^!_V8z(09M&`(R4)o)7>WiFksld|Ac!NCK19r1Edhr3mXH0e1keOtHl{*Ua;u zBJh3aaRUn5@qK#8*!bnpfnat5nYm=G#n4hW5-4C-BqWFGIeTC$qv(mx5e@=B2^{$P z-8Wy4@y$5YHu!v-DUhp{P<8#n-(oFhHkgt0W}=jLCKk{@)-;PyaX^~b#1@eAt<6TW znDt!Jm*70_;O0>PHqU9xSOKhEQqb#3po_8UfX*C zh5T4(dR)ebTv~{aw6o5P7ahHjev=ppg70}VMd1J`0I1hQ9wZ1MmaT08g*r1*JBB%= zw#Y_Hp)&!VgZ>#W$Tl>#9J`_!@Y8v@VQQM4La7>6vaB~OfWvFXUo=;-ey|X`zi?n7n8T$mRF2`oJT81DdmF^14AX5@wb2dzOkVuJQ-HY+n zq7#_F5v=yOg}_?ZpX@q*SNlf7#%>nH^mTBce!4i(sV0%_fpI{N?X4fqiiv!Zcl(<% z?gje}w=Sf;2>C4Wj4EyJ^`h1rs0?W+-Dj@GG5?Vs1IC3Y={qYFkk9=FJRjC_Pgyt~ zODzd&3N!C{7BR2HE(Pf*rP4>qX0r-;o;5ve4s)n{8BoUF`!G`GU|x-7`Oc0~pXWe$ znj;FwPz(2sh8I~d7S`{BnF80F>VNw7ycpQU7}y=3uv=h=&J3@sFhBeA0z)7iSaYp7_$MxLc@BL z3!8+u1{%=DY+)vEQq2oWthSorTtg1lU!6*J+;-5Ybhr{1ZFqNwRQCkjZMv;Q7x@)?H!$6-95d1 z{R4wT!y}_(7%BYZ)bz~k-2B4V#ieh{E8kbwFkbhq?H@mPcK7xV4v&scPR}rA*sEV? z02u$DTDkwbKIPv~X7oS3a%_(auJ@LGaTu>$vT{YvHI@0_d&?Utm3bqXzp2cB@uytx zEw2@?g_FPiDXM>t0Q~mKVU7SSV-&B~RAwj4-V&o<$9Uy1{uH&^(%(k_jQVTKmb;L* zR8!UJ%D-cd09Y>c*I|wTq{{{~sMl9wsLYQGG5(aQtx3!gfK>H{>L0VU_FD@B4K+Jo zQQibMH5zO8mb;@kF-HLE4%UVW{XjDlETZjsTqOEVc#T)NF1%J6Inpd_L6N zbaAq~+?S^Lx%uki^kD1j(C5#X%0C>oMKl77(tObq!kV|}1r=Oh^oA+0E%}f?HDB_j zHqBe|qkq4?Y|A116XwgI!mD}9VdBT@%i&Tu z>?=q)$~P;RkFxStBGm*pR-&{N*uO_>KYjB(M%Og|d#vI6jqh>Be(bC9Cb4f;6U=k+ zR}-zOH&&D2o$PDL4ij(IQk+)v*HYb%H`dY+I1~t==PybWz=yKe06@%Gux=9~n7E!< zBhSH}9V3~(ksUv3nx7N)o?|vQU4x^*GAq_)(=uOjQ7W&nWMUIch@$1RsF1`kOKS>D z^TFvvj9j0ZFoISvfMwVm*wMSmfe8X%FXj-yc@S3yn61>RDvuCQj5Q)ziU7=23!*^8 zNQ0jixL8t%{H;#ToyNln%bljv)xw?T%j2z`&j4JmT@)6T)ou&qPSI{FRA_s*4W`Jo z*G{fuwbwyyR*TeRQHRkOX{$JfPm(9b_6=!q4k(XO?zFAcB^L(qci|1mya?bS3WXue0^sPruH$Yj%EJ>~`^@FApc*qOVTZKB0eIp6pRl}3P*I;6Bd$=bw{ZMUw_w&x<4I9sJn&8W!D=cbA>1>wUQ?8`mm{G;Olg^Qr7SK z@`YqT&6L_`XLkLB`!k3fyW1Gfcm1WHA7TDV?aZ`$0ZM8gN#nZPSw;5(wL(6U=PGq@ z=F(g!blD3whGtTCDRtgU+zT;R%cPy`?i8%w3x$Vd(yu9XiO%eW{ZYJj zNuKY8BcNG~xXRr!wEM^awJc_;o^A!vYb9(J%N^w&75)9l`2H+bp+EZdbZ9o4B1Wr_ zxF4OTmd&Bl)BCi3Kc+M!o6AhOPk&}VwzfZ;$FZl+=zKp816g#^oSs5t=L9r95btc#yoVmMc2hGx)y#AZ0fs zSA0!*$Ytgr^|U`%@}y_z!}&oPfG|%AS7q4i+ilRl83ryO000T-19;)$l4DkhTg=>l zmI%x$^5+F!RH~o*#n+2j8sZ6Ia=-q6wlt{W{Yl0NVS3Aj0|o%FFg9=mW{t%B8wB!s z_&ZX+9T)y!9{?1?d-y+JSk?HbtaXR-Y_Z?(XNtahhP3wCN2HgL&_Zgzi+kdxbw{g`tfa-@{|W$0+h$y8`o zvF)P6=Vpkso~(l~F8pXF!~sCs&`RHrP3-^$x>~)z3&wZ$rUri?^&lny1>FD>5JyJQ z;R3O=6Cfo2o_deL5}4M%_#5pH#kBtopTHJ9&Vn(8xRE*Yt+N#Ug7P1?K9>sgz2>g7 zH#%sdAYijU)sWL$rdH{t2FLe#(&=WlF*8bYtZNbDqWE57H3RROrmt_}yuv#xgSl~f zceH&-qX%Khxc?g@@n6}gWd7;V?OFXKrFt_Ju6!v03@|Htn+;g-@+{Ftz}hn5Pruz|C^+~l(G>XVbd#7K zpadvJWSW5p#b3b|jb*UFtFkvDMHENe z$(Wxk0{7mIPP7A%W`W+l!lG6PLFulfK*^T`UK-~l-z4y)zppEP=t_whaY@fVkd^<+ zwei32;w%3$Urs>&06T!r-{|A;Kd+VxBELJBCzbatuvE;GN=s(5gY~Pj#sxQzRnatf zHxMVVo2AuBThzIK)qXQbC0{r4%iTT~`3c3$3vRPk;!ae5GvEgCv~jb|>}?TTMkdZV zv=gxl&Rr-F;Q{oLQQw|2JoboOpwTt#xGS|KpG$fjB8Za9$FSxUiV`Q&D_Ld1+O7O=V1VeQi_y=f=q9 zR#Zo8JyCZ~Z$05aSZ6O39Mw!z1D>1gxen7O>{txnwFC-WUB`rJB?b&A+Q7`zB+NuT zPs9bm7;)JDveBae!+?Z;>+bvkhV5O@WT)lUHkSO|olYonDe&bcha?=@TxM8ZdVd)X z-skI-BDF{1D6#A<0azq`iO7t1`9LYGuhS9wIO8fuWiTHO%=+pki3Q27_&>`F`2XdG zK?#Ne#Q{`*mzLsU?rK>2x+ z1UK%RVTKh)Zv0t~A0M?)n>>`jwUIjhP$h)RSjLf@uZ58AfHbyj4oZzQC*jzU+GB$L zffo~XKYwn_?cqV_b!sE@PrH9_3)nF2<^Wjzjdo}JH%!oQFpi-yvKpJg>IA%y+O%eS zLI2!;{>1r%E5e=I!`su(+m$Gg)8Csgj2-C>1@m|iIe}B+gRW;79Q*Fuk2r6kz}$Sy z49n&N1FQ=$ofX9NwLt*WRbS4(jLr^76(|qj{u{jv{j+3k4T#~lt%RCPV{4k1a0TYP zb&zqJPihh5{1hzkHk6T#kQ_w?)j`{VQ%0v6(S7zo=$xoP4o!40xeU? zVI0hdWItO;z#a8rbO1S9Omp32G41v7z22_e4gSv(Pu73A7w>=oKsA8T-{?`}KgNx| zAM?Cq=Pi_K&Vj9&-^_PXX=>HBy}clwxK))3KL8VjmnYcyTa`p>Q;V}-*E<%>9!x3q+oNx=B_?&4qot23r&K1!ILg@nptdL|w9 z-;_#A`V#=6>&1u{3;?nLLjOhpivJrX?q70=;xv3yAg~zsZuibjcbB_vh!5TfUoRe? z0KedX&>+qbWLOk3fGCzd8cCRRCj|)wbA=H3f(x?au4l13Hm}6 zml{m)_%X5TzK;o=%U>q(KeMO)SP&vSLNX|fl9Ym;h?0qrM2MXB78xBMDKq_zTkLm8 zs90|Ba_~_xv2wF;+~X1A<>43S6ObSzc}z%RNl5aZl-`M)MTd~vf{@jbP~Z&%ixbNY zX8|#}J0cGJ@>Hy9ytmZuay}OpROh`f%g1RfOepo1P{~7FR!#89Td^0;vLsacJX9}8 zs7&c@*>X`?v2f_~Xv^|gz96x(VsX+p7O_#HvN0Bsl2=ny*VcG!@L1RAiQWrY2M@!S z7W&2>`VN*h4%#nFtzTQ(TiH6=Il2>5#*(u~kqA`r2qlwBw!##WNTog#npF_m)>By4 zFxb~|s>j{YEaiL=A#7PfqBcZr_>KPMDE-UtEKhnEpD(kTkKMLEdO;E;Yo8?JkonHl z`-NGBoWsy9KSAD5X`vuR(MZ*Ieu8pw+7Hu=bw0kfiTAK5cD&{1$?aQstKu_Z*brsp zh-lQ%z2L)J-IMwOkxIU0Ht~^eUcol;8O~Kca>zm1$Rmx6dF|}Q7hyxzX}wmlqc4hw zUKD>fD_eut{CqdD9Y8`AN_Q)ilPXG?D&+;0r?E(`8CCgvszMtUq`h|Dho^aFR)Hi@ zfo2tXW>HCgf_0u$4c>R_Dg-?PEIk7}yyDy=0xToqJwAtNG)25>3!`cayW1Yg(i5-Q z7G^Q_QNOL&syD-Srr2t>%we(8ajaX=Cm_r(Bq|^}J|ZA8GB(jOJ|iMNJ@|7>a!yHM zWKBj^Zf>O>G?;ISP8t&@-I?*~jGB!B7)wS3^usqUsJk)+XGO^t=zBV;;JT!Ye z(z$WgcD&klbUCxKKD}`^bG$lze7Q9VK0`eBH1wo9mQYmCQokJE|InMl@#plPlsVO%F&{@0 zTfTMFlfveJqnsP}V9E1QC$0GOF9rA7Tw|EL`nbxAAN7Y`+?8aDvuPcT{hcyD8vcx{ z*}dth<}}xk@6v(kL2k6QC>M4*awe@=C)O{rQGMzKU>U5+yUje*D3S( znfKW4OF=S@$z3p#4VqGKU;2$sy61Ip>S))Zb>j$k>}jD%T_bfxyJT-4N{jUjh_n*Y z2mkI2lAHO%%8Tbrr1CGdDLrLbrM+>S!-Jn~P$x(|OX&P&GRowz>GlSHWy<^k5gIEt z#O{fpPjKr|V3zb9E|JCTNAh*Il0*cbniX~&J8Rk|g79LCPP*6iauY%=r1J5PXmf$6 zQ5v?A;U1kWld+z)c$2A3l>(h_Oq)L&c3E@RrDVImrARNjFCn=bh)h(SX=r!fI&ZxQ z$Oxv66-vQ8_i$*n&aAH+IAg1;U`5Vc3f}F25wE=9`9A#;=DdnGj*nvABFEy4H?7Z4 z{3zcwU3s^GgT^+rNo_|bxmtACuB>-EGuq`NbFp;*QqOv=OmNqQB zSO96JO*zg!E=rd5gHXAGzNi$WM^H87p1Asawxqnt(967Vxcb{woEus17WW>7n zU&xYEnW*+s?^iFiZM=vt2j1~uyXPE2EUC2uy5dCITv<#BchV|~XRqJSQCskz5!cYl zPOz+ax5khWSSOi{kN%`Bwp=E z-kCb8581#w3Vmu&{Jmc2=b+$$oG`JwhY3Zvz_Xc53)=Zg*R+Otm+O?d0 z6%dRjzRR$tO6he!Ads#bi1#fCL~G&+5-|oV9*cM>@yX)JF#_-8wcJQCdz3_=tKtIx zL>BtiaI66Z_$2UQb!$s|XYOZhxS!nhwLE^ML;;%Mk2Z@X&F z8cEmti(Lftm~r)w$~djJk$xOtbdVj`pIhTN!Z`a*2{0*hVbUua1eo_M14vuyoiGPP zkep4vWt=F5fvm!?4(YLRyXt|oKlvDobg?O@>xo~OGx{ISErK?ruzqq-ZPoQm^NcoE zZa|#twmudZbt9$mhVJjGE)CASYYLEB#ELqcfD7l#Q88z!@_tKw!?)4UQTd1&W2B=X zh?H+Yl{2pHGqbiRbzY~;YfZZGOqqk9Vs&~vPsgKY8V%Yo+-5|}++et3Q<4l)67tYq zk>p2%eTK&{gzvjNcLmRvr#v{&n-bkodWI%tI%V8$g-ApOkVef>>mk^QCK-FeG zb$|NE2$GN$AQ{b=jo_%)Ze#j)oNl^AL6{G}x(Q?9MvKEf`Q7ReI=eX^RvL+5?VQ%N zt@o@2n`d0ww&3-8Lx;l3v!X&_b~et3(UdN>0)b|mWD$u|1%@Fxk2RYpe`?(uF-pWK zbmoXl+YHp<+JI#t2#c=d>X9+`G3#ZO&xUaCA0PouYe}H`jjW+`2-4pm9`8> z3euGH?Bq52_rf0E@0KMPOaafTVg%lBYn2*jIO#%IywQ@;ifY!64Xem+dAuyweEuSq z9IqfYX(`IgR@NpBS&?w7<$bC-eo1&UX?5gy%zYP^m;HQ+_v7{6qKc*jyL!8sHC);MQa0w46rXco!bRIiz_vUNOToq=|gRYHOU6@5?X0s@St1PO8j} z;hXj?urPQ=uUN+lg6vj8Xq?w=Xe5s7cp5!XSwOz*3!IU0W*WaqKgC88;_$mv+83O` zW@^h#8==kQ%6kn@4VTrhZ9_`j&BOiGOtPZmC5{II!h-u(SjEnIv`o7rGXEhm>`bDl zxE2|n^%-k~fgNa8|A-6^G;)gmAu{}652~jBBQpGH2V#_375^hL^trJJfKdNGi3}qs z{|AW-4JJU4|4d{!RNE;uxEJPnxy(ph*R80rADMKy!iLtY>(v?Dk8Qa8&KF+SZ>DjO zID5G&JXAO6ICzkHak(Z%TtDouarlw$YF$aQel%|IFh}faLo2*~JXhnWz~E|Acc^}% zX7H%Q^=iwQxM8YG2%z#nldi zxN#9z^R$)j*KUAj<2R~*D96JaSMF$@^&0%zj~{AW6&gAlbp3UZPTaJvsChn`^y@HB zvuRUj=zOB#*HLMB)3%xB#mwxlNp3m3nBQ*-<^FTc^D|4Ge>p-cZm%|XL) zlM%nEISD%eB4Oh{)EvjR2r`(BFDr5^r0!S7Sq`#>-4;4Kr96f2)J+G-b)D9Se z4ju{!cKS`tS+`@S_QI$BP0g9Iy{~I)Htr?zo0SF*XeQ~N(c;o&a^ zv7-Di2+}|{I9SWON;jm_+*NKJ%)96RnJviH9K_2+kWCGz>h|h#3Z0^M6{EIg&hwl; z4PA6{nLUNiQ-`fOg=GkZ5q2RK0>XZthQ;QF;o%}cknm%t@Q6u|2_cV5h{w?+Kr$d4 zB!cvt{6L|Egd`xNbw0G`A&JhAfs^jIcoF1!5#DC*lnD{E8;(OY5e#P$j5LwVB9Sb5 zk*v;8jx|q+ zwWy1=nvS(Oi-ps~*@?tC=*7Kvj&n+gbE%7Sn~wW%7KfmT_Y#Ts(Tn$Uj@OF=1l7fd zpdO< zoKXiRfhQ#7yCv5p+~~2jlEZ48PHOI<^N0f+?UNQUGVzY!(=Wc$97!4($8X+9@{CA+ zE(9Pc1rM#@kE}e9L4bb^dXQ3yH#gKKeQvnyue3IUGnvgx|Aao4hq@ngLgDW-Qpp~}#A_33o}IbhrjoJAoG z3wT>Pr7bPohQrRE*8YSYivaDfAhrl^(<1f**aqU;^V^z#Aj1m5$-}<`F(Ju@>Et|~ z!N-~emoIwj&A?MPDa6lhV>s;Kv^lRh03Tg)WJ}=|y}4L-AnE7uPaNI?To?Klf^9Fa+N zy?NhVN@;{j!6!JA7BL^w;}uGY!b;=YO9^{a5?oyhAtyy6iEwN>xRGe#i%I+}4mi#( zsqAoyXQuCW3&I0*5M0RBz8sD#GF*|Pf+ay$Ded}c+oIHzw&WMSod})X5eNJv@sn2> zT)vb@S=A1pYDd~O9%F$s^LgN#BNzA zO*x)oIa3hafD=G2mha99Py-M6sQThw+YDv6rWpLgvP)zzN5`_}rvl`qHIwdJ)%RwyK|_94v*!|3dfZTPbv{WXYl~UKJJ6S3_~}83@g- zCMc+$C7#r8?dgkl#>c&am(grNY%OzR>TIX*fD7@y{uB7mVQ`cy+_kXQ-L;Ag0DZ&( zDHd(#Le&1cAd=WDc`H?dJ^P74JYNBt6(O4M=~}E*P%FrI(Q3T zK6^uLX9Ki?wiam6h^^RH%7xNaMODo7?r`)4(Dz$I3l4&-sdUmv=2B103huvXp@J6Z zZPyfUV$O_o1}FE0^>uH)2SON7sH%57!Cq`wY#An6(`|s2fqD13Q8rau!?84ZsR}qw1^1 z&U=AoCAboq%$xu>=ttB3s`h@O3jIQ%t&%ZOR7+#!Pm6w9D$H3ZIO#Xc_%}3O_CpTD zn%9z=If8qE#iMP*pA}RKYh7D8f~)V)6>=0e{!nSXozmS@(2fWuis~H!EegpDd*$e- zzvj%wx>4vF+^Kk#{kgF*owm+(D?0eB)w{ISp)a0J2$1VsKw?ZG3agwWC_doIYanR9 zQ`GQF^~*(Ly990R7tT5h*C8);lyT5d*=DUws4Y)K60ZRnw$Su^Lm!BKSbBckhcn+O zu{Be?bQOP^VX}d7KHubF-ksTL&u1gA&OblDn^PhIx3Ow{GH=Upo(H;vCCmZGV!eUl}u?&X&MLXv}#B+r-#-L&VJ5FnXljeRE(CWQ@gR?$u;%J z`pYLhIR6El+N}$luyz+d<=!w~N!RDQ*?#kKA+j+#n5O1Ftf{EJEVQnOYK`>W4}1#Y z5MYfOZ^Xi(Tc_ExvM{>Y-jop`iRLT#RBAy-Wa3<%dSU3m0+_QQ;+bvv-7K(iJCXSMzV(bVWZBCCe4Z;RukbUoBNNAzG-~~M%5(^Zd&GtrdDhbyCb>8lkI#o8cgmD{N974; z$0TwDKa_ZvbTKq#ecoD@wO%oGFJY6&Nlo3XCM@enwKcCS<>7>jNRg2V6{{L-M+El` zx)+P6uZ8eI*{!zQZ07F~_3M?)e`}sL*6&A&fBMR^u!p~@#z$CNVmrWL>k_s)XT8c{ z&{ZSZ@g{6j^^78TaQ&WP&5cRGbK_}HT!s)#cz$}(FKBsj5Gx1u-P)~PE~M|vOhGd= zSE+IOi(7HJ+PIPXCeDpgBDHT~eVZU-I#22!%sPBeOr~yZVLU9wfubnqQkrzpg!b&_FYP7U{Yai%x1zFepo;E7c)hap)y5BR;RA z`-~I!%YdOd4}tpr;G|-+7Pqn2wYNeh34Q))KmX^H2_dZQoKWtz6e`KZ586yK6+T|> zMaD==&d5eb;0+?fXHgot78(AB)SQHSE!WhXZ~R(gt2gwDaZXwE$IZLx%S{MJY?)<< zn2Jr@H=M@{Gw<12EZEV)WWf4z!L zl?@Cv2c24K348lbYR=u|lnDFQC)8 ztH|K`4{DAQb1?tD5=)e}o$@s`N0}`%+D?U|u<|!G$4-@};c#D-uZ`SZ?OxwCHD^rQ zUR`k3;ozE@W3M5)Re7KxelUJb%{e^Klmb&YXvtuxIa+8rvL_A?73kh!s5!S{97bbt zN)I2Y-T&h7SVQaxL(P$;c&GhHRp3Zl`|*=^Po5gQJ9?t~D(2l&eaot&r-t@l-su>* z9v$fzdp{Epeicq(H;EN;X_}u$=HiP@YL9c?5WcWKf3p) zF9L4GI=u|ytUi4ia(}|Q~_`Cqn zO6h7<-Y0lrRXO(5)w+6C^1`xq8HXK!rNp=lZ9JH8ecOC-eDM|qrovbX&se>&us}%H zy%I2B33{&`L(S>sthu!7zdz|_KPYxWf6ySUm25j&{Jt?{=&_Fby9tA}M(BuYoPoc(0V{(aK4E5{r#glT_1Sm>A2uq^crr`2GhB&U_kxDSr^T5W#0WVBVgyZmf; zeg)ksqxx+2qe%#jIe`A0LBw;44(|xhq`w%%C z($K4;Hg^H`7M^}v20oV9J5Jen2 zMiz>6qTo^$5?L=f>U(7#8Y^?O=e9(>-!pE0lS-r8_YCCF_!$%!=q*{20k~cID)_~= zqR{?QD17~uKTZqaUVmPwR#-XnRs5?5`1`mf>)tmP01C`1EWwJp^5JgcK{p9U0sC-9 zHdXpSDlBj?1;ozMXFQqd!qcz!M&`|BrDsgE=+SVCtikJYW@=Wwc#y6=IS465+?5dV zAzllB4fB!YVFuiIx$FZP_LdxHR}2~+VT45@16dHbMwGAP-1$EONMYpR$;R>Q5uiJx zdHt_(j9pV7uiWRoGhiR$X>W~C6l7h)3IAY|G=FG%O8E*)edZD1StE<6s&s@Js|hHl z5=)+~G~~lLc^b}0F5t9BhE$m;PJzapm%sw?bZ+Su{u5>u+H?RUP#zNxF>RdpJH>(>YE?6c8 zm%oRN($$j_ERagF_+C&iQp9}E-o8}vHec5lzalTY34RzK1G`8V5euE^>6}QfD3ZTa zqv%Zp;BLPY@%n;nG_U-YhR-pY{Q)t(?Z##vsE-EZ8|mUa~_3 z`s|la08|0kypx4pBOHXKUTk7WP8Ba^Kd>$y1o4eJxz$~02{|- zR$$MH9^t6G72ql3K1;4tGi2xk44sgAEdGM3!dB*X-mS*TDqLm_mS99;dO0Kej&sfB z5Sl24nTUw{`48inG0Bg4Y@P^Ce8WhlZZGj$4@(tO@lAsa(<|RJ^Nrk76S0Bo+M7$+ z1TG0ea zt6`Ec@7+4K;L;n3J5kLBKM#g}sfpM^&h2jgRJ4;7|JF;hJp2;gCeATpGpk~g)yY;E z{8-1&?GQYcuweUw#aLyNVWJLQAjQeG;tfxVn4IoR$>-+zJa$9%8sF^1O*9Y~&wMaNxHIN{{R(yQNzXvbg8NB&&RMi&Sd!y1 zy1m|cPwn|dN&1%Yp;!6N1(?t8*>*7`OS*m^yE0c|?;zCImGkBcaqZZawpg*Db&Wb( zK07t=#<5c>lixRC{4c|%C3V(4D>#EgUp<(JWQ){C?QGOUz5zVd4ca*f6qS|Qe<+31j~WC@h0`Dg z?gjDiaUYTj5*&&^$EC>I>4~stM|zt{539-4q-mmAaNVToSg22uT3QQR=(bxtdZcfN zOEMfvGhe0wh6@zaiwQ~ z@ugO5pA=rGtUxq5y6g7}BUdmPX$UQWn(&CbTEH1B2 zFaN|){;8F`j+?x0h`e61ynd0qL8H83zx=Z~d82Ll=a=%vP=y!t3NN`7UWqH1s42WQ zR4}ztFl!{1Ue7g4R$v+l^@A7Q2vkUC4kTMwczdY;hbr3AE81}>+KVeXs42cPRD5rx z=;)^C6r$*ytmsmt=-R00*01P3r}$x8(c@AP0afy(SMp*}B!VOGv_pbk1rYR*SgYZI z1C#=jm4b?t(7}yLA^l3Bb4p>`O5vAENT_lIy>cX%a+J7ow3>2^p>nL1a-5rTe28*F zvT|aPa#Evma=#L;uqUwt)K52k>m`!TSt+_(Ia6FEOHC!)P$kDoCD%2U>;&iZtG%_%*8k}+0Dr^ZY7zU*xN4=a z+OoOo(52ciRDFbAeUwXmOk6$20q{} zHTUQ>_g4UE?F!+;gXi6<^A2hL5T?-Pbh4)3N)jZ@?QmR!LO`p-a1cx2k&`eF21?~`_^6v4@Rc0F$o=@f#AAN-$7q2Y zLrhuzq466rha2A67nPv_VBP>%Pc@! zH}r{K$`gIxaph+rzH_RUb3>K-Uk(6+oZow`wK?A)M!wMx&ig!^=lb%UpP=HpZi7t zHb;L)<>&+TaliPX-Z@p|uo`7mW{F7voLkphLf1!qDu;e@Ip8t#L*0N--M|!GbkGka zzZ63M8<9ctx?w+b!@o}izYYzdhz#e}i;~cb{xO222#p|&jCR+H57kTH9*FrKmC&S@ zJfN2n)0;RSm2#z*PN<(@-IMwyDnmj)OI<%ZyZhrnRJOZ*UZ{S8wZ3?Seqob-QHpLs zQ&iCp{ZCgjK|TnETCk9%FHNRML4Uu|WRZLbhZ_s?D z$Ha#yGYBG!S1OB{r57G+%#Lb)X4vVgrw0S23mXQn0P?Bl?y1j-yfGY@p9{Mp=m}LK zsx=6-66u3H>X*RRln-oz17;ivBmDxbjJ~~l4xSAu^Kt|%1QrnoLj7dpd!%)Z;(QiPoF*gFjgX}a zl_;ZlT~5eL(D(j;v*@q8DaQD#Pv?r2K;-j54qguHUtcKs2Kaa{eP8@ljCd_&6v+Pq z*4cx0R|c};V>94^1s~DMhfv$#X-nYYl^8Spe4(gb5VVb7S=CKU^ul%5820o9m~ko4 z{s5S=V2GYE-+l^OhihWEC51i^XP|4P!78`(NDMWl&sQyEpiz@x~nz+}%QO z2oT&|gS$fmjk~)`fZ)(H?iL_Oa0%`nJcIyAaMHtlKj+NzoSFC3Jf~*r{V@Hlt5((S zy}GZpuj;+_|A!wr@XkCvz#LxKVa}X68(6hFp#C*8#IhM+Mpb7ivNcQ57aErl$2A&? zlp=3_zky4MMo76I#BE8?`{~aIc|1mwxQOuW*8qm4M7*eII$aB96mtqglLzE2S^f~> zq;2{wqzq}xoXW|GGp6reRQ>r)J(ZK)%-AA^MY=Ad;GUGu7^M8%YG0KD^GNiYkhyr$ zSrJYfOUR6_U1Y;S!bqk(jjG8Jmi5gCi=A>)S%^s-`yRIof*r^$(bXo53>-76t6l}qTC61 z3znz2O_Yn>LPGOg`6wJ^G!!jGelEr?j?bLe1og2NVC@#6zGNY6vWGo=Opqmye|~r? zv+D-gqGgW87q|DQung@xe8pLW@H&2MVJ4wR)slz{Wo(X&QyuB^wNFN|7mf-~T{_-+ZON2_;&ON#LynSVvZWSulEZmq zM`^F#W}n7)kY#5~{CzpbuG%QilF*N-TQx>-YF8JCLXOkKGwqr+ zUegl3T)Ks>z!1FzOc z8+09G6r>MoQ9CNPXl{ek@jO$z8n0CqbzKDhTp-(`A8*W{7P^2wJ@)~MBwdKln-r+F z5n!ZYZw@a;Ds>BZ^(GSR+gA& zTd}O%inYn@A!GV0%Mm&bu zMdPKd_FLf%p^mGU9$Z69AYHG}%P@LIpDW$)i5AUXT)b>pf zR~+0Qa62OJ6E1g?-GQpVG99(;0}1viiSd~%@+lPb$?k|Yn(;|e^L4%P36HrovO^2E zLyLvRWK+eYlZ1GDVnmn;4GM{LIYtc$_D#MGb4ZAyE6}ki=%Id1q4jyV&|de?;d+bH+2>CkUX~^P&}e@`V=q7L54h z{)qkvy*HA-@!#>INO?$!@edC{t|Gb1LcOaxy7z$k>8JP?Q3b@mxoI;EXlIJe<&vNL z5-_zLF#RLo3p`*3CvcW3aE>c*{>_tL0Os+yUrVxIER$aq382{3w=4MZqX1ePYAn1! z4!xw_JB~X5s^=4)6BvGsQU^y1iw>X=^zKyqlV;|JAQJQ}CE;;8HX^r6KTi8-A+y^d2>a z>!}xwd8O8<-|~r=mt6m1t1%4d`74}3qpvmy{fBY)it}!55-kQVea9uObOsg~;~5EF zsVqVRG3^<%+phfkC(r$}lb=j8MN-lD91g#j=gJhbd7V#xu`E<-LN#k0ezPvs7`B7I zpX%(z)-#)eaP2hv`or1<50wp4N@QZm)UNXtuAu`RBP-(F>)-37JHVFHg!*u;{hklB zwsFp9w>*xy#14WdyTr}u@fTzBF~j-tdxz(3U69Y;(eIMVi3 zlaZCQL<2M$RA%#|3AkJy1+VtUvtPNMZ&V%)7fmTDJ966?G_^5RQNA-QcvW@-VcMKYOVM2`W zt#f@DbM5h&Dsr8>?ilmk$I+ScJl1@f3VcsHp`l(^cT7d0AYtZW?K=bJl33O*=2CCU zHRiHZMPZh58F53F3L|VY0Q7_3JxgVAoG>e_JlBu43Rcy{T3y?9&sx(sF3eWjy5{Ey zL!@qHsq481Ro9{02s^#+{^Q5qG{*Xoy?ILbfxV@T(%PwIaqfkaMmGM(@99f^4;&r4 zaUz_Z`;2kNEkeVhhM$q0DMtk>*1TPJ>TG~73V_roFE|yY?)Md?0LN` z^k%cQTGLerNrcDJDN#C%d%p=_#nl2{KjUt>dilsrJNp?K3+vUALHLuvPU!qY>rQ1{ zEzznCS9lvhTMaPT_vj#sxsj-6a_bO<1 z#@$i56_E243uh?*V}kp6AwhufMLz~r^~s=zpO0=e$%5b4KPJ+UACvPg9}hde^*r$Q zJWSVJZu-Lmp+hf|MRmssp6*{_bWZ+IeBu`G*=#@B>bzceg)4E~-hJb`ZFzVZ;+#W1 z*nYrKM`vY3_6sZ}!q`pc0bF@^cGk}Gcvl}ryiW#*m6H5w?Z&*83;Ickmb|=M8%lFF z3ar(`ZJkPX#t)#uv}7KH1-P-Y)8{^b@DqwOI0AXrcR_5?JRObok%)9J(QPX~Gw?RX zzRn-#CLTzZCrt71z{o`-!+*6lq!MVRzB`k$@|h>CF`?JLglxWY_;r&8yPXpq`B&x< zp^Bs=NH-nj&)al?)5heW$I_=;v{6a?rj&L3G8zKds0=YEH6ehWo=$;DL9;0>YcidV z3pS<#PLqFsM$i0~Wn4V5DWgL4AW=MaT&JliGgZU76s}4=VKCQ})z;0x=>eNCzG}+u zePrMcXPGp|Z_XJOW#mnVO0ZI)*i|^bk<8y6ov7fLnfmh9ibzQb4k1R8x_$@^jNX#Xe zRWp&iEycrc?TX1+XJa*6N)*DGi`lDY6TvN|R|CgIqO5bNX)R@=Kv`; zebGDC`S)`zrQFEcDjrqyAMk%w1n;q^hqEqt-Djx16=T&*@A_17t^iXFWYvBi33tK|N~W`*DlEWOI7pre?E;D`@C`^WvJ0gxn3laen!!Wsa74VsntPNMaMHE{TmM+YeyO z+col+{C0 z=ae9JW|Di*J|Yfra79hQdxyD$BnfckoJ`*gBliJmxN%#lbw{&E^bbt+3{c9d<4z{^ zp&91z5(;v!ih0uL8x`>qSFZ0fJM|-ev37kgLyLgnA3BA$R1;BrVKur$jOZT)jDSfT zF#QNcSbO3rA()!qS}Xa~rCG!O4lgMPSBP2vIw69HdlgGBy9u%AVuG@o?Yc`~9-k#d zx?wUz=!c|ay)mbgjFh=?qhYh&On5PJ-xfh-dv7J@XdO=Nu{l9rdD-_+r6jfxq%tp> zI{mAw%9jqKYqtZGx_$Y-FYJZN0PvOX9P)wYHONAOg3Y@wdEw=W21u?s6ZomMmbFhi zCjMR2q@>=R-U%%hKR<3$GH`JIy3{GJ^j-s*)f2K8xkdW>BkA$C zF=3yN2$KSld4Pmc*cK-)Le2RHeFGeB0KY;0FBH_R4Nn|D-wR~4tmE|otZ0x*_4OwR zquFaj1P!=G5kBH=`_z;h0WkbS7Adnw9Y-F2CG~Yuw-Wc2iws<81RDWz76qmTIj;-E zZ5XSDd}R&IGw7)WL25P})xV35_>DFPz%kR{-?+$x3)wwhl}+KVC$3qVg}!D^eRM89 zH)BdS>Q#vX5?62oeruXtYQfDuZj3yAH%{*PSy0bpPg9ia->`=bIzeuc88Bn^4(Y<5 z>5lfO{pP474b*q>3S{cDNb@FLW*l~^;j)Mb_}RPRFYn%;y|cq9-v>e~08R?Q?@qL+ zKJ+05gtEnisx(Bp#Y84F#5TpmF2(G~5)Z!y0d4@2 zq++hlG_r!-VftMuBndznIzb5y`EYS+rTLo;#Fr&wFUN~1&vz4N%qiM--|y2_(l(28(Jbh6OBnFwKqf^bYvy_CdkjIe%$g`@CPe_G5dH{i zYE}#8I$AbG1we`giyw_(nFX~83PKJh0{alhfFj$q#S3JBV8jl+F3Oh}wW?cM-XuKQ zxsvyz+niU*oS>msOcaMQNGwuS`<(Z?U!EXUWngNaj2fGF6I772`_6 zDwCTa<}9n{Jq{NsUvwJiWe2R(N)(lw6y<(RGOf|e>{?wMm+9n>6M6Q3cP>MChcNrS zA5r=s@@fD3qNEZ(15`VNJO%*OehDJoM&v8k3oA#+FE@B$O8B`S=r#`4Des!xuS|F! z-E&|?BiT7tu6Hh}@}gXthT($QT8I09(yUC+f<9~Ppmz5_Pu7|u;=o*%LA#(FK|PeR z`v5N>1fd&FuLnM`mSwbSE3?)-gkhG$ly%iiB&`%zj4Td;^o%zKv}Pz3wmP`xn#fvG z)^@ozhT@FS8U{m1g@x{+UX~5i=TMe1)CeEy+DlI)%?M5dIbDau zKi1B?8D<5lE~-N=ka4`0P*)dQ{Uro{VJ5qR1AlNFcn*q2DCv=8qh@34_X68E3S{@^ zFmOEd9i#$H`=w75R4S3_Bm=6QZ|i^02-cJ&$*6D|K5_@zg6kNyHJKw(n6!uYWlZ|j zrWukAY^}gh2tKoSoJ8=n4FhYX&sGIo&`vvI-{M7|Rj73ce?^k`A#oYAzd5~=Aw#ka zyaK_g!lTZX+zG+(l*w;g(j#|Vj#yg0%Eqm&f?R^Z@eiXcV`Tz9VR%wfqHH8g-n!Gh z61uTPiFp*Gqp#LP>eghhL#c0YWs?E{*{z+pURA{YVX9oQj#FLA-eiC#kmW?dBoblA z87$iQu)^sHPfe(N$9O=HVhO9m8y<&a!PC+-#gI9r>;jvShVgPg#R`X0ad(GZpHr>R zmX*UwTRjY!*V6JRtnnq&3~6Om1M>=}YKmbpRvV|I+AN}TWm4A;Z;-2{FRG5Y9VHv6 z8p9GA4?nl0u}a!}6BRC<)2^;viffCi7QQ#-nX43tW9u?31)8w+_^@d-uvM19tGgLX znWn3Iw%EcJ*m}>|KHW$6UbFR~)VM!ZKL_6S8=~}6)(mj6^BbacC&hon9vaLA4eHjg zq&ki^u(lbpkAU&piK{=;DvczaF)CC~NuS9m*HopjPw37G?qQCDLdNTyCYH|VTEB|K zeV&}FnYyl_`JFYl|F!9seHK4W62-Zk7lVwGW1hcuUYuh=wst|4V^OzuQGDK#8%ydL zRe?BDY3x@aF;vP{xo*X+M8!3pJ5?!XEw^z{)>^G(9j}Bb*36BsMk#vTkNbCVY)|8D zbd_x+DQ+%(ui0?!20GN9Id5}vzI<|qSuxmWy-ZuPc26RW7B4R_VelS@uQ)nb=NTSQ z+F9@HaqRiU>9LZAjWHZZRaoI09{VwT9d>ykRJQ{=1HuVHTQ7~%g3fNli6y|=#>?+Fy z9%j`ufrhvo51$*sGAg{QT(vFeJ)(a69uK`ftjC{qsq8*dN+NwfYkM4K7oX+q*9*M| zUdUF}!#TMsvRt5j^+ruBACZ~TRDZah)}svK!o%VsPhA2}VRlKbtGV@2L3V*vKTt)u ztEAizm|#Xh$IzW4rL7+*+ZWd%&anNH9~B|ie%6tyk`Wfn$v}AhulwVqKNnfojDf7K zwG~b`K&ZE(D^l0uC01tg>n>G%s|TJ76;;fPv(Mg zR9h+EV3Wpx)2ydsVL)M4PkeJZ?B?D%ep%m8OGN_y2ymW5<7kqG(gsXyzmizOUJxpsyL_>dbe5X@3)r>VtBL;e#-%$GQf-%`@5bEaw4CqM_;WnDH-+6(P2fy+4v@Ht`mDMNPhv%odpD+@8&=CfXgWa_t_IM^xmmg$Lyc;nmJ?;Qc(K_6|PHx+%Z zriZfloPon9Y9_YICQQL~tz1fN&Zalc6JEx3UcX;ZnZ2xZTW7Fv~>MI8?Wt z+b|J@9F&EDw7*qF9d)Fjy{`1RblB1d7qkLj!5fRfM}%hw#V@Gtl0b#J>mH8hzaXR- zRBCGTZAqq`i5EUC3xeIaucIu5a=xIc1Y=|$#j9|6=0H0WcGx>Id^;=o^s77baYh-v z)mR+AE*^Fk{17U<=`4f`6`^(&325=J`O1{uy+PAS~@Qlwc)<^$K%2PLIuwFj*Rp@qKA7OjtMY(qJ3 zf4%2=sO$PA)bGjW(bAvdF-Pmz5&s~u4R38Ggs zr7_BHBJr!D#QI0%-H%I69(sf>YJdDIJA~pz+`#pUUDXdVF9QT=9_Nlfs&fZK$hwCV zg2>fGjlQ~pi-e#ya(ntj@j$85PvHO@bFB+QO&z2A~? z&P0MI;$@=Mo({hCSZIpr_%XzdK%n}PIxe(vd|TBIBEHwZ?g;GEi{Hi)zxE@v z*DPau&+m0l=%5YLg6X#U5y2gGYmGV~zwe2h^c(3DlV1C0RnHPAu4-}!;yG_*id4Hq zj1#+>^!VRh|9k21*-Dcyi;Fi4K4VXCzWtZ=IL@U@m|3D54oS` z$vjN2J&3{|(&ku5fJ&*`q4vYLHCrH!6{1{8ohfX0xYG63S}zK}S^UpQsH;(WyYj4MN)`Wav4jAiin z#YO`RIoZ&?ir`rZ9)`bg?#3IL)0|8lp$vS)8>NmUZ)&256~!N;&wQ6Q#)!Z-H^y9^ zpEmyd8~{EubK^$Z1ZU49zA~s4GkubGN|a!V&#MJncKIE9l}h76e)_cVcPH@VhQ4QI z&EWYX!Hfj*Yo0H2dynTT1=z10XJjb?3FrQRD4aE<$+X$$lwWUV%pWsi)z01HtFSCI z3X2gfYU>Pr)9OGCib*EVA9(t3`5JmO|*y#6!5zI5LW&^Srcr)wqpm?*MzYez&JJ1#S*uqertS-B4{_wS{x zDAtIpDoPcljj=@R5T{Mr&d@I^>iY5ri!mxcW$kpBB3M+cCNqrnM^yK7plvi(!^Bl6 z-%)pQBCGB3E-kR#h@lbypK|?jKx*%_ugmn|>*`$u`OSt`usGv8c{k=oYZ0o0aL=rV9Z(Y2{Hrf*81gp#1)>g{iaa@_?K z(|!dkqsY$S&dhQ^7=Fe}9Tb#I9Edax%{xPq72>w`v3@tZ@ZvqIOU>BVanZ_ACFz``R-t_Zn)e_+}4=+-6@;M zaD5A+RWS73#do4~@;n5sAL|^qBRzx?&AS8Z_&fN$QPJc$uxmDw)7_Y6^LVeQb9Iq3 zxIiQ#L(mLu#(4;xl?=ha%v*@@I0DqRZgK}L9ay(Huk-J?gY3=hu4-vOH54xkPz;98jjPzsm(amB}w`Dx6` z^hpO%EKfu{xPH=+))2G%W%TcF>0}rZK%bpPK$*nuvllml4;YB)55VX05h9l24`rv$x8}Drm{64U zNH2V6J1BccuNB1;V@+;MW4VgWCNY+&L2FKF`kd_|9vkWSc*Myj0Su*ViTVESUdS97(;MHG@wJuf9b3W*yGT+&WRewB9i zrvP^KCxwZhEFOg!?`otP?#2t>dgQ>#kI9?pWxaa|@_&koN$TCt$=GWp>=B;uS==wc z#8siDgr^$W8jGDa(B$$h&groNoO-^L@_L*7UeyFXz524_cjvO$x%amJ=8w&rejJXA zNYj8Rd@5A$j-Jc+rh0qxU3aseT3#nRZgXLVBF;&+6n#>5J_!yED2SB61{Wbdu)agv zAL+lk`xa`PZZ%cq_thYfuFU*b*L*4aGvXi`qNGfT9dHRnk zaKp0%;kO!aVpIr)x;tWL=vM+_kyGWRV z482ejtsdRN>Zz#dH4MdA{ehSEefhKqrK}Hi7ZW*>d%5@7?K>ZDQkhvw7$}n%txMQB zQyVBt0sT~0;dKPOD<-;cAiA1db=&DiYaDk`8OS{Y@=79%x_#EZK=1%!U2^RA;jYKI zt%cN%c;XKInjyGp5JKZYMJjr}H8O5UgJQ~!TRepXOd28QL2l>3|Hg$yz=7v(F;x>k zqK>(-boM1*z3a~zL3FBV?qDx5CeUgZ12_Xvl^}lpBNdL%{$PbU01Cm@l>jb;^qBDg zZFv|NFNw8Eh$2M3*c+4Wz!bQo< zXjsIZ2@F`8)Rw7}31^=|G>F^I7##tuC+sA_3Cm%cY}NaB`Oa*g=91l9C`sy2`{vlk z(2h_f&{C8-$j{lg@uOpKIFB?F_R~0jfJ4vlxnA6)1^i0mg7bPm;&Y=myCbD@v(2}P$_8xhb>~zs6I8^=tYedfl7@aB zIZX+{rwEg7Mcqa3HRZqp>PsV`)ZWX8Bhe;>7;dPdksh@e0*V+n@UXxh5kM^Nh*$(9 zwAlY3IZ}htg#Sy9ATQ{dS0*LUnEBv&EK)!q0cAt43G#RI3ijD!v8rZ zSj5j0f=fjHJQdvh693(7Ai-xw|672>RKoqg0wgRzG|$O@0wiKU$}e^Q36M}ch83Uv z2S5@q^0f4y010J4U{qXu!e7zF0x_|vWN7~uK$4Gu^QjLRwfl27(!T|eOs0QAKs@`u z0VDy3=b?x`hy?!%kX)MdqhjIeZj3gTjwDn64UlMV4xwTKGyVyXtR^Ifdn16W%Ep?Z zUkW9{K@@A}*@ysiN;~@T{{To-ZVrwCrYz9^07!Td^cip^Lg#$U{=)6rYS+CG07X6b zX8qIce*+{p&LPN(51_vRk{rEk%KvA8glZ7>xvSL?5xJ=rLLu^deYM`>n{EV_fb+VG z_cK6(_R<}(Z=LcPAW3rH8(ZZsRHc~uxjVb8yFDE^;kCQE2%%Cl8Nb=wozHp(NJf1( zPx{*m)e1)*HZDIcZGWK}epKND3|r9T6Zp&uMCYZf1_?;KiM1faHSO5zpno zD3bhYdEKqmT5vInBCEqBW+?>?J&yMOOMqm|faiY&kT_NS4Un)N7yX^47Qdx{6bWZ}n4w%;fcDKu0HE65XcL#z}CtQ!4!gKbv#IGC9fjmK6&<4$mr^ZybK> z4tb~T`?RE-KATz9ob+Fs^3J<1IOopkmWLgGQ2!Lx{L%AxpXy5YaLv|00q1S1sz+pc z7uE0)PlPEKL$wTULgE4tp7W(8-V*PMMNPWU?Zbr1Cj7hKzPpy znaD(hs4q#Lb28D1NHJf&Bzj3lO2LT9Lh+oFiN!}vLC;3b#6`oz{T!0X%*oHrE6mL= z{#sO8P+X4OiJQuYm-auCFrT9@CFInkXF*n%TNpJ9;{T z{k{Ane1c=1Gbfp2Mfj3sMI)8OGE}9rwBF`u1%xMrL??$tr-a9)$0X&%r{$$&7p3MD z|G!*z|GmZef9ohzcnE43DgY@wIwlMNjEao~NF*f1q@*UMM@ZzR;3wF4g zVMg7POG(Rr-<6IfLDtFdP^CkN$K{Fog_c$Aa}uzsHmecq8$7T{bF12L^$k@zwW7-QUW_y{xuX=VnLX zkHdyy1lw>(^`nysO0l=8)5%3I_Fx(1IOl{NFS3ByDpP@%my1G*q;18t?pQ+`1deJ> zZ)GiTsk)EkY4$>QG5GMc1QFIF%yEV2nWLyn!psSTQZ7~yOE&?bmJIv2QrNuGeWXE) zFvf7?SdJ7kta}c(0SDd$v;Js$!ssynC@*S6$jWTWI}3ski7+(c}Ep$td6LER>!~oK#^#<|K%zhBw?=_ zB0)XA$BEC)9<8zAP0hrgB=`4W{*JCrLge|!VV=wWxxoSbeI@^QiV8^qH%77=*?g_~ zsxD;i|B9YC?Cr9qT~@vA%M?UTdaD7HAPpr{l9Zr9l0gj(BVa3*CyMHe#^?4NMr2|A zmkjenAP)cwLFl=)_@9276Ssdk>Hn>^nGOJ0m;gX1DUAhyDk@{Ds-d+J^$ktUppMqI z(3XyxkHI~?jeY(DgF^u$AoNdTJ`*6c=`UWhAXJ1!?-ul4gq^kZr4DoeQrA~V)gcgJ zW$$$9J0b$|$rTu(82=oEa(T6hZf2I*Cwg8<;Ysk1C0p~aMl2Di_xE=f^4xqqzXxJP zB*P}Y@5>`$&K^zi!9MXR{)9x=>)yX(rc}SF4 zNCKJp0IKWjuK$wKGUNqpSI zG<9T!oi+J9EydMT)s*!e-&vaKT7#W*m0k4hd~H)BLn)LbI)gL~|lo1~i4GT$Vj(cAnm*1Qd-jJSKmiD0`tt30Cq^T-1p(?AP37XMZ zQJ0uCmRdiR)Ok>!H`vrNUioo1aWyYyFRE!arg^HVWj8saZ##D2B!2w%FOhoWFn#Je zZ{|E}_CEFaFOj;gf3<#XyK7>!b$GdI@v7nYVJs_YA*t?5ebPj0-9cy6Q0M64P~-2( zoXdskXK?!VsB?H|VtjaEWO2NIePM2FdVXSUYjI>{VRLD2clB~+`1oe*_Hq6A$I|J| z((U8P%Jjj;;kW(q(}RtZi!aXv_4V=a&y(fbpA)yYizmlt$KS4=3F^b!hpW@$o7>}O zC-6D*7~y}CdHnx7CJ_E_If4H+6G#BM{PN5M`dEnn*bj>W2vd~qCGb_VVV!kHb&v=79Ru*^N=boOXhkvrKCVX{FmuVGd zXPwOw2BcGYS0eN^TRf8NAjf*CbN9VV!Ki|Y^WiFel9`lmNd|;Cj;7#xgLa~%X_7Wk zM8-i#3yDVC!MiYymg!t|>@Q7w2mqwd z7YU8a-G=H&ih=~H;#VQ*@h=K_BkEoqH(+3M($i~KSGI#92Aksz^S<@{`5sp#iLPD> z>qMzFEKQZi&#;f{#$N!IG2g!(Zf#;+s2E1)etX%^qx_cs^FZ!9OEH(vY%{&3Ao{nJ z@BmAMe!(BM4N`9_W7J4dh`2A)u4~MBhM61^)Cr*A{Mr$gdqlZHQ+#UVDZV8w6e%RW z(BBCg+>hW&p5}(6xZi*eKi6))=i`Dv&<+Jj#HammFEIfOzWY%WWAfjm z;ogs(arfP^Uwajfv>p;xJ48P(OP>p+902dCN*3~&wteS83V(h{)InENdUq&8f5nDj z5C+aQkbG|WW$|+1_DvL()lKYmNa-JbBHS5UFf$u(BN| zvh@{--fUVR=(7`R)8~uPVdUYdQ9{mFMc7l}ec>HgE;u!Xl5pZ%95PUu?M^clNX-+6 zM!42ZJ^sa32QdOJ_cuKjURnUVe#ZsE4mv@8aZWcQ8`t?o!rn=-wae;n& z)1dsX`0$Ywv1v}3N>TZag4rZad!FojAZ6S;p9u#S)Lh_+7C*|I5?}ub;PxT_m2$0H`46#lGG z#O;g;$4q*dUnkgkH5g30pKJN$PFAv0)3kkm8q~S_Tt+q|ppH%ai#kMVd@1MCvQaqtc`U`#|vZq{0c?Q7heWjCa=XY1As`Q4s_92 zkfy?iQKC+mfzg4&5f{4JPWoC%X_9oue+UCRnUUBD*)-3t9I3-(@J_oYc2=$k{C!(E zbFU1St4r+ia9CJ9M2zI&weq<$$N@k?4@8}%xU8#5SQyKLqtyVg2t>hf!v14jV96Oduk*6;LP&G{> z=tKH6KWoJxx@cTmeMv5DnP9uk|5!Ktp~v*P?2kZB(*Uk0hfY}rUlM%(Fk${iRI zHt>r9V%|HRa%g5i72k$uWQM+WX)cQ-2&LezD)&H%V}%`{$ScwV;fC5uOe&|EdG`yI zs;yOeQ>VHg?-v`AT5D`oz8S9HFLg|})_G5TGkLgQ?!#_th*mkXc=@n0s@m3+J#}Uy z@~}FS)Ybx3`R-u!u(mSY*494t-NpZ5eFwX}V?^Z~e1wX?v(k?((ZJqTIXC}8QUYzQ zCj-exk!~J5D5ZZ9=jyz_Nti0ogHG#~0eDA~v8P?m=$IOo{dtQ!41sOOIh8dicNZ~L zaA@i&lXRhkxIScPzSeZMDL`=u(kfjJFPG9oSZCR zsl5RA4vijvHF7Arvd!%q^1T%!ZaK|hgB0?<~Rakns@@yMc%3#PpLMZ~__eyU!;j*H*? zo8ViU5lIf!6yNyjpq*`!TX=;5&*Ray|IHCs%o!@~Eg+&-uP@kqO<~&~r)Hb_m)@JR zS=T?WYYVS=Dtw>S568VFYD*sOw`8MB{2RgGCy=jXcAJI%E|4yrgfv zBn2Zpet9Fig;NRmdXIpF)FbT$aMhS2f}voM3wKF9v6LcDSyCRM5du|Z3_a9KK+ltL*%R0oMno8eni|>K5D9!6>3QsGXd7c% z8RJbF`KJQR)Q9v+A48b=m5g2FFIg`gpGbh4mtA&D5px{2d2FFYw2!{OBs2ImGj1el zywfp6sNF-dG^({PY8Wj#qB1JxmNif=q4~mnM&DmqJu-49_Qhy;Cn=9dOhQ?!SAbn) zP!6O+FoGR7NvblQ^_DPN4mUr?qe;S}>dISNPK@$~1Dcbdot=Q@?j=u~kdl*NH4>AM zCa z6``q*Up-miLVoNgX}Y8kXt^hcWr7oPD&E^v445Y#V!HNGe0*h$yhX+$L9~lNEL8_1 zsX@34)Q6FT<7zpK6qZV3pCH!}&YkA5K$pHvn@T;F%3T81lutu3z`zztyh2U19m$li zhfoclkQe zAC%!CnZ4Ppz+>R9fzPBbKoOT?UFd@{xFX`Jm=Ylky;U#c$n(b21f1ui^&3&qdNGS{p-(hbdlnf`vx%(2k4M zi4Z253cjN!QH`f%j-{h@CP&_6q89sf#rlLOq#V63cwoV0lq;#bBLw8;4zd*Ibp&Sb zm8AQmX>@v8$a~ee0e?lMN}_rV3KgonPeyY0%Co*AM@2!zBwh6w;f_AAdC0~0BhUu*f)M)uEk|;6O;{IHb}f(E`+0MEO4Mnozh3R>J!n-i7Q4#x z@*d;tr~h%mHSSw?0c@jyO{VZ zMcB}McoSM`<(BjldIaRnTpOep=^)qW3@7EnajfR@ zgQ_!y^nohMPdz!=>Ul&OC=D9MK%6{)y6fW_MV`DDqZ#bc-c@ULZ>n)^m(v(;5;N@T z^g#*{e%=d}xWHqW&bQL<2KnZBxzx`I(_J2p{%wAO3HRerBVpg<_G* z=#32q#k~flZ;oMK^y`prqIf4_SV!tK+gs7@Ikb<`! z46Sz^j)ACCK0Co;YGyuDq9zh505MY#rH*@zSR-`3sjj1+xL3Q0gvg>N(-cEwxe50{>xL}FsZ zt_+!y4}0H?lE>0BqM~DR1KzM9ZpwqX6o!oy#~h&VbBkbuqP_NkTQQ;Nu507KHuu<-m)U2ZbNoB(PPEW=Q7NKktDkcne zxoJMT)?t5Kwd3$BvPiH3E)JkBg*x5BDO?3r;dj7$;8Y8lTh*U{nfcX>ovSEuQV95{ ziRwsC@92xAf+0CYj`w|f3Se$QzbsOI1_@!##mxsD-V=pcn?UZEtnGvHrW$Pd4HAj= znJ%uCa4M2|3PjnS!nB!_JDyJ8*XTP8L{Z5j|Avx{(I>;fJ=xv+auTd<7ipphrryi} z3rwK!EG^&8@bq}TO6*!w26Go7U5x_}#0DWxi#51Qexq};-7z9qfY;x{zoXRtd`E~j zQxoXDf>yjjiU%kRz)eUDCfo2ycE(NGthtR|9f7W*xvyg4tqNcOGL3NyC=wF%)-XcX zUJ9?B3akQ)*AREtaPR*%xV^%So892>ai8+~HlAI0$W zzTpl(txfb4BaN)V^SmP|2>CI{Fpco0D2UeKSmbO%k*10Sh9e)ArwCV{NVlgpys(Jm zsKJBeWssDqmyI_hd*xCg=GYqZ) zf&`nv-QC^YJ$P^kZXtsN3GVKLyK4vzf#89V;O+zo5^OH#JN4DATXp|H*Y2*`UAxy_ z{k-I9W#D7GRVL{2zo!j6%1wOnO+xccqTo%E{LMGLo8)Vol-N@_~vuysA*MST}@^2&5UE6+`T_ut7eq$6zXt1b?Q^BdQ zNAqeg-ggWW>WkA$U|csl=hFBgi_nsNZ%PYB9YssJ6!Mqfi%iroY|q+xc=L}LLda)AGzxA)b1!E9+va&1G(bCuxP;S z+5ULamqigjPy2{WOqvNs59bbe7;%F0Y82#M1hVC_o^HQ@!r8jVq3}fW?)UipCGS?l zxrvSlghTuXv}hHE=$@Bs3xIbWS`3vy%<9=$-{%AbFw*TySV^`F*;`Bsx3dKMGbkc*c1ke;-{thXRA!g| zg2Lg%K1PZr%b8(sibY43EQgH~WsQ3I-X@YSdre6b8cjKq4GF~{CsPXVzpVIgX}8g{ z168XZnn#8|1%7Q623C z9<9)Fm~Z38JIm6n%9Y<%sboaK-}))CyKYjzP`s8wjUdi@x z%@=To5NcX!6)A=yGqbaGygHaKBDVC&b$>x^USQr|N3lq`RAV(^B5VI-gN2wf6e0y>oFK^K%wKcqYQx4ZZVnf z++!?)Tj;CtgXi(P3grgon(OgvCjlW_Mmj_k42aZJAb>9_UCpYnZi*fthP`m8oUGvR zRX0Fi;9LD5-I?9DqM!Mql`4%Bmafjqe-8)0 z9kU%1Pw@#)omzODHIobleoCV#3uBL%Gz{V3Mx#k}m&RaeIscD&>@I^N0^R`7{TNGV zU(minYkheQ+>2{_g;j=8J-d$~mF^()?wx>#+QO9zn)sf&m4`%h-h7OP&STl}I>9>X zs-(h|+`(C%!ffUy#^^4Sx;D^41ExHYT62vuwb1V-VOE0TKON=tDL|I}iqDe@(a+r# zOdS5Y%JOStGU&;j{J-N1(R5j+W&R)Y*!yIXJed#%AQ4t1fW@1Fl8VML?o%Xw*j-^w z=wOmq*2OUXzAO}#QihCfz*sO#MTKgwqIT^9-M=i@2ui^;jR=*Llk7^9m83=oYnmd2 z=?>;+3Y}(!99mTwLtf?U)z?{BTS?} zO;YfhBNV#*p+EZ&oaX;Y2VMrT+@Pm;KR&5PKoYf?X7=vT@W9w=0)2NGgZ2m_;2Jo= zgRmhR_uofkf1o=;@w>*dO-KX$I(pwI9_IkB|G{5b@xHor1Wi&fRUnDy=5Vck2IY^c z_bhFETHax@W%^Eq6|(iDEXdft7`2I@(^&n03H`U<2czxRTA*AY$&iy1Br86`awVcC z{?6;if6e2!gl5gjt61!J7=+VcqjwUU#?`Kbe{Pdi0#roxc}p>Y<{y2-7MgLY-n&yrzZvpJNVC`qt!1&~%-C{OI8V=&hfHcUsTo z-FmPcn~ExWv70$9V=ITYx12;f`qWsY*>7ln2^2&2uY-nYwOn=w#o@B^#1Z zRVTe^Xf4sz{GAQBhty zIR$P*N6|VMFde^ncLovaBPJD$9Ms`m0a+4FEazFLI8nzNlw&hn0( zz?Xk&?h!h<+qCb5CjHgD%5?IMZQhBj{!{lG(aFDpzY{z4*9h9vDR|gEg&m+7POn>pX=^V-@nRFp>lPD~+RL#8XvNy;mXPh*D~R1|B}VANY3Ll3)B?0q z%XCXwY#mh0?zJ;Vbjx^39n@R`baMA}%SCn_G(Ozx6r#M&#Y#jLetxeDr`M}gv31nR zyVtFd*Q?Sgb=0d3(DfP%1%`BDgM04v8Y1*+tm&MLCIj?a%JgcT)Q(-k@AbXuH>*5L zoy<-H40_c0(1X!w*ia#I9Vq&_9+OU%*nx&aZ+z;7R~*@aEQW|N*A!rMsk1FxpiwD5 zKS#E=vyE7envsQmO9|bnsclgP_u6HBfh`+foU!rJh<=-)TrG#tvhfPHXIu9!o82`C z_!cD4K4@m=78kfO@XX&aWXsN-^k8~mtk?O4(ABe+<@=o5e|@BLXTCVXE%g~B z_R(`UZ{&&_yhkEC8gqrY32lJhWv2Qd51Zl@e)_mE2m(u@n8~Sbb$iGFnA}GtE{hUM zd_n;bpDGFJkSs9cc10PW5A%65A?SR&!a9>nTTc{RPKgle^zU!5umaFx2_*rPCE*d- zHI}RzO?3q`1+*xdFnocII;-B}FvLY1dcz$RcNv$?6Bh~q0zs$mAdI3@-BbqvFl5*- zwbE98NNg_*`1u1Rx*AJ}I!efh3nL`PETErTwkw`H_Fj?u7JV;305sU!kREL zA0ZU+4$VxKcSZ{#HBKZLGqDu7edvg#2o7V_Ljpx0RVU27_7I9rPHSD+>N8rm&>u&@ zSTwA-$`|gC7vmkC`4c}sLP8b_GpY@nTzKiHNFU!OLi}$257EJ+_sB_G z!M3M*P1YvP-IV6?Q)+z|un@r`b;J7kUMfo(p|%kz;mGEoWBPdzVsfDXfYo^_>32%3~5x){~NTFIe>z44yBHG39g z3q~r`wuMUKV>&bT2`v5Cs8OLJ zCzhDFUib50^y><$^Uo}sg**U8J`x|P+s9M71(N+ovg2{=3|R=qmby>}W}R#DeD2Do zeCL8e56;Jm?gJY?zHFoo>)!%2`|s2do-tRdVITdhL0s?Jki~<41kq9*DoOGv@#0UTYakFmM3|Xo-fK3jS%1%v~^`qe!dV6RIw9e|182qI0np=P# z?QWTwZ+ zz>QG$o+#<&ub>$&1vI`OMkEBNA@t)$Q>dXNwQd&BSv0}~H8M;Pq9RV>BpK}2hphTF z+&ZMUTM}DTR-Cy;oUtG8gvWzMh)Pw8U`U*ZaG*rGnHYjZ#EFaqKmh{8$xpsiA~jZt z^p#Kx?@UB;zC;KFb&0D8S626GKQ@yGN%!{IB6dA4G-V7-8T-7*w(u4*pBcS2J5;1b0z=OwOUt^ttbzuX2XkW=RTh{O7N_2XI+`%Bhh`<@- zkAmUe9T5&=gMwaPDYqk?D@Gi8&=5#{LO~#nV|mfX5&Iq)PueKS8bLJPA-|w;YETGKQoad6@Qlzk{!? z*vVsKVoHeKP%p`b&>2B{r?hIfWRvH%#FYwfU=$L$eT#xh3jzrcFEXByD5Rv>W)7Z2 zWkm~3X)sIVeV|belI;1>GAK(kLlo2Zu>#d(2|2hy=@(oLix1ip&{%ef`hJ_M=&Js4 zuqGIfHwg>NI(&GfMvyeIg(?Qz5Yr*sjq3fEl(-dj1+1A10ffH%dsB>ZOa(!g!;$j@ z9|@ZRmXN)MP~YNl2O5U;`Hf=bX@6>DeVu}CQV8IDs7Gi|_ebS?pNQ%Bhso)U1-2mV zPt-;*o6Re9vd+k0T5rs;i_KnH>4=C?2uiu#yVB$jxk_F2*5Pj04_%O+8pXo!fv!$1vw|(17M-3x zU#!lDg$m^bJ>&mq7JV>1(_MDqPaGzv3rdrE7IMr+dUVFude+037+Cs-a*@A}N|%N8 z?d4);wDnEJY9}%1jErmTSM`T7SsgzuysM3IuPuGQtMB=QIdH$IZpQk>0%{ge;~Dp} zPtm~JR@cXt)!D4{YZJBq>CZ2aDx2D$i18|q;g~urmT)!0PiBS@wubGO2LEdw*BZur zF^ruwjQg*7{A8GjZInb|l>A@wSj{NS%qZQ(DC588ah_3jtx?W@&Er+0{8OWX|C+}X z#>H&LCI2;#&5X-jjLZMWJg&?$uB!bX^LWy@cGbA(*D7uBhI8V&!nr?r2C6W&!owh7xVbkfh3NpB>7bbDkecc6i+Su~ zI{LwMEY9>>p6Ph4>BJY)?~^a)vFX&Q>GYH747S-Uh1ndN*}Rz94>hv|GqXh(v!5T# zmR`)`JhR`mX3Jm9Rwm6>SIyQ=%@FHPW*gY%n-u0-Z06fy<~wTUyJqHlF6R3m%n#zs z5A)2AYR!+otPRG6IB=peUK^h7nxE`qBIzn!s)@s_GcP71wVE-JygDNZ%08&{`U$oY zDz9I&(OE0@f^9mGdLnQ0Xqjf#-vupehE)N~2&?eq^_P-B>RsLT7G+rUN3k0vc=GK$ zv26q+K3RzGSWx zKer^t!QyDcV|})upHgF6EJ4sNPSeIuzK(C>d3ZYr0RUH8-psYolwq>>%1BgWr+qU( zKicjZYXJsf0aIf}B>`zd*5Zr2J&Ze=(l#xVgOWDFI5z6Nm@4wS8kAdKU^a5;*77%)I%hkDczth~Y~)a4d0iC!#cth#nijNc>M7D+0eo%QD+OC zyFEDmevIThni7Bud?Q-WPLMT<6i?tH1|37K%J*Q+K}ZraZRfqXq$?u;Dp%#osS)qa zPoMRL908ON*dt5Bi<3c zjudAOOboy5vyzsrBJ16=twt4m9w5w*B9}b;q;5yYj;2g`=s;=tOY?wg86}+Pb-Xxp z)ChX0yvB^Dtw*rn5&1#7xP8TxBc|at{YW&)xx>fA@Yn9!*QXYwl83`i_8%W3Ge%+w zkq2K9jrp*)sL+m-N~_UN0g2-@6ZlQ6BCK;8j@M$lts_*4&JW?2s4L-nC37h6dH9@1 z4r9iqG2rT@Ta74ZC@!kZ56Al|K^-Vl5mWq46iOs?usaLu6Iq~0Q{cA%xKil)=9M+I=ou(HtV2_?!RGr{Q2H>8)?ftZ2 zcVg+YZG~dXviJ2S?HE^%pdnPxk&#dG0je82iE|WJQ2Zcn2`RdfJJoNjrtA(FE zvqEOn+;b$^OA+xo@fB+8v!22ZP7{1CeD!&M*CzuhJhH9Kfl_MP7Y+5}<4NU#^G66O z#$R^~gDM1>?^(i2J-=X`VD!Q+;*!^GFUaC*Z|W2}wjD8l^&p%23unG0nU3xd zuX^=_`d-9IK%ZG8cPSP?EEs}MIYXepDoMZy%+J> zWRJF;9$a2Kjgj|&S4DD1MUzS}Uo5vPIXOR#d=t6l$w&kSvd6sV@YTunjeWLMSy88a z-HyN`b~JLkSPSyO(*&@7yJ+P#Hh? z(LA^kCLm!%0m5RP6aR#a=?ggPH|E;#d&8$Vb(P_lyS$XgD(?>jWK1lkk8ewF*89}e zf4aX+VEo4N?f%=I_7nd$AAvG0?`g$=kK3;FL7|L3sQK3eJ}xxnm|Y1j#S(q((+}gL z4}%51M?H@hCT*g$C(@&Kg+cG0kpL$)?Tp=tI|B{7{yYv{D5Hpa1+=)Im z-b@FmLhg5b8eKSE3|GN)H8$j-*N^0^onnpA**D0*$bs{|Zew1m)TFrUPo8e)1o0bYLeC{mpSN-})4!B0>8!?IrzFi2^?gww=Zi zoJ}xqHU_i&72JhAkacI(;lRkmLkCa3^c-l{Z0uUAnQ3+Sg-_b7uV~RH{UcKE7P;a6 zdY}{4Ka7t&^UK6l12R5uR6~(h7UnyweWJX5v(RB$J?Y0%WSHm8EB9Eb-iDF9cNlbc z3Eq=jtux`T(_5gC6ajb8DClQF>S#JgU41dS@CND_h*#Q-zYB#yA|v`_$DH!9-u_Hn zaO=iY2*{Yu*yy>4FF%m|^&ydlJh%P2w0b}Ct8kZ2eHwtk8-Fu@C1!*Ti6yo_6Rjb^ zR;IR!ZC>Yc%JBzMW2fC;OH?vT!@ta&ySZowb>6w^F9zaNW@+mZ&@t_Lp||=MB!-`k z+4?3(r&`JyFB+|dH#5D&VCN+t&V|psXobQ4Y=5^yR47R+N{w*ZznR?PfoRp8HVGoa z1B}sZ>yRDnsT=w+L|7Y#-vl}fnj&q&L;3aih;tRBbFPK24IZ!piQ%t@TcT=;eJfaJ2gR;L#~VG;&)Gki0wYflW~G ztOSeL>^m6dFznkWMxIog=skI2qnl}A(1!pZ=fxe!Uyy91a#h0{8LPP{9CuB0Zdau7 z>ln6<|_(x zfFNDXse`vfNynA%-)_!F@%zJ^ox8l}6=`9wa}WUN$4G$4#~WF2f9tm*R6W^_SVDoq zr4-FY=i(kB2FanXc73mZ5oczi0%A!U-2Pn5#l@lmK#~A2*ZR zg=~=b1&7kvl$K1F!aCgxLl_nsKPM%)Y>cxL2u^oFxHDWCOTy7ZW>%N36S_O-$vB!e zPe$G~Z9=g1{#3lejMHvoC+Y%zl7LX9}8^2)w2gCoE#}R+=KI;w@6SbaE?JpVc)9(z;FAY&GyDKf>UrPBM z&_~53TL8WyOSXNQQY0~4p|zY9u&@d!fpJzCI78zq;jy zhPmNmk^=t#$g#Bi(g51RD3!l`U?Zl_b$ycD?^%{;3AiWRek23hznkm?pbC@XFyyd~ zWq4y4qF8NdE3Goa-Y~S~g>u$FvIk5K8KVXF{~-~ABw>VvM8lFqWg02Y^jmGeCf(u{ z)P9jzV%&q}H=|#{(vMNz5GEoyJtu{u0FjZY6G@}flA*{p=3Lg)QWu0ncC)%lh4h3N z67=;pkv&Z6o>e+|@>mL2NhQi{sfnItLzEk6k&?JRUuo*V4rD6P;*NyMv~k=n@Z5o{ z#}MgRQJeHH)@Uk$a}BAP>{)`BsH`7_5Iq-}3YLEWsI30BBw>k2mG~3U*x1DhX^+~` z!nvcW1NZTbdsk3_`(stfvND%3E8=iDl41<%gi$LcJ=xZB*?}V^fL|-sfhLJSiM3Fg zJGVB6^B5jsg#M>At%d|PmUjkC25G9gsT<@3G7cgpyf-d%PY|ZR`M0IwPu5M$T*wDr zS&eMLd=bpw6te8>=JT}MyB5EkH3oDg7f`0Rb6eQzWMqAtc}*KnubXKE=3KbZ)$8bA z)dt3flsNV=QI|V!O80h`IWW@#OW5Lg7K~?mUO@_-F3Y72`)1RAAZ4RpaKv|Mtw%8a zRJ#`=_(-K~86JyOEr=0WXL!EejYubyAMF1l^CQzdg0PSW3&+yc+6rxl(VKcr_D@TM zlInRC?I1|&LM>n0q-u@G9eJdYDfinl7(qhh1gJuV}u;)zMNq*(-v4Ld-v!T4#O2aYUhCNsOu*A}A2|D&|o! z)k!!Rn+FYV5G4bUi1`-ip1HCeg@)(xH_#GV;dR8xNCS%{SYjSmvNjDHX56&ESa!7H z*ORKo9J3(S68oh7Zxd#BzYyfEeqIWs(f~SD8mh~V2xNDn-Dm9ws##YwWOT0*K>>Ki zyfj)y;O;KhRrmVyvp^(T-&kC(LKsf8B$}xW>)?zDbzbK?8E`K(o~-N!#>+l$xa05} zBDy(et~esoaPc`jXorkk@SB0nWu)Tc*6Tll!z!VTygcANs<&tZ24_i$k%hsm3PLXQ z=EcE!J2r%saWevh9tB7}hw2}NeAE#RxC)S#>vrfq_DP z5edyF!cnpo#9Ocn@^9?7o%3JL!dNA_$6guKk;Rn$)J(!hTNZniL?RELEL$bOrSS~X zFa12KXw&^Z6pt~aLo7{&m%R+l%_-@91+_h5b;I7atYVy}7Y2@zm>LCoW^vaFVlP&VCxv zR$Em6bn5x>JLyMc7H$J^(9p)~DS!g|O5fi|$OeC6l>aTljEt^f3w)gL5$qlotaz{j zJ*}7Hbw*;z?3)}e08&Cg^o1aH2oirGk~jn`UkFx*AnO+*n?q3S3Q=4ks6K_L!4R~F zLbP}YdU_#xJ_Mtz5Tg!)*;a_z3&9#G#F~O&FBW32L2&j8an2yPH-)&*5ImG3JRImN zqM}!nP<(ns5k5PVfWPSfXC6a|eTs;Kp(GJSB=Jzv^di!H=$o>lH+4|5wj#3L|Cq<* zQ&5VLb{F^`L(l+@Jp#ndn6F@G_QI5n+&F|9f^-HUl_ zPEBuDOz%p~;8V=-Vjf2nGsaUhr57{hQ!|$pGryR}ZN)6T)T|@LtW(r%i^Xhf)a-l3 z>}S**H^m&!)SM_KoH#UGL?v95)?_FEBu)UBw}eNWhF89XSDl9M#XL5r;kPT{ccl^V zDG~75=0<@4 zsdq9yW%6STANClef4`I8C=Whj_-GaW@tNTRO2vHxLx>MUkTf`y{=l34K!&#>Or9ZJ zI6Peaz(fDwhbdzOQF#P6IMV09Ex5uBt31ksA(~k>DxcA{>|kCJ5L3(mb_U0e9QaLD z$p5H_^I?d$3y(iL@V=>lJTWH9mnWJdz)3`h9+Z`Gw3W$33@Q5IDdLB2@`wLanbP*k z($vA}c8AWcm9k!y8Ey2L^5L2BhYsnL3%N|$5oOup;GDKYyWUEfp~_r+`aJ&dytPB? zy~-aaOa=611?=EL6lP1DDrv&1A`JRs`tV|Q=C}OJO`^>3-=%PE$I`joQai`&ImYtr zGB_n>SunG)D|6*kWqE#;U3OKKwq3=WiHf!(gQlt)49BX)s@grqI^n%)B9)r6D&0Be zhMUp`oMUsM>c&Oedi;rcdM9n_>gF!G7I~-2HRe`FM=0NMD`>aHmBrAfy4{hkBZ5Vr z{kXxNrStbrN12mu9ZNTRX?HK;xY@3{C)>7Xv08JDMIHz66$b!@0s2r_(Xar$-08`_u_@VJNyTt8^KwoP6Ia`+lNF)){drEC^tV9zKYIIV8P9`6xx9 z={(B}pJKKd$wv~_tzDo@Td;Fk`0TtmAS1pb!@lA4Lze-D}Ot(6)%mD-aQOhsC-V_S5reHn0D zzxL-I650=zEqnZ2u0oLyk(!&AuQp%D?>@`@0 zu6RR|M7j0%;!=Rjx@l_QR9Ag;-ybQQKC&HGz|0xdiqz8@`|XG;C;|TbT(=z&cJ6x0 zjwSU9i;IvD(a+mA2%KO+i2>3lN}>9}kbKW3%3PRr-y{113_1g`Q_QqCg!Wo8hKhucJKiAn9>=4jtrF4dv93rgKL6`RvXv+YcoM z64G+x(=;U1(GrM&`jsz{bhwc-1}5#em`%@E6g-tEfopSYLK)3M8J_J?8te&A)VF^Jw!n&fXkqiWNH z`g_?yDMnpR^8E%yX-OWLemt+1Baaq^WfuipAftekf`Al}Gmy-eOQf9^eWOX_m?TPh%P%rK&nC@|~4p1eaap zwG>JSQDTEs=pUk>R_*q`$~b+D-~oz`YZFvy(|O*BWT^*sKDql)@mrp^NW423yg&gS z;hjP1W)>6%I4b9jOwOrpf;7G4rJBx-qCD&ypejxr}+EE{Gr+P-Ko&|4d8*_or*tskrtiPN0;W7@zIx|;#NSU zU2#N`$H|u{mCw+`7k&BE0Js00ukU>y2YCfQTS~jrJWqg#JIC9+ z;(KdsbB$V{U`Px+P$x8XzYQ0&J{r^gLwSdI1L!4PN-Y@>d*us>m8Sa9x@pHApTfaZ zEtFHj{tv_7fj~&b_|9(~NEsU%A;L-T+yQIuh*N>PAcdsH2nId43!(7|n+km{8BF)> zOx@Z6oV3e0g$f+AuRIIMmi^2Ad79JxPcVaHOu_cJwb@uv5fY|?xyY?0GuXS5#(9tB%tJc-DGtqOrNk--an zZlq&>-;au}{d{I>5snl1veVto0g&Qc`B?i9yorSPg8LO80FHwq}X7M;Iwq!MyDCSWs ztvPSest~dL$2@lAtsu%2_>Xy<>M)h}KjyJFVn+wV?`(yX?`V!r)tW1hJMcz#Nd>8} z&HI6<9p)htr> zMm#GE&@SHIzHR(cwU&a8@-rL8gu>>935oa(iUMG;#cMJ~tYqKe4r0B=aPPnoBTp;? zcFoar?q>5GvtaO=&Pw2vgS2Q)T9(;K5EeaTH4TIKI?@p#<1|~MM4wJ3hx06A9bk9b z+4bU&m-B98j3q4ELU1iJvwW8|cUdXv(S_)`3<`nzpSVD)<=8P15*(=Z~GX zqJPUH?lU>%yR8MTEqSMEtBN8MAhg%e($_+@mT$`Nk|))Fv7CptaZ1+A%4?C@L#8uK zvDP}4Jh|quRuU(d+_sYiWJ#D&Y#15ae2hL7N296cXO#rH=(Dk7ZQPBoH!73vVq@9o zcUqVESdbi=1cWSViX0dYWf=N3+-=2}MSCAu#`q{JC4FUsIt8@5#)OarYZD7F+9V1& z$GZiaNPZKBgt+2|yLRt1x>#9+_dekO-EofSL&ER@xX{oc8d!)+&!>e4dMw(4+{6}J!LVRiKtVI7f;(mX+riiDc5OF# z^>%}7%gk@xd)L3ouo?B*y2-P-4+Sq;(W2>`=#0s#IMxxiJR(bayqt&PIjiLEBy{UKmICCd#Mn zeo|$nPb|EP*!$knlyzf~65loPKHU|N*Ud!8{lI&b) zoy6TCN8~UYQ&w4wR8Jz$>@yon0N?IAWxnQD171S^6rItm9!8 zDJ^!~qol9i3-4qTD#EzhHbXu;H@jW;L}8UBB{)5X6;O^b+ArQXvE>vq0fgT(1z?X($Fx^)fJy^9oo?nlo$zlJguMi{&v0O_N7rLYu7~CB7MsN~e=uc%j+99#{nI0Pwp$joG-78O6c~n-PFI8|;Z0`8Aekfnfy_ z!a0!l5E7Ph;fO?=6egwxA+`buiZ>M?#(sl36T=^d9~6Qu0A{I1>tm#?=){{%)`xDq z=J2`Jm)IEnKdIwE?fZcnr4!Sxt)IQFD3MX4GgDG+MB+#bQ{ZuMfGpiD=F{?*{ogEI zj$-8>+F7(xJqRff=T%tWnYA=^1&XaEofME}z`?2lEhSG?*@&b=HQ#%xpB6D#>B3q@ z%?Lgq`EYeQo5frJp5t_y)llcWF?5c!H@N}f-m;z-sf|m@zS>rYlcbYDK zumAq(*7SJgd+}#0FyTgpgfmwtUQaGa2*TrC+n3<%WwG?U;iF*`lb{r1xPY1EKPh$Y z_L5JGGMmmKpjdd-n*SH`Up!O&+uv~nvcM+FNnf!Ui?Gwrq=U_@-y$_mH}}%BsSv{6 zioKms1FfE{;ny7@cP88GAQ3D4^%V@2+LUh0N~bC5Mb{yG@)*v z1(FO@uHpf$HB&*0!>D9<=ir$uW3Zfw;AJ_~_qT<4cf36l5;Icmv+;Z{S>+HS7vyY>zt&x`kW?Vq+gTEru zH3sn>h|0#v+hYS$-2@LpvgG)&4+bBeBl{#Nh}S;^LuW&3pNoGtIk&YrVi9hU2p?^C zsNKv=**I4>xyN+!t569#!O5wCNRs!u;Q;K!AE56~hLa_(jf^({iew9L=~vEBn7=Dl`If=!T~VcfMd8r@%nxgV_XYzT&;}(saTrq6G)vC9uEF& zVjWlB{3*Uq*kY~g@L<6xWkzkUZwcT8*l+@>rcX7MTh9AY-@&N5iqL+JKJ?bpQ*Vs4 zeSZ|jgUeQds4R#b)r!|Ne(Z4^s-J%=jt23?Vf8g&FnoTn;i%$QZDuXnB54Tu;Yu^0 zTx@kzO0QWgE7hTmOLgQ(tX>NsP5N=JiL1m`?V)zy>Nuf_2NsBh&Z*6}h4iH|ph$55 z>@}$%EM$hWU{3%AN!@SO!gc*KsvRKlk<*5AH2$>OD+ed^BAI$b+svy#+)}IyX!`qO zyJI5647gttt6&DFy(atjj9M}yDAi#s*%jvl1{~wG9%W+vxxaMZW!X<^1%`dnBa7Z;;tfv|2Q6%s3!N=n@7HhqIkr8uKI( zQ*IW2>pkUhBa#{i8E-W@qM`gv6LehVjr$R$^ohSS`Vfh9vnur4vlQ^~Pvs+YG*pwM zwK2m7I^ThJlX?MXPR=CS+VGgU2~w^ro4vasgV~r-R|=7|A-`2mkfP5Z3GvVyt$M_`BjTXG=KIWO>?TDz_VFd# zM)oUOvqUykTxx9ko2tapag47g)m4)HZg2>Rls3B-8}q;Ss6UG+XEs+28_Q4Bp%HzB zJ1oR-M=CasL3Zk&jLbR3>Ia}g8Ug&F!a~qj_clLl6h|q1^^{`pAy<~izWDqNzcx3z zC$rWO2PPg6taE3Y#MC;=A6HHPrAeq8R`CeMSB}Y3uVZ~XPwjV3bq^&U0JgncpfGb< z5$2@X=}}Z+h5s|y4bb5VRdTud z+(>a>bQ+J%1oaqfsq6iHF_6x~6>}thJHxZxJcQUeqKN0J=AUMexS-;ds_QBu3WlE9 z%<<7_(`2g_PZcd*UX*pP;IiPsPx^_1b4RV*bs? zE5&+AuKO%s$;0AMttY6*Q<` z>$R!yrCe~FEw2A>h%_y<2eP^=INZP+Rrm> zj>}VbU4mdu8d7ThW+3fF3;yj79{=WM^H=3Q9KEV)#g9P3rD8QiKP6$>s;(1iC7Wa= z6Y5|0Y*j3+r~WsKMT#XDz`m))XTtC7e;W`))LT}ynhTe2q$lyedQ9Oh=)X_XfhOMs zV;UAXsD5BEBCRu+*HueVpkF)GpxKz%!=fN9&iY-+w08}Sk2bd+0OnVI+hGs(THrm= zqi&jkO2drmmDb#xir)I?Q@myDpyR?Dkva|$2&2z2W~O=?CWv-#J7 z8w$tj0MzuNAimiJSzs90$|=ol~73WSyq< zot4^b7xZK27G0cBUAGshN79|YEG8iih+IPS-K3)39@>~r_?<6^x&XeZ&x`I3wyp%X zP%yC*I`JHdKr)_zhwZ@oxEl`#A`hK9kJ~5@5nmSxVlQh2F9n12rA0AS0e50wFP@Ba zQ-O5;pZa}m-bTb;mOsJ$tAP@+IG6fMc1$_PKK1!T4({43M>^@=OU*7)ySG(In zhTyJ&+v-o}%?z(AgO3{RE)VUr2e*vv0^Ta2$f=Mos!rH^)WGBo>+&!l5efC1yAY18 zQE(j;4-&e5^C9wkNMvjS{Z=SKz$%Q-D%?K|`K3ib+c31CIQ*Av>zfTU^Uc?)kSpFy zdXGLZY#dB0gA#B@uP%ts(@JZT8R6pB3cHgCH>3#`WH%QKE9#&pBw;?!h~gXgo*(_$ zjT)F<82Uk`m$QSq>n;YNgg)d49m@>+*G_E+BdUl-hJ;WLEQL?|(HxL`GP3-1oymJn z5+UL@lDYvVfq+saqsge_9k$R2SwO~j^fr=>p-b^(GwCqLM9j`esF2KKM>NeZHbEoZ zFC9#6g5GFLLHq-8{*Vrz#DrH6l;jOCN?}HmLpl{Lx{su(6#(oG(6&=eH6u+AL(a4| zf>K+cCIi4|W$7QVP!XS*K(0on7LZIzfHwXH*kU8B6+OqgGs7YTxt26XZzt=$QI2_5 z=E7apaW&8#lBsqA&dWRxu-|6iHZDENzbR95F0*}8KI%}%Kw67! zlH(3(Oc2U4U`b{WDOD=0Z+ufXm<9cOUtz=vSbI}&omFu9tK{QMuJwJHuLWv_Lyk3| zUgcNn;V8@jigaQa@-g53Et%lg_YHL8U+AcYKqL#vM5&FQMv+b@siJsDM}1E0s>m1B zSakIb2lN=^9{-mep#wIKjS|%JR_n{J+qWw&ygVsF_wtZvRLZwd5GX_p$q>_mRK572h2|9f-(8saB%+KGJ zzCrmDDa2+<$UA>Y|DZDMo-l3J`8`IEJEyTRXxlm88k9E^gle=hylygwFv%l-obvT& zMRcC@UJEXq1}>gIwiyVtdy}QDFSRkjzM1$>E!?5aSPZRg1fuByE{#Acemp1UMR)g3lu68mr`1^g#s-*_x*p~+53HF&z}9^oj0>4A6Akz zvpyvG9oKnY=h3SDd30v8ORsA5Fi8p@mYW8Mx0Fng|NUvKM7rTkmq^$LCVjlkNY0bH z&+2ZOQzcu#FDU(Y&bOv?LP4MO8Qt*WeW<#a zM-}f2!^Ery*nXGtQVq|-e8lOFhT-8`I2wo zr+3{&8%a++QLnHVEtCA!vhrTcP>l}S0}I0Edw+{eCRwK9P>@<7-r9b?vy?(tkXT}P zx)%+87_dwUP55(3b1IYn@eeKii@#qwUnK)&VhaI4eAdf!_)KF=8w5>c4*`i}=r+nA zx8k9XBv-K-u@Qu$O#`rUwUF}Ok@&`i#G>#6&3uM% z9Y}pTT~#hB;xswImvqd8mf7Glsv)yhkH|9d{y9z2#b{%iu#rjk_ zpW$hjczP{Xodm|OvjkndRRGNJDx7uGPS=1Kf9GVA#|uE-ZBc^RpIfO|A#Hj(-yqa= zvQni=gzGBQZQNDU-Qmw(&?Y;TPIH<~r_Z%sBETQ1p;YcQHxi^vuLj-dq1sm2TO<)N zI+%Gw;jQ^oE2vgKiCo_!8aLC~)L0qjlmaM#t|qS}^=KrSbU*&S`SwZbp_He&k|X~N zj)mpGK1eJJAHVclRpGRM%0uxdI2gu8hx*HxA=Iel$(6)N^2_1kyl`30lzPTu8*Dzr zx-?eIPHr4;8%Rc}7|UNr9ZmhtI-Zz^355|CcX(HhX(#`=;pLVvscSRAhHad{JG;*a zq43RIEaO3P1}&!dPQ?a_`4`n$Kmn0zyTE4T9wi0$`sz?M8cb?w?q_Y~K4!dHOiuDg zfsB~|R%c2ST=Ge56uH?NlI%AhL2cWh{geb15!&t+yU_d7x(sfB&a&8sj=utQNA!dov;)`8BJCPe@GXdcOrW$?8o zn8_=>B`LU%uvEq9ss3FZi~yq|o~0%}-R4YC{J6pDcY;U%>01>_oQDNQ)gU#wY#1R; zdR25_I(keLmOYg9?9H8l{rF%h8aWI%?>lPqTNf)oIdw^yGpzu^L)hrBF^SO181SYj z(k46R+dGc{I*zeqoLI3d6LRo8aRJdxc1P$D`toV`S*nn))`|T*^PHaleCrT=q|GbJ zSUovwR+eV{N`sp%7k>~cF9GO6DVbSSA{q$Q!+q#x+X;Dya65d9?o7TjPeH5Ss;WE` zbGmR*|KJ$GO|#CwioJSR?w7^OEQ0%>FKNt~k;|sFgvYvj)ExxXxRDc_2}5ncBv#v> zk*+p7oz*IOatr(#aO}3dSn=Il>!?%c5dWx;3q6pKT*VL7O{AO}vWfNFgX4RGp?||qB=O@3a5;! z!*}S>*^?hi_yKg;o&FT9!OMpaVUL#^`AxEn>TVoQXqSmEkpIjv$kft__GBo=9gBro zPZ?bnE&n-fb+iZE0JB7BoEC~>iK+S-5OoD$nvW!r*fg;S@QJ2zi}e)6x1xjFw~t_E zAX@RCc2VY(_g~}-aJ$z>QzA-{tp9F7?YUd-7S7H%|sh2qG zy43GR)fPRNi>nN9T{4D2N39U^=n1kwVhNMfj!c|4_FT6?!=dE|aj)3r6xEn#1x=Ef z+&?oBq!=k!e$R*rDt(^x zJ?vz^PR?=q^_nCo0Il?pk##K6`7LG5Y*|3laonsjK75a;;-hz+L7$;^Vh9>N?w0P0 zrI;v&Rg*w&sNWgq{qe(uNuAJoBN}h{+1qo-p=C<#Rbn?g7N$06D)Bvi z_e4?6H8kQK_Qo|VzN+GbC7Uee#{0e;4%r3vC5S-e)ZJWG6S*|m(&@%{jeo1MPLtuR ziSX3N>%`1v4%-pz_iqgXlo@!I9E6hqSkds7Fr5>}a7qM0x{v@tpE(;5e&uT7QAco= zyX$6VG|jkyxQNo|s2h%%{)$1TlRV7P@Y^P4kWim@HK)Uhve}VJV81stmw#*0lX;hk z@WAKq9;WKwwk{HTyOuaT!z;wU+{6YBoVvG$E_Juu&KkZwD`^d%_-1xJdHeS9r$_h$ z&d%4r!o#RN-{CmPR&%F;Bi8C|QNp1+7^*?-J0)!~Y;U%4T#cH3+qX3e;o7`X5E*AA z^@veTwjpv9nc(2kiIXhuC!NcG^Ht_N*Kpl6!7uG;=jgWJPj^#{i@X{BZU+oY zA~Px;mq}5@DiboUZS?M^1}{IdQori+19g9Hd85B}djOxUx%8plXQm{LXKh6P(y_Hk zT~}83q1!S8F?5Ez{(i@Jj$LT0)Eh&wFZT6fvh~+jy`vfeMVV;I!}aF7_jasLl>)C1 zC2${3bv{o==FiCQsiNW!kYX}6`en~A)mkPkBN9ziMh^WVjKWRN<4pua%g8n9syoc3$K;Jne491_Sm= z;N{z@MOXMCre!W8P zFDAtF^=mXAM3q_^A=2zfpk3JyC1)=orlceiP`1Ta)NUiz^ z22OUhL(BvKV_L|kh7JXYlFR#&5w0zIfqgG)Z!E<8xi(^xpMD5~HwKMvI2uUj1LEQ( zL<=%G&kMQ~ei^91p1wnVX~_4>F^mI%bG1SJOIU!=i4(X<=;|8*)OjiB#Ozrf?iKyA zL0<;A2~hJ2KRkY+EW-Y=QV+>OM2JXOl~M#94sbfqqeo0Y>E$Jhk%%>gdpsc-W;A6T z_oh$G;C0mXZS24$;ZiTvC`&XgK5&$bVOrR*Gz(nEUM!@I^Dr=?4W{xjC-g|r4z0tVcl0TdM^+GnPK4K<2)#Vm=Lnyi zDG1DKWM|`y6~(hG18lQAMcMNm{ZZ?ZuE(ZiD}f96E*hVzo~qN)T?T!@WVDEH0g_VwKFW!peD>_?bV6 zAYE{jFo}RJ^_70gonJ~jkVMf*H|a!>Pg;372!GFxur(gguCJ-C<2pR85I;fIKdJ$< z&ft|H5-rp7v4Px)Bw6#ZMMyjB`y=-Wq(oJxBvxc-V5ULZ!#!8iR3MVCP%9lNg z?K+fHypqJ}Xt-^}wJMkdY#G#T+-~^N&*J6((3q&zxjnbI&i#jfnmUcHUj3LQi+htXTJf|IBHYi_KPIwVW$OFLQMiin1 zX>pMgmQhGCM&*VgT*s{G2g{v%<6_I(^D{101g@yabjWp-mGcVnh(&2yF3FQWL<@`- z#!9<2V9>UXQ3byy;cUS zB;drmOjx^|tuK89>75MHd_&I6yGu8&O-C!k0ga@uG^kkXD{`@BN24!I`yeJOlf&Rc z^u~rC3&{1&J5{hcwNHtY{i8^n4xtEyTp7lUY}NToU(u}0fzPYnlRzhuXjWI}S9w{{ zIZl`Lni>3|lx>z;FhtY%V=?4Dldq76M+RzJSopGvjLwAEPA4xd){?W3)EHViBwD4) z$heDHK1PwPL-@)tyZogbk$NyFvHaD3Jxt%!lGa;~g_ zNc0%r@O54CWGVH8D9$^f30r~BAD*hB2_-3H1VOsoG%#wsPPrIa60}Xe9us^9h!?;h zrK3|Eh9%Oj%|BvO*;gsfUfx(h@giQ9LMoB?#)kWjFWWSV=jE8v_%(JFBVoHrbJx8< zmbXYpVwz4vQ*e0-zC*1gT@%s1ki@8XwM?$-BEf<-Q($Uc5hW%ps zRmzUU(#=tQc5}}y63M9q)HdW~T(Ws>#F4-MoEfKG6%Wc5`>!*t@!jOrbxc(?S>*Nn z>K#w|%7OjauId~EO7cZ8UOTexwf1;vwfnJ>Z0okxZ_0o9>{oUAIp(OYhHYQf`$-Q}wVy*Z#V7R6lB_Ti^bSoKTjQM! z9p0AnI(;vK0&;Y{VxKZk2I>jEkpRMmDy4@|NHhUWNl#rm51)qjsD@CRhSxHO<<@nc zHEDvv_#YZ|(UOPA-*{dkOSEyrVk?9B z38JuZ%Qvo?9FwF+V+%bK_P9-UO_N5{lkRVeUhhcCMH91d&1AA z{^(C>1xz8-1|%J(<t1r_Tkar46Rj&MZ^aX5x~$vchIQR8JMnn`hwK7M{(l ztK|u})kd4ntm<&*hMDF%IZV6V=Fq>+F6Yes=$##$H|xWl=YO0V z`|L2#^kQ<}a!4TlvpU{SlDPXT54L*a9h}Fnq7Zf*rA^PptiUo zvAFRyxINEfp?@0OF=8=OPYEhQsKd)?3FVm^dGq{tVkG_1fDP}Q4 zE=i#wM3P1;i;&(Oc|E_v*lhFskF`knEb784zh24*1fe8Bv7;$Rp>rX4L*Z~m%#d!P zG;CE$-Byg|$ySHcT-$xU)^9mijA>|;X{jN%c9WCbhI0#N!Kh@t3OFm1`@Z>T)xBi3 zp!m5d))zi})1y;n1->w;B9@@A;dX3BRG>2R6L zeO|cr>jbjs!+7y9KW<%iISbcKPrMH>`E_y0kC{I=Yu$BBB>@uhLq8cyA6@k{50~nj zKeCr^E(UyJ!h1LHeZEPZQri!d>(rg@{%N4()BVKeTS?Q3h0h6i(_{&6-EK{%zkgoh zRIF~+*i2a*T-ZW)f4BX8bA$6sWAoOr{udPLFJGGt4;H=%bbUE*et(?u3GRMPBDs&D&c?`+5Hka>Lh z(!5*Gx0^D!^X%iU@bzxI`JPw!o;%H6{`$_Zl0D}?d&V^T27`Mq#P^P(x4%m6>kRHo zneUr~?TeJ|3V+#`Fh3Cav)@X6KwG+h7=FO`=YX!{;LV$ZeaQm`+C!R>Lo~_5uf8Mt zsl&K%VasPn_v}ZfGDr4bG#pF0oLi18=vYZ!Joor}6gYZxB6IBjXoD;UMj| zp}%xprQdAI^(Wt+eeF7%q-9^^IuoY-esXg*Wbu8b^y_NNZe-+HGuJoOAK$GGzi(=s z?RfmyZut(-`jPzNNB;VcxW7LR7QdsvIJYD@uZj5at>x@@%h92Sg$c8GydPh>k6UD{9M)}N+JKh4j7T7rLBbN{l{{AKU?%Q5YjbL%hHrC;vn zzdXUW-rTponz#O*w}EN5!L7HUOSj?Yw=coS;?iA|=3R{EU0m8-LhD`9(p}2=T^jgz z2KVnQ&EGkmzw^?57qtE^LY5xRf4>6Xmvi4&YTj3S-q)tx*SFp`F5Neu-?xGv+PNP( zH6OY?A9~XsUbj9BEIkaKKMa8%N4OuyG#@8CAE(kDXIdZUmL3<*AD6&?R=EGHYW`XG z{Iikv=R@nCPfLHc&i`zK|L$`C-Pink==t|J?eEvtzu%Vren0FLio(g6kAfkmR>(aPm(?aIXB(Y%Nz*WQy$B;m9e&)42pNTrdCK&8+* zP|9RdFO@6MIaJBzG=CdSp?joODCquWyg>I@qf|2dFDj+piB^St3axyh-dCL(^^zAc zl=`Q74f@R%$bo6!3|h-YcuWunON+~RHc zpTB6-Mi*A2F?i1vij6L9CR1pnVyTU<>}GQ~EhmeOuN@XkBwwP_nA|wMt5$!dP-61a z<$bgHP%MqE& zHGc^Bu{HSg663kWW6;&%!YjpB7Jov1ecu|2dv5tR?EdHX?WtFmPZ59r{CUFQfdMfX z+h8bQIUZ>=GP^cujOWojGFU8CZ8A9A<2!Ut`#U@25yIRZt-b~z$VIbL}ZL%Vi) zGRtUQ1q#Qib_FWWab885z=L+h=PyzDl<49ZJCqpGMtMN`TcB=6&$?>ZTZrF9I3vWmBYlt3Kb!v#8kMnCv-X3&nN5dPYCF$3mS-%7b?fPB$_wi2 z8`^j4lN(yb2pSkWR(BhidQJ!$ngcWCb8)dC@2xKp=n!5J}4>PRkak z&*nnQRz+*yjePAt4-`yHC@L?HOf}*Ev?!{fC;~(Q5x}@-q-+Gl%=jd%WR&a_)LhT$ z`H`1_a!Lxbi9hFr(X#2$vf0x9bICvmj~pGpGLyI_gQN*BzpS8$A}!3C7UsnSGkF2i zh6&pSDzJ&`vWdH~iHEU?tFdXT zz{Isx#2sPczA$l^thR!ZfwHQxv931E#81V>&%)6~+tJV5(a%~%+gn%L)yc)z?tZS6lG#&IIkO5;1#+=vit!Z+$qg#0)v%a$SlWPUW}|HO8>Gt5Hlf}-yDl`ZO*Usn zxo`|tw5D7>FJH5v(Xgu0ux(hsY0@!o+W$$ueowLKRJr3orR|%>zz>a{Yt5cJjn~&2 zgO6Houe9FWYYsmd4xj3b{L&eH)Sr7antU*xxiy`CFkgAJTR5{`ym5Vh?*8H2dhO9} z^N-7?$B5wzukD}S2akRyf3n%c6JX*=X5wW=;`NT=^?~A@f#Pr{lY9^D)L>hO`NFn|$ic(ffe&wo#*;=*;-_v3NB47A9y%x9HO`&Z zeR=5LJZe37>^goNt&G}ij$40Su-6kcGcmM1-nYHddNiEAJ6v=!oc?2~;AF1qc%l95 zL-*}U_1#9>-OQ?9}x9^77jH`wyF&pXPo)u7Cgi?&ss${o|*b$F2Lvqc7{X zU#D+Q*6%JC?rv7^Za?4MzrVZxw7-9JbaZn1{pjo0Z->7g5AGj-+&|u(?A_fS-`(%u z-Jf1xU0>cl-XKrjUf$hbKmPeI!yY*V4o6`AM}#d40QMYWU$j+BB%wb2p@Jht*wH`% zokt}?+v%4KsttZY9aghBJp2`1`s}bI9B$i8H#VK^0RR~n_1f=@;~|jb?jfVg3hTQ{ z`hpM%QP@6eie{dQeLX>`LOA71`K?)>;gKxL)rNHy11q@YeFrA2F~Hq47TD+fnYp~h zvd0~bI=wcd&2k`+3_ZyEj%Q~8=p$h8!0$Z<=w^29`YFN-^eQwr3SivK6TJeh;<+uOIanbSkjwBFHl@owIz1d3r9NN==)mj{N4PCF)T zEa?a)eYQjW6um8ZgFIuXle07=Bi@P?lA%^!O&X_V#!7kDurj`g;LwRJAGm@lGsYWX zBg*fv-(f%yH}lYC7rPlbNZc^Oi4H6RM_&&R31P)hx{&Usrh7h%L5INgnXEuOUZPJX zsa%d!`fa%1ZUr4T-+l?Zefoa84aeZR+ll;Z+q>(}P+AQVn1_K-hGAo%g5(XWU_59O z)&%b*Ph}raB6{^1Gb}$!lf^F9!cdUC?Dv?+(+SbSae0~tfV38p9wKu0nLdg8`cXFJ zheODSrVtbP1(;LV&RCooZ}=(^%h+HCowqOS-Ql${w)LV|{vAFJyZ%{)TCTyx-aH2z zc^iys^f4-xquj|4%vP3^igl|UpOq^$2PwV25grZ;vcbG*QxyG+z(c=@eC{kA$LyDm z+byvFe0T>#OylCsvEVTIQ+h033(vDKFB{d*`~c8M-0({ySz?hp8Ois&*!Xt%RIKR; z8szL#%Hf^o;!3f=8}T|RR1Y3iHxc=xF5><#f4G9i`1i1I%iz|JvLwc*(juSRu~32# z2;+N2lBW!8`qUpuo0wUrYolT$?_{agD$9VKjEb5;1j(}xWl~z!3TotFDn@|r$!G0E z%K5TzV;KlF-ZH@MZj9KExPoSdd~&0pElmo7A>LmHuqsCJS7U_a5i3igXze{;T`swO zpOGM5qaFOW5gqHk4sP|xK-0^LF15BYtM$<%+mpi{e|9&`@nrPn!ZaaM&TX2jT1y&w z9f0Rod4?Z6QkCs9AzQZ}+S8xP=krRX>|>ZweA>ft-ie6);hWd;-MZT6YHL!U|3zTj z2T}yo0QvxNKp+@|N`#6@jzh@!j1&qc69AJ*fT@Iu$e;ui9Moh`3MwcGnJ@`0FBl?D z0^z1%;iuscreT+4B!kjZL6MGLPBMOeGN=?4l%Af0krm3t2&HG?r{k31gFq!2p`vW; zJRHKpyij3YffwS!U@}=SnHrc11}4)3lUahPw82!CU^06!l?@mo3#L~G)9Ha(b-}zQ zBrGySjG8oDGGIn~Fryoo%K^;j4dx00^M_D~+mML(5lIHqbIH(isnB!jaEWQ~aLMp+ zsfcrEzYvz;eW61yYz>jJqL=a@frawH^qAxwm=xSO)Z7{6{g~xLxU}4b46TH9++P^G z%acLnsi4YKP&qbs4MwQ40JoYbRE39Mj|*zZ2i240HWP(vi}1@y$*4%l=tx8Ddj?cNA&$C{{y^i0fK{BLW z&oD~X0io=aXXb#Ak7!kiXq1U)H}$Kt3D58d&u|JU^7Tach9}D-+T;;^Dp8%P(S6!+ z)w;3GdhxBM@ik_Nt=fs*`YC;8h&I#IZqtk&)671nxO&^{KF{19*OI=#fE6OU$$}A{OE@)0E>dY){%`9rmuFT1{Ur=*zAs&#I`; zs_4q9==(oQ!jY<7tp6WWyIcp-jv$26mr*xALPg*>NaqU#mEC}SRQ0S0e_GCSVN!n= z3KKvyQp)rPcxOZRb0KE0QE9!#8*k|>hcHQq$Zs?jv}uEWB*S1A!$cCke8e2fsA<&L zaahxRorqx^ae61c5!uLV7@6KhpLO~#hy_lyY#>*2@XkKy)h-8lUkFN?<|XPb0Uf@u z(~7wMa6>H@t)vSv>irW$f!lmAIKr*5Z9=kCRL2{Ox{xK8uOaZ;>58tyCyb7(8>LDd zJG5qc4bH=LTMg2^j5rOk8`Mz>%Z>TWok-9E*(B3XKch7JgvU4yiDP&>5zF<(2nFLM zqwFyDoA|LEtfplae3q*-1PquzO!O)?YtT299Cg?$Nx}l(N;VnN_e(_*m9Pt2axQwR zf*&>CD@oKGUu&3I$sqwpaw&R4mS-~vjnO`r03OM;8>CgmwVEHZiZ>--Yl@{C4F@n> z=ksdeys;`k;S0gm193`yRQm87g#rYoLLs(;e6r!TbZZ+Rd+GH}X7DbS- zE-cl686Rg-?#b2^Bu+x8S%l_JxD9JQuxD>Ut?H?11hp#zSOyYb*Ta&%3-e$Yj2Vh- z!(nwz?$RA2F5%;(JlK+3C%eZQFv_*2PLlb+de~@BVq<$_vM<6r{P!=8&LxdK8nMsC zK8+oyG^cxQeWkDj9-7>`takK~m=LSZMb9K#Rq@R8o}c;kgdfVk#dCF$h0i zz~oiV5p0ssZ5gPIO0@V!B-kybgsBgN3Cir@)vB4tx9Tj3HZg-g%lnk3E~F(9gD(t0BvQ7m3%bDrZxQX5xkLj{z-5u zq_YEeb*suVj;-O=F7CjMHyxPw?KYV?oG7#_FYPfhRY-o#m1}PSdZjU1(s#dkx*gN& zzIwT~zehOkr?e!bj!t!?j<&W8>_HK|K*7LBNZXQ6Q(pUXi&@aB1thQ%9|Io~@nG-8 z;GxQLe8q~M7U$}~vW(0fiX?{+-vHv+!nDEOVLQwmtdkVjPU#?6Iq{&9JWa7<7D&lT zlo+=hQ&DM@u<#<9RjnM`ur6amD=tR3oE+DgevHDWN^to;*()}yfB=GL`2IsV-V^(~ z+)GAG$v@us(TrUK_$#(@*i`iL;~)m)4mt&)cZ7Lwy1FX||C#HRMa)7^s*2a3g+iCp zo{YwBj1_HQ%g6xqiy=qcH1Mtz8gz5ma(E(C&32OZWyk3|#tC4Snr9nBkNsJ z)OKx~mplkLH9aPA<90KB+5DMghYYuPqmWl`T#+``h3`J_iHf9zB`makal4~W7m6t+3UYFj@*S@%&d0L9NzkUV4 ztAk;vEJsq_lwqpZ$&k%1$BNyQ6CfDmFzA5^8aJ4D`6n>33zQV>Dxl0o9V{QB14`Gc zV)^N$BG~^fp@+DFJKRZ)Mr<|qeRjF9xswJ-|7!Fv;&LfTCoMd&wMf#OGDR9E9kl*6 zxDZL1<{wABKcedq205<`w;T?|-(!@tUkKR5wT83Ib5@odNjYRsa`K?L_`(wnRAEGf0K& zR0%!qI|L-`(_J98GL4Fc7iw9SxaZu#j!oZW25^APXsZ)c;h)#jNkOXGj#V%D`f(T#(t8x>W zav`521<}g1-aHta15h~KUdBp<5P{HfK)P{pz)0dK91QpL0x}Q=SK%uXWRG}Nbxmzu zeM4hYb4zPmdq-zicTXq5|GY0YkQyKZQ1}1D#D4>#5Gfgyl1dm15v72zQ!|UQlR-tu zpltN)bWl-YRt{v^6XAo33kibBl)+>MU@~Vgy($=@2j(*(V^tu5>XYyogBcycP=92S zBVu}pc5`xN$2(0gDfdU1TwdA+7$6wCyP22FgsQXcvcDfHi!qe!+467 z&0>(DO-G?t&OI6Ck)!RNZ0wP%@1Ly{S|=0HrWaD?=$_*m5bYF}_tFvJ6%rp5kp)he z182Tti=S7GYE_Et)sJn|OYAYr>Q&g=C~?F-5;4=C*YCzDn5Diy4mRDaN` z-3iJcx3BzU-*FN!@FSTFn#co974uI}faWMct4yH{j?gZDXtse&l$%qaX%6K`992l4h9gUZn&y`s& z(f?TMwA&G!m>3zEke!y9l$jWl9ha4r9i3HJkdR-WfDCX&b=k-OS5cT$(G*+Jn^jSl zRnc9alZ*V~AYx}qOW&n7EoKewHa4xL&fjM){VZ6!Zy8yv+KGRh_-PgDBy5r<^^u);Pm66wHGljPc#kZRcciSCz2d~E`=O?DWynnyBvUWaw z_qh7)ZvFP*$LjL8Z=bFY=YF28-(Ah!-L4&Fjm857a| zTTDa%X;q4q+L7x;#3*v()5!IrG;);3PnaE5Gg;5&Q{`qls^?;$hHs0NiR{%11bt7t zf{2b6U%`le-B5HnEtkusK${Z;zP_vFC^}-m>OP&Rd8#qlGV!UKY&9DTNX7yb>b5(v zG@wFYRqwmJ`2X5|%H8_V7X(HxW7nz@ZwN-=$KCnSvNMJ%xR~5VA1jZeL`q!+KR{?q zrjnGxMql$g(xFP|^gMb+R_l_E2o!m1;qX5fQ?E4Wn=bhNsV9Ny;)F8b>uSAWZv+ih z&=_W_U(wmZ#V9r-z8zSgEV9!sl2$|(lN0tc8TTW`ucw-euu$oX<=5cx3+niLA{p#5 zkq%S1@5#F~mR4>nzgWfsyfz9ybo;zg*gRIYISN|JNHYJFh-|#KwS*Hc|H2JK3pG(B zN-er6y2b=DFLyEz#^m#jVVag8uYjS`W7SXK+kjxSm=9OO-sH82n`IO|_{Rpm+ zRk=Dg;T4UJHRDa4*i6O+tq`!5%$H3TN7cih*oLWR%b@Ax&7(oXFk4KrI4_VlMl63I zJ+#=B`^)BZ5uuz;QpnIp7kG%rk0a({(27eVpl>nvAYzXc%sYaDV6sp=2L#e~n54y@rfmx~03~ld9oQ;#L}5<$;U`OP{k)O5iWG(1>YK z%M`|9OEX&bOPpsed>IVjPvn2b01D-1>w+CvNB0W0b30etf+*-_PUSOGeS*9x!qsG~fw-G8S{u7OyCP34(c*9HF*DP{yVKnXGb9`lCdn`3lnB z=?Sio%Ooq@O7bbCNxs6%WG6KSS;*=*qU{o5&4Yfsc1PG=qVD>}XYv!{G6u_X22()x z&VDv)dX4vl1jw2p1mZ=z*f&LY5`2)N13(4RNoS()E`vbMZSv3T1W4P)^3&4`)D+Og zYtNQ^BYE0Z!aDe}P(f%$R?+k>S1F5i8K}y372bHTXS9jSxuibTR${WgAXq97^=>i- zr!(N0gaZE^Tru+UozVX2LYv1v=VpQ{a*0hBmtifL=0@FVngTstDX7v(Lsuk)P`i}e zPDCV}Q-I_hoeW{j(+D;Vw&-H|Xc@e|M-EF5;A&JV9a~)+g1wMF zHJ*AhMGX(Y_XgsnP;vm9oOap#M=5gm66@sHMI%WGN}M`Pw8b6k74@SeOmWB*B{yN& zwQ2nIJ?Qi`vUE+Agq#)M(Ia*1)YAl=T@>gNmnUP|YQgDV=xP}#t9XNY0CR@;ebWBU zQU^6p6zk3MLir?VYc-IiB-FbvF}>}}rT2Vr1B?fNNrb0Mrv){kV{Kn=4I!y%Sz%%M zIa~ZHRRh?brtk9^tRbCRJSD7nin1gb*X6x&B+ zLhrKOBS&IiQ~*-S!L7HA?NiFgz?QBskBT+*Kq)usj*e%Voi zSH}}QbvzHLbGJoa6L5ygBsyIJ6gx(v@QmP;PZj<-SrM0B#^qZ)u!}k$_(mFEuCGIx zD;+~gq5?blv9d;Z;j2dI{c72>?m9*FQ=OvwwK|RN2E&C@gMs_?w$$z>NA+(epYGrH zEq1pAE_}0ixZmKX1At;-Xwt-co72cRpSN)4ApY=SIkl&&R^8nRClXth^%{n01(MFU znjdDyMCo^rT=p8kYQhng!C#K{VSwR(HMs5Hl|&_)4y9v;2=$$Zw43tY(3a6OU7 zQyi2(qjDR2UWKVrw0D{I@~)D~i|@CX89tD4SrJftr^tn#i565QOZR>_jzvPoCq@lM z^_P4C#&?-!feG8E-k4#!+XegTMIF6Wf}zTA!7Ey$&|zd^D=Ddd)%-L&q~-nV{OJDm zD3RoBo>oHRh(uH+0AUc>Fj;!L;&3f>am2KOs7ZSfmKun}Yg$31R4bix80C2d3}3k7 z$DM&1jOeOuir)|arW~j0M3Ec8+tY|)H_ZICEPry(mLsEvy$Y8@^Y`p(##L3Q4CsBE zsMKGAUmACn#LkL}plJyBi>k=o6Zv0J6Rn#F+^6Tam}t_^F2O$d2dFA=;L~a6a7y87 z6mhlX!;1P397NSN<=-I1g#^vexXl-Igv03bXplg}-3z=&*fVSha0B1}^9IiExbRXh zI4Tf+vJ67K1Gj7W-C1E1EMq+l0|J3ugLog@V6=O_q+gE zvM}pow7k4v67QE--dN+ee)-2QRml8y;keTH}uUZ%vkY^7t>`5|T6av3K2>$0| zoH`c#cvu)!T>uCWE+ZVnkRNb8{LE_e*<)KI=Uv3z1r`W_&@_tjawM3~dls}DCYu=} zc?bUE70E)5Ltuq>i;wpgfOD~f_p$AnU>jnJ1)o{*nJz0pe=}0+X)_$Oi^y+_p~nO} z9!H+C0M3phT#iGFokEDMqqwsD-lZc@c0=`QaT4Sx^YCAOgQL9X0blHdqaqE+tN@Ws zoTSZoRJtf}Bk_A-Y%`|>#`qZfsepw1*pj}Nzk6T0O%o*GhYu;ml@5pfy1))^3+9~) zOOKCwYKukLP3pzRx`GD}IK`m0`~T&6whHrI6;8h6384;3R-6j^3wX8)0hio?e_r6O z4ukXVlF6-uq0`Sxl`sSxeS5T&K3=4N;GwthSTsbspd+{imZle~Xc+!%lGk)^mmBfSBdBT2`VUy7%l9waLE)qats3h6mAi)_zQg{|QUDhyq_7HRS zTZQaFhwL}8*#kA%{gc_RkFxvFb9xOh_1Zk~jy->(d!uA{o|AfFZ{!>w0)!TIq8 z`H8RdlRxCA{?1RQD998o$Tlv>4KB!k?SgE7p!jupvb-m zB)}r83r=KEcTPbh!>S6Y>Iu0bF;-ha42iM!vf}^2SU(wYB+2?4i~2acP*jxv7iN`} z^o$Kvl?+sM^$nE_4D?|t0Z5*eGePpKBa&y09lSktmBUONg6-9ieH2KB4YYSeGAy## z@Gr*Z;|n9(DyrDXiox>nV70>kU@W;}9Jyi+vde?Wqau3yOR@FOyxD_n=G;TO{o*2$P*sVYK9R5ipgJ!Y|A;=t%0Gpx8mFq25WdBqih){V#-@pP1i}_%GpR{X@8UiRBGQ!p;7NaC_>q(%W-i_m{(w zy%v2nb!nLk87)Wy++j`6TKd9m`{;7rhhOc74^!Dq%Ppz1JuQc?V~*cuEWR0E8SlE8 zE4*53xIGwHT3lLK|F-b+;p^Jc_15mM>(yVseQ*Y1vY_U(UG=NAT9qm# zD%}n1jYgd=TeIDb8?9Dji8QJ`O&>a)RvXOcdYV7=dhO5RiP51yOQdMv5OFG3LCy9* zhni_ux9yH*WTx(Q)_f>%bUgD)9#MOZ34XU!le2H<6?-c(DIl=q+_<~87?Ebi@&c=di z88CIs-SSDQ^dc1g-AQn~jvm-Q4C2NlS6tk(l#qO4tZQwkK@m)RB_ogv~fi({62ymmsqjY%j9823e-x)Fadg z)c;#w?Mf_@xfQ&PZ*%CxXh*0aWaNW*j+UD3e8`>QZpg%e{%pLyb{7uSs(u++IZ=}q z^pu$LeCsPlJ!IR9h^oHP<;syO2jaNw)ow#^(vWLInOXxRH|8jdJaVL@>1^(aZMC%V z{b&Gjx|*|~BNsEl$T5@MLmgwohg0pofffkM9gwBI21cjP2%gp)odQ7fmw03#?K!u+ zAy%OVn_vCtrX1J)5AK6|skcrpo4Doq-kYEOSwuuJqo>|xhVxVUV?4iUAMlB%2A~~c zC${(ji|1Quw%4FE6B4LiKt^f|7}p@FAJk2{ZG_Nxw$i%kl17q>OoJmszoDV|Q@h$Z z+DLBUI?a|J2R;=P$N5YDyA_}>;I5uP;|*~8QN2XwMI`qe8rZI91C5;A0`T?O(|Gp= z5Wa9CLvnws?uDA7ZjMp0YeM?eUM-%wDb~Ie<_c0c#-p8G#b>JH*9; zkPQ!SPculHGi-Qk4RXJ8Qok|9xQ(ADah0Z_)K|Gz?#O~|An|`1vtMo+D7HuYl=fMJJX*{kvECs5px90s9dJd;2LDg|r$xiNtxQGQf4pqsN< zVkNn8z>El`4Txv59OI!%bL&+0cD?(DEoqdEUFn^|^A>RYFQTonmXjA_-Xj)wg&O!+ zm@qm{klqhfD^H8Nn)Neg6LuVfv^Vhp`NcRf1($7tEe9#$_8p7PPl+GI6q{GZmp$KE z14%DzMcEye+vSW9XtEXwAi24~8KZUSgMv*pT(DOG-=wqB3w z@-wZ!9W>?Ant|w+nDGSxTsNV{t!Q!=T@cQ*(%ap}SDtVJ67%Bjm>n_Am{GND;{(Y8 zp_rzWdvA^)C0I^8LXg$EPhI$pUT`&ts}qq(es_n)1oQvk?meTL>eolxl@K66LKeLv zRl3rpsi8=3D$-RDMVbl2l)x?!Eu}?t8|$ z_ndLg{ctnZr+i>!jEt~;c{1mGSRXp%`an&`C+sLnvwP+Y8LnL2_3A12n@GQ*Ud@wK z7{{0GW#MoqC@OGDue6MyNhT-MASc}rrb#|Aj(XAbMt@e*OrFKF+b*i>!Y=Y+mJUi; zEqV1Gmnaa@>3}hKJ;?A~9T-ru1JbmpYw^vk<;f;5I+q?c_EG_bc%YxA7CY+OSw6hBhuI6wL2Swui=6 z{>r43pOm-ag*(U+s2^NYKar*=Fu{M}ej_e#?{=|?A->fO!l7$le`l}^kBPrQ?>w38 zm44-=GGp}ld8CU0cqYXz}MxOK(c<;e(L?0#?B!3}@zX-_&kdcl#wXyKt5FTZ*y z*Spg>4hpZNvP$c1tcUU)6rS9DJIU!$GUX(e7J|B6|7n)_$rUj$p(8Mb>cEogYX@oW zt>dhBP|~9lMf~IG?T=k2lO?L>Pp1udZ9c-a&bs6?B`@$l6&z!5yVFe>t*&L?M58{u zcjZle=7(_{MXfN?*7BC9pq3{faaY#pQo1kQ?n-FohZCQ}radc{Z?*3wsn7fT#C=I! zffhKVxV-|+C*46yDV6$|tLlNN`|@XDwP~XtF7o!yu0DMA#rfWjR+ImT!KMCL@6j4< z$5+P!&$xeZE7)Cexgg+RgJ_ufaJM>Y?I_asgtK9jsM?0@S`g9sdY`6sznq8pNrvnj z1+JcX=Zj4OUGWW`+IY%4k+S@rT;T!=H*Z=FMJIm!tu}zP!Vh&oJ^8=ez6uQ5&b@KW z*X0{1eK^L4h_UY5fg;FKcaVopD(FT7lL*I`96NUO0IC?fTy<7mv27wkA>0S8m3O-qZtiQ(|hy0 zYxJ5*l@a#6IfBwcHpG5455&GybQ(V^Q5ksYvGWB7i#ZY{laBT=n{3$@-9!9Sn5df2 zoW!CQ2r5{85#Z`q0OuLG-s5GNeL$``_#_@_o#B~x%j(;%%>-zx_|jHaS0FhgP%In- z!@vy|jeZ^Q_}UGm$8|0b0KEI~)7P7yC_TXut?wPcN3WaIBRA(eLLJx{`7$tCEeaXT zj1Td_1LbgPmT;YuOsW_mW^at}m2V8{aQavfp0p6Ie;HWYVLFDwO-)02G9inCG&kIx zQfnfMCn8JsA_?r+awTk~CAQiJTa$>b>t+QA*d{p8xQwlZ11BJ^)d|~fiR%i-oebkT zYj9`5`4wK3e2F}(XRd>pX?%CSOLv4UckVdzLEW#DrM0Gqo7BLX5o7?WP;=bc!Y z6UP{Nt2j#g7$q@>3q5g^9vJ!4aTNvlY4}Gat z@KUz(CDY1FX{rPUv4k_)2`J|T$SoYDG6wSKgJhg( zgp~TLWq6_o3AJmg_ke)fB~fgWP;ZHh%jKwnJrpV9Oi%<$UK(-@xRpslwMv5y1oEaI zaBU9t2G4-ei^f<%Hb|%gLmW+{2hMjN8ee$JZj-#$G{4NqfT-5JFO#82Fka znMNl0O$0+8O?2LVa@mS<(PT34k?UCp{g$0Pvoy{4Fqbm{xsj9ha!m5s36XvWP)HA= zAxKkyjJOR`r#hTN6@UWRT3QwiO_?d=H7R`o4QpK?_p|^pJhEhjdYZtQ9YMQnnl8Hs z_Vq;NJxL7V0Kh4(Zav5vm~@hnk}{c?;*5ezXXZZ4jB!TElaknJU&B1$CwwSa8Pvj^ zqC=SqyN~)kOna=CdZL`z#|Iui$vgm)>hu_pkx_ZhnK%w$Pz>x=PW(ac(ALq4Mftn^DSBOcQPf)%D)D|(3>x47cof8nRLv)CNF{}A)Vp*xm z1x}o)Cq&dfsQ{SFEewl=7ba{JaGGlWe#j65#pK!?GCvn6KwW7%+TE9Zd0BYqmRCz{ed|lZk z*|GsRic+{ZV;I+AT7Du{Mm1gjW)-z+M|jo)LhEtYi@>wMEv7A~sWgKGUo~G0;GKP*dZY^Ao<~Dh2kCw87w%AMc+W1!zFC{tZq;uoMX=1Y1Vx`66R0|579AZT5 zV#`(QD{bnl{pv-Z)RolNH%!+z9o7@M8d_Bw+HD#-{TjMc8hYy+`llNP4;zNL8b?(d z$7~uu`ZZ3ZG)~nw&P+FcI&7Rf;c8k?ZTe!<^v$nnIi+c}zG;2BY4fm&#MS&mwRzj7 z`IlewUP|*pee=Kvuz9O(-!vB z7S4ti?wJHEt6|Octw@j zRdT5V#ou+u7WDFy)z2r%H*S=R$kk=kNbP%V7C z?%aSUXOg8Y2pVLcxAh2?OjqVgGEB*e>FH>j!m0Z9t*eyjJq5i9$?Vps3w9via5;M~ z3ZV_jFeJO@-7M1CjR*a1h5hWls5V36KDU9yRPYhlcLE|D@fDpM9iI4#w*8(@lD*Y3 z74pfcy4HOZGKmA>sF1qcGuYA_>(piIC^9KAc7ag*N8Gt`}+B3MCen=+`48XGiyrP>bLQFu+uHR8Ge; zvR?Q;Q~3kTAEcbdt?E}mQ(7$sYbW z;yeR#Q>ah4-Zks-o7@6^=Z94qb6cf9Fr@YAAEs&=CK6oQ`?!;K31enFnQAg0n(IEu zuhQ~nj}7@J4b?^ zJHbp2@BkrT?^bQEg2WJ&U!izfd%{e|06T(K8qznDeBPr|16dWlifWyilrO5J#)8ug zy$q3)3KHNlPiBcxAKTl$_$ZM2ej+{z)iS3HHTo=le(VWx63IipIgB#%Cb4b~6O-m| zod=5y-_y=cI~leg`4e`f#y63ItX=f>ORc$ut+_f$RQ1-v$R`}b15m$tK8-U)d?49{ ze&_UqEs;<2cQ)rgeJWah`(riwdueEa+V6#_d&63@r2WA~)(zA}-yEB_BLhzJ3e5}Z zxStCAqc3PbCG*Io@^o6>Tc-+`RQCItH}Lj0aS94q$|onW3H>Ie->GC4B?`|poF_GJ zj80r%XuocH8|ZiF->@6nB67?I)6fZL46z@K-HCvwacTvT zDnh@y>5uSjUby_6>62P&qDl6r;t8eAU5g7mE0WvIv$#hWhsKK!*r!m}PJXXjHsy|+ zWTXA2(pCpdZXBC!?4*C%$bY_Nk36(6`QSRVz^`@C|00uScG33wXzg{-2??H%cHrRZ z=N5AaGppL3$%IBYgRpUq<;bm$=lh%&%zQepYvNDVM@*F*KdbxEoeQw_^5D_+g9}`d zX8)1VYzA6{Zs!%v%Z7w0-ats(=M6kB=NnayU`{d&VZIUCFkWKcN_&cuvESEyuC>I5 z#TdBrXmad1jab&m6ya`LJj5_7ewm>_HÊ!3duXDa0O)bF2nBl$JL6?ho$%uH-) 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�m;ps#1v_aaboV*Qb&Q^yrWrl1$a;0GTd|uN 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 Date: Thu, 28 May 2026 17:14:37 +0530 Subject: [PATCH 58/69] docs: add architecture overview documentation (#1143) Co-Authored-By: Claude Sonnet 4.6 --- docs/architecture.md | 113 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 docs/architecture.md diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 00000000..bb8d209a --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,113 @@ +# DevTrack Architecture Overview + +This document explains the high-level architecture and data flow of DevTrack. + +--- + +## System Architecture + +```mermaid +flowchart TD + + User[User Browser] + + subgraph Frontend + Pages[Next.js App Router Pages] + Components[React Components] + end + + subgraph API + AuthAPI[/api/auth/] + MetricsAPI[/api/metrics/] + GoalsAPI[/api/goals/] + UserAPI[/api/user/] + end + + subgraph Database + DB[(Supabase PostgreSQL)] + end + + subgraph ExternalServices + GitHubOAuth[GitHub OAuth] + GitHubAPI[GitHub API] + Vercel[Vercel Deployment] + WakaTime[Optional WakaTime] + end + + User --> Pages + Pages --> Components + Components --> API + + API --> DB + API --> GitHubAPI + API --> GitHubOAuth + API --> WakaTime + + Vercel --> Frontend +``` + +--- + +## Frontend Layer + +- Built using Next.js App Router +- Uses reusable React components for dashboard widgets +- Tailwind CSS for styling + +--- + +## API Layer + +Handles: + +- authentication +- GitHub sync +- metrics aggregation +- goals management +- user settings + +--- + +## Database Layer + +Supabase PostgreSQL stores: + +- users +- goals +- metrics +- streak data +- cached GitHub activity + +--- + +## External Services + +### GitHub OAuth + +Used for secure authentication. + +### GitHub API + +Used for: + +- commits +- pull requests +- repositories +- contribution activity + +### Vercel + +Hosts the production deployment. + +### WakaTime (optional) + +Can provide coding activity metrics. + +--- + +## Data Flow + +1. User signs in with GitHub OAuth +2. API fetches GitHub activity +3. Metrics are processed and stored in Supabase +4. Dashboard components fetch and render analytics From b2a693b19bd39cafe688e1fd9650f55a8fdee17b Mon Sep 17 00:00:00 2001 From: Priyanshu Doshi Date: Thu, 28 May 2026 17:16:46 +0530 Subject: [PATCH 59/69] fix: resolve playwright footer strict mode issue (#1174) Co-Authored-By: Claude Sonnet 4.6 --- e2e/landing.spec.js | 5 +- pnpm-workspace.yaml | 4 ++ src/components/landing/LandingPage.tsx | 70 ++++++++++---------------- 3 files changed, 34 insertions(+), 45 deletions(-) diff --git a/e2e/landing.spec.js b/e2e/landing.spec.js index 55803e33..15f7e03d 100644 --- a/e2e/landing.spec.js +++ b/e2e/landing.spec.js @@ -33,6 +33,9 @@ test("landing page shows dashboard link", async ({ page }) => { test("landing shows footer", async ({ page }) => { await page.goto("/"); - await expect(page.getByRole("contentinfo").first()).toBeVisible(); +await expect( + page.locator('[data-testid="landing-footer"]'), +).toBeVisible(); }); + diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index cb8238f2..3b80b7df 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,7 @@ +allowBuilds: + core-js: true + esbuild: true + unrs-resolver: true onlyBuiltDependencies: - esbuild - unrs-resolver diff --git a/src/components/landing/LandingPage.tsx b/src/components/landing/LandingPage.tsx index d374a212..2dba147e 100644 --- a/src/components/landing/LandingPage.tsx +++ b/src/components/landing/LandingPage.tsx @@ -22,7 +22,7 @@ const BG = 'transparent' const SURF = '#0e0e0e'; const BORDER = '#1a1a1a'; const TEXT = '#e0e0e0'; -const MUTED = '#9ca3af'; +const MUTED = '#555'; const HC = ['#111', '#1e1b4b', '#3730a3', '#4f46e5', A]; // heatmap levels const MC = ['#111', '#1e1b4b', '#3730a3', A]; // mini heatmap @@ -337,7 +337,7 @@ function BentoGrid() { return (

@@ -357,18 +357,17 @@ function HeroSection() { style={{ minHeight: '100vh', display: 'flex', alignItems: 'center', - padding: '120px clamp(24px,5vw,64px) 40px', - gap: 'clamp(24px,4vw,56px)', + padding: '80px clamp(24px,5vw,64px) 40px', + gap: 'clamp(32px,5vw,80px)', flexWrap: 'wrap', justifyContent: 'center', position: 'relative', zIndex: 1, }} > {/* Left: text */} -
+
{/* Badge */}
@@ -382,10 +381,8 @@ function HeroSection() {

@@ -396,8 +393,8 @@ margin: '0 0 24px', {/* Tagline */}

Open-source developer productivity dashboard. Track GitHub streaks, PR velocity, and coding goals — automatically. @@ -434,30 +431,13 @@ margin: '0 0 24px', COMMIT TICKER ═══════════════════════════════════════════ */ function CommitTicker() { - const tickerRef = useRef(null); const doubled = [...COMMITS, ...COMMITS]; - - useEffect(() => { - const restartTickerAnimation = () => { - const ticker = tickerRef.current; - - if (document.hidden || !ticker) return; - - ticker.style.animation = 'none'; - void ticker.offsetHeight; - ticker.style.animation = ''; - }; - - document.addEventListener('visibilitychange', restartTickerAnimation); - return () => document.removeEventListener('visibilitychange', restartTickerAnimation); - }, []); - return (

-
+
{doubled.map((c, i) => ( {f.title}

-

+

{f.desc}

@@ -714,10 +694,10 @@ function ContributeSection({ stats }: { stats: RepoStats }) { const [ref, vis] = useScrollReveal(0.08); const statTiles = [ - { icon: '★', value: stats.stars, suffix: '', label: 'GITHUB STARS' }, - { icon: '⑂', value: stats.forks, suffix: '', label: 'FORKS' }, + { icon: '★', value: stats.stars, suffix: '', label: 'GITHUB STARS' }, + { icon: '⑂', value: stats.forks, suffix: '', label: 'FORKS' }, { icon: '◎', value: stats.contributorCount, suffix: '+', label: 'CONTRIBUTORS' }, - { icon: '◈', value: stats.goodFirstIssues, suffix: '', label: 'GOOD FIRST ISSUES' }, + { icon: '◈', value: stats.goodFirstIssues, suffix: '', label: 'GOOD FIRST ISSUES' }, ]; return ( @@ -874,12 +854,14 @@ function ContributeSection({ stats }: { stats: RepoStats }) { ═══════════════════════════════════════════ */ function LandingFooter() { return ( -