From 9960c7885e67f319ff0d8364f4fa1da0fc81003b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E5=8A=A8=E7=89=A9?= <15294745236@163.com> Date: Sat, 24 Aug 2024 11:53:58 +0800 Subject: [PATCH] init --- .gitignore | 24 + README.md | 50 + eslint.config.js | 28 + manifest.json | 36 + package.json | 32 + pnpm-lock.yaml | 2239 ++++++++++++++++++++ src/assets/react.svg | 1 + src/background/service-worker.ts | 1 + src/content/content.ts | 1 + src/contentPage/App.css | 0 src/contentPage/App.tsx | 4 + src/contentPage/components/TestContent.tsx | 0 src/contentPage/index.css | 0 src/contentPage/index.html | 13 + src/contentPage/main.tsx | 6 + src/icons/icon.png | Bin 0 -> 35049 bytes src/popup/App.css | 4 + src/popup/App.tsx | 4 + src/popup/components/TestPopup.tsx | 0 src/popup/index.css | 8 + src/popup/index.html | 13 + src/popup/main.tsx | 6 + src/vite-env.d.ts | 2 + tsconfig.app.json | 24 + tsconfig.json | 7 + tsconfig.node.json | 22 + vite.config.ts | 39 + 27 files changed, 2564 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 eslint.config.js create mode 100644 manifest.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 src/assets/react.svg create mode 100644 src/background/service-worker.ts create mode 100644 src/content/content.ts create mode 100644 src/contentPage/App.css create mode 100644 src/contentPage/App.tsx create mode 100644 src/contentPage/components/TestContent.tsx create mode 100644 src/contentPage/index.css create mode 100644 src/contentPage/index.html create mode 100644 src/contentPage/main.tsx create mode 100644 src/icons/icon.png create mode 100644 src/popup/App.css create mode 100644 src/popup/App.tsx create mode 100644 src/popup/components/TestPopup.tsx create mode 100644 src/popup/index.css create mode 100644 src/popup/index.html create mode 100644 src/popup/main.tsx create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b6486e --- /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 +diary +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 0000000..74872fd --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@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 + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default tseslint.config({ + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` +- Optionally add `...tseslint.configs.stylisticTypeChecked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: + +```js +// eslint.config.js +import react from 'eslint-plugin-react' + +export default tseslint.config({ + // Set the react version + settings: { react: { version: '18.3' } }, + plugins: { + // Add the react plugin + react, + }, + rules: { + // other rules... + // Enable its recommended rules + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + }, +}) +``` diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..092408a --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..30764b5 --- /dev/null +++ b/manifest.json @@ -0,0 +1,36 @@ +{ + "manifest_version": 3, + "name": "Measuring tools", + "version": "0.0.1", + "description": "测量网页像素", + "icons": { + "16": "icons/icon.png", + "19": "icons/icon.png", + "38": "icons/icon.png", + "48": "icons/icon.png", + "128": "icons/icon.png" + }, + "action": { + "default_title": "测量网页像素", + "default_icon": "icons/icon.png", + "default_popup": "popup/index.html" + }, + "background": { + "service_worker": "background/service-worker.js" + }, + "permissions": [], + "host_permissions": [], + "content_scripts": [ + { + "js": [ + "content/content.js" + ], + "matches": [ + "http://127.0.0.1:5500/*" + ], + "all_frames": true, + "run_at": "document_end", + "match_about_blank": true + } + ] + } \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..5616973 --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "tool", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@types/node": "^22.5.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "chrome-types": "^0.1.301", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "rollup-plugin-copy": "^3.5.0", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.1" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..bc73947 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2239 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@eslint/js': + specifier: ^9.9.0 + version: 9.9.1 + '@types/node': + specifier: ^22.5.0 + version: 22.5.0 + '@types/react': + specifier: ^18.3.3 + version: 18.3.4 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.2(@types/node@22.5.0)) + chrome-types: + specifier: ^0.1.301 + version: 0.1.301 + eslint: + specifier: ^9.9.0 + version: 9.9.1 + eslint-plugin-react-hooks: + specifier: ^5.1.0-rc.0 + version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1) + eslint-plugin-react-refresh: + specifier: ^0.4.9 + version: 0.4.11(eslint@9.9.1) + globals: + specifier: ^15.9.0 + version: 15.9.0 + rollup-plugin-copy: + specifier: ^3.5.0 + version: 3.5.0 + typescript: + specifier: ^5.5.3 + version: 5.5.4 + typescript-eslint: + specifier: ^8.0.1 + version: 8.2.0(eslint@9.9.1)(typescript@5.5.4) + vite: + specifier: ^5.4.1 + version: 5.4.2(@types/node@22.5.0) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.5': + resolution: {integrity: sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.4': + resolution: {integrity: sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.4': + resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.4': + resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==} + engines: {node: '>=6.9.0'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.9.1': + resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/rollup-android-arm-eabi@4.21.0': + resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.21.0': + resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.21.0': + resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.21.0': + resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.21.0': + resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.21.0': + resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.21.0': + resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.21.0': + resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.21.0': + resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.21.0': + resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.21.0': + resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.21.0': + resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.21.0': + resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.21.0': + resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} + cpu: [x64] + os: [win32] + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/fs-extra@8.1.5': + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/node@22.5.0': + resolution: {integrity: sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react@18.3.4': + resolution: {integrity: sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==} + + '@typescript-eslint/eslint-plugin@8.2.0': + resolution: {integrity: sha512-02tJIs655em7fvt9gps/+4k4OsKULYGtLBPJfOsmOq1+3cdClYiF0+d6mHu6qDnTcg88wJBkcPLpQhq7FyDz0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.2.0': + resolution: {integrity: sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@8.2.0': + resolution: {integrity: sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.2.0': + resolution: {integrity: sha512-g1CfXGFMQdT5S+0PSO0fvGXUaiSkl73U1n9LTK5aRAFnPlJ8dLKkXr4AaLFvPedW8lVDoMgLLE3JN98ZZfsj0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@8.2.0': + resolution: {integrity: sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.2.0': + resolution: {integrity: sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@8.2.0': + resolution: {integrity: sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@8.2.0': + resolution: {integrity: sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-react@4.3.1': + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chrome-types@0.1.301: + resolution: {integrity: sha512-cbht/K7PS/T+7tqcNaLset7qqHxFZLBlX4/4Bb3jTTV1h/5JBEvfnGSi/6FNHnUQKs9NYn0MG0YDjKA0v9KiNQ==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + electron-to-chromium@1.5.13: + resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614: + resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==} + 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 + + eslint-plugin-react-refresh@0.4.11: + resolution: {integrity: sha512-wrAKxMbVr8qhXTtIKfXqAn5SAtRZt0aXxe5P23Fh4pUAdC6XEsybGLB8P0PI4j1yYqOgUEUlzKAGDfo7rJOjcw==} + peerDependencies: + eslint: '>=7' + + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.9.0: + resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + engines: {node: '>=18'} + + globby@10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-object@3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup-plugin-copy@3.5.0: + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} + engines: {node: '>=8.3'} + + rollup@4.21.0: + resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript-eslint@8.2.0: + resolution: {integrity: sha512-DmnqaPcML0xYwUzgNbM1XaKXpEb7BShYf2P1tkUmmcl8hyeG7Pj08Er7R9bNy6AufabywzJcOybQAtnD/c9DGw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + vite@5.4.2: + resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/compat-data@7.25.4': {} + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.5 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.4 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.5': + dependencies: + '@babel/types': 7.25.4 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helpers@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.4 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.25.4': + dependencies: + '@babel/types': 7.25.4 + + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.4 + '@babel/types': 7.25.4 + + '@babel/traverse@7.25.4': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.5 + '@babel/parser': 7.25.4 + '@babel/template': 7.25.0 + '@babel/types': 7.25.4 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.4': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1)': + dependencies: + eslint: 9.9.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.6 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.9.1': {} + + '@eslint/object-schema@2.1.4': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@rollup/rollup-android-arm-eabi@4.21.0': + optional: true + + '@rollup/rollup-android-arm64@4.21.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.21.0': + optional: true + + '@rollup/rollup-darwin-x64@4.21.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.21.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.21.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.21.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.21.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.21.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.21.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.21.0': + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.4 + '@babel/types': 7.25.4 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.4 + '@babel/types': 7.25.4 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.4 + + '@types/estree@1.0.5': {} + + '@types/fs-extra@8.1.5': + dependencies: + '@types/node': 22.5.0 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.5.0 + + '@types/minimatch@5.1.2': {} + + '@types/node@22.5.0': + dependencies: + undici-types: 6.19.8 + + '@types/prop-types@15.7.12': {} + + '@types/react-dom@18.3.0': + dependencies: + '@types/react': 18.3.4 + + '@types/react@18.3.4': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@typescript-eslint/eslint-plugin@8.2.0(@typescript-eslint/parser@8.2.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4)': + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 8.2.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.2.0 + '@typescript-eslint/type-utils': 8.2.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/utils': 8.2.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.2.0 + eslint: 9.9.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.2.0(eslint@9.9.1)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/scope-manager': 8.2.0 + '@typescript-eslint/types': 8.2.0 + '@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.2.0 + debug: 4.3.6 + eslint: 9.9.1 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.2.0': + dependencies: + '@typescript-eslint/types': 8.2.0 + '@typescript-eslint/visitor-keys': 8.2.0 + + '@typescript-eslint/type-utils@8.2.0(eslint@9.9.1)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.2.0(eslint@9.9.1)(typescript@5.5.4) + debug: 4.3.6 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/types@8.2.0': {} + + '@typescript-eslint/typescript-estree@8.2.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 8.2.0 + '@typescript-eslint/visitor-keys': 8.2.0 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.2.0(eslint@9.9.1)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@typescript-eslint/scope-manager': 8.2.0 + '@typescript-eslint/types': 8.2.0 + '@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4) + eslint: 9.9.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@8.2.0': + dependencies: + '@typescript-eslint/types': 8.2.0 + eslint-visitor-keys: 3.4.3 + + '@vitejs/plugin-react@4.3.1(vite@5.4.2(@types/node@22.5.0))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.2(@types/node@22.5.0) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + array-union@2.1.0: {} + + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001651 + electron-to-chromium: 1.5.13 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001651: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chrome-types@0.1.301: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@1.4.0: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + debug@4.3.6: + dependencies: + ms: 2.1.2 + + deep-is@0.1.4: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + electron-to-chromium@1.5.13: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.1.2: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1): + dependencies: + eslint: 9.9.1 + + eslint-plugin-react-refresh@0.4.11(eslint@9.9.1): + dependencies: + eslint: 9.9.1 + + eslint-scope@8.0.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.0.0: {} + + eslint@9.9.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.18.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.9.1 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.9.0: {} + + globby@10.0.1: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-object@3.0.1: {} + + isexe@2.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + ms@2.1.2: {} + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.18: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-type@4.0.0: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + postcss@8.4.41: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + prelude-ls@1.2.1: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-refresh@0.14.2: {} + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + resolve-from@4.0.0: {} + + reusify@1.0.4: {} + + rollup-plugin-copy@3.5.0: + dependencies: + '@types/fs-extra': 8.1.5 + colorette: 1.4.0 + fs-extra: 8.1.0 + globby: 10.0.1 + is-plain-object: 3.0.1 + + rollup@4.21.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.21.0 + '@rollup/rollup-android-arm64': 4.21.0 + '@rollup/rollup-darwin-arm64': 4.21.0 + '@rollup/rollup-darwin-x64': 4.21.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 + '@rollup/rollup-linux-arm-musleabihf': 4.21.0 + '@rollup/rollup-linux-arm64-gnu': 4.21.0 + '@rollup/rollup-linux-arm64-musl': 4.21.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 + '@rollup/rollup-linux-riscv64-gnu': 4.21.0 + '@rollup/rollup-linux-s390x-gnu': 4.21.0 + '@rollup/rollup-linux-x64-gnu': 4.21.0 + '@rollup/rollup-linux-x64-musl': 4.21.0 + '@rollup/rollup-win32-arm64-msvc': 4.21.0 + '@rollup/rollup-win32-ia32-msvc': 4.21.0 + '@rollup/rollup-win32-x64-msvc': 4.21.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@6.3.1: {} + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + slash@3.0.0: {} + + source-map-js@1.2.0: {} + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-json-comments@3.1.1: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + text-table@0.2.0: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@1.3.0(typescript@5.5.4): + dependencies: + typescript: 5.5.4 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript-eslint@8.2.0(eslint@9.9.1)(typescript@5.5.4): + dependencies: + '@typescript-eslint/eslint-plugin': 8.2.0(@typescript-eslint/parser@8.2.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/parser': 8.2.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/utils': 8.2.0(eslint@9.9.1)(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - eslint + - supports-color + + typescript@5.5.4: {} + + undici-types@6.19.8: {} + + universalify@0.1.2: {} + + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + vite@5.4.2(@types/node@22.5.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.41 + rollup: 4.21.0 + optionalDependencies: + '@types/node': 22.5.0 + fsevents: 2.3.3 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/background/service-worker.ts b/src/background/service-worker.ts new file mode 100644 index 0000000..129748c --- /dev/null +++ b/src/background/service-worker.ts @@ -0,0 +1 @@ +console.log('background service-worker file') diff --git a/src/content/content.ts b/src/content/content.ts new file mode 100644 index 0000000..1df738e --- /dev/null +++ b/src/content/content.ts @@ -0,0 +1 @@ +console.log('content file') \ No newline at end of file diff --git a/src/contentPage/App.css b/src/contentPage/App.css new file mode 100644 index 0000000..e69de29 diff --git a/src/contentPage/App.tsx b/src/contentPage/App.tsx new file mode 100644 index 0000000..675c8ff --- /dev/null +++ b/src/contentPage/App.tsx @@ -0,0 +1,4 @@ +import './App.css' +export default function App() { + return
Hello, World!!
; +} \ No newline at end of file diff --git a/src/contentPage/components/TestContent.tsx b/src/contentPage/components/TestContent.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/contentPage/index.css b/src/contentPage/index.css new file mode 100644 index 0000000..e69de29 diff --git a/src/contentPage/index.html b/src/contentPage/index.html new file mode 100644 index 0000000..d0562e0 --- /dev/null +++ b/src/contentPage/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/src/contentPage/main.tsx b/src/contentPage/main.tsx new file mode 100644 index 0000000..20298df --- /dev/null +++ b/src/contentPage/main.tsx @@ -0,0 +1,6 @@ +// import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render() \ No newline at end of file diff --git a/src/icons/icon.png b/src/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..450a33489d2c8f1f38a417596bff610ec54c95d9 GIT binary patch literal 35049 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 z z`q9AwgW-Uxskep$t;1Nc?1T)tS)6V`Z)O90X9D@D^l+u>5OD^UGT03^f1FjY=wY3N&byK2L!p?Neqlb5S^6C5J`GTe~j7Fp2D)u#d zyZh|#9pS7eQkv0tjE)r7*OwGUi6BfpA0E%>k9J6v!juhf{p7Fs=#!^}Ln}-NNR#co z9S=tghJDV@E$)MYEvJiq|UGnYk{tz9dfMh%#F`v)60O|6AV(a>ev}QUP z@})N)asTcSlTjbxTduFqIXgSWdC%U#A-#SuMeOhIv%j~CH7%Ey7rgV%yR>!9!NCD< ze*W`BamswT;^O?A&%N;)X%;X^RaO*5N!v6`CnM4%=IrvK15U796r<8$ zk=7(>j4>^zFHULO24g)>U!0Mp8N=ZS>m<&)&TH7``1qLpy*=(6AM^13U7kFB#wrg0 zU&x@ewpB}AS7GYfJ2YsdwDbpk;y9v5wsoCo9ZZK?%;s+|YA{0lte*eh_6R%Qcatw3 zHiszy#yfCuytl_{x$0VOiE}N^H4OVx`n{CZ0`A>AEF zNWNO};K5z2YkBA0x0qdD&>Bk|Ne&P8`G5Z8Pxke z!{YY`eLT<`jz~<8v-4Bl`skAJuwt2)^s+vy<$^a}f6V>6$C%b|esMu-20VTGjDEk* z!NFli8YLu2%K6y^))^$8EQ**6$6TDAbA5fmYPkf0{k*Db)~(>~$uX}ze#~F~<&QZ( zJ;QdxGwb!5Cr>^_E5&J);GCtkfn{xNu-eCwz_>Q(EiL#o4j4db&7j`{;juo{5WFXn znly^p7&~wC{5R6?Uw>A>&w7NJw@@ym5S{q5aUBO1tXSnJt%AeGHVChoFLK(d0@tFX zV?0PWIyz!F9&Z)2HEdj-*FfHoX1zyF7S!4~OT$gIAbcUs0EH#{B{F^E0Y^iEuUR#he$D>i=fNuv11F&cX%bO4ur5oSX*-Hs;|BwTknHX4QO=+73snusQ{WdMU1pNHXuiPF<+60PH3Ot?ViSB5W z?huJi7bq*Ym4%f`SQiEFzcc5}&%egQ2Y2Xa3G?|iPoAF9pBEh8IVOrzhT|Pp>w<56 z`#UW16%No+adCFddR?KF45mqIa87Jhv$k>A;OFclSC7^a(t4`a;DI>SNId<)Fr2f~ zwyeu4faUcXDLk{~irw*ua$WJ{$r%UxL#E>)63_1L4&Fn)E?BQi`hx*Y(=ZtiN%n`B zy5u|G`5uVil5*ZN*_|?<B9^60S@#9yR&lg15lwmKNi{u6LvJBG((`T0T!nq5s z<=OL7w2sJneX6RnveEZMH_-0EpH!w2dT9A|kCJa>Q{=QG^|d`03jJSq0GF z!U;n7Zn#8uET6~JHEr8~j6(4EZVpa_fKk#@w>61K81ym*Y0P+(G3dwC^@S(J=MV^&3h?OeTWV_4=ZJmL5nV_NoicWIiMI8HInQ>@plizS!W*9`hG zcMkWM&91nA{~>ACqd({|8Bh8C_rFiE%6V}2fWaW)3t#*k%jKH)-uoD997WY&ohMBr zhQo|}6@({&<^1e41c39%C_-3^vkqrHbz`Wik}Mk#rJ5v4uqNP>G)frs2UzcrN{23B zXJ;pjD0$FYG9Hb$iyOxgtCd4+({;D--Xl9`?>EfgM$GAwI$mHAGl6Lqo z6NZwKNOhx10=$%H0#{uY2HcuKw#UiQF$en-l1MS=Wh|C+K7I0(i;F8fo`*(17x~uk5*W!qY8h*BjU|bLwK{N)VfG-6W56M!Fbkkc!u!;k^|}sz z$!_+`d06E+N=ni=Vl?byZO}EY=SznDBcxEIX^+)1XS%z~(cv-0YE2TS7fc>3%Gv6eXFx6Y}}CNymu#>b=x zSfFjUr@RRviDW3nZC!^WVovVfMJd(Eu`u1;Wwl(Ol|*TEQ`a|4V94*=i-zUjCi0iE zgOmcL6}B~?K*#acA{GpuVJOAlwmW-=@RB&z4Eqsxj&^990TaT5kmAxlZ3Wo!|J-hY@G!%96M*j=ZK=1rYZw* z(veq6DE9XD5JFLuC8i4+Ap&j*Cx-RenT{y(9BVy?yL((+ExEdybFjaI7cgIa9|`R5 z?K9n(gadS(;5*;>Az79omG7+XF0`VN=95pJGQXbl@WEZ4J-?uC99b;s#gaJDcqBGS zxVX4PtC;a*(y4%fJ`RA^c8sp0Z9qt9n;Pw0XjwKx39*ieqHs2VRGS@ptF2>0?|Bf8 z%@m{{ICO6tIl}}?nD3X8Zb~NXLan2%k@R-kC?#NnxYV{KX_8XpIf|4I-usBz)r_jH zX^rL6PoDGq#W{JNldsE=L4=?x)=Vd3nk=R)Pnk@{tjh{#Jxy!KR|QFuqP3xETGmw= zj!e_Rs~E)*X0@W%AF#i-%iHf=Bh-x`B}6D0-Z}bNjI*KC?d=Tt>Q`Uq$&;sCUCdb( zIa((~k!G2f?CtH)vz~*!9lrjxFZ0j-=l_i_f8|Z`>w-5w_lWmC_=NegqAUs)tCGQ> z$7DF5Y#N@uxaKGCe9G?bh&x9|>`nXBjbm8_l<%w{O;g5`5lNg3D2OujaZ{&z>! zL5ma`r8OGidG*y-0-qem0ep35G6*TL#-O5276>&P@4G$U?fqLskJ!u!cA}9&2TcLr zS&?ogexwYke{-hbMj4Eh#xylaqFF7MxVE7G$^+s!WwBWD^w~3BoXt5sy`(HF;yB?4 zKl}*~9^7X*>LY|?m6x2Io^_cBj*bo}@|>m#?%1j{)OCxqj^S`XmZmrx&PC|vr*Y15 z=j1NW&(B#d7wqp(7!6XMJUi{m1VoXfbq!gp`Hf%y1+u>8#$zvKr$`Y|Ub2iT_I>gtm7%L^vMl)Z7n@Myxf{_+E6i<;%K0pUqf&3M#9 zNkzWONi&C%mRLC=rAZ=zYoS=psC0t&f+R@;Z?W+JcHnPwVyaRqfWSwO9)yDf<{LAS*5O+87uyZb)1JY5)-n%ZPMxo|97k zn#Cfg-ye0OWr1gq!h=u@M?>(I)3bAg3MPsu*6d8iSktgG84~Re`Q8sS<+@=o$cVKd zQZd$r!yDdz?-}{3kkk4$vYo$da=L}+PXnMWi-s_B@ty=vs$j`^?JlP88gZVBT8?fy4-kb-~jorz{ssMx$XT9x0ajilV6a;DcvKBti+=_KGM9RCnFf zw9Zl21}O#myE_~m?$a6@n9x}A`WuhPvWT7C9R!ZyppO(4{X~aD4Fv$>7aCyDv^70*;b_0+V z);Zdyr6@`w6?lodZgDPWN5`~HjYlHAp)D8OI~cMzp76cnAWP%W=`>;X zvUTBHBmMeokI_o8DsqxIVRyPiSr_2LFEn*cmi2D&{4bvcxOq6|UK;3>QikK&2u|QE zNm;Eb&d$!*ne-VA$0SO!w>PBh3-Y4ia5|={dLRU+=T}4$!12v*ev8@l41hP^{5-Nd z{%t(YP|+bDe)y!jzNN@Zl#Ix-6pzO^kV-Qc#AInk5=X47l6;lZG!0c_*xlP@wpdcv zHK&(XTrU^wPR0y-8LP!LlgW^S{Rz|Q5YyJ&J>Fw6&q9!;iRs z?^;ZFhYW@TdRfGHJY-eWtn!?uHRwq2^mIYhSWZrk!$7WsUZ!bnI6JAArDRz` zQ#X`lIC#6)%ZOvm{>}s^;q+oj+ty@>WO02(f6(V>Ck5xp8;|u0I*b?E+!(2KFa!U} zFaJ{4{%N#S!A?}=+mpDZxHSjwZ*+X`T{ju)xZP!t8T`2wLMCX*2_UYvrEw5{QK zzF>cE2k;#1j~NeB+P1{DmdUus!S00hYKat{!JyBf+(UHq`QHANaM(t}!TyxGsc4%T zr39Ckm*^-=_Ri-sQXMlL4fuHeoSpH2rmB!ia`$ML@vzUU4^DV-e#zx54;ibfS(j^) zSmChTzjH_yr<`6~adA;oR)A$cUh7~2aQ_QHP$cV2p7!0^T}48yR;0~p@e2CN)NiKN(F-CbR=E8HC3d~!Zs ze9yg<+(56ox^Un7p7Z;C!}EL|rD3yKlG!$KoS^9%{Xw5NirL@YW;VM*QB($l0S)lz z$#Y)5IppCxd%XYdZN7Q+mic0XszF&KOhz7)ai1*DG2JdNUOZnl# zwK%1!8}ck+JoFe2dqknMnN{6jC^f6ag05%r@SQzgzd6M)oK`alAH8>rFP^+&zKH1b zx;P!1I0(3!&)XS;!(`NFzKV#`3>t{jj3mj~-mba5+a*eKlJa^mC+sCv)6o9t5C7oD zqpn9?7fdEwTZW7-yLf5p?s zU-InhFF89oW_EeW>B%9-Z{M^U_!!$VNs_qb;!3+x6k=D`b)9af%?hYXOhcpB=@KO| zz8|r_zfTk=oSdF>HCstv-qa*X!kvR%zW2RPv2=~IvvZO(ZC%CN}Q%5wa-LtG#wAwoeo(0F;z=;Q5ErG z>MDpd+A^^nn=lHvwk3
kw&R{C7GKmrxL)<_b0i^`VglO!>gW$?|5C(LG-tQK?T z7Z((Hc5@xnHRQQm8F`jdR049U3b{&5!(uS((dl^dL5qwsZ^+_=)oRTLAAU%qsvIAm z^Y-Wj8lCN(U9v1C3?qsn=bJZ&tTr3^y*}M;7ey6xN?kP^9iK9tjzwX-3CRi}basOd zw{Gq6{=;{e%@=Hfh$JgeRfW@wB`;o`@w-3T!w+LD(`pfQCJpc}{>8uK;_{0B>3{ye zc=7sJbby-5r=NU4UPznkST@UbKv9+ydB$is;Ba#az}0+-W#~j{Nl~gOs!r7ugh@_b zHJtzK35IU9D4#;c^o>ForYNc?loX|5*ze(o2_4rZ3?te1t19#PoDbi9z{d}^`TErr zNg+~pg$i9%IzpGc=JJ|`NfJeXEQ+qF7)mQ9ye|5*c7z*8F>xp!x7V-UaB_0O%WuA6 zv-WA~3fnZ%G=-|lWz*P7$BUw%C@O*|0!4%tilSm!CcU1+d>)e|DRombos2LYm#5EO zlI0b?A2He5V!2%5`#xn}kQW(6USOCy>rF%uB&eFkpxh{&W)+qsC%U@&B}+1%LJ;xuMw;&DDRIGzGoNH$6dNTm;d$O{V7qF^IO01eWv5F zoRnq3+4%)|Rti;AHy8~2Y;R5Z`s=3zVZ`^o`)!gWrco6}!vUJ6vRtj`c&h`OOBnW)zDwR`Eer38BNm&f`B|1tjfj38Rutb zTwYwU@dL`TqSJ91jie~kH4W1+h?AHsE5xW!H8{3|PKg3W4)X^8*Mu{1nK!?86Ek7s=T_$|NvTi>V55*~f= zHC3xz&U2}4dc8iqZU@h^SuU1zJ6(#Zpv+U&>yW#5_W9u51E%AypysoT)iR`Nf7gB# zlO!_!j+2}$mo>2GdFZ;qYPBJb6N;i@;|FYlh&0RE)yiS+3pHQ_17hP#! zG@i6fey}YYf3rbRbc(VNAD^n?bv)?=%9@Vn0fK37nws@`#p&r8&z`-IFTPe<2TLPj zg{HvLb+Wu*5k+!*r5Sl%q8SEyqfkUb@JP}O*RioJi!@8fTW_4A$}GDmYi!$OwUAZZTrljbeDd)_4)#YZ7MFbU<}*58kFOuU;Oc7Lf)^BA&y^}$ zQ)Qr}t6W~@G&LNboMIRzv6A3<9-~2zfBvH%aCr2VrYgzvinm8IUcEh|tfcdjt6B7! zx*-Fsi>pgC)sW3jQ)5|{OmKCbysS`4aR+xi7uR)B6qWgGM$a<|mx(B^HC@55Orj{h zp-iq;D?zv>C5~;Os_IQEnCCe(4UTJbbacq;*RMG_k*asKT#J6*6jDV~*JOD?o>$aW z(gK-OvQ+G6nyOJW4e2Hz%Y;bM@myT5gY9-`;)uMEr#DS=St>OU#|d>^v$wm4<=B|I zL6)Q(`y0x#;PP^T*Xhz93^+Z%!q9cRPKWhcFlu#Gaqr%3M&k~@{iE;j@ZkZz?{jrI zC(R1xvyG@}vjSDA@ob$e6V0G&8*EMb+`4s(uIKQbk9;0|{nwaQkKwRSniVpF)wI?w zuA`|6N&}%Ez+&xV+8X_V$JK02QK{ID#bn&0 z$V{Nf@K6I;aiZZil)mi6W6YWm!hI+odRS&d<+z_VgLgp1owf7R75`l&GqK z(n#W!+Rh5fq9Dzr7q?oVVpBs|0i)3n%d*&P7Q{)#auu?-v(0p?%VgXq zO=6xrhNHs^ECUopXL~xLscZZoWwqX*=^Eon56jXpbcb$d#AMiG&^4&ln&G5Jk`)w1 zLy`#CI*uw_*Tr=$G)-fBYeHUCeCwn4czgJki?b`DIOYHRe}2MbEL4w3Fa?!3kuUEnXEig@!ZnrBwv`V@K-7v5%6W^!v=-L$BlTw}1Bw&d#ss_qrH{ zfo1AU#zW4}=QpG6mXs^lR>QB0cVsH)0%)aAE->r=k}o%h+<9?~c^ zp64>?cNz6NJh*$C)pAW;mKdfC+4L+=&@~OO)8YK`{KiG1wIC-|71d7JX3@!VM@XGn zmJ);;bX}pU3(_Q}EGn`VGFeuYbP|TFPK7vI5dCF}^$t$W_;q2m)s;)6~gCZ9vQ>SBdaIjAlh0s(i)+=t^zRmp6Bi3u5 zZf`)-7@VFjnQToM^c)lvOvmBQy?wTKr~KJp{(>mY*aSIYB*9Y~Kjg3e_Dgyl2gmd% zvy8HYz5N|tygsEUD-MrDf8aP>HtP+yZ|{@mG5^E=_}k_X{{R3W07*naRKF0%DW81& z3BU2{-{HUcZ~r@Hiw#w+V44=LYay)vhKCRC@YU1TL~(p$C1q8i#LBQGva^38pSgrPr_CQk3Fc4ucf0<1rp~7>}puP1B$mI&qo^k%|Vpz4w8e z(4qzf6pcJh$g-Tnqa$9ve8Jl{ZwZ2kB+gi^1+YLP07J)hLDg8UR%B_0s);n6WkXb5 z+lFb82I-Ur=?)2rp@$HLt|6pTKuWs1;ihxMp&9g!Skg59#4>%fBaMy?BL>am?<2>bOT%Y z_+(xDn!LY9&50Yeu!}ktecB@FwD7TtW|;sABG(V!RaMhe2E-p|#6HbC7!GdCoMCzS zc=pjeZ=Sihxk)Fc+Y9paN`+fZl89l@J>-sO=?oeg8E$ytocTW>cK!>daTUPKu$SCe zyh?BT{zyFewVEScK0Y`9m>8~q(YyZS{&Ld!*fd5=aipL989Yf51k$8PFw)a8M+&!2Hi`T)hPp<-g6zx6 zu;k6%jOJ@7!?%lM$cvM-i2i%n^-^6`I3|&!&4l5H<7bU$j(_R(Zim5XC+(6LepGgI z@4UGdBN=VvQ3-aOWW=Dm!22Qs(imAaA+A7|wGC?dP(x)9k>#+O@CBIU3IwlE+8>8W+eO^&8TdZ(o!}%@1U^RH-V+~h;^{^DfKd7or9(quX)LKa7ZHsbdfyZo# zoU6G4Vm6(-f_+@gs8*KtpPoXTzTe@2HJTf4Q(hm{{Cc=(XfF58lhz;i*Y}@ssW)!I z?xd8E%e8fM(?)v3Z*@743Rz6;>_(1-!c~~)apF6=UD+=S`#e-cE9KMnRpe#j;wBa9 zqW0IbP07(Rco#;exYab4i<(| zt6HCzZA9Ct8C+CzjS7}4dk+uaTIwm47IL=Kv{Z(Ys7Iem!@S5x?Yl`#{JQTC-|FR> z9gw%@IzI}4t@u-(+J`MQT@Mv3}I@Q2|!a6RGlD=NQB7pd_PBmehm$e zMAbe(jHQeOSYVL_5#=jaVm8cmF>>$59wz>!)LnfA0xjy0g*%EkTnfLF*7e=dEg(2i zZOqBT{w5`+J6|n{kv&~mE|~LqGhuu{9wN}#2=g?K_w$z}4O5XfU-P-6)ze18cs*Kw zrA@fJXzHBY9A+d!^~0-OyGzD1GAL7wO+-|TKI)woc+j2w zAsAl@k09*lQ)gJfk1x@TmB+s?L=SXy_(*SUQqaH+)9yD+aK=f@LIvHYy2Y5PJh9C> z6F*f#)P=Nu(*>Ypt(i(>F!Q#zJ7C(n%UL)G2K*s~EOb%G56J1uUSVf%vU5b(_w2Oo zVry+#^nXevlCXqIuXteDM$4zFe!>#~v2vqB^R52$DRUlwofQ?#cwqzpj07&N{#5@pE}T?KG_1lx(cAkHX58lK2a3EHLao;&>k?m)jw#l?%~+ zz<|R7$oUSuDOZ*N10Z2P2p$=nAl0dygu&f&MX55Hul;`F^L5*hhL%yG;?E&WJ!b6^ zg$6gH?UUsuvG4z~Cp(`oDgrAG(?Y;4NCtvf*j2~*6zXZLWwY6;gYS-;3b-?4E?TIF zM^RzWgued*@LHv(OEnbu@a@nF?8}SGf7&G2<_Ow#xljVT6H@&j!qh{z5!dFeiJVqL zBjc^+xO&kdTL0HNlgrcAvqBp*cWjW}Ofj%E;0^KwOT|x{_H7SxX}G7-yzJfH=d3^D zAK!#AD879PnCDv0KNMYmeW@zQV#;C};Kinv{4N(92VEM|p^buneSP`3($X+EJWNaB zKRz*$F<*uIHaVl)B3kk>S#rDRmgaZ9i%0W&Ma{&jdx_p@yczEE=K#MdE{geor$XR& zz1-DQ(Kp_)&{m|7fQY16 zZDo=M0Kx@Lm|F`Kb%#$p!+2y-%DwCO<}|8%#c%!(?wSo1rE_w5O+1BU&(bb(FTMGD2+N)=V$>&MJ zY-~G#;|Xb;9998al#iO>B!@61E;SvcU>yH8{6d`_ZQiUzD9BHsC{`_?F! z3=aP?MN@6897Vd9qx(Q3x)OXd@gY5jbaVOu4D8+KEwc6l7x%>%Y-QdHE z$X1qARAhcBwhK5?KnBcpd*;l|>5qhd8M$f_;b4uz4Av@l=}~6CE30>F?fc>4)&$(b zx_?53#$&pb-~YR5YPU}_`jIk}-Qq}olqKLAEimIg7M8Vo>n2vnj#&s%FiKl!?0u>D z-r@Zu0MaO=K$F7TYNmFlmq~8vpEzt;GuGhAJ?1tkzrSDiAIO@ox^FmpCI5D|Myt%{ zox|xx@D7Cn5bf#~v-!s(3$vr68Ci&9zvPn%>d_vu*=lZkQC;#wr_PFOh=G(Cca+G& z;_mLTkiF9hZ{9fTD3VdSkS~A;Il9$#@*T#uR%>R7aW>R}`DKP}3*QCCJ1ky5e#db< zscGs25rhJtsX2o~U5jYY1LfTE=%8g}!fj}7E@E_)k=cr9$^U`o^&*}*c{;Y7ZJd`l z8ujH%FwGr`)PnX?mUeV{KFg&X?C1M+freSEKM)@$0f$V`kT2^pzY*VX9fo9th-99N zUyTJ-NS~roTI!D8u|6clV~T+}07@!UbZ~5n0iI!Cl$klaX)!d)EjmsT_S>I8Y^mfi z;hc6)=8ifythynQU1$XB5oV+fyPvxmDRvtWqEgM%MwxL|aSHoBrpd>5yjT3JsuowH z65MY#0i1hW0AHwq0c@GMcoJ_-p6cg6lvUJJim|e^4Et%@_^pu?%X@5(Z>`xsJ?~}b zjI|77u$J_?rDFb*rzC`RF|0=|Wm8R$khCSjsj zu|%nBkYPW@Fq^~SbXYRlWeNPli}t>?ZFu48Mb#JIiK7`cGHP|p^{T#av4Eyk3WaHv zKG&8bFfc?>oNHy(X__#HlznD4?4?_Nt+f3RXC8SyHWjfIq532ESVW~sZlQ6!e-{f3 zIdpF=wvi(Za}%Y?g!S-)X+7W{r0}>YaY{!B=80H6bN9>B?7UYc1_zlL6bIZyq1#Tv zq7vrZOIyB;7Bz+%T8zuBK7=LGc(4=!UZhD)t%mM;_PH{m$JXUG?;F73bEb@MW3gtv z*!d43`{7x_56?`W3G8zO(vZz8;Sl~D!l9TFP}qP%f;z+dwl{=DRo%LD$xwQ--LXu0 zOJQIqce%i^?`_3%c;{=C-(OK;IDG2F4PRI@6c)|-$}D-$s+KE3AF0U?3g{o*P2wg@ zsI^&2u~Z}t+u?wU#hAe{d?kx#PHJ20dY^r658cE@T6%6}YU}Z0eee=ULZ`Twd^@sG z%3(IE>?;xP`JcU&Syx_J;+7OGL7nT&SiVf#K+mDW)T059e6E{gVv_67qjjNiHd9nt zY!HU%D`|akgRMchB`P>yQxBd2MAyJVmTPaSAa09B-MWVM_+=`Bei4BWEzoxZBDwQL z^Ax7b#FKdv$$^W}IxEfXlfZ%kM!>%bV)#;ZXD2uj2&n`TmMDG@vsir}Wu`J3BBvtc z#Tja+IUJ!oyQAE|uIc$9Ryy+wgU#B&A9Ur#-&*#XgEp_(g$ncPjqD2TLti5;bQ&l! zwVIY0(UJTfW;(aa2Gtmh3Qr8cz4?_&7iZ~=UTIL$@05d#ar8B&vjQ4;5z7j*JZ{a) zJuF*KPfbzc=L7%5j+;lnTtTUxy zz|Iv4BLmm~)i^-5O-8Dp7hGDfeqxrvge}l+9KL8D$CqQ8iAECDv$)9k=1r?^TJOan zqt8c8m6@F*+ql9~N~#>iL2h#1*6fRlcx;?ToP(Pty{dHkr-V&wmY7iZ#;lN&Ud8tj zI++p}3!7?OJiw*dy_nHq>8eSYrBySK?ZZ^|QxalJe&; zT9`z-o~HvU6wjD?B;x2&V9l(5`zw}BGYUOble7k|ltMZ4t&2_;&B@8vs5^G+CMEZe z2h|v(vXcx)4{pT7=G&zj`ZZ+rQrYJtbvs8fKs?-7$t|phHxGv6bJ<4hdO(|l_-iKG zzkj%Q6BE=F>-&HIrT|4fcON19o>|vecvL%U6al=}hJ=?OXyLt6NRNQ8Xz!I_54S8t zpu_h`C89W%t`mh^{X=787=ud)43OC{-sCUWH2XXf$LFMQhuHd8-ziB-X}ESx8e(Xok6AEmfW2yE`D zJBby;5iRWMHpL3#u7Bk2VhXDgROn~^lsHE6@~_H%qx?x1Dq!N`ypiI}}9;{_Q zA_vAI{h9K>`IFCDEp! zBB9mi(xaB_2zN+P7MhnveijS>pa^~6wV-n@HF;fF-p7-YcYjEnnRf=?FQPN<=z zNqukik6XE-m2%4kA7&dV;c{+vXC1dVK98*napPa=Hb=QS-;c7n$;1?CBqgw?I|#eU zrS0y30%60NW%ZZLK#orH8>Z_NHol#@kcD2{7X#tO*yTo*|D`CXsmwA(pW|e{eA)^0UT>6Pby_ty@NQ4nq|%FMj)Cc33qu2f?kn7_i_6b;YR0x3?9>^LkB z07GM~v=COIwPGgh(#v&PLqDy*>iZ+IwXK`X4|Ysn$@h_8GhsWn9k9|*nw7~tDOsOv z5)QJDYpR1H%u`^n<hs~?`mJZg^W8*u76SY~F+@qG-zVI_N3&Iyk<$YTCt1=8vm& z$Nu9=EB+b7J)^bM!k)abd(72oLkNd=^IOpC)sr$%4flN?#5g8_(?ugn7|Jf5fRz_`!{0KG{92dK9_FO&0vD8Mz(cI0zNKc4kjDZMX4X%QWz5 z74yFcikI-qi;mXx+ZO8RxBjz#y%WVU9P*zSIX9`>6r`FxJUAGcf2M!x!<^nga#h}^|9HvN6q8A3>N2>}#J<18r#67x-e9*oSUgwUYvlRc>4q?I ze|u8yeobrZWYM6>j0+`NJ7?>%rl6lf)%xznsf_&~QLHSzBaB-~;R@^ap9FX{-wq9z zx~=! z1G)+Rz>hP;I}HnjvvSlZ(~pNj%J?r)Y+J&My{QGRE`^x=OY-Odq*-VUakipE+8N}$!AN`9kW5Aol9%rTm(Y7?a+`ktupk&5Nk zgUkunhQyP+liG%MFr^O55k{;@|HU523;8!ZQ~%*vg;2*mX+xK((OeNpF;R2wGuzPL zPkkb3HbuwaV|I8kpO(RaW!f(L9%hfaTt^ldAz*u<6t1dmVFB{{YB9=Vv?|*zh@Eds zAX;+F;3bz`l2TG{|GXB^HpW_;9m{n*A20Ec@ceAl@wDYqmJj(!#LaR1<-p|`^KSM| zr{B?Xa-N3|0;#F18=rIQyYFYT13Y4TiI;QQt9wTIK`Vf!0(ih{s|G6_?UMjT2?!)O z`$;fkA!T}F%4mAsZ!zN1tnDA{WUQ__z?L}=h2(c2J+qJrd73uBfB0*EW=h&}_b)1} zjon6F;dhGTk6@dO{G;;c1bz;$=e>;WZFB8WfiP%|098#xJBVN~n=;Q_m&sjkQubakim&eJ`AcbqD$ek%rEWs)%|L(M1yegKSGd4uNyyB#rW5R zf`nY4lFG^#U^SV`*P7YjLD%4pf?3}TKWfBCC*=h}hAx%V&BI*Yp%|?do0>QgPlmMZ zMzCDZ#7mlqQD5xc9A`HJLR}!XPzXFhCXvkrBf` zvr<~WIk|Xy4_}10v zF#OHhV5bGUotOM%uef-Y_*Wx#1iJj0o9M5~UTgkh_T^y%qq?^}SqBT{?CSbqpJqNS zY6)Rx!Dp{nqquDlYTMo`&j=pNcYKnWKfL|Of&th^dsnDgUF-QDcOz+h z-sLu%i-B$YLKpJEC$0QB_!+$Qt*K!>VCN;jY(gXbevx>V=j=^DyOMlcZbs?d||CJ$vZz$liV6V7P^xfIx%R)dN5)#rwu8#S&Gu}{zHTU9WiU( ze7Z*Z!D#bxZPmH4dMla#gG?7@f!9*0KE%MTf0SxG-+Lok+bFR7L_JA==xv=77O2Tb z<$n0h&{#~8E>g3WeHVz=-3p6{?^<=c;&$0^KJ~S)IuJ(#3T)(D0H&72K%8M2Ue*_no5(99^}9WemB^lsJSVku2T_L-7UybA1~>9JLr{mez|K9 zr=|wl%84oi@gixZw9rPH_i)p3xr$WC^gCZ45>*OO;ia$RP3F;cniv{(Ji;pO3le(bw3VN z;FTIVIaN+mgQTkb(A;A);dT$^(aYp+6_poazcdt0V4qyfjrtzlVjEm((U-L!8Nl-+6$tC+86IQ#=}@^&+_>^|INtu!B|mK7+4f7ZT*fM;Q`C93sqd z`VYZYv29enAN+$n?}wIUez%Jjh2vVKz$e2H5XIPo!|9 zC@ry*`DeST`CjXWz@*3J4P8Nl8P?>BjG`iXB$I*BxZ^cEX@j|gahdlhygWaQnT`L0 zxqK}|K!Jvwy;1owqaCLW)kiZ@ds*x4HUIbTRzoXx+PUv)e|;+db9(9>fS`UrUZgu} zQOz#?RjFKb;F%+#kujXY#RhmIM@wU$(=5Dbc}~#lB%@GiiUb8fiLQPg5z@nM{H84p zU_4nsXP0pwS0!_QFp$?0HO*&kgG8)Y`XLq5Y0!#i^Vf^37{QqYG@LmCF z1_2;zyNM2P^UtxdB5Vr}G#VKWcJuCP;c+I4<-_6ihqRYf9T}59ZK~}7w|F?3a&?MF zg=(~sL1%$~N(+0YzBKb#b~21%mny&DD^n-)JXXkw%Ti2Om%+vut2Hrx8Mc>1{ z0Vth>u^tXt)y7pnHOO$nwLo!4ia2#PnZN!;ScsE^R#){a?vya|CT~*nTlj1%K z$AJ@dfXNBFY!(O?PYDF)vnfih zU)`)1XpAXy+(PW7rw3#cfU>XZU~jE`t(Ke1K1q5hTv~6QeO_X`)|4k}Ti7VA4AqJx z{o2Qfvyy>T42(GfCs1s#Apnsz+9`WS!0{PvD9%oSBSqwP0v*@kKT#E?cZT!ZJ3ApW zGv?N|{9ve$U39uyCtZA~hP?sP_H=;i;CA$6Ctb|vp!Z({v%a>c32`JJTKtLg#T;oV zF2^*SgjIqEl4)NCez0RO_0n1b6g}kl)Kq#!tpoYLp-V++HZC1)Y_k{P68`CCSZp^ncL4dBM^T>2iq+SMGS2(UpuL zLf{D|tmO}DT`ntWa)nRH5+;RXgqc}V>h65^t*}VUbaX7uB6dsU#>Mi(Tc2NXu{K8s znc%d2j--a3dMeckPV3CfMf))QV;0geE4GosZgNmn08{IXf(@=ZR#KiFsIrDp!{2dCrihyJG-G z21J9MtuOblUn6%zl6Y(~VL-nRN+Aj;+%D>3adZN7}iX~sBBEzsZ}H?&^F zN_yi!IFUk2V|dMO<7%Kxu2o7y*s;gK4Vo-eWi_QuTr9=r&^tCL=tKc&=x~}sY8ZOS3!+{cs|%x}aA~3Xe^>BA9u?pUOFQ*|+3)CHmI!;($z%x15P{6Z5M73f#AUOE@!|Ft=?9)F;ZhP_}%7pEu{A-N!1p5tT@tU&0mxt?Iym+JNgQ1-6d!#kDL#Dk3Y8^d+Xqz*jx zdPoiWTqM@u{xU0*tBLky!yIZ?S66AgJC+I}WlbWS_{qp#lzF04v!r4Rz1ZUgf=qDm zuJ9dHA(u#6gAJ2iQ!MS-m}a>;G8%8t9U%W?oM1}51Nx`p-tC;ATo*qNRXs=ubPNWM zNWR`|9h&odusHG1ZiMZ4*u=ABd2r!hT*DR;6YNXoW^u9yqio|Neut1=r{=F@lu) z=D|Pw7ZYyXqQ3OdPW^FN)4QFzY&WSzX>obktogdRML&UoEcZCy<^zzM9-M3T{}x_x zNNO}AFbse_wq!5eYx#@dpwKc~(MpGH@6Y|(6~YXYY@$?(goig`dv#=KCkjjxry(Z} zJn`)5Y+L+A>on>Rfqc9W4ZB--HG8yh9AJ?eIdx?=CfH`S%nsOuKs~PliX+d__O3$n zPu)XjkBERK6D<@k-xkd!>2kbGhVn=6+0z8>{ZZMV@AdR!+v7{?)5-c%NCS;V6ZwG8 zE$&Wcgml=mg#X14|DMHrG9a?YAxf-k@G<5QP3b4^(c94<=Wac_j9~m)J)^`uy=B+8 z2Ald7ZmZJ~4u<*;CH)O^5O9io5Awk;7B~|@^?PW0$KE~U0M_kFD-rHkC6h)%s265Q zVc|7lDs0iLU$bbB(w~)1_Z|$QYG@UZf^^roiA_T7#26OJr~bjVX|lqUs^%?)|IVC! zb1`}|@8WEa`6K6*B8)Z~ZE(QFUNB2wrs8eyX27f~BP@)CPKls$Oh`f9+8tm^GQj2Nv3voU$BR=b({AKjCX7%|>fkY(lBUkMlI+?iMCudd zPoKuX#Ea3u3{?_45O8`q;(9eC9C&%vnM=RX_colbAn!QD`sV0Sr}&?JR3Ru+m0i~> z(j>X<%`onke-!?EIV?%JIa5V6dmaMC#8sx&GtWIIcoqDz+GDm^i}MqIi^u6>p8O-%c(dWGJGyzy31F4`|n?r+uK|2fu5&>{^dOJ zX0h(WVFECO+gz3byO~8~Ig-wm@J^*e+!PGQAl;LP3{PW!6FKm zn>kGt%|4GNd5BQ)@qK`h)2Xw6=YVgwgyM3;)Kb13uBWH2d8x37gr`5>792X)TcE0ZhgbU1oQJ+l8X*4<@p0PUq&|6)-VV2t%9+XzRh3S`95E1;waz3T&?SV) zVg(X1oFk=0li3&W#2GIAp+>7mLPw4cbp(yA z>U<%W^t@d)WJ0BJ_V)?zr^C)yNkV7CdXA7;Hm@_@7qjfJ<`xalvP&{}aNHQE8QwkK zeP*Czv$_nMjy#7A@_S`xkDWi=8&nf(VNl7{JH*3(UOb&xvDgQ8IMuA5xhznj@Ccv> zdUsk5qp8okAGF{c&r&B_A$96b6y#SgpA_VCKSaU{Hip{8B_(?cHw%GZ4E-kToHH!E zWzpPszbIlB<5|{*Kv=EsGBZ%7vo4ht0iYTw%EEnO96xCgvQtQvQHLSceF-B~z&!({ zNU?^FvRz*NcTci#f|G=LLA-mkL-dWqU$#nkq8qi{UJ}vJbm%K~x_^gdW z|BdW(dwXlIS%>M1t9$72vE9m=gsGqv$Ma>D&Otc-y5A$!O?VcX6gQHeB!y15j}{~{ zE9;G{to__axYy55=b)kVWHo+v>=G;{$=doWYK#C4d{D*3n$Kk5LCxx^X^Ql^2v(6y zk$~~@G8Q$n7Cx&R` zw=LtYc}4a5g)e7){Of^ys{L`L>fgdQWWi9?-~a*)%eI9?*V_o#m_J5<^hMs?;KI$^$Ex(V9a^kJsekETrksYpS=Pw z(`Bd5-r-?Z;G6!?(a(<>ll&$n>@onCT8T`S3?8sUFM+0OY0c2fu-FkaJv3gv^HM-q z&wGDHoBj)533)Ub^>qGYy+d@zF+M#nxUyV{)DA!7S%nB66Vv-0Ng6Y|ev3=ijbDc=IL&%=qweQ{`zGGTJ_i6Ng3{}C+VVJYdg z@QjgUfBn_oK3HDx!98T;`%589NEXf2TLs*Lvt}mF=KB-`q{!JQl~uZT2ZZiM(O;Ys zK34{RT@g9odq6btzalVd>U9;7;mhlO6aV=5<~@^CG|`cF+Gu^hYaoyuJ@E*~qr16x|r{fQHwT82hS`l4`~y!d029+tz;GXQ5zATXK0H9b!;Ddsj^>Km~u%QtM$E} zrUoYI1oV=jn^R2{kM1gEI@Vbeg|MkW9-*#fc#I|ezwS@VI149D2TM2*$d>bg282;g zW*oSOWn6OE@f#^x6d$SGj&vZu=_gF)Prz2|?CuiSA7l|-%f4VojYeAJ;^Gq4aXkG; zAk42T`HGKyAM@`rarEwIasn0YAuR_~GsipefgMfNYL=b9oyVe-|2Q6?vgmFN+Xto= zLHEuZF9lAW&%^+owtw>VLg#KT%fI)BHdW=JDF4Hb@Un}CGGR`L`>7xqS@gp?`Ihe2aOI_$R z@#`hmYg9)bOF)5wV-Ay`3h|XlZu>LVJ_&OM*WO)ky2*uB+4ZsrC7+vkW{b2DL5Byy zOVAjquKCv=90Tad4cH|`Zyi?{I+J>E_1P}MsMOl&rc$l%ieZxrcZqG`N(EvuDNR4s zbr^Om8dHXj+_nRz)krN)dvqn}?fC7Xza(oa(K+uCI_y2M%%hE#x1a1Ip$q7!m>FEe zcK{d|&q>lhEPR&gOC5PChs*b`!N*yxzS6h!%CRtbKGtFxEuh3vyRYU~!dHfi5{eRQ zrwUkfy$47Y%g>Fa@s3{yMWo?Kx+5WCUA$T27S%|<+E)>(oh#pb;@TBY=bYI8y3kWt z$+1^QzIIU}7ozfAXwEcYx=gw!_bVr>@%|H2kP*0oQ2NMM&QAhqi>fr2lLWT{+lrdT z3#p_5D^(%Ou!c2!XbM{FKyA)IDG7Ea5G{xx{{7K~ijqQm&`!KQeC4L13}d!yWRmIl zMhQx52NtdY%59-n(KBL|*O$A>q(v9~B>sKS`2t6BesFLB%?6!Nyq-b6oxvYSY)hrh zv@2cOC?k+}aq;<hafRe%pyk3l}6hGl>^AcWejd{r`4NoTLHnX7kH+ZL_34+sg+J$UVnglhM_JtIu_8?Loz1!rj&}#LsB+#V{_*{T8R_xo1<3ze{`y?a|I2{6=U#6~?2*$^i))IrRf>Ml7j5V>v+BK>q^j0(1Hc zHgvxG{q|F)EFz?zsuKd;lnd|1E`}2kgQRGk42Ve4^p=SJBm7`(jjaVqY>m`1mSM_f z_%4rRVj=mT7vCd0x>|PYtEf^om>P=VJW+IvM)~i}7Z^esv$D0aS@&$R^7O+#^3w%# z-bUxk?JJrP{=5_DBFkL>GB`OoQN4J2Nr|}Jxl;V!K(}UYK1AP8udte!nVFf4Nfo!L zTnYG>GX%@Z+3|z1O9Jwq9y|M({V(tX5Gv@s^*kH&Ds<7v2tJs6e-u5YNC6=hL2_$! zq>HbmSj;bxFzvidl7#dY$11w)6z(nHVV^Cv<{LZ%hfwqf*3z%Yi0jbwLG{l8(;uaj z7Ts?Od+~zgBkaS#zX>n>M!ckXhpxZl55^W)>LtOsR#dXg6ojs)R57P|-U{k8bown18G(4zQk$ABngDn;Q_(6& zJ!HZ*qr87!ef3SBAu^YRVzS7N5%aa(%n@Nc;y5}w0wYlRwtwP$agB`jJR^p3>QpVe zON&_dGqMQA?Khzagws>PsKT))M02e2xl)YChKa=?R=%pAtes&IHl4zEdeMMZR3xfzM2ucAG-l1xA2{6wwoA@qd7aqw)-{LP22Xpj zB%`@w`Kl1qS)hT2M`4j)DfTRypT?Sb(v1c(=q0$AB^aSvr#njj8ts~y8b4@g+f%%b z`#(`UUFvl9jp}f*IxO*{^KAW)d}amk-CR=*Z&p@U5%aNBV(@{RI~Y=I$BkRmly-}p zF-1sziRme*77WWu7?~aDnV1+F4++%vDN=fw^VdfTixe17eW_!@Uj6FX3ud2mbULe( zhmRu3c~9+Z>wFHB4f|!7SZukJh@yYKYgbfK_bsMZ=}>I%S=iS_qGnH2v?BD;l%d{R z_RcU;Dv>*@*ev#at-c+5y04(6p4pu9Vv0+0_7QEAnB&sLX2ChSI&Y#N`@}}(ZtMUkcb=1w{^M`@Q5t0lm$HR8@C^S+L|WB(cse{JP+MyW`i%DtHto(aSB5!!)`@@C;WGL|Nx{yKw;!mRe2U2>bGEMENh2^p zwMM@}L=WH54?bO=fuIZ2ONzk~nBedO2FJ1qqRS+5Ql;b?C72xMkY+W)oE^`FomL7|k z<%fI+uE~K54c4H^y4d~rfeCmW+PNiMY|+V#p~Q}kP8zy6t)QUV1_*MKkK(=F<6d1S|AyWG@j6Gkk^a#bdl2(2OWz;TjPv>vsZVqg0hJUR za=1cX_}RSGjk3jY?|>p|=*E9o;yw?AMol1e{BPfGNxkD+!-#nO}1cy)zY=_{~N@k^y@g-Y63y{rl`kV8Wib343WC${rLrxcCYN6W6{mcSnjq zP^ZD({$%4RgxV~}RL&E%=ZXONlu|hIp9r~a1P^o6rx0+mNW6&s&*+BiaVWcp_lh`-Fk!<=3SjJ8K)8b8s57oe@eO74$v0 zx1is#vv;?jb)cZP^-OFKSYUQ-U3PLx52|`zQUG)+YjeMsRv{RHR*h=+FW?ie4HgnA zTNe${D2DO`N{Yg2Ujz%IIg0v{bWC7sJifOFIo5yK{ZsDMjGH@)_J~|L{gpJ;AFq-0 zYxo7VsS*`PS%?sZi1WPk#FO49nt?_2z!uF$&qzYhS8gtwywSnS;5o{ds{&9<_{!NW_f#f7nL{~ z&2fcZrOR&}+OW2>!=CCU2a;}->-{iP`<6h$Jl|APHYAY&VkbRogNWikiBdL8ztpPr zj;FyD+xOi12<^LC>e+aO(aVc@S&GCmy~>Scz*t^>iRlv-Rrtf@-e;_)mWufvXCD!JdMh z7?YiNw5`4F=T9thdR8+f);_%H#tH^sf;Y1+gkr-mO&8hSVj!1x)K2NM1$3PC3%@ zA3Oz#*o1Jr(sfhps1fNm`FJD73HufeHR_pIgmxSs1J%zFSw=Ej{?Q9*On&+5d(jVQ z7>Gn4{(3k#PNrGX?kFjB{Pz5?vR(yjUekXNBQQuv(tiP$P0jG@p~XeRgUaQhdlc;> zzqt>;4u4E#{F>G=8&NYliykY56+ucD`y>`N*U?;?uJKQUU zu09trwS{tq5`t*ZODnx|NrxwHmNCVTz2a%uR1_-(75Q9A$ZPnlyNfk|kTgGbgfS3s z?J94(ApBeSoxHRSD!p`)>NN>sKgVVibtyXsJnEC~k_aA%+4SRw-(C>@>NKc%oVzI(XNwkQ&Cbc$+}k5hp<}CFve%gX3TUaDn|`r%e4)L5 z@h+4#y6orY=btRu_Cq+0zPPdP({;<(B=bZKB4{X4r+#@?%C3BL85igMpihtCy4Nnx zOg-*{AwBs8yV1avR+D85Q#%8OV6~tXNjnuFhDcl@5cJ+r!|=NnMkuWQ7@$UnjdtVM zauA00^D}z?l0WBMSA*|ALPLll*Y)Me&2OevQPaMP7{W1V3G@XCYzr-3ueaWrr5T;Z z`}89qpxY_RN@-2~m+KfC_&F(|g}cU*#qn+-fE9hz_7YhdD<#JL-4Xc#qs#J{!5?t2 zP$A+q@Dg(V`iSNLn8w#gRVM3rHxzoEny6Wkloz(XxUH&=lH((Y0YlqG&du za)@(iWvukwy+O2>4#~^-co!MW8ZHyw`UpnzN!e1&DaMFYf|4?`SPNPpg{)FS$8X=3 z85-D?&`iRA9)BGEhgn(s79UEA--D8hj42yJABBTl1qm#iP{Jn_#juuTsesnHMy39% zLids-uO#^$$-!<9&6lc_#=`4Qpr0s62^!C6@lJ6--bpMY)ajRglyXe?yce3Kejo7o z_^5K9E5HZnhowl4PNyylO(@O}93rpAoO3?bkoQb5tY7aCOlvZEUEkBGWE=g_FIuI! z%O~*ai*I&Hcqi-t`p&*r%*Nxk!e3C0D&$}tOFBr|+3-7p-0Zw-gOaJDpuUF?k*!h? z-(qE_w1B}&YuSU8Qms^S9INtsuZ+qp~WI(DJVL5|JBZ4?s9LwVyl0-1<;}yvBmiI^{%-UAEwU^tJ)JG+G zdt7GMTO`UrO}CwAtmoaI3P@DhmWaxS}zO8UJl81;JBc7Jb;-m9*CXJQO zv~|v4T`E#JQ=BO%bcGmo_s-%mDvL?bzi;C?1tmvIHKSqcOyMSb4&j!L`u_qR2I2W} z|CHo;&jXevWWmssltR?``DHvDb{XGJV^ZwDBdc_z6UUdwem10ko!z!HmeK<^QW8<{ zNoAIgF$P`V(d|d|y%z-OTp6q7rA$bwAw^N3uAAJ_WHLn*O>3J=AsT}gQ|E(ADrO0a zO{YGgWa-5p-J?t;B|j8Ne=8&}NV5u@moQv%;e&V^K?LP_mDa-OgcI1T-@`JJFOoDk zlerVemMsrrRT%30Nq3K4N5T0?TG{k0AyQo|N)_NIl2fDnf2gC^F@=SlH4VzbWQ`xK z6s$hdu~b!o`)sK(J9!W9En@V!Lzvtv64I1Vr)fe_RjA4eMOndUZudGI4sdQ1#4-ry zjfsy^peTj+-@^%vXySI=AtP?d2>332CR$|36UUrJsR*bbIyuKvR2E0@i}yiKmHB*< zMbX%(xkU}Lm_MVH76_OBHu;djmO^Cjm5P{2Ki>&4#7Yk!_ZI|-ee4}W@IovB!r)=$ z0BJ)Efn_E;spB|ea8XJ_2*r)zD5@xiLxa*r!-oJnjw4#pzN5S19Dce$&bEzwVRCAW z)>38xR%ud?q_hcAQA8*-O@;G|ORhR;TcKZ%8DiFo@e7IA=T;tdSjsyexM z1b887C^=1!?BRH_9~)8nNuNvGPZ(brm$`!}WRNNuS<}>LnhJ}i z;mHjFhpxxuli@jvSOr4dG_sgEjg0XO&@oWVA&tQm6}O}o*2pPVnNvCXD8nYHQ&{96 zpUTmo6x8>+lPVujb#?J1PSc2SWNCAHdV=$FwrH8@D{;A;PEDOdJbLKqge3QEivp+T zmzd8M7{?KZ_CU3b$>$L)zD&OSvM7+S6enVcj~T*BYZ$4a-RS>6vcvQ!t8JPYMJ_Yg zg8b*vBk(WA7(v(ZJtH`J4TVYS==5(1e9>U|(Eu(_PtepAhLH@WQpg`<;P_m+dBiNa zo87S1a3l9GsT^|XjgoN`!pjJ)jTjM^NHnnrtkCV;@e0!OEN)mp<=RfTa( zB^ZdG?{+8(i?ZOC4}FJHgrJ#VOwdTy%eWn6)5mPqV0n51Th!RBH`pKc8J3jC%i0=z zLB`O)h^Ie_q4DS%wWhoB-}^my1o$9#xX8iRbopYG`FmqT(jz=3v&WbHr#J(R3=$S1 z>+o>g)DeS1P!atwV%F4{H#1BjqV0OoB^ItFSt z^(_uk0@7WP1d;LtCWo|EhyY>QCMH##43LbE>e}=IY57{I@14BIf5u4k3h|i0{Hfbc zY9dOfn@@B3$4Ub@8bor1kMWPkMgY)5_!wo1SLJU~soN9D44PGypl-rfREcBZQI!@8 z;pDl|0ZIu$BY8v5JWA^v&H!ow{ku>962Jb7Ra0mDb1Ai#oQQX=L)8m>C^IayC~v9P0bZ>*;oEQ4~;M3(-rAQQ$b! zd}8CE7p`7e6etUe<-7p^jFW@&Asc}$G(uFU>lwF@%SzbCC741wy&_!}3&{sWAwvPi zq$UwhvX@q^_W|nh&BHello, World!; +} \ No newline at end of file diff --git a/src/popup/components/TestPopup.tsx b/src/popup/components/TestPopup.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/popup/index.css b/src/popup/index.css new file mode 100644 index 0000000..aabae30 --- /dev/null +++ b/src/popup/index.css @@ -0,0 +1,8 @@ +*{ + padding: 0; + margin: 0; + } + #app{ + width: 400px; + height: 400px; + } \ No newline at end of file diff --git a/src/popup/index.html b/src/popup/index.html new file mode 100644 index 0000000..d0562e0 --- /dev/null +++ b/src/popup/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/src/popup/main.tsx b/src/popup/main.tsx new file mode 100644 index 0000000..20298df --- /dev/null +++ b/src/popup/main.tsx @@ -0,0 +1,6 @@ +// import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render() \ No newline at end of file diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..e7b988a --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..f0a2350 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..0d3d714 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..402608d --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,39 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import copy from 'rollup-plugin-copy' +import path from 'path' + +// https://vitejs.dev/config/ +export default defineConfig({ + root: 'src/', + plugins: [react(), + copy({ + targets: [ + { src: 'manifest.json', dest: 'dist' }, // 复制 manifest.json 到 dist 目录 + { src: "src/icons/**", dest: 'dist/icons' } // 复制 src/icons/** 到 dist/icons 目录 + ] + }) + ], + build: { + outDir: path.resolve(__dirname, 'dist'), + rollupOptions: { + input: { + popup: path.resolve(__dirname, 'src/popup/index.html'), + contentPage: path.resolve(__dirname, 'src/contentPage/index.html'), + content: path.resolve(__dirname, 'src/content/content.ts'), + background: path.resolve(__dirname, 'src/background/service-worker.ts'), + }, + output: { + assetFileNames: 'assets/[name]-[hash].[ext]', // 静态资源 + chunkFileNames: 'js/[name]-[hash].js', // 代码分割中产生的 chunk + entryFileNames: (chunkInfo) => { // 入口文件 + const baseName = path.basename(chunkInfo.facadeModuleId!, path.extname(chunkInfo.facadeModuleId!)) + const saveArr = ['content', 'service-worker'] + return `[name]/${saveArr.includes(baseName) ? baseName : chunkInfo.name}.js`; + }, + name: '[name].js' + } + }, + }, + +})