diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..c58c0ea --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,15 @@ +module.exports = { + root: true, + extends: [ + require.resolve('@vercel/style-guide/eslint/browser'), + require.resolve('@vercel/style-guide/eslint/typescript'), + require.resolve('@vercel/style-guide/eslint/jest'), + ], + env: { + jest: true, + }, + parserOptions: { + project: './tsconfig.json', + }, + ignorePatterns: ['*.config.js', 'dist/'], +}; diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.github/banner.png b/.github/banner.png new file mode 100644 index 0000000..8435523 Binary files /dev/null and b/.github/banner.png differ diff --git a/.github/composite-actions/install/action.yml b/.github/composite-actions/install/action.yml new file mode 100644 index 0000000..b628f01 --- /dev/null +++ b/.github/composite-actions/install/action.yml @@ -0,0 +1,32 @@ +name: 'Install' +description: 'Sets up Node.js and runs install' +runs: + using: composite + steps: + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + registry-url: 'https://registry.npmjs.org' + + - name: Install pnpm with corepack + shell: bash + run: corepack enable && pnpm --version + + - name: Get pnpm store directory + id: pnpm-cache + shell: bash + run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT + + - name: Restore pnpm global cache + uses: actions/cache@v3 + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }} + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + shell: bash + run: pnpm install diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..cd94b4b --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,22 @@ +### 📓 What's in there? + + + +### 🧪 How to test? + + + + diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml new file mode 100644 index 0000000..c677c36 --- /dev/null +++ b/.github/workflows/quality.yml @@ -0,0 +1,55 @@ +name: ci +on: + pull_request: + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +jobs: + typescript: + name: typescript + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/composite-actions/install + - name: lint + run: pnpm -r lint + - name: type-check + run: pnpm -r type-check + - name: prettier + run: pnpm prettier -c . + - name: build + run: pnpm -r build + - name: test + run: pnpm -r test + + playwright: + name: playwright + runs-on: ubuntu-latest + if: false + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + test: + - 'test:e2e:production' + - 'test:e2e:development' + steps: + - name: checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/composite-actions/install + - name: get playwright version + id: pw + run: echo "version=$(cat apps/nextjs/package.json | jq -r '.devDependencies."@playwright/test"')" >> $GITHUB_OUTPUT + - name: install playwright + run: pnpx playwright@${{ steps.pw.outputs.version }} install + - name: test + run: pnpm -r ${{ matrix.test }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..64787b8 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,28 @@ +name: Publish +on: + release: + types: [published] +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/composite-actions/install + - name: lint + run: pnpm -r lint + - name: type-check + run: pnpm -r type-check + - name: prettier + run: pnpm prettier -c . + - name: build + run: pnpm -r build + - run: pnpm --filter @vercel/speed-insights publish --tag beta --no-git-checks + if: github.event.release.prerelease == true + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }} + - run: pnpm --filter @vercel/speed-insights publish --no-git-checks + if: github.event.release.prerelease == false + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d66d559 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +dist +.DS_Store +.vscode diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..a5a29d9 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +pnpm lint-staged diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..3876fd4 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +18.16.1 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..6244e1f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +.next/ +dist/ +.github/ +.nuxt/ +.svelte-kit/ +.vercel/ \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3eb9904 --- /dev/null +++ b/LICENSE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + +(a) You must give any other recipients of the Work or +Derivative Works a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works +that You distribute, all copyright, patent, trademark, and +attribution notices from the Source form of the Work, +excluding those notices that do not pertain to any part of +the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained +within such NOTICE file, excluding those notices that do not +pertain to any part of the Derivative Works, in at least one +of the following places: within a NOTICE text file distributed +as part of the Derivative Works; within the Source form or +documentation, if provided along with the Derivative Works; or, +within a display generated by the Derivative Works, if and +wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and +do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside +or as an addendum to the NOTICE text from the Work, provided +that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +Copyright 2023 Vercel, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md new file mode 120000 index 0000000..0db8334 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +packages/web/README.md \ No newline at end of file diff --git a/apps/nextjs/.eslintrc.json b/apps/nextjs/.eslintrc.json new file mode 100644 index 0000000..449075a --- /dev/null +++ b/apps/nextjs/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": "next", + "rules": { + "react/no-unescaped-entities": "off", + "@next/next/no-page-custom-font": "off", + "import/no-default-export": "off" + } +} diff --git a/apps/nextjs/.gitignore b/apps/nextjs/.gitignore new file mode 100644 index 0000000..dfccd1f --- /dev/null +++ b/apps/nextjs/.gitignore @@ -0,0 +1,37 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +.env +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/nextjs/app/blog/[slug]/layout.tsx b/apps/nextjs/app/blog/[slug]/layout.tsx new file mode 100644 index 0000000..d2c2a3a --- /dev/null +++ b/apps/nextjs/app/blog/[slug]/layout.tsx @@ -0,0 +1,25 @@ +import Link from 'next/link'; + +export default function Layout({ children }: { children: React.ReactNode }) { + return ( +
+ + {children} +
+ ); +} diff --git a/apps/nextjs/app/blog/[slug]/page.tsx b/apps/nextjs/app/blog/[slug]/page.tsx new file mode 100644 index 0000000..a9265e0 --- /dev/null +++ b/apps/nextjs/app/blog/[slug]/page.tsx @@ -0,0 +1,7 @@ +export default function Blog({ + params: { slug }, +}: { + params: { slug: string }; +}) { + return
My blog page {slug}
; +} diff --git a/apps/nextjs/app/blog/page.tsx b/apps/nextjs/app/blog/page.tsx new file mode 100644 index 0000000..bc35178 --- /dev/null +++ b/apps/nextjs/app/blog/page.tsx @@ -0,0 +1,10 @@ +import Link from 'next/link'; + +export default function Blog() { + return ( +
+

Welcome to the Blog

+ First blog entry +
+ ); +} diff --git a/apps/nextjs/app/layout.tsx b/apps/nextjs/app/layout.tsx new file mode 100644 index 0000000..e8dfe8d --- /dev/null +++ b/apps/nextjs/app/layout.tsx @@ -0,0 +1,16 @@ +'use client'; +import { SpeedInsights } from '@vercel/speed-insights/next'; +import { SPEED_INSIGHTS_ID } from '../config'; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}): React.ReactNode { + return ( + + + {children} + + ); +} diff --git a/apps/nextjs/config.ts b/apps/nextjs/config.ts new file mode 100644 index 0000000..ccaacbb --- /dev/null +++ b/apps/nextjs/config.ts @@ -0,0 +1,4 @@ +export const SPEED_INSIGHTS_ID = + process.env.NEXT_PUBLIC_VERCEL_SPEED_INSIGHTS_ID || + process.env.NEXT_PUBLIC_VERCEL_ANALYTICS_ID || + ''; diff --git a/apps/nextjs/next.config.js b/apps/nextjs/next.config.js new file mode 100644 index 0000000..3b56536 --- /dev/null +++ b/apps/nextjs/next.config.js @@ -0,0 +1,8 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + experimental: { + serverActions: true, + }, +}; + +module.exports = nextConfig; diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json new file mode 100644 index 0000000..ac500ce --- /dev/null +++ b/apps/nextjs/package.json @@ -0,0 +1,20 @@ +{ + "name": "nextjs", + "private": true, + "scripts": { + "build": "next build", + "dev": "next dev", + "start": "next start", + "test:e2e:development": "NEXT_PUBLIC_ANALYTICS_MODE=development pnpm --filter nextjs... build && playwright test development", + "test:e2e:production": "NEXT_PUBLIC_ANALYTICS_MODE=production pnpm --filter nextjs... build && playwright test production" + }, + "dependencies": { + "@vercel/speed-insights": "workspace:*", + "next": "^14.0.3", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@playwright/test": "1.37.1" + } +} diff --git a/apps/nextjs/pages/_app.tsx b/apps/nextjs/pages/_app.tsx new file mode 100644 index 0000000..11a1927 --- /dev/null +++ b/apps/nextjs/pages/_app.tsx @@ -0,0 +1,12 @@ +import { SpeedInsights } from '@vercel/speed-insights/next'; +import type { AppProps } from 'next/app'; +import { SPEED_INSIGHTS_ID } from '../config'; + +export default function MyApp({ Component, pageProps }: AppProps) { + return ( + <> + + + + ); +} diff --git a/apps/nextjs/pages/blog-pages/[slug].tsx b/apps/nextjs/pages/blog-pages/[slug].tsx new file mode 100644 index 0000000..6fe3cd3 --- /dev/null +++ b/apps/nextjs/pages/blog-pages/[slug].tsx @@ -0,0 +1,7 @@ +export default function BlogPage() { + return ( +
+

Blog Page

+
+ ); +} diff --git a/apps/nextjs/pages/index.tsx b/apps/nextjs/pages/index.tsx new file mode 100644 index 0000000..5d8c0ed --- /dev/null +++ b/apps/nextjs/pages/index.tsx @@ -0,0 +1,20 @@ +import Link from 'next/link'; + +export default function Page() { + return ( + <> +
Testing speed insights
+
    +
  • + Pages directory A +
  • +
  • + Pages directory B +
  • +
  • + App directory +
  • +
+ + ); +} diff --git a/apps/nextjs/playwright.config.ts b/apps/nextjs/playwright.config.ts new file mode 100644 index 0000000..0b195f7 --- /dev/null +++ b/apps/nextjs/playwright.config.ts @@ -0,0 +1,47 @@ +import { PlaywrightTestConfig, devices } from '@playwright/test'; +import path from 'path'; + +// Use process.env.PORT by default and fallback to port 3000 +const PORT = process.env.PORT || 3000; + +// Set webServer.url and use.baseURL with the location of the WebServer respecting the correct set port +const baseURL = `http://localhost:${PORT}`; + +// Reference: https://playwright.dev/docs/test-configuration +const config: PlaywrightTestConfig = { + // Timeout per test + timeout: 30 * 1000, + // Test directory + testDir: path.join(__dirname, 'e2e'), + // Artifacts folder where screenshots, videos, and traces are stored. + outputDir: 'test-results/', + + // Run your local dev server before starting the tests: + // https://playwright.dev/docs/test-advanced#launching-a-development-web-server-during-the-tests + webServer: { + command: 'pnpm start', + url: baseURL, + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI, + }, + + use: { + // Use baseURL so to make navigations relative. + // More information: https://playwright.dev/docs/api/class-testoptions#test-options-base-url + baseURL, + + // Retry a test if its failing with enabled tracing. This allows you to analyse the DOM, console logs, network traffic etc. + // More information: https://playwright.dev/docs/trace-viewer + trace: 'retry-with-trace', + }, + + projects: [ + { + name: 'Desktop Chrome', + use: { + ...devices['Desktop Chrome'], + }, + }, + ], +}; +export default config; diff --git a/apps/nextjs/tsconfig.json b/apps/nextjs/tsconfig.json new file mode 100644 index 0000000..0e88cd1 --- /dev/null +++ b/apps/nextjs/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "plugins": [ + { + "name": "next" + } + ], + "strictNullChecks": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/apps/nuxt/.gitignore b/apps/nuxt/.gitignore new file mode 100644 index 0000000..4a7f73a --- /dev/null +++ b/apps/nuxt/.gitignore @@ -0,0 +1,24 @@ +# Nuxt dev/build outputs +.output +.data +.nuxt +.nitro +.cache +dist + +# Node dependencies +node_modules + +# Logs +logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example diff --git a/apps/nuxt/README.md b/apps/nuxt/README.md new file mode 100644 index 0000000..6890059 --- /dev/null +++ b/apps/nuxt/README.md @@ -0,0 +1,29 @@ +# Nuxt 3 Demo application for Vercel Speed-insights + +## Setup + +This application was created with the following commands: + +- `cd apps` +- `npx nuxi@latest init nuxt` (answers: npm, no git) +- `cd nuxt` +- `rm -rf node_modules .nuxt` +- manually edit package.json to add `"@vercel/speed-insights": "workspace:*"` dependency +- `pnpm i` + +Then we moved some code from vue's official template (styles, HelloWorld SFC) and added a few dynamic route to illustrate the use. +We also imported and used `` component in `layouts/default.vue` file: + +```vue + + + +``` + +## Usage + +Start it with `cd apps/nuxt` + `pnpm dev` and browse to [http://localhost:3000](http://localhost:3000) diff --git a/apps/nuxt/assets/base.css b/apps/nuxt/assets/base.css new file mode 100644 index 0000000..8816868 --- /dev/null +++ b/apps/nuxt/assets/base.css @@ -0,0 +1,86 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: + color 0.5s, + background-color 0.5s; + line-height: 1.6; + font-family: + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/apps/nuxt/assets/logo.svg b/apps/nuxt/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/apps/nuxt/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/apps/nuxt/assets/main.css b/apps/nuxt/assets/main.css new file mode 100644 index 0000000..9db9703 --- /dev/null +++ b/apps/nuxt/assets/main.css @@ -0,0 +1,38 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; +} + +h1 { + font-weight: 500; + font-size: 2.6rem; + position: relative; + top: -10px; +} + +h3 { + font-size: 1.2rem; +} + +.greetings h1, +.greetings h3 { + text-align: center; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} diff --git a/apps/nuxt/components/HelloWorld.vue b/apps/nuxt/components/HelloWorld.vue new file mode 100644 index 0000000..f32d55a --- /dev/null +++ b/apps/nuxt/components/HelloWorld.vue @@ -0,0 +1,17 @@ + + + diff --git a/apps/nuxt/layouts/default.vue b/apps/nuxt/layouts/default.vue new file mode 100644 index 0000000..3825cdc --- /dev/null +++ b/apps/nuxt/layouts/default.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/apps/nuxt/nuxt.config.ts b/apps/nuxt/nuxt.config.ts new file mode 100644 index 0000000..bf4ba7c --- /dev/null +++ b/apps/nuxt/nuxt.config.ts @@ -0,0 +1,4 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + devtools: { enabled: true }, +}); diff --git a/apps/nuxt/package.json b/apps/nuxt/package.json new file mode 100644 index 0000000..4e733b3 --- /dev/null +++ b/apps/nuxt/package.json @@ -0,0 +1,19 @@ +{ + "name": "nuxt", + "private": true, + "type": "module", + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "generate": "nuxt generate", + "postinstall": "nuxt prepare", + "preview": "nuxt preview" + }, + "devDependencies": { + "@nuxt/devtools": "latest", + "@vercel/speed-insights": "workspace:*", + "nuxt": "^3.8.2", + "vue": "^3.3.8", + "vue-router": "^4.2.5" + } +} diff --git a/apps/nuxt/pages/blog/[category]/[slug].vue b/apps/nuxt/pages/blog/[category]/[slug].vue new file mode 100644 index 0000000..0b5314d --- /dev/null +++ b/apps/nuxt/pages/blog/[category]/[slug].vue @@ -0,0 +1,10 @@ + + + diff --git a/apps/nuxt/pages/index.vue b/apps/nuxt/pages/index.vue new file mode 100644 index 0000000..b36b337 --- /dev/null +++ b/apps/nuxt/pages/index.vue @@ -0,0 +1,5 @@ + diff --git a/apps/nuxt/public/favicon.ico b/apps/nuxt/public/favicon.ico new file mode 100644 index 0000000..18993ad Binary files /dev/null and b/apps/nuxt/public/favicon.ico differ diff --git a/apps/nuxt/server/tsconfig.json b/apps/nuxt/server/tsconfig.json new file mode 100644 index 0000000..b9ed69c --- /dev/null +++ b/apps/nuxt/server/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../.nuxt/tsconfig.server.json" +} diff --git a/apps/nuxt/tsconfig.json b/apps/nuxt/tsconfig.json new file mode 100644 index 0000000..a746f2a --- /dev/null +++ b/apps/nuxt/tsconfig.json @@ -0,0 +1,4 @@ +{ + // https://nuxt.com/docs/guide/concepts/typescript + "extends": "./.nuxt/tsconfig.json" +} diff --git a/apps/remix/.eslintrc.cjs b/apps/remix/.eslintrc.cjs new file mode 100644 index 0000000..f2faf14 --- /dev/null +++ b/apps/remix/.eslintrc.cjs @@ -0,0 +1,4 @@ +/** @type {import('eslint').Linter.Config} */ +module.exports = { + extends: ['@remix-run/eslint-config', '@remix-run/eslint-config/node'], +}; diff --git a/apps/remix/.gitignore b/apps/remix/.gitignore new file mode 100644 index 0000000..3f7bf98 --- /dev/null +++ b/apps/remix/.gitignore @@ -0,0 +1,6 @@ +node_modules + +/.cache +/build +/public/build +.env diff --git a/apps/remix/README.md b/apps/remix/README.md new file mode 100644 index 0000000..da8d02a --- /dev/null +++ b/apps/remix/README.md @@ -0,0 +1,38 @@ +# Welcome to Remix! + +- [Remix Docs](https://remix.run/docs) + +## Development + +From your terminal: + +```sh +npm run dev +``` + +This starts your app in development mode, rebuilding assets on file changes. + +## Deployment + +First, build your app for production: + +```sh +npm run build +``` + +Then run the app in production mode: + +```sh +npm start +``` + +Now you'll need to pick a host to deploy it to. + +### DIY + +If you're familiar with deploying node applications, the built-in Remix app server is production-ready. + +Make sure to deploy the output of `remix build` + +- `build/` +- `public/build/` diff --git a/apps/remix/app/entry.client.tsx b/apps/remix/app/entry.client.tsx new file mode 100644 index 0000000..3f01ce1 --- /dev/null +++ b/apps/remix/app/entry.client.tsx @@ -0,0 +1,18 @@ +/** + * By default, Remix will handle hydrating your app on the client for you. + * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨ + * For more information, see https://remix.run/file-conventions/entry.client + */ + +import { RemixBrowser } from '@remix-run/react'; +import { startTransition, StrictMode } from 'react'; +import { hydrateRoot } from 'react-dom/client'; + +startTransition(() => { + hydrateRoot( + document, + + + , + ); +}); diff --git a/apps/remix/app/entry.server.tsx b/apps/remix/app/entry.server.tsx new file mode 100644 index 0000000..99e5e3e --- /dev/null +++ b/apps/remix/app/entry.server.tsx @@ -0,0 +1,137 @@ +/** + * By default, Remix will handle generating the HTTP Response for you. + * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨ + * For more information, see https://remix.run/file-conventions/entry.server + */ + +import { PassThrough } from 'node:stream'; + +import type { AppLoadContext, EntryContext } from '@remix-run/node'; +import { createReadableStreamFromReadable } from '@remix-run/node'; +import { RemixServer } from '@remix-run/react'; +import isbot from 'isbot'; +import { renderToPipeableStream } from 'react-dom/server'; + +const ABORT_DELAY = 5_000; + +export default function handleRequest( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext, + loadContext: AppLoadContext, +) { + return isbot(request.headers.get('user-agent')) + ? handleBotRequest( + request, + responseStatusCode, + responseHeaders, + remixContext, + ) + : handleBrowserRequest( + request, + responseStatusCode, + responseHeaders, + remixContext, + ); +} + +function handleBotRequest( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext, +) { + return new Promise((resolve, reject) => { + let shellRendered = false; + const { pipe, abort } = renderToPipeableStream( + , + { + onAllReady() { + shellRendered = true; + const body = new PassThrough(); + const stream = createReadableStreamFromReadable(body); + + responseHeaders.set('Content-Type', 'text/html'); + + resolve( + new Response(stream, { + headers: responseHeaders, + status: responseStatusCode, + }), + ); + + pipe(body); + }, + onShellError(error: unknown) { + reject(error); + }, + onError(error: unknown) { + responseStatusCode = 500; + // Log streaming rendering errors from inside the shell. Don't log + // errors encountered during initial shell rendering since they'll + // reject and get logged in handleDocumentRequest. + if (shellRendered) { + console.error(error); + } + }, + }, + ); + + setTimeout(abort, ABORT_DELAY); + }); +} + +function handleBrowserRequest( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext, +) { + return new Promise((resolve, reject) => { + let shellRendered = false; + const { pipe, abort } = renderToPipeableStream( + , + { + onShellReady() { + shellRendered = true; + const body = new PassThrough(); + const stream = createReadableStreamFromReadable(body); + + responseHeaders.set('Content-Type', 'text/html'); + + resolve( + new Response(stream, { + headers: responseHeaders, + status: responseStatusCode, + }), + ); + + pipe(body); + }, + onShellError(error: unknown) { + reject(error); + }, + onError(error: unknown) { + responseStatusCode = 500; + // Log streaming rendering errors from inside the shell. Don't log + // errors encountered during initial shell rendering since they'll + // reject and get logged in handleDocumentRequest. + if (shellRendered) { + console.error(error); + } + }, + }, + ); + + setTimeout(abort, ABORT_DELAY); + }); +} diff --git a/apps/remix/app/root.tsx b/apps/remix/app/root.tsx new file mode 100644 index 0000000..b056b63 --- /dev/null +++ b/apps/remix/app/root.tsx @@ -0,0 +1,35 @@ +import { cssBundleHref } from '@remix-run/css-bundle'; +import type { LinksFunction } from '@remix-run/node'; +import { + Links, + LiveReload, + Meta, + Outlet, + Scripts, + ScrollRestoration, +} from '@remix-run/react'; +import { SpeedInsights } from '@vercel/speed-insights/remix'; + +export const links: LinksFunction = () => [ + ...(cssBundleHref ? [{ rel: 'stylesheet', href: cssBundleHref }] : []), +]; + +export default function App() { + return ( + + + + + + + + + + + + + + + + ); +} diff --git a/apps/remix/app/routes/_index.tsx b/apps/remix/app/routes/_index.tsx new file mode 100644 index 0000000..99460bf --- /dev/null +++ b/apps/remix/app/routes/_index.tsx @@ -0,0 +1,41 @@ +import type { MetaFunction } from '@remix-run/node'; + +export const meta: MetaFunction = () => { + return [ + { title: 'New Remix App' }, + { name: 'description', content: 'Welcome to Remix!' }, + ]; +}; + +export default function Index() { + return ( + + ); +} diff --git a/apps/remix/app/routes/blog.$slug.tsx b/apps/remix/app/routes/blog.$slug.tsx new file mode 100644 index 0000000..51653ad --- /dev/null +++ b/apps/remix/app/routes/blog.$slug.tsx @@ -0,0 +1,12 @@ +import { Link } from '@remix-run/react'; + +export default function BlogPage() { + return ( +
+

Blog

+

Blog content goes here

+ First post + First second +
+ ); +} diff --git a/apps/remix/package.json b/apps/remix/package.json new file mode 100644 index 0000000..e52e315 --- /dev/null +++ b/apps/remix/package.json @@ -0,0 +1,33 @@ +{ + "name": "remix", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "build": "remix build", + "dev": "remix dev --manual", + "start": "remix-serve ./build/index.js", + "typecheck": "tsc" + }, + "dependencies": { + "@remix-run/css-bundle": "^2.0.1", + "@remix-run/node": "^2.0.1", + "@remix-run/react": "^2.0.1", + "@remix-run/serve": "^2.0.1", + "@vercel/speed-insights": "workspace:*", + "isbot": "^3.6.8", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@remix-run/dev": "^2.0.1", + "@remix-run/eslint-config": "^2.0.1", + "@types/react": "^18.2.20", + "@types/react-dom": "^18.2.7", + "eslint": "^8.38.0", + "typescript": "^5.1.6" + }, + "engines": { + "node": ">=18.0.0" + } +} diff --git a/apps/remix/public/favicon.ico b/apps/remix/public/favicon.ico new file mode 100644 index 0000000..8830cf6 Binary files /dev/null and b/apps/remix/public/favicon.ico differ diff --git a/apps/remix/remix.config.js b/apps/remix/remix.config.js new file mode 100644 index 0000000..812df9d --- /dev/null +++ b/apps/remix/remix.config.js @@ -0,0 +1,8 @@ +/** @type {import('@remix-run/dev').AppConfig} */ +export default { + ignoredRouteFiles: ['**/.*'], + // appDirectory: "app", + // assetsBuildDirectory: "public/build", + // publicPath: "/build/", + // serverBuildPath: "build/index.js", +}; diff --git a/apps/remix/remix.env.d.ts b/apps/remix/remix.env.d.ts new file mode 100644 index 0000000..dcf8c45 --- /dev/null +++ b/apps/remix/remix.env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/apps/remix/tsconfig.json b/apps/remix/tsconfig.json new file mode 100644 index 0000000..28cce91 --- /dev/null +++ b/apps/remix/tsconfig.json @@ -0,0 +1,22 @@ +{ + "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"], + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "target": "ES2022", + "strict": true, + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + + // Remix takes care of building everything in `remix build`. + "noEmit": true + } +} diff --git a/apps/sveltekit/.gitignore b/apps/sveltekit/.gitignore new file mode 100644 index 0000000..8f6c617 --- /dev/null +++ b/apps/sveltekit/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +.vercel +.output +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/apps/sveltekit/.npmrc b/apps/sveltekit/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/apps/sveltekit/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/apps/sveltekit/README.md b/apps/sveltekit/README.md new file mode 100644 index 0000000..5c91169 --- /dev/null +++ b/apps/sveltekit/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/apps/sveltekit/package.json b/apps/sveltekit/package.json new file mode 100644 index 0000000..ebc1743 --- /dev/null +++ b/apps/sveltekit/package.json @@ -0,0 +1,27 @@ +{ + "name": "svelte", + "version": "0.0.1", + "type": "module", + "scripts": { + "build": "vite build", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "dev": "vite dev", + "preview": "vite preview" + }, + "dependencies": { + "@vercel/speed-insights": "workspace:*" + }, + "devDependencies": { + "@fontsource/fira-mono": "^4.5.10", + "@neoconfetti/svelte": "^1.0.0", + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/kit": "^1.20.4", + "@types/cookie": "^0.5.1", + "svelte": "^4.0.5", + "svelte-check": "^3.4.3", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^4.4.2" + } +} diff --git a/apps/sveltekit/src/app.d.ts b/apps/sveltekit/src/app.d.ts new file mode 100644 index 0000000..899c7e8 --- /dev/null +++ b/apps/sveltekit/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/apps/sveltekit/src/app.html b/apps/sveltekit/src/app.html new file mode 100644 index 0000000..84ffad1 --- /dev/null +++ b/apps/sveltekit/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/apps/sveltekit/src/lib/images/github.svg b/apps/sveltekit/src/lib/images/github.svg new file mode 100644 index 0000000..bc5d249 --- /dev/null +++ b/apps/sveltekit/src/lib/images/github.svg @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/apps/sveltekit/src/lib/images/svelte-logo.svg b/apps/sveltekit/src/lib/images/svelte-logo.svg new file mode 100644 index 0000000..49492a8 --- /dev/null +++ b/apps/sveltekit/src/lib/images/svelte-logo.svg @@ -0,0 +1 @@ +svelte-logo \ No newline at end of file diff --git a/apps/sveltekit/src/lib/images/svelte-welcome.png b/apps/sveltekit/src/lib/images/svelte-welcome.png new file mode 100644 index 0000000..fe7d2d6 Binary files /dev/null and b/apps/sveltekit/src/lib/images/svelte-welcome.png differ diff --git a/apps/sveltekit/src/lib/images/svelte-welcome.webp b/apps/sveltekit/src/lib/images/svelte-welcome.webp new file mode 100644 index 0000000..6ec1a28 Binary files /dev/null and b/apps/sveltekit/src/lib/images/svelte-welcome.webp differ diff --git a/apps/sveltekit/src/routes/+layout.svelte b/apps/sveltekit/src/routes/+layout.svelte new file mode 100644 index 0000000..6f08103 --- /dev/null +++ b/apps/sveltekit/src/routes/+layout.svelte @@ -0,0 +1,57 @@ + + +
+
+
+ +
+ + +
+ + diff --git a/apps/sveltekit/src/routes/+page.svelte b/apps/sveltekit/src/routes/+page.svelte new file mode 100644 index 0000000..97201ef --- /dev/null +++ b/apps/sveltekit/src/routes/+page.svelte @@ -0,0 +1,59 @@ + + + + Home + + + +
+

+ + + + Welcome + + + + to your new
SvelteKit app +

+ +

+ try editing src/routes/+page.svelte +

+ + +
+ + diff --git a/apps/sveltekit/src/routes/+page.ts b/apps/sveltekit/src/routes/+page.ts new file mode 100644 index 0000000..a72419a --- /dev/null +++ b/apps/sveltekit/src/routes/+page.ts @@ -0,0 +1,3 @@ +// since there's no dynamic data here, we can prerender +// it so that it gets served as a static asset in production +export const prerender = true; diff --git a/apps/sveltekit/src/routes/Counter.svelte b/apps/sveltekit/src/routes/Counter.svelte new file mode 100644 index 0000000..96ef556 --- /dev/null +++ b/apps/sveltekit/src/routes/Counter.svelte @@ -0,0 +1,102 @@ + + +
+ + +
+
+ + {Math.floor($displayed_count)} +
+
+ + +
+ + diff --git a/apps/sveltekit/src/routes/Header.svelte b/apps/sveltekit/src/routes/Header.svelte new file mode 100644 index 0000000..89a3644 --- /dev/null +++ b/apps/sveltekit/src/routes/Header.svelte @@ -0,0 +1,136 @@ + + +
+
+ + SvelteKit + +
+ + + +
+ + GitHub + +
+
+ + diff --git a/apps/sveltekit/src/routes/about/+page.svelte b/apps/sveltekit/src/routes/about/+page.svelte new file mode 100644 index 0000000..7f7946d --- /dev/null +++ b/apps/sveltekit/src/routes/about/+page.svelte @@ -0,0 +1,26 @@ + + About + + + +
+

About this app

+ +

+ This is a SvelteKit app. You can make your own by typing the + following into your command line and following the prompts: +

+ +
npm create svelte@latest
+ +

+ The page you're looking at is purely static HTML, with no client-side interactivity needed. + Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening + the devtools network panel and reloading. +

+ +

+ The Sverdle page illustrates SvelteKit's data loading and form handling. Try + using it with JavaScript disabled! +

+
diff --git a/apps/sveltekit/src/routes/about/+page.ts b/apps/sveltekit/src/routes/about/+page.ts new file mode 100644 index 0000000..e739ef4 --- /dev/null +++ b/apps/sveltekit/src/routes/about/+page.ts @@ -0,0 +1,9 @@ +import { dev } from '$app/environment'; + +// we don't need any JS on this page, though we'll load +// it in dev so that we get hot module replacement +export const csr = dev; + +// since there's no dynamic data here, we can prerender +// it so that it gets served as a static asset in production +export const prerender = true; diff --git a/apps/sveltekit/src/routes/blog/[slug]/+page.svelte b/apps/sveltekit/src/routes/blog/[slug]/+page.svelte new file mode 100644 index 0000000..284c31c --- /dev/null +++ b/apps/sveltekit/src/routes/blog/[slug]/+page.svelte @@ -0,0 +1,6 @@ + + +

{data.title}

+
{@html data.content}
diff --git a/apps/sveltekit/src/routes/blog/[slug]/+page.ts b/apps/sveltekit/src/routes/blog/[slug]/+page.ts new file mode 100644 index 0000000..d1ffdf5 --- /dev/null +++ b/apps/sveltekit/src/routes/blog/[slug]/+page.ts @@ -0,0 +1,12 @@ +import { error } from '@sveltejs/kit'; + +export function load({ params }) { + if (params.slug === 'hello-world') { + return { + title: 'Hello world!', + content: 'Welcome to our blog. Lorem ipsum dolor sit amet...', + }; + } + + throw error(404, 'Not found'); +} diff --git a/apps/sveltekit/src/routes/styles.css b/apps/sveltekit/src/routes/styles.css new file mode 100644 index 0000000..f080f29 --- /dev/null +++ b/apps/sveltekit/src/routes/styles.css @@ -0,0 +1,112 @@ +@import '@fontsource/fira-mono'; + +:root { + --font-body: Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + --font-mono: 'Fira Mono', monospace; + --color-bg-0: rgb(202, 216, 228); + --color-bg-1: hsl(209, 36%, 86%); + --color-bg-2: hsl(224, 44%, 95%); + --color-theme-1: #ff3e00; + --color-theme-2: #4075a6; + --color-text: rgba(0, 0, 0, 0.7); + --column-width: 42rem; + --column-margin-top: 4rem; + font-family: var(--font-body); + color: var(--color-text); +} + +body { + min-height: 100vh; + margin: 0; + background-attachment: fixed; + background-color: var(--color-bg-1); + background-size: 100vw 100vh; + background-image: radial-gradient( + 50% 50% at 50% 50%, + rgba(255, 255, 255, 0.75) 0%, + rgba(255, 255, 255, 0) 100% + ), + linear-gradient( + 180deg, + var(--color-bg-0) 0%, + var(--color-bg-1) 15%, + var(--color-bg-2) 50% + ); +} + +h1, +h2, +p { + font-weight: 400; +} + +p { + line-height: 1.5; +} + +a { + color: var(--color-theme-1); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +h1 { + font-size: 2rem; + text-align: center; +} + +h2 { + font-size: 1rem; +} + +pre { + font-size: 16px; + font-family: var(--font-mono); + background-color: rgba(255, 255, 255, 0.45); + border-radius: 3px; + box-shadow: 2px 2px 6px rgb(255 255 255 / 25%); + padding: 0.5em; + overflow-x: auto; + color: var(--color-text); +} + +.text-column { + display: flex; + max-width: 48rem; + flex: 0.6; + flex-direction: column; + justify-content: center; + margin: 0 auto; +} + +input, +button { + font-size: inherit; + font-family: inherit; +} + +button:focus:not(:focus-visible) { + outline: none; +} + +@media (min-width: 720px) { + h1 { + font-size: 2.4rem; + } +} + +.visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: auto; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + white-space: nowrap; +} diff --git a/apps/sveltekit/src/routes/sverdle/+page.server.ts b/apps/sveltekit/src/routes/sverdle/+page.server.ts new file mode 100644 index 0000000..fa66f98 --- /dev/null +++ b/apps/sveltekit/src/routes/sverdle/+page.server.ts @@ -0,0 +1,69 @@ +import { fail } from '@sveltejs/kit'; +import { Game } from './game'; +import type { PageServerLoad, Actions } from './$types'; + +export const load = (({ cookies }) => { + const game = new Game(cookies.get('sverdle')); + + return { + /** + * The player's guessed words so far + */ + guesses: game.guesses, + + /** + * An array of strings like '__x_c' corresponding to the guesses, where 'x' means + * an exact match, and 'c' means a close match (right letter, wrong place) + */ + answers: game.answers, + + /** + * The correct answer, revealed if the game is over + */ + answer: game.answers.length >= 6 ? game.answer : null, + }; +}) satisfies PageServerLoad; + +export const actions = { + /** + * Modify game state in reaction to a keypress. If client-side JavaScript + * is available, this will happen in the browser instead of here + */ + update: async ({ request, cookies }) => { + const game = new Game(cookies.get('sverdle')); + + const data = await request.formData(); + const key = data.get('key'); + + const i = game.answers.length; + + if (key === 'backspace') { + game.guesses[i] = game.guesses[i].slice(0, -1); + } else { + game.guesses[i] += key; + } + + cookies.set('sverdle', game.toString()); + }, + + /** + * Modify game state in reaction to a guessed word. This logic always runs on + * the server, so that people can't cheat by peeking at the JavaScript + */ + enter: async ({ request, cookies }) => { + const game = new Game(cookies.get('sverdle')); + + const data = await request.formData(); + const guess = data.getAll('guess') as string[]; + + if (!game.enter(guess)) { + return fail(400, { badGuess: true }); + } + + cookies.set('sverdle', game.toString()); + }, + + restart: async ({ cookies }) => { + cookies.delete('sverdle'); + }, +} satisfies Actions; diff --git a/apps/sveltekit/src/routes/sverdle/+page.svelte b/apps/sveltekit/src/routes/sverdle/+page.svelte new file mode 100644 index 0000000..517abd8 --- /dev/null +++ b/apps/sveltekit/src/routes/sverdle/+page.svelte @@ -0,0 +1,411 @@ + + + + + + Sverdle + + + +

Sverdle

+ +
{ + // prevent default callback from resetting the form + return ({ update }) => { + update({ reset: false }); + }; + }} +> + How to play + +
+ {#each Array.from(Array(6).keys()) as row (row)} + {@const current = row === i} +

Row {row + 1}

+
+ {#each Array.from(Array(5).keys()) as column (column)} + {@const guess = current ? currentGuess : data.guesses[row]} + {@const answer = data.answers[row]?.[column]} + {@const value = guess?.[column] ?? ''} + {@const selected = current && column === guess.length} + {@const exact = answer === 'x'} + {@const close = answer === 'c'} + {@const missing = answer === '_'} +
+ {value} + + {#if exact} + (correct) + {:else if close} + (present) + {:else if missing} + (absent) + {:else} + empty + {/if} + + +
+ {/each} +
+ {/each} +
+ +
+ {#if won || data.answers.length >= 6} + {#if !won && data.answer} +

the answer was "{data.answer}"

+ {/if} + + {:else} +
+ + + + + {#each ['qwertyuiop', 'asdfghjkl', 'zxcvbnm'] as row} +
+ {#each row as letter} + + {/each} +
+ {/each} +
+ {/if} +
+
+ +{#if won} +
+{/if} + + diff --git a/apps/sveltekit/src/routes/sverdle/game.ts b/apps/sveltekit/src/routes/sverdle/game.ts new file mode 100644 index 0000000..561e7d9 --- /dev/null +++ b/apps/sveltekit/src/routes/sverdle/game.ts @@ -0,0 +1,75 @@ +import { words, allowed } from './words.server'; + +export class Game { + index: number; + guesses: string[]; + answers: string[]; + answer: string; + + /** + * Create a game object from the player's cookie, or initialise a new game + */ + constructor(serialized: string | undefined = undefined) { + if (serialized) { + const [index, guesses, answers] = serialized.split('-'); + + this.index = +index; + this.guesses = guesses ? guesses.split(' ') : []; + this.answers = answers ? answers.split(' ') : []; + } else { + this.index = Math.floor(Math.random() * words.length); + this.guesses = ['', '', '', '', '', '']; + this.answers = []; + } + + this.answer = words[this.index]; + } + + /** + * Update game state based on a guess of a five-letter word. Returns + * true if the guess was valid, false otherwise + */ + enter(letters: string[]) { + const word = letters.join(''); + const valid = allowed.has(word); + + if (!valid) return false; + + this.guesses[this.answers.length] = word; + + const available = Array.from(this.answer); + const answer = Array(5).fill('_'); + + // first, find exact matches + for (let i = 0; i < 5; i += 1) { + if (letters[i] === available[i]) { + answer[i] = 'x'; + available[i] = ' '; + } + } + + // then find close matches (this has to happen + // in a second step, otherwise an early close + // match can prevent a later exact match) + for (let i = 0; i < 5; i += 1) { + if (answer[i] === '_') { + const index = available.indexOf(letters[i]); + if (index !== -1) { + answer[i] = 'c'; + available[index] = ' '; + } + } + } + + this.answers.push(answer.join('')); + + return true; + } + + /** + * Serialize game state so it can be set as a cookie + */ + toString() { + return `${this.index}-${this.guesses.join(' ')}-${this.answers.join(' ')}`; + } +} diff --git a/apps/sveltekit/src/routes/sverdle/how-to-play/+page.svelte b/apps/sveltekit/src/routes/sverdle/how-to-play/+page.svelte new file mode 100644 index 0000000..e8e2cec --- /dev/null +++ b/apps/sveltekit/src/routes/sverdle/how-to-play/+page.svelte @@ -0,0 +1,95 @@ + + How to play Sverdle + + + +
+

How to play Sverdle

+ +

+ Sverdle is a clone of Wordle, the + word guessing game. To play, enter a five-letter English word. For example: +

+ +
+ r + i + t + z + y +
+ +

+ The y is in the right place. r and + t + are the right letters, but in the wrong place. The other letters are wrong, and can be discarded. + Let's make another guess: +

+ +
+ p + a + r + t + y +
+ +

This time we guessed right! You have six guesses to get the word.

+ +

+ Unlike the original Wordle, Sverdle runs on the server instead of in the browser, making it + impossible to cheat. It uses <form> and cookies to submit data, meaning you can + even play with JavaScript disabled! +

+
+ + diff --git a/apps/sveltekit/src/routes/sverdle/how-to-play/+page.ts b/apps/sveltekit/src/routes/sverdle/how-to-play/+page.ts new file mode 100644 index 0000000..e739ef4 --- /dev/null +++ b/apps/sveltekit/src/routes/sverdle/how-to-play/+page.ts @@ -0,0 +1,9 @@ +import { dev } from '$app/environment'; + +// we don't need any JS on this page, though we'll load +// it in dev so that we get hot module replacement +export const csr = dev; + +// since there's no dynamic data here, we can prerender +// it so that it gets served as a static asset in production +export const prerender = true; diff --git a/apps/sveltekit/src/routes/sverdle/reduced-motion.ts b/apps/sveltekit/src/routes/sverdle/reduced-motion.ts new file mode 100644 index 0000000..795f08d --- /dev/null +++ b/apps/sveltekit/src/routes/sverdle/reduced-motion.ts @@ -0,0 +1,26 @@ +import { readable } from 'svelte/store'; +import { browser } from '$app/environment'; + +const reduced_motion_query = '(prefers-reduced-motion: reduce)'; + +const get_initial_motion_preference = () => { + if (!browser) return false; + return window.matchMedia(reduced_motion_query).matches; +}; + +export const reduced_motion = readable( + get_initial_motion_preference(), + (set) => { + if (browser) { + const set_reduced_motion = (event: MediaQueryListEvent) => { + set(event.matches); + }; + const media_query_list = window.matchMedia(reduced_motion_query); + media_query_list.addEventListener('change', set_reduced_motion); + + return () => { + media_query_list.removeEventListener('change', set_reduced_motion); + }; + } + }, +); diff --git a/apps/sveltekit/src/routes/sverdle/words.server.ts b/apps/sveltekit/src/routes/sverdle/words.server.ts new file mode 100644 index 0000000..806c0ad --- /dev/null +++ b/apps/sveltekit/src/routes/sverdle/words.server.ts @@ -0,0 +1,12980 @@ +/** The list of possible words */ +export const words = [ + 'aback', + 'abase', + 'abate', + 'abbey', + 'abbot', + 'abhor', + 'abide', + 'abled', + 'abode', + 'abort', + 'about', + 'above', + 'abuse', + 'abyss', + 'acorn', + 'acrid', + 'actor', + 'acute', + 'adage', + 'adapt', + 'adept', + 'admin', + 'admit', + 'adobe', + 'adopt', + 'adore', + 'adorn', + 'adult', + 'affix', + 'afire', + 'afoot', + 'afoul', + 'after', + 'again', + 'agape', + 'agate', + 'agent', + 'agile', + 'aging', + 'aglow', + 'agony', + 'agora', + 'agree', + 'ahead', + 'aider', + 'aisle', + 'alarm', + 'album', + 'alert', + 'algae', + 'alibi', + 'alien', + 'align', + 'alike', + 'alive', + 'allay', + 'alley', + 'allot', + 'allow', + 'alloy', + 'aloft', + 'alone', + 'along', + 'aloof', + 'aloud', + 'alpha', + 'altar', + 'alter', + 'amass', + 'amaze', + 'amber', + 'amble', + 'amend', + 'amiss', + 'amity', + 'among', + 'ample', + 'amply', + 'amuse', + 'angel', + 'anger', + 'angle', + 'angry', + 'angst', + 'anime', + 'ankle', + 'annex', + 'annoy', + 'annul', + 'anode', + 'antic', + 'anvil', + 'aorta', + 'apart', + 'aphid', + 'aping', + 'apnea', + 'apple', + 'apply', + 'apron', + 'aptly', + 'arbor', + 'ardor', + 'arena', + 'argue', + 'arise', + 'armor', + 'aroma', + 'arose', + 'array', + 'arrow', + 'arson', + 'artsy', + 'ascot', + 'ashen', + 'aside', + 'askew', + 'assay', + 'asset', + 'atoll', + 'atone', + 'attic', + 'audio', + 'audit', + 'augur', + 'aunty', + 'avail', + 'avert', + 'avian', + 'avoid', + 'await', + 'awake', + 'award', + 'aware', + 'awash', + 'awful', + 'awoke', + 'axial', + 'axiom', + 'axion', + 'azure', + 'bacon', + 'badge', + 'badly', + 'bagel', + 'baggy', + 'baker', + 'baler', + 'balmy', + 'banal', + 'banjo', + 'barge', + 'baron', + 'basal', + 'basic', + 'basil', + 'basin', + 'basis', + 'baste', + 'batch', + 'bathe', + 'baton', + 'batty', + 'bawdy', + 'bayou', + 'beach', + 'beady', + 'beard', + 'beast', + 'beech', + 'beefy', + 'befit', + 'began', + 'begat', + 'beget', + 'begin', + 'begun', + 'being', + 'belch', + 'belie', + 'belle', + 'belly', + 'below', + 'bench', + 'beret', + 'berry', + 'berth', + 'beset', + 'betel', + 'bevel', + 'bezel', + 'bible', + 'bicep', + 'biddy', + 'bigot', + 'bilge', + 'billy', + 'binge', + 'bingo', + 'biome', + 'birch', + 'birth', + 'bison', + 'bitty', + 'black', + 'blade', + 'blame', + 'bland', + 'blank', + 'blare', + 'blast', + 'blaze', + 'bleak', + 'bleat', + 'bleed', + 'bleep', + 'blend', + 'bless', + 'blimp', + 'blind', + 'blink', + 'bliss', + 'blitz', + 'bloat', + 'block', + 'bloke', + 'blond', + 'blood', + 'bloom', + 'blown', + 'bluer', + 'bluff', + 'blunt', + 'blurb', + 'blurt', + 'blush', + 'board', + 'boast', + 'bobby', + 'boney', + 'bongo', + 'bonus', + 'booby', + 'boost', + 'booth', + 'booty', + 'booze', + 'boozy', + 'borax', + 'borne', + 'bosom', + 'bossy', + 'botch', + 'bough', + 'boule', + 'bound', + 'bowel', + 'boxer', + 'brace', + 'braid', + 'brain', + 'brake', + 'brand', + 'brash', + 'brass', + 'brave', + 'bravo', + 'brawl', + 'brawn', + 'bread', + 'break', + 'breed', + 'briar', + 'bribe', + 'brick', + 'bride', + 'brief', + 'brine', + 'bring', + 'brink', + 'briny', + 'brisk', + 'broad', + 'broil', + 'broke', + 'brood', + 'brook', + 'broom', + 'broth', + 'brown', + 'brunt', + 'brush', + 'brute', + 'buddy', + 'budge', + 'buggy', + 'bugle', + 'build', + 'built', + 'bulge', + 'bulky', + 'bully', + 'bunch', + 'bunny', + 'burly', + 'burnt', + 'burst', + 'bused', + 'bushy', + 'butch', + 'butte', + 'buxom', + 'buyer', + 'bylaw', + 'cabal', + 'cabby', + 'cabin', + 'cable', + 'cacao', + 'cache', + 'cacti', + 'caddy', + 'cadet', + 'cagey', + 'cairn', + 'camel', + 'cameo', + 'canal', + 'candy', + 'canny', + 'canoe', + 'canon', + 'caper', + 'caput', + 'carat', + 'cargo', + 'carol', + 'carry', + 'carve', + 'caste', + 'catch', + 'cater', + 'catty', + 'caulk', + 'cause', + 'cavil', + 'cease', + 'cedar', + 'cello', + 'chafe', + 'chaff', + 'chain', + 'chair', + 'chalk', + 'champ', + 'chant', + 'chaos', + 'chard', + 'charm', + 'chart', + 'chase', + 'chasm', + 'cheap', + 'cheat', + 'check', + 'cheek', + 'cheer', + 'chess', + 'chest', + 'chick', + 'chide', + 'chief', + 'child', + 'chili', + 'chill', + 'chime', + 'china', + 'chirp', + 'chock', + 'choir', + 'choke', + 'chord', + 'chore', + 'chose', + 'chuck', + 'chump', + 'chunk', + 'churn', + 'chute', + 'cider', + 'cigar', + 'cinch', + 'circa', + 'civic', + 'civil', + 'clack', + 'claim', + 'clamp', + 'clang', + 'clank', + 'clash', + 'clasp', + 'class', + 'clean', + 'clear', + 'cleat', + 'cleft', + 'clerk', + 'click', + 'cliff', + 'climb', + 'cling', + 'clink', + 'cloak', + 'clock', + 'clone', + 'close', + 'cloth', + 'cloud', + 'clout', + 'clove', + 'clown', + 'cluck', + 'clued', + 'clump', + 'clung', + 'coach', + 'coast', + 'cobra', + 'cocoa', + 'colon', + 'color', + 'comet', + 'comfy', + 'comic', + 'comma', + 'conch', + 'condo', + 'conic', + 'copse', + 'coral', + 'corer', + 'corny', + 'couch', + 'cough', + 'could', + 'count', + 'coupe', + 'court', + 'coven', + 'cover', + 'covet', + 'covey', + 'cower', + 'coyly', + 'crack', + 'craft', + 'cramp', + 'crane', + 'crank', + 'crash', + 'crass', + 'crate', + 'crave', + 'crawl', + 'craze', + 'crazy', + 'creak', + 'cream', + 'credo', + 'creed', + 'creek', + 'creep', + 'creme', + 'crepe', + 'crept', + 'cress', + 'crest', + 'crick', + 'cried', + 'crier', + 'crime', + 'crimp', + 'crisp', + 'croak', + 'crock', + 'crone', + 'crony', + 'crook', + 'cross', + 'croup', + 'crowd', + 'crown', + 'crude', + 'cruel', + 'crumb', + 'crump', + 'crush', + 'crust', + 'crypt', + 'cubic', + 'cumin', + 'curio', + 'curly', + 'curry', + 'curse', + 'curve', + 'curvy', + 'cutie', + 'cyber', + 'cycle', + 'cynic', + 'daddy', + 'daily', + 'dairy', + 'daisy', + 'dally', + 'dance', + 'dandy', + 'datum', + 'daunt', + 'dealt', + 'death', + 'debar', + 'debit', + 'debug', + 'debut', + 'decal', + 'decay', + 'decor', + 'decoy', + 'decry', + 'defer', + 'deign', + 'deity', + 'delay', + 'delta', + 'delve', + 'demon', + 'demur', + 'denim', + 'dense', + 'depot', + 'depth', + 'derby', + 'deter', + 'detox', + 'deuce', + 'devil', + 'diary', + 'dicey', + 'digit', + 'dilly', + 'dimly', + 'diner', + 'dingo', + 'dingy', + 'diode', + 'dirge', + 'dirty', + 'disco', + 'ditch', + 'ditto', + 'ditty', + 'diver', + 'dizzy', + 'dodge', + 'dodgy', + 'dogma', + 'doing', + 'dolly', + 'donor', + 'donut', + 'dopey', + 'doubt', + 'dough', + 'dowdy', + 'dowel', + 'downy', + 'dowry', + 'dozen', + 'draft', + 'drain', + 'drake', + 'drama', + 'drank', + 'drape', + 'drawl', + 'drawn', + 'dread', + 'dream', + 'dress', + 'dried', + 'drier', + 'drift', + 'drill', + 'drink', + 'drive', + 'droit', + 'droll', + 'drone', + 'drool', + 'droop', + 'dross', + 'drove', + 'drown', + 'druid', + 'drunk', + 'dryer', + 'dryly', + 'duchy', + 'dully', + 'dummy', + 'dumpy', + 'dunce', + 'dusky', + 'dusty', + 'dutch', + 'duvet', + 'dwarf', + 'dwell', + 'dwelt', + 'dying', + 'eager', + 'eagle', + 'early', + 'earth', + 'easel', + 'eaten', + 'eater', + 'ebony', + 'eclat', + 'edict', + 'edify', + 'eerie', + 'egret', + 'eight', + 'eject', + 'eking', + 'elate', + 'elbow', + 'elder', + 'elect', + 'elegy', + 'elfin', + 'elide', + 'elite', + 'elope', + 'elude', + 'email', + 'embed', + 'ember', + 'emcee', + 'empty', + 'enact', + 'endow', + 'enema', + 'enemy', + 'enjoy', + 'ennui', + 'ensue', + 'enter', + 'entry', + 'envoy', + 'epoch', + 'epoxy', + 'equal', + 'equip', + 'erase', + 'erect', + 'erode', + 'error', + 'erupt', + 'essay', + 'ester', + 'ether', + 'ethic', + 'ethos', + 'etude', + 'evade', + 'event', + 'every', + 'evict', + 'evoke', + 'exact', + 'exalt', + 'excel', + 'exert', + 'exile', + 'exist', + 'expel', + 'extol', + 'extra', + 'exult', + 'eying', + 'fable', + 'facet', + 'faint', + 'fairy', + 'faith', + 'false', + 'fancy', + 'fanny', + 'farce', + 'fatal', + 'fatty', + 'fault', + 'fauna', + 'favor', + 'feast', + 'fecal', + 'feign', + 'fella', + 'felon', + 'femme', + 'femur', + 'fence', + 'feral', + 'ferry', + 'fetal', + 'fetch', + 'fetid', + 'fetus', + 'fever', + 'fewer', + 'fiber', + 'fibre', + 'ficus', + 'field', + 'fiend', + 'fiery', + 'fifth', + 'fifty', + 'fight', + 'filer', + 'filet', + 'filly', + 'filmy', + 'filth', + 'final', + 'finch', + 'finer', + 'first', + 'fishy', + 'fixer', + 'fizzy', + 'fjord', + 'flack', + 'flail', + 'flair', + 'flake', + 'flaky', + 'flame', + 'flank', + 'flare', + 'flash', + 'flask', + 'fleck', + 'fleet', + 'flesh', + 'flick', + 'flier', + 'fling', + 'flint', + 'flirt', + 'float', + 'flock', + 'flood', + 'floor', + 'flora', + 'floss', + 'flour', + 'flout', + 'flown', + 'fluff', + 'fluid', + 'fluke', + 'flume', + 'flung', + 'flunk', + 'flush', + 'flute', + 'flyer', + 'foamy', + 'focal', + 'focus', + 'foggy', + 'foist', + 'folio', + 'folly', + 'foray', + 'force', + 'forge', + 'forgo', + 'forte', + 'forth', + 'forty', + 'forum', + 'found', + 'foyer', + 'frail', + 'frame', + 'frank', + 'fraud', + 'freak', + 'freed', + 'freer', + 'fresh', + 'friar', + 'fried', + 'frill', + 'frisk', + 'fritz', + 'frock', + 'frond', + 'front', + 'frost', + 'froth', + 'frown', + 'froze', + 'fruit', + 'fudge', + 'fugue', + 'fully', + 'fungi', + 'funky', + 'funny', + 'furor', + 'furry', + 'fussy', + 'fuzzy', + 'gaffe', + 'gaily', + 'gamer', + 'gamma', + 'gamut', + 'gassy', + 'gaudy', + 'gauge', + 'gaunt', + 'gauze', + 'gavel', + 'gawky', + 'gayer', + 'gayly', + 'gazer', + 'gecko', + 'geeky', + 'geese', + 'genie', + 'genre', + 'ghost', + 'ghoul', + 'giant', + 'giddy', + 'gipsy', + 'girly', + 'girth', + 'given', + 'giver', + 'glade', + 'gland', + 'glare', + 'glass', + 'glaze', + 'gleam', + 'glean', + 'glide', + 'glint', + 'gloat', + 'globe', + 'gloom', + 'glory', + 'gloss', + 'glove', + 'glyph', + 'gnash', + 'gnome', + 'godly', + 'going', + 'golem', + 'golly', + 'gonad', + 'goner', + 'goody', + 'gooey', + 'goofy', + 'goose', + 'gorge', + 'gouge', + 'gourd', + 'grace', + 'grade', + 'graft', + 'grail', + 'grain', + 'grand', + 'grant', + 'grape', + 'graph', + 'grasp', + 'grass', + 'grate', + 'grave', + 'gravy', + 'graze', + 'great', + 'greed', + 'green', + 'greet', + 'grief', + 'grill', + 'grime', + 'grimy', + 'grind', + 'gripe', + 'groan', + 'groin', + 'groom', + 'grope', + 'gross', + 'group', + 'grout', + 'grove', + 'growl', + 'grown', + 'gruel', + 'gruff', + 'grunt', + 'guard', + 'guava', + 'guess', + 'guest', + 'guide', + 'guild', + 'guile', + 'guilt', + 'guise', + 'gulch', + 'gully', + 'gumbo', + 'gummy', + 'guppy', + 'gusto', + 'gusty', + 'gypsy', + 'habit', + 'hairy', + 'halve', + 'handy', + 'happy', + 'hardy', + 'harem', + 'harpy', + 'harry', + 'harsh', + 'haste', + 'hasty', + 'hatch', + 'hater', + 'haunt', + 'haute', + 'haven', + 'havoc', + 'hazel', + 'heady', + 'heard', + 'heart', + 'heath', + 'heave', + 'heavy', + 'hedge', + 'hefty', + 'heist', + 'helix', + 'hello', + 'hence', + 'heron', + 'hilly', + 'hinge', + 'hippo', + 'hippy', + 'hitch', + 'hoard', + 'hobby', + 'hoist', + 'holly', + 'homer', + 'honey', + 'honor', + 'horde', + 'horny', + 'horse', + 'hotel', + 'hotly', + 'hound', + 'house', + 'hovel', + 'hover', + 'howdy', + 'human', + 'humid', + 'humor', + 'humph', + 'humus', + 'hunch', + 'hunky', + 'hurry', + 'husky', + 'hussy', + 'hutch', + 'hydro', + 'hyena', + 'hymen', + 'hyper', + 'icily', + 'icing', + 'ideal', + 'idiom', + 'idiot', + 'idler', + 'idyll', + 'igloo', + 'iliac', + 'image', + 'imbue', + 'impel', + 'imply', + 'inane', + 'inbox', + 'incur', + 'index', + 'inept', + 'inert', + 'infer', + 'ingot', + 'inlay', + 'inlet', + 'inner', + 'input', + 'inter', + 'intro', + 'ionic', + 'irate', + 'irony', + 'islet', + 'issue', + 'itchy', + 'ivory', + 'jaunt', + 'jazzy', + 'jelly', + 'jerky', + 'jetty', + 'jewel', + 'jiffy', + 'joint', + 'joist', + 'joker', + 'jolly', + 'joust', + 'judge', + 'juice', + 'juicy', + 'jumbo', + 'jumpy', + 'junta', + 'junto', + 'juror', + 'kappa', + 'karma', + 'kayak', + 'kebab', + 'khaki', + 'kinky', + 'kiosk', + 'kitty', + 'knack', + 'knave', + 'knead', + 'kneed', + 'kneel', + 'knelt', + 'knife', + 'knock', + 'knoll', + 'known', + 'koala', + 'krill', + 'label', + 'labor', + 'laden', + 'ladle', + 'lager', + 'lance', + 'lanky', + 'lapel', + 'lapse', + 'large', + 'larva', + 'lasso', + 'latch', + 'later', + 'lathe', + 'latte', + 'laugh', + 'layer', + 'leach', + 'leafy', + 'leaky', + 'leant', + 'leapt', + 'learn', + 'lease', + 'leash', + 'least', + 'leave', + 'ledge', + 'leech', + 'leery', + 'lefty', + 'legal', + 'leggy', + 'lemon', + 'lemur', + 'leper', + 'level', + 'lever', + 'libel', + 'liege', + 'light', + 'liken', + 'lilac', + 'limbo', + 'limit', + 'linen', + 'liner', + 'lingo', + 'lipid', + 'lithe', + 'liver', + 'livid', + 'llama', + 'loamy', + 'loath', + 'lobby', + 'local', + 'locus', + 'lodge', + 'lofty', + 'logic', + 'login', + 'loopy', + 'loose', + 'lorry', + 'loser', + 'louse', + 'lousy', + 'lover', + 'lower', + 'lowly', + 'loyal', + 'lucid', + 'lucky', + 'lumen', + 'lumpy', + 'lunar', + 'lunch', + 'lunge', + 'lupus', + 'lurch', + 'lurid', + 'lusty', + 'lying', + 'lymph', + 'lynch', + 'lyric', + 'macaw', + 'macho', + 'macro', + 'madam', + 'madly', + 'mafia', + 'magic', + 'magma', + 'maize', + 'major', + 'maker', + 'mambo', + 'mamma', + 'mammy', + 'manga', + 'mange', + 'mango', + 'mangy', + 'mania', + 'manic', + 'manly', + 'manor', + 'maple', + 'march', + 'marry', + 'marsh', + 'mason', + 'masse', + 'match', + 'matey', + 'mauve', + 'maxim', + 'maybe', + 'mayor', + 'mealy', + 'meant', + 'meaty', + 'mecca', + 'medal', + 'media', + 'medic', + 'melee', + 'melon', + 'mercy', + 'merge', + 'merit', + 'merry', + 'metal', + 'meter', + 'metro', + 'micro', + 'midge', + 'midst', + 'might', + 'milky', + 'mimic', + 'mince', + 'miner', + 'minim', + 'minor', + 'minty', + 'minus', + 'mirth', + 'miser', + 'missy', + 'mocha', + 'modal', + 'model', + 'modem', + 'mogul', + 'moist', + 'molar', + 'moldy', + 'money', + 'month', + 'moody', + 'moose', + 'moral', + 'moron', + 'morph', + 'mossy', + 'motel', + 'motif', + 'motor', + 'motto', + 'moult', + 'mound', + 'mount', + 'mourn', + 'mouse', + 'mouth', + 'mover', + 'movie', + 'mower', + 'mucky', + 'mucus', + 'muddy', + 'mulch', + 'mummy', + 'munch', + 'mural', + 'murky', + 'mushy', + 'music', + 'musky', + 'musty', + 'myrrh', + 'nadir', + 'naive', + 'nanny', + 'nasal', + 'nasty', + 'natal', + 'naval', + 'navel', + 'needy', + 'neigh', + 'nerdy', + 'nerve', + 'never', + 'newer', + 'newly', + 'nicer', + 'niche', + 'niece', + 'night', + 'ninja', + 'ninny', + 'ninth', + 'noble', + 'nobly', + 'noise', + 'noisy', + 'nomad', + 'noose', + 'north', + 'nosey', + 'notch', + 'novel', + 'nudge', + 'nurse', + 'nutty', + 'nylon', + 'nymph', + 'oaken', + 'obese', + 'occur', + 'ocean', + 'octal', + 'octet', + 'odder', + 'oddly', + 'offal', + 'offer', + 'often', + 'olden', + 'older', + 'olive', + 'ombre', + 'omega', + 'onion', + 'onset', + 'opera', + 'opine', + 'opium', + 'optic', + 'orbit', + 'order', + 'organ', + 'other', + 'otter', + 'ought', + 'ounce', + 'outdo', + 'outer', + 'outgo', + 'ovary', + 'ovate', + 'overt', + 'ovine', + 'ovoid', + 'owing', + 'owner', + 'oxide', + 'ozone', + 'paddy', + 'pagan', + 'paint', + 'paler', + 'palsy', + 'panel', + 'panic', + 'pansy', + 'papal', + 'paper', + 'parer', + 'parka', + 'parry', + 'parse', + 'party', + 'pasta', + 'paste', + 'pasty', + 'patch', + 'patio', + 'patsy', + 'patty', + 'pause', + 'payee', + 'payer', + 'peace', + 'peach', + 'pearl', + 'pecan', + 'pedal', + 'penal', + 'pence', + 'penne', + 'penny', + 'perch', + 'peril', + 'perky', + 'pesky', + 'pesto', + 'petal', + 'petty', + 'phase', + 'phone', + 'phony', + 'photo', + 'piano', + 'picky', + 'piece', + 'piety', + 'piggy', + 'pilot', + 'pinch', + 'piney', + 'pinky', + 'pinto', + 'piper', + 'pique', + 'pitch', + 'pithy', + 'pivot', + 'pixel', + 'pixie', + 'pizza', + 'place', + 'plaid', + 'plain', + 'plait', + 'plane', + 'plank', + 'plant', + 'plate', + 'plaza', + 'plead', + 'pleat', + 'plied', + 'plier', + 'pluck', + 'plumb', + 'plume', + 'plump', + 'plunk', + 'plush', + 'poesy', + 'point', + 'poise', + 'poker', + 'polar', + 'polka', + 'polyp', + 'pooch', + 'poppy', + 'porch', + 'poser', + 'posit', + 'posse', + 'pouch', + 'pound', + 'pouty', + 'power', + 'prank', + 'prawn', + 'preen', + 'press', + 'price', + 'prick', + 'pride', + 'pried', + 'prime', + 'primo', + 'print', + 'prior', + 'prism', + 'privy', + 'prize', + 'probe', + 'prone', + 'prong', + 'proof', + 'prose', + 'proud', + 'prove', + 'prowl', + 'proxy', + 'prude', + 'prune', + 'psalm', + 'pubic', + 'pudgy', + 'puffy', + 'pulpy', + 'pulse', + 'punch', + 'pupal', + 'pupil', + 'puppy', + 'puree', + 'purer', + 'purge', + 'purse', + 'pushy', + 'putty', + 'pygmy', + 'quack', + 'quail', + 'quake', + 'qualm', + 'quark', + 'quart', + 'quash', + 'quasi', + 'queen', + 'queer', + 'quell', + 'query', + 'quest', + 'queue', + 'quick', + 'quiet', + 'quill', + 'quilt', + 'quirk', + 'quite', + 'quota', + 'quote', + 'quoth', + 'rabbi', + 'rabid', + 'racer', + 'radar', + 'radii', + 'radio', + 'rainy', + 'raise', + 'rajah', + 'rally', + 'ralph', + 'ramen', + 'ranch', + 'randy', + 'range', + 'rapid', + 'rarer', + 'raspy', + 'ratio', + 'ratty', + 'raven', + 'rayon', + 'razor', + 'reach', + 'react', + 'ready', + 'realm', + 'rearm', + 'rebar', + 'rebel', + 'rebus', + 'rebut', + 'recap', + 'recur', + 'recut', + 'reedy', + 'refer', + 'refit', + 'regal', + 'rehab', + 'reign', + 'relax', + 'relay', + 'relic', + 'remit', + 'renal', + 'renew', + 'repay', + 'repel', + 'reply', + 'rerun', + 'reset', + 'resin', + 'retch', + 'retro', + 'retry', + 'reuse', + 'revel', + 'revue', + 'rhino', + 'rhyme', + 'rider', + 'ridge', + 'rifle', + 'right', + 'rigid', + 'rigor', + 'rinse', + 'ripen', + 'riper', + 'risen', + 'riser', + 'risky', + 'rival', + 'river', + 'rivet', + 'roach', + 'roast', + 'robin', + 'robot', + 'rocky', + 'rodeo', + 'roger', + 'rogue', + 'roomy', + 'roost', + 'rotor', + 'rouge', + 'rough', + 'round', + 'rouse', + 'route', + 'rover', + 'rowdy', + 'rower', + 'royal', + 'ruddy', + 'ruder', + 'rugby', + 'ruler', + 'rumba', + 'rumor', + 'rupee', + 'rural', + 'rusty', + 'sadly', + 'safer', + 'saint', + 'salad', + 'sally', + 'salon', + 'salsa', + 'salty', + 'salve', + 'salvo', + 'sandy', + 'saner', + 'sappy', + 'sassy', + 'satin', + 'satyr', + 'sauce', + 'saucy', + 'sauna', + 'saute', + 'savor', + 'savoy', + 'savvy', + 'scald', + 'scale', + 'scalp', + 'scaly', + 'scamp', + 'scant', + 'scare', + 'scarf', + 'scary', + 'scene', + 'scent', + 'scion', + 'scoff', + 'scold', + 'scone', + 'scoop', + 'scope', + 'score', + 'scorn', + 'scour', + 'scout', + 'scowl', + 'scram', + 'scrap', + 'scree', + 'screw', + 'scrub', + 'scrum', + 'scuba', + 'sedan', + 'seedy', + 'segue', + 'seize', + 'semen', + 'sense', + 'sepia', + 'serif', + 'serum', + 'serve', + 'setup', + 'seven', + 'sever', + 'sewer', + 'shack', + 'shade', + 'shady', + 'shaft', + 'shake', + 'shaky', + 'shale', + 'shall', + 'shalt', + 'shame', + 'shank', + 'shape', + 'shard', + 'share', + 'shark', + 'sharp', + 'shave', + 'shawl', + 'shear', + 'sheen', + 'sheep', + 'sheer', + 'sheet', + 'sheik', + 'shelf', + 'shell', + 'shied', + 'shift', + 'shine', + 'shiny', + 'shire', + 'shirk', + 'shirt', + 'shoal', + 'shock', + 'shone', + 'shook', + 'shoot', + 'shore', + 'shorn', + 'short', + 'shout', + 'shove', + 'shown', + 'showy', + 'shrew', + 'shrub', + 'shrug', + 'shuck', + 'shunt', + 'shush', + 'shyly', + 'siege', + 'sieve', + 'sight', + 'sigma', + 'silky', + 'silly', + 'since', + 'sinew', + 'singe', + 'siren', + 'sissy', + 'sixth', + 'sixty', + 'skate', + 'skier', + 'skiff', + 'skill', + 'skimp', + 'skirt', + 'skulk', + 'skull', + 'skunk', + 'slack', + 'slain', + 'slang', + 'slant', + 'slash', + 'slate', + 'slave', + 'sleek', + 'sleep', + 'sleet', + 'slept', + 'slice', + 'slick', + 'slide', + 'slime', + 'slimy', + 'sling', + 'slink', + 'sloop', + 'slope', + 'slosh', + 'sloth', + 'slump', + 'slung', + 'slunk', + 'slurp', + 'slush', + 'slyly', + 'smack', + 'small', + 'smart', + 'smash', + 'smear', + 'smell', + 'smelt', + 'smile', + 'smirk', + 'smite', + 'smith', + 'smock', + 'smoke', + 'smoky', + 'smote', + 'snack', + 'snail', + 'snake', + 'snaky', + 'snare', + 'snarl', + 'sneak', + 'sneer', + 'snide', + 'sniff', + 'snipe', + 'snoop', + 'snore', + 'snort', + 'snout', + 'snowy', + 'snuck', + 'snuff', + 'soapy', + 'sober', + 'soggy', + 'solar', + 'solid', + 'solve', + 'sonar', + 'sonic', + 'sooth', + 'sooty', + 'sorry', + 'sound', + 'south', + 'sower', + 'space', + 'spade', + 'spank', + 'spare', + 'spark', + 'spasm', + 'spawn', + 'speak', + 'spear', + 'speck', + 'speed', + 'spell', + 'spelt', + 'spend', + 'spent', + 'sperm', + 'spice', + 'spicy', + 'spied', + 'spiel', + 'spike', + 'spiky', + 'spill', + 'spilt', + 'spine', + 'spiny', + 'spire', + 'spite', + 'splat', + 'split', + 'spoil', + 'spoke', + 'spoof', + 'spook', + 'spool', + 'spoon', + 'spore', + 'sport', + 'spout', + 'spray', + 'spree', + 'sprig', + 'spunk', + 'spurn', + 'spurt', + 'squad', + 'squat', + 'squib', + 'stack', + 'staff', + 'stage', + 'staid', + 'stain', + 'stair', + 'stake', + 'stale', + 'stalk', + 'stall', + 'stamp', + 'stand', + 'stank', + 'stare', + 'stark', + 'start', + 'stash', + 'state', + 'stave', + 'stead', + 'steak', + 'steal', + 'steam', + 'steed', + 'steel', + 'steep', + 'steer', + 'stein', + 'stern', + 'stick', + 'stiff', + 'still', + 'stilt', + 'sting', + 'stink', + 'stint', + 'stock', + 'stoic', + 'stoke', + 'stole', + 'stomp', + 'stone', + 'stony', + 'stood', + 'stool', + 'stoop', + 'store', + 'stork', + 'storm', + 'story', + 'stout', + 'stove', + 'strap', + 'straw', + 'stray', + 'strip', + 'strut', + 'stuck', + 'study', + 'stuff', + 'stump', + 'stung', + 'stunk', + 'stunt', + 'style', + 'suave', + 'sugar', + 'suing', + 'suite', + 'sulky', + 'sully', + 'sumac', + 'sunny', + 'super', + 'surer', + 'surge', + 'surly', + 'sushi', + 'swami', + 'swamp', + 'swarm', + 'swash', + 'swath', + 'swear', + 'sweat', + 'sweep', + 'sweet', + 'swell', + 'swept', + 'swift', + 'swill', + 'swine', + 'swing', + 'swirl', + 'swish', + 'swoon', + 'swoop', + 'sword', + 'swore', + 'sworn', + 'swung', + 'synod', + 'syrup', + 'tabby', + 'table', + 'taboo', + 'tacit', + 'tacky', + 'taffy', + 'taint', + 'taken', + 'taker', + 'tally', + 'talon', + 'tamer', + 'tango', + 'tangy', + 'taper', + 'tapir', + 'tardy', + 'tarot', + 'taste', + 'tasty', + 'tatty', + 'taunt', + 'tawny', + 'teach', + 'teary', + 'tease', + 'teddy', + 'teeth', + 'tempo', + 'tenet', + 'tenor', + 'tense', + 'tenth', + 'tepee', + 'tepid', + 'terra', + 'terse', + 'testy', + 'thank', + 'theft', + 'their', + 'theme', + 'there', + 'these', + 'theta', + 'thick', + 'thief', + 'thigh', + 'thing', + 'think', + 'third', + 'thong', + 'thorn', + 'those', + 'three', + 'threw', + 'throb', + 'throw', + 'thrum', + 'thumb', + 'thump', + 'thyme', + 'tiara', + 'tibia', + 'tidal', + 'tiger', + 'tight', + 'tilde', + 'timer', + 'timid', + 'tipsy', + 'titan', + 'tithe', + 'title', + 'toast', + 'today', + 'toddy', + 'token', + 'tonal', + 'tonga', + 'tonic', + 'tooth', + 'topaz', + 'topic', + 'torch', + 'torso', + 'torus', + 'total', + 'totem', + 'touch', + 'tough', + 'towel', + 'tower', + 'toxic', + 'toxin', + 'trace', + 'track', + 'tract', + 'trade', + 'trail', + 'train', + 'trait', + 'tramp', + 'trash', + 'trawl', + 'tread', + 'treat', + 'trend', + 'triad', + 'trial', + 'tribe', + 'trice', + 'trick', + 'tried', + 'tripe', + 'trite', + 'troll', + 'troop', + 'trope', + 'trout', + 'trove', + 'truce', + 'truck', + 'truer', + 'truly', + 'trump', + 'trunk', + 'truss', + 'trust', + 'truth', + 'tryst', + 'tubal', + 'tuber', + 'tulip', + 'tulle', + 'tumor', + 'tunic', + 'turbo', + 'tutor', + 'twang', + 'tweak', + 'tweed', + 'tweet', + 'twice', + 'twine', + 'twirl', + 'twist', + 'twixt', + 'tying', + 'udder', + 'ulcer', + 'ultra', + 'umbra', + 'uncle', + 'uncut', + 'under', + 'undid', + 'undue', + 'unfed', + 'unfit', + 'unify', + 'union', + 'unite', + 'unity', + 'unlit', + 'unmet', + 'unset', + 'untie', + 'until', + 'unwed', + 'unzip', + 'upper', + 'upset', + 'urban', + 'urine', + 'usage', + 'usher', + 'using', + 'usual', + 'usurp', + 'utile', + 'utter', + 'vague', + 'valet', + 'valid', + 'valor', + 'value', + 'valve', + 'vapid', + 'vapor', + 'vault', + 'vaunt', + 'vegan', + 'venom', + 'venue', + 'verge', + 'verse', + 'verso', + 'verve', + 'vicar', + 'video', + 'vigil', + 'vigor', + 'villa', + 'vinyl', + 'viola', + 'viper', + 'viral', + 'virus', + 'visit', + 'visor', + 'vista', + 'vital', + 'vivid', + 'vixen', + 'vocal', + 'vodka', + 'vogue', + 'voice', + 'voila', + 'vomit', + 'voter', + 'vouch', + 'vowel', + 'vying', + 'wacky', + 'wafer', + 'wager', + 'wagon', + 'waist', + 'waive', + 'waltz', + 'warty', + 'waste', + 'watch', + 'water', + 'waver', + 'waxen', + 'weary', + 'weave', + 'wedge', + 'weedy', + 'weigh', + 'weird', + 'welch', + 'welsh', + 'wench', + 'whack', + 'whale', + 'wharf', + 'wheat', + 'wheel', + 'whelp', + 'where', + 'which', + 'whiff', + 'while', + 'whine', + 'whiny', + 'whirl', + 'whisk', + 'white', + 'whole', + 'whoop', + 'whose', + 'widen', + 'wider', + 'widow', + 'width', + 'wield', + 'wight', + 'willy', + 'wimpy', + 'wince', + 'winch', + 'windy', + 'wiser', + 'wispy', + 'witch', + 'witty', + 'woken', + 'woman', + 'women', + 'woody', + 'wooer', + 'wooly', + 'woozy', + 'wordy', + 'world', + 'worry', + 'worse', + 'worst', + 'worth', + 'would', + 'wound', + 'woven', + 'wrack', + 'wrath', + 'wreak', + 'wreck', + 'wrest', + 'wring', + 'wrist', + 'write', + 'wrong', + 'wrote', + 'wrung', + 'wryly', + 'yacht', + 'yearn', + 'yeast', + 'yield', + 'young', + 'youth', + 'zebra', + 'zesty', + 'zonal', +]; + +/** The list of valid guesses, of which the list of possible words is a subset */ +export const allowed = new Set([ + ...words, + 'aahed', + 'aalii', + 'aargh', + 'aarti', + 'abaca', + 'abaci', + 'abacs', + 'abaft', + 'abaka', + 'abamp', + 'aband', + 'abash', + 'abask', + 'abaya', + 'abbas', + 'abbed', + 'abbes', + 'abcee', + 'abeam', + 'abear', + 'abele', + 'abers', + 'abets', + 'abies', + 'abler', + 'ables', + 'ablet', + 'ablow', + 'abmho', + 'abohm', + 'aboil', + 'aboma', + 'aboon', + 'abord', + 'abore', + 'abram', + 'abray', + 'abrim', + 'abrin', + 'abris', + 'absey', + 'absit', + 'abuna', + 'abune', + 'abuts', + 'abuzz', + 'abyes', + 'abysm', + 'acais', + 'acari', + 'accas', + 'accoy', + 'acerb', + 'acers', + 'aceta', + 'achar', + 'ached', + 'aches', + 'achoo', + 'acids', + 'acidy', + 'acing', + 'acini', + 'ackee', + 'acker', + 'acmes', + 'acmic', + 'acned', + 'acnes', + 'acock', + 'acold', + 'acred', + 'acres', + 'acros', + 'acted', + 'actin', + 'acton', + 'acyls', + 'adaws', + 'adays', + 'adbot', + 'addax', + 'added', + 'adder', + 'addio', + 'addle', + 'adeem', + 'adhan', + 'adieu', + 'adios', + 'adits', + 'adman', + 'admen', + 'admix', + 'adobo', + 'adown', + 'adoze', + 'adrad', + 'adred', + 'adsum', + 'aduki', + 'adunc', + 'adust', + 'advew', + 'adyta', + 'adzed', + 'adzes', + 'aecia', + 'aedes', + 'aegis', + 'aeons', + 'aerie', + 'aeros', + 'aesir', + 'afald', + 'afara', + 'afars', + 'afear', + 'aflaj', + 'afore', + 'afrit', + 'afros', + 'agama', + 'agami', + 'agars', + 'agast', + 'agave', + 'agaze', + 'agene', + 'agers', + 'agger', + 'aggie', + 'aggri', + 'aggro', + 'aggry', + 'aghas', + 'agila', + 'agios', + 'agism', + 'agist', + 'agita', + 'aglee', + 'aglet', + 'agley', + 'agloo', + 'aglus', + 'agmas', + 'agoge', + 'agone', + 'agons', + 'agood', + 'agria', + 'agrin', + 'agros', + 'agued', + 'agues', + 'aguna', + 'aguti', + 'aheap', + 'ahent', + 'ahigh', + 'ahind', + 'ahing', + 'ahint', + 'ahold', + 'ahull', + 'ahuru', + 'aidas', + 'aided', + 'aides', + 'aidoi', + 'aidos', + 'aiery', + 'aigas', + 'aight', + 'ailed', + 'aimed', + 'aimer', + 'ainee', + 'ainga', + 'aioli', + 'aired', + 'airer', + 'airns', + 'airth', + 'airts', + 'aitch', + 'aitus', + 'aiver', + 'aiyee', + 'aizle', + 'ajies', + 'ajiva', + 'ajuga', + 'ajwan', + 'akees', + 'akela', + 'akene', + 'aking', + 'akita', + 'akkas', + 'alaap', + 'alack', + 'alamo', + 'aland', + 'alane', + 'alang', + 'alans', + 'alant', + 'alapa', + 'alaps', + 'alary', + 'alate', + 'alays', + 'albas', + 'albee', + 'alcid', + 'alcos', + 'aldea', + 'alder', + 'aldol', + 'aleck', + 'alecs', + 'alefs', + 'aleft', + 'aleph', + 'alews', + 'aleye', + 'alfas', + 'algal', + 'algas', + 'algid', + 'algin', + 'algor', + 'algum', + 'alias', + 'alifs', + 'aline', + 'alist', + 'aliya', + 'alkie', + 'alkos', + 'alkyd', + 'alkyl', + 'allee', + 'allel', + 'allis', + 'allod', + 'allyl', + 'almah', + 'almas', + 'almeh', + 'almes', + 'almud', + 'almug', + 'alods', + 'aloed', + 'aloes', + 'aloha', + 'aloin', + 'aloos', + 'alowe', + 'altho', + 'altos', + 'alula', + 'alums', + 'alure', + 'alvar', + 'alway', + 'amahs', + 'amain', + 'amate', + 'amaut', + 'amban', + 'ambit', + 'ambos', + 'ambry', + 'ameba', + 'ameer', + 'amene', + 'amens', + 'ament', + 'amias', + 'amice', + 'amici', + 'amide', + 'amido', + 'amids', + 'amies', + 'amiga', + 'amigo', + 'amine', + 'amino', + 'amins', + 'amirs', + 'amlas', + 'amman', + 'ammon', + 'ammos', + 'amnia', + 'amnic', + 'amnio', + 'amoks', + 'amole', + 'amort', + 'amour', + 'amove', + 'amowt', + 'amped', + 'ampul', + 'amrit', + 'amuck', + 'amyls', + 'anana', + 'anata', + 'ancho', + 'ancle', + 'ancon', + 'andro', + 'anear', + 'anele', + 'anent', + 'angas', + 'anglo', + 'anigh', + 'anile', + 'anils', + 'anima', + 'animi', + 'anion', + 'anise', + 'anker', + 'ankhs', + 'ankus', + 'anlas', + 'annal', + 'annas', + 'annat', + 'anoas', + 'anole', + 'anomy', + 'ansae', + 'antae', + 'antar', + 'antas', + 'anted', + 'antes', + 'antis', + 'antra', + 'antre', + 'antsy', + 'anura', + 'anyon', + 'apace', + 'apage', + 'apaid', + 'apayd', + 'apays', + 'apeak', + 'apeek', + 'apers', + 'apert', + 'apery', + 'apgar', + 'aphis', + 'apian', + 'apiol', + 'apish', + 'apism', + 'apode', + 'apods', + 'apoop', + 'aport', + 'appal', + 'appay', + 'appel', + 'appro', + 'appui', + 'appuy', + 'apres', + 'apses', + 'apsis', + 'apsos', + 'apted', + 'apter', + 'aquae', + 'aquas', + 'araba', + 'araks', + 'arame', + 'arars', + 'arbas', + 'arced', + 'archi', + 'arcos', + 'arcus', + 'ardeb', + 'ardri', + 'aread', + 'areae', + 'areal', + 'arear', + 'areas', + 'areca', + 'aredd', + 'arede', + 'arefy', + 'areic', + 'arene', + 'arepa', + 'arere', + 'arete', + 'arets', + 'arett', + 'argal', + 'argan', + 'argil', + 'argle', + 'argol', + 'argon', + 'argot', + 'argus', + 'arhat', + 'arias', + 'ariel', + 'ariki', + 'arils', + 'ariot', + 'arish', + 'arked', + 'arled', + 'arles', + 'armed', + 'armer', + 'armet', + 'armil', + 'arnas', + 'arnut', + 'aroba', + 'aroha', + 'aroid', + 'arpas', + 'arpen', + 'arrah', + 'arras', + 'arret', + 'arris', + 'arroz', + 'arsed', + 'arses', + 'arsey', + 'arsis', + 'artal', + 'artel', + 'artic', + 'artis', + 'aruhe', + 'arums', + 'arval', + 'arvee', + 'arvos', + 'aryls', + 'asana', + 'ascon', + 'ascus', + 'asdic', + 'ashed', + 'ashes', + 'ashet', + 'asked', + 'asker', + 'askoi', + 'askos', + 'aspen', + 'asper', + 'aspic', + 'aspie', + 'aspis', + 'aspro', + 'assai', + 'assam', + 'asses', + 'assez', + 'assot', + 'aster', + 'astir', + 'astun', + 'asura', + 'asway', + 'aswim', + 'asyla', + 'ataps', + 'ataxy', + 'atigi', + 'atilt', + 'atimy', + 'atlas', + 'atman', + 'atmas', + 'atmos', + 'atocs', + 'atoke', + 'atoks', + 'atoms', + 'atomy', + 'atony', + 'atopy', + 'atria', + 'atrip', + 'attap', + 'attar', + 'atuas', + 'audad', + 'auger', + 'aught', + 'aulas', + 'aulic', + 'auloi', + 'aulos', + 'aumil', + 'aunes', + 'aunts', + 'aurae', + 'aural', + 'aurar', + 'auras', + 'aurei', + 'aures', + 'auric', + 'auris', + 'aurum', + 'autos', + 'auxin', + 'avale', + 'avant', + 'avast', + 'avels', + 'avens', + 'avers', + 'avgas', + 'avine', + 'avion', + 'avise', + 'aviso', + 'avize', + 'avows', + 'avyze', + 'awarn', + 'awato', + 'awave', + 'aways', + 'awdls', + 'aweel', + 'aweto', + 'awing', + 'awmry', + 'awned', + 'awner', + 'awols', + 'awork', + 'axels', + 'axile', + 'axils', + 'axing', + 'axite', + 'axled', + 'axles', + 'axman', + 'axmen', + 'axoid', + 'axone', + 'axons', + 'ayahs', + 'ayaya', + 'ayelp', + 'aygre', + 'ayins', + 'ayont', + 'ayres', + 'ayrie', + 'azans', + 'azide', + 'azido', + 'azine', + 'azlon', + 'azoic', + 'azole', + 'azons', + 'azote', + 'azoth', + 'azuki', + 'azurn', + 'azury', + 'azygy', + 'azyme', + 'azyms', + 'baaed', + 'baals', + 'babas', + 'babel', + 'babes', + 'babka', + 'baboo', + 'babul', + 'babus', + 'bacca', + 'bacco', + 'baccy', + 'bacha', + 'bachs', + 'backs', + 'baddy', + 'baels', + 'baffs', + 'baffy', + 'bafts', + 'baghs', + 'bagie', + 'bahts', + 'bahus', + 'bahut', + 'bails', + 'bairn', + 'baisa', + 'baith', + 'baits', + 'baiza', + 'baize', + 'bajan', + 'bajra', + 'bajri', + 'bajus', + 'baked', + 'baken', + 'bakes', + 'bakra', + 'balas', + 'balds', + 'baldy', + 'baled', + 'bales', + 'balks', + 'balky', + 'balls', + 'bally', + 'balms', + 'baloo', + 'balsa', + 'balti', + 'balun', + 'balus', + 'bambi', + 'banak', + 'banco', + 'bancs', + 'banda', + 'bandh', + 'bands', + 'bandy', + 'baned', + 'banes', + 'bangs', + 'bania', + 'banks', + 'banns', + 'bants', + 'bantu', + 'banty', + 'banya', + 'bapus', + 'barbe', + 'barbs', + 'barby', + 'barca', + 'barde', + 'bardo', + 'bards', + 'bardy', + 'bared', + 'barer', + 'bares', + 'barfi', + 'barfs', + 'baric', + 'barks', + 'barky', + 'barms', + 'barmy', + 'barns', + 'barny', + 'barps', + 'barra', + 'barre', + 'barro', + 'barry', + 'barye', + 'basan', + 'based', + 'basen', + 'baser', + 'bases', + 'basho', + 'basij', + 'basks', + 'bason', + 'basse', + 'bassi', + 'basso', + 'bassy', + 'basta', + 'basti', + 'basto', + 'basts', + 'bated', + 'bates', + 'baths', + 'batik', + 'batta', + 'batts', + 'battu', + 'bauds', + 'bauks', + 'baulk', + 'baurs', + 'bavin', + 'bawds', + 'bawks', + 'bawls', + 'bawns', + 'bawrs', + 'bawty', + 'bayed', + 'bayer', + 'bayes', + 'bayle', + 'bayts', + 'bazar', + 'bazoo', + 'beads', + 'beaks', + 'beaky', + 'beals', + 'beams', + 'beamy', + 'beano', + 'beans', + 'beany', + 'beare', + 'bears', + 'beath', + 'beats', + 'beaty', + 'beaus', + 'beaut', + 'beaux', + 'bebop', + 'becap', + 'becke', + 'becks', + 'bedad', + 'bedel', + 'bedes', + 'bedew', + 'bedim', + 'bedye', + 'beedi', + 'beefs', + 'beeps', + 'beers', + 'beery', + 'beets', + 'befog', + 'begad', + 'begar', + 'begem', + 'begot', + 'begum', + 'beige', + 'beigy', + 'beins', + 'bekah', + 'belah', + 'belar', + 'belay', + 'belee', + 'belga', + 'bells', + 'belon', + 'belts', + 'bemad', + 'bemas', + 'bemix', + 'bemud', + 'bends', + 'bendy', + 'benes', + 'benet', + 'benga', + 'benis', + 'benne', + 'benni', + 'benny', + 'bento', + 'bents', + 'benty', + 'bepat', + 'beray', + 'beres', + 'bergs', + 'berko', + 'berks', + 'berme', + 'berms', + 'berob', + 'beryl', + 'besat', + 'besaw', + 'besee', + 'beses', + 'besit', + 'besom', + 'besot', + 'besti', + 'bests', + 'betas', + 'beted', + 'betes', + 'beths', + 'betid', + 'beton', + 'betta', + 'betty', + 'bever', + 'bevor', + 'bevue', + 'bevvy', + 'bewet', + 'bewig', + 'bezes', + 'bezil', + 'bezzy', + 'bhais', + 'bhaji', + 'bhang', + 'bhats', + 'bhels', + 'bhoot', + 'bhuna', + 'bhuts', + 'biach', + 'biali', + 'bialy', + 'bibbs', + 'bibes', + 'biccy', + 'bices', + 'bided', + 'bider', + 'bides', + 'bidet', + 'bidis', + 'bidon', + 'bield', + 'biers', + 'biffo', + 'biffs', + 'biffy', + 'bifid', + 'bigae', + 'biggs', + 'biggy', + 'bigha', + 'bight', + 'bigly', + 'bigos', + 'bijou', + 'biked', + 'biker', + 'bikes', + 'bikie', + 'bilbo', + 'bilby', + 'biled', + 'biles', + 'bilgy', + 'bilks', + 'bills', + 'bimah', + 'bimas', + 'bimbo', + 'binal', + 'bindi', + 'binds', + 'biner', + 'bines', + 'bings', + 'bingy', + 'binit', + 'binks', + 'bints', + 'biogs', + 'biont', + 'biota', + 'biped', + 'bipod', + 'birds', + 'birks', + 'birle', + 'birls', + 'biros', + 'birrs', + 'birse', + 'birsy', + 'bises', + 'bisks', + 'bisom', + 'bitch', + 'biter', + 'bites', + 'bitos', + 'bitou', + 'bitsy', + 'bitte', + 'bitts', + 'bivia', + 'bivvy', + 'bizes', + 'bizzo', + 'bizzy', + 'blabs', + 'blads', + 'blady', + 'blaer', + 'blaes', + 'blaff', + 'blags', + 'blahs', + 'blain', + 'blams', + 'blart', + 'blase', + 'blash', + 'blate', + 'blats', + 'blatt', + 'blaud', + 'blawn', + 'blaws', + 'blays', + 'blear', + 'blebs', + 'blech', + 'blees', + 'blent', + 'blert', + 'blest', + 'blets', + 'bleys', + 'blimy', + 'bling', + 'blini', + 'blins', + 'bliny', + 'blips', + 'blist', + 'blite', + 'blits', + 'blive', + 'blobs', + 'blocs', + 'blogs', + 'blook', + 'bloop', + 'blore', + 'blots', + 'blows', + 'blowy', + 'blubs', + 'blude', + 'bluds', + 'bludy', + 'blued', + 'blues', + 'bluet', + 'bluey', + 'bluid', + 'blume', + 'blunk', + 'blurs', + 'blype', + 'boabs', + 'boaks', + 'boars', + 'boart', + 'boats', + 'bobac', + 'bobak', + 'bobas', + 'bobol', + 'bobos', + 'bocca', + 'bocce', + 'bocci', + 'boche', + 'bocks', + 'boded', + 'bodes', + 'bodge', + 'bodhi', + 'bodle', + 'boeps', + 'boets', + 'boeuf', + 'boffo', + 'boffs', + 'bogan', + 'bogey', + 'boggy', + 'bogie', + 'bogle', + 'bogue', + 'bogus', + 'bohea', + 'bohos', + 'boils', + 'boing', + 'boink', + 'boite', + 'boked', + 'bokeh', + 'bokes', + 'bokos', + 'bolar', + 'bolas', + 'bolds', + 'boles', + 'bolix', + 'bolls', + 'bolos', + 'bolts', + 'bolus', + 'bomas', + 'bombe', + 'bombo', + 'bombs', + 'bonce', + 'bonds', + 'boned', + 'boner', + 'bones', + 'bongs', + 'bonie', + 'bonks', + 'bonne', + 'bonny', + 'bonza', + 'bonze', + 'booai', + 'booay', + 'boobs', + 'boody', + 'booed', + 'boofy', + 'boogy', + 'boohs', + 'books', + 'booky', + 'bools', + 'booms', + 'boomy', + 'boong', + 'boons', + 'boord', + 'boors', + 'boose', + 'boots', + 'boppy', + 'borak', + 'boral', + 'boras', + 'borde', + 'bords', + 'bored', + 'boree', + 'borel', + 'borer', + 'bores', + 'borgo', + 'boric', + 'borks', + 'borms', + 'borna', + 'boron', + 'borts', + 'borty', + 'bortz', + 'bosie', + 'bosks', + 'bosky', + 'boson', + 'bosun', + 'botas', + 'botel', + 'botes', + 'bothy', + 'botte', + 'botts', + 'botty', + 'bouge', + 'bouks', + 'boult', + 'bouns', + 'bourd', + 'bourg', + 'bourn', + 'bouse', + 'bousy', + 'bouts', + 'bovid', + 'bowat', + 'bowed', + 'bower', + 'bowes', + 'bowet', + 'bowie', + 'bowls', + 'bowne', + 'bowrs', + 'bowse', + 'boxed', + 'boxen', + 'boxes', + 'boxla', + 'boxty', + 'boyar', + 'boyau', + 'boyed', + 'boyfs', + 'boygs', + 'boyla', + 'boyos', + 'boysy', + 'bozos', + 'braai', + 'brach', + 'brack', + 'bract', + 'brads', + 'braes', + 'brags', + 'brail', + 'braks', + 'braky', + 'brame', + 'brane', + 'brank', + 'brans', + 'brant', + 'brast', + 'brats', + 'brava', + 'bravi', + 'braws', + 'braxy', + 'brays', + 'braza', + 'braze', + 'bream', + 'brede', + 'breds', + 'breem', + 'breer', + 'brees', + 'breid', + 'breis', + 'breme', + 'brens', + 'brent', + 'brere', + 'brers', + 'breve', + 'brews', + 'breys', + 'brier', + 'bries', + 'brigs', + 'briki', + 'briks', + 'brill', + 'brims', + 'brins', + 'brios', + 'brise', + 'briss', + 'brith', + 'brits', + 'britt', + 'brize', + 'broch', + 'brock', + 'brods', + 'brogh', + 'brogs', + 'brome', + 'bromo', + 'bronc', + 'brond', + 'brool', + 'broos', + 'brose', + 'brosy', + 'brows', + 'brugh', + 'bruin', + 'bruit', + 'brule', + 'brume', + 'brung', + 'brusk', + 'brust', + 'bruts', + 'buats', + 'buaze', + 'bubal', + 'bubas', + 'bubba', + 'bubbe', + 'bubby', + 'bubus', + 'buchu', + 'bucko', + 'bucks', + 'bucku', + 'budas', + 'budis', + 'budos', + 'buffa', + 'buffe', + 'buffi', + 'buffo', + 'buffs', + 'buffy', + 'bufos', + 'bufty', + 'buhls', + 'buhrs', + 'buiks', + 'buist', + 'bukes', + 'bulbs', + 'bulgy', + 'bulks', + 'bulla', + 'bulls', + 'bulse', + 'bumbo', + 'bumfs', + 'bumph', + 'bumps', + 'bumpy', + 'bunas', + 'bunce', + 'bunco', + 'bunde', + 'bundh', + 'bunds', + 'bundt', + 'bundu', + 'bundy', + 'bungs', + 'bungy', + 'bunia', + 'bunje', + 'bunjy', + 'bunko', + 'bunks', + 'bunns', + 'bunts', + 'bunty', + 'bunya', + 'buoys', + 'buppy', + 'buran', + 'buras', + 'burbs', + 'burds', + 'buret', + 'burfi', + 'burgh', + 'burgs', + 'burin', + 'burka', + 'burke', + 'burks', + 'burls', + 'burns', + 'buroo', + 'burps', + 'burqa', + 'burro', + 'burrs', + 'burry', + 'bursa', + 'burse', + 'busby', + 'buses', + 'busks', + 'busky', + 'bussu', + 'busti', + 'busts', + 'busty', + 'buteo', + 'butes', + 'butle', + 'butoh', + 'butts', + 'butty', + 'butut', + 'butyl', + 'buzzy', + 'bwana', + 'bwazi', + 'byded', + 'bydes', + 'byked', + 'bykes', + 'byres', + 'byrls', + 'byssi', + 'bytes', + 'byway', + 'caaed', + 'cabas', + 'caber', + 'cabob', + 'caboc', + 'cabre', + 'cacas', + 'cacks', + 'cacky', + 'cadee', + 'cades', + 'cadge', + 'cadgy', + 'cadie', + 'cadis', + 'cadre', + 'caeca', + 'caese', + 'cafes', + 'caffs', + 'caged', + 'cager', + 'cages', + 'cagot', + 'cahow', + 'caids', + 'cains', + 'caird', + 'cajon', + 'cajun', + 'caked', + 'cakes', + 'cakey', + 'calfs', + 'calid', + 'calif', + 'calix', + 'calks', + 'calla', + 'calls', + 'calms', + 'calmy', + 'calos', + 'calpa', + 'calps', + 'calve', + 'calyx', + 'caman', + 'camas', + 'cames', + 'camis', + 'camos', + 'campi', + 'campo', + 'camps', + 'campy', + 'camus', + 'caned', + 'caneh', + 'caner', + 'canes', + 'cangs', + 'canid', + 'canna', + 'canns', + 'canso', + 'canst', + 'canto', + 'cants', + 'canty', + 'capas', + 'caped', + 'capes', + 'capex', + 'caphs', + 'capiz', + 'caple', + 'capon', + 'capos', + 'capot', + 'capri', + 'capul', + 'carap', + 'carbo', + 'carbs', + 'carby', + 'cardi', + 'cards', + 'cardy', + 'cared', + 'carer', + 'cares', + 'caret', + 'carex', + 'carks', + 'carle', + 'carls', + 'carns', + 'carny', + 'carob', + 'carom', + 'caron', + 'carpi', + 'carps', + 'carrs', + 'carse', + 'carta', + 'carte', + 'carts', + 'carvy', + 'casas', + 'casco', + 'cased', + 'cases', + 'casks', + 'casky', + 'casts', + 'casus', + 'cates', + 'cauda', + 'cauks', + 'cauld', + 'cauls', + 'caums', + 'caups', + 'cauri', + 'causa', + 'cavas', + 'caved', + 'cavel', + 'caver', + 'caves', + 'cavie', + 'cawed', + 'cawks', + 'caxon', + 'ceaze', + 'cebid', + 'cecal', + 'cecum', + 'ceded', + 'ceder', + 'cedes', + 'cedis', + 'ceiba', + 'ceili', + 'ceils', + 'celeb', + 'cella', + 'celli', + 'cells', + 'celom', + 'celts', + 'cense', + 'cento', + 'cents', + 'centu', + 'ceorl', + 'cepes', + 'cerci', + 'cered', + 'ceres', + 'cerge', + 'ceria', + 'ceric', + 'cerne', + 'ceroc', + 'ceros', + 'certs', + 'certy', + 'cesse', + 'cesta', + 'cesti', + 'cetes', + 'cetyl', + 'cezve', + 'chace', + 'chack', + 'chaco', + 'chado', + 'chads', + 'chaft', + 'chais', + 'chals', + 'chams', + 'chana', + 'chang', + 'chank', + 'chape', + 'chaps', + 'chapt', + 'chara', + 'chare', + 'chark', + 'charr', + 'chars', + 'chary', + 'chats', + 'chave', + 'chavs', + 'chawk', + 'chaws', + 'chaya', + 'chays', + 'cheep', + 'chefs', + 'cheka', + 'chela', + 'chelp', + 'chemo', + 'chems', + 'chere', + 'chert', + 'cheth', + 'chevy', + 'chews', + 'chewy', + 'chiao', + 'chias', + 'chibs', + 'chica', + 'chich', + 'chico', + 'chics', + 'chiel', + 'chiks', + 'chile', + 'chimb', + 'chimo', + 'chimp', + 'chine', + 'ching', + 'chink', + 'chino', + 'chins', + 'chips', + 'chirk', + 'chirl', + 'chirm', + 'chiro', + 'chirr', + 'chirt', + 'chiru', + 'chits', + 'chive', + 'chivs', + 'chivy', + 'chizz', + 'choco', + 'chocs', + 'chode', + 'chogs', + 'choil', + 'choko', + 'choky', + 'chola', + 'choli', + 'cholo', + 'chomp', + 'chons', + 'choof', + 'chook', + 'choom', + 'choon', + 'chops', + 'chota', + 'chott', + 'chout', + 'choux', + 'chowk', + 'chows', + 'chubs', + 'chufa', + 'chuff', + 'chugs', + 'chums', + 'churl', + 'churr', + 'chuse', + 'chuts', + 'chyle', + 'chyme', + 'chynd', + 'cibol', + 'cided', + 'cides', + 'ciels', + 'ciggy', + 'cilia', + 'cills', + 'cimar', + 'cimex', + 'cinct', + 'cines', + 'cinqs', + 'cions', + 'cippi', + 'circs', + 'cires', + 'cirls', + 'cirri', + 'cisco', + 'cissy', + 'cists', + 'cital', + 'cited', + 'citer', + 'cites', + 'cives', + 'civet', + 'civie', + 'civvy', + 'clach', + 'clade', + 'clads', + 'claes', + 'clags', + 'clame', + 'clams', + 'clans', + 'claps', + 'clapt', + 'claro', + 'clart', + 'clary', + 'clast', + 'clats', + 'claut', + 'clave', + 'clavi', + 'claws', + 'clays', + 'cleck', + 'cleek', + 'cleep', + 'clefs', + 'clegs', + 'cleik', + 'clems', + 'clepe', + 'clept', + 'cleve', + 'clews', + 'clied', + 'clies', + 'clift', + 'clime', + 'cline', + 'clint', + 'clipe', + 'clips', + 'clipt', + 'clits', + 'cloam', + 'clods', + 'cloff', + 'clogs', + 'cloke', + 'clomb', + 'clomp', + 'clonk', + 'clons', + 'cloop', + 'cloot', + 'clops', + 'clote', + 'clots', + 'clour', + 'clous', + 'clows', + 'cloye', + 'cloys', + 'cloze', + 'clubs', + 'clues', + 'cluey', + 'clunk', + 'clype', + 'cnida', + 'coact', + 'coady', + 'coala', + 'coals', + 'coaly', + 'coapt', + 'coarb', + 'coate', + 'coati', + 'coats', + 'cobbs', + 'cobby', + 'cobia', + 'coble', + 'cobza', + 'cocas', + 'cocci', + 'cocco', + 'cocks', + 'cocky', + 'cocos', + 'codas', + 'codec', + 'coded', + 'coden', + 'coder', + 'codes', + 'codex', + 'codon', + 'coeds', + 'coffs', + 'cogie', + 'cogon', + 'cogue', + 'cohab', + 'cohen', + 'cohoe', + 'cohog', + 'cohos', + 'coifs', + 'coign', + 'coils', + 'coins', + 'coirs', + 'coits', + 'coked', + 'cokes', + 'colas', + 'colby', + 'colds', + 'coled', + 'coles', + 'coley', + 'colic', + 'colin', + 'colls', + 'colly', + 'colog', + 'colts', + 'colza', + 'comae', + 'comal', + 'comas', + 'combe', + 'combi', + 'combo', + 'combs', + 'comby', + 'comer', + 'comes', + 'comix', + 'commo', + 'comms', + 'commy', + 'compo', + 'comps', + 'compt', + 'comte', + 'comus', + 'coned', + 'cones', + 'coney', + 'confs', + 'conga', + 'conge', + 'congo', + 'conia', + 'conin', + 'conks', + 'conky', + 'conne', + 'conns', + 'conte', + 'conto', + 'conus', + 'convo', + 'cooch', + 'cooed', + 'cooee', + 'cooer', + 'cooey', + 'coofs', + 'cooks', + 'cooky', + 'cools', + 'cooly', + 'coomb', + 'cooms', + 'coomy', + 'coons', + 'coops', + 'coopt', + 'coost', + 'coots', + 'cooze', + 'copal', + 'copay', + 'coped', + 'copen', + 'coper', + 'copes', + 'coppy', + 'copra', + 'copsy', + 'coqui', + 'coram', + 'corbe', + 'corby', + 'cords', + 'cored', + 'cores', + 'corey', + 'corgi', + 'coria', + 'corks', + 'corky', + 'corms', + 'corni', + 'corno', + 'corns', + 'cornu', + 'corps', + 'corse', + 'corso', + 'cosec', + 'cosed', + 'coses', + 'coset', + 'cosey', + 'cosie', + 'costa', + 'coste', + 'costs', + 'cotan', + 'coted', + 'cotes', + 'coths', + 'cotta', + 'cotts', + 'coude', + 'coups', + 'courb', + 'courd', + 'coure', + 'cours', + 'couta', + 'couth', + 'coved', + 'coves', + 'covin', + 'cowal', + 'cowan', + 'cowed', + 'cowks', + 'cowls', + 'cowps', + 'cowry', + 'coxae', + 'coxal', + 'coxed', + 'coxes', + 'coxib', + 'coyau', + 'coyed', + 'coyer', + 'coypu', + 'cozed', + 'cozen', + 'cozes', + 'cozey', + 'cozie', + 'craal', + 'crabs', + 'crags', + 'craic', + 'craig', + 'crake', + 'crame', + 'crams', + 'crans', + 'crape', + 'craps', + 'crapy', + 'crare', + 'craws', + 'crays', + 'creds', + 'creel', + 'crees', + 'crems', + 'crena', + 'creps', + 'crepy', + 'crewe', + 'crews', + 'crias', + 'cribs', + 'cries', + 'crims', + 'crine', + 'crios', + 'cripe', + 'crips', + 'crise', + 'crith', + 'crits', + 'croci', + 'crocs', + 'croft', + 'crogs', + 'cromb', + 'crome', + 'cronk', + 'crons', + 'crool', + 'croon', + 'crops', + 'crore', + 'crost', + 'crout', + 'crows', + 'croze', + 'cruck', + 'crudo', + 'cruds', + 'crudy', + 'crues', + 'cruet', + 'cruft', + 'crunk', + 'cruor', + 'crura', + 'cruse', + 'crusy', + 'cruve', + 'crwth', + 'cryer', + 'ctene', + 'cubby', + 'cubeb', + 'cubed', + 'cuber', + 'cubes', + 'cubit', + 'cuddy', + 'cuffo', + 'cuffs', + 'cuifs', + 'cuing', + 'cuish', + 'cuits', + 'cukes', + 'culch', + 'culet', + 'culex', + 'culls', + 'cully', + 'culms', + 'culpa', + 'culti', + 'cults', + 'culty', + 'cumec', + 'cundy', + 'cunei', + 'cunit', + 'cunts', + 'cupel', + 'cupid', + 'cuppa', + 'cuppy', + 'curat', + 'curbs', + 'curch', + 'curds', + 'curdy', + 'cured', + 'curer', + 'cures', + 'curet', + 'curfs', + 'curia', + 'curie', + 'curli', + 'curls', + 'curns', + 'curny', + 'currs', + 'cursi', + 'curst', + 'cusec', + 'cushy', + 'cusks', + 'cusps', + 'cuspy', + 'cusso', + 'cusum', + 'cutch', + 'cuter', + 'cutes', + 'cutey', + 'cutin', + 'cutis', + 'cutto', + 'cutty', + 'cutup', + 'cuvee', + 'cuzes', + 'cwtch', + 'cyano', + 'cyans', + 'cycad', + 'cycas', + 'cyclo', + 'cyder', + 'cylix', + 'cymae', + 'cymar', + 'cymas', + 'cymes', + 'cymol', + 'cysts', + 'cytes', + 'cyton', + 'czars', + 'daals', + 'dabba', + 'daces', + 'dacha', + 'dacks', + 'dadah', + 'dadas', + 'dados', + 'daffs', + 'daffy', + 'dagga', + 'daggy', + 'dagos', + 'dahls', + 'daiko', + 'daine', + 'daint', + 'daker', + 'daled', + 'dales', + 'dalis', + 'dalle', + 'dalts', + 'daman', + 'damar', + 'dames', + 'damme', + 'damns', + 'damps', + 'dampy', + 'dancy', + 'dangs', + 'danio', + 'danks', + 'danny', + 'dants', + 'daraf', + 'darbs', + 'darcy', + 'dared', + 'darer', + 'dares', + 'darga', + 'dargs', + 'daric', + 'daris', + 'darks', + 'darky', + 'darns', + 'darre', + 'darts', + 'darzi', + 'dashi', + 'dashy', + 'datal', + 'dated', + 'dater', + 'dates', + 'datos', + 'datto', + 'daube', + 'daubs', + 'dauby', + 'dauds', + 'dault', + 'daurs', + 'dauts', + 'daven', + 'davit', + 'dawah', + 'dawds', + 'dawed', + 'dawen', + 'dawks', + 'dawns', + 'dawts', + 'dayan', + 'daych', + 'daynt', + 'dazed', + 'dazer', + 'dazes', + 'deads', + 'deair', + 'deals', + 'deans', + 'deare', + 'dearn', + 'dears', + 'deary', + 'deash', + 'deave', + 'deaws', + 'deawy', + 'debag', + 'debby', + 'debel', + 'debes', + 'debts', + 'debud', + 'debur', + 'debus', + 'debye', + 'decad', + 'decaf', + 'decan', + 'decko', + 'decks', + 'decos', + 'dedal', + 'deeds', + 'deedy', + 'deely', + 'deems', + 'deens', + 'deeps', + 'deere', + 'deers', + 'deets', + 'deeve', + 'deevs', + 'defat', + 'deffo', + 'defis', + 'defog', + 'degas', + 'degum', + 'degus', + 'deice', + 'deids', + 'deify', + 'deils', + 'deism', + 'deist', + 'deked', + 'dekes', + 'dekko', + 'deled', + 'deles', + 'delfs', + 'delft', + 'delis', + 'dells', + 'delly', + 'delos', + 'delph', + 'delts', + 'deman', + 'demes', + 'demic', + 'demit', + 'demob', + 'demoi', + 'demos', + 'dempt', + 'denar', + 'denay', + 'dench', + 'denes', + 'denet', + 'denis', + 'dents', + 'deoxy', + 'derat', + 'deray', + 'dered', + 'deres', + 'derig', + 'derma', + 'derms', + 'derns', + 'derny', + 'deros', + 'derro', + 'derry', + 'derth', + 'dervs', + 'desex', + 'deshi', + 'desis', + 'desks', + 'desse', + 'devas', + 'devel', + 'devis', + 'devon', + 'devos', + 'devot', + 'dewan', + 'dewar', + 'dewax', + 'dewed', + 'dexes', + 'dexie', + 'dhaba', + 'dhaks', + 'dhals', + 'dhikr', + 'dhobi', + 'dhole', + 'dholl', + 'dhols', + 'dhoti', + 'dhows', + 'dhuti', + 'diact', + 'dials', + 'diane', + 'diazo', + 'dibbs', + 'diced', + 'dicer', + 'dices', + 'dicht', + 'dicks', + 'dicky', + 'dicot', + 'dicta', + 'dicts', + 'dicty', + 'diddy', + 'didie', + 'didos', + 'didst', + 'diebs', + 'diels', + 'diene', + 'diets', + 'diffs', + 'dight', + 'dikas', + 'diked', + 'diker', + 'dikes', + 'dikey', + 'dildo', + 'dilli', + 'dills', + 'dimbo', + 'dimer', + 'dimes', + 'dimps', + 'dinar', + 'dined', + 'dines', + 'dinge', + 'dings', + 'dinic', + 'dinks', + 'dinky', + 'dinna', + 'dinos', + 'dints', + 'diols', + 'diota', + 'dippy', + 'dipso', + 'diram', + 'direr', + 'dirke', + 'dirks', + 'dirls', + 'dirts', + 'disas', + 'disci', + 'discs', + 'dishy', + 'disks', + 'disme', + 'dital', + 'ditas', + 'dited', + 'dites', + 'ditsy', + 'ditts', + 'ditzy', + 'divan', + 'divas', + 'dived', + 'dives', + 'divis', + 'divna', + 'divos', + 'divot', + 'divvy', + 'diwan', + 'dixie', + 'dixit', + 'diyas', + 'dizen', + 'djinn', + 'djins', + 'doabs', + 'doats', + 'dobby', + 'dobes', + 'dobie', + 'dobla', + 'dobra', + 'dobro', + 'docht', + 'docks', + 'docos', + 'docus', + 'doddy', + 'dodos', + 'doeks', + 'doers', + 'doest', + 'doeth', + 'doffs', + 'dogan', + 'doges', + 'dogey', + 'doggo', + 'doggy', + 'dogie', + 'dohyo', + 'doilt', + 'doily', + 'doits', + 'dojos', + 'dolce', + 'dolci', + 'doled', + 'doles', + 'dolia', + 'dolls', + 'dolma', + 'dolor', + 'dolos', + 'dolts', + 'domal', + 'domed', + 'domes', + 'domic', + 'donah', + 'donas', + 'donee', + 'doner', + 'donga', + 'dongs', + 'donko', + 'donna', + 'donne', + 'donny', + 'donsy', + 'doobs', + 'dooce', + 'doody', + 'dooks', + 'doole', + 'dools', + 'dooly', + 'dooms', + 'doomy', + 'doona', + 'doorn', + 'doors', + 'doozy', + 'dopas', + 'doped', + 'doper', + 'dopes', + 'dorad', + 'dorba', + 'dorbs', + 'doree', + 'dores', + 'doric', + 'doris', + 'dorks', + 'dorky', + 'dorms', + 'dormy', + 'dorps', + 'dorrs', + 'dorsa', + 'dorse', + 'dorts', + 'dorty', + 'dosai', + 'dosas', + 'dosed', + 'doseh', + 'doser', + 'doses', + 'dosha', + 'dotal', + 'doted', + 'doter', + 'dotes', + 'dotty', + 'douar', + 'douce', + 'doucs', + 'douks', + 'doula', + 'douma', + 'doums', + 'doups', + 'doura', + 'douse', + 'douts', + 'doved', + 'doven', + 'dover', + 'doves', + 'dovie', + 'dowar', + 'dowds', + 'dowed', + 'dower', + 'dowie', + 'dowle', + 'dowls', + 'dowly', + 'downa', + 'downs', + 'dowps', + 'dowse', + 'dowts', + 'doxed', + 'doxes', + 'doxie', + 'doyen', + 'doyly', + 'dozed', + 'dozer', + 'dozes', + 'drabs', + 'drack', + 'draco', + 'draff', + 'drags', + 'drail', + 'drams', + 'drant', + 'draps', + 'drats', + 'drave', + 'draws', + 'drays', + 'drear', + 'dreck', + 'dreed', + 'dreer', + 'drees', + 'dregs', + 'dreks', + 'drent', + 'drere', + 'drest', + 'dreys', + 'dribs', + 'drice', + 'dries', + 'drily', + 'drips', + 'dript', + 'droid', + 'droil', + 'droke', + 'drole', + 'drome', + 'drony', + 'droob', + 'droog', + 'drook', + 'drops', + 'dropt', + 'drouk', + 'drows', + 'drubs', + 'drugs', + 'drums', + 'drupe', + 'druse', + 'drusy', + 'druxy', + 'dryad', + 'dryas', + 'dsobo', + 'dsomo', + 'duads', + 'duals', + 'duans', + 'duars', + 'dubbo', + 'ducal', + 'ducat', + 'duces', + 'ducks', + 'ducky', + 'ducts', + 'duddy', + 'duded', + 'dudes', + 'duels', + 'duets', + 'duett', + 'duffs', + 'dufus', + 'duing', + 'duits', + 'dukas', + 'duked', + 'dukes', + 'dukka', + 'dulce', + 'dules', + 'dulia', + 'dulls', + 'dulse', + 'dumas', + 'dumbo', + 'dumbs', + 'dumka', + 'dumky', + 'dumps', + 'dunam', + 'dunch', + 'dunes', + 'dungs', + 'dungy', + 'dunks', + 'dunno', + 'dunny', + 'dunsh', + 'dunts', + 'duomi', + 'duomo', + 'duped', + 'duper', + 'dupes', + 'duple', + 'duply', + 'duppy', + 'dural', + 'duras', + 'dured', + 'dures', + 'durgy', + 'durns', + 'duroc', + 'duros', + 'duroy', + 'durra', + 'durrs', + 'durry', + 'durst', + 'durum', + 'durzi', + 'dusks', + 'dusts', + 'duxes', + 'dwaal', + 'dwale', + 'dwalm', + 'dwams', + 'dwang', + 'dwaum', + 'dweeb', + 'dwile', + 'dwine', + 'dyads', + 'dyers', + 'dyked', + 'dykes', + 'dykey', + 'dykon', + 'dynel', + 'dynes', + 'dzhos', + 'eagre', + 'ealed', + 'eales', + 'eaned', + 'eards', + 'eared', + 'earls', + 'earns', + 'earnt', + 'earst', + 'eased', + 'easer', + 'eases', + 'easle', + 'easts', + 'eathe', + 'eaved', + 'eaves', + 'ebbed', + 'ebbet', + 'ebons', + 'ebook', + 'ecads', + 'eched', + 'eches', + 'echos', + 'ecrus', + 'edema', + 'edged', + 'edger', + 'edges', + 'edile', + 'edits', + 'educe', + 'educt', + 'eejit', + 'eensy', + 'eeven', + 'eevns', + 'effed', + 'egads', + 'egers', + 'egest', + 'eggar', + 'egged', + 'egger', + 'egmas', + 'ehing', + 'eider', + 'eidos', + 'eigne', + 'eiked', + 'eikon', + 'eilds', + 'eisel', + 'ejido', + 'ekkas', + 'elain', + 'eland', + 'elans', + 'elchi', + 'eldin', + 'elemi', + 'elfed', + 'eliad', + 'elint', + 'elmen', + 'eloge', + 'elogy', + 'eloin', + 'elops', + 'elpee', + 'elsin', + 'elute', + 'elvan', + 'elven', + 'elver', + 'elves', + 'emacs', + 'embar', + 'embay', + 'embog', + 'embow', + 'embox', + 'embus', + 'emeer', + 'emend', + 'emerg', + 'emery', + 'emeus', + 'emics', + 'emirs', + 'emits', + 'emmas', + 'emmer', + 'emmet', + 'emmew', + 'emmys', + 'emoji', + 'emong', + 'emote', + 'emove', + 'empts', + 'emule', + 'emure', + 'emyde', + 'emyds', + 'enarm', + 'enate', + 'ended', + 'ender', + 'endew', + 'endue', + 'enews', + 'enfix', + 'eniac', + 'enlit', + 'enmew', + 'ennog', + 'enoki', + 'enols', + 'enorm', + 'enows', + 'enrol', + 'ensew', + 'ensky', + 'entia', + 'enure', + 'enurn', + 'envoi', + 'enzym', + 'eorls', + 'eosin', + 'epact', + 'epees', + 'ephah', + 'ephas', + 'ephod', + 'ephor', + 'epics', + 'epode', + 'epopt', + 'epris', + 'eques', + 'equid', + 'erbia', + 'erevs', + 'ergon', + 'ergos', + 'ergot', + 'erhus', + 'erica', + 'erick', + 'erics', + 'ering', + 'erned', + 'ernes', + 'erose', + 'erred', + 'erses', + 'eruct', + 'erugo', + 'eruvs', + 'erven', + 'ervil', + 'escar', + 'escot', + 'esile', + 'eskar', + 'esker', + 'esnes', + 'esses', + 'estoc', + 'estop', + 'estro', + 'etage', + 'etape', + 'etats', + 'etens', + 'ethal', + 'ethne', + 'ethyl', + 'etics', + 'etnas', + 'ettin', + 'ettle', + 'etuis', + 'etwee', + 'etyma', + 'eughs', + 'euked', + 'eupad', + 'euros', + 'eusol', + 'evens', + 'evert', + 'evets', + 'evhoe', + 'evils', + 'evite', + 'evohe', + 'ewers', + 'ewest', + 'ewhow', + 'ewked', + 'exams', + 'exeat', + 'execs', + 'exeem', + 'exeme', + 'exfil', + 'exies', + 'exine', + 'exing', + 'exits', + 'exode', + 'exome', + 'exons', + 'expat', + 'expos', + 'exude', + 'exuls', + 'exurb', + 'eyass', + 'eyers', + 'eyots', + 'eyras', + 'eyres', + 'eyrie', + 'eyrir', + 'ezine', + 'fabby', + 'faced', + 'facer', + 'faces', + 'facia', + 'facta', + 'facts', + 'faddy', + 'faded', + 'fader', + 'fades', + 'fadge', + 'fados', + 'faena', + 'faery', + 'faffs', + 'faffy', + 'faggy', + 'fagin', + 'fagot', + 'faiks', + 'fails', + 'faine', + 'fains', + 'fairs', + 'faked', + 'faker', + 'fakes', + 'fakey', + 'fakie', + 'fakir', + 'falaj', + 'falls', + 'famed', + 'fames', + 'fanal', + 'fands', + 'fanes', + 'fanga', + 'fango', + 'fangs', + 'fanks', + 'fanon', + 'fanos', + 'fanum', + 'faqir', + 'farad', + 'farci', + 'farcy', + 'fards', + 'fared', + 'farer', + 'fares', + 'farle', + 'farls', + 'farms', + 'faros', + 'farro', + 'farse', + 'farts', + 'fasci', + 'fasti', + 'fasts', + 'fated', + 'fates', + 'fatly', + 'fatso', + 'fatwa', + 'faugh', + 'fauld', + 'fauns', + 'faurd', + 'fauts', + 'fauve', + 'favas', + 'favel', + 'faver', + 'faves', + 'favus', + 'fawns', + 'fawny', + 'faxed', + 'faxes', + 'fayed', + 'fayer', + 'fayne', + 'fayre', + 'fazed', + 'fazes', + 'feals', + 'feare', + 'fears', + 'feart', + 'fease', + 'feats', + 'feaze', + 'feces', + 'fecht', + 'fecit', + 'fecks', + 'fedex', + 'feebs', + 'feeds', + 'feels', + 'feens', + 'feers', + 'feese', + 'feeze', + 'fehme', + 'feint', + 'feist', + 'felch', + 'felid', + 'fells', + 'felly', + 'felts', + 'felty', + 'femal', + 'femes', + 'femmy', + 'fends', + 'fendy', + 'fenis', + 'fenks', + 'fenny', + 'fents', + 'feods', + 'feoff', + 'ferer', + 'feres', + 'feria', + 'ferly', + 'fermi', + 'ferms', + 'ferns', + 'ferny', + 'fesse', + 'festa', + 'fests', + 'festy', + 'fetas', + 'feted', + 'fetes', + 'fetor', + 'fetta', + 'fetts', + 'fetwa', + 'feuar', + 'feuds', + 'feued', + 'feyed', + 'feyer', + 'feyly', + 'fezes', + 'fezzy', + 'fiars', + 'fiats', + 'fibro', + 'fices', + 'fiche', + 'fichu', + 'ficin', + 'ficos', + 'fides', + 'fidge', + 'fidos', + 'fiefs', + 'fient', + 'fiere', + 'fiers', + 'fiest', + 'fifed', + 'fifer', + 'fifes', + 'fifis', + 'figgy', + 'figos', + 'fiked', + 'fikes', + 'filar', + 'filch', + 'filed', + 'files', + 'filii', + 'filks', + 'fille', + 'fillo', + 'fills', + 'filmi', + 'films', + 'filos', + 'filum', + 'finca', + 'finds', + 'fined', + 'fines', + 'finis', + 'finks', + 'finny', + 'finos', + 'fiord', + 'fiqhs', + 'fique', + 'fired', + 'firer', + 'fires', + 'firie', + 'firks', + 'firms', + 'firns', + 'firry', + 'firth', + 'fiscs', + 'fisks', + 'fists', + 'fisty', + 'fitch', + 'fitly', + 'fitna', + 'fitte', + 'fitts', + 'fiver', + 'fives', + 'fixed', + 'fixes', + 'fixit', + 'fjeld', + 'flabs', + 'flaff', + 'flags', + 'flaks', + 'flamm', + 'flams', + 'flamy', + 'flane', + 'flans', + 'flaps', + 'flary', + 'flats', + 'flava', + 'flawn', + 'flaws', + 'flawy', + 'flaxy', + 'flays', + 'fleam', + 'fleas', + 'fleek', + 'fleer', + 'flees', + 'flegs', + 'fleme', + 'fleur', + 'flews', + 'flexi', + 'flexo', + 'fleys', + 'flics', + 'flied', + 'flies', + 'flimp', + 'flims', + 'flips', + 'flirs', + 'flisk', + 'flite', + 'flits', + 'flitt', + 'flobs', + 'flocs', + 'floes', + 'flogs', + 'flong', + 'flops', + 'flors', + 'flory', + 'flosh', + 'flota', + 'flote', + 'flows', + 'flubs', + 'flued', + 'flues', + 'fluey', + 'fluky', + 'flump', + 'fluor', + 'flurr', + 'fluty', + 'fluyt', + 'flyby', + 'flype', + 'flyte', + 'foals', + 'foams', + 'foehn', + 'fogey', + 'fogie', + 'fogle', + 'fogou', + 'fohns', + 'foids', + 'foils', + 'foins', + 'folds', + 'foley', + 'folia', + 'folic', + 'folie', + 'folks', + 'folky', + 'fomes', + 'fonda', + 'fonds', + 'fondu', + 'fones', + 'fonly', + 'fonts', + 'foods', + 'foody', + 'fools', + 'foots', + 'footy', + 'foram', + 'forbs', + 'forby', + 'fordo', + 'fords', + 'forel', + 'fores', + 'forex', + 'forks', + 'forky', + 'forme', + 'forms', + 'forts', + 'forza', + 'forze', + 'fossa', + 'fosse', + 'fouat', + 'fouds', + 'fouer', + 'fouet', + 'foule', + 'fouls', + 'fount', + 'fours', + 'fouth', + 'fovea', + 'fowls', + 'fowth', + 'foxed', + 'foxes', + 'foxie', + 'foyle', + 'foyne', + 'frabs', + 'frack', + 'fract', + 'frags', + 'fraim', + 'franc', + 'frape', + 'fraps', + 'frass', + 'frate', + 'frati', + 'frats', + 'fraus', + 'frays', + 'frees', + 'freet', + 'freit', + 'fremd', + 'frena', + 'freon', + 'frere', + 'frets', + 'fribs', + 'frier', + 'fries', + 'frigs', + 'frise', + 'frist', + 'frith', + 'frits', + 'fritt', + 'frize', + 'frizz', + 'froes', + 'frogs', + 'frons', + 'frore', + 'frorn', + 'frory', + 'frosh', + 'frows', + 'frowy', + 'frugs', + 'frump', + 'frush', + 'frust', + 'fryer', + 'fubar', + 'fubby', + 'fubsy', + 'fucks', + 'fucus', + 'fuddy', + 'fudgy', + 'fuels', + 'fuero', + 'fuffs', + 'fuffy', + 'fugal', + 'fuggy', + 'fugie', + 'fugio', + 'fugle', + 'fugly', + 'fugus', + 'fujis', + 'fulls', + 'fumed', + 'fumer', + 'fumes', + 'fumet', + 'fundi', + 'funds', + 'fundy', + 'fungo', + 'fungs', + 'funks', + 'fural', + 'furan', + 'furca', + 'furls', + 'furol', + 'furrs', + 'furth', + 'furze', + 'furzy', + 'fused', + 'fusee', + 'fusel', + 'fuses', + 'fusil', + 'fusks', + 'fusts', + 'fusty', + 'futon', + 'fuzed', + 'fuzee', + 'fuzes', + 'fuzil', + 'fyces', + 'fyked', + 'fykes', + 'fyles', + 'fyrds', + 'fytte', + 'gabba', + 'gabby', + 'gable', + 'gaddi', + 'gades', + 'gadge', + 'gadid', + 'gadis', + 'gadje', + 'gadjo', + 'gadso', + 'gaffs', + 'gaged', + 'gager', + 'gages', + 'gaids', + 'gains', + 'gairs', + 'gaita', + 'gaits', + 'gaitt', + 'gajos', + 'galah', + 'galas', + 'galax', + 'galea', + 'galed', + 'gales', + 'galls', + 'gally', + 'galop', + 'galut', + 'galvo', + 'gamas', + 'gamay', + 'gamba', + 'gambe', + 'gambo', + 'gambs', + 'gamed', + 'games', + 'gamey', + 'gamic', + 'gamin', + 'gamme', + 'gammy', + 'gamps', + 'ganch', + 'gandy', + 'ganef', + 'ganev', + 'gangs', + 'ganja', + 'ganof', + 'gants', + 'gaols', + 'gaped', + 'gaper', + 'gapes', + 'gapos', + 'gappy', + 'garbe', + 'garbo', + 'garbs', + 'garda', + 'gares', + 'garis', + 'garms', + 'garni', + 'garre', + 'garth', + 'garum', + 'gases', + 'gasps', + 'gaspy', + 'gasts', + 'gatch', + 'gated', + 'gater', + 'gates', + 'gaths', + 'gator', + 'gauch', + 'gaucy', + 'gauds', + 'gauje', + 'gault', + 'gaums', + 'gaumy', + 'gaups', + 'gaurs', + 'gauss', + 'gauzy', + 'gavot', + 'gawcy', + 'gawds', + 'gawks', + 'gawps', + 'gawsy', + 'gayal', + 'gazal', + 'gazar', + 'gazed', + 'gazes', + 'gazon', + 'gazoo', + 'geals', + 'geans', + 'geare', + 'gears', + 'geats', + 'gebur', + 'gecks', + 'geeks', + 'geeps', + 'geest', + 'geist', + 'geits', + 'gelds', + 'gelee', + 'gelid', + 'gelly', + 'gelts', + 'gemel', + 'gemma', + 'gemmy', + 'gemot', + 'genal', + 'genas', + 'genes', + 'genet', + 'genic', + 'genii', + 'genip', + 'genny', + 'genoa', + 'genom', + 'genro', + 'gents', + 'genty', + 'genua', + 'genus', + 'geode', + 'geoid', + 'gerah', + 'gerbe', + 'geres', + 'gerle', + 'germs', + 'germy', + 'gerne', + 'gesse', + 'gesso', + 'geste', + 'gests', + 'getas', + 'getup', + 'geums', + 'geyan', + 'geyer', + 'ghast', + 'ghats', + 'ghaut', + 'ghazi', + 'ghees', + 'ghest', + 'ghyll', + 'gibed', + 'gibel', + 'giber', + 'gibes', + 'gibli', + 'gibus', + 'gifts', + 'gigas', + 'gighe', + 'gigot', + 'gigue', + 'gilas', + 'gilds', + 'gilet', + 'gills', + 'gilly', + 'gilpy', + 'gilts', + 'gimel', + 'gimme', + 'gimps', + 'gimpy', + 'ginch', + 'ginge', + 'gings', + 'ginks', + 'ginny', + 'ginzo', + 'gipon', + 'gippo', + 'gippy', + 'girds', + 'girls', + 'girns', + 'giron', + 'giros', + 'girrs', + 'girsh', + 'girts', + 'gismo', + 'gisms', + 'gists', + 'gitch', + 'gites', + 'giust', + 'gived', + 'gives', + 'gizmo', + 'glace', + 'glads', + 'glady', + 'glaik', + 'glair', + 'glams', + 'glans', + 'glary', + 'glaum', + 'glaur', + 'glazy', + 'gleba', + 'glebe', + 'gleby', + 'glede', + 'gleds', + 'gleed', + 'gleek', + 'glees', + 'gleet', + 'gleis', + 'glens', + 'glent', + 'gleys', + 'glial', + 'glias', + 'glibs', + 'gliff', + 'glift', + 'glike', + 'glime', + 'glims', + 'glisk', + 'glits', + 'glitz', + 'gloam', + 'globi', + 'globs', + 'globy', + 'glode', + 'glogg', + 'gloms', + 'gloop', + 'glops', + 'glost', + 'glout', + 'glows', + 'gloze', + 'glued', + 'gluer', + 'glues', + 'gluey', + 'glugs', + 'glume', + 'glums', + 'gluon', + 'glute', + 'gluts', + 'gnarl', + 'gnarr', + 'gnars', + 'gnats', + 'gnawn', + 'gnaws', + 'gnows', + 'goads', + 'goafs', + 'goals', + 'goary', + 'goats', + 'goaty', + 'goban', + 'gobar', + 'gobbi', + 'gobbo', + 'gobby', + 'gobis', + 'gobos', + 'godet', + 'godso', + 'goels', + 'goers', + 'goest', + 'goeth', + 'goety', + 'gofer', + 'goffs', + 'gogga', + 'gogos', + 'goier', + 'gojis', + 'golds', + 'goldy', + 'goles', + 'golfs', + 'golpe', + 'golps', + 'gombo', + 'gomer', + 'gompa', + 'gonch', + 'gonef', + 'gongs', + 'gonia', + 'gonif', + 'gonks', + 'gonna', + 'gonof', + 'gonys', + 'gonzo', + 'gooby', + 'goods', + 'goofs', + 'googs', + 'gooks', + 'gooky', + 'goold', + 'gools', + 'gooly', + 'goons', + 'goony', + 'goops', + 'goopy', + 'goors', + 'goory', + 'goosy', + 'gopak', + 'gopik', + 'goral', + 'goras', + 'gored', + 'gores', + 'goris', + 'gorms', + 'gormy', + 'gorps', + 'gorse', + 'gorsy', + 'gosht', + 'gosse', + 'gotch', + 'goths', + 'gothy', + 'gotta', + 'gouch', + 'gouks', + 'goura', + 'gouts', + 'gouty', + 'gowan', + 'gowds', + 'gowfs', + 'gowks', + 'gowls', + 'gowns', + 'goxes', + 'goyim', + 'goyle', + 'graal', + 'grabs', + 'grads', + 'graff', + 'graip', + 'grama', + 'grame', + 'gramp', + 'grams', + 'grana', + 'grans', + 'grapy', + 'gravs', + 'grays', + 'grebe', + 'grebo', + 'grece', + 'greek', + 'grees', + 'grege', + 'grego', + 'grein', + 'grens', + 'grese', + 'greve', + 'grews', + 'greys', + 'grice', + 'gride', + 'grids', + 'griff', + 'grift', + 'grigs', + 'grike', + 'grins', + 'griot', + 'grips', + 'gript', + 'gripy', + 'grise', + 'grist', + 'grisy', + 'grith', + 'grits', + 'grize', + 'groat', + 'grody', + 'grogs', + 'groks', + 'groma', + 'grone', + 'groof', + 'grosz', + 'grots', + 'grouf', + 'grovy', + 'grows', + 'grrls', + 'grrrl', + 'grubs', + 'grued', + 'grues', + 'grufe', + 'grume', + 'grump', + 'grund', + 'gryce', + 'gryde', + 'gryke', + 'grype', + 'grypt', + 'guaco', + 'guana', + 'guano', + 'guans', + 'guars', + 'gucks', + 'gucky', + 'gudes', + 'guffs', + 'gugas', + 'guids', + 'guimp', + 'guiro', + 'gulag', + 'gular', + 'gulas', + 'gules', + 'gulet', + 'gulfs', + 'gulfy', + 'gulls', + 'gulph', + 'gulps', + 'gulpy', + 'gumma', + 'gummi', + 'gumps', + 'gundy', + 'gunge', + 'gungy', + 'gunks', + 'gunky', + 'gunny', + 'guqin', + 'gurdy', + 'gurge', + 'gurls', + 'gurly', + 'gurns', + 'gurry', + 'gursh', + 'gurus', + 'gushy', + 'gusla', + 'gusle', + 'gusli', + 'gussy', + 'gusts', + 'gutsy', + 'gutta', + 'gutty', + 'guyed', + 'guyle', + 'guyot', + 'guyse', + 'gwine', + 'gyals', + 'gyans', + 'gybed', + 'gybes', + 'gyeld', + 'gymps', + 'gynae', + 'gynie', + 'gynny', + 'gynos', + 'gyoza', + 'gypos', + 'gyppo', + 'gyppy', + 'gyral', + 'gyred', + 'gyres', + 'gyron', + 'gyros', + 'gyrus', + 'gytes', + 'gyved', + 'gyves', + 'haafs', + 'haars', + 'hable', + 'habus', + 'hacek', + 'hacks', + 'hadal', + 'haded', + 'hades', + 'hadji', + 'hadst', + 'haems', + 'haets', + 'haffs', + 'hafiz', + 'hafts', + 'haggs', + 'hahas', + 'haick', + 'haika', + 'haiks', + 'haiku', + 'hails', + 'haily', + 'hains', + 'haint', + 'hairs', + 'haith', + 'hajes', + 'hajis', + 'hajji', + 'hakam', + 'hakas', + 'hakea', + 'hakes', + 'hakim', + 'hakus', + 'halal', + 'haled', + 'haler', + 'hales', + 'halfa', + 'halfs', + 'halid', + 'hallo', + 'halls', + 'halma', + 'halms', + 'halon', + 'halos', + 'halse', + 'halts', + 'halva', + 'halwa', + 'hamal', + 'hamba', + 'hamed', + 'hames', + 'hammy', + 'hamza', + 'hanap', + 'hance', + 'hanch', + 'hands', + 'hangi', + 'hangs', + 'hanks', + 'hanky', + 'hansa', + 'hanse', + 'hants', + 'haole', + 'haoma', + 'hapax', + 'haply', + 'happi', + 'hapus', + 'haram', + 'hards', + 'hared', + 'hares', + 'harim', + 'harks', + 'harls', + 'harms', + 'harns', + 'haros', + 'harps', + 'harts', + 'hashy', + 'hasks', + 'hasps', + 'hasta', + 'hated', + 'hates', + 'hatha', + 'hauds', + 'haufs', + 'haugh', + 'hauld', + 'haulm', + 'hauls', + 'hault', + 'hauns', + 'hause', + 'haver', + 'haves', + 'hawed', + 'hawks', + 'hawms', + 'hawse', + 'hayed', + 'hayer', + 'hayey', + 'hayle', + 'hazan', + 'hazed', + 'hazer', + 'hazes', + 'heads', + 'heald', + 'heals', + 'heame', + 'heaps', + 'heapy', + 'heare', + 'hears', + 'heast', + 'heats', + 'heben', + 'hebes', + 'hecht', + 'hecks', + 'heder', + 'hedgy', + 'heeds', + 'heedy', + 'heels', + 'heeze', + 'hefte', + 'hefts', + 'heids', + 'heigh', + 'heils', + 'heirs', + 'hejab', + 'hejra', + 'heled', + 'heles', + 'helio', + 'hells', + 'helms', + 'helos', + 'helot', + 'helps', + 'helve', + 'hemal', + 'hemes', + 'hemic', + 'hemin', + 'hemps', + 'hempy', + 'hench', + 'hends', + 'henge', + 'henna', + 'henny', + 'henry', + 'hents', + 'hepar', + 'herbs', + 'herby', + 'herds', + 'heres', + 'herls', + 'herma', + 'herms', + 'herns', + 'heros', + 'herry', + 'herse', + 'hertz', + 'herye', + 'hesps', + 'hests', + 'hetes', + 'heths', + 'heuch', + 'heugh', + 'hevea', + 'hewed', + 'hewer', + 'hewgh', + 'hexad', + 'hexed', + 'hexer', + 'hexes', + 'hexyl', + 'heyed', + 'hiant', + 'hicks', + 'hided', + 'hider', + 'hides', + 'hiems', + 'highs', + 'hight', + 'hijab', + 'hijra', + 'hiked', + 'hiker', + 'hikes', + 'hikoi', + 'hilar', + 'hilch', + 'hillo', + 'hills', + 'hilts', + 'hilum', + 'hilus', + 'himbo', + 'hinau', + 'hinds', + 'hings', + 'hinky', + 'hinny', + 'hints', + 'hiois', + 'hiply', + 'hired', + 'hiree', + 'hirer', + 'hires', + 'hissy', + 'hists', + 'hithe', + 'hived', + 'hiver', + 'hives', + 'hizen', + 'hoaed', + 'hoagy', + 'hoars', + 'hoary', + 'hoast', + 'hobos', + 'hocks', + 'hocus', + 'hodad', + 'hodja', + 'hoers', + 'hogan', + 'hogen', + 'hoggs', + 'hoghs', + 'hohed', + 'hoick', + 'hoied', + 'hoiks', + 'hoing', + 'hoise', + 'hokas', + 'hoked', + 'hokes', + 'hokey', + 'hokis', + 'hokku', + 'hokum', + 'holds', + 'holed', + 'holes', + 'holey', + 'holks', + 'holla', + 'hollo', + 'holme', + 'holms', + 'holon', + 'holos', + 'holts', + 'homas', + 'homed', + 'homes', + 'homey', + 'homie', + 'homme', + 'homos', + 'honan', + 'honda', + 'honds', + 'honed', + 'honer', + 'hones', + 'hongi', + 'hongs', + 'honks', + 'honky', + 'hooch', + 'hoods', + 'hoody', + 'hooey', + 'hoofs', + 'hooka', + 'hooks', + 'hooky', + 'hooly', + 'hoons', + 'hoops', + 'hoord', + 'hoors', + 'hoosh', + 'hoots', + 'hooty', + 'hoove', + 'hopak', + 'hoped', + 'hoper', + 'hopes', + 'hoppy', + 'horah', + 'horal', + 'horas', + 'horis', + 'horks', + 'horme', + 'horns', + 'horst', + 'horsy', + 'hosed', + 'hosel', + 'hosen', + 'hoser', + 'hoses', + 'hosey', + 'hosta', + 'hosts', + 'hotch', + 'hoten', + 'hotty', + 'houff', + 'houfs', + 'hough', + 'houri', + 'hours', + 'houts', + 'hovea', + 'hoved', + 'hoven', + 'hoves', + 'howbe', + 'howes', + 'howff', + 'howfs', + 'howks', + 'howls', + 'howre', + 'howso', + 'hoxed', + 'hoxes', + 'hoyas', + 'hoyed', + 'hoyle', + 'hubby', + 'hucks', + 'hudna', + 'hudud', + 'huers', + 'huffs', + 'huffy', + 'huger', + 'huggy', + 'huhus', + 'huias', + 'hulas', + 'hules', + 'hulks', + 'hulky', + 'hullo', + 'hulls', + 'hully', + 'humas', + 'humfs', + 'humic', + 'humps', + 'humpy', + 'hunks', + 'hunts', + 'hurds', + 'hurls', + 'hurly', + 'hurra', + 'hurst', + 'hurts', + 'hushy', + 'husks', + 'husos', + 'hutia', + 'huzza', + 'huzzy', + 'hwyls', + 'hydra', + 'hyens', + 'hygge', + 'hying', + 'hykes', + 'hylas', + 'hyleg', + 'hyles', + 'hylic', + 'hymns', + 'hynde', + 'hyoid', + 'hyped', + 'hypes', + 'hypha', + 'hyphy', + 'hypos', + 'hyrax', + 'hyson', + 'hythe', + 'iambi', + 'iambs', + 'ibrik', + 'icers', + 'iched', + 'iches', + 'ichor', + 'icier', + 'icker', + 'ickle', + 'icons', + 'ictal', + 'ictic', + 'ictus', + 'idant', + 'ideas', + 'idees', + 'ident', + 'idled', + 'idles', + 'idola', + 'idols', + 'idyls', + 'iftar', + 'igapo', + 'igged', + 'iglus', + 'ihram', + 'ikans', + 'ikats', + 'ikons', + 'ileac', + 'ileal', + 'ileum', + 'ileus', + 'iliad', + 'ilial', + 'ilium', + 'iller', + 'illth', + 'imago', + 'imams', + 'imari', + 'imaum', + 'imbar', + 'imbed', + 'imide', + 'imido', + 'imids', + 'imine', + 'imino', + 'immew', + 'immit', + 'immix', + 'imped', + 'impis', + 'impot', + 'impro', + 'imshi', + 'imshy', + 'inapt', + 'inarm', + 'inbye', + 'incel', + 'incle', + 'incog', + 'incus', + 'incut', + 'indew', + 'india', + 'indie', + 'indol', + 'indow', + 'indri', + 'indue', + 'inerm', + 'infix', + 'infos', + 'infra', + 'ingan', + 'ingle', + 'inion', + 'inked', + 'inker', + 'inkle', + 'inned', + 'innit', + 'inorb', + 'inrun', + 'inset', + 'inspo', + 'intel', + 'intil', + 'intis', + 'intra', + 'inula', + 'inure', + 'inurn', + 'inust', + 'invar', + 'inwit', + 'iodic', + 'iodid', + 'iodin', + 'iotas', + 'ippon', + 'irade', + 'irids', + 'iring', + 'irked', + 'iroko', + 'irone', + 'irons', + 'isbas', + 'ishes', + 'isled', + 'isles', + 'isnae', + 'issei', + 'istle', + 'items', + 'ither', + 'ivied', + 'ivies', + 'ixias', + 'ixnay', + 'ixora', + 'ixtle', + 'izard', + 'izars', + 'izzat', + 'jaaps', + 'jabot', + 'jacal', + 'jacks', + 'jacky', + 'jaded', + 'jades', + 'jafas', + 'jaffa', + 'jagas', + 'jager', + 'jaggs', + 'jaggy', + 'jagir', + 'jagra', + 'jails', + 'jaker', + 'jakes', + 'jakey', + 'jalap', + 'jalop', + 'jambe', + 'jambo', + 'jambs', + 'jambu', + 'james', + 'jammy', + 'jamon', + 'janes', + 'janns', + 'janny', + 'janty', + 'japan', + 'japed', + 'japer', + 'japes', + 'jarks', + 'jarls', + 'jarps', + 'jarta', + 'jarul', + 'jasey', + 'jaspe', + 'jasps', + 'jatos', + 'jauks', + 'jaups', + 'javas', + 'javel', + 'jawan', + 'jawed', + 'jaxie', + 'jeans', + 'jeats', + 'jebel', + 'jedis', + 'jeels', + 'jeely', + 'jeeps', + 'jeers', + 'jeeze', + 'jefes', + 'jeffs', + 'jehad', + 'jehus', + 'jelab', + 'jello', + 'jells', + 'jembe', + 'jemmy', + 'jenny', + 'jeons', + 'jerid', + 'jerks', + 'jerry', + 'jesse', + 'jests', + 'jesus', + 'jetes', + 'jeton', + 'jeune', + 'jewed', + 'jewie', + 'jhala', + 'jiaos', + 'jibba', + 'jibbs', + 'jibed', + 'jiber', + 'jibes', + 'jiffs', + 'jiggy', + 'jigot', + 'jihad', + 'jills', + 'jilts', + 'jimmy', + 'jimpy', + 'jingo', + 'jinks', + 'jinne', + 'jinni', + 'jinns', + 'jirds', + 'jirga', + 'jirre', + 'jisms', + 'jived', + 'jiver', + 'jives', + 'jivey', + 'jnana', + 'jobed', + 'jobes', + 'jocko', + 'jocks', + 'jocky', + 'jocos', + 'jodel', + 'joeys', + 'johns', + 'joins', + 'joked', + 'jokes', + 'jokey', + 'jokol', + 'joled', + 'joles', + 'jolls', + 'jolts', + 'jolty', + 'jomon', + 'jomos', + 'jones', + 'jongs', + 'jonty', + 'jooks', + 'joram', + 'jorum', + 'jotas', + 'jotty', + 'jotun', + 'joual', + 'jougs', + 'jouks', + 'joule', + 'jours', + 'jowar', + 'jowed', + 'jowls', + 'jowly', + 'joyed', + 'jubas', + 'jubes', + 'jucos', + 'judas', + 'judgy', + 'judos', + 'jugal', + 'jugum', + 'jujus', + 'juked', + 'jukes', + 'jukus', + 'julep', + 'jumar', + 'jumby', + 'jumps', + 'junco', + 'junks', + 'junky', + 'jupes', + 'jupon', + 'jural', + 'jurat', + 'jurel', + 'jures', + 'justs', + 'jutes', + 'jutty', + 'juves', + 'juvie', + 'kaama', + 'kabab', + 'kabar', + 'kabob', + 'kacha', + 'kacks', + 'kadai', + 'kades', + 'kadis', + 'kafir', + 'kagos', + 'kagus', + 'kahal', + 'kaiak', + 'kaids', + 'kaies', + 'kaifs', + 'kaika', + 'kaiks', + 'kails', + 'kaims', + 'kaing', + 'kains', + 'kakas', + 'kakis', + 'kalam', + 'kales', + 'kalif', + 'kalis', + 'kalpa', + 'kamas', + 'kames', + 'kamik', + 'kamis', + 'kamme', + 'kanae', + 'kanas', + 'kandy', + 'kaneh', + 'kanes', + 'kanga', + 'kangs', + 'kanji', + 'kants', + 'kanzu', + 'kaons', + 'kapas', + 'kaphs', + 'kapok', + 'kapow', + 'kapus', + 'kaput', + 'karas', + 'karat', + 'karks', + 'karns', + 'karoo', + 'karos', + 'karri', + 'karst', + 'karsy', + 'karts', + 'karzy', + 'kasha', + 'kasme', + 'katal', + 'katas', + 'katis', + 'katti', + 'kaugh', + 'kauri', + 'kauru', + 'kaury', + 'kaval', + 'kavas', + 'kawas', + 'kawau', + 'kawed', + 'kayle', + 'kayos', + 'kazis', + 'kazoo', + 'kbars', + 'kebar', + 'kebob', + 'kecks', + 'kedge', + 'kedgy', + 'keech', + 'keefs', + 'keeks', + 'keels', + 'keema', + 'keeno', + 'keens', + 'keeps', + 'keets', + 'keeve', + 'kefir', + 'kehua', + 'keirs', + 'kelep', + 'kelim', + 'kells', + 'kelly', + 'kelps', + 'kelpy', + 'kelts', + 'kelty', + 'kembo', + 'kembs', + 'kemps', + 'kempt', + 'kempy', + 'kenaf', + 'kench', + 'kendo', + 'kenos', + 'kente', + 'kents', + 'kepis', + 'kerbs', + 'kerel', + 'kerfs', + 'kerky', + 'kerma', + 'kerne', + 'kerns', + 'keros', + 'kerry', + 'kerve', + 'kesar', + 'kests', + 'ketas', + 'ketch', + 'ketes', + 'ketol', + 'kevel', + 'kevil', + 'kexes', + 'keyed', + 'keyer', + 'khadi', + 'khafs', + 'khans', + 'khaph', + 'khats', + 'khaya', + 'khazi', + 'kheda', + 'kheth', + 'khets', + 'khoja', + 'khors', + 'khoum', + 'khuds', + 'kiaat', + 'kiack', + 'kiang', + 'kibbe', + 'kibbi', + 'kibei', + 'kibes', + 'kibla', + 'kicks', + 'kicky', + 'kiddo', + 'kiddy', + 'kidel', + 'kidge', + 'kiefs', + 'kiers', + 'kieve', + 'kievs', + 'kight', + 'kikes', + 'kikoi', + 'kiley', + 'kilim', + 'kills', + 'kilns', + 'kilos', + 'kilps', + 'kilts', + 'kilty', + 'kimbo', + 'kinas', + 'kinda', + 'kinds', + 'kindy', + 'kines', + 'kings', + 'kinin', + 'kinks', + 'kinos', + 'kiore', + 'kipes', + 'kippa', + 'kipps', + 'kirby', + 'kirks', + 'kirns', + 'kirri', + 'kisan', + 'kissy', + 'kists', + 'kited', + 'kiter', + 'kites', + 'kithe', + 'kiths', + 'kitul', + 'kivas', + 'kiwis', + 'klang', + 'klaps', + 'klett', + 'klick', + 'klieg', + 'kliks', + 'klong', + 'kloof', + 'kluge', + 'klutz', + 'knags', + 'knaps', + 'knarl', + 'knars', + 'knaur', + 'knawe', + 'knees', + 'knell', + 'knish', + 'knits', + 'knive', + 'knobs', + 'knops', + 'knosp', + 'knots', + 'knout', + 'knowe', + 'knows', + 'knubs', + 'knurl', + 'knurr', + 'knurs', + 'knuts', + 'koans', + 'koaps', + 'koban', + 'kobos', + 'koels', + 'koffs', + 'kofta', + 'kogal', + 'kohas', + 'kohen', + 'kohls', + 'koine', + 'kojis', + 'kokam', + 'kokas', + 'koker', + 'kokra', + 'kokum', + 'kolas', + 'kolos', + 'kombu', + 'konbu', + 'kondo', + 'konks', + 'kooks', + 'kooky', + 'koori', + 'kopek', + 'kophs', + 'kopje', + 'koppa', + 'korai', + 'koras', + 'korat', + 'kores', + 'korma', + 'koros', + 'korun', + 'korus', + 'koses', + 'kotch', + 'kotos', + 'kotow', + 'koura', + 'kraal', + 'krabs', + 'kraft', + 'krais', + 'krait', + 'krang', + 'krans', + 'kranz', + 'kraut', + 'krays', + 'kreep', + 'kreng', + 'krewe', + 'krona', + 'krone', + 'kroon', + 'krubi', + 'krunk', + 'ksars', + 'kubie', + 'kudos', + 'kudus', + 'kudzu', + 'kufis', + 'kugel', + 'kuias', + 'kukri', + 'kukus', + 'kulak', + 'kulan', + 'kulas', + 'kulfi', + 'kumis', + 'kumys', + 'kuris', + 'kurre', + 'kurta', + 'kurus', + 'kusso', + 'kutas', + 'kutch', + 'kutis', + 'kutus', + 'kuzus', + 'kvass', + 'kvell', + 'kwela', + 'kyack', + 'kyaks', + 'kyang', + 'kyars', + 'kyats', + 'kybos', + 'kydst', + 'kyles', + 'kylie', + 'kylin', + 'kylix', + 'kyloe', + 'kynde', + 'kynds', + 'kypes', + 'kyrie', + 'kytes', + 'kythe', + 'laari', + 'labda', + 'labia', + 'labis', + 'labra', + 'laced', + 'lacer', + 'laces', + 'lacet', + 'lacey', + 'lacks', + 'laddy', + 'laded', + 'lader', + 'lades', + 'laers', + 'laevo', + 'lagan', + 'lahal', + 'lahar', + 'laich', + 'laics', + 'laids', + 'laigh', + 'laika', + 'laiks', + 'laird', + 'lairs', + 'lairy', + 'laith', + 'laity', + 'laked', + 'laker', + 'lakes', + 'lakhs', + 'lakin', + 'laksa', + 'laldy', + 'lalls', + 'lamas', + 'lambs', + 'lamby', + 'lamed', + 'lamer', + 'lames', + 'lamia', + 'lammy', + 'lamps', + 'lanai', + 'lanas', + 'lanch', + 'lande', + 'lands', + 'lanes', + 'lanks', + 'lants', + 'lapin', + 'lapis', + 'lapje', + 'larch', + 'lards', + 'lardy', + 'laree', + 'lares', + 'largo', + 'laris', + 'larks', + 'larky', + 'larns', + 'larnt', + 'larum', + 'lased', + 'laser', + 'lases', + 'lassi', + 'lassu', + 'lassy', + 'lasts', + 'latah', + 'lated', + 'laten', + 'latex', + 'lathi', + 'laths', + 'lathy', + 'latke', + 'latus', + 'lauan', + 'lauch', + 'lauds', + 'laufs', + 'laund', + 'laura', + 'laval', + 'lavas', + 'laved', + 'laver', + 'laves', + 'lavra', + 'lavvy', + 'lawed', + 'lawer', + 'lawin', + 'lawks', + 'lawns', + 'lawny', + 'laxed', + 'laxer', + 'laxes', + 'laxly', + 'layed', + 'layin', + 'layup', + 'lazar', + 'lazed', + 'lazes', + 'lazos', + 'lazzi', + 'lazzo', + 'leads', + 'leady', + 'leafs', + 'leaks', + 'leams', + 'leans', + 'leany', + 'leaps', + 'leare', + 'lears', + 'leary', + 'leats', + 'leavy', + 'leaze', + 'leben', + 'leccy', + 'ledes', + 'ledgy', + 'ledum', + 'leear', + 'leeks', + 'leeps', + 'leers', + 'leese', + 'leets', + 'leeze', + 'lefte', + 'lefts', + 'leger', + 'leges', + 'legge', + 'leggo', + 'legit', + 'lehrs', + 'lehua', + 'leirs', + 'leish', + 'leman', + 'lemed', + 'lemel', + 'lemes', + 'lemma', + 'lemme', + 'lends', + 'lenes', + 'lengs', + 'lenis', + 'lenos', + 'lense', + 'lenti', + 'lento', + 'leone', + 'lepid', + 'lepra', + 'lepta', + 'lered', + 'leres', + 'lerps', + 'lesbo', + 'leses', + 'lests', + 'letch', + 'lethe', + 'letup', + 'leuch', + 'leuco', + 'leuds', + 'leugh', + 'levas', + 'levee', + 'leves', + 'levin', + 'levis', + 'lewis', + 'lexes', + 'lexis', + 'lezes', + 'lezza', + 'lezzy', + 'liana', + 'liane', + 'liang', + 'liard', + 'liars', + 'liart', + 'liber', + 'libra', + 'libri', + 'lichi', + 'licht', + 'licit', + 'licks', + 'lidar', + 'lidos', + 'liefs', + 'liens', + 'liers', + 'lieus', + 'lieve', + 'lifer', + 'lifes', + 'lifts', + 'ligan', + 'liger', + 'ligge', + 'ligne', + 'liked', + 'liker', + 'likes', + 'likin', + 'lills', + 'lilos', + 'lilts', + 'liman', + 'limas', + 'limax', + 'limba', + 'limbi', + 'limbs', + 'limby', + 'limed', + 'limen', + 'limes', + 'limey', + 'limma', + 'limns', + 'limos', + 'limpa', + 'limps', + 'linac', + 'linch', + 'linds', + 'lindy', + 'lined', + 'lines', + 'liney', + 'linga', + 'lings', + 'lingy', + 'linin', + 'links', + 'linky', + 'linns', + 'linny', + 'linos', + 'lints', + 'linty', + 'linum', + 'linux', + 'lions', + 'lipas', + 'lipes', + 'lipin', + 'lipos', + 'lippy', + 'liras', + 'lirks', + 'lirot', + 'lisks', + 'lisle', + 'lisps', + 'lists', + 'litai', + 'litas', + 'lited', + 'liter', + 'lites', + 'litho', + 'liths', + 'litre', + 'lived', + 'liven', + 'lives', + 'livor', + 'livre', + 'llano', + 'loach', + 'loads', + 'loafs', + 'loams', + 'loans', + 'loast', + 'loave', + 'lobar', + 'lobed', + 'lobes', + 'lobos', + 'lobus', + 'loche', + 'lochs', + 'locie', + 'locis', + 'locks', + 'locos', + 'locum', + 'loden', + 'lodes', + 'loess', + 'lofts', + 'logan', + 'loges', + 'loggy', + 'logia', + 'logie', + 'logoi', + 'logon', + 'logos', + 'lohan', + 'loids', + 'loins', + 'loipe', + 'loirs', + 'lokes', + 'lolls', + 'lolly', + 'lolog', + 'lomas', + 'lomed', + 'lomes', + 'loner', + 'longa', + 'longe', + 'longs', + 'looby', + 'looed', + 'looey', + 'loofa', + 'loofs', + 'looie', + 'looks', + 'looky', + 'looms', + 'loons', + 'loony', + 'loops', + 'loord', + 'loots', + 'loped', + 'loper', + 'lopes', + 'loppy', + 'loral', + 'loran', + 'lords', + 'lordy', + 'lorel', + 'lores', + 'loric', + 'loris', + 'losed', + 'losel', + 'losen', + 'loses', + 'lossy', + 'lotah', + 'lotas', + 'lotes', + 'lotic', + 'lotos', + 'lotsa', + 'lotta', + 'lotte', + 'lotto', + 'lotus', + 'loued', + 'lough', + 'louie', + 'louis', + 'louma', + 'lound', + 'louns', + 'loupe', + 'loups', + 'loure', + 'lours', + 'loury', + 'louts', + 'lovat', + 'loved', + 'loves', + 'lovey', + 'lovie', + 'lowan', + 'lowed', + 'lowes', + 'lownd', + 'lowne', + 'lowns', + 'lowps', + 'lowry', + 'lowse', + 'lowts', + 'loxed', + 'loxes', + 'lozen', + 'luach', + 'luaus', + 'lubed', + 'lubes', + 'lubra', + 'luces', + 'lucks', + 'lucre', + 'ludes', + 'ludic', + 'ludos', + 'luffa', + 'luffs', + 'luged', + 'luger', + 'luges', + 'lulls', + 'lulus', + 'lumas', + 'lumbi', + 'lumme', + 'lummy', + 'lumps', + 'lunas', + 'lunes', + 'lunet', + 'lungi', + 'lungs', + 'lunks', + 'lunts', + 'lupin', + 'lured', + 'lurer', + 'lures', + 'lurex', + 'lurgi', + 'lurgy', + 'lurks', + 'lurry', + 'lurve', + 'luser', + 'lushy', + 'lusks', + 'lusts', + 'lusus', + 'lutea', + 'luted', + 'luter', + 'lutes', + 'luvvy', + 'luxed', + 'luxer', + 'luxes', + 'lweis', + 'lyams', + 'lyard', + 'lyart', + 'lyase', + 'lycea', + 'lycee', + 'lycra', + 'lymes', + 'lynes', + 'lyres', + 'lysed', + 'lyses', + 'lysin', + 'lysis', + 'lysol', + 'lyssa', + 'lyted', + 'lytes', + 'lythe', + 'lytic', + 'lytta', + 'maaed', + 'maare', + 'maars', + 'mabes', + 'macas', + 'maced', + 'macer', + 'maces', + 'mache', + 'machi', + 'machs', + 'macks', + 'macle', + 'macon', + 'madge', + 'madid', + 'madre', + 'maerl', + 'mafic', + 'mages', + 'maggs', + 'magot', + 'magus', + 'mahoe', + 'mahua', + 'mahwa', + 'maids', + 'maiko', + 'maiks', + 'maile', + 'maill', + 'mails', + 'maims', + 'mains', + 'maire', + 'mairs', + 'maise', + 'maist', + 'makar', + 'makes', + 'makis', + 'makos', + 'malam', + 'malar', + 'malas', + 'malax', + 'males', + 'malic', + 'malik', + 'malis', + 'malls', + 'malms', + 'malmy', + 'malts', + 'malty', + 'malus', + 'malva', + 'malwa', + 'mamas', + 'mamba', + 'mamee', + 'mamey', + 'mamie', + 'manas', + 'manat', + 'mandi', + 'maneb', + 'maned', + 'maneh', + 'manes', + 'manet', + 'mangs', + 'manis', + 'manky', + 'manna', + 'manos', + 'manse', + 'manta', + 'manto', + 'manty', + 'manul', + 'manus', + 'mapau', + 'maqui', + 'marae', + 'marah', + 'maras', + 'marcs', + 'mardy', + 'mares', + 'marge', + 'margs', + 'maria', + 'marid', + 'marka', + 'marks', + 'marle', + 'marls', + 'marly', + 'marms', + 'maron', + 'maror', + 'marra', + 'marri', + 'marse', + 'marts', + 'marvy', + 'masas', + 'mased', + 'maser', + 'mases', + 'mashy', + 'masks', + 'massa', + 'massy', + 'masts', + 'masty', + 'masus', + 'matai', + 'mated', + 'mater', + 'mates', + 'maths', + 'matin', + 'matlo', + 'matte', + 'matts', + 'matza', + 'matzo', + 'mauby', + 'mauds', + 'mauls', + 'maund', + 'mauri', + 'mausy', + 'mauts', + 'mauzy', + 'maven', + 'mavie', + 'mavin', + 'mavis', + 'mawed', + 'mawks', + 'mawky', + 'mawns', + 'mawrs', + 'maxed', + 'maxes', + 'maxis', + 'mayan', + 'mayas', + 'mayed', + 'mayos', + 'mayst', + 'mazed', + 'mazer', + 'mazes', + 'mazey', + 'mazut', + 'mbira', + 'meads', + 'meals', + 'meane', + 'means', + 'meany', + 'meare', + 'mease', + 'meath', + 'meats', + 'mebos', + 'mechs', + 'mecks', + 'medii', + 'medle', + 'meeds', + 'meers', + 'meets', + 'meffs', + 'meins', + 'meint', + 'meiny', + 'meith', + 'mekka', + 'melas', + 'melba', + 'melds', + 'melic', + 'melik', + 'mells', + 'melts', + 'melty', + 'memes', + 'memos', + 'menad', + 'mends', + 'mened', + 'menes', + 'menge', + 'mengs', + 'mensa', + 'mense', + 'mensh', + 'menta', + 'mento', + 'menus', + 'meous', + 'meows', + 'merch', + 'mercs', + 'merde', + 'mered', + 'merel', + 'merer', + 'meres', + 'meril', + 'meris', + 'merks', + 'merle', + 'merls', + 'merse', + 'mesal', + 'mesas', + 'mesel', + 'meses', + 'meshy', + 'mesic', + 'mesne', + 'meson', + 'messy', + 'mesto', + 'meted', + 'metes', + 'metho', + 'meths', + 'metic', + 'metif', + 'metis', + 'metol', + 'metre', + 'meuse', + 'meved', + 'meves', + 'mewed', + 'mewls', + 'meynt', + 'mezes', + 'mezze', + 'mezzo', + 'mhorr', + 'miaou', + 'miaow', + 'miasm', + 'miaul', + 'micas', + 'miche', + 'micht', + 'micks', + 'micky', + 'micos', + 'micra', + 'middy', + 'midgy', + 'midis', + 'miens', + 'mieve', + 'miffs', + 'miffy', + 'mifty', + 'miggs', + 'mihas', + 'mihis', + 'miked', + 'mikes', + 'mikra', + 'mikva', + 'milch', + 'milds', + 'miler', + 'miles', + 'milfs', + 'milia', + 'milko', + 'milks', + 'mille', + 'mills', + 'milor', + 'milos', + 'milpa', + 'milts', + 'milty', + 'miltz', + 'mimed', + 'mimeo', + 'mimer', + 'mimes', + 'mimsy', + 'minae', + 'minar', + 'minas', + 'mincy', + 'minds', + 'mined', + 'mines', + 'minge', + 'mings', + 'mingy', + 'minis', + 'minke', + 'minks', + 'minny', + 'minos', + 'mints', + 'mired', + 'mires', + 'mirex', + 'mirid', + 'mirin', + 'mirks', + 'mirky', + 'mirly', + 'miros', + 'mirvs', + 'mirza', + 'misch', + 'misdo', + 'mises', + 'misgo', + 'misos', + 'missa', + 'mists', + 'misty', + 'mitch', + 'miter', + 'mites', + 'mitis', + 'mitre', + 'mitts', + 'mixed', + 'mixen', + 'mixer', + 'mixes', + 'mixte', + 'mixup', + 'mizen', + 'mizzy', + 'mneme', + 'moans', + 'moats', + 'mobby', + 'mobes', + 'mobey', + 'mobie', + 'moble', + 'mochi', + 'mochs', + 'mochy', + 'mocks', + 'moder', + 'modes', + 'modge', + 'modii', + 'modus', + 'moers', + 'mofos', + 'moggy', + 'mohel', + 'mohos', + 'mohrs', + 'mohua', + 'mohur', + 'moile', + 'moils', + 'moira', + 'moire', + 'moits', + 'mojos', + 'mokes', + 'mokis', + 'mokos', + 'molal', + 'molas', + 'molds', + 'moled', + 'moles', + 'molla', + 'molls', + 'molly', + 'molto', + 'molts', + 'molys', + 'momes', + 'momma', + 'mommy', + 'momus', + 'monad', + 'monal', + 'monas', + 'monde', + 'mondo', + 'moner', + 'mongo', + 'mongs', + 'monic', + 'monie', + 'monks', + 'monos', + 'monte', + 'monty', + 'moobs', + 'mooch', + 'moods', + 'mooed', + 'mooks', + 'moola', + 'mooli', + 'mools', + 'mooly', + 'moong', + 'moons', + 'moony', + 'moops', + 'moors', + 'moory', + 'moots', + 'moove', + 'moped', + 'moper', + 'mopes', + 'mopey', + 'moppy', + 'mopsy', + 'mopus', + 'morae', + 'moras', + 'morat', + 'moray', + 'morel', + 'mores', + 'moria', + 'morne', + 'morns', + 'morra', + 'morro', + 'morse', + 'morts', + 'mosed', + 'moses', + 'mosey', + 'mosks', + 'mosso', + 'moste', + 'mosts', + 'moted', + 'moten', + 'motes', + 'motet', + 'motey', + 'moths', + 'mothy', + 'motis', + 'motte', + 'motts', + 'motty', + 'motus', + 'motza', + 'mouch', + 'moues', + 'mould', + 'mouls', + 'moups', + 'moust', + 'mousy', + 'moved', + 'moves', + 'mowas', + 'mowed', + 'mowra', + 'moxas', + 'moxie', + 'moyas', + 'moyle', + 'moyls', + 'mozed', + 'mozes', + 'mozos', + 'mpret', + 'mucho', + 'mucic', + 'mucid', + 'mucin', + 'mucks', + 'mucor', + 'mucro', + 'mudge', + 'mudir', + 'mudra', + 'muffs', + 'mufti', + 'mugga', + 'muggs', + 'muggy', + 'muhly', + 'muids', + 'muils', + 'muirs', + 'muist', + 'mujik', + 'mulct', + 'muled', + 'mules', + 'muley', + 'mulga', + 'mulie', + 'mulla', + 'mulls', + 'mulse', + 'mulsh', + 'mumms', + 'mumps', + 'mumsy', + 'mumus', + 'munga', + 'munge', + 'mungo', + 'mungs', + 'munis', + 'munts', + 'muntu', + 'muons', + 'muras', + 'mured', + 'mures', + 'murex', + 'murid', + 'murks', + 'murls', + 'murly', + 'murra', + 'murre', + 'murri', + 'murrs', + 'murry', + 'murti', + 'murva', + 'musar', + 'musca', + 'mused', + 'muser', + 'muses', + 'muset', + 'musha', + 'musit', + 'musks', + 'musos', + 'musse', + 'mussy', + 'musth', + 'musts', + 'mutch', + 'muted', + 'muter', + 'mutes', + 'mutha', + 'mutis', + 'muton', + 'mutts', + 'muxed', + 'muxes', + 'muzak', + 'muzzy', + 'mvule', + 'myall', + 'mylar', + 'mynah', + 'mynas', + 'myoid', + 'myoma', + 'myope', + 'myops', + 'myopy', + 'mysid', + 'mythi', + 'myths', + 'mythy', + 'myxos', + 'mzees', + 'naams', + 'naans', + 'nabes', + 'nabis', + 'nabks', + 'nabla', + 'nabob', + 'nache', + 'nacho', + 'nacre', + 'nadas', + 'naeve', + 'naevi', + 'naffs', + 'nagas', + 'naggy', + 'nagor', + 'nahal', + 'naiad', + 'naifs', + 'naiks', + 'nails', + 'naira', + 'nairu', + 'naked', + 'naker', + 'nakfa', + 'nalas', + 'naled', + 'nalla', + 'named', + 'namer', + 'names', + 'namma', + 'namus', + 'nanas', + 'nance', + 'nancy', + 'nandu', + 'nanna', + 'nanos', + 'nanua', + 'napas', + 'naped', + 'napes', + 'napoo', + 'nappa', + 'nappe', + 'nappy', + 'naras', + 'narco', + 'narcs', + 'nards', + 'nares', + 'naric', + 'naris', + 'narks', + 'narky', + 'narre', + 'nashi', + 'natch', + 'nates', + 'natis', + 'natty', + 'nauch', + 'naunt', + 'navar', + 'naves', + 'navew', + 'navvy', + 'nawab', + 'nazes', + 'nazir', + 'nazis', + 'nduja', + 'neafe', + 'neals', + 'neaps', + 'nears', + 'neath', + 'neats', + 'nebek', + 'nebel', + 'necks', + 'neddy', + 'needs', + 'neeld', + 'neele', + 'neemb', + 'neems', + 'neeps', + 'neese', + 'neeze', + 'negro', + 'negus', + 'neifs', + 'neist', + 'neive', + 'nelis', + 'nelly', + 'nemas', + 'nemns', + 'nempt', + 'nenes', + 'neons', + 'neper', + 'nepit', + 'neral', + 'nerds', + 'nerka', + 'nerks', + 'nerol', + 'nerts', + 'nertz', + 'nervy', + 'nests', + 'netes', + 'netop', + 'netts', + 'netty', + 'neuks', + 'neume', + 'neums', + 'nevel', + 'neves', + 'nevus', + 'newbs', + 'newed', + 'newel', + 'newie', + 'newsy', + 'newts', + 'nexts', + 'nexus', + 'ngaio', + 'ngana', + 'ngati', + 'ngoma', + 'ngwee', + 'nicad', + 'nicht', + 'nicks', + 'nicol', + 'nidal', + 'nided', + 'nides', + 'nidor', + 'nidus', + 'niefs', + 'nieve', + 'nifes', + 'niffs', + 'niffy', + 'nifty', + 'niger', + 'nighs', + 'nihil', + 'nikab', + 'nikah', + 'nikau', + 'nills', + 'nimbi', + 'nimbs', + 'nimps', + 'niner', + 'nines', + 'ninon', + 'nipas', + 'nippy', + 'niqab', + 'nirls', + 'nirly', + 'nisei', + 'nisse', + 'nisus', + 'niter', + 'nites', + 'nitid', + 'niton', + 'nitre', + 'nitro', + 'nitry', + 'nitty', + 'nival', + 'nixed', + 'nixer', + 'nixes', + 'nixie', + 'nizam', + 'nkosi', + 'noahs', + 'nobby', + 'nocks', + 'nodal', + 'noddy', + 'nodes', + 'nodus', + 'noels', + 'noggs', + 'nohow', + 'noils', + 'noily', + 'noint', + 'noirs', + 'noles', + 'nolls', + 'nolos', + 'nomas', + 'nomen', + 'nomes', + 'nomic', + 'nomoi', + 'nomos', + 'nonas', + 'nonce', + 'nones', + 'nonet', + 'nongs', + 'nonis', + 'nonny', + 'nonyl', + 'noobs', + 'nooit', + 'nooks', + 'nooky', + 'noons', + 'noops', + 'nopal', + 'noria', + 'noris', + 'norks', + 'norma', + 'norms', + 'nosed', + 'noser', + 'noses', + 'notal', + 'noted', + 'noter', + 'notes', + 'notum', + 'nould', + 'noule', + 'nouls', + 'nouns', + 'nouny', + 'noups', + 'novae', + 'novas', + 'novum', + 'noway', + 'nowed', + 'nowls', + 'nowts', + 'nowty', + 'noxal', + 'noxes', + 'noyau', + 'noyed', + 'noyes', + 'nubby', + 'nubia', + 'nucha', + 'nuddy', + 'nuder', + 'nudes', + 'nudie', + 'nudzh', + 'nuffs', + 'nugae', + 'nuked', + 'nukes', + 'nulla', + 'nulls', + 'numbs', + 'numen', + 'nummy', + 'nunny', + 'nurds', + 'nurdy', + 'nurls', + 'nurrs', + 'nutso', + 'nutsy', + 'nyaff', + 'nyala', + 'nying', + 'nyssa', + 'oaked', + 'oaker', + 'oakum', + 'oared', + 'oases', + 'oasis', + 'oasts', + 'oaten', + 'oater', + 'oaths', + 'oaves', + 'obang', + 'obeah', + 'obeli', + 'obeys', + 'obias', + 'obied', + 'obiit', + 'obits', + 'objet', + 'oboes', + 'obole', + 'oboli', + 'obols', + 'occam', + 'ocher', + 'oches', + 'ochre', + 'ochry', + 'ocker', + 'ocrea', + 'octad', + 'octan', + 'octas', + 'octyl', + 'oculi', + 'odahs', + 'odals', + 'odeon', + 'odeum', + 'odism', + 'odist', + 'odium', + 'odors', + 'odour', + 'odyle', + 'odyls', + 'ofays', + 'offed', + 'offie', + 'oflag', + 'ofter', + 'ogams', + 'ogeed', + 'ogees', + 'oggin', + 'ogham', + 'ogive', + 'ogled', + 'ogler', + 'ogles', + 'ogmic', + 'ogres', + 'ohias', + 'ohing', + 'ohmic', + 'ohone', + 'oidia', + 'oiled', + 'oiler', + 'oinks', + 'oints', + 'ojime', + 'okapi', + 'okays', + 'okehs', + 'okras', + 'oktas', + 'oldie', + 'oleic', + 'olein', + 'olent', + 'oleos', + 'oleum', + 'olios', + 'ollas', + 'ollav', + 'oller', + 'ollie', + 'ology', + 'olpae', + 'olpes', + 'omasa', + 'omber', + 'ombus', + 'omens', + 'omers', + 'omits', + 'omlah', + 'omovs', + 'omrah', + 'oncer', + 'onces', + 'oncet', + 'oncus', + 'onely', + 'oners', + 'onery', + 'onium', + 'onkus', + 'onlay', + 'onned', + 'ontic', + 'oobit', + 'oohed', + 'oomph', + 'oonts', + 'ooped', + 'oorie', + 'ooses', + 'ootid', + 'oozed', + 'oozes', + 'opahs', + 'opals', + 'opens', + 'opepe', + 'oping', + 'oppos', + 'opsin', + 'opted', + 'opter', + 'orach', + 'oracy', + 'orals', + 'orang', + 'orant', + 'orate', + 'orbed', + 'orcas', + 'orcin', + 'ordos', + 'oread', + 'orfes', + 'orgia', + 'orgic', + 'orgue', + 'oribi', + 'oriel', + 'orixa', + 'orles', + 'orlon', + 'orlop', + 'ormer', + 'ornis', + 'orpin', + 'orris', + 'ortho', + 'orval', + 'orzos', + 'oscar', + 'oshac', + 'osier', + 'osmic', + 'osmol', + 'ossia', + 'ostia', + 'otaku', + 'otary', + 'ottar', + 'ottos', + 'oubit', + 'oucht', + 'ouens', + 'ouija', + 'oulks', + 'oumas', + 'oundy', + 'oupas', + 'ouped', + 'ouphe', + 'ouphs', + 'ourie', + 'ousel', + 'ousts', + 'outby', + 'outed', + 'outre', + 'outro', + 'outta', + 'ouzel', + 'ouzos', + 'ovals', + 'ovels', + 'ovens', + 'overs', + 'ovist', + 'ovoli', + 'ovolo', + 'ovule', + 'owche', + 'owies', + 'owled', + 'owler', + 'owlet', + 'owned', + 'owres', + 'owrie', + 'owsen', + 'oxbow', + 'oxers', + 'oxeye', + 'oxids', + 'oxies', + 'oxime', + 'oxims', + 'oxlip', + 'oxter', + 'oyers', + 'ozeki', + 'ozzie', + 'paals', + 'paans', + 'pacas', + 'paced', + 'pacer', + 'paces', + 'pacey', + 'pacha', + 'packs', + 'pacos', + 'pacta', + 'pacts', + 'padis', + 'padle', + 'padma', + 'padre', + 'padri', + 'paean', + 'paedo', + 'paeon', + 'paged', + 'pager', + 'pages', + 'pagle', + 'pagod', + 'pagri', + 'paiks', + 'pails', + 'pains', + 'paire', + 'pairs', + 'paisa', + 'paise', + 'pakka', + 'palas', + 'palay', + 'palea', + 'paled', + 'pales', + 'palet', + 'palis', + 'palki', + 'palla', + 'palls', + 'pally', + 'palms', + 'palmy', + 'palpi', + 'palps', + 'palsa', + 'pampa', + 'panax', + 'pance', + 'panda', + 'pands', + 'pandy', + 'paned', + 'panes', + 'panga', + 'pangs', + 'panim', + 'panko', + 'panne', + 'panni', + 'panto', + 'pants', + 'panty', + 'paoli', + 'paolo', + 'papas', + 'papaw', + 'papes', + 'pappi', + 'pappy', + 'parae', + 'paras', + 'parch', + 'pardi', + 'pards', + 'pardy', + 'pared', + 'paren', + 'pareo', + 'pares', + 'pareu', + 'parev', + 'parge', + 'pargo', + 'paris', + 'parki', + 'parks', + 'parky', + 'parle', + 'parly', + 'parma', + 'parol', + 'parps', + 'parra', + 'parrs', + 'parti', + 'parts', + 'parve', + 'parvo', + 'paseo', + 'pases', + 'pasha', + 'pashm', + 'paska', + 'paspy', + 'passe', + 'pasts', + 'pated', + 'paten', + 'pater', + 'pates', + 'paths', + 'patin', + 'patka', + 'patly', + 'patte', + 'patus', + 'pauas', + 'pauls', + 'pavan', + 'paved', + 'paven', + 'paver', + 'paves', + 'pavid', + 'pavin', + 'pavis', + 'pawas', + 'pawaw', + 'pawed', + 'pawer', + 'pawks', + 'pawky', + 'pawls', + 'pawns', + 'paxes', + 'payed', + 'payor', + 'paysd', + 'peage', + 'peags', + 'peaks', + 'peaky', + 'peals', + 'peans', + 'peare', + 'pears', + 'peart', + 'pease', + 'peats', + 'peaty', + 'peavy', + 'peaze', + 'pebas', + 'pechs', + 'pecke', + 'pecks', + 'pecky', + 'pedes', + 'pedis', + 'pedro', + 'peece', + 'peeks', + 'peels', + 'peens', + 'peeoy', + 'peepe', + 'peeps', + 'peers', + 'peery', + 'peeve', + 'peggy', + 'peghs', + 'peins', + 'peise', + 'peize', + 'pekan', + 'pekes', + 'pekin', + 'pekoe', + 'pelas', + 'pelau', + 'peles', + 'pelfs', + 'pells', + 'pelma', + 'pelon', + 'pelta', + 'pelts', + 'pends', + 'pendu', + 'pened', + 'penes', + 'pengo', + 'penie', + 'penis', + 'penks', + 'penna', + 'penni', + 'pents', + 'peons', + 'peony', + 'pepla', + 'pepos', + 'peppy', + 'pepsi', + 'perai', + 'perce', + 'percs', + 'perdu', + 'perdy', + 'perea', + 'peres', + 'peris', + 'perks', + 'perms', + 'perns', + 'perog', + 'perps', + 'perry', + 'perse', + 'perst', + 'perts', + 'perve', + 'pervo', + 'pervs', + 'pervy', + 'pesos', + 'pests', + 'pesty', + 'petar', + 'peter', + 'petit', + 'petre', + 'petri', + 'petti', + 'petto', + 'pewee', + 'pewit', + 'peyse', + 'phage', + 'phang', + 'phare', + 'pharm', + 'pheer', + 'phene', + 'pheon', + 'phese', + 'phial', + 'phish', + 'phizz', + 'phlox', + 'phoca', + 'phono', + 'phons', + 'phots', + 'phpht', + 'phuts', + 'phyla', + 'phyle', + 'piani', + 'pians', + 'pibal', + 'pical', + 'picas', + 'piccy', + 'picks', + 'picot', + 'picra', + 'picul', + 'piend', + 'piers', + 'piert', + 'pieta', + 'piets', + 'piezo', + 'pight', + 'pigmy', + 'piing', + 'pikas', + 'pikau', + 'piked', + 'piker', + 'pikes', + 'pikey', + 'pikis', + 'pikul', + 'pilae', + 'pilaf', + 'pilao', + 'pilar', + 'pilau', + 'pilaw', + 'pilch', + 'pilea', + 'piled', + 'pilei', + 'piler', + 'piles', + 'pilis', + 'pills', + 'pilow', + 'pilum', + 'pilus', + 'pimas', + 'pimps', + 'pinas', + 'pined', + 'pines', + 'pingo', + 'pings', + 'pinko', + 'pinks', + 'pinna', + 'pinny', + 'pinon', + 'pinot', + 'pinta', + 'pints', + 'pinup', + 'pions', + 'piony', + 'pious', + 'pioye', + 'pioys', + 'pipal', + 'pipas', + 'piped', + 'pipes', + 'pipet', + 'pipis', + 'pipit', + 'pippy', + 'pipul', + 'pirai', + 'pirls', + 'pirns', + 'pirog', + 'pisco', + 'pises', + 'pisky', + 'pisos', + 'pissy', + 'piste', + 'pitas', + 'piths', + 'piton', + 'pitot', + 'pitta', + 'piums', + 'pixes', + 'pized', + 'pizes', + 'plaas', + 'plack', + 'plage', + 'plans', + 'plaps', + 'plash', + 'plasm', + 'plast', + 'plats', + 'platt', + 'platy', + 'playa', + 'plays', + 'pleas', + 'plebe', + 'plebs', + 'plena', + 'pleon', + 'plesh', + 'plews', + 'plica', + 'plies', + 'plims', + 'pling', + 'plink', + 'ploat', + 'plods', + 'plong', + 'plonk', + 'plook', + 'plops', + 'plots', + 'plotz', + 'plouk', + 'plows', + 'ploye', + 'ploys', + 'plues', + 'pluff', + 'plugs', + 'plums', + 'plumy', + 'pluot', + 'pluto', + 'plyer', + 'poach', + 'poaka', + 'poake', + 'poboy', + 'pocks', + 'pocky', + 'podal', + 'poddy', + 'podex', + 'podge', + 'podgy', + 'podia', + 'poems', + 'poeps', + 'poets', + 'pogey', + 'pogge', + 'pogos', + 'pohed', + 'poilu', + 'poind', + 'pokal', + 'poked', + 'pokes', + 'pokey', + 'pokie', + 'poled', + 'poler', + 'poles', + 'poley', + 'polio', + 'polis', + 'polje', + 'polks', + 'polls', + 'polly', + 'polos', + 'polts', + 'polys', + 'pombe', + 'pomes', + 'pommy', + 'pomos', + 'pomps', + 'ponce', + 'poncy', + 'ponds', + 'pones', + 'poney', + 'ponga', + 'pongo', + 'pongs', + 'pongy', + 'ponks', + 'ponts', + 'ponty', + 'ponzu', + 'poods', + 'pooed', + 'poofs', + 'poofy', + 'poohs', + 'pooja', + 'pooka', + 'pooks', + 'pools', + 'poons', + 'poops', + 'poopy', + 'poori', + 'poort', + 'poots', + 'poove', + 'poovy', + 'popes', + 'poppa', + 'popsy', + 'porae', + 'poral', + 'pored', + 'porer', + 'pores', + 'porge', + 'porgy', + 'porin', + 'porks', + 'porky', + 'porno', + 'porns', + 'porny', + 'porta', + 'ports', + 'porty', + 'posed', + 'poses', + 'posey', + 'posho', + 'posts', + 'potae', + 'potch', + 'poted', + 'potes', + 'potin', + 'potoo', + 'potsy', + 'potto', + 'potts', + 'potty', + 'pouff', + 'poufs', + 'pouke', + 'pouks', + 'poule', + 'poulp', + 'poult', + 'poupe', + 'poupt', + 'pours', + 'pouts', + 'powan', + 'powin', + 'pownd', + 'powns', + 'powny', + 'powre', + 'poxed', + 'poxes', + 'poynt', + 'poyou', + 'poyse', + 'pozzy', + 'praam', + 'prads', + 'prahu', + 'prams', + 'prana', + 'prang', + 'praos', + 'prase', + 'prate', + 'prats', + 'pratt', + 'praty', + 'praus', + 'prays', + 'predy', + 'preed', + 'prees', + 'preif', + 'prems', + 'premy', + 'prent', + 'preon', + 'preop', + 'preps', + 'presa', + 'prese', + 'prest', + 'preve', + 'prexy', + 'preys', + 'prial', + 'pricy', + 'prief', + 'prier', + 'pries', + 'prigs', + 'prill', + 'prima', + 'primi', + 'primp', + 'prims', + 'primy', + 'prink', + 'prion', + 'prise', + 'priss', + 'proas', + 'probs', + 'prods', + 'proem', + 'profs', + 'progs', + 'proin', + 'proke', + 'prole', + 'proll', + 'promo', + 'proms', + 'pronk', + 'props', + 'prore', + 'proso', + 'pross', + 'prost', + 'prosy', + 'proto', + 'proul', + 'prows', + 'proyn', + 'prunt', + 'pruta', + 'pryer', + 'pryse', + 'pseud', + 'pshaw', + 'psion', + 'psoae', + 'psoai', + 'psoas', + 'psora', + 'psych', + 'psyop', + 'pubco', + 'pubes', + 'pubis', + 'pucan', + 'pucer', + 'puces', + 'pucka', + 'pucks', + 'puddy', + 'pudge', + 'pudic', + 'pudor', + 'pudsy', + 'pudus', + 'puers', + 'puffa', + 'puffs', + 'puggy', + 'pugil', + 'puhas', + 'pujah', + 'pujas', + 'pukas', + 'puked', + 'puker', + 'pukes', + 'pukey', + 'pukka', + 'pukus', + 'pulao', + 'pulas', + 'puled', + 'puler', + 'pules', + 'pulik', + 'pulis', + 'pulka', + 'pulks', + 'pulli', + 'pulls', + 'pully', + 'pulmo', + 'pulps', + 'pulus', + 'pumas', + 'pumie', + 'pumps', + 'punas', + 'punce', + 'punga', + 'pungs', + 'punji', + 'punka', + 'punks', + 'punky', + 'punny', + 'punto', + 'punts', + 'punty', + 'pupae', + 'pupas', + 'pupus', + 'purda', + 'pured', + 'pures', + 'purin', + 'puris', + 'purls', + 'purpy', + 'purrs', + 'pursy', + 'purty', + 'puses', + 'pusle', + 'pussy', + 'putid', + 'puton', + 'putti', + 'putto', + 'putts', + 'puzel', + 'pwned', + 'pyats', + 'pyets', + 'pygal', + 'pyins', + 'pylon', + 'pyned', + 'pynes', + 'pyoid', + 'pyots', + 'pyral', + 'pyran', + 'pyres', + 'pyrex', + 'pyric', + 'pyros', + 'pyxed', + 'pyxes', + 'pyxie', + 'pyxis', + 'pzazz', + 'qadis', + 'qaids', + 'qajaq', + 'qanat', + 'qapik', + 'qibla', + 'qophs', + 'qorma', + 'quads', + 'quaff', + 'quags', + 'quair', + 'quais', + 'quaky', + 'quale', + 'quant', + 'quare', + 'quass', + 'quate', + 'quats', + 'quayd', + 'quays', + 'qubit', + 'quean', + 'queme', + 'quena', + 'quern', + 'queyn', + 'queys', + 'quich', + 'quids', + 'quiff', + 'quims', + 'quina', + 'quine', + 'quino', + 'quins', + 'quint', + 'quipo', + 'quips', + 'quipu', + 'quire', + 'quirt', + 'quist', + 'quits', + 'quoad', + 'quods', + 'quoif', + 'quoin', + 'quoit', + 'quoll', + 'quonk', + 'quops', + 'qursh', + 'quyte', + 'rabat', + 'rabic', + 'rabis', + 'raced', + 'races', + 'rache', + 'racks', + 'racon', + 'radge', + 'radix', + 'radon', + 'raffs', + 'rafts', + 'ragas', + 'ragde', + 'raged', + 'ragee', + 'rager', + 'rages', + 'ragga', + 'raggs', + 'raggy', + 'ragis', + 'ragus', + 'rahed', + 'rahui', + 'raias', + 'raids', + 'raiks', + 'raile', + 'rails', + 'raine', + 'rains', + 'raird', + 'raita', + 'raits', + 'rajas', + 'rajes', + 'raked', + 'rakee', + 'raker', + 'rakes', + 'rakia', + 'rakis', + 'rakus', + 'rales', + 'ramal', + 'ramee', + 'ramet', + 'ramie', + 'ramin', + 'ramis', + 'rammy', + 'ramps', + 'ramus', + 'ranas', + 'rance', + 'rands', + 'ranee', + 'ranga', + 'rangi', + 'rangs', + 'rangy', + 'ranid', + 'ranis', + 'ranke', + 'ranks', + 'rants', + 'raped', + 'raper', + 'rapes', + 'raphe', + 'rappe', + 'rared', + 'raree', + 'rares', + 'rarks', + 'rased', + 'raser', + 'rases', + 'rasps', + 'rasse', + 'rasta', + 'ratal', + 'ratan', + 'ratas', + 'ratch', + 'rated', + 'ratel', + 'rater', + 'rates', + 'ratha', + 'rathe', + 'raths', + 'ratoo', + 'ratos', + 'ratus', + 'rauns', + 'raupo', + 'raved', + 'ravel', + 'raver', + 'raves', + 'ravey', + 'ravin', + 'rawer', + 'rawin', + 'rawly', + 'rawns', + 'raxed', + 'raxes', + 'rayah', + 'rayas', + 'rayed', + 'rayle', + 'rayne', + 'razed', + 'razee', + 'razer', + 'razes', + 'razoo', + 'readd', + 'reads', + 'reais', + 'reaks', + 'realo', + 'reals', + 'reame', + 'reams', + 'reamy', + 'reans', + 'reaps', + 'rears', + 'reast', + 'reata', + 'reate', + 'reave', + 'rebbe', + 'rebec', + 'rebid', + 'rebit', + 'rebop', + 'rebuy', + 'recal', + 'recce', + 'recco', + 'reccy', + 'recit', + 'recks', + 'recon', + 'recta', + 'recti', + 'recto', + 'redan', + 'redds', + 'reddy', + 'reded', + 'redes', + 'redia', + 'redid', + 'redip', + 'redly', + 'redon', + 'redos', + 'redox', + 'redry', + 'redub', + 'redux', + 'redye', + 'reech', + 'reede', + 'reeds', + 'reefs', + 'reefy', + 'reeks', + 'reeky', + 'reels', + 'reens', + 'reest', + 'reeve', + 'refed', + 'refel', + 'reffo', + 'refis', + 'refix', + 'refly', + 'refry', + 'regar', + 'reges', + 'reggo', + 'regie', + 'regma', + 'regna', + 'regos', + 'regur', + 'rehem', + 'reifs', + 'reify', + 'reiki', + 'reiks', + 'reink', + 'reins', + 'reird', + 'reist', + 'reive', + 'rejig', + 'rejon', + 'reked', + 'rekes', + 'rekey', + 'relet', + 'relie', + 'relit', + 'rello', + 'reman', + 'remap', + 'remen', + 'remet', + 'remex', + 'remix', + 'renay', + 'rends', + 'reney', + 'renga', + 'renig', + 'renin', + 'renne', + 'renos', + 'rente', + 'rents', + 'reoil', + 'reorg', + 'repeg', + 'repin', + 'repla', + 'repos', + 'repot', + 'repps', + 'repro', + 'reran', + 'rerig', + 'resat', + 'resaw', + 'resay', + 'resee', + 'reses', + 'resew', + 'resid', + 'resit', + 'resod', + 'resow', + 'resto', + 'rests', + 'resty', + 'resus', + 'retag', + 'retax', + 'retem', + 'retia', + 'retie', + 'retox', + 'revet', + 'revie', + 'rewan', + 'rewax', + 'rewed', + 'rewet', + 'rewin', + 'rewon', + 'rewth', + 'rexes', + 'rezes', + 'rheas', + 'rheme', + 'rheum', + 'rhies', + 'rhime', + 'rhine', + 'rhody', + 'rhomb', + 'rhone', + 'rhumb', + 'rhyne', + 'rhyta', + 'riads', + 'rials', + 'riant', + 'riata', + 'ribas', + 'ribby', + 'ribes', + 'riced', + 'ricer', + 'rices', + 'ricey', + 'richt', + 'ricin', + 'ricks', + 'rides', + 'ridgy', + 'ridic', + 'riels', + 'riems', + 'rieve', + 'rifer', + 'riffs', + 'rifte', + 'rifts', + 'rifty', + 'riggs', + 'rigol', + 'riled', + 'riles', + 'riley', + 'rille', + 'rills', + 'rimae', + 'rimed', + 'rimer', + 'rimes', + 'rimus', + 'rinds', + 'rindy', + 'rines', + 'rings', + 'rinks', + 'rioja', + 'riots', + 'riped', + 'ripes', + 'ripps', + 'rises', + 'rishi', + 'risks', + 'risps', + 'risus', + 'rites', + 'ritts', + 'ritzy', + 'rivas', + 'rived', + 'rivel', + 'riven', + 'rives', + 'riyal', + 'rizas', + 'roads', + 'roams', + 'roans', + 'roars', + 'roary', + 'roate', + 'robed', + 'robes', + 'roble', + 'rocks', + 'roded', + 'rodes', + 'roguy', + 'rohes', + 'roids', + 'roils', + 'roily', + 'roins', + 'roist', + 'rojak', + 'rojis', + 'roked', + 'roker', + 'rokes', + 'rolag', + 'roles', + 'rolfs', + 'rolls', + 'romal', + 'roman', + 'romeo', + 'romps', + 'ronde', + 'rondo', + 'roneo', + 'rones', + 'ronin', + 'ronne', + 'ronte', + 'ronts', + 'roods', + 'roofs', + 'roofy', + 'rooks', + 'rooky', + 'rooms', + 'roons', + 'roops', + 'roopy', + 'roosa', + 'roose', + 'roots', + 'rooty', + 'roped', + 'roper', + 'ropes', + 'ropey', + 'roque', + 'roral', + 'rores', + 'roric', + 'rorid', + 'rorie', + 'rorts', + 'rorty', + 'rosed', + 'roses', + 'roset', + 'roshi', + 'rosin', + 'rosit', + 'rosti', + 'rosts', + 'rotal', + 'rotan', + 'rotas', + 'rotch', + 'roted', + 'rotes', + 'rotis', + 'rotls', + 'roton', + 'rotos', + 'rotte', + 'rouen', + 'roues', + 'roule', + 'rouls', + 'roums', + 'roups', + 'roupy', + 'roust', + 'routh', + 'routs', + 'roved', + 'roven', + 'roves', + 'rowan', + 'rowed', + 'rowel', + 'rowen', + 'rowie', + 'rowme', + 'rownd', + 'rowth', + 'rowts', + 'royne', + 'royst', + 'rozet', + 'rozit', + 'ruana', + 'rubai', + 'rubby', + 'rubel', + 'rubes', + 'rubin', + 'ruble', + 'rubli', + 'rubus', + 'ruche', + 'rucks', + 'rudas', + 'rudds', + 'rudes', + 'rudie', + 'rudis', + 'rueda', + 'ruers', + 'ruffe', + 'ruffs', + 'rugae', + 'rugal', + 'ruggy', + 'ruing', + 'ruins', + 'rukhs', + 'ruled', + 'rules', + 'rumal', + 'rumbo', + 'rumen', + 'rumes', + 'rumly', + 'rummy', + 'rumpo', + 'rumps', + 'rumpy', + 'runch', + 'runds', + 'runed', + 'runes', + 'rungs', + 'runic', + 'runny', + 'runts', + 'runty', + 'rupia', + 'rurps', + 'rurus', + 'rusas', + 'ruses', + 'rushy', + 'rusks', + 'rusma', + 'russe', + 'rusts', + 'ruths', + 'rutin', + 'rutty', + 'ryals', + 'rybat', + 'ryked', + 'rykes', + 'rymme', + 'rynds', + 'ryots', + 'ryper', + 'saags', + 'sabal', + 'sabed', + 'saber', + 'sabes', + 'sabha', + 'sabin', + 'sabir', + 'sable', + 'sabot', + 'sabra', + 'sabre', + 'sacks', + 'sacra', + 'saddo', + 'sades', + 'sadhe', + 'sadhu', + 'sadis', + 'sados', + 'sadza', + 'safed', + 'safes', + 'sagas', + 'sager', + 'sages', + 'saggy', + 'sagos', + 'sagum', + 'saheb', + 'sahib', + 'saice', + 'saick', + 'saics', + 'saids', + 'saiga', + 'sails', + 'saims', + 'saine', + 'sains', + 'sairs', + 'saist', + 'saith', + 'sajou', + 'sakai', + 'saker', + 'sakes', + 'sakia', + 'sakis', + 'sakti', + 'salal', + 'salat', + 'salep', + 'sales', + 'salet', + 'salic', + 'salix', + 'salle', + 'salmi', + 'salol', + 'salop', + 'salpa', + 'salps', + 'salse', + 'salto', + 'salts', + 'salue', + 'salut', + 'saman', + 'samas', + 'samba', + 'sambo', + 'samek', + 'samel', + 'samen', + 'sames', + 'samey', + 'samfu', + 'sammy', + 'sampi', + 'samps', + 'sands', + 'saned', + 'sanes', + 'sanga', + 'sangh', + 'sango', + 'sangs', + 'sanko', + 'sansa', + 'santo', + 'sants', + 'saola', + 'sapan', + 'sapid', + 'sapor', + 'saran', + 'sards', + 'sared', + 'saree', + 'sarge', + 'sargo', + 'sarin', + 'saris', + 'sarks', + 'sarky', + 'sarod', + 'saros', + 'sarus', + 'saser', + 'sasin', + 'sasse', + 'satai', + 'satay', + 'sated', + 'satem', + 'sates', + 'satis', + 'sauba', + 'sauch', + 'saugh', + 'sauls', + 'sault', + 'saunt', + 'saury', + 'sauts', + 'saved', + 'saver', + 'saves', + 'savey', + 'savin', + 'sawah', + 'sawed', + 'sawer', + 'saxes', + 'sayed', + 'sayer', + 'sayid', + 'sayne', + 'sayon', + 'sayst', + 'sazes', + 'scabs', + 'scads', + 'scaff', + 'scags', + 'scail', + 'scala', + 'scall', + 'scams', + 'scand', + 'scans', + 'scapa', + 'scape', + 'scapi', + 'scarp', + 'scars', + 'scart', + 'scath', + 'scats', + 'scatt', + 'scaud', + 'scaup', + 'scaur', + 'scaws', + 'sceat', + 'scena', + 'scend', + 'schav', + 'schmo', + 'schul', + 'schwa', + 'sclim', + 'scody', + 'scogs', + 'scoog', + 'scoot', + 'scopa', + 'scops', + 'scots', + 'scoug', + 'scoup', + 'scowp', + 'scows', + 'scrab', + 'scrae', + 'scrag', + 'scran', + 'scrat', + 'scraw', + 'scray', + 'scrim', + 'scrip', + 'scrob', + 'scrod', + 'scrog', + 'scrow', + 'scudi', + 'scudo', + 'scuds', + 'scuff', + 'scuft', + 'scugs', + 'sculk', + 'scull', + 'sculp', + 'sculs', + 'scums', + 'scups', + 'scurf', + 'scurs', + 'scuse', + 'scuta', + 'scute', + 'scuts', + 'scuzz', + 'scyes', + 'sdayn', + 'sdein', + 'seals', + 'seame', + 'seams', + 'seamy', + 'seans', + 'seare', + 'sears', + 'sease', + 'seats', + 'seaze', + 'sebum', + 'secco', + 'sechs', + 'sects', + 'seder', + 'sedes', + 'sedge', + 'sedgy', + 'sedum', + 'seeds', + 'seeks', + 'seeld', + 'seels', + 'seely', + 'seems', + 'seeps', + 'seepy', + 'seers', + 'sefer', + 'segar', + 'segni', + 'segno', + 'segol', + 'segos', + 'sehri', + 'seifs', + 'seils', + 'seine', + 'seirs', + 'seise', + 'seism', + 'seity', + 'seiza', + 'sekos', + 'sekts', + 'selah', + 'seles', + 'selfs', + 'sella', + 'selle', + 'sells', + 'selva', + 'semee', + 'semes', + 'semie', + 'semis', + 'senas', + 'sends', + 'senes', + 'sengi', + 'senna', + 'senor', + 'sensa', + 'sensi', + 'sente', + 'senti', + 'sents', + 'senvy', + 'senza', + 'sepad', + 'sepal', + 'sepic', + 'sepoy', + 'septa', + 'septs', + 'serac', + 'serai', + 'seral', + 'sered', + 'serer', + 'seres', + 'serfs', + 'serge', + 'seric', + 'serin', + 'serks', + 'seron', + 'serow', + 'serra', + 'serre', + 'serrs', + 'serry', + 'servo', + 'sesey', + 'sessa', + 'setae', + 'setal', + 'seton', + 'setts', + 'sewan', + 'sewar', + 'sewed', + 'sewel', + 'sewen', + 'sewin', + 'sexed', + 'sexer', + 'sexes', + 'sexto', + 'sexts', + 'seyen', + 'shads', + 'shags', + 'shahs', + 'shako', + 'shakt', + 'shalm', + 'shaly', + 'shama', + 'shams', + 'shand', + 'shans', + 'shaps', + 'sharn', + 'shash', + 'shaul', + 'shawm', + 'shawn', + 'shaws', + 'shaya', + 'shays', + 'shchi', + 'sheaf', + 'sheal', + 'sheas', + 'sheds', + 'sheel', + 'shend', + 'shent', + 'sheol', + 'sherd', + 'shere', + 'shero', + 'shets', + 'sheva', + 'shewn', + 'shews', + 'shiai', + 'shiel', + 'shier', + 'shies', + 'shill', + 'shily', + 'shims', + 'shins', + 'ships', + 'shirr', + 'shirs', + 'shish', + 'shiso', + 'shist', + 'shite', + 'shits', + 'shiur', + 'shiva', + 'shive', + 'shivs', + 'shlep', + 'shlub', + 'shmek', + 'shmoe', + 'shoat', + 'shoed', + 'shoer', + 'shoes', + 'shogi', + 'shogs', + 'shoji', + 'shojo', + 'shola', + 'shool', + 'shoon', + 'shoos', + 'shope', + 'shops', + 'shorl', + 'shote', + 'shots', + 'shott', + 'showd', + 'shows', + 'shoyu', + 'shred', + 'shris', + 'shrow', + 'shtik', + 'shtum', + 'shtup', + 'shule', + 'shuln', + 'shuls', + 'shuns', + 'shura', + 'shute', + 'shuts', + 'shwas', + 'shyer', + 'sials', + 'sibbs', + 'sibyl', + 'sices', + 'sicht', + 'sicko', + 'sicks', + 'sicky', + 'sidas', + 'sided', + 'sider', + 'sides', + 'sidha', + 'sidhe', + 'sidle', + 'sield', + 'siens', + 'sient', + 'sieth', + 'sieur', + 'sifts', + 'sighs', + 'sigil', + 'sigla', + 'signa', + 'signs', + 'sijos', + 'sikas', + 'siker', + 'sikes', + 'silds', + 'siled', + 'silen', + 'siler', + 'siles', + 'silex', + 'silks', + 'sills', + 'silos', + 'silts', + 'silty', + 'silva', + 'simar', + 'simas', + 'simba', + 'simis', + 'simps', + 'simul', + 'sinds', + 'sined', + 'sines', + 'sings', + 'sinhs', + 'sinks', + 'sinky', + 'sinus', + 'siped', + 'sipes', + 'sippy', + 'sired', + 'siree', + 'sires', + 'sirih', + 'siris', + 'siroc', + 'sirra', + 'sirup', + 'sisal', + 'sises', + 'sista', + 'sists', + 'sitar', + 'sited', + 'sites', + 'sithe', + 'sitka', + 'situp', + 'situs', + 'siver', + 'sixer', + 'sixes', + 'sixmo', + 'sixte', + 'sizar', + 'sized', + 'sizel', + 'sizer', + 'sizes', + 'skags', + 'skail', + 'skald', + 'skank', + 'skart', + 'skats', + 'skatt', + 'skaws', + 'skean', + 'skear', + 'skeds', + 'skeed', + 'skeef', + 'skeen', + 'skeer', + 'skees', + 'skeet', + 'skegg', + 'skegs', + 'skein', + 'skelf', + 'skell', + 'skelm', + 'skelp', + 'skene', + 'skens', + 'skeos', + 'skeps', + 'skers', + 'skets', + 'skews', + 'skids', + 'skied', + 'skies', + 'skiey', + 'skimo', + 'skims', + 'skink', + 'skins', + 'skint', + 'skios', + 'skips', + 'skirl', + 'skirr', + 'skite', + 'skits', + 'skive', + 'skivy', + 'sklim', + 'skoal', + 'skody', + 'skoff', + 'skogs', + 'skols', + 'skool', + 'skort', + 'skosh', + 'skran', + 'skrik', + 'skuas', + 'skugs', + 'skyed', + 'skyer', + 'skyey', + 'skyfs', + 'skyre', + 'skyrs', + 'skyte', + 'slabs', + 'slade', + 'slaes', + 'slags', + 'slaid', + 'slake', + 'slams', + 'slane', + 'slank', + 'slaps', + 'slart', + 'slats', + 'slaty', + 'slaws', + 'slays', + 'slebs', + 'sleds', + 'sleer', + 'slews', + 'sleys', + 'slier', + 'slily', + 'slims', + 'slipe', + 'slips', + 'slipt', + 'slish', + 'slits', + 'slive', + 'sloan', + 'slobs', + 'sloes', + 'slogs', + 'sloid', + 'slojd', + 'slomo', + 'sloom', + 'sloot', + 'slops', + 'slopy', + 'slorm', + 'slots', + 'slove', + 'slows', + 'sloyd', + 'slubb', + 'slubs', + 'slued', + 'slues', + 'sluff', + 'slugs', + 'sluit', + 'slums', + 'slurb', + 'slurs', + 'sluse', + 'sluts', + 'slyer', + 'slype', + 'smaak', + 'smaik', + 'smalm', + 'smalt', + 'smarm', + 'smaze', + 'smeek', + 'smees', + 'smeik', + 'smeke', + 'smerk', + 'smews', + 'smirr', + 'smirs', + 'smits', + 'smogs', + 'smoko', + 'smolt', + 'smoor', + 'smoot', + 'smore', + 'smorg', + 'smout', + 'smowt', + 'smugs', + 'smurs', + 'smush', + 'smuts', + 'snabs', + 'snafu', + 'snags', + 'snaps', + 'snarf', + 'snark', + 'snars', + 'snary', + 'snash', + 'snath', + 'snaws', + 'snead', + 'sneap', + 'snebs', + 'sneck', + 'sneds', + 'sneed', + 'snees', + 'snell', + 'snibs', + 'snick', + 'snies', + 'snift', + 'snigs', + 'snips', + 'snipy', + 'snirt', + 'snits', + 'snobs', + 'snods', + 'snoek', + 'snoep', + 'snogs', + 'snoke', + 'snood', + 'snook', + 'snool', + 'snoot', + 'snots', + 'snowk', + 'snows', + 'snubs', + 'snugs', + 'snush', + 'snyes', + 'soaks', + 'soaps', + 'soare', + 'soars', + 'soave', + 'sobas', + 'socas', + 'soces', + 'socko', + 'socks', + 'socle', + 'sodas', + 'soddy', + 'sodic', + 'sodom', + 'sofar', + 'sofas', + 'softa', + 'softs', + 'softy', + 'soger', + 'sohur', + 'soils', + 'soily', + 'sojas', + 'sojus', + 'sokah', + 'soken', + 'sokes', + 'sokol', + 'solah', + 'solan', + 'solas', + 'solde', + 'soldi', + 'soldo', + 'solds', + 'soled', + 'solei', + 'soler', + 'soles', + 'solon', + 'solos', + 'solum', + 'solus', + 'soman', + 'somas', + 'sonce', + 'sonde', + 'sones', + 'songs', + 'sonly', + 'sonne', + 'sonny', + 'sonse', + 'sonsy', + 'sooey', + 'sooks', + 'sooky', + 'soole', + 'sools', + 'sooms', + 'soops', + 'soote', + 'soots', + 'sophs', + 'sophy', + 'sopor', + 'soppy', + 'sopra', + 'soral', + 'soras', + 'sorbo', + 'sorbs', + 'sorda', + 'sordo', + 'sords', + 'sored', + 'soree', + 'sorel', + 'sorer', + 'sores', + 'sorex', + 'sorgo', + 'sorns', + 'sorra', + 'sorta', + 'sorts', + 'sorus', + 'soths', + 'sotol', + 'souce', + 'souct', + 'sough', + 'souks', + 'souls', + 'soums', + 'soups', + 'soupy', + 'sours', + 'souse', + 'souts', + 'sowar', + 'sowce', + 'sowed', + 'sowff', + 'sowfs', + 'sowle', + 'sowls', + 'sowms', + 'sownd', + 'sowne', + 'sowps', + 'sowse', + 'sowth', + 'soyas', + 'soyle', + 'soyuz', + 'sozin', + 'spacy', + 'spado', + 'spaed', + 'spaer', + 'spaes', + 'spags', + 'spahi', + 'spail', + 'spain', + 'spait', + 'spake', + 'spald', + 'spale', + 'spall', + 'spalt', + 'spams', + 'spane', + 'spang', + 'spans', + 'spard', + 'spars', + 'spart', + 'spate', + 'spats', + 'spaul', + 'spawl', + 'spaws', + 'spayd', + 'spays', + 'spaza', + 'spazz', + 'speal', + 'spean', + 'speat', + 'specs', + 'spect', + 'speel', + 'speer', + 'speil', + 'speir', + 'speks', + 'speld', + 'spelk', + 'speos', + 'spets', + 'speug', + 'spews', + 'spewy', + 'spial', + 'spica', + 'spick', + 'spics', + 'spide', + 'spier', + 'spies', + 'spiff', + 'spifs', + 'spiks', + 'spile', + 'spims', + 'spina', + 'spink', + 'spins', + 'spirt', + 'spiry', + 'spits', + 'spitz', + 'spivs', + 'splay', + 'splog', + 'spode', + 'spods', + 'spoom', + 'spoor', + 'spoot', + 'spork', + 'sposh', + 'spots', + 'sprad', + 'sprag', + 'sprat', + 'spred', + 'sprew', + 'sprit', + 'sprod', + 'sprog', + 'sprue', + 'sprug', + 'spuds', + 'spued', + 'spuer', + 'spues', + 'spugs', + 'spule', + 'spume', + 'spumy', + 'spurs', + 'sputa', + 'spyal', + 'spyre', + 'squab', + 'squaw', + 'squeg', + 'squid', + 'squit', + 'squiz', + 'stabs', + 'stade', + 'stags', + 'stagy', + 'staig', + 'stane', + 'stang', + 'staph', + 'staps', + 'starn', + 'starr', + 'stars', + 'stats', + 'staun', + 'staws', + 'stays', + 'stean', + 'stear', + 'stedd', + 'stede', + 'steds', + 'steek', + 'steem', + 'steen', + 'steil', + 'stela', + 'stele', + 'stell', + 'steme', + 'stems', + 'stend', + 'steno', + 'stens', + 'stent', + 'steps', + 'stept', + 'stere', + 'stets', + 'stews', + 'stewy', + 'steys', + 'stich', + 'stied', + 'sties', + 'stilb', + 'stile', + 'stime', + 'stims', + 'stimy', + 'stipa', + 'stipe', + 'stire', + 'stirk', + 'stirp', + 'stirs', + 'stive', + 'stivy', + 'stoae', + 'stoai', + 'stoas', + 'stoat', + 'stobs', + 'stoep', + 'stogy', + 'stoit', + 'stoln', + 'stoma', + 'stond', + 'stong', + 'stonk', + 'stonn', + 'stook', + 'stoor', + 'stope', + 'stops', + 'stopt', + 'stoss', + 'stots', + 'stott', + 'stoun', + 'stoup', + 'stour', + 'stown', + 'stowp', + 'stows', + 'strad', + 'strae', + 'strag', + 'strak', + 'strep', + 'strew', + 'stria', + 'strig', + 'strim', + 'strop', + 'strow', + 'stroy', + 'strum', + 'stubs', + 'stude', + 'studs', + 'stull', + 'stulm', + 'stumm', + 'stums', + 'stuns', + 'stupa', + 'stupe', + 'sture', + 'sturt', + 'styed', + 'styes', + 'styli', + 'stylo', + 'styme', + 'stymy', + 'styre', + 'styte', + 'subah', + 'subas', + 'subby', + 'suber', + 'subha', + 'succi', + 'sucks', + 'sucky', + 'sucre', + 'sudds', + 'sudor', + 'sudsy', + 'suede', + 'suent', + 'suers', + 'suete', + 'suets', + 'suety', + 'sugan', + 'sughs', + 'sugos', + 'suhur', + 'suids', + 'suint', + 'suits', + 'sujee', + 'sukhs', + 'sukuk', + 'sulci', + 'sulfa', + 'sulfo', + 'sulks', + 'sulph', + 'sulus', + 'sumis', + 'summa', + 'sumos', + 'sumph', + 'sumps', + 'sunis', + 'sunks', + 'sunna', + 'sunns', + 'sunup', + 'supes', + 'supra', + 'surah', + 'sural', + 'suras', + 'surat', + 'surds', + 'sured', + 'sures', + 'surfs', + 'surfy', + 'surgy', + 'surra', + 'sused', + 'suses', + 'susus', + 'sutor', + 'sutra', + 'sutta', + 'swabs', + 'swack', + 'swads', + 'swage', + 'swags', + 'swail', + 'swain', + 'swale', + 'swaly', + 'swamy', + 'swang', + 'swank', + 'swans', + 'swaps', + 'swapt', + 'sward', + 'sware', + 'swarf', + 'swart', + 'swats', + 'swayl', + 'sways', + 'sweal', + 'swede', + 'sweed', + 'sweel', + 'sweer', + 'swees', + 'sweir', + 'swelt', + 'swerf', + 'sweys', + 'swies', + 'swigs', + 'swile', + 'swims', + 'swink', + 'swipe', + 'swire', + 'swiss', + 'swith', + 'swits', + 'swive', + 'swizz', + 'swobs', + 'swole', + 'swoln', + 'swops', + 'swopt', + 'swots', + 'swoun', + 'sybbe', + 'sybil', + 'syboe', + 'sybow', + 'sycee', + 'syces', + 'sycon', + 'syens', + 'syker', + 'sykes', + 'sylis', + 'sylph', + 'sylva', + 'symar', + 'synch', + 'syncs', + 'synds', + 'syned', + 'synes', + 'synth', + 'syped', + 'sypes', + 'syphs', + 'syrah', + 'syren', + 'sysop', + 'sythe', + 'syver', + 'taals', + 'taata', + 'taber', + 'tabes', + 'tabid', + 'tabis', + 'tabla', + 'tabor', + 'tabun', + 'tabus', + 'tacan', + 'taces', + 'tacet', + 'tache', + 'tacho', + 'tachs', + 'tacks', + 'tacos', + 'tacts', + 'taels', + 'tafia', + 'taggy', + 'tagma', + 'tahas', + 'tahrs', + 'taiga', + 'taigs', + 'taiko', + 'tails', + 'tains', + 'taira', + 'taish', + 'taits', + 'tajes', + 'takas', + 'takes', + 'takhi', + 'takin', + 'takis', + 'takky', + 'talak', + 'talaq', + 'talar', + 'talas', + 'talcs', + 'talcy', + 'talea', + 'taler', + 'tales', + 'talks', + 'talky', + 'talls', + 'talma', + 'talpa', + 'taluk', + 'talus', + 'tamal', + 'tamed', + 'tames', + 'tamin', + 'tamis', + 'tammy', + 'tamps', + 'tanas', + 'tanga', + 'tangi', + 'tangs', + 'tanhs', + 'tanka', + 'tanks', + 'tanky', + 'tanna', + 'tansy', + 'tanti', + 'tanto', + 'tanty', + 'tapas', + 'taped', + 'tapen', + 'tapes', + 'tapet', + 'tapis', + 'tappa', + 'tapus', + 'taras', + 'tardo', + 'tared', + 'tares', + 'targa', + 'targe', + 'tarns', + 'taroc', + 'tarok', + 'taros', + 'tarps', + 'tarre', + 'tarry', + 'tarsi', + 'tarts', + 'tarty', + 'tasar', + 'tased', + 'taser', + 'tases', + 'tasks', + 'tassa', + 'tasse', + 'tasso', + 'tatar', + 'tater', + 'tates', + 'taths', + 'tatie', + 'tatou', + 'tatts', + 'tatus', + 'taube', + 'tauld', + 'tauon', + 'taupe', + 'tauts', + 'tavah', + 'tavas', + 'taver', + 'tawai', + 'tawas', + 'tawed', + 'tawer', + 'tawie', + 'tawse', + 'tawts', + 'taxed', + 'taxer', + 'taxes', + 'taxis', + 'taxol', + 'taxon', + 'taxor', + 'taxus', + 'tayra', + 'tazza', + 'tazze', + 'teade', + 'teads', + 'teaed', + 'teaks', + 'teals', + 'teams', + 'tears', + 'teats', + 'teaze', + 'techs', + 'techy', + 'tecta', + 'teels', + 'teems', + 'teend', + 'teene', + 'teens', + 'teeny', + 'teers', + 'teffs', + 'teggs', + 'tegua', + 'tegus', + 'tehrs', + 'teiid', + 'teils', + 'teind', + 'teins', + 'telae', + 'telco', + 'teles', + 'telex', + 'telia', + 'telic', + 'tells', + 'telly', + 'teloi', + 'telos', + 'temed', + 'temes', + 'tempi', + 'temps', + 'tempt', + 'temse', + 'tench', + 'tends', + 'tendu', + 'tenes', + 'tenge', + 'tenia', + 'tenne', + 'tenno', + 'tenny', + 'tenon', + 'tents', + 'tenty', + 'tenue', + 'tepal', + 'tepas', + 'tepoy', + 'terai', + 'teras', + 'terce', + 'terek', + 'teres', + 'terfe', + 'terfs', + 'terga', + 'terms', + 'terne', + 'terns', + 'terry', + 'terts', + 'tesla', + 'testa', + 'teste', + 'tests', + 'tetes', + 'teths', + 'tetra', + 'tetri', + 'teuch', + 'teugh', + 'tewed', + 'tewel', + 'tewit', + 'texas', + 'texes', + 'texts', + 'thack', + 'thagi', + 'thaim', + 'thale', + 'thali', + 'thana', + 'thane', + 'thang', + 'thans', + 'thanx', + 'tharm', + 'thars', + 'thaws', + 'thawy', + 'thebe', + 'theca', + 'theed', + 'theek', + 'thees', + 'thegn', + 'theic', + 'thein', + 'thelf', + 'thema', + 'thens', + 'theow', + 'therm', + 'thesp', + 'thete', + 'thews', + 'thewy', + 'thigs', + 'thilk', + 'thill', + 'thine', + 'thins', + 'thiol', + 'thirl', + 'thoft', + 'thole', + 'tholi', + 'thoro', + 'thorp', + 'thous', + 'thowl', + 'thrae', + 'thraw', + 'thrid', + 'thrip', + 'throe', + 'thuds', + 'thugs', + 'thuja', + 'thunk', + 'thurl', + 'thuya', + 'thymi', + 'thymy', + 'tians', + 'tiars', + 'tical', + 'ticca', + 'ticed', + 'tices', + 'tichy', + 'ticks', + 'ticky', + 'tiddy', + 'tided', + 'tides', + 'tiers', + 'tiffs', + 'tifos', + 'tifts', + 'tiges', + 'tigon', + 'tikas', + 'tikes', + 'tikis', + 'tikka', + 'tilak', + 'tiled', + 'tiler', + 'tiles', + 'tills', + 'tilly', + 'tilth', + 'tilts', + 'timbo', + 'timed', + 'times', + 'timon', + 'timps', + 'tinas', + 'tinct', + 'tinds', + 'tinea', + 'tined', + 'tines', + 'tinge', + 'tings', + 'tinks', + 'tinny', + 'tints', + 'tinty', + 'tipis', + 'tippy', + 'tired', + 'tires', + 'tirls', + 'tiros', + 'tirrs', + 'titch', + 'titer', + 'titis', + 'titre', + 'titty', + 'titup', + 'tiyin', + 'tiyns', + 'tizes', + 'tizzy', + 'toads', + 'toady', + 'toaze', + 'tocks', + 'tocky', + 'tocos', + 'todde', + 'toeas', + 'toffs', + 'toffy', + 'tofts', + 'tofus', + 'togae', + 'togas', + 'toged', + 'toges', + 'togue', + 'tohos', + 'toile', + 'toils', + 'toing', + 'toise', + 'toits', + 'tokay', + 'toked', + 'toker', + 'tokes', + 'tokos', + 'tolan', + 'tolar', + 'tolas', + 'toled', + 'toles', + 'tolls', + 'tolly', + 'tolts', + 'tolus', + 'tolyl', + 'toman', + 'tombs', + 'tomes', + 'tomia', + 'tommy', + 'tomos', + 'tondi', + 'tondo', + 'toned', + 'toner', + 'tones', + 'toney', + 'tongs', + 'tonka', + 'tonks', + 'tonne', + 'tonus', + 'tools', + 'tooms', + 'toons', + 'toots', + 'toped', + 'topee', + 'topek', + 'toper', + 'topes', + 'tophe', + 'tophi', + 'tophs', + 'topis', + 'topoi', + 'topos', + 'toppy', + 'toque', + 'torah', + 'toran', + 'toras', + 'torcs', + 'tores', + 'toric', + 'torii', + 'toros', + 'torot', + 'torrs', + 'torse', + 'torsi', + 'torsk', + 'torta', + 'torte', + 'torts', + 'tosas', + 'tosed', + 'toses', + 'toshy', + 'tossy', + 'toted', + 'toter', + 'totes', + 'totty', + 'touks', + 'touns', + 'tours', + 'touse', + 'tousy', + 'touts', + 'touze', + 'touzy', + 'towed', + 'towie', + 'towns', + 'towny', + 'towse', + 'towsy', + 'towts', + 'towze', + 'towzy', + 'toyed', + 'toyer', + 'toyon', + 'toyos', + 'tozed', + 'tozes', + 'tozie', + 'trabs', + 'trads', + 'tragi', + 'traik', + 'trams', + 'trank', + 'tranq', + 'trans', + 'trant', + 'trape', + 'traps', + 'trapt', + 'trass', + 'trats', + 'tratt', + 'trave', + 'trayf', + 'trays', + 'treck', + 'treed', + 'treen', + 'trees', + 'trefa', + 'treif', + 'treks', + 'trema', + 'trems', + 'tress', + 'trest', + 'trets', + 'trews', + 'treyf', + 'treys', + 'triac', + 'tride', + 'trier', + 'tries', + 'triff', + 'trigo', + 'trigs', + 'trike', + 'trild', + 'trill', + 'trims', + 'trine', + 'trins', + 'triol', + 'trior', + 'trios', + 'trips', + 'tripy', + 'trist', + 'troad', + 'troak', + 'troat', + 'trock', + 'trode', + 'trods', + 'trogs', + 'trois', + 'troke', + 'tromp', + 'trona', + 'tronc', + 'trone', + 'tronk', + 'trons', + 'trooz', + 'troth', + 'trots', + 'trows', + 'troys', + 'trued', + 'trues', + 'trugo', + 'trugs', + 'trull', + 'tryer', + 'tryke', + 'tryma', + 'tryps', + 'tsade', + 'tsadi', + 'tsars', + 'tsked', + 'tsuba', + 'tsubo', + 'tuans', + 'tuart', + 'tuath', + 'tubae', + 'tubar', + 'tubas', + 'tubby', + 'tubed', + 'tubes', + 'tucks', + 'tufas', + 'tuffe', + 'tuffs', + 'tufts', + 'tufty', + 'tugra', + 'tuile', + 'tuina', + 'tuism', + 'tuktu', + 'tules', + 'tulpa', + 'tulsi', + 'tumid', + 'tummy', + 'tumps', + 'tumpy', + 'tunas', + 'tunds', + 'tuned', + 'tuner', + 'tunes', + 'tungs', + 'tunny', + 'tupek', + 'tupik', + 'tuple', + 'tuque', + 'turds', + 'turfs', + 'turfy', + 'turks', + 'turme', + 'turms', + 'turns', + 'turnt', + 'turps', + 'turrs', + 'tushy', + 'tusks', + 'tusky', + 'tutee', + 'tutti', + 'tutty', + 'tutus', + 'tuxes', + 'tuyer', + 'twaes', + 'twain', + 'twals', + 'twank', + 'twats', + 'tways', + 'tweel', + 'tween', + 'tweep', + 'tweer', + 'twerk', + 'twerp', + 'twier', + 'twigs', + 'twill', + 'twilt', + 'twink', + 'twins', + 'twiny', + 'twire', + 'twirp', + 'twite', + 'twits', + 'twoer', + 'twyer', + 'tyees', + 'tyers', + 'tyiyn', + 'tykes', + 'tyler', + 'tymps', + 'tynde', + 'tyned', + 'tynes', + 'typal', + 'typed', + 'types', + 'typey', + 'typic', + 'typos', + 'typps', + 'typto', + 'tyran', + 'tyred', + 'tyres', + 'tyros', + 'tythe', + 'tzars', + 'udals', + 'udons', + 'ugali', + 'ugged', + 'uhlan', + 'uhuru', + 'ukase', + 'ulama', + 'ulans', + 'ulema', + 'ulmin', + 'ulnad', + 'ulnae', + 'ulnar', + 'ulnas', + 'ulpan', + 'ulvas', + 'ulyie', + 'ulzie', + 'umami', + 'umbel', + 'umber', + 'umble', + 'umbos', + 'umbre', + 'umiac', + 'umiak', + 'umiaq', + 'ummah', + 'ummas', + 'ummed', + 'umped', + 'umphs', + 'umpie', + 'umpty', + 'umrah', + 'umras', + 'unais', + 'unapt', + 'unarm', + 'unary', + 'unaus', + 'unbag', + 'unban', + 'unbar', + 'unbed', + 'unbid', + 'unbox', + 'uncap', + 'unces', + 'uncia', + 'uncos', + 'uncoy', + 'uncus', + 'undam', + 'undee', + 'undos', + 'undug', + 'uneth', + 'unfix', + 'ungag', + 'unget', + 'ungod', + 'ungot', + 'ungum', + 'unhat', + 'unhip', + 'unica', + 'units', + 'unjam', + 'unked', + 'unket', + 'unkid', + 'unlaw', + 'unlay', + 'unled', + 'unlet', + 'unlid', + 'unman', + 'unmew', + 'unmix', + 'unpay', + 'unpeg', + 'unpen', + 'unpin', + 'unred', + 'unrid', + 'unrig', + 'unrip', + 'unsaw', + 'unsay', + 'unsee', + 'unsew', + 'unsex', + 'unsod', + 'untax', + 'untin', + 'unwet', + 'unwit', + 'unwon', + 'upbow', + 'upbye', + 'updos', + 'updry', + 'upend', + 'upjet', + 'uplay', + 'upled', + 'uplit', + 'upped', + 'upran', + 'uprun', + 'upsee', + 'upsey', + 'uptak', + 'upter', + 'uptie', + 'uraei', + 'urali', + 'uraos', + 'urare', + 'urari', + 'urase', + 'urate', + 'urbex', + 'urbia', + 'urdee', + 'ureal', + 'ureas', + 'uredo', + 'ureic', + 'urena', + 'urent', + 'urged', + 'urger', + 'urges', + 'urial', + 'urite', + 'urman', + 'urnal', + 'urned', + 'urped', + 'ursae', + 'ursid', + 'urson', + 'urubu', + 'urvas', + 'users', + 'usnea', + 'usque', + 'usure', + 'usury', + 'uteri', + 'uveal', + 'uveas', + 'uvula', + 'vacua', + 'vaded', + 'vades', + 'vagal', + 'vagus', + 'vails', + 'vaire', + 'vairs', + 'vairy', + 'vakas', + 'vakil', + 'vales', + 'valis', + 'valse', + 'vamps', + 'vampy', + 'vanda', + 'vaned', + 'vanes', + 'vangs', + 'vants', + 'vaped', + 'vaper', + 'vapes', + 'varan', + 'varas', + 'vardy', + 'varec', + 'vares', + 'varia', + 'varix', + 'varna', + 'varus', + 'varve', + 'vasal', + 'vases', + 'vasts', + 'vasty', + 'vatic', + 'vatus', + 'vauch', + 'vaute', + 'vauts', + 'vawte', + 'vaxes', + 'veale', + 'veals', + 'vealy', + 'veena', + 'veeps', + 'veers', + 'veery', + 'vegas', + 'veges', + 'vegie', + 'vegos', + 'vehme', + 'veils', + 'veily', + 'veins', + 'veiny', + 'velar', + 'velds', + 'veldt', + 'veles', + 'vells', + 'velum', + 'venae', + 'venal', + 'vends', + 'vendu', + 'veney', + 'venge', + 'venin', + 'vents', + 'venus', + 'verbs', + 'verra', + 'verry', + 'verst', + 'verts', + 'vertu', + 'vespa', + 'vesta', + 'vests', + 'vetch', + 'vexed', + 'vexer', + 'vexes', + 'vexil', + 'vezir', + 'vials', + 'viand', + 'vibes', + 'vibex', + 'vibey', + 'viced', + 'vices', + 'vichy', + 'viers', + 'views', + 'viewy', + 'vifda', + 'viffs', + 'vigas', + 'vigia', + 'vilde', + 'viler', + 'villi', + 'vills', + 'vimen', + 'vinal', + 'vinas', + 'vinca', + 'vined', + 'viner', + 'vines', + 'vinew', + 'vinic', + 'vinos', + 'vints', + 'viold', + 'viols', + 'vired', + 'vireo', + 'vires', + 'virga', + 'virge', + 'virid', + 'virls', + 'virtu', + 'visas', + 'vised', + 'vises', + 'visie', + 'visne', + 'vison', + 'visto', + 'vitae', + 'vitas', + 'vitex', + 'vitro', + 'vitta', + 'vivas', + 'vivat', + 'vivda', + 'viver', + 'vives', + 'vizir', + 'vizor', + 'vleis', + 'vlies', + 'vlogs', + 'voars', + 'vocab', + 'voces', + 'voddy', + 'vodou', + 'vodun', + 'voema', + 'vogie', + 'voids', + 'voile', + 'voips', + 'volae', + 'volar', + 'voled', + 'voles', + 'volet', + 'volks', + 'volta', + 'volte', + 'volti', + 'volts', + 'volva', + 'volve', + 'vomer', + 'voted', + 'votes', + 'vouge', + 'voulu', + 'vowed', + 'vower', + 'voxel', + 'vozhd', + 'vraic', + 'vrils', + 'vroom', + 'vrous', + 'vrouw', + 'vrows', + 'vuggs', + 'vuggy', + 'vughs', + 'vughy', + 'vulgo', + 'vulns', + 'vulva', + 'vutty', + 'waacs', + 'wacke', + 'wacko', + 'wacks', + 'wadds', + 'waddy', + 'waded', + 'wader', + 'wades', + 'wadge', + 'wadis', + 'wadts', + 'waffs', + 'wafts', + 'waged', + 'wages', + 'wagga', + 'wagyu', + 'wahoo', + 'waide', + 'waifs', + 'waift', + 'wails', + 'wains', + 'wairs', + 'waite', + 'waits', + 'wakas', + 'waked', + 'waken', + 'waker', + 'wakes', + 'wakfs', + 'waldo', + 'walds', + 'waled', + 'waler', + 'wales', + 'walie', + 'walis', + 'walks', + 'walla', + 'walls', + 'wally', + 'walty', + 'wamed', + 'wames', + 'wamus', + 'wands', + 'waned', + 'wanes', + 'waney', + 'wangs', + 'wanks', + 'wanky', + 'wanle', + 'wanly', + 'wanna', + 'wants', + 'wanty', + 'wanze', + 'waqfs', + 'warbs', + 'warby', + 'wards', + 'wared', + 'wares', + 'warez', + 'warks', + 'warms', + 'warns', + 'warps', + 'warre', + 'warst', + 'warts', + 'wases', + 'washy', + 'wasms', + 'wasps', + 'waspy', + 'wasts', + 'watap', + 'watts', + 'wauff', + 'waugh', + 'wauks', + 'waulk', + 'wauls', + 'waurs', + 'waved', + 'waves', + 'wavey', + 'wawas', + 'wawes', + 'wawls', + 'waxed', + 'waxer', + 'waxes', + 'wayed', + 'wazir', + 'wazoo', + 'weald', + 'weals', + 'weamb', + 'weans', + 'wears', + 'webby', + 'weber', + 'wecht', + 'wedel', + 'wedgy', + 'weeds', + 'weeke', + 'weeks', + 'weels', + 'weems', + 'weens', + 'weeny', + 'weeps', + 'weepy', + 'weest', + 'weete', + 'weets', + 'wefte', + 'wefts', + 'weids', + 'weils', + 'weirs', + 'weise', + 'weize', + 'wekas', + 'welds', + 'welke', + 'welks', + 'welkt', + 'wells', + 'welly', + 'welts', + 'wembs', + 'wends', + 'wenge', + 'wenny', + 'wents', + 'weros', + 'wersh', + 'wests', + 'wetas', + 'wetly', + 'wexed', + 'wexes', + 'whamo', + 'whams', + 'whang', + 'whaps', + 'whare', + 'whata', + 'whats', + 'whaup', + 'whaur', + 'wheal', + 'whear', + 'wheen', + 'wheep', + 'wheft', + 'whelk', + 'whelm', + 'whens', + 'whets', + 'whews', + 'wheys', + 'whids', + 'whift', + 'whigs', + 'whilk', + 'whims', + 'whins', + 'whios', + 'whips', + 'whipt', + 'whirr', + 'whirs', + 'whish', + 'whiss', + 'whist', + 'whits', + 'whity', + 'whizz', + 'whomp', + 'whoof', + 'whoot', + 'whops', + 'whore', + 'whorl', + 'whort', + 'whoso', + 'whows', + 'whump', + 'whups', + 'whyda', + 'wicca', + 'wicks', + 'wicky', + 'widdy', + 'wides', + 'wiels', + 'wifed', + 'wifes', + 'wifey', + 'wifie', + 'wifty', + 'wigan', + 'wigga', + 'wiggy', + 'wikis', + 'wilco', + 'wilds', + 'wiled', + 'wiles', + 'wilga', + 'wilis', + 'wilja', + 'wills', + 'wilts', + 'wimps', + 'winds', + 'wined', + 'wines', + 'winey', + 'winge', + 'wings', + 'wingy', + 'winks', + 'winna', + 'winns', + 'winos', + 'winze', + 'wiped', + 'wiper', + 'wipes', + 'wired', + 'wirer', + 'wires', + 'wirra', + 'wised', + 'wises', + 'wisha', + 'wisht', + 'wisps', + 'wists', + 'witan', + 'wited', + 'wites', + 'withe', + 'withs', + 'withy', + 'wived', + 'wiver', + 'wives', + 'wizen', + 'wizes', + 'woads', + 'woald', + 'wocks', + 'wodge', + 'woful', + 'wojus', + 'woker', + 'wokka', + 'wolds', + 'wolfs', + 'wolly', + 'wolve', + 'wombs', + 'womby', + 'womyn', + 'wonga', + 'wongi', + 'wonks', + 'wonky', + 'wonts', + 'woods', + 'wooed', + 'woofs', + 'woofy', + 'woold', + 'wools', + 'woons', + 'woops', + 'woopy', + 'woose', + 'woosh', + 'wootz', + 'words', + 'works', + 'worms', + 'wormy', + 'worts', + 'wowed', + 'wowee', + 'woxen', + 'wrang', + 'wraps', + 'wrapt', + 'wrast', + 'wrate', + 'wrawl', + 'wrens', + 'wrick', + 'wried', + 'wrier', + 'wries', + 'writs', + 'wroke', + 'wroot', + 'wroth', + 'wryer', + 'wuddy', + 'wudus', + 'wulls', + 'wurst', + 'wuses', + 'wushu', + 'wussy', + 'wuxia', + 'wyled', + 'wyles', + 'wynds', + 'wynns', + 'wyted', + 'wytes', + 'xebec', + 'xenia', + 'xenic', + 'xenon', + 'xeric', + 'xerox', + 'xerus', + 'xoana', + 'xrays', + 'xylan', + 'xylem', + 'xylic', + 'xylol', + 'xylyl', + 'xysti', + 'xysts', + 'yaars', + 'yabas', + 'yabba', + 'yabby', + 'yacca', + 'yacka', + 'yacks', + 'yaffs', + 'yager', + 'yages', + 'yagis', + 'yahoo', + 'yaird', + 'yakka', + 'yakow', + 'yales', + 'yamen', + 'yampy', + 'yamun', + 'yangs', + 'yanks', + 'yapok', + 'yapon', + 'yapps', + 'yappy', + 'yarak', + 'yarco', + 'yards', + 'yarer', + 'yarfa', + 'yarks', + 'yarns', + 'yarrs', + 'yarta', + 'yarto', + 'yates', + 'yauds', + 'yauld', + 'yaups', + 'yawed', + 'yawey', + 'yawls', + 'yawns', + 'yawny', + 'yawps', + 'ybore', + 'yclad', + 'ycled', + 'ycond', + 'ydrad', + 'ydred', + 'yeads', + 'yeahs', + 'yealm', + 'yeans', + 'yeard', + 'years', + 'yecch', + 'yechs', + 'yechy', + 'yedes', + 'yeeds', + 'yeesh', + 'yeggs', + 'yelks', + 'yells', + 'yelms', + 'yelps', + 'yelts', + 'yenta', + 'yente', + 'yerba', + 'yerds', + 'yerks', + 'yeses', + 'yesks', + 'yests', + 'yesty', + 'yetis', + 'yetts', + 'yeuks', + 'yeuky', + 'yeven', + 'yeves', + 'yewen', + 'yexed', + 'yexes', + 'yfere', + 'yiked', + 'yikes', + 'yills', + 'yince', + 'yipes', + 'yippy', + 'yirds', + 'yirks', + 'yirrs', + 'yirth', + 'yites', + 'yitie', + 'ylems', + 'ylike', + 'ylkes', + 'ymolt', + 'ympes', + 'yobbo', + 'yobby', + 'yocks', + 'yodel', + 'yodhs', + 'yodle', + 'yogas', + 'yogee', + 'yoghs', + 'yogic', + 'yogin', + 'yogis', + 'yoick', + 'yojan', + 'yoked', + 'yokel', + 'yoker', + 'yokes', + 'yokul', + 'yolks', + 'yolky', + 'yomim', + 'yomps', + 'yonic', + 'yonis', + 'yonks', + 'yoofs', + 'yoops', + 'yores', + 'yorks', + 'yorps', + 'youks', + 'yourn', + 'yours', + 'yourt', + 'youse', + 'yowed', + 'yowes', + 'yowie', + 'yowls', + 'yowza', + 'yrapt', + 'yrent', + 'yrivd', + 'yrneh', + 'ysame', + 'ytost', + 'yuans', + 'yucas', + 'yucca', + 'yucch', + 'yucko', + 'yucks', + 'yucky', + 'yufts', + 'yugas', + 'yuked', + 'yukes', + 'yukky', + 'yukos', + 'yulan', + 'yules', + 'yummo', + 'yummy', + 'yumps', + 'yupon', + 'yuppy', + 'yurta', + 'yurts', + 'yuzus', + 'zabra', + 'zacks', + 'zaida', + 'zaidy', + 'zaire', + 'zakat', + 'zaman', + 'zambo', + 'zamia', + 'zanja', + 'zante', + 'zanza', + 'zanze', + 'zappy', + 'zarfs', + 'zaris', + 'zatis', + 'zaxes', + 'zayin', + 'zazen', + 'zeals', + 'zebec', + 'zebub', + 'zebus', + 'zedas', + 'zeins', + 'zendo', + 'zerda', + 'zerks', + 'zeros', + 'zests', + 'zetas', + 'zexes', + 'zezes', + 'zhomo', + 'zibet', + 'ziffs', + 'zigan', + 'zilas', + 'zilch', + 'zilla', + 'zills', + 'zimbi', + 'zimbs', + 'zinco', + 'zincs', + 'zincy', + 'zineb', + 'zines', + 'zings', + 'zingy', + 'zinke', + 'zinky', + 'zippo', + 'zippy', + 'ziram', + 'zitis', + 'zizel', + 'zizit', + 'zlote', + 'zloty', + 'zoaea', + 'zobos', + 'zobus', + 'zocco', + 'zoeae', + 'zoeal', + 'zoeas', + 'zoism', + 'zoist', + 'zombi', + 'zonae', + 'zonda', + 'zoned', + 'zoner', + 'zones', + 'zonks', + 'zooea', + 'zooey', + 'zooid', + 'zooks', + 'zooms', + 'zoons', + 'zooty', + 'zoppa', + 'zoppo', + 'zoril', + 'zoris', + 'zorro', + 'zouks', + 'zowee', + 'zowie', + 'zulus', + 'zupan', + 'zupas', + 'zuppa', + 'zurfs', + 'zuzim', + 'zygal', + 'zygon', + 'zymes', + 'zymic', +]); diff --git a/apps/sveltekit/static/favicon.png b/apps/sveltekit/static/favicon.png new file mode 100644 index 0000000..825b9e6 Binary files /dev/null and b/apps/sveltekit/static/favicon.png differ diff --git a/apps/sveltekit/static/robots.txt b/apps/sveltekit/static/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/apps/sveltekit/static/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/apps/sveltekit/svelte.config.js b/apps/sveltekit/svelte.config.js new file mode 100644 index 0000000..d977679 --- /dev/null +++ b/apps/sveltekit/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/kit/vite'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter(), + }, +}; + +export default config; diff --git a/apps/sveltekit/tsconfig.json b/apps/sveltekit/tsconfig.json new file mode 100644 index 0000000..794b95b --- /dev/null +++ b/apps/sveltekit/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/apps/sveltekit/vite.config.ts b/apps/sveltekit/vite.config.ts new file mode 100644 index 0000000..2e920e4 --- /dev/null +++ b/apps/sveltekit/vite.config.ts @@ -0,0 +1,6 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()], +}); diff --git a/apps/vue/.gitignore b/apps/vue/.gitignore new file mode 100644 index 0000000..38adffa --- /dev/null +++ b/apps/vue/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/apps/vue/README.md b/apps/vue/README.md new file mode 100644 index 0000000..1c3242a --- /dev/null +++ b/apps/vue/README.md @@ -0,0 +1,27 @@ +# Vue 3 barebone demo application for Vercel Speed-insights + +## Setup + +This application was created with the following commands: + +- `cd apps` +- `npm create vue@latest vue` (answer no to all questions) +- `cd vue` +- manually edit package.json to add `"@vercel/speed-insights": "workspace:*"` dependency +- `pnpm i` + +Then we imported and used `` component in `src/App.vue` file: + +```vue + + + +``` + +## Usage + +Start it with `cd apps/vue` + `pnpm dev` and browse to [http://localhost:5173](http://localhost:5173) diff --git a/apps/vue/index.html b/apps/vue/index.html new file mode 100644 index 0000000..e631329 --- /dev/null +++ b/apps/vue/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/apps/vue/package.json b/apps/vue/package.json new file mode 100644 index 0000000..35906ad --- /dev/null +++ b/apps/vue/package.json @@ -0,0 +1,18 @@ +{ + "name": "vue", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "vite build", + "dev": "vite", + "preview": "vite preview" + }, + "dependencies": { + "@vercel/speed-insights": "workspace:*", + "vue": "^3.3.4" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.4.0", + "vite": "^4.4.11" + } +} diff --git a/apps/vue/public/favicon.ico b/apps/vue/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/apps/vue/public/favicon.ico differ diff --git a/apps/vue/src/App.vue b/apps/vue/src/App.vue new file mode 100644 index 0000000..f17b1f4 --- /dev/null +++ b/apps/vue/src/App.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/apps/vue/src/assets/base.css b/apps/vue/src/assets/base.css new file mode 100644 index 0000000..8816868 --- /dev/null +++ b/apps/vue/src/assets/base.css @@ -0,0 +1,86 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: + color 0.5s, + background-color 0.5s; + line-height: 1.6; + font-family: + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/apps/vue/src/assets/logo.svg b/apps/vue/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/apps/vue/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/apps/vue/src/assets/main.css b/apps/vue/src/assets/main.css new file mode 100644 index 0000000..e8667cd --- /dev/null +++ b/apps/vue/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} + +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} diff --git a/apps/vue/src/components/HelloWorld.vue b/apps/vue/src/components/HelloWorld.vue new file mode 100644 index 0000000..c73be94 --- /dev/null +++ b/apps/vue/src/components/HelloWorld.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/apps/vue/src/main.js b/apps/vue/src/main.js new file mode 100644 index 0000000..b05b45f --- /dev/null +++ b/apps/vue/src/main.js @@ -0,0 +1,6 @@ +import './assets/main.css'; + +import { createApp } from 'vue'; +import App from './App.vue'; + +createApp(App).mount('#app'); diff --git a/apps/vue/vite.config.js b/apps/vue/vite.config.js new file mode 100644 index 0000000..0abd655 --- /dev/null +++ b/apps/vue/vite.config.js @@ -0,0 +1,14 @@ +import { fileURLToPath, URL } from 'node:url'; + +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, +}); diff --git a/lint-staged.config.js b/lint-staged.config.js new file mode 100644 index 0000000..cadb936 --- /dev/null +++ b/lint-staged.config.js @@ -0,0 +1,5 @@ +module.exports = { + '**/*.js?(x)': 'prettier --write --ignore-unknown', + '**/*.ts?(x)': 'prettier --write --ignore-unknown', + '*.json': 'prettier --write --ignore-unknown', +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..4065596 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "speed-insights", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel/speed-insights.git" + }, + "license": "Apache-2.0", + "scripts": { + "prepare": "husky install" + }, + "prettier": "@vercel/style-guide/prettier", + "dependencies": { + "lint-staged": "^14.0.1" + }, + "devDependencies": { + "@vercel/style-guide": "^5.0.1", + "husky": "^8.0.3", + "prettier": "3.0.3", + "typescript": "^5.2.2" + }, + "packageManager": "pnpm@8.6.5" +} diff --git a/packages/web/.eslintrc.cjs b/packages/web/.eslintrc.cjs new file mode 100644 index 0000000..1cf9818 --- /dev/null +++ b/packages/web/.eslintrc.cjs @@ -0,0 +1,7 @@ +module.exports = { + extends: '../../.eslintrc.cjs', + rules: { + 'tsdoc/syntax': 'off', + }, + ignorePatterns: ['jest.setup.ts'], +}; diff --git a/packages/web/.npmignore b/packages/web/.npmignore new file mode 100644 index 0000000..e831038 --- /dev/null +++ b/packages/web/.npmignore @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/packages/web/LICENSE b/packages/web/LICENSE new file mode 100644 index 0000000..3eb9904 --- /dev/null +++ b/packages/web/LICENSE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + +(a) You must give any other recipients of the Work or +Derivative Works a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works +that You distribute, all copyright, patent, trademark, and +attribution notices from the Source form of the Work, +excluding those notices that do not pertain to any part of +the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained +within such NOTICE file, excluding those notices that do not +pertain to any part of the Derivative Works, in at least one +of the following places: within a NOTICE text file distributed +as part of the Derivative Works; within the Source form or +documentation, if provided along with the Derivative Works; or, +within a display generated by the Derivative Works, if and +wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and +do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside +or as an addendum to the NOTICE text from the Work, provided +that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +Copyright 2023 Vercel, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/web/README.md b/packages/web/README.md new file mode 100644 index 0000000..4d38a03 --- /dev/null +++ b/packages/web/README.md @@ -0,0 +1,47 @@ +![Speed Insights](https://github.com/vercel/speed-insights/blob/main/.github/banner.png) + +
Vercel Speed Insights
+
Performance insights for your website
+
+
+Website + · +Documentation + · +Twitter +
+ +## Overview + +`@vercel/speed-insights` automatically tracks web vitals and other performance metrics for your website. + +This package does **not** track data in development mode. + +It has 1st class integration with: + +| Framework | Package | +| --------- | ---------------------------------- | +| Next.js | `@vercel/speed-insights/next` | +| Nuxt | `@vercel/speed-insights/nuxt` | +| Sveltekit | `@vercel/speed-insights/sveltekit` | +| React | `@vercel/speed-insights/react` | +| Vue | `@vercel/speed-insights/vue` | + +It also supports other frameworks, vanilla JS and static websites. + +## Quickstart + +1. Enable Vercel Speed Insights for a project in the [Vercel Dashboard](https://vercel.com/d?to=%2F%5Bteam%5D%2F%5Bproject%5D%2Fspeed-insights&title=Open+Web+Analytics). +2. Add the `@vercel/speed-insights` package to your project +3. Inject Speed Insights to your app + + - If you are using **Next.js**, **React**, **Nuxt** or **Vue** you can use the framework-specific `` component to inject the script into your app. + - If you are using **Sveltekit**, you can use the `injectSpeedInsights()` function `@vercel/speed-insights/sveltekit` in your top-level `+layout.svelte` file. + - For other frameworks, you can use the `inject` function add the tracking script to your app. + - If you want to use Vercel Speed Insights on a static site without npm, follow the instructions in the [documentation](https://vercel.com/docs/speed-insights/quickstart). + +4. Deploy your app to Vercel and see data flowing in. + +## Documentation + +Find more details about this package in our [documentation](https://vercel.com/docs/speed-insights/quickstart). diff --git a/packages/web/jest.config.js b/packages/web/jest.config.js new file mode 100644 index 0000000..f45b9dd --- /dev/null +++ b/packages/web/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + testEnvironment: 'jsdom', + transform: { + '^.+\\.(t|j)sx?$': '@swc/jest', + }, + coverageReporters: ['text', 'html'], + setupFilesAfterEnv: ['/jest.setup.ts'], + reporters: ['default', 'github-actions'], +}; diff --git a/packages/web/jest.setup.ts b/packages/web/jest.setup.ts new file mode 100644 index 0000000..79944f0 --- /dev/null +++ b/packages/web/jest.setup.ts @@ -0,0 +1,6 @@ +import '@testing-library/jest-dom'; + +beforeEach(() => { + // reset dom before each test + document.getElementsByTagName('html')[0].innerHTML = ''; +}); diff --git a/packages/web/package.json b/packages/web/package.json new file mode 100644 index 0000000..945d448 --- /dev/null +++ b/packages/web/package.json @@ -0,0 +1,108 @@ +{ + "name": "@vercel/speed-insights", + "version": "1.0.0", + "description": "Speed Insights is a tool for measuring web performance and providing suggestions for improvement.", + "keywords": [ + "speed-insights", + "vercel" + ], + "repository": { + "url": "github:vercel/speed-insights", + "directory": "packages/web" + }, + "license": "Apache-2.0", + "exports": { + "./package.json": "./package.json", + ".": { + "browser": "./dist/index.mjs", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./next": { + "browser": "./dist/next/index.mjs", + "import": "./dist/next/index.mjs", + "require": "./dist/next/index.js" + }, + "./nuxt": { + "browser": "./dist/nuxt/index.mjs", + "import": "./dist/nuxt/index.mjs", + "require": "./dist/nuxt/index.js" + }, + "./react": { + "browser": "./dist/react/index.mjs", + "import": "./dist/react/index.mjs", + "require": "./dist/react/index.js" + }, + "./remix": { + "browser": "./dist/remix/index.mjs", + "import": "./dist/remix/index.mjs", + "require": "./dist/remix/index.js" + }, + "./sveltekit": { + "svelte": "./dist/sveltekit/index.mjs", + "types": "./dist/sveltekit/index.d.ts" + }, + "./vue": { + "browser": "./dist/vue/index.mjs", + "import": "./dist/vue/index.mjs", + "require": "./dist/vue/index.js" + } + }, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "typesVersions": { + "*": { + "*": [ + "dist/index.d.ts" + ], + "react": [ + "dist/react/index.d.ts" + ], + "next": [ + "dist/next/index.d.ts" + ], + "nuxt": [ + "dist/nuxt/index.d.ts" + ], + "remix": [ + "dist/remix/index.d.ts" + ], + "sveltekit": [ + "dist/sveltekit/index.d.ts" + ], + "vue": [ + "dist/vue/index.d.ts" + ] + } + }, + "scripts": { + "build": "tsup ", + "dev": "tsup --watch", + "postinstall": "node scripts/postinstall.mjs", + "lint": "eslint .", + "lint-fix": "eslint . --fix", + "test": "jest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@remix-run/react": "^2.0.1", + "@sveltejs/kit": "^1.20.4", + "@swc/core": "^1.3.82", + "@swc/jest": "^0.2.29", + "@testing-library/jest-dom": "^6.1.2", + "@testing-library/react": "^14.0.0", + "@types/jest": "^29.5.4", + "@types/node": "^20.5.9", + "@types/react": "^18.2.21", + "copyfiles": "^2.4.1", + "jest": "^29.6.4", + "jest-environment-jsdom": "^29.6.4", + "next": "^13.4.19", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "svelte": "^4.0.5", + "tsup": "7.2.0", + "vue": "^3.3.4", + "vue-router": "^4.2.5" + } +} diff --git a/packages/web/scripts/postinstall.mjs b/packages/web/scripts/postinstall.mjs new file mode 100644 index 0000000..23fa409 --- /dev/null +++ b/packages/web/scripts/postinstall.mjs @@ -0,0 +1,86 @@ +/* eslint-disable no-undef -- Allow the use `process` */ +/* eslint-disable no-console -- Allow the use of `console` */ +import fs from 'node:fs'; +import path from 'node:path'; + +const customPath = process.argv[2]; +const projectDir = customPath || path.resolve(process.cwd()); + +// Check .env files for the presence of the analyticsId key +function findEnvFileWithAnalyticsId() { + const files = ['.env.local', '.env.development.local', '.env']; + const envFile = files.find((file) => { + const envPath = path.join(projectDir, file); + if (!fs.existsSync(envPath)) { + return false; + } + + const envContent = fs.readFileSync(envPath, 'utf-8'); + + return envContent.includes('VERCEL_ANALYTICS_ID'); + }); + + return envFile; +} + +function isSpeedInsightsInstalled() { + const packageJsonPath = path.join(projectDir, 'package.json'); + + if (!fs.existsSync(packageJsonPath)) { + console.error('Error: package.json not found in the current directory.'); + return false; + } + + const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8'); + const packageJson = JSON.parse(packageJsonContent); + + if (!packageJson.dependencies) { + return false; + } + + return Boolean(packageJson.dependencies['@vercel/speed-insights']); +} + +function isAnalyticsIdInNextConfig() { + const jsConfigPath = path.join(projectDir, 'next.config.js'); + const mjsConfigPath = path.join(projectDir, 'next.config.mjs'); + + let configFile; + + if (fs.existsSync(jsConfigPath)) { + configFile = jsConfigPath; + } else if (fs.existsSync(mjsConfigPath)) { + configFile = mjsConfigPath; + } else { + return; + } + + const configContent = fs.readFileSync(configFile, 'utf-8'); + + return configContent.includes('analyticsId'); +} + +function main() { + if (!isSpeedInsightsInstalled()) { + // No @vercel/speed-insights installed, we don't need to continue + return; + } + + const isInConfig = isAnalyticsIdInNextConfig(); + const envFile = findEnvFileWithAnalyticsId(); + + if (isInConfig) { + console.warn( + '\x1b[31m', + `Please remove 'analyticsId' from your next.config.js file.`, + ); + } + if (envFile) { + console.log( + '\x1b[31m', + `Please remove 'VERCEL_ANALYTICS_ID' from your ${envFile} file.`, + ); + } +} + +main(); diff --git a/packages/web/src/generic.ts b/packages/web/src/generic.ts new file mode 100644 index 0000000..df2e47c --- /dev/null +++ b/packages/web/src/generic.ts @@ -0,0 +1,91 @@ +import { name as packageName, version } from '../package.json'; +import { initQueue } from './queue'; +import type { SpeedInsightsProps } from './types'; +import { isBrowser, isDevelopment, computeRoute } from './utils'; + +const SCRIPT_URL = `https://va.vercel-scripts.com/v1/speed-insights`; +const PROD_SCRIPT_URL = `${SCRIPT_URL}/script.js`; +const DEV_SCRIPT_URL = `${SCRIPT_URL}/script.debug.js`; +const PROXY_SCRIPT_URL = `/_vercel/speed-insights/script.js`; + +/** + * Injects the Vercel Speed Insights script into the page head and starts tracking page views. Read more in our [documentation](https://vercel.com/docs/speed-insights). + * @param [props] - Speed Insights options. + * @param [props.debug] - Whether to enable debug logging in development. Defaults to `true`. + * @param [props.beforeSend] - A middleware function to modify events before they are sent. Should return the event object or `null` to cancel the event. + * @param [props.sampleRate] - When setting to 0.5, 50% of the events will be sent to Vercel Speed Insights. Defaults to `1`. + * @param [props.route] - The dynamic route of the page. + * @param [props.dsn] - The DSN of the project to send events to. Only required when self-hosting. + */ +function injectSpeedInsights( + props: SpeedInsightsProps & { + framework?: string; + }, +): { + setRoute: (route: string | null) => void; +} | null { + // When route is null, it means that pages router is not ready yet. Will resolve soon + if (!isBrowser() || props.route === null) return null; + + initQueue(); + + const isSelfHosted = Boolean(props.dsn); + + const productionScript = isSelfHosted ? PROD_SCRIPT_URL : PROXY_SCRIPT_URL; + + const src = + props.scriptSrc || (isDevelopment() ? DEV_SCRIPT_URL : productionScript); + + if (document.head.querySelector(`script[src*="${src}"]`)) return null; + + if (props.beforeSend) { + window.si?.('beforeSend', props.beforeSend); + } + + const script = document.createElement('script'); + script.src = src; + script.defer = true; + script.dataset.sdkn = + packageName + (props.framework ? `/${props.framework}` : ''); + script.dataset.sdkv = version; + + if (props.sampleRate) { + script.dataset.sampleRate = props.sampleRate.toString(); + } + if (props.route) { + script.dataset.route = props.route; + } + if (props.endpoint) { + script.dataset.endpoint = props.endpoint; + } + if (props.dsn) { + script.dataset.dsn = props.dsn; + } + if (isDevelopment() && props.debug === false) { + script.dataset.debug = 'false'; + } + + script.onerror = (): void => { + // eslint-disable-next-line no-console -- Logging is okay here + console.log( + `[Vercel Speed Insights] Failed to load script from ${src}. Please check if any content blockers are enabled and try again.`, + ); + }; + + document.head.appendChild(script); + + return { + setRoute: (route: string | null): void => { + script.dataset.route = route ?? undefined; + }, + }; +} + +export { injectSpeedInsights, computeRoute }; +export type { SpeedInsightsProps }; + +// eslint-disable-next-line import/no-default-export -- Allow default export +export default { + injectSpeedInsights, + computeRoute, +}; diff --git a/packages/web/src/nextjs/index.tsx b/packages/web/src/nextjs/index.tsx new file mode 100644 index 0000000..1274ad5 --- /dev/null +++ b/packages/web/src/nextjs/index.tsx @@ -0,0 +1,20 @@ +import React, { Suspense } from 'react'; +import { SpeedInsights as SpeedInsightsScript } from '../react'; +import type { SpeedInsightsProps } from '../types'; +import { useRoute } from './utils'; + +type Props = Omit; + +function SpeedInsightsComponent(props: Props): React.ReactElement { + const route = useRoute(); + + return ; +} + +export function SpeedInsights(props: Props): React.ReactElement { + return ( + + + + ); +} diff --git a/packages/web/src/nextjs/utils.ts b/packages/web/src/nextjs/utils.ts new file mode 100644 index 0000000..0e3a03c --- /dev/null +++ b/packages/web/src/nextjs/utils.ts @@ -0,0 +1,22 @@ +'use client'; +import { useMemo } from 'react'; +import { useParams, usePathname, useSearchParams } from 'next/navigation.js'; +import { computeRoute } from '../utils'; + +export const useRoute = (): string | null => { + const params = useParams(); + const searchParams = useSearchParams(); + const path = usePathname(); + + const finalParams = useMemo(() => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- can be null on pages router + if (!params) return null; + if (Object.keys(params).length !== 0) { + return params; + } + // For pages router, we need to use `searchParams` because `params` is an empty object + return { ...Object.fromEntries(searchParams.entries()) }; + }, [params, searchParams]); + + return computeRoute(path, finalParams); +}; diff --git a/packages/web/src/nuxt/index.ts b/packages/web/src/nuxt/index.ts new file mode 100644 index 0000000..df5d44b --- /dev/null +++ b/packages/web/src/nuxt/index.ts @@ -0,0 +1,4 @@ +import { createComponent } from '../vue/create-component'; + +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- vue's defineComponent return type is any +export const SpeedInsights = createComponent('nuxt'); diff --git a/packages/web/src/queue.ts b/packages/web/src/queue.ts new file mode 100644 index 0000000..3830079 --- /dev/null +++ b/packages/web/src/queue.ts @@ -0,0 +1,8 @@ +export const initQueue = (): void => { + // initialize va until script is loaded + if (window.si) return; + + window.si = function a(...params): void { + (window.siq = window.siq || []).push(params); + }; +}; diff --git a/packages/web/src/react/index.tsx b/packages/web/src/react/index.tsx new file mode 100644 index 0000000..4b9cb58 --- /dev/null +++ b/packages/web/src/react/index.tsx @@ -0,0 +1,29 @@ +'use client'; +import { useEffect, useRef } from 'react'; +import type { SpeedInsightsProps } from '../types'; +import { computeRoute, injectSpeedInsights } from '../generic'; + +export function SpeedInsights( + props: SpeedInsightsProps & { + framework?: string; + }, +): JSX.Element | null { + const setScriptRoute = useRef<((path: string) => void) | null>(null); + useEffect(() => { + if (!setScriptRoute.current) { + const script = injectSpeedInsights({ + framework: props.framework || 'react', + ...props, + }); + if (script) { + setScriptRoute.current = script.setRoute; + } + } else if (props.route) { + setScriptRoute.current(props.route); + } + }, [props.route]); + + return null; +} + +export { computeRoute }; diff --git a/packages/web/src/remix/index.tsx b/packages/web/src/remix/index.tsx new file mode 100644 index 0000000..f743233 --- /dev/null +++ b/packages/web/src/remix/index.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { SpeedInsights as SpeedInsightsScript } from '../react'; +import type { SpeedInsightsProps } from '../types'; +import { useRoute } from './utils'; + +export function SpeedInsights( + props: Omit, +): JSX.Element { + const route = useRoute(); + + return ( + + ); +} diff --git a/packages/web/src/remix/utils.ts b/packages/web/src/remix/utils.ts new file mode 100644 index 0000000..22c81ac --- /dev/null +++ b/packages/web/src/remix/utils.ts @@ -0,0 +1,9 @@ +import { useLocation, useParams } from '@remix-run/react'; +import { computeRoute } from '../utils'; + +export const useRoute = (): string | null => { + const params = useParams(); + const location = useLocation(); + + return computeRoute(location.pathname, params as never); +}; diff --git a/packages/web/src/sveltekit/index.ts b/packages/web/src/sveltekit/index.ts new file mode 100644 index 0000000..2158e50 --- /dev/null +++ b/packages/web/src/sveltekit/index.ts @@ -0,0 +1,26 @@ +import { get } from 'svelte/store'; +import { + injectSpeedInsights as genericInject, + type SpeedInsightsProps, +} from '../generic'; +import { page } from '$app/stores'; +import { browser } from '$app/environment'; +import type {} from '@sveltejs/kit'; // don't remove, ensures ambient types for $app/* are loaded + +export function injectSpeedInsights(props?: SpeedInsightsProps): void { + if (browser) { + const speedInsights = genericInject({ + route: get(page).route.id, + ...props, + framework: 'sveltekit', + }); + + if (speedInsights) { + page.subscribe((value) => { + if (value.route.id) { + speedInsights.setRoute(value.route.id); + } + }); + } + } +} diff --git a/packages/web/src/types.ts b/packages/web/src/types.ts new file mode 100644 index 0000000..373f5dc --- /dev/null +++ b/packages/web/src/types.ts @@ -0,0 +1,44 @@ +export interface SpeedInsightsProps { + dsn?: string; + sampleRate?: number; // Only send a percentage of events to the server to reduce costs + route?: string | null; // The dynamic path if there is any (e.g. /blog/[slug]) otherwise the static path + beforeSend?: BeforeSendMiddleware; + debug?: boolean; + + scriptSrc?: string; + endpoint?: string; +} + +export type EventTypes = 'vital'; + +export interface Event { + type: EventTypes; + url: string; +} + +export type BeforeSendMiddleware = ( + data: Event, + // Should we be more strict here? Compiler won't help a lot if it's that loose +) => Event | null | undefined | false; + +export interface Functions { + beforeSend?: BeforeSendMiddleware; +} + +export interface SpeedInsights { + queue: [T, Functions[T]][]; + addAction: (action: T, data: Functions[T]) => void; +} + +declare global { + interface Window { + // Base interface + /** Base interface to track events */ + si?: SpeedInsights['addAction']; + /** Queue for speed insights datapoints, before the library is loaded */ + siq?: SpeedInsights['queue']; + + sil?: boolean; + // vam?: Mode; + } +} diff --git a/packages/web/src/utils.test.ts b/packages/web/src/utils.test.ts new file mode 100644 index 0000000..07573c1 --- /dev/null +++ b/packages/web/src/utils.test.ts @@ -0,0 +1,98 @@ +import { computeRoute } from './utils'; + +describe('utils', () => { + describe('computeRoute', () => { + it('returns unchanged pathname if no pathParams provided', () => { + expect(computeRoute('/vercel/next-site/analytics', null)).toBe( + '/vercel/next-site/analytics', + ); + }); + + it('returns null for null pathname', () => { + expect(computeRoute(null, {})).toBe(null); + }); + + it('replaces segments', () => { + const input = '/vercel/next-site/analytics'; + const params = { + teamSlug: 'vercel', + project: 'next-site', + }; + const expected = '/[teamSlug]/[project]/analytics'; + expect(computeRoute(input, params)).toBe(expected); + }); + + it('replaces segments even one param is not used', () => { + const input = '/vercel/next-site/analytics'; + const params = { + lang: 'en', + teamSlug: 'vercel', + project: 'next-site', + }; + const expected = '/[teamSlug]/[project]/analytics'; + expect(computeRoute(input, params)).toBe(expected); + }); + + it('must not replace partial segments', () => { + const input = '/next-site/vercel-site'; + const params = { + teamSlug: 'vercel', + }; + const expected = '/next-site/vercel-site'; // remains unchanged because "vercel" is a partial match + expect(computeRoute(input, params)).toBe(expected); + }); + + it('handles array segments', () => { + const input = '/en/us/next-site'; + const params = { + langs: ['en', 'us'], + teamSlug: 'vercel', + }; + const expected = '/[...langs]/next-site'; + expect(computeRoute(input, params)).toBe(expected); + }); + + it('handles special characters in url', () => { + const input = '/123/test(test'; + const params = { + teamSlug: '123', + project: 'test(test', + }; + + const expected = '/[teamSlug]/[project]'; + expect(computeRoute(input, params)).toBe(expected); + }); + + it('handles special more characters', () => { + const input = '/123/tes\\t(test/3.*'; + const params = { + teamSlug: '123', + }; + + const expected = '/[teamSlug]/tes\\t(test/3.*'; + expect(computeRoute(input, params)).toBe(expected); + }); + + describe('edge case handling (same values for multiple params)', () => { + it('replaces based on the priority of the pathParams keys', () => { + const input = '/test/test'; + const params = { + teamSlug: 'test', + project: 'test', + }; + const expected = '/[teamSlug]/[project]'; // 'teamSlug' takes priority over 'project' based on their order in the params object + expect(computeRoute(input, params)).toBe(expected); + }); + + it('handles reversed priority', () => { + const input = '/test/test'; + const params = { + project: 'test', + teamSlug: 'test', + }; + const expected = '/[project]/[teamSlug]'; // 'project' takes priority over 'teamSlug' here due to the reversed order in the params object + expect(computeRoute(input, params)).toBe(expected); + }); + }); + }); +}); diff --git a/packages/web/src/utils.ts b/packages/web/src/utils.ts new file mode 100644 index 0000000..f1ea298 --- /dev/null +++ b/packages/web/src/utils.ts @@ -0,0 +1,55 @@ +export function isBrowser(): boolean { + return typeof window !== 'undefined'; +} + +function detectEnvironment(): 'development' | 'production' { + try { + const env = process.env.NODE_ENV; + if (env === 'development' || env === 'test') { + return 'development'; + } + } catch (e) { + // do nothing, this is okay + } + return 'production'; +} + +export function isProduction(): boolean { + return detectEnvironment() === 'production'; +} + +export function isDevelopment(): boolean { + return detectEnvironment() === 'development'; +} + +export function computeRoute( + pathname: string | null, + pathParams: Record | null, +): string | null { + if (!pathname || !pathParams) { + return pathname; + } + + let result = pathname; + + try { + for (const [key, valueOrArray] of Object.entries(pathParams)) { + const isValueArray = Array.isArray(valueOrArray); + const value = isValueArray ? valueOrArray.join('/') : valueOrArray; + const expr = isValueArray ? `...${key}` : key; + + const matcher = new RegExp(`/${escapeRegExp(value)}(?=[/?#]|$)`); + if (matcher.test(result)) { + result = result.replace(matcher, `/[${expr}]`); + } + } + + return result; + } catch (e) { + return pathname; + } +} + +function escapeRegExp(string: string): string { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} diff --git a/packages/web/src/vue/create-component.ts b/packages/web/src/vue/create-component.ts new file mode 100644 index 0000000..657c79b --- /dev/null +++ b/packages/web/src/vue/create-component.ts @@ -0,0 +1,37 @@ +import { defineComponent, watch } from 'vue'; +// for barebone vue project, vite will issue a warning since 'vue-router' import can't be resolved, +import { useRoute } from 'vue-router'; +import { injectSpeedInsights, type SpeedInsightsProps } from '../generic'; +import { computeRoute } from '../utils'; + +export function createComponent( + framework = 'vue', +): ReturnType { + return defineComponent({ + props: [ + 'dsn', + 'sampleRate', + 'beforeSend', + 'debug', + 'scriptSrc', + 'endpoint', + ], + setup(props: Omit) { + const route = useRoute(); + const configure = injectSpeedInsights({ ...props, framework }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- route is undefined for barebone vue project + if (route && configure) { + const changeRoute = (): void => { + configure.setRoute(computeRoute(route.path, route.params)); + }; + + changeRoute(); + watch(route, changeRoute); + } + }, + // Vue component must have a render function, or a template. + render() { + return null; + }, + }); +} diff --git a/packages/web/src/vue/index.ts b/packages/web/src/vue/index.ts new file mode 100644 index 0000000..c182b00 --- /dev/null +++ b/packages/web/src/vue/index.ts @@ -0,0 +1,4 @@ +import { createComponent } from './create-component'; + +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- vue's defineComponent return type is any +export const SpeedInsights = createComponent(); diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json new file mode 100644 index 0000000..9936b82 --- /dev/null +++ b/packages/web/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "esnext" + }, + "include": ["src"] +} diff --git a/packages/web/tsup.config.js b/packages/web/tsup.config.js new file mode 100644 index 0000000..5506086 --- /dev/null +++ b/packages/web/tsup.config.js @@ -0,0 +1,74 @@ +import { defineConfig } from 'tsup'; + +const cfg = { + splitting: false, + sourcemap: true, + clean: true, + treeshake: false, + dts: true, + format: ['esm', 'cjs'], +}; + +export default defineConfig([ + { + ...cfg, + entry: { + index: 'src/generic.ts', + }, + outDir: 'dist', + }, + { + ...cfg, + entry: { + index: 'src/nextjs/index.tsx', + }, + external: ['react', 'next'], + outDir: 'dist/next', + esbuildOptions: (options) => { + // Append "use client" to the top of the react entry point + options.banner = { + js: '"use client";', + }; + }, + }, + { + ...cfg, + entry: { + index: 'src/nuxt/index.ts', + }, + external: ['vue', 'vue-router'], + outDir: 'dist/nuxt', + }, + { + ...cfg, + entry: { + index: 'src/remix/index.tsx', + }, + external: ['react', '@remix-run/react'], + outDir: 'dist/remix', + }, + { + ...cfg, + entry: { + index: 'src/sveltekit/index.ts', + }, + external: ['svelte', '@sveltejs/kit', '$app'], + outDir: 'dist/sveltekit', + }, + { + ...cfg, + entry: { + index: 'src/vue/index.ts', + }, + external: ['vue', 'vue-router'], + outDir: 'dist/vue', + }, + { + ...cfg, + entry: { + index: 'src/react/index.tsx', + }, + external: ['react'], + outDir: 'dist/react', + }, +]); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..7fb15da --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,19164 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + .: + dependencies: + lint-staged: + specifier: ^14.0.1 + version: 14.0.1 + devDependencies: + '@vercel/style-guide': + specifier: ^5.0.1 + version: 5.0.1(eslint@8.48.0)(prettier@3.0.3)(typescript@5.2.2) + husky: + specifier: ^8.0.3 + version: 8.0.3 + prettier: + specifier: 3.0.3 + version: 3.0.3 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + apps/nextjs: + dependencies: + '@vercel/speed-insights': + specifier: workspace:* + version: link:../../packages/web + next: + specifier: ^14.0.3 + version: 14.0.3(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@playwright/test': + specifier: 1.37.1 + version: 1.37.1 + + apps/nuxt: + devDependencies: + '@nuxt/devtools': + specifier: latest + version: 1.0.3(nuxt@3.8.2)(vite@4.5.0) + '@vercel/speed-insights': + specifier: workspace:* + version: link:../../packages/web + nuxt: + specifier: ^3.8.2 + version: 3.8.2(eslint@8.48.0)(typescript@5.2.2)(vite@4.5.0) + vue: + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) + vue-router: + specifier: ^4.2.5 + version: 4.2.5(vue@3.3.8) + + apps/remix: + dependencies: + '@remix-run/css-bundle': + specifier: ^2.0.1 + version: 2.0.1 + '@remix-run/node': + specifier: ^2.0.1 + version: 2.0.1(typescript@5.2.2) + '@remix-run/react': + specifier: ^2.0.1 + version: 2.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@remix-run/serve': + specifier: ^2.0.1 + version: 2.0.1(typescript@5.2.2) + '@vercel/speed-insights': + specifier: workspace:* + version: link:../../packages/web + isbot: + specifier: ^3.6.8 + version: 3.6.8 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@remix-run/dev': + specifier: ^2.0.1 + version: 2.0.1(@remix-run/serve@2.0.1)(typescript@5.2.2) + '@remix-run/eslint-config': + specifier: ^2.0.1 + version: 2.0.1(eslint@8.48.0)(react@18.2.0)(typescript@5.2.2) + '@types/react': + specifier: ^18.2.20 + version: 18.2.21 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.7 + eslint: + specifier: ^8.38.0 + version: 8.48.0 + typescript: + specifier: ^5.1.6 + version: 5.2.2 + + apps/sveltekit: + dependencies: + '@vercel/speed-insights': + specifier: workspace:* + version: link:../../packages/web + devDependencies: + '@fontsource/fira-mono': + specifier: ^4.5.10 + version: 4.5.10 + '@neoconfetti/svelte': + specifier: ^1.0.0 + version: 1.0.0 + '@sveltejs/adapter-auto': + specifier: ^2.0.0 + version: 2.0.0(@sveltejs/kit@1.20.4) + '@sveltejs/kit': + specifier: ^1.20.4 + version: 1.20.4(svelte@4.0.5)(vite@4.4.9) + '@types/cookie': + specifier: ^0.5.1 + version: 0.5.1 + svelte: + specifier: ^4.0.5 + version: 4.0.5 + svelte-check: + specifier: ^3.4.3 + version: 3.4.3(@babel/core@7.22.15)(svelte@4.0.5) + tslib: + specifier: ^2.4.1 + version: 2.6.2 + typescript: + specifier: ^5.0.0 + version: 5.2.2 + vite: + specifier: ^4.4.2 + version: 4.4.9 + + apps/vue: + dependencies: + '@vercel/speed-insights': + specifier: workspace:* + version: link:../../packages/web + vue: + specifier: ^3.3.4 + version: 3.3.8(typescript@5.2.2) + devDependencies: + '@vitejs/plugin-vue': + specifier: ^4.4.0 + version: 4.4.0(vite@4.4.11)(vue@3.3.8) + vite: + specifier: ^4.4.11 + version: 4.4.11 + + packages/web: + devDependencies: + '@remix-run/react': + specifier: ^2.0.1 + version: 2.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@sveltejs/kit': + specifier: ^1.20.4 + version: 1.20.4(svelte@4.0.5)(vite@4.5.0) + '@swc/core': + specifier: ^1.3.82 + version: 1.3.82 + '@swc/jest': + specifier: ^0.2.29 + version: 0.2.29(@swc/core@1.3.82) + '@testing-library/jest-dom': + specifier: ^6.1.2 + version: 6.1.2(@types/jest@29.5.4)(jest@29.6.4) + '@testing-library/react': + specifier: ^14.0.0 + version: 14.0.0(react-dom@18.2.0)(react@18.2.0) + '@types/jest': + specifier: ^29.5.4 + version: 29.5.4 + '@types/node': + specifier: ^20.5.9 + version: 20.5.9 + '@types/react': + specifier: ^18.2.21 + version: 18.2.21 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + jest: + specifier: ^29.6.4 + version: 29.6.4(@types/node@20.5.9) + jest-environment-jsdom: + specifier: ^29.6.4 + version: 29.6.4 + next: + specifier: ^13.4.19 + version: 13.4.19(@babel/core@7.23.3)(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + svelte: + specifier: ^4.0.5 + version: 4.0.5 + tsup: + specifier: 7.2.0 + version: 7.2.0(@swc/core@1.3.82)(typescript@5.2.2) + vue: + specifier: ^3.3.4 + version: 3.3.8(typescript@5.2.2) + vue-router: + specifier: ^4.2.5 + version: 4.2.5(vue@3.3.8) + +packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: + { + integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /@adobe/css-tools@4.3.1: + resolution: + { + integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==, + } + dev: true + + /@ampproject/remapping@2.2.1: + resolution: + { + integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==, + } + engines: { node: '>=6.0.0' } + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + /@antfu/utils@0.7.6: + resolution: + { + integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==, + } + dev: true + + /@babel/code-frame@7.18.6: + resolution: + { + integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame@7.22.13: + resolution: + { + integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + + /@babel/code-frame@7.23.4: + resolution: + { + integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + + /@babel/compat-data@7.22.9: + resolution: + { + integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==, + } + engines: { node: '>=6.9.0' } + + /@babel/core@7.22.15: + resolution: + { + integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/core@7.23.3: + resolution: + { + integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.4 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/helpers': 7.23.4 + '@babel/parser': 7.23.4 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.4 + '@babel/types': 7.23.4 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/eslint-parser@7.22.15(@babel/core@7.22.15)(eslint@8.48.0): + resolution: + { + integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==, + } + engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 } + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.22.15 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.48.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/generator@7.22.15: + resolution: + { + integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + + /@babel/generator@7.23.4: + resolution: + { + integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: + { + integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + dev: true + + /@babel/helper-compilation-targets@7.22.15: + resolution: + { + integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.15): + resolution: + { + integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.15) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): + resolution: + { + integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: + { + integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, + } + engines: { node: '>=6.9.0' } + dev: true + + /@babel/helper-environment-visitor@7.22.5: + resolution: + { + integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==, + } + engines: { node: '>=6.9.0' } + + /@babel/helper-function-name@7.22.5: + resolution: + { + integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.4 + + /@babel/helper-function-name@7.23.0: + resolution: + { + integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.4 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: + { + integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: + { + integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: + { + integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + + /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): + resolution: + { + integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + + /@babel/helper-module-transforms@7.23.0(@babel/core@7.22.15): + resolution: + { + integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): + resolution: + { + integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: + { + integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: + { + integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==, + } + engines: { node: '>=6.9.0' } + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.22.15): + resolution: + { + integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): + resolution: + { + integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: + { + integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: + { + integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: + { + integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.23.4 + + /@babel/helper-string-parser@7.22.5: + resolution: + { + integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==, + } + engines: { node: '>=6.9.0' } + + /@babel/helper-string-parser@7.23.4: + resolution: + { + integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==, + } + engines: { node: '>=6.9.0' } + + /@babel/helper-validator-identifier@7.19.1: + resolution: + { + integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, + } + engines: { node: '>=6.9.0' } + dev: true + + /@babel/helper-validator-identifier@7.22.15: + resolution: + { + integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==, + } + engines: { node: '>=6.9.0' } + + /@babel/helper-validator-identifier@7.22.20: + resolution: + { + integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==, + } + engines: { node: '>=6.9.0' } + + /@babel/helper-validator-option@7.22.15: + resolution: + { + integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==, + } + engines: { node: '>=6.9.0' } + + /@babel/helpers@7.22.15: + resolution: + { + integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + transitivePeerDependencies: + - supports-color + + /@babel/helpers@7.23.4: + resolution: + { + integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.4 + '@babel/types': 7.23.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.18.6: + resolution: + { + integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/highlight@7.22.13: + resolution: + { + integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/highlight@7.23.4: + resolution: + { + integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.22.15: + resolution: + { + integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==, + } + engines: { node: '>=6.0.0' } + hasBin: true + dependencies: + '@babel/types': 7.23.4 + + /@babel/parser@7.23.4: + resolution: + { + integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==, + } + engines: { node: '>=6.0.0' } + hasBin: true + dependencies: + '@babel/types': 7.23.4 + + /@babel/plugin-proposal-decorators@7.23.3(@babel/core@7.23.3): + resolution: + { + integrity: sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.3) + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): + resolution: + { + integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.15): + resolution: + { + integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.15): + resolution: + { + integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.22.15): + resolution: + { + integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.3): + resolution: + { + integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): + resolution: + { + integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): + resolution: + { + integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.3): + resolution: + { + integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): + resolution: + { + integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15): + resolution: + { + integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.3): + resolution: + { + integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): + resolution: + { + integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): + resolution: + { + integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): + resolution: + { + integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): + resolution: + { + integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): + resolution: + { + integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): + resolution: + { + integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): + resolution: + { + integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.15): + resolution: + { + integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + resolution: + { + integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.22.15): + resolution: + { + integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.15): + resolution: + { + integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.15): + resolution: + { + integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + dev: true + + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): + resolution: + { + integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/types': 7.23.4 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.15): + resolution: + { + integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.15): + resolution: + { + integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.15) + dev: true + + /@babel/plugin-transform-typescript@7.23.4(@babel/core@7.23.3): + resolution: + { + integrity: sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) + dev: true + + /@babel/preset-react@7.22.15(@babel/core@7.22.15): + resolution: + { + integrity: sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.15) + dev: true + + /@babel/preset-typescript@7.23.0(@babel/core@7.22.15): + resolution: + { + integrity: sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.22.15) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.15) + dev: true + + /@babel/runtime@7.19.4: + resolution: + { + integrity: sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==, + } + engines: { node: '>=6.9.0' } + dependencies: + regenerator-runtime: 0.13.10 + dev: true + + /@babel/runtime@7.22.15: + resolution: + { + integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==, + } + engines: { node: '>=6.9.0' } + dependencies: + regenerator-runtime: 0.14.0 + dev: true + + /@babel/standalone@7.23.4: + resolution: + { + integrity: sha512-cXT2Xi9YVJEi7kLjqoeZBXjrNt1PASOh4Zi3jp5yXT06Gt4ZeRETfYH9y5x3RQhFTpNxaA1300lzK1obiy6tcQ==, + } + engines: { node: '>=6.9.0' } + dev: true + + /@babel/template@7.22.15: + resolution: + { + integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 + + /@babel/traverse@7.22.15: + resolution: + { + integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.23.4 + '@babel/generator': 7.23.4 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse@7.23.4: + resolution: + { + integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.23.4 + '@babel/generator': 7.23.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.22.15: + resolution: + { + integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + + /@babel/types@7.23.4: + resolution: + { + integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage@0.2.3: + resolution: + { + integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, + } + dev: true + + /@cloudflare/kv-asset-handler@0.3.0: + resolution: + { + integrity: sha512-9CB/MKf/wdvbfkUdfrj+OkEwZ5b7rws0eogJ4293h+7b6KX5toPwym+VQKmILafNB9YiehqY0DlNrDcDhdWHSQ==, + } + dependencies: + mime: 3.0.0 + dev: true + + /@emotion/hash@0.9.1: + resolution: + { + integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==, + } + dev: true + + /@esbuild/android-arm64@0.17.6: + resolution: + { + integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.18.20: + resolution: + { + integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.7: + resolution: + { + integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.6: + resolution: + { + integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==, + } + engines: { node: '>=12' } + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: + { + integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, + } + engines: { node: '>=12' } + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.7: + resolution: + { + integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==, + } + engines: { node: '>=12' } + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.6: + resolution: + { + integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: + { + integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.7: + resolution: + { + integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.6: + resolution: + { + integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: + { + integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.7: + resolution: + { + integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.6: + resolution: + { + integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: + { + integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.7: + resolution: + { + integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.6: + resolution: + { + integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: + { + integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.7: + resolution: + { + integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.6: + resolution: + { + integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: + { + integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.7: + resolution: + { + integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.17.6: + resolution: + { + integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: + { + integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.7: + resolution: + { + integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.17.6: + resolution: + { + integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==, + } + engines: { node: '>=12' } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: + { + integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, + } + engines: { node: '>=12' } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.7: + resolution: + { + integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==, + } + engines: { node: '>=12' } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.6: + resolution: + { + integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==, + } + engines: { node: '>=12' } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: + { + integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, + } + engines: { node: '>=12' } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.7: + resolution: + { + integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==, + } + engines: { node: '>=12' } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.17.6: + resolution: + { + integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==, + } + engines: { node: '>=12' } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: + { + integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, + } + engines: { node: '>=12' } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.7: + resolution: + { + integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==, + } + engines: { node: '>=12' } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.17.6: + resolution: + { + integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==, + } + engines: { node: '>=12' } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: + { + integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, + } + engines: { node: '>=12' } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.7: + resolution: + { + integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==, + } + engines: { node: '>=12' } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.17.6: + resolution: + { + integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==, + } + engines: { node: '>=12' } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: + { + integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, + } + engines: { node: '>=12' } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.7: + resolution: + { + integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==, + } + engines: { node: '>=12' } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.6: + resolution: + { + integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==, + } + engines: { node: '>=12' } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: + { + integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, + } + engines: { node: '>=12' } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.7: + resolution: + { + integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==, + } + engines: { node: '>=12' } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.17.6: + resolution: + { + integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==, + } + engines: { node: '>=12' } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: + { + integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, + } + engines: { node: '>=12' } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.7: + resolution: + { + integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==, + } + engines: { node: '>=12' } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.17.6: + resolution: + { + integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: + { + integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.7: + resolution: + { + integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.17.6: + resolution: + { + integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: + { + integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.7: + resolution: + { + integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.17.6: + resolution: + { + integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: + { + integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.7: + resolution: + { + integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.17.6: + resolution: + { + integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: + { + integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.7: + resolution: + { + integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.17.6: + resolution: + { + integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: + { + integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.7: + resolution: + { + integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==, + } + engines: { node: '>=12' } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.6: + resolution: + { + integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==, + } + engines: { node: '>=12' } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: + { + integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, + } + engines: { node: '>=12' } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.7: + resolution: + { + integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==, + } + engines: { node: '>=12' } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.17.6: + resolution: + { + integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: + { + integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.7: + resolution: + { + integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==, + } + engines: { node: '>=12' } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.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 + dependencies: + eslint: 8.48.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.8.0: + resolution: + { + integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + dev: true + + /@eslint/eslintrc@2.1.2: + resolution: + { + integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.21.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.48.0: + resolution: + { + integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@fastify/busboy@2.1.0: + resolution: + { + integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==, + } + engines: { node: '>=14' } + dev: true + + /@fontsource/fira-mono@4.5.10: + resolution: + { + integrity: sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==, + } + dev: true + + /@humanwhocodes/config-array@0.11.11: + resolution: + { + integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==, + } + engines: { node: '>=10.10.0' } + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: '>=12.22' } + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: + { + integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, + } + dev: true + + /@ioredis/commands@1.2.0: + resolution: + { + integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==, + } + dev: true + + /@isaacs/cliui@8.0.2: + resolution: + { + integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, + } + engines: { node: '>=12' } + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: + { + integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, + } + engines: { node: '>=8' } + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: + { + integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, + } + engines: { node: '>=8' } + dev: true + + /@jest/console@29.6.4: + resolution: + { + integrity: sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + chalk: 4.1.2 + jest-message-util: 29.6.3 + jest-util: 29.6.3 + slash: 3.0.0 + dev: true + + /@jest/core@29.6.4: + resolution: + { + integrity: sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.6.4 + '@jest/reporters': 29.6.4 + '@jest/test-result': 29.6.4 + '@jest/transform': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.6.3 + jest-config: 29.6.4(@types/node@20.5.9) + jest-haste-map: 29.6.4 + jest-message-util: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.6.4 + jest-resolve-dependencies: 29.6.4 + jest-runner: 29.6.4 + jest-runtime: 29.6.4 + jest-snapshot: 29.6.4 + jest-util: 29.6.3 + jest-validate: 29.6.3 + jest-watcher: 29.6.4 + micromatch: 4.0.5 + pretty-format: 29.6.3 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/create-cache-key-function@27.5.1: + resolution: + { + integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==, + } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + dependencies: + '@jest/types': 27.5.1 + dev: true + + /@jest/environment@29.6.4: + resolution: + { + integrity: sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/fake-timers': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + jest-mock: 29.6.3 + dev: true + + /@jest/expect-utils@29.6.4: + resolution: + { + integrity: sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.6.4: + resolution: + { + integrity: sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + expect: 29.6.4 + jest-snapshot: 29.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.6.4: + resolution: + { + integrity: sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.5.9 + jest-message-util: 29.6.3 + jest-mock: 29.6.3 + jest-util: 29.6.3 + dev: true + + /@jest/globals@29.6.4: + resolution: + { + integrity: sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/environment': 29.6.4 + '@jest/expect': 29.6.4 + '@jest/types': 29.6.3 + jest-mock: 29.6.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.6.4: + resolution: + { + integrity: sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.6.4 + '@jest/test-result': 29.6.4 + '@jest/transform': 29.6.4 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 + '@types/node': 20.5.9 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 6.0.0 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.6.3 + jest-util: 29.6.3 + jest-worker: 29.6.4 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: + { + integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: + { + integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.6.4: + resolution: + { + integrity: sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/console': 29.6.4 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.6.4: + resolution: + { + integrity: sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/test-result': 29.6.4 + graceful-fs: 4.2.11 + jest-haste-map: 29.6.4 + slash: 3.0.0 + dev: true + + /@jest/transform@29.6.4: + resolution: + { + integrity: sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@babel/core': 7.22.15 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.6.4 + jest-regex-util: 29.6.3 + jest-util: 29.6.3 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@27.5.1: + resolution: + { + integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==, + } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.5.9 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + dev: true + + /@jest/types@29.6.3: + resolution: + { + integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.5.9 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: + { + integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, + } + engines: { node: '>=6.0.0' } + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + /@jridgewell/resolve-uri@3.1.1: + resolution: + { + integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, + } + engines: { node: '>=6.0.0' } + + /@jridgewell/set-array@1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, + } + engines: { node: '>=6.0.0' } + + /@jridgewell/source-map@0.3.5: + resolution: + { + integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==, + } + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, + } + + /@jridgewell/trace-mapping@0.3.19: + resolution: + { + integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==, + } + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@jspm/core@2.0.1: + resolution: + { + integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==, + } + dev: true + + /@kwsites/file-exists@1.1.1: + resolution: + { + integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==, + } + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@kwsites/promise-deferred@1.1.1: + resolution: + { + integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==, + } + dev: true + + /@mapbox/node-pre-gyp@1.0.11: + resolution: + { + integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==, + } + hasBin: true + dependencies: + detect-libc: 2.0.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.5.4 + tar: 6.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@mdx-js/mdx@2.3.0: + resolution: + { + integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==, + } + dependencies: + '@types/estree-jsx': 1.0.1 + '@types/mdx': 2.0.8 + estree-util-build-jsx: 2.2.2 + estree-util-is-identifier-name: 2.1.0 + estree-util-to-js: 1.2.0 + estree-walker: 3.0.3 + hast-util-to-estree: 2.3.3 + markdown-extensions: 1.1.1 + periscopic: 3.1.0 + remark-mdx: 2.3.0 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + unified: 10.1.2 + unist-util-position-from-estree: 1.1.2 + unist-util-stringify-position: 3.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@microsoft/tsdoc-config@0.16.2: + resolution: + { + integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==, + } + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: true + + /@microsoft/tsdoc@0.14.2: + resolution: + { + integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==, + } + dev: true + + /@neoconfetti/svelte@1.0.0: + resolution: + { + integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==, + } + dev: true + + /@netlify/functions@2.4.0: + resolution: + { + integrity: sha512-dIqhdj5u4Lu/8qbYwtYpn8NfvIyPHbSTV2lAP4ocL+iwC9As06AXT0wa/xOpO2vRWJa0IMxdZaqCPnkyHlHiyg==, + } + engines: { node: '>=14.0.0' } + dependencies: + '@netlify/serverless-functions-api': 1.11.0 + is-promise: 4.0.0 + dev: true + + /@netlify/node-cookies@0.1.0: + resolution: + { + integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==, + } + engines: { node: ^14.16.0 || >=16.0.0 } + dev: true + + /@netlify/serverless-functions-api@1.11.0: + resolution: + { + integrity: sha512-3splAsr2CekL7VTwgo6yTvzD2+f269/s+TJafYazonqMNNo31yzvFxD5HpLtni4DNE1ppymVKZ4X/rLN3yl0vQ==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + dependencies: + '@netlify/node-cookies': 0.1.0 + urlpattern-polyfill: 8.0.2 + dev: true + + /@next/env@13.4.19: + resolution: + { + integrity: sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==, + } + dev: true + + /@next/env@14.0.3: + resolution: + { + integrity: sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==, + } + dev: false + + /@next/swc-darwin-arm64@13.4.19: + resolution: + { + integrity: sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@next/swc-darwin-arm64@14.0.3: + resolution: + { + integrity: sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@13.4.19: + resolution: + { + integrity: sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@next/swc-darwin-x64@14.0.3: + resolution: + { + integrity: sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@13.4.19: + resolution: + { + integrity: sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-arm64-gnu@14.0.3: + resolution: + { + integrity: sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@13.4.19: + resolution: + { + integrity: sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-arm64-musl@14.0.3: + resolution: + { + integrity: sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@13.4.19: + resolution: + { + integrity: sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-x64-gnu@14.0.3: + resolution: + { + integrity: sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@13.4.19: + resolution: + { + integrity: sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-x64-musl@14.0.3: + resolution: + { + integrity: sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@13.4.19: + resolution: + { + integrity: sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@next/swc-win32-arm64-msvc@14.0.3: + resolution: + { + integrity: sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==, + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@13.4.19: + resolution: + { + integrity: sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==, + } + engines: { node: '>= 10' } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@next/swc-win32-ia32-msvc@14.0.3: + resolution: + { + integrity: sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==, + } + engines: { node: '>= 10' } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@13.4.19: + resolution: + { + integrity: sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@next/swc-win32-x64-msvc@14.0.3: + resolution: + { + integrity: sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==, + } + engines: { node: '>= 10' } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: + { + integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==, + } + dependencies: + eslint-scope: 5.1.1 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: '>= 8' } + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: '>= 8' } + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: '>= 8' } + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@npmcli/agent@2.2.0: + resolution: + { + integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + lru-cache: 10.1.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@npmcli/fs@3.1.0: + resolution: + { + integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + semver: 7.5.4 + dev: true + + /@npmcli/git@4.1.0: + resolution: + { + integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.18.3 + npm-pick-manifest: 8.0.2 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.5.4 + which: 3.0.1 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/git@5.0.3: + resolution: + { + integrity: sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@npmcli/promise-spawn': 7.0.0 + lru-cache: 10.1.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.5.4 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents@2.0.2: + resolution: + { + integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /@npmcli/node-gyp@3.0.0: + resolution: + { + integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dev: true + + /@npmcli/package-json@4.0.1: + resolution: + { + integrity: sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + '@npmcli/git': 4.1.0 + glob: 10.3.10 + hosted-git-info: 6.1.1 + json-parse-even-better-errors: 3.0.0 + normalize-package-data: 5.0.0 + proc-log: 3.0.0 + semver: 7.5.4 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/promise-spawn@6.0.2: + resolution: + { + integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + which: 3.0.1 + dev: true + + /@npmcli/promise-spawn@7.0.0: + resolution: + { + integrity: sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + which: 4.0.0 + dev: true + + /@npmcli/run-script@7.0.2: + resolution: + { + integrity: sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 7.0.0 + node-gyp: 10.0.1 + read-package-json-fast: 3.0.2 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@nuxt/devalue@2.0.2: + resolution: + { + integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==, + } + dev: true + + /@nuxt/devtools-kit@1.0.3(nuxt@3.8.2)(vite@4.5.0): + resolution: + { + integrity: sha512-a/ZAVmrD5yOfUYhRVfC9afMkczzL8J8zdf0h6QHbTd33rJW/jmjwTn++RTdnbSD2gg2fSBRi/h8y17RmqIdb9g==, + } + peerDependencies: + nuxt: ^3.8.1 + vite: '*' + dependencies: + '@nuxt/kit': 3.8.2 + '@nuxt/schema': 3.8.2 + execa: 7.2.0 + nuxt: 3.8.2(eslint@8.48.0)(typescript@5.2.2)(vite@4.5.0) + vite: 4.5.0(@types/node@20.5.9) + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/devtools-wizard@1.0.3: + resolution: + { + integrity: sha512-iningPOhBVMYov+7hDX5yr1tAVVA6AmJ7EgRkNfmHqPX2rerhD4eIN7Ao4KwkjGmQJ7qdM7k8w+NiL8OQOpdFQ==, + } + hasBin: true + dependencies: + consola: 3.2.3 + diff: 5.1.0 + execa: 7.2.0 + global-directory: 4.0.1 + magicast: 0.3.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + prompts: 2.4.2 + rc9: 2.1.1 + semver: 7.5.4 + dev: true + + /@nuxt/devtools@1.0.3(nuxt@3.8.2)(vite@4.5.0): + resolution: + { + integrity: sha512-2mXvQiS3KTMF0fO80Y9WLx95yubRoIp2wSCarmhhqInPe8/0K9VZ4TUiTGF20ti45h0ky3OAxiVSmLfViwDWjg==, + } + hasBin: true + peerDependencies: + nuxt: ^3.8.1 + vite: '*' + dependencies: + '@antfu/utils': 0.7.6 + '@nuxt/devtools-kit': 1.0.3(nuxt@3.8.2)(vite@4.5.0) + '@nuxt/devtools-wizard': 1.0.3 + '@nuxt/kit': 3.8.2 + birpc: 0.2.14 + consola: 3.2.3 + destr: 2.0.2 + error-stack-parser-es: 0.1.1 + execa: 7.2.0 + fast-glob: 3.3.2 + flatted: 3.2.9 + get-port-please: 3.1.1 + h3: 1.9.0 + hookable: 5.5.3 + image-meta: 0.2.0 + is-installed-globally: 1.0.0 + launch-editor: 2.6.1 + local-pkg: 0.5.0 + magicast: 0.3.2 + nitropack: 2.8.0 + nuxt: 3.8.2(eslint@8.48.0)(typescript@5.2.2)(vite@4.5.0) + nypm: 0.3.3 + ofetch: 1.3.3 + ohash: 1.1.3 + pacote: 17.0.4 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + rc9: 2.1.1 + scule: 1.1.0 + semver: 7.5.4 + simple-git: 3.21.0 + sirv: 2.0.3 + unimport: 3.6.0(rollup@4.5.1) + vite: 4.5.0(@types/node@20.5.9) + vite-plugin-inspect: 0.7.42(@nuxt/kit@3.8.2)(vite@4.5.0) + vite-plugin-vue-inspector: 4.0.0(vite@4.5.0) + which: 3.0.1 + ws: 8.14.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - bluebird + - bufferutil + - encoding + - idb-keyval + - rollup + - supports-color + - utf-8-validate + - xml2js + dev: true + + /@nuxt/kit@3.8.2: + resolution: + { + integrity: sha512-LrXCm8hAkw+zpX8teUSD/LqXRarlXjbRiYxDkaqw739JSHFReWzBFgJbojsJqL4h1XIEScDGGOWiEgO4QO1sMg==, + } + engines: { node: ^14.18.0 || >=16.10.0 } + dependencies: + '@nuxt/schema': 3.8.2 + c12: 1.5.1 + consola: 3.2.3 + defu: 6.1.3 + globby: 14.0.0 + hash-sum: 2.0.0 + ignore: 5.3.0 + jiti: 1.21.0 + knitwork: 1.0.0 + mlly: 1.4.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.1.0 + semver: 7.5.4 + ufo: 1.3.2 + unctx: 2.3.1 + unimport: 3.6.0(rollup@4.5.1) + untyped: 1.4.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/schema@3.8.2: + resolution: + { + integrity: sha512-AMpysQ/wHK2sOujLShqYdC4OSj/S3fFJGjhYXqA2g6dgmz+FNQWJRG/ie5sI9r2EX9Ela1wt0GN1jZR3wYNE8Q==, + } + engines: { node: ^14.18.0 || >=16.10.0 } + dependencies: + '@nuxt/ui-templates': 1.3.1 + consola: 3.2.3 + defu: 6.1.3 + hookable: 5.5.3 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.1.0 + std-env: 3.5.0 + ufo: 1.3.2 + unimport: 3.6.0(rollup@4.5.1) + untyped: 1.4.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/telemetry@2.5.3: + resolution: + { + integrity: sha512-Ghv2MgWbJcUM9G5Dy3oQP0cJkUwEgaiuQxEF61FXJdn0a69Q4StZEP/hLF0MWPM9m6EvAwI7orxkJHM7MrmtVg==, + } + hasBin: true + dependencies: + '@nuxt/kit': 3.8.2 + ci-info: 4.0.0 + consola: 3.2.3 + create-require: 1.1.1 + defu: 6.1.3 + destr: 2.0.2 + dotenv: 16.3.1 + git-url-parse: 13.1.1 + is-docker: 3.0.0 + jiti: 1.21.0 + mri: 1.2.0 + nanoid: 4.0.2 + ofetch: 1.3.3 + parse-git-config: 3.0.0 + pathe: 1.1.1 + rc9: 2.1.1 + std-env: 3.5.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/ui-templates@1.3.1: + resolution: + { + integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==, + } + dev: true + + /@nuxt/vite-builder@3.8.2(eslint@8.48.0)(typescript@5.2.2)(vue@3.3.8): + resolution: + { + integrity: sha512-l/lzDDTbd3M89BpmWqjhVLgLVRqfkKp0tyYgV5seJQjj3SX+IeqI7k6k8+dMEifdeO34jUajVWptNpITXQryyg==, + } + engines: { node: ^14.18.0 || >=16.10.0 } + peerDependencies: + vue: ^3.3.4 + dependencies: + '@nuxt/kit': 3.8.2 + '@rollup/plugin-replace': 5.0.5(rollup@4.5.1) + '@vitejs/plugin-vue': 4.5.0(vite@4.5.0)(vue@3.3.8) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@4.5.0)(vue@3.3.8) + autoprefixer: 10.4.16(postcss@8.4.31) + clear: 0.1.0 + consola: 3.2.3 + cssnano: 6.0.1(postcss@8.4.31) + defu: 6.1.3 + esbuild: 0.19.7 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + externality: 1.0.2 + fs-extra: 11.1.1 + get-port-please: 3.1.1 + h3: 1.9.0 + knitwork: 1.0.0 + magic-string: 0.30.5 + mlly: 1.4.2 + ohash: 1.1.3 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + postcss: 8.4.31 + rollup-plugin-visualizer: 5.9.2(rollup@4.5.1) + std-env: 3.5.0 + strip-literal: 1.3.0 + ufo: 1.3.2 + unplugin: 1.5.1 + vite: 4.5.0(@types/node@20.5.9) + vite-node: 0.33.0 + vite-plugin-checker: 0.6.2(eslint@8.48.0)(typescript@5.2.2)(vite@4.5.0) + vue: 3.3.8(typescript@5.2.2) + vue-bundle-renderer: 2.0.0 + transitivePeerDependencies: + - '@types/node' + - eslint + - less + - lightningcss + - meow + - optionator + - rollup + - sass + - stylelint + - stylus + - sugarss + - supports-color + - terser + - typescript + - vls + - vti + - vue-tsc + dev: true + + /@parcel/watcher-android-arm64@2.3.0: + resolution: + { + integrity: sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-darwin-arm64@2.3.0: + resolution: + { + integrity: sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-darwin-x64@2.3.0: + resolution: + { + integrity: sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-freebsd-x64@2.3.0: + resolution: + { + integrity: sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm-glibc@2.3.0: + resolution: + { + integrity: sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm64-glibc@2.3.0: + resolution: + { + integrity: sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm64-musl@2.3.0: + resolution: + { + integrity: sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-x64-glibc@2.3.0: + resolution: + { + integrity: sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-x64-musl@2.3.0: + resolution: + { + integrity: sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-wasm@2.3.0: + resolution: + { + integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==, + } + engines: { node: '>= 10.0.0' } + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.5 + dev: true + bundledDependencies: + - napi-wasm + + /@parcel/watcher-win32-arm64@2.3.0: + resolution: + { + integrity: sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-ia32@2.3.0: + resolution: + { + integrity: sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==, + } + engines: { node: '>= 10.0.0' } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-x64@2.3.0: + resolution: + { + integrity: sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher@2.3.0: + resolution: + { + integrity: sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==, + } + engines: { node: '>= 10.0.0' } + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.5 + node-addon-api: 7.0.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.3.0 + '@parcel/watcher-darwin-arm64': 2.3.0 + '@parcel/watcher-darwin-x64': 2.3.0 + '@parcel/watcher-freebsd-x64': 2.3.0 + '@parcel/watcher-linux-arm-glibc': 2.3.0 + '@parcel/watcher-linux-arm64-glibc': 2.3.0 + '@parcel/watcher-linux-arm64-musl': 2.3.0 + '@parcel/watcher-linux-x64-glibc': 2.3.0 + '@parcel/watcher-linux-x64-musl': 2.3.0 + '@parcel/watcher-win32-arm64': 2.3.0 + '@parcel/watcher-win32-ia32': 2.3.0 + '@parcel/watcher-win32-x64': 2.3.0 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: + { + integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, + } + engines: { node: '>=14' } + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.4.2: + resolution: + { + integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==, + } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + + /@playwright/test@1.37.1: + resolution: + { + integrity: sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg==, + } + engines: { node: '>=16' } + hasBin: true + dependencies: + '@types/node': 20.5.9 + playwright-core: 1.37.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /@polka/url@1.0.0-next.23: + resolution: + { + integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==, + } + dev: true + + /@remix-run/css-bundle@2.0.1: + resolution: + { + integrity: sha512-PDAak97HvrSa6Pu84iN14o8NNitqLeyO0iH9zqWNhrsO2nFELUOzQ/02H/9QWmmIYgVpbUIQxJlp70ZEAV2dyw==, + } + engines: { node: '>=18.0.0' } + dev: false + + /@remix-run/dev@2.0.1(@remix-run/serve@2.0.1)(typescript@5.2.2): + resolution: + { + integrity: sha512-FxlbgCBXUzKxBSs2OfNoBUadcARr4S7S4JQ28t7MLcIsfJI/uHmGAMXClatsgeZuRvPK/Zx/W3B4uho1FTfQVA==, + } + engines: { node: '>=18.0.0' } + hasBin: true + peerDependencies: + '@remix-run/serve': ^2.0.1 + typescript: ^5.1.0 + peerDependenciesMeta: + '@remix-run/serve': + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.15 + '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.22.15) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/preset-typescript': 7.23.0(@babel/core@7.22.15) + '@babel/traverse': 7.22.15 + '@mdx-js/mdx': 2.3.0 + '@npmcli/package-json': 4.0.1 + '@remix-run/serve': 2.0.1(typescript@5.2.2) + '@remix-run/server-runtime': 2.0.1(typescript@5.2.2) + '@types/mdx': 2.0.8 + '@vanilla-extract/integration': 6.2.2 + arg: 5.0.2 + cacache: 17.1.4 + chalk: 4.1.2 + chokidar: 3.5.3 + dotenv: 16.3.1 + esbuild: 0.17.6 + esbuild-plugins-node-modules-polyfill: 1.6.1(esbuild@0.17.6) + execa: 5.1.1 + exit-hook: 2.2.1 + express: 4.18.2 + fs-extra: 10.1.0 + get-port: 5.1.1 + gunzip-maybe: 1.4.2 + jsesc: 3.0.2 + json5: 2.2.3 + lodash: 4.17.21 + lodash.debounce: 4.0.8 + minimatch: 9.0.3 + node-fetch: 2.7.0 + ora: 5.4.1 + picocolors: 1.0.0 + picomatch: 2.3.1 + pidtree: 0.6.0 + postcss: 8.4.31 + postcss-discard-duplicates: 5.1.0(postcss@8.4.31) + postcss-load-config: 4.0.1(postcss@8.4.31) + postcss-modules: 6.0.0(postcss@8.4.31) + prettier: 2.8.8 + pretty-ms: 7.0.1 + react-refresh: 0.14.0 + remark-frontmatter: 4.0.1 + remark-mdx-frontmatter: 1.1.1 + semver: 7.5.4 + tar-fs: 2.1.1 + tsconfig-paths: 4.2.0 + typescript: 5.2.2 + ws: 7.5.9 + transitivePeerDependencies: + - '@types/node' + - bluebird + - bufferutil + - encoding + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - ts-node + - utf-8-validate + dev: true + + /@remix-run/eslint-config@2.0.1(eslint@8.48.0)(react@18.2.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-XIKnID45O60Vtegsib2qJOVYBCq2VRn+3qaEAX1NtgcQDI1xD7o3k1k3MCdQqaGD9/XmcbJumkmuAIX3Ti6/mA==, + } + engines: { node: '>=18.0.0' } + peerDependencies: + eslint: ^8.0.0 + react: ^18.0.0 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.22.15 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.15)(eslint@8.48.0) + '@babel/preset-react': 7.22.15(@babel/core@7.22.15) + '@rushstack/eslint-patch': 1.3.3 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.48.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.48.0)(typescript@5.2.2) + eslint-plugin-jest-dom: 4.0.3(eslint@8.48.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-node: 11.1.0(eslint@8.48.0) + eslint-plugin-react: 7.33.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.48.0)(typescript@5.2.2) + react: 18.2.0 + typescript: 5.2.2 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - jest + - supports-color + dev: true + + /@remix-run/express@2.0.1(express@4.18.2)(typescript@5.2.2): + resolution: + { + integrity: sha512-YwqWF+Se6EoKL7uJhA/55BwP6kxIgDo//kHoh8miaMvVUKa1KMLru79kqU74d7PleYf9Qj4i2cXygz1mMl032w==, + } + engines: { node: '>=18.0.0' } + peerDependencies: + express: ^4.17.1 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@remix-run/node': 2.0.1(typescript@5.2.2) + express: 4.18.2 + typescript: 5.2.2 + + /@remix-run/node@2.0.1(typescript@5.2.2): + resolution: + { + integrity: sha512-pWsbmkNRb7azYomh1IGSKeW68hkwBBp6L2AWvfKSq2r2MJXHCzqgAJEc0uWkEUx6OtFbVNOg27g/cMCyKvrjIA==, + } + engines: { node: '>=18.0.0' } + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@remix-run/server-runtime': 2.0.1(typescript@5.2.2) + '@remix-run/web-fetch': 4.4.1 + '@remix-run/web-file': 3.1.0 + '@remix-run/web-stream': 1.1.0 + '@web3-storage/multipart-parser': 1.0.0 + cookie-signature: 1.2.1 + source-map-support: 0.5.21 + stream-slice: 0.1.2 + typescript: 5.2.2 + + /@remix-run/react@2.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-xZgJcRjzx9gjCzh7dDZGQJcmQPPFisMrDwhUuIzlSHuR2rEQCCGZPBLVCpbD1zhDfbdvOugbf2DLSmP2TEBXNA==, + } + engines: { node: '>=18.0.0' } + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@remix-run/router': 1.9.0 + '@remix-run/server-runtime': 2.0.1(typescript@5.2.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router-dom: 6.16.0(react-dom@18.2.0)(react@18.2.0) + typescript: 5.2.2 + + /@remix-run/router@1.9.0: + resolution: + { + integrity: sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==, + } + engines: { node: '>=14.0.0' } + + /@remix-run/serve@2.0.1(typescript@5.2.2): + resolution: + { + integrity: sha512-3aljUFhzsIwgGN2SuMgrXQH5TqA8e52afrYAnHR5CpHXxVxkwyDB4BNKng7yLRIywsOi5MHOclu/5preKV8qVA==, + } + engines: { node: '>=18.0.0' } + hasBin: true + dependencies: + '@remix-run/express': 2.0.1(express@4.18.2)(typescript@5.2.2) + '@remix-run/node': 2.0.1(typescript@5.2.2) + chokidar: 3.5.3 + compression: 1.7.4 + express: 4.18.2 + get-port: 5.1.1 + morgan: 1.10.0 + source-map-support: 0.5.21 + transitivePeerDependencies: + - supports-color + - typescript + + /@remix-run/server-runtime@2.0.1(typescript@5.2.2): + resolution: + { + integrity: sha512-xCW2aw9EILx7F3orEHN2fcpEkNzZTRU8VzP7gS9pmHP45qteFqsY5Qg2/dnF17royWmeeBNhnXaJOgb76W1KEA==, + } + engines: { node: '>=18.0.0' } + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@remix-run/router': 1.9.0 + '@types/cookie': 0.4.1 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 0.4.2 + set-cookie-parser: 2.6.0 + source-map: 0.7.4 + type-fest: 4.3.3 + typescript: 5.2.2 + + /@remix-run/web-blob@3.1.0: + resolution: + { + integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==, + } + dependencies: + '@remix-run/web-stream': 1.1.0 + web-encoding: 1.1.5 + + /@remix-run/web-fetch@4.4.1: + resolution: + { + integrity: sha512-xMceEGn2kvfeWS91nHSOhEQHPGgjFnmDVpWFZrbWPVdiTByMZIn421/tdSF6Kd1RsNsY+5Iwt3JFEKZHAcMQHw==, + } + engines: { node: ^10.17 || >=12.3 } + dependencies: + '@remix-run/web-blob': 3.1.0 + '@remix-run/web-file': 3.1.0 + '@remix-run/web-form-data': 3.1.0 + '@remix-run/web-stream': 1.1.0 + '@web3-storage/multipart-parser': 1.0.0 + abort-controller: 3.0.0 + data-uri-to-buffer: 3.0.1 + mrmime: 1.0.1 + + /@remix-run/web-file@3.1.0: + resolution: + { + integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==, + } + dependencies: + '@remix-run/web-blob': 3.1.0 + + /@remix-run/web-form-data@3.1.0: + resolution: + { + integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==, + } + dependencies: + web-encoding: 1.1.5 + + /@remix-run/web-stream@1.1.0: + resolution: + { + integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==, + } + dependencies: + web-streams-polyfill: 3.2.1 + + /@rollup/plugin-alias@5.0.1(rollup@4.5.1): + resolution: + { + integrity: sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 4.5.1 + slash: 4.0.0 + dev: true + + /@rollup/plugin-commonjs@25.0.7(rollup@4.5.1): + resolution: + { + integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.30.5 + rollup: 4.5.1 + dev: true + + /@rollup/plugin-inject@5.0.5(rollup@4.5.1): + resolution: + { + integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + estree-walker: 2.0.2 + magic-string: 0.30.5 + rollup: 4.5.1 + dev: true + + /@rollup/plugin-json@6.0.1(rollup@4.5.1): + resolution: + { + integrity: sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + rollup: 4.5.1 + dev: true + + /@rollup/plugin-node-resolve@15.2.3(rollup@4.5.1): + resolution: + { + integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.4 + rollup: 4.5.1 + dev: true + + /@rollup/plugin-replace@5.0.5(rollup@4.5.1): + resolution: + { + integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + magic-string: 0.30.5 + rollup: 4.5.1 + dev: true + + /@rollup/plugin-terser@0.4.4(rollup@4.5.1): + resolution: + { + integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 4.5.1 + serialize-javascript: 6.0.1 + smob: 1.4.1 + terser: 5.24.0 + dev: true + + /@rollup/plugin-wasm@6.2.2(rollup@4.5.1): + resolution: + { + integrity: sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + rollup: 4.5.1 + dev: true + + /@rollup/pluginutils@4.2.1: + resolution: + { + integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, + } + engines: { node: '>= 8.0.0' } + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils@5.0.5(rollup@4.5.1): + resolution: + { + integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.2 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.5.1 + dev: true + + /@rollup/rollup-android-arm-eabi@4.5.1: + resolution: + { + integrity: sha512-YaN43wTyEBaMqLDYeze+gQ4ZrW5RbTEGtT5o1GVDkhpdNcsLTnLRcLccvwy3E9wiDKWg9RIhuoy3JQKDRBfaZA==, + } + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.5.1: + resolution: + { + integrity: sha512-n1bX+LCGlQVuPlCofO0zOKe1b2XkFozAVRoczT+yxWZPGnkEAKTTYVOGZz8N4sKuBnKMxDbfhUsB1uwYdup/sw==, + } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.5.1: + resolution: + { + integrity: sha512-QqJBumdvfBqBBmyGHlKxje+iowZwrHna7pokj/Go3dV1PJekSKfmjKrjKQ/e6ESTGhkfPNLq3VXdYLAc+UtAQw==, + } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.5.1: + resolution: + { + integrity: sha512-RrkDNkR/P5AEQSPkxQPmd2ri8WTjSl0RYmuFOiEABkEY/FSg0a4riihWQGKDJ4LnV9gigWZlTMx2DtFGzUrYQw==, + } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.5.1: + resolution: + { + integrity: sha512-ZFPxvUZmE+fkB/8D9y/SWl/XaDzNSaxd1TJUSE27XAKlRpQ2VNce/86bGd9mEUgL3qrvjJ9XTGwoX0BrJkYK/A==, + } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.5.1: + resolution: + { + integrity: sha512-FEuAjzVIld5WVhu+M2OewLmjmbXWd3q7Zcx+Rwy4QObQCqfblriDMMS7p7+pwgjZoo9BLkP3wa9uglQXzsB9ww==, + } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.5.1: + resolution: + { + integrity: sha512-f5Gs8WQixqGRtI0Iq/cMqvFYmgFzMinuJO24KRfnv7Ohi/HQclwrBCYkzQu1XfLEEt3DZyvveq9HWo4bLJf1Lw==, + } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.5.1: + resolution: + { + integrity: sha512-CWPkPGrFfN2vj3mw+S7A/4ZaU3rTV7AkXUr08W9lNP+UzOvKLVf34tWCqrKrfwQ0NTk5GFqUr2XGpeR2p6R4gw==, + } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.5.1: + resolution: + { + integrity: sha512-ZRETMFA0uVukUC9u31Ed1nx++29073goCxZtmZARwk5aF/ltuENaeTtRVsSQzFlzdd4J6L3qUm+EW8cbGt0CKQ==, + } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.5.1: + resolution: + { + integrity: sha512-ihqfNJNb2XtoZMSCPeoo0cYMgU04ksyFIoOw5S0JUVbOhafLot+KD82vpKXOurE2+9o/awrqIxku9MRR9hozHQ==, + } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.5.1: + resolution: + { + integrity: sha512-zK9MRpC8946lQ9ypFn4gLpdwr5a01aQ/odiIJeL9EbgZDMgbZjjT/XzTqJvDfTmnE1kHdbG20sAeNlpc91/wbg==, + } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.5.1: + resolution: + { + integrity: sha512-5I3Nz4Sb9TYOtkRwlH0ow+BhMH2vnh38tZ4J4mggE48M/YyJyp/0sPSxhw1UeS1+oBgQ8q7maFtSeKpeRJu41Q==, + } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rushstack/eslint-patch@1.3.3: + resolution: + { + integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==, + } + dev: true + + /@sigstore/bundle@2.1.0: + resolution: + { + integrity: sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + dev: true + + /@sigstore/protobuf-specs@0.2.1: + resolution: + { + integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dev: true + + /@sigstore/sign@2.2.0: + resolution: + { + integrity: sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@sigstore/bundle': 2.1.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/tuf@2.2.0: + resolution: + { + integrity: sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sinclair/typebox@0.27.8: + resolution: + { + integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, + } + dev: true + + /@sindresorhus/merge-streams@1.0.0: + resolution: + { + integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==, + } + engines: { node: '>=18' } + dev: true + + /@sinonjs/commons@3.0.0: + resolution: + { + integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==, + } + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: + { + integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==, + } + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@sveltejs/adapter-auto@2.0.0(@sveltejs/kit@1.20.4): + resolution: + { + integrity: sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==, + } + peerDependencies: + '@sveltejs/kit': ^1.0.0 + dependencies: + '@sveltejs/kit': 1.20.4(svelte@4.0.5)(vite@4.4.9) + import-meta-resolve: 2.2.2 + dev: true + + /@sveltejs/kit@1.20.4(svelte@4.0.5)(vite@4.4.9): + resolution: + { + integrity: sha512-MmAzIuMrP7A+8fqDVbxm6ekGHRHL/+Fk8sQPAzPG4G2TxUDtHdn/WcIxeEqHzARMf0OtGSC+VPyOSFuw2Cy2Mg==, + } + engines: { node: ^16.14 || >=18 } + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 || ^4.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.0.5)(vite@4.4.9) + '@types/cookie': 0.5.1 + cookie: 0.5.0 + devalue: 4.3.2 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mime: 3.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.3 + svelte: 4.0.5 + undici: 5.22.1 + vite: 4.4.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/kit@1.20.4(svelte@4.0.5)(vite@4.5.0): + resolution: + { + integrity: sha512-MmAzIuMrP7A+8fqDVbxm6ekGHRHL/+Fk8sQPAzPG4G2TxUDtHdn/WcIxeEqHzARMf0OtGSC+VPyOSFuw2Cy2Mg==, + } + engines: { node: ^16.14 || >=18 } + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 || ^4.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.0.5)(vite@4.5.0) + '@types/cookie': 0.5.1 + cookie: 0.5.0 + devalue: 4.3.2 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mime: 3.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.3 + svelte: 4.0.5 + undici: 5.22.1 + vite: 4.5.0(@types/node@20.5.9) + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.0.5)(vite@4.4.9): + resolution: + { + integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==, + } + engines: { node: ^14.18.0 || >= 16 } + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.0.5)(vite@4.4.9) + debug: 4.3.4 + svelte: 4.0.5 + vite: 4.4.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.0.5)(vite@4.5.0): + resolution: + { + integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==, + } + engines: { node: ^14.18.0 || >= 16 } + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.0.5)(vite@4.5.0) + debug: 4.3.4 + svelte: 4.0.5 + vite: 4.5.0(@types/node@20.5.9) + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.0.5)(vite@4.4.9): + resolution: + { + integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==, + } + engines: { node: ^14.18.0 || >= 16 } + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.0.5)(vite@4.4.9) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.5 + svelte: 4.0.5 + svelte-hmr: 0.15.3(svelte@4.0.5) + vite: 4.4.9 + vitefu: 0.2.5(vite@4.4.9) + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.0.5)(vite@4.5.0): + resolution: + { + integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==, + } + engines: { node: ^14.18.0 || >= 16 } + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.0.5)(vite@4.5.0) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.5 + svelte: 4.0.5 + svelte-hmr: 0.15.3(svelte@4.0.5) + vite: 4.5.0(@types/node@20.5.9) + vitefu: 0.2.5(vite@4.5.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@swc/core-darwin-arm64@1.3.82: + resolution: + { + integrity: sha512-JfsyDW34gVKD3uE0OUpUqYvAD3yseEaicnFP6pB292THtLJb0IKBBnK50vV/RzEJtc1bR3g1kNfxo2PeurZTrA==, + } + engines: { node: '>=10' } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64@1.3.82: + resolution: + { + integrity: sha512-ogQWgNMq7qTpITjcP3dnzkFNj7bh6SwMr859GvtOTrE75H7L7jDWxESfH4f8foB/LGxBKiDNmxKhitCuAsZK4A==, + } + engines: { node: '>=10' } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.3.82: + resolution: + { + integrity: sha512-7TMXG1lXlNhD0kUiEqs+YlGV4irAdBa2quuy+XI3oJf2fBK6dQfEq4xBy65B3khrorzQS3O0oDGQ+cmdpHExHA==, + } + engines: { node: '>=10' } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu@1.3.82: + resolution: + { + integrity: sha512-26JkOujbzcItPAmIbD5vHJxQVy5ihcSu3YHTKwope1h28sApZdtE7S3e2G3gsZRTIdsCQkXUtAQeqHxGWWR3pw==, + } + engines: { node: '>=10' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.3.82: + resolution: + { + integrity: sha512-8Izj9tuuMpoc3cqiPBRtwqpO1BZ/+sfZVsEhLxrbOFlcSb8LnKyMle1g3JMMUwI4EU75RGVIzZMn8A6GOKdJbA==, + } + engines: { node: '>=10' } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu@1.3.82: + resolution: + { + integrity: sha512-0GSrIBScQwTaPv46T2qB7XnDYxndRCpwH4HMjh6FN+I+lfPUhTSJKW8AonqrqT1TbpFIgvzQs7EnTsD7AnSCow==, + } + engines: { node: '>=10' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl@1.3.82: + resolution: + { + integrity: sha512-KJUnaaepDKNzrEbwz4jv0iC3/t9x0NSoe06fnkAlhh2+NFKWKKJhVCOBTrpds8n7eylBDIXUlK34XQafjVMUdg==, + } + engines: { node: '>=10' } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc@1.3.82: + resolution: + { + integrity: sha512-TR3MHKhDYIyGyFcyl2d/p1ftceXcubAhX5wRSOdtOyr5+K/v3jbyCCqN7bbqO5o43wQVCwwR/drHleYyDZvg8Q==, + } + engines: { node: '>=10' } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc@1.3.82: + resolution: + { + integrity: sha512-ZX4HzVVt6hs84YUg70UvyBJnBOIspmQQM0iXSzBvOikk3zRoN7BnDwQH4GScvevCEBuou60+i4I6d5kHLOfh8Q==, + } + engines: { node: '>=10' } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc@1.3.82: + resolution: + { + integrity: sha512-4mJMnex21kbQoaHeAmHnVwQN9/XAfPszJ6n9HI7SVH+aAHnbBIR0M59/b50/CJMjTj5niUGk7EwQ3nhVNOG32g==, + } + engines: { node: '>=10' } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core@1.3.82: + resolution: + { + integrity: sha512-jpC1a18HMH67018Ij2jh+hT7JBFu7ZKcQVfrZ8K6JuEY+kjXmbea07P9MbQUZbAe0FB+xi3CqEVCP73MebodJQ==, + } + engines: { node: '>=10' } + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/types': 0.1.4 + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.82 + '@swc/core-darwin-x64': 1.3.82 + '@swc/core-linux-arm-gnueabihf': 1.3.82 + '@swc/core-linux-arm64-gnu': 1.3.82 + '@swc/core-linux-arm64-musl': 1.3.82 + '@swc/core-linux-x64-gnu': 1.3.82 + '@swc/core-linux-x64-musl': 1.3.82 + '@swc/core-win32-arm64-msvc': 1.3.82 + '@swc/core-win32-ia32-msvc': 1.3.82 + '@swc/core-win32-x64-msvc': 1.3.82 + dev: true + + /@swc/helpers@0.5.1: + resolution: + { + integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==, + } + dependencies: + tslib: 2.6.2 + dev: true + + /@swc/helpers@0.5.2: + resolution: + { + integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==, + } + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/jest@0.2.29(@swc/core@1.3.82): + resolution: + { + integrity: sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==, + } + engines: { npm: '>= 7.0.0' } + peerDependencies: + '@swc/core': '*' + dependencies: + '@jest/create-cache-key-function': 27.5.1 + '@swc/core': 1.3.82 + jsonc-parser: 3.2.0 + dev: true + + /@swc/types@0.1.4: + resolution: + { + integrity: sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==, + } + dev: true + + /@testing-library/dom@8.20.1: + resolution: + { + integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==, + } + engines: { node: '>=12' } + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/runtime': 7.22.15 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/dom@9.3.1: + resolution: + { + integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==, + } + engines: { node: '>=14' } + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/runtime': 7.19.4 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.14 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/jest-dom@6.1.2(@types/jest@29.5.4)(jest@29.6.4): + resolution: + { + integrity: sha512-NP9jl1Q2qDDtx+cqogowtQtmgD2OVs37iMSIsTv5eN5ETRkf26Kj6ugVwA93/gZzzFWQAsgkKkcftDe91BJCkQ==, + } + engines: { node: '>=14', npm: '>=6', yarn: '>=1' } + peerDependencies: + '@jest/globals': '>= 28' + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.3.1 + '@babel/runtime': 7.22.15 + '@types/jest': 29.5.4 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + jest: 29.6.4(@types/node@20.5.9) + lodash: 4.17.21 + redent: 3.0.0 + dev: true + + /@testing-library/react@14.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==, + } + engines: { node: '>=14' } + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.19.4 + '@testing-library/dom': 9.3.1 + '@types/react-dom': 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@tootallnate/once@2.0.0: + resolution: + { + integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, + } + engines: { node: '>= 10' } + dev: true + + /@trysound/sax@0.2.0: + resolution: + { + integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==, + } + engines: { node: '>=10.13.0' } + dev: true + + /@tufjs/canonical-json@2.0.0: + resolution: + { + integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dev: true + + /@tufjs/models@2.0.0: + resolution: + { + integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.3 + dev: true + + /@types/acorn@4.0.6: + resolution: + { + integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==, + } + dependencies: + '@types/estree': 1.0.2 + dev: true + + /@types/aria-query@5.0.1: + resolution: + { + integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==, + } + dev: true + + /@types/babel__core@7.20.1: + resolution: + { + integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==, + } + dependencies: + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /@types/babel__generator@7.6.4: + resolution: + { + integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==, + } + dependencies: + '@babel/types': 7.23.4 + dev: true + + /@types/babel__template@7.4.1: + resolution: + { + integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==, + } + dependencies: + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + dev: true + + /@types/babel__traverse@7.20.1: + resolution: + { + integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==, + } + dependencies: + '@babel/types': 7.23.4 + dev: true + + /@types/cookie@0.4.1: + resolution: + { + integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==, + } + + /@types/cookie@0.5.1: + resolution: + { + integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==, + } + dev: true + + /@types/debug@4.1.9: + resolution: + { + integrity: sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==, + } + dependencies: + '@types/ms': 0.7.32 + dev: true + + /@types/estree-jsx@1.0.1: + resolution: + { + integrity: sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==, + } + dependencies: + '@types/estree': 1.0.2 + dev: true + + /@types/estree@1.0.2: + resolution: + { + integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==, + } + dev: true + + /@types/graceful-fs@4.1.6: + resolution: + { + integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==, + } + dependencies: + '@types/node': 20.5.9 + dev: true + + /@types/hast@2.3.6: + resolution: + { + integrity: sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==, + } + dependencies: + '@types/unist': 2.0.8 + dev: true + + /@types/http-proxy@1.17.14: + resolution: + { + integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==, + } + dependencies: + '@types/node': 20.5.9 + dev: true + + /@types/istanbul-lib-coverage@2.0.4: + resolution: + { + integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==, + } + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: + { + integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==, + } + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: + { + integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==, + } + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest@29.5.4: + resolution: + { + integrity: sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==, + } + dependencies: + expect: 29.6.4 + pretty-format: 29.6.3 + dev: true + + /@types/jsdom@20.0.1: + resolution: + { + integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==, + } + dependencies: + '@types/node': 20.5.9 + '@types/tough-cookie': 4.0.2 + parse5: 7.1.2 + dev: true + + /@types/json-schema@7.0.12: + resolution: + { + integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==, + } + dev: true + + /@types/json5@0.0.29: + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + dev: true + + /@types/mdast@3.0.13: + resolution: + { + integrity: sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg==, + } + dependencies: + '@types/unist': 2.0.8 + dev: true + + /@types/mdx@2.0.8: + resolution: + { + integrity: sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==, + } + dev: true + + /@types/ms@0.7.32: + resolution: + { + integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==, + } + dev: true + + /@types/node@20.5.9: + resolution: + { + integrity: sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==, + } + dev: true + + /@types/normalize-package-data@2.4.1: + resolution: + { + integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==, + } + dev: true + + /@types/prop-types@15.7.5: + resolution: + { + integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==, + } + dev: true + + /@types/pug@2.0.7: + resolution: + { + integrity: sha512-I469DU0UXNC1aHepwirWhu9YKg5fkxohZD95Ey/5A7lovC+Siu+MCLffva87lnfThaOrw9Vb1DUN5t55oULAAw==, + } + dev: true + + /@types/react-dom@18.2.7: + resolution: + { + integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==, + } + dependencies: + '@types/react': 18.2.21 + dev: true + + /@types/react@18.2.21: + resolution: + { + integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==, + } + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true + + /@types/resolve@1.20.2: + resolution: + { + integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, + } + dev: true + + /@types/scheduler@0.16.3: + resolution: + { + integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==, + } + dev: true + + /@types/semver@7.5.1: + resolution: + { + integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==, + } + dev: true + + /@types/stack-utils@2.0.1: + resolution: + { + integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==, + } + dev: true + + /@types/tough-cookie@4.0.2: + resolution: + { + integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==, + } + dev: true + + /@types/unist@2.0.8: + resolution: + { + integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==, + } + dev: true + + /@types/yargs-parser@21.0.0: + resolution: + { + integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, + } + dev: true + + /@types/yargs@16.0.5: + resolution: + { + integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==, + } + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs@17.0.24: + resolution: + { + integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==, + } + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.48.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/type-utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 + debug: 4.3.4 + eslint: 8.48.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.48.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 + debug: 4.3.4 + eslint: 8.48.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: + { + integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.6.0: + resolution: + { + integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + dependencies: + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.48.0 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.48.0 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: + { + integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@typescript-eslint/types@6.6.0: + resolution: + { + integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): + resolution: + { + integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): + resolution: + { + integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + eslint: 8.48.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + eslint: 8.48.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: + { + integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.6.0: + resolution: + { + integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + dependencies: + '@typescript-eslint/types': 6.6.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@unhead/dom@1.8.8: + resolution: + { + integrity: sha512-KRtn+tvA83lEtKrtZD85XmqW04fcytVuNKLUpPBzhJvsxB3v7gozw0nu46e3EpbO3TGJjLlLd6brNHQY6WLWfA==, + } + dependencies: + '@unhead/schema': 1.8.8 + '@unhead/shared': 1.8.8 + dev: true + + /@unhead/schema@1.8.8: + resolution: + { + integrity: sha512-xuhNW4osVNLW1yQSbdInZ8YGiXVTi1gjF8rK1E4VnODpWLg8XOq0OpoCbdIlCH4X4A0Ee0UQGRyzkuuVZlrSsQ==, + } + dependencies: + hookable: 5.5.3 + zhead: 2.2.4 + dev: true + + /@unhead/shared@1.8.8: + resolution: + { + integrity: sha512-LoIJUDgmOzxoRHSIf29w/wc+IzKN2XvGiQC2dZZrYoTjOOzodf75609PEW5bhx2aHio38k9F+6BnD3KDiJ7IIg==, + } + dependencies: + '@unhead/schema': 1.8.8 + dev: true + + /@unhead/ssr@1.8.8: + resolution: + { + integrity: sha512-+nKFgU2jT/3U0x97pQaVYa5+pH+ngpdfqPjpT6Wti8htJsBnRRUdQ8X3hTyD2vHgFsrUTj0RRr9/6CY/qdpM/A==, + } + dependencies: + '@unhead/schema': 1.8.8 + '@unhead/shared': 1.8.8 + dev: true + + /@unhead/vue@1.8.8(vue@3.3.8): + resolution: + { + integrity: sha512-isHpVnSSE5SP+ObsZG/i+Jq9tAQ2u1AbGrktXKmL7P5FRxwPjhATYnJFdGpxXeXfuaFgRFKzGKs29xo4MMVODw==, + } + peerDependencies: + vue: '>=2.7 || >=3' + dependencies: + '@unhead/schema': 1.8.8 + '@unhead/shared': 1.8.8 + hookable: 5.5.3 + unhead: 1.8.8 + vue: 3.3.8(typescript@5.2.2) + dev: true + + /@vanilla-extract/babel-plugin-debug-ids@1.0.3: + resolution: + { + integrity: sha512-vm4jYu1xhSa6ofQ9AhIpR3DkAp4c+eoR1Rpm8/TQI4DmWbmGbOjYRcqV0aWsfaIlNhN4kFuxFMKBNN9oG6iRzA==, + } + dependencies: + '@babel/core': 7.22.15 + transitivePeerDependencies: + - supports-color + dev: true + + /@vanilla-extract/css@1.13.0: + resolution: + { + integrity: sha512-JFFBXhnJrPlGqHBabagXqo5ghXw9mtV270ycIGyLDZG8NAK5eRwAYkMowAxuzK7wZSm67GnETWYB7b0AUmyttg==, + } + dependencies: + '@emotion/hash': 0.9.1 + '@vanilla-extract/private': 1.0.3 + ahocorasick: 1.0.2 + chalk: 4.1.2 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.2 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + media-query-parser: 2.0.2 + outdent: 0.8.0 + dev: true + + /@vanilla-extract/integration@6.2.2: + resolution: + { + integrity: sha512-gV3qPFjFap1+IrPeuFy+tEZOq7l7ifJf1ik/kluDWhPr1ffsFG9puq1/jjJ4rod1BIC79Q5ZWPNvBInHyxfCew==, + } + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.15) + '@vanilla-extract/babel-plugin-debug-ids': 1.0.3 + '@vanilla-extract/css': 1.13.0 + esbuild: 0.17.6 + eval: 0.1.8 + find-up: 5.0.0 + javascript-stringify: 2.1.0 + lodash: 4.17.21 + mlly: 1.4.2 + outdent: 0.8.0 + vite: 4.4.11 + vite-node: 0.28.5 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /@vanilla-extract/private@1.0.3: + resolution: + { + integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==, + } + dev: true + + /@vercel/nft@0.24.3: + resolution: + { + integrity: sha512-IyBdIxmFAeGZnEfMgt4QrGK7XX4lWazlQj34HEi9dw04/WeDBJ7r1yaOIO5tTf9pbfvwUFodj9b0H+NDGGoOMg==, + } + engines: { node: '>=16' } + hasBin: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + '@rollup/pluginutils': 4.2.1 + acorn: 8.11.2 + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + node-gyp-build: 4.7.0 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@vercel/style-guide@5.0.1(eslint@8.48.0)(prettier@3.0.3)(typescript@5.2.2): + resolution: + { + integrity: sha512-3J/5xpwJ2Wk+cKB3EGY2KCdVQycaThLKhjBmgXPfIKb+E74lPpXVIDfaQE0D2JoAyIzGsqdH7Lbmr+DojwofxQ==, + } + engines: { node: '>=16' } + peerDependencies: + '@next/eslint-plugin-next': '>=12.3.0 <14' + eslint: '>=8.48.0 <9' + prettier: '>=3.0.0 <4' + typescript: '>=4.8.0 <6' + peerDependenciesMeta: + '@next/eslint-plugin-next': + optional: true + eslint: + optional: true + prettier: + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.22.15 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.15)(eslint@8.48.0) + '@rushstack/eslint-patch': 1.3.3 + '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + eslint-config-prettier: 9.0.0(eslint@8.48.0) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.28.1) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.48.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.48.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.2.3)(eslint@8.48.0) + eslint-plugin-react: 7.33.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + eslint-plugin-testing-library: 6.0.1(eslint@8.48.0)(typescript@5.2.2) + eslint-plugin-tsdoc: 0.2.17 + eslint-plugin-unicorn: 48.0.1(eslint@8.48.0) + prettier: 3.0.3 + prettier-plugin-packagejson: 2.4.5(prettier@3.0.3) + typescript: 5.2.2 + transitivePeerDependencies: + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - jest + - supports-color + dev: true + + /@vitejs/plugin-vue-jsx@3.1.0(vite@4.5.0)(vue@3.3.8): + resolution: + { + integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/plugin-transform-typescript': 7.23.4(@babel/core@7.23.3) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.3) + vite: 4.5.0(@types/node@20.5.9) + vue: 3.3.8(typescript@5.2.2) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue@4.4.0(vite@4.4.11)(vue@3.3.8): + resolution: + { + integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.4.11 + vue: 3.3.8(typescript@5.2.2) + dev: true + + /@vitejs/plugin-vue@4.5.0(vite@4.5.0)(vue@3.3.8): + resolution: + { + integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.5.0(@types/node@20.5.9) + vue: 3.3.8(typescript@5.2.2) + dev: true + + /@vue-macros/common@1.9.0(vue@3.3.8): + resolution: + { + integrity: sha512-LbfRHDkceuokkLlVuQW9Wq3ZLmRs6KIDPzCjUvvL14HB4GslWdtvBB1suFfNs6VMvh9Zj30cEKF/EAP7QBCZ6Q==, + } + engines: { node: '>=16.14.0' } + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + dependencies: + '@babel/types': 7.23.4 + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + '@vue/compiler-sfc': 3.3.8 + ast-kit: 0.11.2 + local-pkg: 0.5.0 + magic-string-ast: 0.3.0 + vue: 3.3.8(typescript@5.2.2) + transitivePeerDependencies: + - rollup + dev: true + + /@vue/babel-helper-vue-transform-on@1.1.5: + resolution: + { + integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==, + } + dev: true + + /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.3): + resolution: + { + integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==, + } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.4 + '@babel/types': 7.23.4 + '@vue/babel-helper-vue-transform-on': 1.1.5 + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/compiler-core@3.3.8: + resolution: + { + integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==, + } + dependencies: + '@babel/parser': 7.23.4 + '@vue/shared': 3.3.8 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + /@vue/compiler-dom@3.3.8: + resolution: + { + integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==, + } + dependencies: + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 + + /@vue/compiler-sfc@3.3.8: + resolution: + { + integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==, + } + dependencies: + '@babel/parser': 7.23.4 + '@vue/compiler-core': 3.3.8 + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-ssr': 3.3.8 + '@vue/reactivity-transform': 3.3.8 + '@vue/shared': 3.3.8 + estree-walker: 2.0.2 + magic-string: 0.30.5 + postcss: 8.4.31 + source-map-js: 1.0.2 + + /@vue/compiler-ssr@3.3.8: + resolution: + { + integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==, + } + dependencies: + '@vue/compiler-dom': 3.3.8 + '@vue/shared': 3.3.8 + + /@vue/devtools-api@6.5.1: + resolution: + { + integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==, + } + dev: true + + /@vue/reactivity-transform@3.3.8: + resolution: + { + integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==, + } + dependencies: + '@babel/parser': 7.23.4 + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 + estree-walker: 2.0.2 + magic-string: 0.30.5 + + /@vue/reactivity@3.3.8: + resolution: + { + integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==, + } + dependencies: + '@vue/shared': 3.3.8 + + /@vue/runtime-core@3.3.8: + resolution: + { + integrity: sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==, + } + dependencies: + '@vue/reactivity': 3.3.8 + '@vue/shared': 3.3.8 + + /@vue/runtime-dom@3.3.8: + resolution: + { + integrity: sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==, + } + dependencies: + '@vue/runtime-core': 3.3.8 + '@vue/shared': 3.3.8 + csstype: 3.1.2 + + /@vue/server-renderer@3.3.8(vue@3.3.8): + resolution: + { + integrity: sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==, + } + peerDependencies: + vue: 3.3.8 + dependencies: + '@vue/compiler-ssr': 3.3.8 + '@vue/shared': 3.3.8 + vue: 3.3.8(typescript@5.2.2) + + /@vue/shared@3.3.8: + resolution: + { + integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==, + } + + /@web3-storage/multipart-parser@1.0.0: + resolution: + { + integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==, + } + + /@zxing/text-encoding@0.9.0: + resolution: + { + integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==, + } + requiresBuild: true + optional: true + + /abab@2.0.6: + resolution: + { + integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, + } + dev: true + + /abbrev@1.1.1: + resolution: + { + integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, + } + dev: true + + /abbrev@2.0.0: + resolution: + { + integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dev: true + + /abort-controller@3.0.0: + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, + } + engines: { node: '>=6.5' } + dependencies: + event-target-shim: 5.0.1 + + /accepts@1.3.8: + resolution: + { + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, + } + engines: { node: '>= 0.6' } + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + /acorn-globals@7.0.1: + resolution: + { + integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==, + } + dependencies: + acorn: 8.10.0 + acorn-walk: 8.2.0 + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-walk@8.2.0: + resolution: + { + integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, + } + engines: { node: '>=0.4.0' } + dev: true + + /acorn@8.10.0: + resolution: + { + integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==, + } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /acorn@8.11.2: + resolution: + { + integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==, + } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /agent-base@6.0.2: + resolution: + { + integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, + } + engines: { node: '>= 6.0.0' } + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /agent-base@7.1.0: + resolution: + { + integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==, + } + engines: { node: '>= 14' } + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: + { + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, + } + engines: { node: '>=8' } + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ahocorasick@1.0.2: + resolution: + { + integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==, + } + dev: true + + /ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + 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 + dev: true + + /ansi-colors@4.1.3: + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, + } + engines: { node: '>=6' } + dev: true + + /ansi-escapes@4.3.2: + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + } + engines: { node: '>=8' } + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-escapes@5.0.0: + resolution: + { + integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==, + } + engines: { node: '>=12' } + dependencies: + type-fest: 1.4.0 + dev: false + + /ansi-regex@5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: '>=8' } + dev: true + + /ansi-regex@6.0.1: + resolution: + { + integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, + } + engines: { node: '>=12' } + + /ansi-styles@3.2.1: + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + } + engines: { node: '>=4' } + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: '>=8' } + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: + { + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, + } + engines: { node: '>=10' } + dev: true + + /ansi-styles@6.2.1: + resolution: + { + integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, + } + engines: { node: '>=12' } + + /any-promise@1.3.0: + resolution: + { + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, + } + dev: true + + /anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: '>= 8' } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /aproba@2.0.0: + resolution: + { + integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==, + } + dev: true + + /arch@2.2.0: + resolution: + { + integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==, + } + dev: true + + /archiver-utils@4.0.1: + resolution: + { + integrity: sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==, + } + engines: { node: '>= 12.0.0' } + dependencies: + glob: 8.1.0 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash: 4.17.21 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: true + + /archiver@6.0.1: + resolution: + { + integrity: sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==, + } + engines: { node: '>= 12.0.0' } + dependencies: + archiver-utils: 4.0.1 + async: 3.2.5 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 3.1.6 + zip-stream: 5.0.1 + dev: true + + /are-we-there-yet@2.0.0: + resolution: + { + integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==, + } + engines: { node: '>=10' } + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: true + + /arg@5.0.2: + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, + } + dev: true + + /argparse@1.0.10: + resolution: + { + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, + } + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + dev: true + + /aria-query@5.1.3: + resolution: + { + integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==, + } + dependencies: + deep-equal: 2.1.0 + dev: true + + /aria-query@5.3.0: + resolution: + { + integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==, + } + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: + { + integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, + } + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: true + + /array-flatten@1.1.1: + resolution: + { + integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==, + } + + /array-includes@3.1.7: + resolution: + { + integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: '>=8' } + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: + { + integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /array.prototype.flat@1.3.1: + resolution: + { + integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.flatmap@1.3.1: + resolution: + { + integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.tosorted@1.1.1: + resolution: + { + integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /arraybuffer.prototype.slice@1.0.1: + resolution: + { + integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==, + } + engines: { node: '>= 0.4' } + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /ast-kit@0.11.2: + resolution: + { + integrity: sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==, + } + engines: { node: '>=16.14.0' } + dependencies: + '@babel/parser': 7.23.4 + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + pathe: 1.1.1 + transitivePeerDependencies: + - rollup + dev: true + + /ast-kit@0.9.5: + resolution: + { + integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==, + } + engines: { node: '>=16.14.0' } + dependencies: + '@babel/parser': 7.23.4 + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + pathe: 1.1.1 + transitivePeerDependencies: + - rollup + dev: true + + /ast-types-flow@0.0.7: + resolution: + { + integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==, + } + dev: true + + /ast-walker-scope@0.5.0: + resolution: + { + integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==, + } + engines: { node: '>=16.14.0' } + dependencies: + '@babel/parser': 7.23.4 + ast-kit: 0.9.5 + transitivePeerDependencies: + - rollup + dev: true + + /astring@1.8.6: + resolution: + { + integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==, + } + hasBin: true + dev: true + + /async-sema@3.1.1: + resolution: + { + integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==, + } + dev: true + + /async@3.2.5: + resolution: + { + integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==, + } + dev: true + + /asynciterator.prototype@1.0.0: + resolution: + { + integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==, + } + dependencies: + has-symbols: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } + dev: true + + /autoprefixer@10.4.16(postcss@8.4.31): + resolution: + { + integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==, + } + engines: { node: ^10 || ^12 || >=14 } + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001564 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.5: + resolution: + { + integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, + } + engines: { node: '>= 0.4' } + + /axe-core@4.7.2: + resolution: + { + integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==, + } + engines: { node: '>=4' } + dev: true + + /axobject-query@3.2.1: + resolution: + { + integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==, + } + dependencies: + dequal: 2.0.3 + dev: true + + /b4a@1.6.4: + resolution: + { + integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==, + } + dev: true + + /babel-jest@29.6.4(@babel/core@7.22.15): + resolution: + { + integrity: sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.22.15 + '@jest/transform': 29.6.4 + '@types/babel__core': 7.20.1 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.22.15) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: + { + integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, + } + engines: { node: '>=8' } + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: + { + integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.4 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.15): + resolution: + { + integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, + } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.22.15): + resolution: + { + integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) + dev: true + + /bail@2.0.2: + resolution: + { + integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==, + } + dev: true + + /balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + dev: true + + /base64-js@1.5.1: + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } + dev: true + + /basic-auth@2.0.1: + resolution: + { + integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==, + } + engines: { node: '>= 0.8' } + dependencies: + safe-buffer: 5.1.2 + + /big-integer@1.6.51: + resolution: + { + integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==, + } + engines: { node: '>=0.6' } + dev: true + + /binary-extensions@2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + } + engines: { node: '>=8' } + + /bindings@1.5.0: + resolution: + { + integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, + } + dependencies: + file-uri-to-path: 1.0.0 + dev: true + + /birpc@0.2.14: + resolution: + { + integrity: sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==, + } + dev: true + + /bl@4.1.0: + resolution: + { + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, + } + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /body-parser@1.20.1: + resolution: + { + integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==, + } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /boolbase@1.0.0: + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, + } + dev: true + + /bplist-parser@0.2.0: + resolution: + { + integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==, + } + engines: { node: '>= 5.10.0' } + dependencies: + big-integer: 1.6.51 + dev: true + + /brace-expansion@1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + } + engines: { node: '>=8' } + dependencies: + fill-range: 7.0.1 + + /browserify-zlib@0.1.4: + resolution: + { + integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==, + } + dependencies: + pako: 0.2.9 + dev: true + + /browserslist@4.21.10: + resolution: + { + integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001564 + electron-to-chromium: 1.4.508 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.10) + + /bser@2.1.1: + resolution: + { + integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, + } + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-crc32@0.2.13: + resolution: + { + integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, + } + dev: true + + /buffer-from@1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + + /buffer@5.7.1: + resolution: + { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, + } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-modules@3.3.0: + resolution: + { + integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, + } + engines: { node: '>=6' } + dev: true + + /builtins@5.0.1: + resolution: + { + integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==, + } + dependencies: + semver: 7.5.4 + dev: true + + /bundle-name@3.0.0: + resolution: + { + integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==, + } + engines: { node: '>=12' } + dependencies: + run-applescript: 5.0.0 + dev: true + + /bundle-require@4.0.1(esbuild@0.18.20): + resolution: + { + integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + peerDependencies: + esbuild: '>=0.17' + dependencies: + esbuild: 0.18.20 + load-tsconfig: 0.2.5 + dev: true + + /busboy@1.6.0: + resolution: + { + integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, + } + engines: { node: '>=10.16.0' } + dependencies: + streamsearch: 1.1.0 + + /bytes@3.0.0: + resolution: + { + integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==, + } + engines: { node: '>= 0.8' } + + /bytes@3.1.2: + resolution: + { + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, + } + engines: { node: '>= 0.8' } + + /c12@1.5.1: + resolution: + { + integrity: sha512-BWZRJgDEveT8uI+cliCwvYSSSSvb4xKoiiu5S0jaDbKBopQLQF7E+bq9xKk1pTcG+mUa3yXuFO7bD9d8Lr9Xxg==, + } + dependencies: + chokidar: 3.5.3 + defu: 6.1.3 + dotenv: 16.3.1 + giget: 1.1.3 + jiti: 1.21.0 + mlly: 1.4.2 + ohash: 1.1.3 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + rc9: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /cac@6.7.14: + resolution: + { + integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, + } + engines: { node: '>=8' } + dev: true + + /cacache@17.1.4: + resolution: + { + integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 7.18.3 + minipass: 7.0.4 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + dev: true + + /cacache@18.0.0: + resolution: + { + integrity: sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 10.1.0 + minipass: 7.0.4 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + dev: true + + /call-bind@1.0.2: + resolution: + { + integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, + } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.3 + + /callsites@3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: '>=6' } + dev: true + + /camelcase@5.3.1: + resolution: + { + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, + } + engines: { node: '>=6' } + dev: true + + /camelcase@6.3.0: + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: '>=10' } + dev: true + + /caniuse-api@3.0.0: + resolution: + { + integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, + } + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001564 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite@1.0.30001527: + resolution: + { + integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==, + } + dev: true + + /caniuse-lite@1.0.30001564: + resolution: + { + integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==, + } + + /ccount@2.0.1: + resolution: + { + integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, + } + dev: true + + /chalk@2.4.2: + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + } + engines: { node: '>=4' } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@3.0.0: + resolution: + { + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, + } + engines: { node: '>=8' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: + { + integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + + /char-regex@1.0.2: + resolution: + { + integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, + } + engines: { node: '>=10' } + dev: true + + /character-entities-html4@2.1.0: + resolution: + { + integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, + } + dev: true + + /character-entities-legacy@3.0.0: + resolution: + { + integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, + } + dev: true + + /character-entities@2.0.2: + resolution: + { + integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==, + } + dev: true + + /character-reference-invalid@2.0.1: + resolution: + { + integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==, + } + dev: true + + /chokidar@3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: '>= 8.10.0' } + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /chownr@1.1.4: + resolution: + { + integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, + } + dev: true + + /chownr@2.0.0: + resolution: + { + integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==, + } + engines: { node: '>=10' } + dev: true + + /ci-info@3.8.0: + resolution: + { + integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==, + } + engines: { node: '>=8' } + dev: true + + /ci-info@4.0.0: + resolution: + { + integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==, + } + engines: { node: '>=8' } + dev: true + + /citty@0.1.5: + resolution: + { + integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==, + } + dependencies: + consola: 3.2.3 + dev: true + + /cjs-module-lexer@1.2.3: + resolution: + { + integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==, + } + dev: true + + /clean-regexp@1.0.0: + resolution: + { + integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==, + } + engines: { node: '>=4' } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /clean-stack@2.2.0: + resolution: + { + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==, + } + engines: { node: '>=6' } + dev: true + + /clear@0.1.0: + resolution: + { + integrity: sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==, + } + dev: true + + /cli-cursor@3.1.0: + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + } + engines: { node: '>=8' } + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-cursor@4.0.0: + resolution: + { + integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + restore-cursor: 4.0.0 + dev: false + + /cli-spinners@2.9.1: + resolution: + { + integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==, + } + engines: { node: '>=6' } + dev: true + + /cli-truncate@3.1.0: + resolution: + { + integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + dev: false + + /client-only@0.0.1: + resolution: + { + integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, + } + + /clipboardy@3.0.0: + resolution: + { + integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + dev: true + + /cliui@7.0.4: + resolution: + { + integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, + } + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /cliui@8.0.1: + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + } + engines: { node: '>=12' } + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone@1.0.4: + resolution: + { + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + } + engines: { node: '>=0.8' } + dev: true + + /cluster-key-slot@1.1.2: + resolution: + { + integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /co@4.6.0: + resolution: + { + integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, + } + engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + dev: true + + /code-red@1.0.4: + resolution: + { + integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==, + } + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.2 + acorn: 8.10.0 + estree-walker: 3.0.3 + periscopic: 3.1.0 + dev: true + + /collect-v8-coverage@1.0.2: + resolution: + { + integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, + } + dev: true + + /color-convert@1.9.3: + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + } + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: '>=7.0.0' } + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + } + + /color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + dev: true + + /color-support@1.1.3: + resolution: + { + integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, + } + hasBin: true + dev: true + + /colord@2.9.3: + resolution: + { + integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==, + } + dev: true + + /colorette@2.0.20: + resolution: + { + integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, + } + + /combined-stream@1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: '>= 0.8' } + dependencies: + delayed-stream: 1.0.0 + dev: true + + /comma-separated-tokens@2.0.3: + resolution: + { + integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, + } + dev: true + + /commander@11.0.0: + resolution: + { + integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==, + } + engines: { node: '>=16' } + dev: false + + /commander@2.20.3: + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + } + dev: true + + /commander@4.1.1: + resolution: + { + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + } + engines: { node: '>= 6' } + dev: true + + /commander@7.2.0: + resolution: + { + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, + } + engines: { node: '>= 10' } + dev: true + + /commander@8.3.0: + resolution: + { + integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==, + } + engines: { node: '>= 12' } + dev: true + + /commondir@1.0.1: + resolution: + { + integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, + } + dev: true + + /compress-commons@5.0.1: + resolution: + { + integrity: sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==, + } + engines: { node: '>= 12.0.0' } + dependencies: + crc-32: 1.2.2 + crc32-stream: 5.0.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: true + + /compressible@2.0.18: + resolution: + { + integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, + } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.52.0 + + /compression@1.7.4: + resolution: + { + integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==, + } + engines: { node: '>= 0.8.0' } + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + /concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + dev: true + + /consola@3.2.3: + resolution: + { + integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==, + } + engines: { node: ^14.18.0 || >=16.10.0 } + dev: true + + /console-control-strings@1.1.0: + resolution: + { + integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, + } + dev: true + + /content-disposition@0.5.4: + resolution: + { + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==, + } + engines: { node: '>= 0.6' } + dependencies: + safe-buffer: 5.2.1 + + /content-type@1.0.5: + resolution: + { + integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, + } + engines: { node: '>= 0.6' } + + /convert-source-map@1.9.0: + resolution: + { + integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, + } + + /convert-source-map@2.0.0: + resolution: + { + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, + } + dev: true + + /cookie-es@1.0.0: + resolution: + { + integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==, + } + dev: true + + /cookie-signature@1.0.6: + resolution: + { + integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==, + } + + /cookie-signature@1.2.1: + resolution: + { + integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==, + } + engines: { node: '>=6.6.0' } + + /cookie@0.4.2: + resolution: + { + integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==, + } + engines: { node: '>= 0.6' } + + /cookie@0.5.0: + resolution: + { + integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==, + } + engines: { node: '>= 0.6' } + + /copyfiles@2.4.1: + resolution: + { + integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==, + } + hasBin: true + dependencies: + glob: 7.2.3 + minimatch: 3.1.2 + mkdirp: 1.0.4 + noms: 0.0.0 + through2: 2.0.5 + untildify: 4.0.0 + yargs: 16.2.0 + dev: true + + /core-util-is@1.0.3: + resolution: + { + integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, + } + dev: true + + /crc-32@1.2.2: + resolution: + { + integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==, + } + engines: { node: '>=0.8' } + hasBin: true + dev: true + + /crc32-stream@5.0.0: + resolution: + { + integrity: sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==, + } + engines: { node: '>= 12.0.0' } + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + dev: true + + /create-require@1.1.1: + resolution: + { + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, + } + dev: true + + /cross-spawn@7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: '>= 8' } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-declaration-sorter@6.4.1(postcss@8.4.31): + resolution: + { + integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==, + } + engines: { node: ^10 || ^12 || >=14 } + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.31 + dev: true + + /css-select@5.1.0: + resolution: + { + integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, + } + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-tree@2.2.1: + resolution: + { + integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.0.2 + dev: true + + /css-tree@2.3.1: + resolution: + { + integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /css-what@6.1.0: + resolution: + { + integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, + } + engines: { node: '>= 6' } + dev: true + + /css.escape@1.5.1: + resolution: + { + integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==, + } + dev: true + + /cssesc@3.0.0: + resolution: + { + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, + } + engines: { node: '>=4' } + hasBin: true + dev: true + + /cssnano-preset-default@6.0.1(postcss@8.4.31): + resolution: + { + integrity: sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.31) + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-calc: 9.0.1(postcss@8.4.31) + postcss-colormin: 6.0.0(postcss@8.4.31) + postcss-convert-values: 6.0.0(postcss@8.4.31) + postcss-discard-comments: 6.0.0(postcss@8.4.31) + postcss-discard-duplicates: 6.0.0(postcss@8.4.31) + postcss-discard-empty: 6.0.0(postcss@8.4.31) + postcss-discard-overridden: 6.0.0(postcss@8.4.31) + postcss-merge-longhand: 6.0.0(postcss@8.4.31) + postcss-merge-rules: 6.0.1(postcss@8.4.31) + postcss-minify-font-values: 6.0.0(postcss@8.4.31) + postcss-minify-gradients: 6.0.0(postcss@8.4.31) + postcss-minify-params: 6.0.0(postcss@8.4.31) + postcss-minify-selectors: 6.0.0(postcss@8.4.31) + postcss-normalize-charset: 6.0.0(postcss@8.4.31) + postcss-normalize-display-values: 6.0.0(postcss@8.4.31) + postcss-normalize-positions: 6.0.0(postcss@8.4.31) + postcss-normalize-repeat-style: 6.0.0(postcss@8.4.31) + postcss-normalize-string: 6.0.0(postcss@8.4.31) + postcss-normalize-timing-functions: 6.0.0(postcss@8.4.31) + postcss-normalize-unicode: 6.0.0(postcss@8.4.31) + postcss-normalize-url: 6.0.0(postcss@8.4.31) + postcss-normalize-whitespace: 6.0.0(postcss@8.4.31) + postcss-ordered-values: 6.0.0(postcss@8.4.31) + postcss-reduce-initial: 6.0.0(postcss@8.4.31) + postcss-reduce-transforms: 6.0.0(postcss@8.4.31) + postcss-svgo: 6.0.0(postcss@8.4.31) + postcss-unique-selectors: 6.0.0(postcss@8.4.31) + dev: true + + /cssnano-utils@4.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + dev: true + + /cssnano@6.0.1(postcss@8.4.31): + resolution: + { + integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 6.0.1(postcss@8.4.31) + lilconfig: 2.1.0 + postcss: 8.4.31 + dev: true + + /csso@5.0.5: + resolution: + { + integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } + dependencies: + css-tree: 2.2.1 + dev: true + + /cssom@0.3.8: + resolution: + { + integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, + } + dev: true + + /cssom@0.5.0: + resolution: + { + integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, + } + dev: true + + /cssstyle@2.3.0: + resolution: + { + integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, + } + engines: { node: '>=8' } + dependencies: + cssom: 0.3.8 + dev: true + + /csstype@3.1.2: + resolution: + { + integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==, + } + + /damerau-levenshtein@1.0.8: + resolution: + { + integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, + } + dev: true + + /data-uri-to-buffer@3.0.1: + resolution: + { + integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==, + } + engines: { node: '>= 6' } + + /data-urls@3.0.2: + resolution: + { + integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, + } + engines: { node: '>=12' } + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /debug@2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug@3.2.7: + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decimal.js@10.4.3: + resolution: + { + integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==, + } + dev: true + + /decode-named-character-reference@1.0.2: + resolution: + { + integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==, + } + dependencies: + character-entities: 2.0.2 + dev: true + + /dedent@1.5.1: + resolution: + { + integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==, + } + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deep-equal@2.1.0: + resolution: + { + integrity: sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==, + } + dependencies: + call-bind: 1.0.2 + es-get-iterator: 1.1.2 + get-intrinsic: 1.1.3 + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.9 + dev: true + + /deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + dev: true + + /deep-object-diff@1.1.9: + resolution: + { + integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==, + } + dev: true + + /deepmerge@4.3.1: + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + } + engines: { node: '>=0.10.0' } + dev: true + + /default-browser-id@3.0.0: + resolution: + { + integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==, + } + engines: { node: '>=12' } + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: + { + integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==, + } + engines: { node: '>=14.16' } + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + + /defaults@1.0.4: + resolution: + { + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, + } + dependencies: + clone: 1.0.4 + dev: true + + /define-lazy-prop@2.0.0: + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + } + engines: { node: '>=8' } + dev: true + + /define-lazy-prop@3.0.0: + resolution: + { + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, + } + engines: { node: '>=12' } + dev: true + + /define-properties@1.1.4: + resolution: + { + integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==, + } + engines: { node: '>= 0.4' } + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /define-properties@1.2.0: + resolution: + { + integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==, + } + engines: { node: '>= 0.4' } + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /defu@6.1.3: + resolution: + { + integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==, + } + dev: true + + /delayed-stream@1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: '>=0.4.0' } + dev: true + + /delegates@1.0.0: + resolution: + { + integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, + } + dev: true + + /denque@2.1.0: + resolution: + { + integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==, + } + engines: { node: '>=0.10' } + dev: true + + /depd@2.0.0: + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + } + engines: { node: '>= 0.8' } + + /dequal@2.0.3: + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: '>=6' } + dev: true + + /destr@2.0.2: + resolution: + { + integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==, + } + dev: true + + /destroy@1.2.0: + resolution: + { + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, + } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + + /detect-indent@6.1.0: + resolution: + { + integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, + } + engines: { node: '>=8' } + dev: true + + /detect-indent@7.0.1: + resolution: + { + integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==, + } + engines: { node: '>=12.20' } + dev: true + + /detect-libc@1.0.3: + resolution: + { + integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==, + } + engines: { node: '>=0.10' } + hasBin: true + dev: true + + /detect-libc@2.0.2: + resolution: + { + integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==, + } + engines: { node: '>=8' } + dev: true + + /detect-newline@3.1.0: + resolution: + { + integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, + } + engines: { node: '>=8' } + dev: true + + /detect-newline@4.0.0: + resolution: + { + integrity: sha512-1aXUEPdfGdzVPFpzGJJNgq9o81bGg1s09uxTWsqBlo9PI332uyJRQq13+LK/UN4JfxJbFdCXonUFQ9R/p7yCtw==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dev: true + + /devalue@4.3.2: + resolution: + { + integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==, + } + dev: true + + /diff-sequences@29.6.3: + resolution: + { + integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dev: true + + /diff@5.1.0: + resolution: + { + integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==, + } + engines: { node: '>=0.3.1' } + dev: true + + /dir-glob@3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: '>=8' } + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@2.1.0: + resolution: + { + integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, + } + engines: { node: '>=0.10.0' } + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + } + engines: { node: '>=6.0.0' } + dependencies: + esutils: 2.0.3 + dev: true + + /dom-accessibility-api@0.5.14: + resolution: + { + integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==, + } + dev: true + + /dom-accessibility-api@0.5.16: + resolution: + { + integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, + } + dev: true + + /dom-serializer@2.0.0: + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + } + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domelementtype@2.3.0: + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + } + dev: true + + /domexception@4.0.0: + resolution: + { + integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, + } + engines: { node: '>=12' } + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /domhandler@5.0.3: + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + } + engines: { node: '>= 4' } + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@3.1.0: + resolution: + { + integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==, + } + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-prop@8.0.2: + resolution: + { + integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==, + } + engines: { node: '>=16' } + dependencies: + type-fest: 3.13.1 + dev: true + + /dotenv@16.3.1: + resolution: + { + integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==, + } + engines: { node: '>=12' } + dev: true + + /duplexer@0.1.2: + resolution: + { + integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, + } + dev: true + + /duplexify@3.7.1: + resolution: + { + integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==, + } + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.1 + dev: true + + /eastasianwidth@0.2.0: + resolution: + { + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, + } + + /ee-first@1.1.1: + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, + } + + /electron-to-chromium@1.4.508: + resolution: + { + integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==, + } + + /emittery@0.13.1: + resolution: + { + integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, + } + engines: { node: '>=12' } + dev: true + + /emoji-regex@8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } + dev: true + + /emoji-regex@9.2.2: + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + } + + /encodeurl@1.0.2: + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, + } + engines: { node: '>= 0.8' } + + /encoding@0.1.13: + resolution: + { + integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, + } + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + + /end-of-stream@1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + } + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve@5.15.0: + resolution: + { + integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==, + } + engines: { node: '>=10.13.0' } + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /entities@4.5.0: + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, + } + engines: { node: '>=0.12' } + dev: true + + /env-paths@2.2.1: + resolution: + { + integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, + } + engines: { node: '>=6' } + dev: true + + /err-code@2.0.3: + resolution: + { + integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==, + } + dev: true + + /error-ex@1.3.2: + resolution: + { + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, + } + dependencies: + is-arrayish: 0.2.1 + dev: true + + /error-stack-parser-es@0.1.1: + resolution: + { + integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==, + } + dev: true + + /es-abstract@1.22.1: + resolution: + { + integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==, + } + engines: { node: '>= 0.4' } + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.1 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + dev: true + + /es-get-iterator@1.1.2: + resolution: + { + integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + dev: true + + /es-iterator-helpers@1.0.14: + resolution: + { + integrity: sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==, + } + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-set-tostringtag: 2.0.1 + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + iterator.prototype: 1.1.1 + safe-array-concat: 1.0.0 + dev: true + + /es-set-tostringtag@2.0.1: + resolution: + { + integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==, + } + engines: { node: '>= 0.4' } + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + + /es-shim-unscopables@1.0.0: + resolution: + { + integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==, + } + dependencies: + has: 1.0.3 + dev: true + + /es-to-primitive@1.2.1: + resolution: + { + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + } + engines: { node: '>= 0.4' } + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es6-promise@3.3.1: + resolution: + { + integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==, + } + dev: true + + /esbuild-plugins-node-modules-polyfill@1.6.1(esbuild@0.17.6): + resolution: + { + integrity: sha512-6sAwI24PV8W0zxeO+i4BS5zoQypS3SzEGwIdxpzpy65riRuK8apMw8PN0aKVLCTnLr0FgNIxUMRd9BsreBrtog==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + esbuild: ^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0 || ^0.19.0 + dependencies: + '@jspm/core': 2.0.1 + esbuild: 0.17.6 + local-pkg: 0.4.3 + resolve.exports: 2.0.2 + dev: true + + /esbuild@0.17.6: + resolution: + { + integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==, + } + engines: { node: '>=12' } + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.6 + '@esbuild/android-arm64': 0.17.6 + '@esbuild/android-x64': 0.17.6 + '@esbuild/darwin-arm64': 0.17.6 + '@esbuild/darwin-x64': 0.17.6 + '@esbuild/freebsd-arm64': 0.17.6 + '@esbuild/freebsd-x64': 0.17.6 + '@esbuild/linux-arm': 0.17.6 + '@esbuild/linux-arm64': 0.17.6 + '@esbuild/linux-ia32': 0.17.6 + '@esbuild/linux-loong64': 0.17.6 + '@esbuild/linux-mips64el': 0.17.6 + '@esbuild/linux-ppc64': 0.17.6 + '@esbuild/linux-riscv64': 0.17.6 + '@esbuild/linux-s390x': 0.17.6 + '@esbuild/linux-x64': 0.17.6 + '@esbuild/netbsd-x64': 0.17.6 + '@esbuild/openbsd-x64': 0.17.6 + '@esbuild/sunos-x64': 0.17.6 + '@esbuild/win32-arm64': 0.17.6 + '@esbuild/win32-ia32': 0.17.6 + '@esbuild/win32-x64': 0.17.6 + dev: true + + /esbuild@0.18.20: + resolution: + { + integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, + } + engines: { node: '>=12' } + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /esbuild@0.19.7: + resolution: + { + integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==, + } + engines: { node: '>=12' } + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.7 + '@esbuild/android-arm64': 0.19.7 + '@esbuild/android-x64': 0.19.7 + '@esbuild/darwin-arm64': 0.19.7 + '@esbuild/darwin-x64': 0.19.7 + '@esbuild/freebsd-arm64': 0.19.7 + '@esbuild/freebsd-x64': 0.19.7 + '@esbuild/linux-arm': 0.19.7 + '@esbuild/linux-arm64': 0.19.7 + '@esbuild/linux-ia32': 0.19.7 + '@esbuild/linux-loong64': 0.19.7 + '@esbuild/linux-mips64el': 0.19.7 + '@esbuild/linux-ppc64': 0.19.7 + '@esbuild/linux-riscv64': 0.19.7 + '@esbuild/linux-s390x': 0.19.7 + '@esbuild/linux-x64': 0.19.7 + '@esbuild/netbsd-x64': 0.19.7 + '@esbuild/openbsd-x64': 0.19.7 + '@esbuild/sunos-x64': 0.19.7 + '@esbuild/win32-arm64': 0.19.7 + '@esbuild/win32-ia32': 0.19.7 + '@esbuild/win32-x64': 0.19.7 + dev: true + + /escalade@3.1.1: + resolution: + { + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, + } + engines: { node: '>=6' } + + /escape-html@1.0.3: + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, + } + + /escape-string-regexp@1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: '>=0.8.0' } + + /escape-string-regexp@2.0.0: + resolution: + { + integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, + } + engines: { node: '>=8' } + dev: true + + /escape-string-regexp@4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: '>=10' } + dev: true + + /escape-string-regexp@5.0.0: + resolution: + { + integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, + } + engines: { node: '>=12' } + dev: true + + /escodegen@2.1.0: + resolution: + { + integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, + } + engines: { node: '>=6.0' } + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-config-prettier@9.0.0(eslint@8.48.0): + resolution: + { + integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==, + } + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.48.0 + dev: true + + /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.28.1): + resolution: + { + integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==, + } + engines: { node: '>= 4' } + peerDependencies: + eslint-plugin-import: '>=1.4.0' + dependencies: + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + dev: true + + /eslint-import-resolver-node@0.3.7: + resolution: + { + integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==, + } + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: + { + integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, + } + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.48.0): + resolution: + { + integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.48.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.0 + is-core-module: 2.13.0 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.48.0): + resolution: + { + integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.48.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.0 + is-core-module: 2.13.0 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): + resolution: + { + integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, + } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.48.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): + resolution: + { + integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, + } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.48.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): + resolution: + { + integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, + } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.48.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es@3.0.1(eslint@8.48.0): + resolution: + { + integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==, + } + engines: { node: '>=8.10.0' } + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 8.48.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-eslint-comments@3.2.0(eslint@8.48.0): + resolution: + { + integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==, + } + engines: { node: '>=6.5.0' } + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 8.48.0 + ignore: 5.2.4 + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): + resolution: + { + integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==, + } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): + resolution: + { + integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==, + } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jest-dom@4.0.3(eslint@8.48.0): + resolution: + { + integrity: sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1' } + peerDependencies: + eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@babel/runtime': 7.22.15 + '@testing-library/dom': 8.20.1 + eslint: 8.48.0 + requireindex: 1.2.0 + dev: true + + /eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): + resolution: + { + integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==, + } + engines: { node: '>=4.0' } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.22.15 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.7.2 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.48.0 + has: 1.0.3 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 + dev: true + + /eslint-plugin-node@11.1.0(eslint@8.48.0): + resolution: + { + integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==, + } + engines: { node: '>=8.10.0' } + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 8.48.0 + eslint-plugin-es: 3.0.1(eslint@8.48.0) + eslint-utils: 2.1.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.4 + semver: 6.3.1 + dev: true + + /eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.2.3)(eslint@8.48.0): + resolution: + { + integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==, + } + peerDependencies: + eslint: '>=7' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + dependencies: + eslint: 8.48.0 + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): + resolution: + { + integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==, + } + engines: { node: '>=10' } + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.48.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.48.0): + resolution: + { + integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==, + } + engines: { node: '>=4' } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.14 + eslint: 8.48.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.1 + string.prototype.matchall: 4.0.9 + dev: true + + /eslint-plugin-testing-library@5.11.1(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6' } + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-testing-library@6.0.1(eslint@8.48.0)(typescript@5.2.2): + resolution: + { + integrity: sha512-CEYtjpcF3hAaQtYsTZqciR7s5z+T0LCMTwJeW+pz6kBnGtc866wAKmhaiK2Gsjc2jWNP7Gt6zhNr2DE1ZW4e+g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6' } + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-tsdoc@0.2.17: + resolution: + { + integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==, + } + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + dev: true + + /eslint-plugin-unicorn@48.0.1(eslint@8.48.0): + resolution: + { + integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==, + } + engines: { node: '>=16' } + peerDependencies: + eslint: '>=8.44.0' + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + ci-info: 3.8.0 + clean-regexp: 1.0.0 + eslint: 8.48.0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.5.4 + strip-indent: 3.0.0 + dev: true + + /eslint-scope@5.1.1: + resolution: + { + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, + } + engines: { node: '>=8.0.0' } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: + { + integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@2.1.0: + resolution: + { + integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==, + } + engines: { node: '>=6' } + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: + { + integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==, + } + engines: { node: '>=4' } + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: + { + integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, + } + engines: { node: '>=10' } + dev: true + + /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 } + dev: true + + /eslint@8.48.0: + resolution: + { + integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.48.0 + '@humanwhocodes/config-array': 0.11.11 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.21.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esm-env@1.0.0: + resolution: + { + integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==, + } + dev: true + + /espree@9.6.1: + resolution: + { + integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + } + engines: { node: '>=4' } + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: + { + integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, + } + engines: { node: '>=0.10' } + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: '>=4.0' } + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: + { + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, + } + engines: { node: '>=4.0' } + dev: true + + /estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: '>=4.0' } + dev: true + + /estree-util-attach-comments@2.1.1: + resolution: + { + integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==, + } + dependencies: + '@types/estree': 1.0.2 + dev: true + + /estree-util-build-jsx@2.2.2: + resolution: + { + integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==, + } + dependencies: + '@types/estree-jsx': 1.0.1 + estree-util-is-identifier-name: 2.1.0 + estree-walker: 3.0.3 + dev: true + + /estree-util-is-identifier-name@1.1.0: + resolution: + { + integrity: sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==, + } + dev: true + + /estree-util-is-identifier-name@2.1.0: + resolution: + { + integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==, + } + dev: true + + /estree-util-to-js@1.2.0: + resolution: + { + integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==, + } + dependencies: + '@types/estree-jsx': 1.0.1 + astring: 1.8.6 + source-map: 0.7.4 + dev: true + + /estree-util-value-to-estree@1.3.0: + resolution: + { + integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==, + } + engines: { node: '>=12.0.0' } + dependencies: + is-plain-obj: 3.0.0 + dev: true + + /estree-util-visit@1.2.1: + resolution: + { + integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==, + } + dependencies: + '@types/estree-jsx': 1.0.1 + '@types/unist': 2.0.8 + dev: true + + /estree-walker@2.0.2: + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + } + + /estree-walker@3.0.3: + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, + } + dependencies: + '@types/estree': 1.0.2 + dev: true + + /esutils@2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: '>=0.10.0' } + dev: true + + /etag@1.8.1: + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + } + engines: { node: '>= 0.6' } + + /eval@0.1.8: + resolution: + { + integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==, + } + engines: { node: '>= 0.8' } + dependencies: + '@types/node': 20.5.9 + require-like: 0.1.2 + dev: true + + /event-target-shim@5.0.1: + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: '>=6' } + + /eventemitter3@5.0.1: + resolution: + { + integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, + } + dev: false + + /execa@5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + } + engines: { node: '>=10' } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@7.2.0: + resolution: + { + integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==, + } + engines: { node: ^14.18.0 || ^16.14.0 || >=18.0.0 } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + /execa@8.0.1: + resolution: + { + integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, + } + engines: { node: '>=16.17' } + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /exit-hook@2.2.1: + resolution: + { + integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==, + } + engines: { node: '>=6' } + dev: true + + /exit@0.1.2: + resolution: + { + integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, + } + engines: { node: '>= 0.8.0' } + dev: true + + /expect@29.6.4: + resolution: + { + integrity: sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/expect-utils': 29.6.4 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.6.4 + jest-message-util: 29.6.3 + jest-util: 29.6.3 + dev: true + + /exponential-backoff@3.1.1: + resolution: + { + integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==, + } + dev: true + + /express@4.18.2: + resolution: + { + integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==, + } + engines: { node: '>= 0.10.0' } + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + /extend@3.0.2: + resolution: + { + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, + } + dev: true + + /externality@1.0.2: + resolution: + { + integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==, + } + dependencies: + enhanced-resolve: 5.15.0 + mlly: 1.4.2 + pathe: 1.1.1 + ufo: 1.3.2 + dev: true + + /fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + dev: true + + /fast-fifo@1.3.2: + resolution: + { + integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==, + } + dev: true + + /fast-glob@3.3.1: + resolution: + { + integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==, + } + engines: { node: '>=8.6.0' } + 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.5 + dev: true + + /fast-glob@3.3.2: + resolution: + { + integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, + } + engines: { node: '>=8.6.0' } + 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.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + dev: true + + /fast-levenshtein@2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } + dev: true + + /fastq@1.15.0: + resolution: + { + integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, + } + dependencies: + reusify: 1.0.4 + dev: true + + /fault@2.0.1: + resolution: + { + integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==, + } + dependencies: + format: 0.2.2 + dev: true + + /fb-watchman@2.0.2: + resolution: + { + integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, + } + dependencies: + bser: 2.1.1 + dev: true + + /file-entry-cache@6.0.1: + resolution: + { + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flat-cache: 3.1.0 + dev: true + + /file-uri-to-path@1.0.0: + resolution: + { + integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, + } + dev: true + + /fill-range@7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + } + engines: { node: '>=8' } + dependencies: + to-regex-range: 5.0.1 + + /finalhandler@1.2.0: + resolution: + { + integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==, + } + engines: { node: '>= 0.8' } + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /find-up@4.1.0: + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + } + engines: { node: '>=8' } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: '>=10' } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.1.0: + resolution: + { + integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==, + } + engines: { node: '>=12.0.0' } + dependencies: + flatted: 3.2.9 + keyv: 4.5.3 + rimraf: 3.0.2 + dev: true + + /flat@5.0.2: + resolution: + { + integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, + } + hasBin: true + dev: true + + /flatted@3.2.9: + resolution: + { + integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==, + } + dev: true + + /for-each@0.3.3: + resolution: + { + integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, + } + dependencies: + is-callable: 1.2.7 + + /foreground-child@3.1.1: + resolution: + { + integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==, + } + engines: { node: '>=14' } + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /form-data@4.0.0: + resolution: + { + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, + } + engines: { node: '>= 6' } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /format@0.2.2: + resolution: + { + integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==, + } + engines: { node: '>=0.4.x' } + dev: true + + /forwarded@0.2.0: + resolution: + { + integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, + } + engines: { node: '>= 0.6' } + + /fraction.js@4.3.7: + resolution: + { + integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, + } + dev: true + + /fresh@0.5.2: + resolution: + { + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, + } + engines: { node: '>= 0.6' } + + /fs-constants@1.0.0: + resolution: + { + integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, + } + dev: true + + /fs-extra@10.1.0: + resolution: + { + integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, + } + engines: { node: '>=12' } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra@11.1.1: + resolution: + { + integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==, + } + engines: { node: '>=14.14' } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-minipass@2.1.0: + resolution: + { + integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==, + } + engines: { node: '>= 8' } + dependencies: + minipass: 3.3.6 + dev: true + + /fs-minipass@3.0.3: + resolution: + { + integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + minipass: 7.0.4 + dev: true + + /fs.realpath@1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } + dev: true + + /fsevents@2.3.2: + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /fsevents@2.3.3: + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.1: + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + } + + /function.prototype.name@1.1.6: + resolution: + { + integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: + { + integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + } + dev: true + + /gauge@3.0.2: + resolution: + { + integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==, + } + engines: { node: '>=10' } + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: true + + /generic-names@4.0.0: + resolution: + { + integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==, + } + dependencies: + loader-utils: 3.2.1 + dev: true + + /gensync@1.0.0-beta.2: + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + } + engines: { node: '>=6.9.0' } + + /get-caller-file@2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } + dev: true + + /get-intrinsic@1.1.3: + resolution: + { + integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==, + } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-intrinsic@1.2.1: + resolution: + { + integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==, + } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + + /get-package-type@0.1.0: + resolution: + { + integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, + } + engines: { node: '>=8.0.0' } + dev: true + + /get-port-please@3.1.1: + resolution: + { + integrity: sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==, + } + dev: true + + /get-port@5.1.1: + resolution: + { + integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==, + } + engines: { node: '>=8' } + + /get-stdin@9.0.0: + resolution: + { + integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==, + } + engines: { node: '>=12' } + dev: true + + /get-stream@6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: '>=10' } + + /get-stream@8.0.1: + resolution: + { + integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, + } + engines: { node: '>=16' } + dev: true + + /get-symbol-description@1.0.0: + resolution: + { + integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: true + + /get-tsconfig@4.7.0: + resolution: + { + integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==, + } + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /giget@1.1.3: + resolution: + { + integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==, + } + hasBin: true + dependencies: + colorette: 2.0.20 + defu: 6.1.3 + https-proxy-agent: 7.0.2 + mri: 1.2.0 + node-fetch-native: 1.4.1 + pathe: 1.1.1 + tar: 6.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /git-config-path@2.0.0: + resolution: + { + integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==, + } + engines: { node: '>=4' } + dev: true + + /git-hooks-list@3.1.0: + resolution: + { + integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==, + } + dev: true + + /git-up@7.0.0: + resolution: + { + integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==, + } + dependencies: + is-ssh: 1.4.0 + parse-url: 8.1.0 + dev: true + + /git-url-parse@13.1.1: + resolution: + { + integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==, + } + dependencies: + git-up: 7.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: '>= 6' } + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: '>=10.13.0' } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: + { + integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, + } + + /glob@10.3.10: + resolution: + { + integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==, + } + engines: { node: '>=16 || 14 >=14.17' } + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.1.6: + resolution: + { + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, + } + 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 + dev: true + + /glob@7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + } + 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 + dev: true + + /glob@8.1.0: + resolution: + { + integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + } + engines: { node: '>=12' } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /global-directory@4.0.1: + resolution: + { + integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==, + } + engines: { node: '>=18' } + dependencies: + ini: 4.1.1 + dev: true + + /globals@11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, + } + engines: { node: '>=4' } + + /globals@13.21.0: + resolution: + { + integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==, + } + engines: { node: '>=8' } + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: + { + integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, + } + engines: { node: '>= 0.4' } + dependencies: + define-properties: 1.2.0 + dev: true + + /globby@11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: '>=10' } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@13.2.2: + resolution: + { + integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /globby@14.0.0: + resolution: + { + integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==, + } + engines: { node: '>=18' } + dependencies: + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.3.0 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + + /gopd@1.0.1: + resolution: + { + integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, + } + dependencies: + get-intrinsic: 1.1.3 + + /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==, + } + dev: true + + /gunzip-maybe@1.4.2: + resolution: + { + integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==, + } + hasBin: true + dependencies: + browserify-zlib: 0.1.4 + is-deflate: 1.0.0 + is-gzip: 1.0.0 + peek-stream: 1.1.3 + pumpify: 1.5.1 + through2: 2.0.5 + dev: true + + /gzip-size@7.0.0: + resolution: + { + integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + duplexer: 0.1.2 + dev: true + + /h3@1.9.0: + resolution: + { + integrity: sha512-+F3ZqrNV/CFXXfZ2lXBINHi+rM4Xw3CDC5z2CDK3NMPocjonKipGLLDSkrqY9DOrioZNPTIdDMWfQKm//3X2DA==, + } + dependencies: + cookie-es: 1.0.0 + defu: 6.1.3 + destr: 2.0.2 + iron-webcrypto: 1.0.0 + radix3: 1.1.0 + ufo: 1.3.2 + uncrypto: 0.1.3 + unenv: 1.8.0 + dev: true + + /has-bigints@1.0.2: + resolution: + { + integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + } + dev: true + + /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' } + dev: true + + /has-property-descriptors@1.0.0: + resolution: + { + integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, + } + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /has-proto@1.0.1: + resolution: + { + integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, + } + engines: { node: '>= 0.4' } + dev: true + + /has-symbols@1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + } + engines: { node: '>= 0.4' } + + /has-tostringtag@1.0.0: + resolution: + { + integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, + } + engines: { node: '>= 0.4' } + dependencies: + has-symbols: 1.0.3 + + /has-unicode@2.0.1: + resolution: + { + integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==, + } + dev: true + + /has@1.0.3: + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + } + engines: { node: '>= 0.4.0' } + dependencies: + function-bind: 1.1.1 + + /hash-sum@2.0.0: + resolution: + { + integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==, + } + dev: true + + /hast-util-to-estree@2.3.3: + resolution: + { + integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==, + } + dependencies: + '@types/estree': 1.0.2 + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/unist': 2.0.8 + comma-separated-tokens: 2.0.3 + estree-util-attach-comments: 2.1.1 + estree-util-is-identifier-name: 2.1.0 + hast-util-whitespace: 2.0.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdxjs-esm: 1.3.1 + property-information: 6.3.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.2 + unist-util-position: 4.0.4 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /hast-util-whitespace@2.0.1: + resolution: + { + integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==, + } + dev: true + + /hookable@5.5.3: + resolution: + { + integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==, + } + dev: true + + /hosted-git-info@2.8.9: + resolution: + { + integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, + } + dev: true + + /hosted-git-info@6.1.1: + resolution: + { + integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + lru-cache: 7.18.3 + dev: true + + /hosted-git-info@7.0.1: + resolution: + { + integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + lru-cache: 10.1.0 + dev: true + + /html-encoding-sniffer@3.0.0: + resolution: + { + integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, + } + engines: { node: '>=12' } + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-escaper@2.0.2: + resolution: + { + integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, + } + dev: true + + /html-tags@3.3.1: + resolution: + { + integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, + } + engines: { node: '>=8' } + dev: true + + /http-cache-semantics@4.1.1: + resolution: + { + integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==, + } + dev: true + + /http-errors@2.0.0: + resolution: + { + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, + } + engines: { node: '>= 0.8' } + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + /http-proxy-agent@5.0.0: + resolution: + { + integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, + } + engines: { node: '>= 6' } + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-agent@7.0.0: + resolution: + { + integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==, + } + engines: { node: '>= 14' } + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-shutdown@1.2.2: + resolution: + { + integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==, + } + engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + dev: true + + /https-proxy-agent@5.0.1: + resolution: + { + integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, + } + engines: { node: '>= 6' } + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.2: + resolution: + { + integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==, + } + engines: { node: '>= 14' } + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /httpxy@0.1.5: + resolution: + { + integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==, + } + dev: true + + /human-signals@2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + } + engines: { node: '>=10.17.0' } + dev: true + + /human-signals@4.3.1: + resolution: + { + integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==, + } + engines: { node: '>=14.18.0' } + + /human-signals@5.0.0: + resolution: + { + integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, + } + engines: { node: '>=16.17.0' } + dev: true + + /husky@8.0.3: + resolution: + { + integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, + } + engines: { node: '>=14' } + hasBin: true + dev: true + + /iconv-lite@0.4.24: + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + } + engines: { node: '>=0.10.0' } + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite@0.6.3: + resolution: + { + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, + } + engines: { node: '>=0.10.0' } + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils@5.1.0(postcss@8.4.31): + resolution: + { + integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==, + } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.31 + dev: true + + /ieee754@1.2.1: + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + } + dev: true + + /ignore-walk@6.0.3: + resolution: + { + integrity: sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + minimatch: 9.0.3 + dev: true + + /ignore@5.2.4: + resolution: + { + integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, + } + engines: { node: '>= 4' } + dev: true + + /ignore@5.3.0: + resolution: + { + integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==, + } + engines: { node: '>= 4' } + dev: true + + /image-meta@0.2.0: + resolution: + { + integrity: sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==, + } + dev: true + + /import-fresh@3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + } + engines: { node: '>=6' } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-local@3.1.0: + resolution: + { + integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, + } + engines: { node: '>=8' } + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /import-meta-resolve@2.2.2: + resolution: + { + integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==, + } + dev: true + + /imurmurhash@0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: '>=0.8.19' } + dev: true + + /indent-string@4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + } + engines: { node: '>=8' } + dev: true + + /inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + /ini@1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + } + dev: true + + /ini@4.1.1: + resolution: + { + integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dev: true + + /inline-style-parser@0.1.1: + resolution: + { + integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==, + } + dev: true + + /internal-slot@1.0.5: + resolution: + { + integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==, + } + engines: { node: '>= 0.4' } + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /ioredis@5.3.2: + resolution: + { + integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==, + } + engines: { node: '>=12.22.0' } + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.4 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /ip@2.0.0: + resolution: + { + integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==, + } + dev: true + + /ipaddr.js@1.9.1: + resolution: + { + integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, + } + engines: { node: '>= 0.10' } + + /iron-webcrypto@1.0.0: + resolution: + { + integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==, + } + dev: true + + /is-alphabetical@2.0.1: + resolution: + { + integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==, + } + dev: true + + /is-alphanumerical@2.0.1: + resolution: + { + integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==, + } + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: true + + /is-arguments@1.1.1: + resolution: + { + integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-array-buffer@3.0.2: + resolution: + { + integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + } + dev: true + + /is-async-function@2.0.0: + resolution: + { + integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==, + } + engines: { node: '>= 0.4' } + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: + { + integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + } + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: '>=8' } + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object@1.1.2: + resolution: + { + integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer@2.0.5: + resolution: + { + integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==, + } + engines: { node: '>=4' } + dev: true + + /is-builtin-module@3.2.1: + resolution: + { + integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==, + } + engines: { node: '>=6' } + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: + { + integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, + } + engines: { node: '>= 0.4' } + + /is-core-module@2.13.0: + resolution: + { + integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==, + } + dependencies: + has: 1.0.3 + dev: true + + /is-date-object@1.0.5: + resolution: + { + integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, + } + engines: { node: '>= 0.4' } + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal@2.0.1: + resolution: + { + integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==, + } + dev: true + + /is-deflate@1.0.0: + resolution: + { + integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==, + } + dev: true + + /is-docker@2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: '>=8' } + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: '>=0.10.0' } + + /is-finalizationregistry@1.0.2: + resolution: + { + integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==, + } + dependencies: + call-bind: 1.0.2 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: '>=8' } + dev: true + + /is-fullwidth-code-point@4.0.0: + resolution: + { + integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, + } + engines: { node: '>=12' } + dev: false + + /is-generator-fn@2.1.0: + resolution: + { + integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, + } + engines: { node: '>=6' } + dev: true + + /is-generator-function@1.0.10: + resolution: + { + integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, + } + engines: { node: '>= 0.4' } + dependencies: + has-tostringtag: 1.0.0 + + /is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + + /is-gzip@1.0.0: + resolution: + { + integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /is-hexadecimal@2.0.1: + resolution: + { + integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==, + } + dev: true + + /is-inside-container@1.0.0: + resolution: + { + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, + } + engines: { node: '>=14.16' } + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + + /is-installed-globally@1.0.0: + resolution: + { + integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==, + } + engines: { node: '>=18' } + dependencies: + global-directory: 4.0.1 + is-path-inside: 4.0.0 + dev: true + + /is-interactive@1.0.0: + resolution: + { + integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, + } + engines: { node: '>=8' } + dev: true + + /is-lambda@1.0.1: + resolution: + { + integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==, + } + dev: true + + /is-map@2.0.2: + resolution: + { + integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==, + } + dev: true + + /is-module@1.0.0: + resolution: + { + integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, + } + dev: true + + /is-negative-zero@2.0.2: + resolution: + { + integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, + } + engines: { node: '>= 0.4' } + dev: true + + /is-number-object@1.0.7: + resolution: + { + integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, + } + engines: { node: '>= 0.4' } + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /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' } + dev: true + + /is-path-inside@4.0.0: + resolution: + { + integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==, + } + engines: { node: '>=12' } + dev: true + + /is-plain-obj@3.0.0: + resolution: + { + integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==, + } + engines: { node: '>=10' } + dev: true + + /is-plain-obj@4.1.0: + resolution: + { + integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==, + } + engines: { node: '>=12' } + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: + { + integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, + } + dev: true + + /is-primitive@3.0.1: + resolution: + { + integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==, + } + engines: { node: '>=0.10.0' } + dev: true + + /is-promise@4.0.0: + resolution: + { + integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==, + } + dev: true + + /is-reference@1.2.1: + resolution: + { + integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==, + } + dependencies: + '@types/estree': 1.0.2 + dev: true + + /is-reference@3.0.2: + resolution: + { + integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==, + } + dependencies: + '@types/estree': 1.0.2 + dev: true + + /is-regex@1.1.4: + resolution: + { + integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: + { + integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==, + } + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: + { + integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, + } + dependencies: + call-bind: 1.0.2 + dev: true + + /is-ssh@1.4.0: + resolution: + { + integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==, + } + dependencies: + protocols: 2.0.1 + dev: true + + /is-stream@2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: '>=8' } + dev: true + + /is-stream@3.0.0: + resolution: + { + integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + /is-string@1.0.7: + resolution: + { + integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, + } + engines: { node: '>= 0.4' } + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: + { + integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, + } + engines: { node: '>= 0.4' } + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.10: + resolution: + { + integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==, + } + engines: { node: '>= 0.4' } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /is-typed-array@1.1.12: + resolution: + { + integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==, + } + engines: { node: '>= 0.4' } + dependencies: + which-typed-array: 1.1.11 + + /is-unicode-supported@0.1.0: + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + } + engines: { node: '>=10' } + dev: true + + /is-weakmap@2.0.1: + resolution: + { + integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==, + } + dev: true + + /is-weakref@1.0.2: + resolution: + { + integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, + } + dependencies: + call-bind: 1.0.2 + dev: true + + /is-weakset@2.0.2: + resolution: + { + integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + dev: true + + /is-wsl@2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: '>=8' } + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@0.0.1: + resolution: + { + integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==, + } + dev: true + + /isarray@1.0.0: + resolution: + { + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, + } + dev: true + + /isarray@2.0.5: + resolution: + { + integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, + } + dev: true + + /isbot@3.6.8: + resolution: + { + integrity: sha512-V8XUXN0/UYxfgrui4o38pmOve2eO/1KjluxR1G8Qnu5gqlUiNrvtX06t1W5n8vFtrtKfHj96iFYuPL39jXUe8g==, + } + engines: { node: '>=12' } + dev: false + + /isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + + /isexe@3.1.1: + resolution: + { + integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, + } + engines: { node: '>=16' } + dev: true + + /istanbul-lib-coverage@3.2.0: + resolution: + { + integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==, + } + engines: { node: '>=8' } + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: + { + integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, + } + engines: { node: '>=8' } + dependencies: + '@babel/core': 7.22.15 + '@babel/parser': 7.23.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.0: + resolution: + { + integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==, + } + engines: { node: '>=10' } + dependencies: + '@babel/core': 7.22.15 + '@babel/parser': 7.23.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: + { + integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, + } + engines: { node: '>=10' } + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: + { + integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, + } + engines: { node: '>=10' } + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: + { + integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==, + } + engines: { node: '>=8' } + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /iterator.prototype@1.1.1: + resolution: + { + integrity: sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==, + } + dependencies: + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + dev: true + + /jackspeak@2.3.6: + resolution: + { + integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==, + } + engines: { node: '>=14' } + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /javascript-stringify@2.1.0: + resolution: + { + integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==, + } + dev: true + + /jest-changed-files@29.6.3: + resolution: + { + integrity: sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + execa: 5.1.1 + jest-util: 29.6.3 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.6.4: + resolution: + { + integrity: sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/environment': 29.6.4 + '@jest/expect': 29.6.4 + '@jest/test-result': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.6.3 + jest-matcher-utils: 29.6.4 + jest-message-util: 29.6.3 + jest-runtime: 29.6.4 + jest-snapshot: 29.6.4 + jest-util: 29.6.3 + p-limit: 3.1.0 + pretty-format: 29.6.3 + pure-rand: 6.0.3 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.6.4(@types/node@20.5.9): + resolution: + { + integrity: sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.6.4 + '@jest/test-result': 29.6.4 + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.6.4(@types/node@20.5.9) + jest-util: 29.6.3 + jest-validate: 29.6.3 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.6.4(@types/node@20.5.9): + resolution: + { + integrity: sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.15 + '@jest/test-sequencer': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + babel-jest: 29.6.4(@babel/core@7.22.15) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.6.4 + jest-environment-node: 29.6.4 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.6.4 + jest-runner: 29.6.4 + jest-util: 29.6.3 + jest-validate: 29.6.3 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.6.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.6.4: + resolution: + { + integrity: sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.6.3 + dev: true + + /jest-docblock@29.6.3: + resolution: + { + integrity: sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.6.3: + resolution: + { + integrity: sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.6.3 + pretty-format: 29.6.3 + dev: true + + /jest-environment-jsdom@29.6.4: + resolution: + { + integrity: sha512-K6wfgUJ16DoMs02JYFid9lOsqfpoVtyJxpRlnTxUHzvZWBnnh2VNGRB9EC1Cro96TQdq5TtSjb3qUjNaJP9IyA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.6.4 + '@jest/fake-timers': 29.6.4 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.5.9 + jest-mock: 29.6.3 + jest-util: 29.6.3 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node@29.6.4: + resolution: + { + integrity: sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/environment': 29.6.4 + '@jest/fake-timers': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + jest-mock: 29.6.3 + jest-util: 29.6.3 + dev: true + + /jest-get-type@29.6.3: + resolution: + { + integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dev: true + + /jest-haste-map@29.6.4: + resolution: + { + integrity: sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.6 + '@types/node': 20.5.9 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.6.3 + jest-worker: 29.6.4 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.6.3: + resolution: + { + integrity: sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.6.3 + dev: true + + /jest-matcher-utils@29.6.4: + resolution: + { + integrity: sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + chalk: 4.1.2 + jest-diff: 29.6.4 + jest-get-type: 29.6.3 + pretty-format: 29.6.3 + dev: true + + /jest-message-util@29.6.3: + resolution: + { + integrity: sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.6.3 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.6.3: + resolution: + { + integrity: sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + jest-util: 29.6.3 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.6.4): + resolution: + { + integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, + } + engines: { node: '>=6' } + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.6.4 + dev: true + + /jest-regex-util@29.6.3: + resolution: + { + integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dev: true + + /jest-resolve-dependencies@29.6.4: + resolution: + { + integrity: sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.6.4: + resolution: + { + integrity: sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.6.4 + jest-pnp-resolver: 1.2.3(jest-resolve@29.6.4) + jest-util: 29.6.3 + jest-validate: 29.6.3 + resolve: 1.22.4 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.6.4: + resolution: + { + integrity: sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/console': 29.6.4 + '@jest/environment': 29.6.4 + '@jest/test-result': 29.6.4 + '@jest/transform': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.6.3 + jest-environment-node: 29.6.4 + jest-haste-map: 29.6.4 + jest-leak-detector: 29.6.3 + jest-message-util: 29.6.3 + jest-resolve: 29.6.4 + jest-runtime: 29.6.4 + jest-util: 29.6.3 + jest-watcher: 29.6.4 + jest-worker: 29.6.4 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.6.4: + resolution: + { + integrity: sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/environment': 29.6.4 + '@jest/fake-timers': 29.6.4 + '@jest/globals': 29.6.4 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.6.4 + '@jest/transform': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.6.4 + jest-message-util: 29.6.3 + jest-mock: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.6.4 + jest-snapshot: 29.6.4 + jest-util: 29.6.3 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.6.4: + resolution: + { + integrity: sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.15) + '@babel/types': 7.23.4 + '@jest/expect-utils': 29.6.4 + '@jest/transform': 29.6.4 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) + chalk: 4.1.2 + expect: 29.6.4 + graceful-fs: 4.2.11 + jest-diff: 29.6.4 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.6.4 + jest-message-util: 29.6.3 + jest-util: 29.6.3 + natural-compare: 1.4.0 + pretty-format: 29.6.3 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.6.3: + resolution: + { + integrity: sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.6.3: + resolution: + { + integrity: sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.6.3 + dev: true + + /jest-watcher@29.6.4: + resolution: + { + integrity: sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/test-result': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.6.3 + string-length: 4.0.2 + dev: true + + /jest-worker@29.6.4: + resolution: + { + integrity: sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@types/node': 20.5.9 + jest-util: 29.6.3 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.6.4(@types/node@20.5.9): + resolution: + { + integrity: sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.6.4 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.6.4(@types/node@20.5.9) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jiti@1.21.0: + resolution: + { + integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==, + } + hasBin: true + dev: true + + /jju@1.4.0: + resolution: + { + integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==, + } + dev: true + + /joycon@3.1.1: + resolution: + { + integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, + } + engines: { node: '>=10' } + dev: true + + /js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } + + /js-yaml@3.14.1: + resolution: + { + integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, + } + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom@20.0.3: + resolution: + { + integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==, + } + engines: { node: '>=14' } + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.10.0 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.13.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@0.5.0: + resolution: + { + integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==, + } + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + } + engines: { node: '>=4' } + hasBin: true + + /jsesc@3.0.2: + resolution: + { + integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==, + } + engines: { node: '>=6' } + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, + } + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, + } + dev: true + + /json-parse-even-better-errors@3.0.0: + resolution: + { + integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dev: true + + /json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } + dev: true + + /json5@1.0.2: + resolution: + { + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + } + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: + { + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, + } + engines: { node: '>=6' } + hasBin: true + + /jsonc-parser@3.2.0: + resolution: + { + integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, + } + dev: true + + /jsonfile@6.1.0: + resolution: + { + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + } + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonparse@1.3.1: + resolution: + { + integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, + } + engines: { '0': node >= 0.2.0 } + dev: true + + /jsx-ast-utils@3.3.5: + resolution: + { + integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==, + } + engines: { node: '>=4.0' } + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.1 + object.assign: 4.1.4 + object.values: 1.1.7 + dev: true + + /keyv@4.5.3: + resolution: + { + integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==, + } + dependencies: + json-buffer: 3.0.1 + dev: true + + /kleur@3.0.3: + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, + } + engines: { node: '>=6' } + dev: true + + /kleur@4.1.5: + resolution: + { + integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, + } + engines: { node: '>=6' } + dev: true + + /klona@2.0.6: + resolution: + { + integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==, + } + engines: { node: '>= 8' } + dev: true + + /knitwork@1.0.0: + resolution: + { + integrity: sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q==, + } + dev: true + + /kolorist@1.8.0: + resolution: + { + integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==, + } + dev: true + + /language-subtag-registry@0.3.22: + resolution: + { + integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, + } + dev: true + + /language-tags@1.0.5: + resolution: + { + integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==, + } + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /launch-editor@2.6.1: + resolution: + { + integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==, + } + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: true + + /lazystream@1.0.1: + resolution: + { + integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==, + } + engines: { node: '>= 0.6.3' } + dependencies: + readable-stream: 2.3.8 + dev: true + + /leven@3.1.0: + resolution: + { + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + } + engines: { node: '>=6' } + dev: true + + /levn@0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: + { + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, + } + engines: { node: '>=10' } + + /lines-and-columns@1.2.4: + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + } + dev: true + + /lint-staged@14.0.1: + resolution: + { + integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + hasBin: true + dependencies: + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4 + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + dev: false + + /listhen@1.5.5: + resolution: + { + integrity: sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==, + } + hasBin: true + dependencies: + '@parcel/watcher': 2.3.0 + '@parcel/watcher-wasm': 2.3.0 + citty: 0.1.5 + clipboardy: 3.0.0 + consola: 3.2.3 + defu: 6.1.3 + get-port-please: 3.1.1 + h3: 1.9.0 + http-shutdown: 1.2.2 + jiti: 1.21.0 + mlly: 1.4.2 + node-forge: 1.3.1 + pathe: 1.1.1 + std-env: 3.5.0 + ufo: 1.3.2 + untun: 0.1.2 + uqr: 0.1.2 + dev: true + + /listr2@6.6.1: + resolution: + { + integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==, + } + engines: { node: '>=16.0.0' } + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.3.0 + wrap-ansi: 8.1.0 + dev: false + + /load-tsconfig@0.2.5: + resolution: + { + integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dev: true + + /loader-utils@3.2.1: + resolution: + { + integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==, + } + engines: { node: '>= 12.13.0' } + dev: true + + /local-pkg@0.4.3: + resolution: + { + integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==, + } + engines: { node: '>=14' } + dev: true + + /local-pkg@0.5.0: + resolution: + { + integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==, + } + engines: { node: '>=14' } + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 + dev: true + + /locate-character@3.0.0: + resolution: + { + integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==, + } + dev: true + + /locate-path@5.0.0: + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + } + engines: { node: '>=8' } + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: '>=10' } + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.camelcase@4.3.0: + resolution: + { + integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, + } + dev: true + + /lodash.debounce@4.0.8: + resolution: + { + integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, + } + dev: true + + /lodash.defaults@4.2.0: + resolution: + { + integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==, + } + dev: true + + /lodash.isarguments@3.1.0: + resolution: + { + integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==, + } + dev: true + + /lodash.memoize@4.1.2: + resolution: + { + integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, + } + dev: true + + /lodash.merge@4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } + dev: true + + /lodash.pick@4.4.0: + resolution: + { + integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==, + } + dev: true + + /lodash.sortby@4.7.0: + resolution: + { + integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==, + } + dev: true + + /lodash.uniq@4.5.0: + resolution: + { + integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, + } + dev: true + + /lodash@4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + dev: true + + /log-symbols@4.1.0: + resolution: + { + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, + } + engines: { node: '>=10' } + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update@5.0.1: + resolution: + { + integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + dev: false + + /longest-streak@3.1.0: + resolution: + { + integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, + } + dev: true + + /loose-envify@1.4.0: + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache@10.1.0: + resolution: + { + integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==, + } + engines: { node: 14 || >=16.14 } + dev: true + + /lru-cache@5.1.1: + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + } + dependencies: + yallist: 3.1.1 + + /lru-cache@6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + } + engines: { node: '>=10' } + dependencies: + yallist: 4.0.0 + dev: true + + /lru-cache@7.18.3: + resolution: + { + integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==, + } + engines: { node: '>=12' } + dev: true + + /lz-string@1.5.0: + resolution: + { + integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, + } + hasBin: true + dev: true + + /magic-string-ast@0.3.0: + resolution: + { + integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==, + } + engines: { node: '>=16.14.0' } + dependencies: + magic-string: 0.30.5 + dev: true + + /magic-string@0.27.0: + resolution: + { + integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==, + } + engines: { node: '>=12' } + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /magic-string@0.30.5: + resolution: + { + integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==, + } + engines: { node: '>=12' } + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /magicast@0.3.2: + resolution: + { + integrity: sha512-Fjwkl6a0syt9TFN0JSYpOybxiMCkYNEeOTnOTNRbjphirLakznZXAqrXgj/7GG3D1dvETONNwrBfinvAbpunDg==, + } + dependencies: + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + source-map-js: 1.0.2 + dev: true + + /make-dir@3.1.0: + resolution: + { + integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, + } + engines: { node: '>=8' } + dependencies: + semver: 6.3.1 + dev: true + + /make-dir@4.0.0: + resolution: + { + integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, + } + engines: { node: '>=10' } + dependencies: + semver: 7.5.4 + dev: true + + /make-fetch-happen@13.0.0: + resolution: + { + integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@npmcli/agent': 2.2.0 + cacache: 18.0.0 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /makeerror@1.0.12: + resolution: + { + integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, + } + dependencies: + tmpl: 1.0.5 + dev: true + + /markdown-extensions@1.1.1: + resolution: + { + integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==, + } + engines: { node: '>=0.10.0' } + dev: true + + /mdast-util-definitions@5.1.2: + resolution: + { + integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==, + } + dependencies: + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 + unist-util-visit: 4.1.2 + dev: true + + /mdast-util-from-markdown@1.3.1: + resolution: + { + integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==, + } + dependencies: + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-frontmatter@1.0.1: + resolution: + { + integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==, + } + dependencies: + '@types/mdast': 3.0.13 + mdast-util-to-markdown: 1.5.0 + micromark-extension-frontmatter: 1.1.1 + dev: true + + /mdast-util-mdx-expression@1.3.2: + resolution: + { + integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==, + } + dependencies: + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx-jsx@2.1.4: + resolution: + { + integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==, + } + dependencies: + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 + ccount: 2.0.1 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 4.0.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx@2.0.1: + resolution: + { + integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==, + } + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdx-jsx: 2.1.4 + mdast-util-mdxjs-esm: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdxjs-esm@1.3.1: + resolution: + { + integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==, + } + dependencies: + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-phrasing@3.0.1: + resolution: + { + integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==, + } + dependencies: + '@types/mdast': 3.0.13 + unist-util-is: 5.2.1 + dev: true + + /mdast-util-to-hast@12.3.0: + resolution: + { + integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==, + } + dependencies: + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.2.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + dev: true + + /mdast-util-to-markdown@1.5.0: + resolution: + { + integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==, + } + dependencies: + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + dev: true + + /mdast-util-to-string@3.2.0: + resolution: + { + integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==, + } + dependencies: + '@types/mdast': 3.0.13 + dev: true + + /mdn-data@2.0.28: + resolution: + { + integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==, + } + dev: true + + /mdn-data@2.0.30: + resolution: + { + integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, + } + dev: true + + /media-query-parser@2.0.2: + resolution: + { + integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==, + } + dependencies: + '@babel/runtime': 7.22.15 + dev: true + + /media-typer@0.3.0: + resolution: + { + integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, + } + engines: { node: '>= 0.6' } + + /merge-descriptors@1.0.1: + resolution: + { + integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==, + } + + /merge-stream@2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } + + /merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: '>= 8' } + dev: true + + /methods@1.1.2: + resolution: + { + integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, + } + engines: { node: '>= 0.6' } + + /micromark-core-commonmark@1.1.0: + resolution: + { + integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==, + } + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-extension-frontmatter@1.1.1: + resolution: + { + integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==, + } + dependencies: + fault: 2.0.1 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-extension-mdx-expression@1.0.8: + resolution: + { + integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==, + } + dependencies: + '@types/estree': 1.0.2 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-extension-mdx-jsx@1.0.5: + resolution: + { + integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==, + } + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.2 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: true + + /micromark-extension-mdx-md@1.0.1: + resolution: + { + integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==, + } + dependencies: + micromark-util-types: 1.1.0 + dev: true + + /micromark-extension-mdxjs-esm@1.0.5: + resolution: + { + integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==, + } + dependencies: + '@types/estree': 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: true + + /micromark-extension-mdxjs@1.0.1: + resolution: + { + integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==, + } + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + micromark-extension-mdx-expression: 1.0.8 + micromark-extension-mdx-jsx: 1.0.5 + micromark-extension-mdx-md: 1.0.1 + micromark-extension-mdxjs-esm: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-destination@1.1.0: + resolution: + { + integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==, + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-label@1.1.0: + resolution: + { + integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==, + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-factory-mdx-expression@1.0.9: + resolution: + { + integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==, + } + dependencies: + '@types/estree': 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: true + + /micromark-factory-space@1.1.0: + resolution: + { + integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==, + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-title@1.1.0: + resolution: + { + integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==, + } + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-whitespace@1.1.0: + resolution: + { + integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==, + } + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-character@1.2.0: + resolution: + { + integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==, + } + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-chunked@1.1.0: + resolution: + { + integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==, + } + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-classify-character@1.1.0: + resolution: + { + integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==, + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-combine-extensions@1.1.0: + resolution: + { + integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==, + } + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: + { + integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==, + } + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-decode-string@1.1.0: + resolution: + { + integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==, + } + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-encode@1.1.0: + resolution: + { + integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==, + } + dev: true + + /micromark-util-events-to-acorn@1.2.3: + resolution: + { + integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==, + } + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.2 + '@types/unist': 2.0.8 + estree-util-visit: 1.2.1 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: true + + /micromark-util-html-tag-name@1.2.0: + resolution: + { + integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==, + } + dev: true + + /micromark-util-normalize-identifier@1.1.0: + resolution: + { + integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==, + } + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-resolve-all@1.1.0: + resolution: + { + integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==, + } + dependencies: + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-sanitize-uri@1.2.0: + resolution: + { + integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==, + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-subtokenize@1.1.0: + resolution: + { + integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==, + } + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-util-symbol@1.1.0: + resolution: + { + integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==, + } + dev: true + + /micromark-util-types@1.1.0: + resolution: + { + integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==, + } + dev: true + + /micromark@3.2.0: + resolution: + { + integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==, + } + dependencies: + '@types/debug': 4.1.9 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch@4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, + } + engines: { node: '>=8.6' } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db@1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: '>= 0.6' } + + /mime-types@2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + } + engines: { node: '>=4' } + hasBin: true + + /mime@3.0.0: + resolution: + { + integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==, + } + engines: { node: '>=10.0.0' } + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: '>=6' } + + /mimic-fn@4.0.0: + resolution: + { + integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, + } + engines: { node: '>=12' } + + /min-indent@1.0.1: + resolution: + { + integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, + } + engines: { node: '>=4' } + dev: true + + /minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: + { + integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, + } + engines: { node: '>=10' } + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: + { + integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, + } + engines: { node: '>=16 || 14 >=14.17' } + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } + dev: true + + /minipass-collect@1.0.2: + resolution: + { + integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==, + } + engines: { node: '>= 8' } + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-fetch@3.0.4: + resolution: + { + integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush@1.0.5: + resolution: + { + integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==, + } + engines: { node: '>= 8' } + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-json-stream@1.0.1: + resolution: + { + integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==, + } + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + dev: true + + /minipass-pipeline@1.2.4: + resolution: + { + integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==, + } + engines: { node: '>=8' } + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-sized@1.0.3: + resolution: + { + integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==, + } + engines: { node: '>=8' } + dependencies: + minipass: 3.3.6 + dev: true + + /minipass@3.3.6: + resolution: + { + integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==, + } + engines: { node: '>=8' } + dependencies: + yallist: 4.0.0 + dev: true + + /minipass@5.0.0: + resolution: + { + integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==, + } + engines: { node: '>=8' } + dev: true + + /minipass@7.0.4: + resolution: + { + integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==, + } + engines: { node: '>=16 || 14 >=14.17' } + dev: true + + /minizlib@2.1.2: + resolution: + { + integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==, + } + engines: { node: '>= 8' } + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /mkdirp-classic@0.5.3: + resolution: + { + integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==, + } + dev: true + + /mkdirp@0.5.6: + resolution: + { + integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, + } + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: + { + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, + } + engines: { node: '>=10' } + hasBin: true + dev: true + + /mlly@1.4.2: + resolution: + { + integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==, + } + dependencies: + acorn: 8.11.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: true + + /morgan@1.10.0: + resolution: + { + integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==, + } + engines: { node: '>= 0.8.0' } + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + transitivePeerDependencies: + - supports-color + + /mri@1.2.0: + resolution: + { + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, + } + engines: { node: '>=4' } + dev: true + + /mrmime@1.0.1: + resolution: + { + integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==, + } + engines: { node: '>=10' } + + /ms@2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } + + /ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + + /ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + + /mz@2.7.0: + resolution: + { + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, + } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nanoid@3.3.6: + resolution: + { + integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + /nanoid@4.0.2: + resolution: + { + integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==, + } + engines: { node: ^14 || ^16 || >=18 } + hasBin: true + dev: true + + /natural-compare-lite@1.4.0: + resolution: + { + integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==, + } + dev: true + + /natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + dev: true + + /negotiator@0.6.3: + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + } + engines: { node: '>= 0.6' } + + /next@13.4.19(@babel/core@7.23.3)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==, + } + engines: { node: '>=16.8.0' } + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.4.19 + '@swc/helpers': 0.5.1 + busboy: 1.6.0 + caniuse-lite: 1.0.30001527 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.23.3)(react@18.2.0) + watchpack: 2.4.0 + zod: 3.21.4 + optionalDependencies: + '@next/swc-darwin-arm64': 13.4.19 + '@next/swc-darwin-x64': 13.4.19 + '@next/swc-linux-arm64-gnu': 13.4.19 + '@next/swc-linux-arm64-musl': 13.4.19 + '@next/swc-linux-x64-gnu': 13.4.19 + '@next/swc-linux-x64-musl': 13.4.19 + '@next/swc-win32-arm64-msvc': 13.4.19 + '@next/swc-win32-ia32-msvc': 13.4.19 + '@next/swc-win32-x64-msvc': 13.4.19 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: true + + /next@14.0.3(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==, + } + engines: { node: '>=18.17.0' } + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.0.3 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001564 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) + watchpack: 2.4.0 + optionalDependencies: + '@next/swc-darwin-arm64': 14.0.3 + '@next/swc-darwin-x64': 14.0.3 + '@next/swc-linux-arm64-gnu': 14.0.3 + '@next/swc-linux-arm64-musl': 14.0.3 + '@next/swc-linux-x64-gnu': 14.0.3 + '@next/swc-linux-x64-musl': 14.0.3 + '@next/swc-win32-arm64-msvc': 14.0.3 + '@next/swc-win32-ia32-msvc': 14.0.3 + '@next/swc-win32-x64-msvc': 14.0.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /nitropack@2.8.0: + resolution: + { + integrity: sha512-dkCILTSpM1Sd3oaagV21ifPxPOSCvFZjfdDMOa6SrxpcntitHkD1QgvjdbqEfnwGNPGbp7Z42qNhzNljDVeKMQ==, + } + engines: { node: ^16.11.0 || >=17.0.0 } + hasBin: true + peerDependencies: + xml2js: ^0.6.2 + peerDependenciesMeta: + xml2js: + optional: true + dependencies: + '@cloudflare/kv-asset-handler': 0.3.0 + '@netlify/functions': 2.4.0 + '@rollup/plugin-alias': 5.0.1(rollup@4.5.1) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.5.1) + '@rollup/plugin-inject': 5.0.5(rollup@4.5.1) + '@rollup/plugin-json': 6.0.1(rollup@4.5.1) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.5.1) + '@rollup/plugin-replace': 5.0.5(rollup@4.5.1) + '@rollup/plugin-terser': 0.4.4(rollup@4.5.1) + '@rollup/plugin-wasm': 6.2.2(rollup@4.5.1) + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + '@types/http-proxy': 1.17.14 + '@vercel/nft': 0.24.3 + archiver: 6.0.1 + c12: 1.5.1 + chalk: 5.3.0 + chokidar: 3.5.3 + citty: 0.1.5 + consola: 3.2.3 + cookie-es: 1.0.0 + defu: 6.1.3 + destr: 2.0.2 + dot-prop: 8.0.2 + esbuild: 0.19.7 + escape-string-regexp: 5.0.0 + etag: 1.8.1 + fs-extra: 11.1.1 + globby: 14.0.0 + gzip-size: 7.0.0 + h3: 1.9.0 + hookable: 5.5.3 + httpxy: 0.1.5 + is-primitive: 3.0.1 + jiti: 1.21.0 + klona: 2.0.6 + knitwork: 1.0.0 + listhen: 1.5.5 + magic-string: 0.30.5 + mime: 3.0.0 + mlly: 1.4.2 + mri: 1.2.0 + node-fetch-native: 1.4.1 + ofetch: 1.3.3 + ohash: 1.1.3 + openapi-typescript: 6.7.1 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + pretty-bytes: 6.1.1 + radix3: 1.1.0 + rollup: 4.5.1 + rollup-plugin-visualizer: 5.9.2(rollup@4.5.1) + scule: 1.1.0 + semver: 7.5.4 + serve-placeholder: 2.0.1 + serve-static: 1.15.0 + std-env: 3.5.0 + ufo: 1.3.2 + uncrypto: 0.1.3 + unctx: 2.3.1 + unenv: 1.8.0 + unimport: 3.6.0(rollup@4.5.1) + unstorage: 1.10.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - encoding + - idb-keyval + - supports-color + dev: true + + /node-addon-api@7.0.0: + resolution: + { + integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==, + } + dev: true + + /node-fetch-native@1.4.1: + resolution: + { + integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==, + } + dev: true + + /node-fetch@2.7.0: + resolution: + { + integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, + } + engines: { node: 4.x || >=6.0.0 } + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-forge@1.3.1: + resolution: + { + integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==, + } + engines: { node: '>= 6.13.0' } + dev: true + + /node-gyp-build@4.7.0: + resolution: + { + integrity: sha512-PbZERfeFdrHQOOXiAKOY0VPbykZy90ndPKk0d+CFDegTKmWp1VgOTz2xACVbr1BjCWxrQp68CXtvNsveFhqDJg==, + } + hasBin: true + dev: true + + /node-gyp@10.0.1: + resolution: + { + integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.3.10 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 + semver: 7.5.4 + tar: 6.2.0 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /node-int64@0.4.0: + resolution: + { + integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, + } + dev: true + + /node-releases@2.0.13: + resolution: + { + integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==, + } + + /noms@0.0.0: + resolution: + { + integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==, + } + dependencies: + inherits: 2.0.4 + readable-stream: 1.0.34 + dev: true + + /nopt@5.0.0: + resolution: + { + integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==, + } + engines: { node: '>=6' } + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /nopt@7.2.0: + resolution: + { + integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: true + + /normalize-package-data@2.5.0: + resolution: + { + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, + } + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.4 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data@5.0.0: + resolution: + { + integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + hosted-git-info: 6.1.1 + is-core-module: 2.13.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data@6.0.0: + resolution: + { + integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: '>=0.10.0' } + + /normalize-range@0.1.2: + resolution: + { + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /npm-bundled@3.0.0: + resolution: + { + integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + npm-normalize-package-bin: 3.0.1 + dev: true + + /npm-install-checks@6.2.0: + resolution: + { + integrity: sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + semver: 7.5.4 + dev: true + + /npm-normalize-package-bin@3.0.1: + resolution: + { + integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dev: true + + /npm-package-arg@10.1.0: + resolution: + { + integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-package-arg@11.0.1: + resolution: + { + integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-packlist@8.0.0: + resolution: + { + integrity: sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + ignore-walk: 6.0.3 + dev: true + + /npm-pick-manifest@8.0.2: + resolution: + { + integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + npm-install-checks: 6.2.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 10.1.0 + semver: 7.5.4 + dev: true + + /npm-pick-manifest@9.0.0: + resolution: + { + integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + npm-install-checks: 6.2.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.5.4 + dev: true + + /npm-registry-fetch@16.1.0: + resolution: + { + integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + make-fetch-happen: 13.0.0 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 11.0.1 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /npm-run-path@4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: '>=8' } + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.1.0: + resolution: + { + integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + path-key: 4.0.0 + + /npmlog@5.0.1: + resolution: + { + integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==, + } + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: true + + /nth-check@2.1.1: + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, + } + dependencies: + boolbase: 1.0.0 + dev: true + + /nuxi@3.10.0: + resolution: + { + integrity: sha512-veZXw2NuaQ1PrpvHrnQ1dPgkAjv0WqPlvFReg5Iubum0QVGWdJJvGuNsltDQyPcZ7X7mhMXq9SLIpokK4kpvKA==, + } + engines: { node: ^14.18.0 || >=16.10.0 } + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /nuxt@3.8.2(eslint@8.48.0)(typescript@5.2.2)(vite@4.5.0): + resolution: + { + integrity: sha512-HUAyifmqTs2zcQBGvcby3KNs2pBAk+l7ZbLjD1oCNqQQ+wBuZ1qgLC4Ebu++y4g3o3Y8WAWSvpafbKRLQZziPw==, + } + engines: { node: ^14.18.0 || >=16.10.0 } + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.1.0 + '@types/node': ^14.18.0 || >=16.10.0 + peerDependenciesMeta: + '@parcel/watcher': + optional: true + '@types/node': + optional: true + dependencies: + '@nuxt/devalue': 2.0.2 + '@nuxt/devtools': 1.0.3(nuxt@3.8.2)(vite@4.5.0) + '@nuxt/kit': 3.8.2 + '@nuxt/schema': 3.8.2 + '@nuxt/telemetry': 2.5.3 + '@nuxt/ui-templates': 1.3.1 + '@nuxt/vite-builder': 3.8.2(eslint@8.48.0)(typescript@5.2.2)(vue@3.3.8) + '@unhead/dom': 1.8.8 + '@unhead/ssr': 1.8.8 + '@unhead/vue': 1.8.8(vue@3.3.8) + '@vue/shared': 3.3.8 + acorn: 8.11.2 + c12: 1.5.1 + chokidar: 3.5.3 + cookie-es: 1.0.0 + defu: 6.1.3 + destr: 2.0.2 + devalue: 4.3.2 + esbuild: 0.19.7 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fs-extra: 11.1.1 + globby: 14.0.0 + h3: 1.9.0 + hookable: 5.5.3 + jiti: 1.21.0 + klona: 2.0.6 + knitwork: 1.0.0 + magic-string: 0.30.5 + mlly: 1.4.2 + nitropack: 2.8.0 + nuxi: 3.10.0 + nypm: 0.3.3 + ofetch: 1.3.3 + ohash: 1.1.3 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + radix3: 1.1.0 + scule: 1.1.0 + std-env: 3.5.0 + strip-literal: 1.3.0 + ufo: 1.3.2 + ultrahtml: 1.5.2 + uncrypto: 0.1.3 + unctx: 2.3.1 + unenv: 1.8.0 + unimport: 3.6.0(rollup@4.5.1) + unplugin: 1.5.1 + unplugin-vue-router: 0.7.0(vue-router@4.2.5)(vue@3.3.8) + untyped: 1.4.0 + vue: 3.3.8(typescript@5.2.2) + vue-bundle-renderer: 2.0.0 + vue-devtools-stub: 0.1.0 + vue-router: 4.2.5(vue@3.3.8) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - bluebird + - bufferutil + - encoding + - eslint + - idb-keyval + - less + - lightningcss + - meow + - optionator + - rollup + - sass + - stylelint + - stylus + - sugarss + - supports-color + - terser + - typescript + - utf-8-validate + - vite + - vls + - vti + - vue-tsc + - xml2js + dev: true + + /nwsapi@2.2.7: + resolution: + { + integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==, + } + dev: true + + /nypm@0.3.3: + resolution: + { + integrity: sha512-FHoxtTscAE723e80d2M9cJRb4YVjL82Ra+ZV+YqC6rfNZUWahi+ZhPF+krnR+bdMvibsfHCtgKXnZf5R6kmEPA==, + } + engines: { node: ^14.16.0 || >=16.10.0 } + hasBin: true + dependencies: + citty: 0.1.5 + execa: 8.0.1 + pathe: 1.1.1 + ufo: 1.3.2 + dev: true + + /object-assign@4.1.1: + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: '>=0.10.0' } + dev: true + + /object-inspect@1.12.2: + resolution: + { + integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==, + } + + /object-inspect@1.12.3: + resolution: + { + integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, + } + dev: true + + /object-is@1.1.5: + resolution: + { + integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + dev: true + + /object-keys@1.1.1: + resolution: + { + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, + } + engines: { node: '>= 0.4' } + dev: true + + /object.assign@4.1.4: + resolution: + { + integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: + { + integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /object.fromentries@2.0.7: + resolution: + { + integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /object.groupby@1.0.1: + resolution: + { + integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + dev: true + + /object.hasown@1.1.3: + resolution: + { + integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==, + } + dependencies: + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /object.values@1.1.7: + resolution: + { + integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /ofetch@1.3.3: + resolution: + { + integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==, + } + dependencies: + destr: 2.0.2 + node-fetch-native: 1.4.1 + ufo: 1.3.2 + dev: true + + /ohash@1.1.3: + resolution: + { + integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==, + } + dev: true + + /on-finished@2.3.0: + resolution: + { + integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==, + } + engines: { node: '>= 0.8' } + dependencies: + ee-first: 1.1.1 + + /on-finished@2.4.1: + resolution: + { + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, + } + engines: { node: '>= 0.8' } + dependencies: + ee-first: 1.1.1 + + /on-headers@1.0.2: + resolution: + { + integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==, + } + engines: { node: '>= 0.8' } + + /once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: '>=6' } + dependencies: + mimic-fn: 2.1.0 + + /onetime@6.0.0: + resolution: + { + integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, + } + engines: { node: '>=12' } + dependencies: + mimic-fn: 4.0.0 + + /open@8.4.2: + resolution: + { + integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, + } + engines: { node: '>=12' } + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /open@9.1.0: + resolution: + { + integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==, + } + engines: { node: '>=14.16' } + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /openapi-typescript@6.7.1: + resolution: + { + integrity: sha512-Q3Ltt0KUm2smcPrsaR8qKmSwQ1KM4yGDJVoQdpYa0yvKPeN8huDx5utMT7DvwvJastHHzUxajjivK3WN2+fobg==, + } + hasBin: true + dependencies: + ansi-colors: 4.1.3 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + supports-color: 9.4.0 + undici: 5.27.2 + yargs-parser: 21.1.1 + dev: true + + /optionator@0.9.3: + resolution: + { + integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==, + } + engines: { node: '>= 0.8.0' } + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: + { + integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, + } + engines: { node: '>=10' } + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.1 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /outdent@0.8.0: + resolution: + { + integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==, + } + dev: true + + /p-limit@2.3.0: + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + } + engines: { node: '>=6' } + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: '>=10' } + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + } + engines: { node: '>=8' } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: '>=10' } + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map@4.0.0: + resolution: + { + integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==, + } + engines: { node: '>=10' } + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + } + engines: { node: '>=6' } + dev: true + + /pacote@17.0.4: + resolution: + { + integrity: sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + hasBin: true + dependencies: + '@npmcli/git': 5.0.3 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 7.0.0 + '@npmcli/run-script': 7.0.2 + cacache: 18.0.0 + fs-minipass: 3.0.3 + minipass: 7.0.4 + npm-package-arg: 11.0.1 + npm-packlist: 8.0.0 + npm-pick-manifest: 9.0.0 + npm-registry-fetch: 16.1.0 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 7.0.0 + read-package-json-fast: 3.0.2 + sigstore: 2.1.0 + ssri: 10.0.5 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /pako@0.2.9: + resolution: + { + integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==, + } + dev: true + + /parent-module@1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: '>=6' } + dependencies: + callsites: 3.1.0 + dev: true + + /parse-entities@4.0.1: + resolution: + { + integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==, + } + dependencies: + '@types/unist': 2.0.8 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: true + + /parse-git-config@3.0.0: + resolution: + { + integrity: sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA==, + } + engines: { node: '>=8' } + dependencies: + git-config-path: 2.0.0 + ini: 1.3.8 + dev: true + + /parse-json@5.2.0: + resolution: + { + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, + } + engines: { node: '>=8' } + dependencies: + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-ms@2.1.0: + resolution: + { + integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==, + } + engines: { node: '>=6' } + dev: true + + /parse-path@7.0.0: + resolution: + { + integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==, + } + dependencies: + protocols: 2.0.1 + dev: true + + /parse-url@8.1.0: + resolution: + { + integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==, + } + dependencies: + parse-path: 7.0.0 + dev: true + + /parse5@7.1.2: + resolution: + { + integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==, + } + dependencies: + entities: 4.5.0 + dev: true + + /parseurl@1.3.3: + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, + } + engines: { node: '>= 0.8' } + + /path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: '>=8' } + dev: true + + /path-is-absolute@1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: '>=0.10.0' } + dev: true + + /path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: '>=8' } + + /path-key@4.0.0: + resolution: + { + integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, + } + engines: { node: '>=12' } + + /path-parse@1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } + dev: true + + /path-scurry@1.10.1: + resolution: + { + integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==, + } + engines: { node: '>=16 || 14 >=14.17' } + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: true + + /path-to-regexp@0.1.7: + resolution: + { + integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==, + } + + /path-type@4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: '>=8' } + dev: true + + /path-type@5.0.0: + resolution: + { + integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==, + } + engines: { node: '>=12' } + dev: true + + /pathe@1.1.1: + resolution: + { + integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==, + } + dev: true + + /peek-stream@1.1.3: + resolution: + { + integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==, + } + dependencies: + buffer-from: 1.1.2 + duplexify: 3.7.1 + through2: 2.0.5 + dev: true + + /perfect-debounce@1.0.0: + resolution: + { + integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, + } + dev: true + + /periscopic@3.1.0: + resolution: + { + integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==, + } + dependencies: + '@types/estree': 1.0.2 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: true + + /picocolors@1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + } + + /picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: '>=8.6' } + + /pidtree@0.6.0: + resolution: + { + integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==, + } + engines: { node: '>=0.10' } + hasBin: true + + /pirates@4.0.6: + resolution: + { + integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, + } + engines: { node: '>= 6' } + dev: true + + /pkg-dir@4.2.0: + resolution: + { + integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, + } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + dev: true + + /pkg-types@1.0.3: + resolution: + { + integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==, + } + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + dev: true + + /playwright-core@1.37.1: + resolution: + { + integrity: sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==, + } + engines: { node: '>=16' } + hasBin: true + dev: true + + /pluralize@8.0.0: + resolution: + { + integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, + } + engines: { node: '>=4' } + dev: true + + /postcss-calc@9.0.1(postcss@8.4.31): + resolution: + { + integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-colormin@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-convert-values@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-discard-comments@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-discard-duplicates@5.1.0(postcss@8.4.31): + resolution: + { + integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==, + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-discard-duplicates@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-discard-empty@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-discard-overridden@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-load-config@4.0.1(postcss@8.4.31): + resolution: + { + integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==, + } + engines: { node: '>= 14' } + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.31 + yaml: 2.3.2 + dev: true + + /postcss-merge-longhand@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + stylehacks: 6.0.0(postcss@8.4.31) + dev: true + + /postcss-merge-rules@6.0.1(postcss@8.4.31): + resolution: + { + integrity: sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-minify-font-values@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-gradients@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-params@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-selectors@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==, + } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-modules-local-by-default@4.0.3(postcss@8.4.31): + resolution: + { + integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==, + } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==, + } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==, + } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + dev: true + + /postcss-modules@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==, + } + peerDependencies: + postcss: ^8.0.0 + dependencies: + generic-names: 4.0.0 + icss-utils: 5.1.0(postcss@8.4.31) + lodash.camelcase: 4.3.0 + postcss: 8.4.31 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.31) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.31) + postcss-modules-scope: 3.0.0(postcss@8.4.31) + postcss-modules-values: 4.0.0(postcss@8.4.31) + string-hash: 1.1.3 + dev: true + + /postcss-normalize-charset@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-normalize-display-values@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-ordered-values@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-reduce-initial@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + postcss: 8.4.31 + dev: true + + /postcss-reduce-transforms@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-selector-parser@6.0.13: + resolution: + { + integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==, + } + engines: { node: '>=4' } + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==, + } + engines: { node: ^14 || ^16 || >= 18 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + svgo: 3.0.4 + dev: true + + /postcss-unique-selectors@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-value-parser@4.2.0: + resolution: + { + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, + } + dev: true + + /postcss@8.4.14: + resolution: + { + integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==, + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /postcss@8.4.31: + resolution: + { + integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls@1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: '>= 0.8.0' } + dev: true + + /prettier-plugin-packagejson@2.4.5(prettier@3.0.3): + resolution: + { + integrity: sha512-glG71jE1gO3y5+JNAhC8X+4yrlN28rub6Aj461SKbaPie9RgMiHKcInH2Moi2VGOfkTXaEHBhg4uVMBqa+kBUA==, + } + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + dependencies: + prettier: 3.0.3 + sort-package-json: 2.5.1 + synckit: 0.8.5 + dev: true + + /prettier@2.8.8: + resolution: + { + integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, + } + engines: { node: '>=10.13.0' } + hasBin: true + dev: true + + /prettier@3.0.3: + resolution: + { + integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==, + } + engines: { node: '>=14' } + hasBin: true + dev: true + + /pretty-bytes@6.1.1: + resolution: + { + integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==, + } + engines: { node: ^14.13.1 || >=16.0.0 } + dev: true + + /pretty-format@27.5.1: + resolution: + { + integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, + } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /pretty-format@29.6.3: + resolution: + { + integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /pretty-ms@7.0.1: + resolution: + { + integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==, + } + engines: { node: '>=10' } + dependencies: + parse-ms: 2.1.0 + dev: true + + /proc-log@3.0.0: + resolution: + { + integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dev: true + + /process-nextick-args@2.0.1: + resolution: + { + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, + } + dev: true + + /promise-inflight@1.0.1: + resolution: + { + integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==, + } + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-retry@2.0.1: + resolution: + { + integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==, + } + engines: { node: '>=10' } + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /prompts@2.4.2: + resolution: + { + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, + } + engines: { node: '>= 6' } + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /prop-types@15.8.1: + resolution: + { + integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, + } + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: true + + /property-information@6.3.0: + resolution: + { + integrity: sha512-gVNZ74nqhRMiIUYWGQdosYetaKc83x8oT41a0LlV3AAFCAZwCpg4vmGkq8t34+cUhp3cnM4XDiU/7xlgK7HGrg==, + } + dev: true + + /protocols@2.0.1: + resolution: + { + integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==, + } + dev: true + + /proxy-addr@2.0.7: + resolution: + { + integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, + } + engines: { node: '>= 0.10' } + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + /psl@1.9.0: + resolution: + { + integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, + } + dev: true + + /pump@2.0.1: + resolution: + { + integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==, + } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump@3.0.0: + resolution: + { + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, + } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pumpify@1.5.1: + resolution: + { + integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==, + } + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode@2.3.0: + resolution: + { + integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, + } + engines: { node: '>=6' } + dev: true + + /pure-rand@6.0.3: + resolution: + { + integrity: sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==, + } + dev: true + + /qs@6.11.0: + resolution: + { + integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==, + } + engines: { node: '>=0.6' } + dependencies: + side-channel: 1.0.4 + + /querystringify@2.2.0: + resolution: + { + integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, + } + dev: true + + /queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + dev: true + + /queue-tick@1.0.1: + resolution: + { + integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==, + } + dev: true + + /radix3@1.1.0: + resolution: + { + integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==, + } + dev: true + + /randombytes@2.1.0: + resolution: + { + integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, + } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: + { + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, + } + engines: { node: '>= 0.6' } + + /raw-body@2.5.1: + resolution: + { + integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==, + } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /rc9@2.1.1: + resolution: + { + integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==, + } + dependencies: + defu: 6.1.3 + destr: 2.0.2 + flat: 5.0.2 + dev: true + + /react-dom@18.2.0(react@18.2.0): + resolution: + { + integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==, + } + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-is@16.13.1: + resolution: + { + integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + } + dev: true + + /react-is@17.0.2: + resolution: + { + integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, + } + dev: true + + /react-is@18.2.0: + resolution: + { + integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, + } + dev: true + + /react-refresh@0.14.0: + resolution: + { + integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /react-router-dom@6.16.0(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.9.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.16.0(react@18.2.0) + + /react-router@6.16.0(react@18.2.0): + resolution: + { + integrity: sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==, + } + engines: { node: '>=14.0.0' } + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.9.0 + react: 18.2.0 + + /react@18.2.0: + resolution: + { + integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + loose-envify: 1.4.0 + + /read-package-json-fast@3.0.2: + resolution: + { + integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + json-parse-even-better-errors: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-package-json@7.0.0: + resolution: + { + integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.0 + normalize-package-data: 6.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-pkg-up@7.0.1: + resolution: + { + integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, + } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: + { + integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, + } + engines: { node: '>=8' } + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream@1.0.34: + resolution: + { + integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==, + } + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: true + + /readable-stream@2.3.8: + resolution: + { + integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, + } + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + } + engines: { node: '>= 6' } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdir-glob@1.1.3: + resolution: + { + integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==, + } + dependencies: + minimatch: 5.1.6 + dev: true + + /readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: '>=8.10.0' } + dependencies: + picomatch: 2.3.1 + + /redent@3.0.0: + resolution: + { + integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, + } + engines: { node: '>=8' } + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /redis-errors@1.2.0: + resolution: + { + integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==, + } + engines: { node: '>=4' } + dev: true + + /redis-parser@3.0.0: + resolution: + { + integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==, + } + engines: { node: '>=4' } + dependencies: + redis-errors: 1.2.0 + dev: true + + /reflect.getprototypeof@1.0.4: + resolution: + { + integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerator-runtime@0.13.10: + resolution: + { + integrity: sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==, + } + dev: true + + /regenerator-runtime@0.14.0: + resolution: + { + integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, + } + dev: true + + /regexp-tree@0.1.27: + resolution: + { + integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==, + } + hasBin: true + dev: true + + /regexp.prototype.flags@1.4.3: + resolution: + { + integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /regexp.prototype.flags@1.5.0: + resolution: + { + integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: true + + /regexpp@3.2.0: + resolution: + { + integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==, + } + engines: { node: '>=8' } + dev: true + + /regjsparser@0.10.0: + resolution: + { + integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==, + } + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /remark-frontmatter@4.0.1: + resolution: + { + integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==, + } + dependencies: + '@types/mdast': 3.0.13 + mdast-util-frontmatter: 1.0.1 + micromark-extension-frontmatter: 1.1.1 + unified: 10.1.2 + dev: true + + /remark-mdx-frontmatter@1.1.1: + resolution: + { + integrity: sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==, + } + engines: { node: '>=12.2.0' } + dependencies: + estree-util-is-identifier-name: 1.1.0 + estree-util-value-to-estree: 1.3.0 + js-yaml: 4.1.0 + toml: 3.0.0 + dev: true + + /remark-mdx@2.3.0: + resolution: + { + integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==, + } + dependencies: + mdast-util-mdx: 2.0.1 + micromark-extension-mdxjs: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-parse@10.0.2: + resolution: + { + integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==, + } + dependencies: + '@types/mdast': 3.0.13 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-rehype@10.1.0: + resolution: + { + integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==, + } + dependencies: + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + dev: true + + /require-directory@2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: '>=0.10.0' } + dev: true + + /require-like@0.1.2: + resolution: + { + integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==, + } + dev: true + + /requireindex@1.2.0: + resolution: + { + integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==, + } + engines: { node: '>=0.10.5' } + dev: true + + /requires-port@1.0.0: + resolution: + { + integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, + } + dev: true + + /resolve-cwd@3.0.0: + resolution: + { + integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, + } + engines: { node: '>=8' } + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: '>=4' } + dev: true + + /resolve-from@5.0.0: + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + } + engines: { node: '>=8' } + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: + { + integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, + } + dev: true + + /resolve.exports@2.0.2: + resolution: + { + integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==, + } + engines: { node: '>=10' } + dev: true + + /resolve@1.19.0: + resolution: + { + integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==, + } + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + dev: true + + /resolve@1.22.4: + resolution: + { + integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==, + } + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@2.0.0-next.4: + resolution: + { + integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==, + } + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor@3.1.0: + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + } + engines: { node: '>=8' } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /restore-cursor@4.0.0: + resolution: + { + integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: false + + /retry@0.12.0: + resolution: + { + integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==, + } + engines: { node: '>= 4' } + dev: true + + /reusify@1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + dev: true + + /rfdc@1.3.0: + resolution: + { + integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==, + } + dev: false + + /rimraf@2.7.1: + resolution: + { + integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==, + } + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + } + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup-plugin-visualizer@5.9.2(rollup@4.5.1): + resolution: + { + integrity: sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==, + } + engines: { node: '>=14' } + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + rollup: 4.5.1 + source-map: 0.7.4 + yargs: 17.7.2 + dev: true + + /rollup@3.28.1: + resolution: + { + integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==, + } + engines: { node: '>=14.18.0', npm: '>=8.0.0' } + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /rollup@4.5.1: + resolution: + { + integrity: sha512-0EQribZoPKpb5z1NW/QYm3XSR//Xr8BeEXU49Lc/mQmpmVVG5jPUVrpc2iptup/0WMrY9mzas0fxH+TjYvG2CA==, + } + engines: { node: '>=18.0.0', npm: '>=8.0.0' } + hasBin: true + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.5.1 + '@rollup/rollup-android-arm64': 4.5.1 + '@rollup/rollup-darwin-arm64': 4.5.1 + '@rollup/rollup-darwin-x64': 4.5.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.5.1 + '@rollup/rollup-linux-arm64-gnu': 4.5.1 + '@rollup/rollup-linux-arm64-musl': 4.5.1 + '@rollup/rollup-linux-x64-gnu': 4.5.1 + '@rollup/rollup-linux-x64-musl': 4.5.1 + '@rollup/rollup-win32-arm64-msvc': 4.5.1 + '@rollup/rollup-win32-ia32-msvc': 4.5.1 + '@rollup/rollup-win32-x64-msvc': 4.5.1 + fsevents: 2.3.3 + dev: true + + /run-applescript@5.0.0: + resolution: + { + integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==, + } + engines: { node: '>=12' } + dependencies: + execa: 5.1.1 + dev: true + + /run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + dependencies: + queue-microtask: 1.2.3 + dev: true + + /sade@1.8.1: + resolution: + { + integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, + } + engines: { node: '>=6' } + dependencies: + mri: 1.2.0 + dev: true + + /safe-array-concat@1.0.0: + resolution: + { + integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==, + } + engines: { node: '>=0.4' } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: + { + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, + } + + /safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + + /safe-regex-test@1.0.0: + resolution: + { + integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } + + /sander@0.5.1: + resolution: + { + integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==, + } + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + + /saxes@6.0.0: + resolution: + { + integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, + } + engines: { node: '>=v12.22.7' } + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler@0.23.0: + resolution: + { + integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, + } + dependencies: + loose-envify: 1.4.0 + + /scule@1.1.0: + resolution: + { + integrity: sha512-vRUjqhyM/YWYzT+jsMk6tnl3NkY4A4soJ8uyh3O6Um+JXEQL9ozUCe7pqrxn3CSKokw0hw3nFStfskzpgYwR0g==, + } + dev: true + + /semver@5.7.2: + resolution: + { + integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, + } + hasBin: true + dev: true + + /semver@6.3.1: + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, + } + hasBin: true + + /semver@7.5.4: + resolution: + { + integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, + } + engines: { node: '>=10' } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send@0.18.0: + resolution: + { + integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==, + } + engines: { node: '>= 0.8.0' } + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /serialize-javascript@6.0.1: + resolution: + { + integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==, + } + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-placeholder@2.0.1: + resolution: + { + integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==, + } + dependencies: + defu: 6.1.3 + dev: true + + /serve-static@1.15.0: + resolution: + { + integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==, + } + engines: { node: '>= 0.8.0' } + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + /set-blocking@2.0.0: + resolution: + { + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, + } + dev: true + + /set-cookie-parser@2.6.0: + resolution: + { + integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==, + } + + /setprototypeof@1.2.0: + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + } + + /shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: '>=8' } + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: '>=8' } + + /shell-quote@1.8.1: + resolution: + { + integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==, + } + dev: true + + /side-channel@1.0.4: + resolution: + { + integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 + + /signal-exit@3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + + /signal-exit@4.1.0: + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, + } + engines: { node: '>=14' } + dev: true + + /sigstore@2.1.0: + resolution: + { + integrity: sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@sigstore/bundle': 2.1.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 2.2.0 + '@sigstore/tuf': 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /simple-git@3.21.0: + resolution: + { + integrity: sha512-oTzw9248AF5bDTMk9MrxsRzEzivMlY+DWH0yWS4VYpMhNLhDWnN06pCtaUyPnqv/FpsdeNmRqmZugMABHRPdDA==, + } + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /sirv@2.0.3: + resolution: + { + integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==, + } + engines: { node: '>= 10' } + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: true + + /sisteransi@1.0.5: + resolution: + { + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, + } + dev: true + + /slash@3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: '>=8' } + dev: true + + /slash@4.0.0: + resolution: + { + integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==, + } + engines: { node: '>=12' } + dev: true + + /slash@5.1.0: + resolution: + { + integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, + } + engines: { node: '>=14.16' } + dev: true + + /slice-ansi@5.0.0: + resolution: + { + integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, + } + engines: { node: '>=12' } + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: false + + /smart-buffer@4.2.0: + resolution: + { + integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, + } + engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } + dev: true + + /smob@1.4.1: + resolution: + { + integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==, + } + dev: true + + /socks-proxy-agent@8.0.2: + resolution: + { + integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==, + } + engines: { node: '>= 14' } + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks@2.7.1: + resolution: + { + integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==, + } + engines: { node: '>= 10.13.0', npm: '>= 3.0.0' } + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: true + + /sorcery@0.11.0: + resolution: + { + integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==, + } + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + buffer-crc32: 0.2.13 + minimist: 1.2.8 + sander: 0.5.1 + dev: true + + /sort-object-keys@1.1.3: + resolution: + { + integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==, + } + dev: true + + /sort-package-json@2.5.1: + resolution: + { + integrity: sha512-vx/KoZxm8YNMUqdlw7SGTfqR5pqZ/sUfgOuRtDILiOy/3AvzhAibyUe2cY3OpLs3oRSow9up4yLVtQaM24rbDQ==, + } + hasBin: true + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.0 + get-stdin: 9.0.0 + git-hooks-list: 3.1.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 + sort-object-keys: 1.1.3 + dev: true + + /source-map-js@1.0.2: + resolution: + { + integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, + } + engines: { node: '>=0.10.0' } + + /source-map-support@0.5.13: + resolution: + { + integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, + } + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support@0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: '>=0.10.0' } + + /source-map@0.7.4: + resolution: + { + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, + } + engines: { node: '>= 8' } + + /source-map@0.8.0-beta.0: + resolution: + { + integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, + } + engines: { node: '>= 8' } + dependencies: + whatwg-url: 7.1.0 + dev: true + + /space-separated-tokens@2.0.2: + resolution: + { + integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, + } + dev: true + + /spdx-correct@3.2.0: + resolution: + { + integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, + } + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-exceptions@2.3.0: + resolution: + { + integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==, + } + dev: true + + /spdx-expression-parse@3.0.1: + resolution: + { + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, + } + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-license-ids@3.0.13: + resolution: + { + integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==, + } + dev: true + + /sprintf-js@1.0.3: + resolution: + { + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + } + dev: true + + /ssri@10.0.5: + resolution: + { + integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + minipass: 7.0.4 + dev: true + + /stack-utils@2.0.6: + resolution: + { + integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, + } + engines: { node: '>=10' } + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /standard-as-callback@2.1.0: + resolution: + { + integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==, + } + dev: true + + /statuses@2.0.1: + resolution: + { + integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, + } + engines: { node: '>= 0.8' } + + /std-env@3.5.0: + resolution: + { + integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==, + } + dev: true + + /stream-shift@1.0.1: + resolution: + { + integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==, + } + dev: true + + /stream-slice@0.1.2: + resolution: + { + integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==, + } + + /streamsearch@1.1.0: + resolution: + { + integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, + } + engines: { node: '>=10.0.0' } + + /streamx@2.15.5: + resolution: + { + integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==, + } + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: true + + /string-argv@0.3.2: + resolution: + { + integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, + } + engines: { node: '>=0.6.19' } + dev: false + + /string-hash@1.1.3: + resolution: + { + integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==, + } + dev: true + + /string-length@4.0.2: + resolution: + { + integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, + } + engines: { node: '>=10' } + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: '>=8' } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: + { + integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, + } + engines: { node: '>=12' } + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + /string.prototype.matchall@4.0.9: + resolution: + { + integrity: sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.0 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.7: + resolution: + { + integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string.prototype.trimend@1.0.6: + resolution: + { + integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: + { + integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string_decoder@0.10.31: + resolution: + { + integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==, + } + dev: true + + /string_decoder@1.1.1: + resolution: + { + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, + } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stringify-entities@4.0.3: + resolution: + { + integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==, + } + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: true + + /strip-ansi@6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: '>=8' } + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: + { + integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, + } + engines: { node: '>=12' } + dependencies: + ansi-regex: 6.0.1 + + /strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: '>=4' } + dev: true + + /strip-bom@4.0.0: + resolution: + { + integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, + } + engines: { node: '>=8' } + dev: true + + /strip-final-newline@2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + } + engines: { node: '>=6' } + dev: true + + /strip-final-newline@3.0.0: + resolution: + { + integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, + } + engines: { node: '>=12' } + + /strip-indent@3.0.0: + resolution: + { + integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, + } + engines: { node: '>=8' } + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: '>=8' } + dev: true + + /strip-literal@1.3.0: + resolution: + { + integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==, + } + dependencies: + acorn: 8.11.2 + dev: true + + /style-to-object@0.4.2: + resolution: + { + integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==, + } + dependencies: + inline-style-parser: 0.1.1 + dev: true + + /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): + resolution: + { + integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, + } + engines: { node: '>= 12.0.0' } + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.22.15 + client-only: 0.0.1 + react: 18.2.0 + dev: false + + /styled-jsx@5.1.1(@babel/core@7.23.3)(react@18.2.0): + resolution: + { + integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, + } + engines: { node: '>= 12.0.0' } + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.23.3 + client-only: 0.0.1 + react: 18.2.0 + dev: true + + /stylehacks@6.0.0(postcss@8.4.31): + resolution: + { + integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==, + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + + /sucrase@3.34.0: + resolution: + { + integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==, + } + engines: { node: '>=8' } + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@5.5.0: + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + } + engines: { node: '>=4' } + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: '>=8' } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + } + engines: { node: '>=10' } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@9.4.0: + resolution: + { + integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==, + } + engines: { node: '>=12' } + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: '>= 0.4' } + dev: true + + /svelte-check@3.4.3(@babel/core@7.22.15)(svelte@4.0.5): + resolution: + { + integrity: sha512-O07soQFY3X0VDt+bcGc6D5naz0cLtjwnmNP9JsEBPVyMemFEqUhL2OdLqvkl5H/u8Jwm50EiAU4BPRn5iin/kg==, + } + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + chokidar: 3.5.3 + fast-glob: 3.3.1 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.0.5 + svelte-preprocess: 5.0.4(@babel/core@7.22.15)(svelte@4.0.5)(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-hmr@0.15.3(svelte@4.0.5): + resolution: + { + integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==, + } + engines: { node: ^12.20 || ^14.13.1 || >= 16 } + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + dependencies: + svelte: 4.0.5 + dev: true + + /svelte-preprocess@5.0.4(@babel/core@7.22.15)(svelte@4.0.5)(typescript@5.2.2): + resolution: + { + integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==, + } + engines: { node: '>= 14.10.0' } + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.22.15 + '@types/pug': 2.0.7 + detect-indent: 6.1.0 + magic-string: 0.27.0 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.0.5 + typescript: 5.2.2 + dev: true + + /svelte@4.0.5: + resolution: + { + integrity: sha512-PHKPWP1wiWHBtsE57nCb8xiWB3Ht7/3Kvi3jac0XIxUM2rep8alO7YoAtgWeGD7++tFy46krilOrPW0mG3Dx+A==, + } + engines: { node: '>=16' } + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + acorn: 8.10.0 + aria-query: 5.3.0 + axobject-query: 3.2.1 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.5 + periscopic: 3.1.0 + dev: true + + /svg-tags@1.0.0: + resolution: + { + integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==, + } + dev: true + + /svgo@3.0.4: + resolution: + { + integrity: sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g==, + } + engines: { node: '>=14.0.0' } + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.0.0 + dev: true + + /symbol-tree@3.2.4: + resolution: + { + integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, + } + dev: true + + /synckit@0.8.5: + resolution: + { + integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + + /tapable@2.2.1: + resolution: + { + integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, + } + engines: { node: '>=6' } + dev: true + + /tar-fs@2.1.1: + resolution: + { + integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==, + } + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-stream@2.2.0: + resolution: + { + integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, + } + engines: { node: '>=6' } + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /tar-stream@3.1.6: + resolution: + { + integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==, + } + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.5 + dev: true + + /tar@6.2.0: + resolution: + { + integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==, + } + engines: { node: '>=10' } + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /terser@5.24.0: + resolution: + { + integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==, + } + engines: { node: '>=10' } + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: + { + integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, + } + engines: { node: '>=8' } + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, + } + dev: true + + /thenify-all@1.6.0: + resolution: + { + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, + } + engines: { node: '>=0.8' } + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: + { + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + } + dependencies: + any-promise: 1.3.0 + dev: true + + /through2@2.0.5: + resolution: + { + integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==, + } + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: true + + /tiny-invariant@1.3.1: + resolution: + { + integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==, + } + dev: true + + /titleize@3.0.0: + resolution: + { + integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==, + } + engines: { node: '>=12' } + dev: true + + /tmpl@1.0.5: + resolution: + { + integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, + } + dev: true + + /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' } + dependencies: + is-number: 7.0.0 + + /toidentifier@1.0.1: + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + } + engines: { node: '>=0.6' } + + /toml@3.0.0: + resolution: + { + integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==, + } + dev: true + + /totalist@3.0.1: + resolution: + { + integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, + } + engines: { node: '>=6' } + dev: true + + /tough-cookie@4.1.3: + resolution: + { + integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==, + } + engines: { node: '>=6' } + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@0.0.3: + resolution: + { + integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, + } + dev: true + + /tr46@1.0.1: + resolution: + { + integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==, + } + dependencies: + punycode: 2.3.0 + dev: true + + /tr46@3.0.0: + resolution: + { + integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, + } + engines: { node: '>=12' } + dependencies: + punycode: 2.3.0 + dev: true + + /tree-kill@1.2.2: + resolution: + { + integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, + } + hasBin: true + dev: true + + /trim-lines@3.0.1: + resolution: + { + integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, + } + dev: true + + /trough@2.1.0: + resolution: + { + integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==, + } + dev: true + + /ts-api-utils@1.0.2(typescript@5.2.2): + resolution: + { + integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==, + } + engines: { node: '>=16.13.0' } + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + + /ts-interface-checker@0.1.13: + resolution: + { + integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, + } + dev: true + + /tsconfig-paths@3.14.2: + resolution: + { + integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==, + } + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tsconfig-paths@4.2.0: + resolution: + { + integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, + } + engines: { node: '>=6' } + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: + { + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, + } + dev: true + + /tslib@2.6.2: + resolution: + { + integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, + } + + /tsup@7.2.0(@swc/core@1.3.82)(typescript@5.2.2): + resolution: + { + integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==, + } + engines: { node: '>=16.14' } + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + '@swc/core': 1.3.82 + bundle-require: 4.0.1(esbuild@0.18.20) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.18.20 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.1(postcss@8.4.31) + resolve-from: 5.0.0 + rollup: 3.28.1 + source-map: 0.8.0-beta.0 + sucrase: 3.34.0 + tree-kill: 1.2.2 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /tsutils@3.21.0(typescript@5.2.2): + resolution: + { + integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, + } + engines: { node: '>= 6' } + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.2.2 + dev: true + + /tuf-js@2.1.0: + resolution: + { + integrity: sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==, + } + engines: { node: ^16.14.0 || >=18.0.0 } + dependencies: + '@tufjs/models': 2.0.0 + debug: 4.3.4 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /type-check@0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: + { + integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, + } + engines: { node: '>=4' } + dev: true + + /type-fest@0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, + } + engines: { node: '>=10' } + dev: true + + /type-fest@0.21.3: + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + } + engines: { node: '>=10' } + dev: true + + /type-fest@0.6.0: + resolution: + { + integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, + } + engines: { node: '>=8' } + dev: true + + /type-fest@0.8.1: + resolution: + { + integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, + } + engines: { node: '>=8' } + dev: true + + /type-fest@1.4.0: + resolution: + { + integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==, + } + engines: { node: '>=10' } + dev: false + + /type-fest@3.13.1: + resolution: + { + integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==, + } + engines: { node: '>=14.16' } + dev: true + + /type-fest@4.3.3: + resolution: + { + integrity: sha512-bxhiFii6BBv6UiSDq7uKTMyADT9unXEl3ydGefndVLxFeB44LRbT4K7OJGDYSyDrKnklCC1Pre68qT2wbUl2Aw==, + } + engines: { node: '>=16' } + + /type-is@1.6.18: + resolution: + { + integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, + } + engines: { node: '>= 0.6' } + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + /typed-array-buffer@1.0.0: + resolution: + { + integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: + { + integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==, + } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: + { + integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==, + } + engines: { node: '>= 0.4' } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: + { + integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==, + } + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@5.2.2: + resolution: + { + integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==, + } + engines: { node: '>=14.17' } + hasBin: true + + /ufo@1.3.2: + resolution: + { + integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==, + } + dev: true + + /ultrahtml@1.5.2: + resolution: + { + integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==, + } + dev: true + + /unbox-primitive@1.0.2: + resolution: + { + integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, + } + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /uncrypto@0.1.3: + resolution: + { + integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==, + } + dev: true + + /unctx@2.3.1: + resolution: + { + integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==, + } + dependencies: + acorn: 8.11.2 + estree-walker: 3.0.3 + magic-string: 0.30.5 + unplugin: 1.5.1 + dev: true + + /undici@5.22.1: + resolution: + { + integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==, + } + engines: { node: '>=14.0' } + dependencies: + busboy: 1.6.0 + dev: true + + /undici@5.27.2: + resolution: + { + integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==, + } + engines: { node: '>=14.0' } + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + + /unenv@1.8.0: + resolution: + { + integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==, + } + dependencies: + consola: 3.2.3 + defu: 6.1.3 + mime: 3.0.0 + node-fetch-native: 1.4.1 + pathe: 1.1.1 + dev: true + + /unhead@1.8.8: + resolution: + { + integrity: sha512-SfUJ2kjz1NcfvdM+uEAlN11h31wHqMg0HZ5jriuRPjMCj5O7lPs4uSMdBUYh3KEo0uLKrW76FM85ONXkyZfm3g==, + } + dependencies: + '@unhead/dom': 1.8.8 + '@unhead/schema': 1.8.8 + '@unhead/shared': 1.8.8 + hookable: 5.5.3 + dev: true + + /unicorn-magic@0.1.0: + resolution: + { + integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==, + } + engines: { node: '>=18' } + dev: true + + /unified@10.1.2: + resolution: + { + integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==, + } + dependencies: + '@types/unist': 2.0.8 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 5.3.7 + dev: true + + /unimport@3.6.0(rollup@4.5.1): + resolution: + { + integrity: sha512-yXW3Z30yk1vX8fxO8uHlq9wY9K+L56LHp4Hlbv8i7tW+NENSOv8AaFJUPtOQchxlT7/JBAzCtkrBtcVjKIr1VQ==, + } + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + escape-string-regexp: 5.0.0 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.5 + mlly: 1.4.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.1.0 + strip-literal: 1.3.0 + unplugin: 1.5.1 + transitivePeerDependencies: + - rollup + dev: true + + /unique-filename@3.0.0: + resolution: + { + integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + unique-slug: 4.0.0 + dev: true + + /unique-slug@4.0.0: + resolution: + { + integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unist-util-generated@2.0.1: + resolution: + { + integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==, + } + dev: true + + /unist-util-is@5.2.1: + resolution: + { + integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==, + } + dependencies: + '@types/unist': 2.0.8 + dev: true + + /unist-util-position-from-estree@1.1.2: + resolution: + { + integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==, + } + dependencies: + '@types/unist': 2.0.8 + dev: true + + /unist-util-position@4.0.4: + resolution: + { + integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==, + } + dependencies: + '@types/unist': 2.0.8 + dev: true + + /unist-util-remove-position@4.0.2: + resolution: + { + integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==, + } + dependencies: + '@types/unist': 2.0.8 + unist-util-visit: 4.1.2 + dev: true + + /unist-util-stringify-position@3.0.3: + resolution: + { + integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==, + } + dependencies: + '@types/unist': 2.0.8 + dev: true + + /unist-util-visit-parents@5.1.3: + resolution: + { + integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==, + } + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 5.2.1 + dev: true + + /unist-util-visit@4.1.2: + resolution: + { + integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==, + } + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: true + + /universalify@0.2.0: + resolution: + { + integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, + } + engines: { node: '>= 4.0.0' } + dev: true + + /universalify@2.0.0: + resolution: + { + integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, + } + engines: { node: '>= 10.0.0' } + dev: true + + /unpipe@1.0.0: + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + } + engines: { node: '>= 0.8' } + + /unplugin-vue-router@0.7.0(vue-router@4.2.5)(vue@3.3.8): + resolution: + { + integrity: sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==, + } + peerDependencies: + vue-router: ^4.1.0 + peerDependenciesMeta: + vue-router: + optional: true + dependencies: + '@babel/types': 7.23.4 + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + '@vue-macros/common': 1.9.0(vue@3.3.8) + ast-walker-scope: 0.5.0 + chokidar: 3.5.3 + fast-glob: 3.3.2 + json5: 2.2.3 + local-pkg: 0.4.3 + mlly: 1.4.2 + pathe: 1.1.1 + scule: 1.1.0 + unplugin: 1.5.1 + vue-router: 4.2.5(vue@3.3.8) + yaml: 2.3.2 + transitivePeerDependencies: + - rollup + - vue + dev: true + + /unplugin@1.5.1: + resolution: + { + integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==, + } + dependencies: + acorn: 8.11.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: true + + /unstorage@1.10.1: + resolution: + { + integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==, + } + peerDependencies: + '@azure/app-configuration': ^1.4.1 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^3.3.2 + '@azure/keyvault-secrets': ^4.7.0 + '@azure/storage-blob': ^12.16.0 + '@capacitor/preferences': ^5.0.6 + '@netlify/blobs': ^6.2.0 + '@planetscale/database': ^1.11.0 + '@upstash/redis': ^1.23.4 + '@vercel/kv': ^0.2.3 + idb-keyval: ^6.2.1 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + dependencies: + anymatch: 3.1.3 + chokidar: 3.5.3 + destr: 2.0.2 + h3: 1.9.0 + ioredis: 5.3.2 + listhen: 1.5.5 + lru-cache: 10.1.0 + mri: 1.2.0 + node-fetch-native: 1.4.1 + ofetch: 1.3.3 + ufo: 1.3.2 + transitivePeerDependencies: + - supports-color + dev: true + + /untildify@4.0.0: + resolution: + { + integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==, + } + engines: { node: '>=8' } + dev: true + + /untun@0.1.2: + resolution: + { + integrity: sha512-wLAMWvxfqyTiBODA1lg3IXHQtjggYLeTK7RnSfqtOXixWJ3bAa2kK/HHmOOg19upteqO3muLvN6O/icbyQY33Q==, + } + hasBin: true + dependencies: + citty: 0.1.5 + consola: 3.2.3 + pathe: 1.1.1 + dev: true + + /untyped@1.4.0: + resolution: + { + integrity: sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==, + } + hasBin: true + dependencies: + '@babel/core': 7.23.3 + '@babel/standalone': 7.23.4 + '@babel/types': 7.23.4 + defu: 6.1.3 + jiti: 1.21.0 + mri: 1.2.0 + scule: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /update-browserslist-db@1.0.11(browserslist@4.21.10): + resolution: + { + integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==, + } + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.10 + escalade: 3.1.1 + picocolors: 1.0.0 + + /uqr@0.1.2: + resolution: + { + integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==, + } + dev: true + + /uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + dependencies: + punycode: 2.3.0 + dev: true + + /url-parse@1.5.10: + resolution: + { + integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, + } + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /urlpattern-polyfill@8.0.2: + resolution: + { + integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==, + } + dev: true + + /util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } + dev: true + + /util@0.12.5: + resolution: + { + integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==, + } + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.12 + which-typed-array: 1.1.11 + + /utils-merge@1.0.1: + resolution: + { + integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, + } + engines: { node: '>= 0.4.0' } + + /uvu@0.5.6: + resolution: + { + integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==, + } + engines: { node: '>=8' } + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: true + + /v8-to-istanbul@9.1.0: + resolution: + { + integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==, + } + engines: { node: '>=10.12.0' } + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: + { + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, + } + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@5.0.0: + resolution: + { + integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + dependencies: + builtins: 5.0.1 + dev: true + + /vary@1.1.2: + resolution: + { + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, + } + engines: { node: '>= 0.8' } + + /vfile-message@3.1.4: + resolution: + { + integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==, + } + dependencies: + '@types/unist': 2.0.8 + unist-util-stringify-position: 3.0.3 + dev: true + + /vfile@5.3.7: + resolution: + { + integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==, + } + dependencies: + '@types/unist': 2.0.8 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + dev: true + + /vite-node@0.28.5: + resolution: + { + integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==, + } + engines: { node: '>=v14.16.0' } + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.4.11 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-node@0.33.0: + resolution: + { + integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==, + } + engines: { node: '>=v14.18.0' } + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.4.11 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-checker@0.6.2(eslint@8.48.0)(typescript@5.2.2)(vite@4.5.0): + resolution: + { + integrity: sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==, + } + engines: { node: '>=14.16' } + peerDependencies: + eslint: '>=7' + meow: ^9.0.0 + optionator: ^0.9.1 + stylelint: '>=13' + typescript: '*' + vite: '>=2.0.0' + vls: '*' + vti: '*' + vue-tsc: '>=1.3.9' + peerDependenciesMeta: + eslint: + optional: true + meow: + optional: true + optionator: + optional: true + stylelint: + optional: true + typescript: + optional: true + vls: + optional: true + vti: + optional: true + vue-tsc: + optional: true + dependencies: + '@babel/code-frame': 7.23.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + chokidar: 3.5.3 + commander: 8.3.0 + eslint: 8.48.0 + fast-glob: 3.3.2 + fs-extra: 11.1.1 + lodash.debounce: 4.0.8 + lodash.pick: 4.4.0 + npm-run-path: 4.0.1 + semver: 7.5.4 + strip-ansi: 6.0.1 + tiny-invariant: 1.3.1 + typescript: 5.2.2 + vite: 4.5.0(@types/node@20.5.9) + vscode-languageclient: 7.0.0 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /vite-plugin-inspect@0.7.42(@nuxt/kit@3.8.2)(vite@4.5.0): + resolution: + { + integrity: sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==, + } + engines: { node: '>=14' } + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + dependencies: + '@antfu/utils': 0.7.6 + '@nuxt/kit': 3.8.2 + '@rollup/pluginutils': 5.0.5(rollup@4.5.1) + debug: 4.3.4 + error-stack-parser-es: 0.1.1 + fs-extra: 11.1.1 + open: 9.1.0 + picocolors: 1.0.0 + sirv: 2.0.3 + vite: 4.5.0(@types/node@20.5.9) + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /vite-plugin-vue-inspector@4.0.0(vite@4.5.0): + resolution: + { + integrity: sha512-xNjMbRj3YrebuuInTvlC8ghPtzT+3LjMIQPeeR/5CaFd+WcbA9wBnECZmlcP3GITCVED0SxGmTyoJ3iVKsK4vQ==, + } + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/plugin-proposal-decorators': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-transform-typescript': 7.23.4(@babel/core@7.23.3) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.3) + '@vue/compiler-dom': 3.3.8 + kolorist: 1.8.0 + magic-string: 0.30.5 + vite: 4.5.0(@types/node@20.5.9) + transitivePeerDependencies: + - supports-color + dev: true + + /vite@4.4.11: + resolution: + { + integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.28.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vite@4.4.9: + resolution: + { + integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.28.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vite@4.5.0(@types/node@20.5.9): + resolution: + { + integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.5.9 + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.28.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitefu@0.2.5(vite@4.4.9): + resolution: + { + integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==, + } + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.4.9 + dev: true + + /vitefu@0.2.5(vite@4.5.0): + resolution: + { + integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==, + } + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.5.0(@types/node@20.5.9) + dev: true + + /vscode-jsonrpc@6.0.0: + resolution: + { + integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==, + } + engines: { node: '>=8.0.0 || >=10.0.0' } + dev: true + + /vscode-languageclient@7.0.0: + resolution: + { + integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==, + } + engines: { vscode: ^1.52.0 } + dependencies: + minimatch: 3.1.2 + semver: 7.5.4 + vscode-languageserver-protocol: 3.16.0 + dev: true + + /vscode-languageserver-protocol@3.16.0: + resolution: + { + integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==, + } + dependencies: + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 + dev: true + + /vscode-languageserver-textdocument@1.0.11: + resolution: + { + integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==, + } + dev: true + + /vscode-languageserver-types@3.16.0: + resolution: + { + integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==, + } + dev: true + + /vscode-languageserver@7.0.0: + resolution: + { + integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==, + } + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.16.0 + dev: true + + /vscode-uri@3.0.8: + resolution: + { + integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==, + } + dev: true + + /vue-bundle-renderer@2.0.0: + resolution: + { + integrity: sha512-oYATTQyh8XVkUWe2kaKxhxKVuuzK2Qcehe+yr3bGiaQAhK3ry2kYE4FWOfL+KO3hVFwCdLmzDQTzYhTi9C+R2A==, + } + dependencies: + ufo: 1.3.2 + dev: true + + /vue-devtools-stub@0.1.0: + resolution: + { + integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==, + } + dev: true + + /vue-router@4.2.5(vue@3.3.8): + resolution: + { + integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==, + } + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.5.1 + vue: 3.3.8(typescript@5.2.2) + dev: true + + /vue@3.3.8(typescript@5.2.2): + resolution: + { + integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==, + } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-sfc': 3.3.8 + '@vue/runtime-dom': 3.3.8 + '@vue/server-renderer': 3.3.8(vue@3.3.8) + '@vue/shared': 3.3.8 + typescript: 5.2.2 + + /w3c-xmlserializer@4.0.0: + resolution: + { + integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==, + } + engines: { node: '>=14' } + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /walker@1.0.8: + resolution: + { + integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, + } + dependencies: + makeerror: 1.0.12 + dev: true + + /watchpack@2.4.0: + resolution: + { + integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==, + } + engines: { node: '>=10.13.0' } + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + /wcwidth@1.0.1: + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + } + dependencies: + defaults: 1.0.4 + dev: true + + /web-encoding@1.1.5: + resolution: + { + integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==, + } + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + /web-streams-polyfill@3.2.1: + resolution: + { + integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==, + } + engines: { node: '>= 8' } + + /webidl-conversions@3.0.1: + resolution: + { + integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, + } + dev: true + + /webidl-conversions@4.0.2: + resolution: + { + integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, + } + dev: true + + /webidl-conversions@7.0.0: + resolution: + { + integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, + } + engines: { node: '>=12' } + dev: true + + /webpack-sources@3.2.3: + resolution: + { + integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, + } + engines: { node: '>=10.13.0' } + dev: true + + /webpack-virtual-modules@0.6.1: + resolution: + { + integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==, + } + dev: true + + /whatwg-encoding@2.0.0: + resolution: + { + integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, + } + engines: { node: '>=12' } + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: + { + integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, + } + engines: { node: '>=12' } + dev: true + + /whatwg-url@11.0.0: + resolution: + { + integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, + } + engines: { node: '>=12' } + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url@5.0.0: + resolution: + { + integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, + } + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /whatwg-url@7.1.0: + resolution: + { + integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, + } + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: + { + integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, + } + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: + { + integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==, + } + engines: { node: '>= 0.4' } + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + dev: true + + /which-collection@1.0.1: + resolution: + { + integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==, + } + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.11: + resolution: + { + integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==, + } + engines: { node: '>= 0.4' } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + /which-typed-array@1.1.9: + resolution: + { + integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==, + } + engines: { node: '>= 0.4' } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: true + + /which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: '>= 8' } + hasBin: true + dependencies: + isexe: 2.0.0 + + /which@3.0.1: + resolution: + { + integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@4.0.0: + resolution: + { + integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, + } + engines: { node: ^16.13.0 || >=18.0.0 } + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /wide-align@1.1.5: + resolution: + { + integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, + } + dependencies: + string-width: 4.2.3 + dev: true + + /wrap-ansi@7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: + { + integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, + } + engines: { node: '>=12' } + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + /wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + dev: true + + /write-file-atomic@4.0.2: + resolution: + { + integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws@7.5.9: + resolution: + { + integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==, + } + engines: { node: '>=8.3.0' } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.13.0: + resolution: + { + integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==, + } + engines: { node: '>=10.0.0' } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.14.2: + resolution: + { + integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==, + } + engines: { node: '>=10.0.0' } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator@4.0.0: + resolution: + { + integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, + } + engines: { node: '>=12' } + dev: true + + /xmlchars@2.2.0: + resolution: + { + integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, + } + dev: true + + /xtend@4.0.2: + resolution: + { + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, + } + engines: { node: '>=0.4' } + dev: true + + /y18n@5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: '>=10' } + dev: true + + /yallist@3.1.1: + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + } + + /yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } + dev: true + + /yaml@2.3.1: + resolution: + { + integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==, + } + engines: { node: '>= 14' } + dev: false + + /yaml@2.3.2: + resolution: + { + integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==, + } + engines: { node: '>= 14' } + dev: true + + /yargs-parser@20.2.9: + resolution: + { + integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, + } + engines: { node: '>=10' } + dev: true + + /yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: '>=12' } + dev: true + + /yargs@16.2.0: + resolution: + { + integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, + } + engines: { node: '>=10' } + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs@17.7.2: + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + } + engines: { node: '>=12' } + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: '>=10' } + dev: true + + /zhead@2.2.4: + resolution: + { + integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==, + } + dev: true + + /zip-stream@5.0.1: + resolution: + { + integrity: sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==, + } + engines: { node: '>= 12.0.0' } + dependencies: + archiver-utils: 4.0.1 + compress-commons: 5.0.1 + readable-stream: 3.6.2 + dev: true + + /zod@3.21.4: + resolution: + { + integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==, + } + dev: true + + /zwitch@2.0.4: + resolution: + { + integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, + } + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..91b7729 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - 'packages/*' + - 'examples/*' + - 'apps/*' diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..706b981 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@vercel/style-guide/typescript", + "compilerOptions": { + "sourceMap": true, + "jsx": "react", + "moduleResolution": "node", + "resolveJsonModule": true + } +}