From c1b4c4f91bddcc67d920ea765fb2481e7e91f1a0 Mon Sep 17 00:00:00 2001 From: Harshit Bole Date: Sat, 11 Jan 2025 16:23:03 +0530 Subject: [PATCH 1/2] Saas labs task --- .gitignore | 24 + Readme.md | 53 +- eslint.config.js | 38 + index.html | 14 + package-lock.json | 4589 ++++++++++++++++++++++++ package.json | 28 + public/saas.png | Bin 0 -> 40517 bytes public/vite.svg | 1 + src/App.css | 6 + src/App.jsx | 15 + src/components/Pagination/index.jsx | 49 + src/components/Pagination/styles.css | 55 + src/components/ProjectTable/index.jsx | 29 + src/components/ProjectTable/styles.css | 64 + src/components/Projects.jsx | 38 + src/hooks/use-pagination.js | 84 + src/index.css | 28 + src/main.jsx | 10 + vite.config.js | 7 + 19 files changed, 5084 insertions(+), 48 deletions(-) create mode 100644 .gitignore create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/saas.png create mode 100644 public/vite.svg create mode 100644 src/App.css create mode 100644 src/App.jsx create mode 100644 src/components/Pagination/index.jsx create mode 100644 src/components/Pagination/styles.css create mode 100644 src/components/ProjectTable/index.jsx create mode 100644 src/components/ProjectTable/styles.css create mode 100644 src/components/Projects.jsx create mode 100644 src/hooks/use-pagination.js create mode 100644 src/index.css create mode 100644 src/main.jsx create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Readme.md b/Readme.md index dfae955b0..f768e33fc 100644 --- a/Readme.md +++ b/Readme.md @@ -1,51 +1,8 @@ -# Frontend Assignment +# React + Vite +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. -## Assignment +Currently, two official plugins are available: -You are required to fetch the details of the highly-rated kickstarter projects by implementing an AJAX call to their APIs. - -Use the web API (link : https://raw.githubusercontent.com/saaslabsco/frontend-assignment/refs/heads/master/frontend-assignment.json) ) to fetch the details of specific projects. - -## Minimum Requirements - -1. Create a table and list the following three attributes for all the projects: - * S.No. - * Percentage funded - * Amount pledged - -1. Ensure that the UI is aesthetically pleasing to gain extra points. -1. Implement pagination with maximum 5 records per page. -1. UX should remain like you would see on an ecommerce website (Amazon, Flipkart, etc.) and edge cases should not break. -1. Take care of last page. - -### Expected Output format - -| **S.No.** | **Percentage funded** | **Amount pledged** | -|-----------|-----------------------|--------------------| -| 0 | 186 | 15283 | - - -## Good to have - -1. Unit tests. -1. Accessibility. - - -## Steps for submission - -1. Fork this repo. -1. Do changes to the above assignment. -1. Email the assignment back to us with: - 1. Link of the open source repo. - 1. Link of the assignment hosted online. (You can use any free tools to host this assignment, eg. vercel, netlify or heroku). It should be accessible online for atleast 7 days. - - -## Frameworks Allowed -1. React/Vanilla JS for JavaScript -1. No framework for CSS. Only Raw CSS is allowed. - -## Note - -1. Result on platforms like codesandbox, replit are not accepted. -1. Private unaccessible links will lead to rejection. \ No newline at end of file +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..238d2e4e6 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,38 @@ +import js from '@eslint/js' +import globals from 'globals' +import react from 'eslint-plugin-react' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + settings: { react: { version: '18.3' } }, + plugins: { + react, + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + ...reactHooks.configs.recommended.rules, + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/index.html b/index.html new file mode 100644 index 000000000..81956ae64 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + Saas Labs - Projects Showcase + + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..3a0cc9167 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4589 @@ +{ + "name": "frontend-assignment-saas-labs", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend-assignment-saas-labs", + "version": "0.0.0", + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.17.0", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.17.0", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.16", + "globals": "^15.14.0", + "vite": "^6.0.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "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/@babel/generator": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "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" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/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": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz", + "integrity": "sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz", + "integrity": "sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz", + "integrity": "sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz", + "integrity": "sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz", + "integrity": "sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz", + "integrity": "sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz", + "integrity": "sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz", + "integrity": "sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz", + "integrity": "sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz", + "integrity": "sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz", + "integrity": "sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz", + "integrity": "sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz", + "integrity": "sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz", + "integrity": "sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz", + "integrity": "sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz", + "integrity": "sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz", + "integrity": "sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz", + "integrity": "sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz", + "integrity": "sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "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.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "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.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "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/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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-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/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/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.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "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.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/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/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/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "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": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "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.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "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.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "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/caniuse-lite": { + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/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/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/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/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/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/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "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", + "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/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", + "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/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", + "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/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/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://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==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.10.0" + } + }, + "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": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.80", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz", + "integrity": "sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "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.3", + "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.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "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-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.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.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "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.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "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": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", + "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "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.8", + "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": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz", + "integrity": "sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "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": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "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/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": ">=0.10.0" + } + }, + "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-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/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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": { + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "engines": { + "node": ">=8" + } + }, + "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": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-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": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "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", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "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/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "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/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.30.1.tgz", + "integrity": "sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.30.1", + "@rollup/rollup-android-arm64": "4.30.1", + "@rollup/rollup-darwin-arm64": "4.30.1", + "@rollup/rollup-darwin-x64": "4.30.1", + "@rollup/rollup-freebsd-arm64": "4.30.1", + "@rollup/rollup-freebsd-x64": "4.30.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.30.1", + "@rollup/rollup-linux-arm-musleabihf": "4.30.1", + "@rollup/rollup-linux-arm64-gnu": "4.30.1", + "@rollup/rollup-linux-arm64-musl": "4.30.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.30.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.30.1", + "@rollup/rollup-linux-riscv64-gnu": "4.30.1", + "@rollup/rollup-linux-s390x-gnu": "4.30.1", + "@rollup/rollup-linux-x64-gnu": "4.30.1", + "@rollup/rollup-linux-x64-musl": "4.30.1", + "@rollup/rollup-win32-arm64-msvc": "4.30.1", + "@rollup/rollup-win32-ia32-msvc": "4.30.1", + "@rollup/rollup-win32-x64-msvc": "4.30.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "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/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.7.tgz", + "integrity": "sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.24.2", + "postcss": "^8.4.49", + "rollup": "^4.23.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..b87c4fe0c --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "frontend-assignment-saas-labs", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.17.0", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.17.0", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.16", + "globals": "^15.14.0", + "vite": "^6.0.5" + } +} diff --git a/public/saas.png b/public/saas.png new file mode 100644 index 0000000000000000000000000000000000000000..67ea350d07d57b02ae00f68f375eb82acb42c9a3 GIT binary patch literal 40517 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

+

SaaS Labs - Projects

+ +
+ + ) +} + +export default App diff --git a/src/components/Pagination/index.jsx b/src/components/Pagination/index.jsx new file mode 100644 index 000000000..cdfb1ae6a --- /dev/null +++ b/src/components/Pagination/index.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import './styles.css'; + +const Pagination = ({ pages, totalPages, currentPage, setCurrentPage }) => { + const isActivePage = (pageNo) => { + return currentPage === pageNo; + } + + const changePage = (pageNo) => { + setCurrentPage(pageNo) + } + + const goToPreviousPage = () => { + changePage(currentPage - 1); + } + + const goToNextPage = () => { + changePage(currentPage + 1); + } + + return ( +
+ +
+ { + pages.map((page, index) => ( + + )) + } +
+ +
+ ) +} + +export default Pagination \ No newline at end of file diff --git a/src/components/Pagination/styles.css b/src/components/Pagination/styles.css new file mode 100644 index 000000000..996ed7f71 --- /dev/null +++ b/src/components/Pagination/styles.css @@ -0,0 +1,55 @@ +.pagination-container { + display: flex; + justify-content: center; + margin: 32px 0; + height: 48px; + overflow: hidden; +} + +.pagination-button, .pagination-page { + border: 1px solid #000; + padding: 10px 20px; + font-size: 16px; + cursor: pointer; + width: 56px; + height: 100%; + text-align: center; +} + +.pagination-button { + background-color: #1976D2; + color: #EAEAEA; + font-size: 20px; +} + +.pagination-button:first-child { + border-top-left-radius: 8px; + border-bottom-left-radius: 8px; +} + +.pagination-button:last-child { + border-top-right-radius: 8px; + border-bottom-right-radius: 8px; +} + +.pagination-pages { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +.pagination-page { + color: #fff; +} + +.pagination-page.active { + background-color: #1976D2; +} + +.pagination-button:disabled, +.pagination-page:disabled { + background-color: #2E2E2E; + color: #fff; + cursor: not-allowed; +} \ No newline at end of file diff --git a/src/components/ProjectTable/index.jsx b/src/components/ProjectTable/index.jsx new file mode 100644 index 000000000..74823419e --- /dev/null +++ b/src/components/ProjectTable/index.jsx @@ -0,0 +1,29 @@ +import React from 'react'; +import './styles.css'; + +const ProjectTable = ({ projects }) => { + return ( +
+ + + + + + + + + + {projects.map((project, index) => ( + + + + + + ))} + +
S.NoPercentage FundedAmount Pledged
{project['s.no']}{project['percentage.funded']}{project['amt.pledged']}
+
+ ) +} + +export default ProjectTable \ No newline at end of file diff --git a/src/components/ProjectTable/styles.css b/src/components/ProjectTable/styles.css new file mode 100644 index 000000000..361360969 --- /dev/null +++ b/src/components/ProjectTable/styles.css @@ -0,0 +1,64 @@ +/* Table container for responsive design */ +.table-container { + max-width: 100%; + margin: 20px auto; + overflow-x: auto; + border-radius: 16px; + background-color: #1A1A1A; /* Dark container background */ + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5); /* Subtle shadow for depth */ +} + +/* Styled table */ +.styled-table { + width: 100%; + border-collapse: collapse; + color: #EAEAEA; /* Light text for contrast */ + text-align: center; +} + +/* Table header */ +.styled-table thead { + background-color: #2E2E2E; /* Slightly lighter dark shade for the header */ + text-transform: uppercase; +} + +.styled-table th { + padding: 12px 16px; + font-size: 14px; + color: #e58e1a; + border-bottom: 2px solid #3A3A3A; /* Subtle border for separation */ +} + +/* Table body */ +.styled-table tbody tr { + border-bottom: 1px solid #3A3A3A; + transition: background-color 0.3s ease, color 0.3s ease; +} + +.styled-table tbody tr:last-child { + border-bottom: none; + transition: background-color 0.3s ease, color 0.3s ease; +} + +.styled-table tbody tr:nth-of-type(even) { + background-color: #212121; /* Slightly lighter shade for alternating rows */ +} + +.styled-table tbody tr:hover { + background-color: #333333; /* Highlighted row on hover */ + cursor: pointer; +} + +.styled-table td { + padding: 12px 16px; + font-size: 14px; +} + +/* Responsive design */ +@media (max-width: 768px) { + .styled-table th, + .styled-table td { + padding: 10px; + font-size: 12px; + } +} diff --git a/src/components/Projects.jsx b/src/components/Projects.jsx new file mode 100644 index 000000000..e4419d238 --- /dev/null +++ b/src/components/Projects.jsx @@ -0,0 +1,38 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import ProjectTable from './ProjectTable'; +import Pagination from './Pagination'; +import usePagination from '../hooks/use-pagination'; + +const Projects = () => { + const dataURL = useMemo(() => { + return "https://raw.githubusercontent.com/saaslabsco/frontend-assignment/refs/heads/master/frontend-assignment.json"; + }, []); + + const { + currentPageData, + currentPage, + totalPages, + pages, + error, + isLoading, + setCurrentPage + } = usePagination(dataURL, 5); + + return ( +
+ + { + currentPageData?.length > 0 ? + : null + } + +
+ ) +} + +export default Projects \ No newline at end of file diff --git a/src/hooks/use-pagination.js b/src/hooks/use-pagination.js new file mode 100644 index 000000000..de3c60d22 --- /dev/null +++ b/src/hooks/use-pagination.js @@ -0,0 +1,84 @@ +import { use, useState } from "react"; +import { useEffect } from "react"; + +const usePagination = (url, pageSize, pageBoundary = 5) => { + const [data, setData] = useState([]); + const [currentPageData, setCurrentPageData] = useState([]); + const [currentPage, setCurrentPage] = useState(1); + const [totalPages, setTotalPages] = useState(0); + const [pages, setPages] = useState([]); + const [error, setError] = useState(null); + const [isLoading, setIsLoading] = useState(true); + + const caluclateTotalPages = (totalItems, pageSize) => { + const totalPages = Math.ceil(totalItems / pageSize); + setTotalPages(totalPages); + } + + const fetchData = async () => { + try { + setIsLoading(true); + let response = await fetch(url); + response = await response.json(); + setData(response); + caluclateTotalPages(response?.length, pageSize); + } catch (error) { + setError(error); + } finally { + setIsLoading(false); + } + } + + const getPagesToRender = () => { + const half = Math.floor(pageBoundary / 2); + const pages = []; + const startPage = Math.max(2, currentPage - half); + const endPage = Math.min(totalPages - 1, currentPage + half); + + pages.push({ page: 1, type: 'page' }); + + //Left Ellipsis + if (startPage > 2) { + pages.push({ page: -1, type: "ellipsis" }) + } + + for (let i = startPage; i <= endPage; i++) { + pages.push({ page: i, type: 'page' }); + } + + //Right Ellipsis + if (totalPages - endPage > 1) { + pages.push({ page: -1, type: "ellipsis" }) + } + + pages.push({ page: totalPages, type: 'page' }); + setPages(pages); + } + + useEffect(() => { + fetchData(); + }, [url]); + + useEffect(() => { + if (data.length > 0) { + const pageStart = (currentPage - 1) * pageSize; + const pageEnd = pageStart + pageSize; + const pageData = data.slice(pageStart, pageEnd); + + setCurrentPageData(pageData); + getPagesToRender(); + } + }, [data, currentPage, pageSize]); + + return { + currentPageData, + currentPage, + totalPages, + pages, + error, + isLoading, + setCurrentPage + }; +} + +export default usePagination; \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 000000000..e3f2e74c1 --- /dev/null +++ b/src/index.css @@ -0,0 +1,28 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; + text-align: center; +} diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 000000000..b9a1a6dea --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.jsx' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 000000000..8b0f57b91 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 4fe0518f0420cd10b9d7030f2f55dfa623573dec Mon Sep 17 00:00:00 2001 From: Harshit Bole Date: Sat, 11 Jan 2025 16:42:34 +0530 Subject: [PATCH 2/2] Pagination fix --- src/hooks/use-pagination.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/hooks/use-pagination.js b/src/hooks/use-pagination.js index de3c60d22..4c3ea8de8 100644 --- a/src/hooks/use-pagination.js +++ b/src/hooks/use-pagination.js @@ -32,8 +32,21 @@ const usePagination = (url, pageSize, pageBoundary = 5) => { const getPagesToRender = () => { const half = Math.floor(pageBoundary / 2); const pages = []; - const startPage = Math.max(2, currentPage - half); - const endPage = Math.min(totalPages - 1, currentPage + half); + + + let leftElements; + if (currentPage === totalPages) { + leftElements = 4; // Show 4 elements on the left when on page 21 + } else if (currentPage === totalPages - 1) { + leftElements = 3; // Show 3 elements on the left when on page 20 + } else { + // For other pages, show the usual number of elements on the left + leftElements = Math.min(currentPage - 1, half); + } + + const rightElements = (half * 2) - leftElements; + let startPage = Math.max(2, currentPage - leftElements); + let endPage = Math.min(totalPages - 1, currentPage + rightElements); pages.push({ page: 1, type: 'page' });