diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..ae36a5e --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["next/babel", "@babel/preset-typescript"], + "plugins": [] +} diff --git a/.env b/.env new file mode 100644 index 0000000..b4ae148 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +NEXT_PUBLIC_URL="https://canopy-iiif.github.io" +NEXT_PUBLIC_BASE_PATH="/canopy-iiif" \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..04e763f --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,28 @@ +{ + "plugins": ["@typescript-eslint", "testing-library"], + "extends": [ + "plugin:@typescript-eslint/recommended", + "next", + "next/core-web-vitals", + "prettier" + ], + "overrides": [ + // Only uses Testing Library lint rules in test files + { + "files": [ + "**/__tests__/**/*.[jt]s?(x)", + "**/?(*.)+(spec|test).[jt]s?(x)" + ], + "extends": ["plugin:testing-library/react"] + } + ], + "rules": { + // "sort-keys": "error", + // "sort-imports": "error", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/sort-type-union-intersection-members": "error", + "@typescript-eslint/ban-ts-comment": "off" + } +} diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md new file mode 100644 index 0000000..4ac104c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -0,0 +1,27 @@ +--- +name: Bug +about: Report an issue +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature-enhancement.md b/.github/ISSUE_TEMPLATE/feature-enhancement.md new file mode 100644 index 0000000..c57d228 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-enhancement.md @@ -0,0 +1,14 @@ +--- +name: Feature/Enhancement +about: New feature or enhancement +title: '' +labels: enhancement +assignees: '' + +--- + +## Description + +## Done Looks Like +- [ ] to do 1 +- [ ] to do 2 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..90442f6 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,15 @@ +# What does this do? + +_Please include a summary of the changes and the related issue. Please also include relevant motivation and context._ + +## What type of change is this? + +- [ ] 🐛 **Bug fix** (non-breaking change addressing an issue) +- [ ] ✨ **New feature or enhancement** (non-breaking change which adds functionality) +- [ ] 🧨 **Breaking change** (fix or feature that would cause existing functionality to not work as expected) +- [ ] 🚧 **Maintenance or refinement of codebase structur**e (ex: dependency updates) +- [ ] 📘 **Documentation update** + +## Additional Notes + +_Please include any extra notes here._ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..62c0b86 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,29 @@ +name: Test IIIF Collection Build +on: push +jobs: + test-build: + runs-on: ubuntu-latest + # Only run if the repository is canopy-iiif/canopy-iiif + if: github.repository == 'canopy-iiif/canopy-iiif' + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: npm install + - name: Unit testing + run: npm run test:ci + - name: 2.x Collection (Aggregation) + run: npm run prebuild -- --path=./config/.fixtures/canopy.presentation-2.json + - name: 2.x Collection (Build) + run: npm run test-build + - name: 3.0 Collection (Aggregation) + run: npm run prebuild -- --path=./config/.fixtures/canopy.presentation-3.json + - name: 3.0 Collection (Build) + run: npm run test-build + - name: Customize Search (Aggregation) + run: npm run prebuild -- --path=./config/.fixtures/canopy.customize-search.json + - name: Customize Search (Build) + run: npm run test-build + - name: Minimal Configuration (Aggregation) + run: npm run prebuild -- --path=./config/.fixtures/canopy.minimal.json + - name: Minimal Configuration (Build) + run: npm run test-build diff --git a/.github/workflows/gh-pages.deploy.yml b/.github/workflows/gh-pages.deploy.yml new file mode 100644 index 0000000..ccf8a78 --- /dev/null +++ b/.github/workflows/gh-pages.deploy.yml @@ -0,0 +1,43 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Load NEXT_PUBLIC_URL and NEXT_PUBLIC_BASE_PATH from .env + run: | + set -o allexport + source .env + set +o allexport + + - name: Install + run: npm ci + + - name: Build + run: npm run build:static + + - name: Bypass Jekyll + run: touch ./out/.nojekyll + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: out diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7205ab1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# 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* + +# local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# vercel +.vercel + +.canopy +.vscode + +public/api +public/robots.txt +public/sitemap* \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..e69de29 diff --git a/.stackblitzrc b/.stackblitzrc new file mode 100644 index 0000000..d98146f --- /dev/null +++ b/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": true, + "startCommand": "npm run dev" +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..aaeadbc --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Mat Jordan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d0ef0bd --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# Canopy IIIF + +An open-source static site generator designed for fast creation, contextualization, and customization of a discovery-focused digital scholarship and collections website using [IIIF](https://iiif.io/) APIs. + +[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz_small.svg)](https://stackblitz.com/fork/github/canopy-iiif/canopy-iiif) + +- [Demo (Static)](https://canopy-iiif.github.io/canopy-iiif/) +- [Demo (Vercel)](https://canopy-iiif.vercel.app/) +- [Documentation](https://canopy-iiif.github.io/docs/) + +![collage of canopy iiif views](https://github.com/canopy-iiif/canopy-iiif/assets/7376450/1779a0ce-1f62-4e9b-8186-110264c81bba) + +## Setup + +### Install Dependencies + +```shell +# installation +npm i +``` + +### Running in Development + +```shell +# development +npm run dev +``` + +### Building in Production + +```shell +# build +npm run build +``` + +## Tests + +To run Jest unit tests: + +```shell +npm run test +``` + +## Configuration + +Canopy IIIF uses a default configuration `config/.default/canopy.default.json` for demonstration purposes if a custom one is not set. The build process will read from a custom configuration file at `config/canopy.json` if it exists. See the [Create a Canopy Project guide](https://canopy-iiif.github.io/docs/get-started) for detailed step-by-step instructions. + +## License + +This project is [licensed](https://github.com/canopy-iiif/canopy-iiif/blob/main/LICENSE) under the MIT License. diff --git a/canopy.ts b/canopy.ts new file mode 100644 index 0000000..48da09d --- /dev/null +++ b/canopy.ts @@ -0,0 +1,32 @@ +require("dotenv").config(); +const buildConfig = require("./src/lib/build/config"); +const aggregate = require("./src/lib/build/aggregate"); + +const args = process.argv; + +(() => { + const path = args + .find((value) => value.includes("--path=")) + ?.split("=") + ?.pop(); + + const isDev = args.includes("dev"); + const config = buildConfig.getConfig(path, isDev); + + const url = isDev ? `http://localhost:5001` : process.env.NEXT_PUBLIC_URL; + const basePath = isDev ? `` : process.env.NEXT_PUBLIC_BASE_PATH; + const baseUrl = basePath ? `${url}${basePath}` : url; + const assetPrefix = basePath; + + const env = { + CANOPY_CONFIG: { + ...config, + url, + assetPrefix, + basePath, + baseUrl, + }, + }; + + aggregate.build(env.CANOPY_CONFIG); +})(); diff --git a/config/.default/canopy.default.json b/config/.default/canopy.default.json new file mode 100644 index 0000000..b182c31 --- /dev/null +++ b/config/.default/canopy.default.json @@ -0,0 +1,72 @@ +{ + "collection": "https://api.dc.library.northwestern.edu/api/v2/search?query=%22nez%20perce%22&as=iiif&size=125", + "metadata": ["Subject", "Date", "Dimensions"], + "featured": [ + "https://api.dc.library.northwestern.edu/api/v2/works/cd5e1b9c-370b-40e5-b3d9-defc1d8e0777?as=iiif", + "https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif" + ], + "locales": [ + { + "config": "locales/en.json", + "label": "English", + "lang": "en" + } + ], + "map": { + "defaultBounds": [[51.505, -0.09]], + "enabled": false, + "icon": { + "iconUrl": "images/marker-icon.png", + "iconSize": [24, 36], + "iconAnchor": [12, 36] + }, + "tileLayers": [ + { + "name": "OpenStreetMap", + "url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + "attribution": "© OpenStreetMap contributors" + } + ] + }, + "search": { + "enabled": true, + "flexSearch": { + "charset": "latin:extra", + "optimize": true, + "tokenize": "strict", + "bidirectional": false, + "document": { + "index": [ + { + "field": "label", + "tokenize": "full", + "resolution": 9, + "depth": 3, + "bidirectional": true + }, + { + "field": "metadata", + "resolution": 2 + }, + { + "field": "summary", + "resolution": 1 + } + ] + } + }, + "index": { + "metadata": { + "enabled": true, + "all": false + }, + "summary": { + "enabled": false + } + } + }, + "theme": { + "defaultTheme": "light", + "toggleEnabled": false + } +} diff --git a/config/.fixtures/canopy.customize-search.json b/config/.fixtures/canopy.customize-search.json new file mode 100644 index 0000000..d24d535 --- /dev/null +++ b/config/.fixtures/canopy.customize-search.json @@ -0,0 +1,44 @@ +{ + "collection": "https://api.dc.library.northwestern.edu/api/v2/collections/c373ecd2-2c45-45f2-9f9e-52dc244870bd?as=iiif", + "featured": [ + "https://api.dc.library.northwestern.edu/api/v2/works/2de0355c-8e48-4478-93af-8cbd1437bd16?as=iiif" + ], + "metadata": ["Date", "Subject"], + "search": { + "enabled": true, + "flexSearch": { + "charset": ["latin:extra"], + "optimize": true, + "tokenize": "strict", + "bidirectional": false, + "document": { + "index": [ + { + "field": "label", + "tokenize": "full", + "resolution": 9, + "depth": 3, + "bidirectional": true + }, + { + "field": "metadata", + "resolution": 2 + }, + { + "field": "summary", + "resolution": 1 + } + ] + } + }, + "index": { + "metadata": { + "enabled": true, + "all": true + }, + "summary": { + "enabled": true + } + } + } +} diff --git a/config/.fixtures/canopy.dev-collection.json b/config/.fixtures/canopy.dev-collection.json new file mode 100644 index 0000000..1ee1559 --- /dev/null +++ b/config/.fixtures/canopy.dev-collection.json @@ -0,0 +1,4 @@ +{ + "collection": "https://api.dc.library.northwestern.edu/api/v2/collections/c373ecd2-2c45-45f2-9f9e-52dc244870bd?as=iiif", + "devCollection": "https://api.dc.library.northwestern.edu/api/v2/collections/c373ecd2-2c45-45f2-9f9e-52dc244870bd?as=iiif&size=5" +} diff --git a/config/.fixtures/canopy.minimal.json b/config/.fixtures/canopy.minimal.json new file mode 100644 index 0000000..f59689e --- /dev/null +++ b/config/.fixtures/canopy.minimal.json @@ -0,0 +1,3 @@ +{ + "collection": "https://api.dc.library.northwestern.edu/api/v2/collections/c373ecd2-2c45-45f2-9f9e-52dc244870bd?as=iiif" +} diff --git a/config/.fixtures/canopy.presentation-2.json b/config/.fixtures/canopy.presentation-2.json new file mode 100644 index 0000000..0c515f4 --- /dev/null +++ b/config/.fixtures/canopy.presentation-2.json @@ -0,0 +1,8 @@ +{ + "collection": "https://iiif.bodleian.ox.ac.uk/iiif/collection/hobhouse", + "featured": [ + "https://iiif.bodleian.ox.ac.uk/iiif/manifest/8da97e8c-4e12-457d-aad8-3327b3aec183.json", + "https://iiif.bodleian.ox.ac.uk/iiif/manifest/2968d5c7-3718-44ef-92ea-ee4cc58cc677.json" + ], + "metadata": ["Extent", "Date Statement"] +} diff --git a/config/.fixtures/canopy.presentation-3.json b/config/.fixtures/canopy.presentation-3.json new file mode 100644 index 0000000..4a0e825 --- /dev/null +++ b/config/.fixtures/canopy.presentation-3.json @@ -0,0 +1,7 @@ +{ + "collection": "https://api.dc.library.northwestern.edu/api/v2/collections/c373ecd2-2c45-45f2-9f9e-52dc244870bd?as=iiif", + "featured": [ + "https://api.dc.library.northwestern.edu/api/v2/works/2de0355c-8e48-4478-93af-8cbd1437bd16?as=iiif" + ], + "metadata": ["Date", "Subject", "Genre", "Dimensions"] +} diff --git a/config/canopy.sample.json b/config/canopy.sample.json new file mode 100644 index 0000000..1b514b6 --- /dev/null +++ b/config/canopy.sample.json @@ -0,0 +1,13 @@ +{ + "collection": "https://example.org/iiif/collection.json", + "devCollection": "https://example.org/iiif/collection-small-sample.json", + "featured": [ + "https://example.org/manifest-1.json", + "https://example.org/manifest-2.json" + ], + "metadata": ["Date", "Subject"], + "label": { "none": ["Collection Title"] }, + "summary": { + "none": ["Brief description of the site and its contents."] + } +} diff --git a/config/locales/en.json b/config/locales/en.json new file mode 100644 index 0000000..154f93c --- /dev/null +++ b/config/locales/en.json @@ -0,0 +1,12 @@ +{ + "footerSourceCollection": "Source Collection", + "footerToggleTheme": "Toggle Theme", + "homepageHighlightedWorks": "Highlighted Works", + "searchButton": "Search", + "searchResults": "Results", + "searchFilter": "Filter", + "searchFilterAny": "Any", + "searchFilterClear": "Clear All", + "searchFilterClose": "Close", + "searchFilterSubmit": "View Results" +} diff --git a/config/locales/fr.json b/config/locales/fr.json new file mode 100644 index 0000000..4db2e92 --- /dev/null +++ b/config/locales/fr.json @@ -0,0 +1,12 @@ +{ + "footerSourceCollection": "Collection source", + "footerToggleTheme": "Changer le thème", + "homepageHighlightedWorks": "Contenus mis en évidence", + "searchButton": "Rechercher", + "searchResults": "Résultats", + "searchFilter": "Filtrer", + "searchFilterAny": "Tout", + "searchFilterClear": "Effacer tout", + "searchFilterClose": "Fermer", + "searchFilterSubmit": "Voir les résultats" +} diff --git a/config/locales/nb.json b/config/locales/nb.json new file mode 100644 index 0000000..c11bc93 --- /dev/null +++ b/config/locales/nb.json @@ -0,0 +1,12 @@ +{ + "footerSourceCollection": "Kildesamling", + "footerToggleTheme": "Skift tema", + "homepageHighlightedWorks": "Fremhevete verk", + "searchButton": "Søk", + "searchResults": "resultat", + "searchFilter": "Filter", + "searchFilterAny": "Alle", + "searchFilterClear": "Fjern filter", + "searchFilterClose": "Lukk", + "searchFilterSubmit": "Se treff" +} \ No newline at end of file diff --git a/config/locales/nn.json b/config/locales/nn.json new file mode 100644 index 0000000..9ed88ee --- /dev/null +++ b/config/locales/nn.json @@ -0,0 +1,12 @@ +{ + "footerSourceCollection": "Kjeldesamling", + "footerToggleTheme": "Endre tema", + "homepageHighlightedWorks": "Framheva verk", + "searchButton": "Søk", + "searchResults": "resultat", + "searchFilter": "Filter", + "searchFilterAny": "Alle", + "searchFilterClear": "Fjern filter", + "searchFilterClose": "Lukk", + "searchFilterSubmit": "Sjå treffa" +} \ No newline at end of file diff --git a/config/locales/no.json b/config/locales/no.json new file mode 100644 index 0000000..c11bc93 --- /dev/null +++ b/config/locales/no.json @@ -0,0 +1,12 @@ +{ + "footerSourceCollection": "Kildesamling", + "footerToggleTheme": "Skift tema", + "homepageHighlightedWorks": "Fremhevete verk", + "searchButton": "Søk", + "searchResults": "resultat", + "searchFilter": "Filter", + "searchFilterAny": "Alle", + "searchFilterClear": "Fjern filter", + "searchFilterClose": "Lukk", + "searchFilterSubmit": "Se treff" +} \ No newline at end of file diff --git a/config/locales/pt.json b/config/locales/pt.json new file mode 100644 index 0000000..06c2e2d --- /dev/null +++ b/config/locales/pt.json @@ -0,0 +1,12 @@ +{ + "footerSourceCollection": "Coleção principal", + "footerToggleTheme": "Trocar tema", + "homepageHighlightedWorks": "Destaques", + "searchButton": "Buscar", + "searchResults": "Resultados", + "searchFilter": "Filtrar", + "searchFilterAny": "Todos", + "searchFilterClear": "Limpar tudo", + "searchFilterClose": "Fechar", + "searchFilterSubmit": "Ver resultados" +} diff --git a/content/404.mdx b/content/404.mdx new file mode 100644 index 0000000..76b7e6d --- /dev/null +++ b/content/404.mdx @@ -0,0 +1,7 @@ +--- +title: Page Not Found +--- + +# Page Not Found + +404 Error diff --git a/content/_meta.json b/content/_meta.json new file mode 100644 index 0000000..204a6d3 --- /dev/null +++ b/content/_meta.json @@ -0,0 +1,14 @@ +[ + { + "path": "/works", + "text": "Works" + }, + { + "path": "/metadata", + "text": "Metadata" + }, + { + "path": "/about", + "text": "About" + } +] diff --git a/content/about/_meta.json b/content/about/_meta.json new file mode 100644 index 0000000..6ac4b83 --- /dev/null +++ b/content/about/_meta.json @@ -0,0 +1,10 @@ +[ + { + "path": "/about", + "text": "About" + }, + { + "path": "/about/example", + "text": "Markdown Example" + } +] diff --git a/content/about/example.mdx b/content/about/example.mdx new file mode 100644 index 0000000..df47d8e --- /dev/null +++ b/content/about/example.mdx @@ -0,0 +1,126 @@ +--- +title: "Markdown Example" +description: Demonstration content with Markdown and Components using the MDX library +navigation: "about" +referencedManifests: + - "https://api.dc.library.northwestern.edu/api/v2/works/84aec8c1-42e8-4e2c-a6b2-1c7e3790217f?as=iiif" + - "https://api.dc.library.northwestern.edu/api/v2/works/cd5e1b9c-370b-40e5-b3d9-defc1d8e0777?as=iiif" + - "https://api.dc.library.northwestern.edu/api/v2/works/15871197-1616-4c37-9257-b0ad0dc5ab30?as=iiif" + - "https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif" +--- + +# Markdown Example + +Canopy IIIF is designed to work with Markdown using the [MDX](https://mdxjs.com/) library. This allows you to use Canopy defined components in our Markdown content to easily extend IIIF resources. +This example page demonstrates some of components that are available for use reuse and remixing content in Markdown. + +This page is output from the `/content/about/example.mdx` file. + + + + + +## Example Markdown + +Using generated Latin, a sample blockquote and paragraph is included below. + +> Aenean viverra quam sit amet sapien tempor, vel sagittis velit ultricies. In imperdiet posuere risus non sodales. Mauris posuere elit a lectus vehicula, nec ullamcorper metus aliquam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +Pellentesque et scelerisque tellus, nec vehicula nisi. Mauris auctor nisl non bibendum varius. Donec nec pretium leo. Sed ut sapien metus. Nullam elementum est leo, ac ornare ipsum accumsan id. Sed nec metus sed lacus fringilla feugiat. Nulla ut nunc sem. Ut efficitur tincidunt mi. Curabitur sed dapibus ex. + +## Referencing Manifests + +When authoring markdown content, users can reference IIIF Manifests in front matter. The referenced items can be output using the `` component and will be rendered in a grid format. A link will automatically be created between the referenced item and the referencing content page. + + + +## Inserting a IIIF Viewer + +Users authoring content can bring a pan-zoom compatible IIIF Viewer into their content by using the `` component. The viewer will automatically be sized to the width of the content container. + + + +## Inserting a Card + +Users can also add a figure representing a Manifest to their content by using the `` component. The figure will include a rendered thumbnail for the Manifest, the label, and a link to the respective `/work` page. A Card does not create automatic linking from a `/work` page back to content pages. + + + +## Leveraging Facets + +During the Canopy build process, new IIIF Collections are automatically generated from the source IIIF Collection. These new collections are faceted by the metadata fields that are defined in the Canopy configuration file. The faceted collections are available at the URL pattern `/api/facet/{label}/{value}.json`. + +The `` component can be used to display a faceted IIIF Collection by passing the URL of the faceted collection to the `iiifContent` prop. In this example we are passing the relative URL of the faceted collection for the `date` field with the value `1910` for the path `/api/facet/date/1910.json` to the `iiifContent` prop. + +### Viewer Component + + + +### Slider Component + +These can alternatively be rendered in `` component. + + + +## Example MDX + +```jsx +--- +title: "Markdown Example" +navigation: "about" +referencedManifests: + - "https://api.dc.library.northwestern.edu/api/v2/works/84aec8c1-42e8-4e2c-a6b2-1c7e3790217f?as=iiif" + - "https://api.dc.library.northwestern.edu/api/v2/works/cd5e1b9c-370b-40e5-b3d9-defc1d8e0777?as=iiif" + - "https://api.dc.library.northwestern.edu/api/v2/works/15871197-1616-4c37-9257-b0ad0dc5ab30?as=iiif" + - "https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif" +--- + +# Markdown Example + +Canopy IIIF is designed to work with Markdown using the [MDX](https://mdxjs.com/) library. This allows us to use React components in our Markdown content. This example page demonstrates the various components that are available for use in Markdown content, front matter, and compatible Canopy components that can augment and create links betwen your Markdown content and the IIIF Manifests contained in your source IIIF Collection. This page is output from the `/content/about/example.mdx` file. + +Using generated Latin, a sample blockquote and paragraph is included below. + +> Aenean viverra quam sit amet sapien tempor, vel sagittis velit ultricies. In imperdiet posuere risus non sodales. Mauris posuere elit a lectus vehicula, nec ullamcorper metus aliquam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +Pellentesque et scelerisque tellus, nec vehicula nisi. Mauris auctor nisl non bibendum varius. Donec nec pretium leo. Sed ut sapien metus. Nullam elementum est leo, ac ornare ipsum accumsan id. Sed nec metus sed lacus fringilla feugiat. Nulla ut nunc sem. Ut efficitur tincidunt mi. Curabitur sed dapibus ex. + +## Referencing Manifests + +When authoring markdown content, users can reference IIIF Manifests in front matter. The referenced items can be output using the `` component and will be rendered in a grid format. A link will automatically be created between the referenced item and the referencing content page. + + + +## Inserting a IIIF Viewer + +Users authoring content can bring a pan-zoom compatible IIIF Viewer into their content by using the `` component. The viewer will automatically be sized to the width of the content container. + + + +## Inserting a Card + +Users can also add a figure representing a Manifest to their content by using the `` component. The figure will include a rendered thumbnail for the Manifest, the label, and a link to the respective `/work` page. A Card does not create automatic linking from a `/work` page back to content pages. + + + +## Leveraging Facets + +During the Canopy build process, new IIIF Collections are automatically generated from the source IIIF Collection. These new collections are faceted by the metadata fields that are defined in the Canopy configuration file. The faceted collections are available at the URL pattern `/api/facet/{label}/{value}.json`. + +The `` component can be used to display a faceted IIIF Collection by passing the URL of the faceted collection to the `iiifContent` prop. In this example we are passing the relative URL of the faceted collection for the `date` field with the value `1910` for the path `/api/facet/date/1910.json` to the `iiifContent` prop. + +### Viewer Component + + + +### Slider Component + +These can alternatively be rendered in `` component. + + +``` diff --git a/content/about/index.mdx b/content/about/index.mdx new file mode 100644 index 0000000..6078639 --- /dev/null +++ b/content/about/index.mdx @@ -0,0 +1,46 @@ +--- +title: About +description: Canopy 'makes easy' the creation of digital exhibits for libraries, archives, and museums +navigation: "about" +--- + +# About + +Using a single [IIIF Presentation Collection](https://iiif.io/api/presentation/3.0/#overview-collection) as a data source, Canopy IIIF (Canopy) generates a browseable, searchable, customizable, and contextually-driven static site using Next.js without duplicating content. + + + + + + +## Use Cases + +Canopy _“makes easy”_ the creation of digital exhibits for libraries, archives, and museums by providing user-experience focused components that bring IIIF resources to life. For digital humanists and scholars, Canopy provides a straightforward method to curate works from multiple sources and provide additional perspectives and aboutness beyond the included descriptive metadata. The decentralized, interoperable, and linked-data attributes of the IIIF APIs empower Canopy to provide smaller institutions with a streamlined front-end platform, neatly sidestepping the monolithic complexities often associated with conventional digital asset management systems. + +## Features + +- **easy [Markdown authoring](/about/example)** for scholarly content +- static page generation for each Manifest in a Collection +- customizable **full-text search** index using FlexSearch +- automatically generated facets based on Manifest metadata +- reusable components based on IIIF content +- interactive maps using the [navPlace Extension](https://iiif.io/api/extension/navplace/) + +## Colophon + +Mat Jordan, the primary author of Canopy IIIF, was born within the original homelands of the [Nimíipuu (Nez Percé)](https://wikipedia.org/wiki/Nez_Perce) and is rooted from Nez Perce County, Idaho, in the United States. Relating to this, the [source IIIF Collection](https://api.dc.library.northwestern.edu/api/v2/search?query=%22Nez%20Perc%C3%A9%22&as=iiif&size=200) for this demonstration is a query for [_"Nez Percé"_](https://dc.library.northwestern.edu/search?q=%22Nez+Perc%C3%A9%22), with results coming from the **Edward S. Curtis's The North American Indian** collection provided by Northwestern University Libraries. + +The project name "Canopy" is inspired by the presentation, [A Tree's Strength Is Its Trunk: IIIF as Central Operational Infrastructure](https://www.cni.org/topics/standards/a-trees-strength-is-its-trunk-iiif-as-central-operational-infrastructure), delivered by M.A. Matienzo (formerly Stanford University Libraries) and Esmé Cowles (Princeton University Library) at the CNI Fall 2020 Virtual Membership Meeting. + +Canopy IIIF is created using [Next.js 13](https://nextjs.org/), with a [FlexSearch](https://github.com/nextapps-de/flexsearch) index for text search, [IIIF Presentation API 3.0](https://iiif.io/api/presentation/3.0/) delivering resource content, [Radix UI](https://www.radix-ui.com/) and [Stitches](https://stitches.dev/) used throughout for the user interface, and various community modules from [IIIF Commons](https://github.com/IIIF-Commons) and [Samvera](https://samvera.org/) supporting the work presentation and resource delivery. + +This demonstration instance of Canopy IIIF is hosted on Vercel with a consistent build time under 40 seconds. The build process includes metadata aggregation requests of 119 IIIF Manifests. This IIIF Collection and its Manifest resources are delivered via a search response from the [Northwestern University Libraries Digital Collections API](https://api.dc.library.northwestern.edu/docs/v2/index.html). Referenced IIIF Image resources are delivered via [Serverless IIIF](https://github.com/samvera/serverless-iiif). diff --git a/content/index.mdx b/content/index.mdx new file mode 100644 index 0000000..4b3e364 --- /dev/null +++ b/content/index.mdx @@ -0,0 +1,23 @@ +--- +title: New Project +showHero: true +showHighlighted: true +--- + +## About Canopy + +**Canopy IIIF** is a purely [IIIF](https://iiif.io/) sourced site generator using Next.js. Canopy is an experimental application that will standup a browseable and searchable digital collections style site entirely from a [IIIF Collection](https://iiif.io/api/presentation/3.0/#51-collection) and the resources it references. + + + + + + diff --git a/global.d.ts b/global.d.ts new file mode 100644 index 0000000..ef9c420 --- /dev/null +++ b/global.d.ts @@ -0,0 +1,2 @@ +declare module "@/.canopy*"; +declare module "@samvera/clover-iiif*"; diff --git a/jest.config.next.ts b/jest.config.next.ts new file mode 100644 index 0000000..73a4b3d --- /dev/null +++ b/jest.config.next.ts @@ -0,0 +1,36 @@ +// This file is ignored...but keeping for future reference + +// @ts-ignore +import type { JestConfigWithTsJest } from "ts-jest"; +import nextJest from "next/jest.js"; + +const createJestConfig = nextJest({ + // Provide the path to your Next.js app to load next.config.js and .env files in your test environment + dir: "./", +}); + +// Add any custom config to be passed to Jest +/** @type {import('jest').Config} */ +const config: JestConfigWithTsJest = { + // Add more setup options before each test is run + // setupFilesAfterEnv: ['/jest.setup.js'], + + moduleNameMapper: { + // Handle module aliases + "^@/(.*)$": "/$1", + "^@/components/(.*)$": "/src/components/$1", + "^@/context/(.*)$": "/src/context/$1", + "^@/hooks/(.*)$": "/src/hooks/$1", + "^@/lib/(.*)$": "/src/lib/$1", + "^@/mocks/(.*)$": "/src/mocks/$1", + "^@/pages/(.*)$": "/src/pages/$1", + "^@/styles/(.*)$": "/src/styles/$1", + "^@/types/(.*)$": "/src/types/$1", + }, + preset: "ts-jest", + testEnvironment: "jest-environment-jsdom", +}; + +// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async +// @ts-ignore +export default createJestConfig(config); diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..28d0c8e --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,26 @@ +// Add any custom config to be passed to Jest +/** @type {import('jest').Config} */ +const config = { + // Add more setup options before each test is run + setupFilesAfterEnv: ["/jest.setup.ts"], + + moduleNameMapper: { + // Handle module aliases + "^@/(.*)$": "/$1", + "^@components/(.*)$": "/src/components/$1", + "^@config/(.*)$": "/config/$1", + "^@context/(.*)$": "/src/context/$1", + "^@hooks/(.*)$": "/src/hooks/$1", + "^@lib/(.*)$": "/src/lib/$1", + "^@mocks/(.*)$": "/src/mocks/$1", + "^@pages/(.*)$": "/src/pages/$1", + "^@styles/(.*)$": "/src/styles/$1", + "^@types/(.*)$": "/src/types/$1", + + // Mock next/font + "next/font": "/src/mocks/next-font.ts", + }, + testEnvironment: "jest-environment-jsdom", +}; + +export default config; diff --git a/jest.setup.ts b/jest.setup.ts new file mode 100644 index 0000000..85c4914 --- /dev/null +++ b/jest.setup.ts @@ -0,0 +1,13 @@ +import "@testing-library/jest-dom"; + +// IntersectionObserver isn't available in test environment +const mockIntersectionObserver = jest.fn(); +mockIntersectionObserver.mockReturnValue({ + observe: () => null, + unobserve: () => null, + disconnect: () => null, +}); +window.IntersectionObserver = mockIntersectionObserver; + +// Mock next/router +jest.mock("next/router", () => require("next-router-mock")); diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next-sitemap.config.js b/next-sitemap.config.js new file mode 100644 index 0000000..af9e20e --- /dev/null +++ b/next-sitemap.config.js @@ -0,0 +1,7 @@ +module.exports = { + siteUrl: `${process.env.NEXT_PUBLIC_URL}${process.env.NEXT_PUBLIC_BASE_PATH}`, + changefreq: "daily", + priority: 0.7, + generateRobotsTxt: true, // (optional) + sitemapSize: 100, +}; diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..b1662a7 --- /dev/null +++ b/next.config.js @@ -0,0 +1,44 @@ +const { PHASE_DEVELOPMENT_SERVER } = require("next/constants"); + +const { getConfig } = require("./src/lib/build/config.ts"); + +module.exports = (phase) => { + const isDev = phase === PHASE_DEVELOPMENT_SERVER; + const config = getConfig(undefined, isDev); + + const url = isDev ? `http://localhost:5001` : process.env.NEXT_PUBLIC_URL; + const basePath = isDev ? `` : process.env.NEXT_PUBLIC_BASE_PATH; + const baseUrl = basePath ? `${url}${basePath}` : url; + const assetPrefix = basePath; + + const env = { + CANOPY_CONFIG: { + ...config, + url, + assetPrefix, + basePath, + baseUrl, + }, + }; + + const redirects = () => { + return [ + { + source: "/works", + destination: "/search", + permanent: true, + }, + ]; + }; + + return { + env, + assetPrefix, + basePath, + pageExtensions: ["ts", "tsx", "js", "jsx", "md", "mdx"], + redirects, + typescript: { + ignoreBuildErrors: true, + }, + }; +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..235dacc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13270 @@ +{ + "name": "canopy-iiif", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "canopy-iiif", + "dependencies": { + "@iiif/parser": "^1.1.2", + "@iiif/vault-helpers": "^0.10.0", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-accordion": "^1.1.1", + "@radix-ui/react-checkbox": "^1.0.1", + "@radix-ui/react-dialog": "^1.0.2", + "@radix-ui/react-icons": "^1.3.0", + "@samvera/clover-iiif": "^2.2.3", + "@stitches/react": "^1.2.8", + "axios": "^0.24.0", + "clsx": "^1.1.1", + "copy-to-clipboard": "^3.3.3", + "flexsearch": "^0.7.31", + "framer-motion": "^10.9.4", + "gray-matter": "^4.0.3", + "leaflet": "^1.9.3", + "leaflet.markercluster": "^1.5.3", + "lodash": "^4.17.21", + "next": "^13.4.19", + "next-absolute-url": "^1.2.2", + "next-mdx-remote": "^4.4.1", + "next-seo": "^6.1.0", + "next-sitemap": "^4.2.3", + "next-themes": "^0.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-intersection-observer": "^9.4.1", + "react-leaflet": "^4.2.0", + "react-masonry-css": "^1.0.16", + "slugify": "^1.6.3", + "swiper": "^9.1.1" + }, + "devDependencies": { + "@babel/preset-typescript": "^7.23.2", + "@iiif/presentation-3": "^1.1.3", + "@testing-library/jest-dom": "^6.1.4", + "@testing-library/react": "^14.0.0", + "@types/jest": "^29.5.5", + "@types/leaflet": "^1.9.0", + "@types/lodash": "^4.14.178", + "@types/mdx": "^2.0.9", + "@types/node": "^18.11.18", + "@types/react": "^18.0.25", + "@types/react-dom": "^18.0.8", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@vitejs/plugin-react": "^4.1.0", + "charm": "^1.0.2", + "dotenv": "^16.1.3", + "eslint": "^8.39.0", + "eslint-config-next": "^13.3.4", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-testing-library": "^5.10.3", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "next-router-mock": "^0.9.10", + "ts-node": "^10.9.1", + "typescript": "^5.0.2", + "vitest": "^0.34.6" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@atlas-viewer/iiif-image-api": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@atlas-viewer/iiif-image-api/-/iiif-image-api-2.1.1.tgz", + "integrity": "sha512-g7gleRz0Guxwj/JqtppiqloabUTCew61GBzon+ZZ7mXpnMQ+zMupLaI1jHfGxM1Xy9a1+zMwPuUTXqTFkEyueA==", + "peer": true, + "dependencies": { + "@iiif/presentation-3": "*", + "node-fetch": "^3.2.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@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.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz", + "integrity": "sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@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.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@corex/deepmerge": { + "version": "4.0.43", + "resolved": "https://registry.npmjs.org/@corex/deepmerge/-/deepmerge-4.0.43.tgz", + "integrity": "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@iiif/parser": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@iiif/parser/-/parser-1.1.2.tgz", + "integrity": "sha512-yjbhSWBB+cWHjAgeWlMYgNydMxDGU1BO3JnmgxCclMcfi59JDsKHMXpgZpCNw+svcirBtIMD2u70KPFinr2pUA==", + "dependencies": { + "@iiif/presentation-2": "^1.0.4", + "@iiif/presentation-3": "^1.1.3", + "@types/geojson": "^7946.0.8" + } + }, + "node_modules/@iiif/presentation-2": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@iiif/presentation-2/-/presentation-2-1.0.4.tgz", + "integrity": "sha512-hJakpq62VBajesLJrYPtFm6hcn6c/HkKP7CmKZ5atuzu40m0nifWYsqigR1l9sZGvhhHb/DRshPmiW/0GNrJoA==", + "peerDependencies": { + "@iiif/presentation-3": "*" + } + }, + "node_modules/@iiif/presentation-3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@iiif/presentation-3/-/presentation-3-1.1.3.tgz", + "integrity": "sha512-Ek+25nkQouo0pXAqCsWYbAeS4jLDEBQA7iul2jzgnvoJrucxDQN2lXyNLgOUDRqpTdSqJ69iz5lm6DLaxil+Nw==", + "dependencies": { + "@types/geojson": "^7946.0.7" + } + }, + "node_modules/@iiif/vault": { + "version": "0.9.22", + "resolved": "https://registry.npmjs.org/@iiif/vault/-/vault-0.9.22.tgz", + "integrity": "sha512-HaFX1u9TSZha0i/esZR5sZzydZgjZgITeO0JrT1qXm+qSaB1Oc0PRNzatXW48Xa0q3PPYbBB71zCL1/D1i1i1A==", + "dependencies": { + "@iiif/parser": "^1.1.2", + "@iiif/presentation-2": "1.*", + "@iiif/presentation-3": "^1.1.3", + "mitt": "^3.0.0", + "node-fetch": "^3.1.1", + "redux": "^4.1.2", + "tiny-invariant": "^1.2.0", + "typesafe-actions": "^5.1.0" + } + }, + "node_modules/@iiif/vault-helpers": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@iiif/vault-helpers/-/vault-helpers-0.10.0.tgz", + "integrity": "sha512-gnjTPcZJMIDjwU5K8HYNU8Iix49Awmsr7IhIyxA5ZCqugnLjHvJUOmOvT7q1NRd6ia4+09wxx+EMH0D9mt4cxQ==", + "dependencies": { + "@iiif/presentation-2": "1.x", + "@iiif/presentation-3": "1.x" + }, + "optionalDependencies": { + "abs-svg-path": "^0.1.0", + "parse-svg-path": "^0.1.0", + "react-i18next": "^11.18.0", + "svg-arc-to-cubic-bezier": "^3.2.0" + }, + "peerDependencies": { + "@atlas-viewer/iiif-image-api": "^2.1.1", + "@iiif/vault": "0.9.x" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "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 + } + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "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 + } + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", + "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/mdx": "^2.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@next/env": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz", + "integrity": "sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.4.tgz", + "integrity": "sha512-vI94U+D7RNgX6XypSyjeFrOzxGlZyxOplU0dVE5norIfZGn/LDjJYPHdvdsR5vN1eRtl6PDAsOHmycFEOljK5A==", + "dev": true, + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz", + "integrity": "sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz", + "integrity": "sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz", + "integrity": "sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz", + "integrity": "sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz", + "integrity": "sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz", + "integrity": "sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz", + "integrity": "sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz", + "integrity": "sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz", + "integrity": "sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@radix-ui/colors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-3.0.0.tgz", + "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==" + }, + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.1.2.tgz", + "integrity": "sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collapsible": "1.0.3", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.0.3.tgz", + "integrity": "sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.0.4.tgz", + "integrity": "sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.0.3.tgz", + "integrity": "sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.0.3.tgz", + "integrity": "sha512-kgE+Z/haV6fxE5WqIXj05KkaXa3OkZASoTDy25yX2EIp/x0c54rOH/vFr5nOZTg7n7T1z8bSyXmiVIFP9bbhPQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-label": "2.0.2", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", + "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz", + "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz", + "integrity": "sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", + "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.3", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", + "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", + "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-popper": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", + "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-portal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", + "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.3.tgz", + "integrity": "sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz", + "integrity": "sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", + "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", + "dev": true + }, + "node_modules/@samvera/clover-iiif": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@samvera/clover-iiif/-/clover-iiif-2.2.3.tgz", + "integrity": "sha512-cTomktbcRpTWB67oFi4A3yuE5qGTlx+DtKLa/jVRTrJrSlu0oBmDpQ8O1F7WYnrGZOeW9LormR3VW/8MwoJmJQ==", + "dependencies": { + "@iiif/parser": "^1.1.2", + "@iiif/vault": "^0.9.22", + "@iiif/vault-helpers": "^0.10.0", + "@radix-ui/react-aspect-ratio": "^1.0.3", + "@radix-ui/react-collapsible": "^1.0.3", + "@radix-ui/react-form": "^0.0.3", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-radio-group": "^1.1.3", + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-switch": "^1.0.3", + "@radix-ui/react-tabs": "^1.0.4", + "@stitches/react": "^1.2.8", + "hls.js": "^1.4.12", + "node-webvtt": "^1.9.4", + "openseadragon": "^2.4.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-error-boundary": "^4.0.11", + "sanitize-html": "^2.11.0", + "swiper": "^9.4.1", + "uuid": "^9.0.1" + }, + "peerDependencies": { + "swiper": "^9.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@stitches/react": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz", + "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==", + "peerDependencies": { + "react": ">= 16.3.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz", + "integrity": "sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.3.1", + "@babel/runtime": "^7.9.2", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "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 + } + } + }, + "node_modules/@testing-library/react": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", + "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/chai": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz", + "integrity": "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.1.tgz", + "integrity": "sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.11", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.11.tgz", + "integrity": "sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg==" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.6.tgz", + "integrity": "sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", + "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@types/js-yaml": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.8.tgz", + "integrity": "sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==" + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/leaflet": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.6.tgz", + "integrity": "sha512-HakGTK5LBBWegNWsAmTlG55zN1zszYec7aG47/z6SzT90bW2vqjmbqk3YKAbrtveO+G7fSTKTYqVbIwAFnTrbg==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.13.tgz", + "integrity": "sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.9.tgz", + "integrity": "sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==" + }, + "node_modules/@types/ms": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz", + "integrity": "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==" + }, + "node_modules/@types/node": { + "version": "18.18.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz", + "integrity": "sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" + }, + "node_modules/@types/react": { + "version": "18.2.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", + "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.13", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz", + "integrity": "sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==", + "devOptional": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", + "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, + "node_modules/@types/yargs": { + "version": "17.0.28", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": 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.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.20", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/@vitest/expect": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", + "dev": true, + "dependencies": { + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", + "dev": true, + "dependencies": { + "@vitest/utils": "0.34.6", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@vitest/spy": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", + "dev": true, + "dependencies": { + "tinyspy": "^2.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", + "dev": true, + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abs-svg-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==", + "optional": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "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" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", + "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001549", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", + "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/charm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz", + "integrity": "sha512-wqW3VdPnlSWT4eRiYX+hcs+C6ViBPUWk1qTCd+37qw9kEm/a5n2qcyQDMBWvSYKN/ctqZzeXNQaeBjOetJJUkw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-equal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", + "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.1", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.554", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz", + "integrity": "sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "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.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "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", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "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.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.4.tgz", + "integrity": "sha512-FzQGIj4UEszRX7fcRSJK6L1LrDiVZvDFW320VVntVKh3BSU8Fb9kpaoxQx0cdFgf3MQXdeSbrCXJ/5Z/NndDkQ==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "13.5.4", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", + "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", + "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", + "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", + "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/flexsearch": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.31.tgz", + "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==" + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/framer-motion": { + "version": "10.16.4", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.16.4.tgz", + "integrity": "sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hast-util-to-estree": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", + "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.1", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hls.js": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.12.tgz", + "integrity": "sha512-1RBpx2VihibzE3WE9kGoVCtrhhDWTzydzElk/kyRbEOLnb1WIE+3ZabM/L8BqKFTCL3pUy4QzhXgD1Q6Igr1JA==" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "optional": true, + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/i18next": { + "version": "23.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.5.1.tgz", + "integrity": "sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.22.5" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "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 + } + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.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.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "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.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/leaflet.markercluster": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", + "peerDependencies": { + "leaflet": "^1.3.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", + "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", + "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", + "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "mdast-util-from-markdown": "^1.1.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", + "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", + "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", + "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", + "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", + "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^1.0.0", + "micromark-extension-mdx-jsx": "^1.0.0", + "micromark-extension-mdx-md": "^1.0.0", + "micromark-extension-mdxjs-esm": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", + "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-core-commonmark": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.1.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", + "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", + "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^2.0.0", + "estree-util-visit": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mlly": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/next": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/next/-/next-13.5.4.tgz", + "integrity": "sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==", + "dependencies": { + "@next/env": "13.5.4", + "@swc/helpers": "0.5.2", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.31", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=16.14.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "13.5.4", + "@next/swc-darwin-x64": "13.5.4", + "@next/swc-linux-arm64-gnu": "13.5.4", + "@next/swc-linux-arm64-musl": "13.5.4", + "@next/swc-linux-x64-gnu": "13.5.4", + "@next/swc-linux-x64-musl": "13.5.4", + "@next/swc-win32-arm64-msvc": "13.5.4", + "@next/swc-win32-ia32-msvc": "13.5.4", + "@next/swc-win32-x64-msvc": "13.5.4" + }, + "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 + } + } + }, + "node_modules/next-absolute-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/next-absolute-url/-/next-absolute-url-1.2.2.tgz", + "integrity": "sha512-Z2+LZXQTthhw2je9u4eq8QWXxXd57a6b54x9exBfQX4Dct6YxaMjcXZWNLHd9AOlCue84EsMpdSGP7wACqUnPg==" + }, + "node_modules/next-mdx-remote": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.4.1.tgz", + "integrity": "sha512-1BvyXaIou6xy3XoNF4yaMZUCb6vD2GTAa5ciOa6WoO+gAUTYsb1K4rI/HSC2ogAWLrb/7VSV52skz07vOzmqIQ==", + "dependencies": { + "@mdx-js/mdx": "^2.2.1", + "@mdx-js/react": "^2.2.1", + "vfile": "^5.3.0", + "vfile-matter": "^3.0.1" + }, + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "peerDependencies": { + "react": ">=16.x <=18.x", + "react-dom": ">=16.x <=18.x" + } + }, + "node_modules/next-mdx-remote/node_modules/@mdx-js/react": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", + "dependencies": { + "@types/mdx": "^2.0.0", + "@types/react": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/next-router-mock": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/next-router-mock/-/next-router-mock-0.9.10.tgz", + "integrity": "sha512-bK6sRb/xGNFgHVUZuvuApn6KJBAKTPiP36A7a9mO77U4xQO5ukJx9WHlU67Tv8AuySd09pk0+Hu8qMVIAmLO6A==", + "dev": true, + "peerDependencies": { + "next": ">=10.0.0", + "react": ">=17.0.0" + } + }, + "node_modules/next-seo": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-6.1.0.tgz", + "integrity": "sha512-iMBpFoJsR5zWhguHJvsoBDxDSmdYTHtnVPB1ij+CD0NReQCP78ZxxbdL9qkKIf4oEuZEqZkrjAQLB0bkII7RYA==", + "peerDependencies": { + "next": "^8.1.1-canary.54 || >=9.0.0", + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/next-sitemap": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/next-sitemap/-/next-sitemap-4.2.3.tgz", + "integrity": "sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ==", + "funding": [ + { + "url": "https://github.com/iamvishnusankar/next-sitemap.git" + } + ], + "dependencies": { + "@corex/deepmerge": "^4.0.43", + "@next/env": "^13.4.3", + "fast-glob": "^3.2.12", + "minimist": "^1.2.8" + }, + "bin": { + "next-sitemap": "bin/next-sitemap.mjs", + "next-sitemap-cjs": "bin/next-sitemap.cjs" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "next": "*" + } + }, + "node_modules/next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "peerDependencies": { + "next": "*", + "react": "*", + "react-dom": "*" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/node-webvtt": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/node-webvtt/-/node-webvtt-1.9.4.tgz", + "integrity": "sha512-EjrJdKdxSyd8j4LMLW6s2Ah4yNoeVXp18Ob04CQl1In18xcUmKzEE8pcsxxnFVqanTyjbGYph2VnvtwIXR4EjA==", + "dependencies": { + "commander": "^7.1.0" + }, + "bin": { + "webvtt-segment": "bin/webvtt-segment.js" + }, + "engines": { + "node": ">= 8.16.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openseadragon": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-2.4.2.tgz", + "integrity": "sha512-398KbZwRtOYA6OmeWRY4Q0737NTacQ9Q6whmr9Lp1MNQO3p0eBz5LIASRne+4gwequcSM1vcHcjfy3dIndQziw==" + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" + }, + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==", + "optional": true + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/property-information": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.3.0.tgz", + "integrity": "sha512-gVNZ74nqhRMiIUYWGQdosYetaKc83x8oT41a0LlV3AAFCAZwCpg4vmGkq8t34+cUhp3cnM4XDiU/7xlgK7HGrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-error-boundary": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.0.11.tgz", + "integrity": "sha512-U13ul67aP5DOSPNSCWQ/eO0AQEYzEFkVljULQIjMV0KlffTAhxuDoBKdO0pb/JZ8mDhMKFZ9NZi0BmLGUiNphw==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, + "node_modules/react-i18next": { + "version": "11.18.6", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz", + "integrity": "sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 19.0.0", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-intersection-observer": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.5.2.tgz", + "integrity": "sha512-EmoV66/yvksJcGa1rdW0nDNc4I1RifDWkT50gXSFnPLYQ4xUptuDD4V7k+Rj1OgVAlww628KLGcxPXFlOkkU/Q==", + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "dependencies": { + "@react-leaflet/core": "^2.1.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/react-masonry-css": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/react-masonry-css/-/react-masonry-css-1.0.16.tgz", + "integrity": "sha512-KSW0hR2VQmltt/qAa3eXOctQDyOu7+ZBevtKgpNDSzT7k5LA/0XntNa9z9HKCdz3QlxmJHglTZ18e4sX4V8zZQ==", + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remark-mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", + "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", + "dependencies": { + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sanitize-html": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.11.0.tgz", + "integrity": "sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA==", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^8.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/std-env": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", + "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", + "dev": true + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "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", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==", + "optional": true + }, + "node_modules/swiper": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-9.4.1.tgz", + "integrity": "sha512-1nT2T8EzUpZ0FagEqaN/YAhRj33F2x/lN6cyB0/xoYJDMf8KwTFT3hMOeoB8Tg4o3+P/CKqskP+WX0Df046fqA==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "dependencies": { + "ssr-window": "^4.0.2" + }, + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tinybench": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", + "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "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.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typesafe-actions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/typesafe-actions/-/typesafe-actions-5.1.0.tgz", + "integrity": "sha512-bna6Yi1pRznoo6Bz1cE6btB/Yy8Xywytyfrzu/wc+NFW3ZF0I+2iCGImhBsoYYCOWuICtRO4yHcnDlzgo1AdNg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", + "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", + "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", + "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uvu/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/uvu/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-3.0.1.tgz", + "integrity": "sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==", + "dependencies": { + "@types/js-yaml": "^4.0.0", + "is-buffer": "^2.0.0", + "js-yaml": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", + "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "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.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..fd7b90c --- /dev/null +++ b/package.json @@ -0,0 +1,80 @@ +{ + "name": "canopy-iiif", + "private": true, + "scripts": { + "build": "next build", + "build:static": "npm run build && next export", + "dev": "next -p 5001", + "lint": "next lint", + "predev": "ts-node canopy.ts dev", + "prebuild": "ts-node canopy.ts", + "postbuild": "next-sitemap", + "start": "next start", + "test": "jest --watch", + "test:ci": "jest --ci", + "test-build": "next build", + "ts-lint": "tsc --noEmit --incremental --watch", + "ts-lint-commit-hook": "tsc --noEmit" + }, + "dependencies": { + "@iiif/parser": "^1.1.2", + "@iiif/vault-helpers": "^0.10.0", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-accordion": "^1.1.1", + "@radix-ui/react-checkbox": "^1.0.1", + "@radix-ui/react-dialog": "^1.0.2", + "@radix-ui/react-icons": "^1.3.0", + "@samvera/clover-iiif": "^2.2.3", + "@stitches/react": "^1.2.8", + "axios": "^0.24.0", + "clsx": "^1.1.1", + "copy-to-clipboard": "^3.3.3", + "flexsearch": "^0.7.31", + "framer-motion": "^10.9.4", + "gray-matter": "^4.0.3", + "leaflet": "^1.9.3", + "leaflet.markercluster": "^1.5.3", + "lodash": "^4.17.21", + "next": "^13.4.19", + "next-absolute-url": "^1.2.2", + "next-mdx-remote": "^4.4.1", + "next-seo": "^6.1.0", + "next-sitemap": "^4.2.3", + "next-themes": "^0.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-intersection-observer": "^9.4.1", + "react-leaflet": "^4.2.0", + "react-masonry-css": "^1.0.16", + "slugify": "^1.6.3", + "swiper": "^9.1.1" + }, + "devDependencies": { + "@babel/preset-typescript": "^7.23.2", + "@iiif/presentation-3": "^1.1.3", + "@testing-library/jest-dom": "^6.1.4", + "@testing-library/react": "^14.0.0", + "@types/jest": "^29.5.5", + "@types/leaflet": "^1.9.0", + "@types/lodash": "^4.14.178", + "@types/mdx": "^2.0.9", + "@types/node": "^18.11.18", + "@types/react": "^18.0.25", + "@types/react-dom": "^18.0.8", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@vitejs/plugin-react": "^4.1.0", + "charm": "^1.0.2", + "dotenv": "^16.1.3", + "eslint": "^8.39.0", + "eslint-config-next": "^13.3.4", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-testing-library": "^5.10.3", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "next-router-mock": "^0.9.10", + "ts-node": "^10.9.1", + "typescript": "^5.0.2", + "vitest": "^0.34.6" + } +} diff --git a/public/fixtures/iiif/collection/examples.json b/public/fixtures/iiif/collection/examples.json new file mode 100644 index 0000000..fd740ab --- /dev/null +++ b/public/fixtures/iiif/collection/examples.json @@ -0,0 +1,173 @@ +{ + "@context": ["http://iiif.io/api/presentation/3/context.json"], + "id": "https://canopy-iiif.vercel.app/fixtures/iiif/collection/sample-sites.json", + "type": "Collection", + "viewingDirection": "left-to-right", + "behavior": ["unordered"], + "label": { + "none": ["Canopy IIIF Instances"] + }, + "summary": { + "none": [ + "Various examples of Canopy IIIF instances built from distinct IIIF Collections" + ] + }, + "items": [ + { + "id": "https://digital.lib.utk.edu/assemble/collection/gsmrc/wcc", + "type": "Collection", + "label": { + "none": ["William Cox Cochran"] + }, + "thumbnail": [ + { + "id": "https://digital.lib.utk.edu/iiif/2/collections~islandora~object~wcc%3A350~datastream~JP2/full/!300,300/0/default.jpg", + "height": 300, + "width": 300, + "type": "Image", + "format": "image/jpeg" + } + ], + "homepage": [ + { + "id": "https://canopy-iiif.vercel.app/", + "label": { + "none": ["William Cox Cochran"] + }, + "type": "Text", + "format": "text/html" + } + ] + }, + { + "id": "https://api.dc.library.northwestern.edu/api/v2/search?query=%22maktaba%20grant%22&as=iiif&size=100", + "type": "Collection", + "label": { + "none": ["Maktaba"] + }, + "thumbnail": [ + { + "id": "https://api.dc.library.northwestern.edu/api/v2/works/b091b665-862e-4c89-b2a7-41b44d067eb9/thumbnail?aspect=square", + "height": 300, + "width": 300, + "type": "Image", + "format": "image/jpeg" + } + ], + "homepage": [ + { + "id": "https://nulib.github.io/maktaba-prototype", + "label": { + "none": ["Maktaba"] + }, + "type": "Text", + "format": "text/html" + } + ] + }, + { + "id": "https://digital.lib.utk.edu/assemble/collection/collections/heilman", + "type": "Collection", + "label": { + "none": ["The Botanical photography of Alan S. Heilman"] + }, + "thumbnail": [ + { + "id": "https://digital.lib.utk.edu/iiif/2/collections~islandora~object~heilman%3A1187~datastream~JP2/full/339,233/0/default.jpg", + "height": 233, + "width": 339, + "type": "Image", + "format": "image/jpeg" + } + ], + "homepage": [ + { + "id": "https://canopy-iiif-git-heilman-mathewjordan.vercel.app/", + "label": { + "en": ["The Botanical photography of Alan S. Heilman"] + }, + "type": "Text", + "format": "text/html" + } + ] + }, + { + "id": "https://digital.lib.utk.edu/assemble/collection/collections/rftacuratedart", + "type": "Collection", + "label": { + "none": ["The Chimney Tops 2 Wildfires In Memory And Art"] + }, + "thumbnail": [ + { + "id": "https://digital.lib.utk.edu/iiif/2/collections~islandora~object~rftaart%3A6~datastream~JP2/full/300,224/0/default.jpg", + "height": 224, + "width": 300, + "type": "Image", + "format": "image/jpeg" + } + ], + "homepage": [ + { + "id": "https://canopy-iiif-git-rfta-artists-mathewjordan.vercel.app/", + "label": { + "en": ["The Chimney Tops 2 Wildfires In Memory And Art"] + }, + "type": "Text", + "format": "text/html" + } + ] + }, + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/collection/canonici", + "type": "Collection", + "label": { + "none": ["Canonici"] + }, + "thumbnail": [ + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/image/fa2bfd65-226a-4794-a444-ea89ee3fc3cf/full/256,/0/default.jpg", + "height": 258, + "width": 171, + "type": "Image", + "format": "image/jpeg" + } + ], + "homepage": [ + { + "id": "https://canopy-iiif-git-canonici-mathewjordan.vercel.app/", + "label": { + "en": ["Canonici"] + }, + "type": "Text", + "format": "text/html" + } + ] + }, + { + "id": "https://digital.lib.utk.edu/assemble/collection/gsmrc/kintner", + "type": "Collection", + "label": { + "none": ["Panoramic Images of Elgin P. Kintner"] + }, + "thumbnail": [ + { + "id": "https://digital.lib.utk.edu/iiif/2/collections~islandora~object~kintner%3A4~datastream~JP2/full/525,150/0/default.jpg", + "height": 150, + "width": 525, + "type": "Image", + "format": "image/jpeg" + } + ], + "homepage": [ + { + "id": "https://canopy-iiif-git-kintnerexamplesite-mathewjordan.vercel.app", + "label": { + "en": ["Panoramic Images of Elgin P. Kintner"] + }, + "type": "Text", + "format": "text/html" + } + ] + } + ] +} diff --git a/public/images/marker-icon.png b/public/images/marker-icon.png new file mode 100644 index 0000000..950edf2 Binary files /dev/null and b/public/images/marker-icon.png differ diff --git a/src/components/Card/Card.styled.ts b/src/components/Card/Card.styled.ts new file mode 100644 index 0000000..412f7ae --- /dev/null +++ b/src/components/Card/Card.styled.ts @@ -0,0 +1,57 @@ +import { styled } from "@styles/stitches"; + +const Content = styled("div", { + padding: "$gr3 0 0", + + h4: { + margin: "0", + fontWeight: "400", + fontSize: "$gr4", + fontFamily: "$sans", + textDecoration: "none !important", + }, + + span: { + display: "block", + margin: "0.25rem 0 0", + fontWeight: "300", + fontSize: "0.8333rem", + color: "$slate10", + }, +}); + +const Placeholder = styled("div", { + backgroundColor: "$slate6", + width: "100%", + height: "100%", + overflowY: "hidden", + borderRadius: "3px", + transition: "$canopyAll", +}); + +const Wrapper = styled("div", { + display: "flex", + width: "100%", + maxWidth: "240px", + position: "relative", + + a: { + display: "flex", + flexDirection: "column", + width: "100%", + color: "$slate12", + textDecoration: "none !important", + transition: "$canopyAll", + + [`&:hover, &:focus`]: { + color: "$indigo10", + + [`${Placeholder}`]: { + transform: "scale3d(1.02, 1.02, 1.02)", + boxShadow: "3px 3px 8px #0002", + }, + }, + }, +}); + +export { Content, Placeholder, Wrapper }; diff --git a/src/components/Card/Card.test.tsx b/src/components/Card/Card.test.tsx new file mode 100644 index 0000000..f2da474 --- /dev/null +++ b/src/components/Card/Card.test.tsx @@ -0,0 +1,36 @@ +import { render, screen } from "@testing-library/react"; + +import Card from "@components/Card/Card"; +import React from "react"; +import { type SearchResponseItem } from "@customTypes/search/search"; + +const resource: SearchResponseItem = { + id: "https://api.dc.library.northwestern.edu/api/v2/works/ceb0858f-3df4-41cb-8afd-1b290f99dfaf?as=iiif", + type: "Manifest", + label: { + none: ["Nez Brave"], + }, + thumbnail: [ + { + id: "https://api.dc.library.northwestern.edu/api/v2/works/ceb0858f-3df4-41cb-8afd-1b290f99dfaf/thumbnail", + type: "Image", + format: "image/jpeg", + height: 300, + width: 300, + }, + ], + homepage: [ + { + id: "http://localhost:5001/works/nez-perce-brave", + type: "Text", + label: { + none: ["Nez Brave"], + }, + }, + ], +}; + +test("should render successfully", () => { + render(); + expect(screen.getByText("Nez Brave")).toBeInTheDocument(); +}); diff --git a/src/components/Card/Card.tsx b/src/components/Card/Card.tsx new file mode 100644 index 0000000..3ea72a1 --- /dev/null +++ b/src/components/Card/Card.tsx @@ -0,0 +1,54 @@ +import * as AspectRatio from "@radix-ui/react-aspect-ratio"; + +import { Content, Placeholder, Wrapper } from "@components/Card/Card.styled"; +import { LazyMotion, MotionConfig, domAnimation, m } from "framer-motion"; + +import Figure from "@components/Figure/Figure"; +import { Label } from "@samvera/clover-iiif/primitives"; +import Link from "next/link"; +import { SearchResponseItem } from "@customTypes/search/search"; +import { getLabel } from "@lib/iiif/label"; +import { getRandomItem } from "@lib/utils"; +import { useInView } from "react-intersection-observer"; + +interface CardProps { + resource: SearchResponseItem; +} + +const Card: React.FC = ({ resource }) => { + let aspectRatio = 1; + + const { label, homepage, thumbnail } = resource; + // @ts-ignore + const { width, height } = getRandomItem(thumbnail); + + if (width && height) aspectRatio = width / height; + + const { ref, inView } = useInView(); + const alt = getLabel(label); + + return ( + + + + + + {inView && resource && ( + + + + + + )} + + + + + + + + + ); +}; + +export default Card; diff --git a/src/components/Facets/Activate.styled.ts b/src/components/Facets/Activate.styled.ts new file mode 100644 index 0000000..7c84605 --- /dev/null +++ b/src/components/Facets/Activate.styled.ts @@ -0,0 +1,27 @@ +import * as Dialog from "@radix-ui/react-dialog"; + +import { styled } from "@styles/stitches"; + +const FacetsActivateIndicator = styled("span", { + position: "absolute", + display: "flex", + justifyContent: "center", + alignItems: "center", + top: "-$gr1", + right: "$gr2", + width: "$gr3", + height: "$gr3", + fontSize: "$gr1", + color: "$indigo1", + backgroundColor: "$indigo12", + borderRadius: "50%", +}); + +const FacetsActivateStyled = styled(Dialog.Trigger, { + position: "relative", + right: "0", + transition: "$canopySlideIn", + boxShadow: "none", +}); + +export { FacetsActivateIndicator, FacetsActivateStyled }; diff --git a/src/components/Facets/Activate.tsx b/src/components/Facets/Activate.tsx new file mode 100644 index 0000000..616b705 --- /dev/null +++ b/src/components/Facets/Activate.tsx @@ -0,0 +1,32 @@ +import { + FacetsActivateIndicator, + FacetsActivateStyled, +} from "./Activate.styled"; + +import { ButtonStyled } from "../Shared/Button/Button.styled"; +import { LocaleString } from "@hooks/useLocale"; +import { MixerHorizontalIcon } from "@radix-ui/react-icons"; +import React from "react"; +import { useFacetsState } from "@context/facets"; + +const FacetsActivate: React.FC = () => { + const { facetsState } = useFacetsState(); + const { facetsActive } = facetsState; + + const { length } = Array.from(facetsActive.keys()).filter( + (key) => key !== "q" + ); + + return ( + + + {LocaleString("searchFilter")} + {length > 0 && ( + {length} + )} + + + ); +}; + +export default FacetsActivate; diff --git a/src/components/Facets/Facet.styled.ts b/src/components/Facets/Facet.styled.ts new file mode 100644 index 0000000..43ef0ea --- /dev/null +++ b/src/components/Facets/Facet.styled.ts @@ -0,0 +1,56 @@ +import * as Accordion from "@radix-ui/react-accordion"; + +import { styled } from "@styles/stitches"; + +const FacetsFacetActivate = styled(Accordion.Trigger, { + display: "flex", + justifyContent: "space-between", + width: "100%", + padding: "$gr2 0", + backgroundColor: "transparent", + border: "none", + fontFamily: "$display", + fontSize: "$gr4", + cursor: "pointer", + borderTop: "1px solid $slate4", + + "&:hover, &:focus": { + color: "$indigo11", + }, + svg: { + transition: "$canopyAll", + transform: "rotate(-90deg)", + color: "$slate10", + }, + + "&[aria-expanded='true']": { + color: "$slate12 !important", + fontWeight: "800", + + svg: { + color: "$slate12 !important", + transform: "rotate(0deg)", + }, + }, +}); + +const FacetsFacetContent = styled(Accordion.Content, { + padding: "$gr1 0 $gr4", +}); + +const FacetsFacetHeader = styled(Accordion.Header, {}); + +const FacetsFacetStyled = styled(Accordion.Item, { + "&:first-child": { + [`${FacetsFacetActivate}`]: { + border: "none", + }, + }, +}); + +export { + FacetsFacetActivate, + FacetsFacetContent, + FacetsFacetHeader, + FacetsFacetStyled, +}; diff --git a/src/components/Facets/Facet.tsx b/src/components/Facets/Facet.tsx new file mode 100644 index 0000000..3ee0727 --- /dev/null +++ b/src/components/Facets/Facet.tsx @@ -0,0 +1,83 @@ +import { + FacetsFacetActivate, + FacetsFacetContent, + FacetsFacetHeader, + FacetsFacetStyled, +} from "./Facet.styled"; +import React, { useEffect, useState } from "react"; + +import { ChevronDownIcon } from "@radix-ui/react-icons"; +import FacetsOption from "./Option"; +import { LocaleString } from "@hooks/useLocale"; +import { useFacetsState } from "@context/facets"; + +interface FacetsFacetProps { + label: string; + slug: string; + values: any; +} + +export const FacetsFacet: React.FC = ({ + label, + slug, + values, +}) => { + const { facetsState } = useFacetsState(); + const { facetsActive } = facetsState; + + /** + * + */ + const params = facetsActive?.toString(); + const defaultValue = { + slug: "", + value: LocaleString("searchFilterAny"), + }; + + const [active, setActive] = useState({ + slug: "", + value: LocaleString("searchFilterAny"), + }); + + useEffect(() => { + const activeSlug = facetsActive?.get(slug); + setActive( + activeSlug + ? { + slug: activeSlug, + value: values.find((entry: any) => entry.slug === activeSlug) + ?.value, + } + : defaultValue + ); + }, [facetsActive, params, slug, values]); + + return ( + + + + + {label} + + {active.value} + + + + {values.map((option: any, index: number) => { + const identifier = `${slug}-${option.slug}-${index}`; + return ( + + ); + })} + + + ); +}; + +export default FacetsFacet; diff --git a/src/components/Facets/Facets.styled.ts b/src/components/Facets/Facets.styled.ts new file mode 100644 index 0000000..a18b404 --- /dev/null +++ b/src/components/Facets/Facets.styled.ts @@ -0,0 +1,7 @@ +import * as Dialog from "@radix-ui/react-dialog"; + +import { styled } from "@styles/stitches"; + +const FacetsStyled = styled(Dialog.Root, {}); + +export { FacetsStyled }; diff --git a/src/components/Facets/Facets.tsx b/src/components/Facets/Facets.tsx new file mode 100644 index 0000000..6ff7b26 --- /dev/null +++ b/src/components/Facets/Facets.tsx @@ -0,0 +1,56 @@ +import { FacetsProvider, useFacetsState } from "@context/facets"; +import React, { useEffect, useState } from "react"; + +import FacetsActivate from "./Activate"; +import FacetsModal from "./Modal"; +import { FacetsStyled } from "./Facets.styled"; +import { useCanopyState } from "@context/canopy"; +import { useRouter } from "next/router"; + +const Facets = () => { + const { asPath } = useRouter(); + const [isModalOpen, setIsModalOpen] = useState(false); + const { facetsDispatch } = useFacetsState(); + const { canopyDispatch, canopyState } = useCanopyState(); + const { headerVisible, searchParams } = canopyState; + + useEffect(() => { + facetsDispatch({ + type: "updateFacetsActive", + facetsActive: searchParams, + }); + }, [searchParams, facetsDispatch]); + + const handleDialogChange = () => { + setIsModalOpen(!isModalOpen); + canopyDispatch({ + type: "updateHeaderVisible", + headerVisible: !headerVisible, + }); + }; + + useEffect(() => { + setIsModalOpen(false); + canopyDispatch({ + type: "updateHeaderVisible", + headerVisible: true, + }); + }, [asPath, canopyDispatch]); + + return ( + + + + + ); +}; + +const FacetsWrapper = () => { + return ( + + + + ); +}; + +export default FacetsWrapper; diff --git a/src/components/Facets/Modal.styled.ts b/src/components/Facets/Modal.styled.ts new file mode 100644 index 0000000..3b166cc --- /dev/null +++ b/src/components/Facets/Modal.styled.ts @@ -0,0 +1,144 @@ +import * as Dialog from "@radix-ui/react-dialog"; + +import { maxWidths } from "@styles/theme/containers"; +import { slateA } from "@radix-ui/colors"; +import { styled } from "@styles/stitches"; + +const FacetsModalContent = styled(Dialog.Content, { + width: `calc(100% - $gr5 * 2)`, + maxWidth: maxWidths.default, + maxHeight: `calc(100% - $gr5 * 2)`, + background: "$slate2", + position: "fixed", + top: `$gr5`, + left: `50%`, + overflowY: "auto", + zIndex: "10", + borderRadius: "3px", + boxShadow: `5px 5px 13px ${slateA.slateA7}`, + borderTop: "1px solid $slateA1", + borderBottom: "1px solid $slateA4", + transform: "translateX(-50%)", + overflow: "clip", + display: "flex", + + "@lg": { + width: `calc(100% - $gr4 * 2)`, + maxHeight: `calc(100% - $gr4 * 2)`, + top: `$gr4`, + }, + + "@sm": { + width: `calc(100% - $gr3 * 2)`, + maxHeight: `calc(100% - $gr3 * 2)`, + top: `$gr3`, + }, +}); + +const FacetsModalContentInner = styled("div", { + display: "flex", + flexDirection: "column", + flexWrap: "nowrap", + width: "100%", + overflow: "scroll", +}); + +const FacetsModalContentHeader = styled("header", { + display: "flex", + flexGrow: "0", + justifyContent: "space-between", + padding: "$gr3 $gr4", + color: "$slate9", + fontSize: "$gr3", + fontFamily: "$display", + fontWeight: "300", + alignItems: "center", + + "@sm": { + padding: "$gr2 $gr3", + }, +}); + +const FacetsModalContentFooter = styled("footer", { + display: "flex", + flexGrow: "0", + justifyContent: "space-between", + padding: "$gr3 $gr4", + + "@sm": { + padding: "$gr2 $gr3", + }, +}); + +const FacetsModalContentBody = styled("div", { + display: "flex", + flexDirection: "column", + flexGrow: "1", + borderTop: "1px solid $slate4", + borderBottom: "1px solid $slate4", + overflowY: "scroll !important", + padding: "$gr3 $gr4", + + "@sm": { + padding: "$gr2 $gr3", + }, +}); + +const FacetsModalTitle = styled(Dialog.Title, {}); + +const FacetsModalClose = styled(Dialog.Close, { + display: "flex", + justifyContent: "center", + alignItems: "center", + border: "none", + borderRadius: "50%", + color: "$slate10", + background: "transparent", + cursor: "pointer", + width: "$gr4", + height: "$gr4", + transition: "$canopyAll", +}); + +const FacetsModalOverlay = styled(Dialog.Overlay, { + backgroundColor: "$slateA8", + position: "fixed", + top: 0, + left: 0, + right: 0, + bottom: 0, + display: "grid", + placeItems: "center", + overflowY: "auto", + zIndex: "10", + transition: "$canopyAll", + + "&:hover": { + backgroundColor: "$slateA9", + }, + + "&::after": { + position: "fixed", + zIndex: "11", + background: "linear-gradient(180deg, $slate2, #0000)", + width: "100%", + height: "$gr9", + left: "0", + top: "0", + content: "", + }, +}); + +const FacetsModalPortal = styled(Dialog.Portal, {}); + +export { + FacetsModalClose, + FacetsModalContent, + FacetsModalContentFooter, + FacetsModalContentInner, + FacetsModalContentHeader, + FacetsModalContentBody, + FacetsModalOverlay, + FacetsModalPortal, + FacetsModalTitle, +}; diff --git a/src/components/Facets/Modal.tsx b/src/components/Facets/Modal.tsx new file mode 100644 index 0000000..aeaf2f8 --- /dev/null +++ b/src/components/Facets/Modal.tsx @@ -0,0 +1,80 @@ +import * as Accordion from "@radix-ui/react-accordion"; + +import { + FacetsModalContent as Content, + FacetsModalContentBody as ContentBody, + FacetsModalClose as ContentClose, + FacetsModalContentFooter as ContentFooter, + FacetsModalContentHeader as ContentHeader, + FacetsModalContentInner as ContentInner, + FacetsModalTitle as ContentTitle, + FacetsModalOverlay as Overlay, + FacetsModalPortal as Portal, +} from "./Modal.styled"; + +import { ButtonStyled } from "../Shared/Button/Button.styled"; +import { Cross2Icon } from "@radix-ui/react-icons"; +import FACETS from "../../../.canopy/facets.json"; +import Facet from "./Facet"; +import { LocaleString } from "@hooks/useLocale"; +import React from "react"; +import { useFacetsState } from "@context/facets"; +import { useRouter } from "next/router"; + +interface FacetsModalProps { + handleSubmit: () => void; +} + +const FacetsModal: React.FC = ({ handleSubmit }) => { + const { facetsState, facetsDispatch } = useFacetsState(); + const { facetsActive } = facetsState; + const router = useRouter(); + + const handleClearAll = () => { + FACETS.forEach((facet: any) => facetsActive.delete(facet.slug)); + facetsDispatch({ + type: "updateFacetsActive", + facetsActive: facetsActive, + }); + }; + + const handleViewResults = () => { + router.push({ pathname: "/search", query: facetsActive.toString() }); + handleSubmit(); + }; + + return ( + + + + + + + {LocaleString("searchFilter")} + + + + + + + + {FACETS.map((facet: any) => ( + + ))} + + + + + {LocaleString("searchFilterClear")} + + + {LocaleString("searchFilterSubmit")} + + + + + + ); +}; + +export default FacetsModal; diff --git a/src/components/Facets/Option.styled.ts b/src/components/Facets/Option.styled.ts new file mode 100644 index 0000000..ce0cbec --- /dev/null +++ b/src/components/Facets/Option.styled.ts @@ -0,0 +1,87 @@ +import * as Checkbox from "@radix-ui/react-checkbox"; + +import { indigoA } from "@radix-ui/colors"; +import { styled } from "@styles/stitches"; + +const OptionLabel = styled("label", { + transition: "$canopyAll", + cursor: "pointer", + fontWeight: "500", + + variants: { + isChecked: { + true: { + color: "$slate12 !important", + fontWeight: "800", + }, + }, + }, + + "&:hover, &:focus": { + color: "$indigo11", + }, + + span: { + color: "$slate11 !important", + fontSize: "$gr2", + }, +}); + +const OptionCheckbox = styled(Checkbox.Root, { + position: "relative", + zIndex: "0", + display: "flex", + flexDirection: "column", + justifyContent: "center", + alignItems: "center", + width: "$gr3", + height: "$gr3", + margin: "0 $gr1 0 0", + background: "$slate4", + boxShadow: "inset 1px 1px 2px #0002", + border: "none", + borderRadius: "50%", // 3px for checkbox + cursor: "pointer", + transition: "$canopyAll", + flexShrink: "0", + + "&::before": { + position: "absolute", + width: "100%", + height: "100%", + content: "", + background: "linear-gradient(-45deg, $indigo11, $indigo8)", + opacity: "0", + borderRadius: "50%", // 3px for checkbox + transition: "$canopyAll", + zIndex: "0", + }, + + "&[aria-checked='true']": { + boxShadow: "1px 1px 2px ${indigoA.indigoA4}", + + "&::before": { + opacity: "1", + }, + }, +}); + +const OptionCheckboxIndicator = styled(Checkbox.Indicator, { + position: "absolute", + zIndex: "1", + color: "$indigo1", + textShadow: `1px 1px 2px ${indigoA.indigoA12}`, +}); + +const OptionStyled = styled("span", { + display: "flex", + margin: "0 0 $gr1", + fontSize: "$gr3", + color: "$slate11", + + "&:last-child": { + margin: "0", + }, +}); + +export { OptionCheckbox, OptionCheckboxIndicator, OptionLabel, OptionStyled }; diff --git a/src/components/Facets/Option.tsx b/src/components/Facets/Option.tsx new file mode 100644 index 0000000..bc4243e --- /dev/null +++ b/src/components/Facets/Option.tsx @@ -0,0 +1,57 @@ +import { + OptionCheckbox, + OptionCheckboxIndicator, + OptionLabel, + OptionStyled, +} from "./Option.styled"; + +import { CheckIcon } from "@radix-ui/react-icons"; +import React from "react"; +import { useFacetsState } from "@context/facets"; + +interface FacetsOptionProps { + active: boolean; + facet: string; + identifier: string; + option: any; +} + +export const FacetsOption: React.FC = ({ + active, + facet, + identifier, + option, +}) => { + const { facetsDispatch, facetsState } = useFacetsState(); + const { facetsActive } = facetsState; + + const handleCheckedChange = (checked: boolean) => { + facetsActive.delete(facet); + checked && facetsActive.append(facet, option.slug); + + facetsDispatch({ + type: "updateFacetsActive", + facetsActive: facetsActive, + }); + }; + + return ( + + + + + + + + {option.value} ({option.doc_count}) + + + ); +}; + +export default FacetsOption; diff --git a/src/components/Figure/Figure.styled.ts b/src/components/Figure/Figure.styled.ts new file mode 100644 index 0000000..68d9b3f --- /dev/null +++ b/src/components/Figure/Figure.styled.ts @@ -0,0 +1,32 @@ +import { styled } from "@styles/stitches"; + +const Image = styled("img", { + position: "relative", + zIndex: "1", + width: "100%", + height: "100%", + objectFit: "contain", + transition: "$canopyAll", + opacity: 0, + + [`&.loaded`]: { + opacity: 1, + }, +}); + +const Wrapper = styled("figure", { + backgroundColor: "$slate6", + display: "flex", + width: "100%", + height: "100%", + padding: "0", + margin: "0", + position: "relative", + overflow: "hidden", + zIndex: "0", + borderRadius: "3px", + boxShadow: "2px 2px 5px #0001", + transition: "$canopyAll", +}); + +export { Image, Wrapper }; diff --git a/src/components/Figure/Figure.tsx b/src/components/Figure/Figure.tsx new file mode 100644 index 0000000..cb41b92 --- /dev/null +++ b/src/components/Figure/Figure.tsx @@ -0,0 +1,56 @@ +import { Image, Wrapper } from "@components/Figure/Figure.styled"; +import React, { useEffect, useRef, useState } from "react"; + +import clsx from "clsx"; +import { getResourceImage } from "@hooks/getResourceImage"; + +interface FigureProps { + alt: string; + resource: any; + region?: string; + size?: string; + isCover?: boolean; +} + +const Figure: React.FC = ({ + alt, + resource, + region = "full", + size = "400,", + isCover = false, +}) => { + const [image, setImage] = useState(); + const [loaded, setLoaded] = useState(false); + const imgRef = useRef(null); + + useEffect(() => { + setImage(getResourceImage(resource, size, region)); + + // @ts-ignore + if (imgRef?.current && imgRef?.current?.complete) setLoaded(true); + }, []); + + return ( + + setLoaded(true)} + className={clsx("source", loaded && "loaded")} + /> + + ); +}; + +export default Figure; diff --git a/src/components/Footer/Footer.styled.ts b/src/components/Footer/Footer.styled.ts new file mode 100644 index 0000000..fca21ba --- /dev/null +++ b/src/components/Footer/Footer.styled.ts @@ -0,0 +1,32 @@ +import { slateA } from "@radix-ui/colors"; +import { styled } from "@styles/stitches"; + +const FooterContent = styled("div", { + display: "flex", + justifyContent: "space-between", + fontSize: "$gr3", + fontWeight: "500", +}); + +const FooterStyled = styled("footer", { + boxShadow: `inset 1px 2px 2px ${slateA.slateA3}`, + padding: "$gr3 0", + marginTop: "$gr6", +}); + +const CollectionLink = styled("a", { + color: "$indigo11", + fill: "$indigo11", + display: "flex", + alignItems: "center", + textDecoration: "none", + + svg: { + marginRight: "$gr2", + height: "$gr3", + color: "inherit", + fill: "inherit", + }, +}); + +export { FooterContent, FooterStyled, CollectionLink }; diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx new file mode 100644 index 0000000..f0b3af7 --- /dev/null +++ b/src/components/Footer/Footer.tsx @@ -0,0 +1,27 @@ +import { CollectionLink, FooterContent, FooterStyled } from "./Footer.styled"; + +import Container from "../Shared/Container"; +import IIIF from "@components/SVG/IIIF"; +import { LocaleString } from "@hooks/useLocale"; +import React from "react"; +import ThemeMode from "./ThemeMode"; + +const { collection } = process.env.CANOPY_CONFIG as any; + +const Footer = () => { + return ( + + + + + + {LocaleString("footerSourceCollection")} + + + + + + ); +}; + +export default Footer; diff --git a/src/components/Footer/ThemeMode.tsx b/src/components/Footer/ThemeMode.tsx new file mode 100644 index 0000000..7575b96 --- /dev/null +++ b/src/components/Footer/ThemeMode.tsx @@ -0,0 +1,41 @@ +import { useEffect, useState } from "react"; + +import { ButtonStyled } from "../Shared/Button/Button.styled"; +import { LocaleString } from "@hooks/useLocale"; +import React from "react"; +import { useCanopyState } from "@src/context/canopy"; +import { useTheme } from "next-themes"; + +const ThemeMode = () => { + const [mounted, setMounted] = useState(false); + const { theme, setTheme } = useTheme(); + const { canopyState } = useCanopyState(); + const toggleTheme = LocaleString("footerToggleTheme"); + + useEffect(() => setMounted(true), []); + + const handleTheme = (currentTheme: string) => { + switch (currentTheme) { + case "light": + setTheme("dark"); + break; + case "dark": + setTheme("light"); + break; + } + }; + + if (!mounted || !canopyState.config.theme.toggleEnabled) return <>>; + + return ( + handleTheme(theme as string)} + buttonSize="small" + > + {toggleTheme} + + ); +}; + +export default ThemeMode; diff --git a/src/components/Grid/Grid.styled.ts b/src/components/Grid/Grid.styled.ts new file mode 100644 index 0000000..a1116ca --- /dev/null +++ b/src/components/Grid/Grid.styled.ts @@ -0,0 +1,57 @@ +import Masonry from "react-masonry-css"; +import { styled } from "@styles/stitches"; + +const GridItem = styled("div", { + paddingBottom: "$gr5", + zIndex: "1", + + "@xxs": { + paddingBottom: "$gr3", + }, + + "@xs": { + paddingBottom: "$gr3", + }, + + "@sm": { + paddingBottom: "$gr4", + }, + + "@md": { + paddingBottom: "$gr4", + }, +}); + +const GridStyled = styled(Masonry, { + display: "flex", + width: "auto", + position: "relative", + padding: "$gr2 0", + zIndex: "1", + + ".canopy-grid-column": { + marginLeft: "$gr5", + + "@xxs": { + marginLeft: "$gr3", + }, + + "@xs": { + marginLeft: "$gr3", + }, + + "@sm": { + marginLeft: "$gr4", + }, + + "@md": { + marginLeft: "$gr4", + }, + + "&:first-child": { + marginLeft: "0", + }, + }, +}); + +export { GridItem, GridStyled }; diff --git a/src/components/Grid/Grid.tsx b/src/components/Grid/Grid.tsx new file mode 100644 index 0000000..bb0836b --- /dev/null +++ b/src/components/Grid/Grid.tsx @@ -0,0 +1,38 @@ +import GridItem, { GridItemProps } from "@components/Grid/Item"; +import React, { ReactNode } from "react"; + +import { GridStyled } from "@components/Grid/Grid.styled"; +import { width } from "@styles/theme/media"; + +interface GridProps { + children: ReactNode | ReactNode[]; +} + +interface GridComposition { + Item: React.FC; +} + +const Grid: GridComposition & React.FC = ({ children }) => { + const columns = { + default: 6, + [width.xl]: 5, + [width.lg]: 4, + [width.md]: 4, + [width.sm]: 3, + [width.xs]: 2, + }; + + return ( + + {children} + + ); +}; + +Grid.Item = GridItem; + +export default Grid; diff --git a/src/components/Grid/Item.tsx b/src/components/Grid/Item.tsx new file mode 100644 index 0000000..0935827 --- /dev/null +++ b/src/components/Grid/Item.tsx @@ -0,0 +1,19 @@ +import Card from "@components/Card/Card"; +import { GridItem as ItemStyled } from "@components/Grid/Grid.styled"; +import React from "react"; + +export interface GridItemProps { + item: any; +} + +const GridItem: React.FC = ({ item }) => { + if (!item) return <>>; + + return ( + + + + ); +}; + +export default GridItem; diff --git a/src/components/Header/Header.styled.tsx b/src/components/Header/Header.styled.tsx new file mode 100644 index 0000000..8e3852f --- /dev/null +++ b/src/components/Header/Header.styled.tsx @@ -0,0 +1,132 @@ +import { slateA } from "@radix-ui/colors"; +import { styled } from "@styles/stitches"; + +const Title = styled("span", { + display: "flex", + marginRight: "$gr2", + fontFamily: "$display", + fontSize: "$gr6", + fontWeight: "400", + letterSpacing: "-0.01em", + + "@sm": { + marginRight: "0", + }, +}); + +const ResponsiveActions = styled("div", { + flexGrow: "1", + display: "none", + justifyContent: "flex-end", + + button: { + display: "flex", + flexDirection: "column", + justifyContent: "center", + background: "transparent", + border: "none", + fontSize: "$gr3", + height: "calc(($gr1 * 2) + $gr4 + 1px)", + cursor: "pointer", + }, + + "@sm": { + display: "flex", + }, +}); + +const Actions = styled("div", { + flexGrow: "1", + display: "flex", + justifyContent: "flex-end", + + "@sm": { + flexDirection: "column-reverse", + backgroundColor: "$slate1", + position: "absolute", + width: "100%", + padding: "$gr1 0 $gr3", + overflow: "hidden", + left: "0", + top: "-10000px", + boxShadow: `1px 2px 2px ${slateA.slateA4}`, + }, + + variants: { + showNav: { + true: { + top: "calc($gr4 + ($gr2 * 2))", + }, + }, + }, +}); + +const Content = styled("div", { + width: "100%", + padding: "$gr1 $gr5", + backgroundColor: "$slate1", + display: "flex", + flexDirection: "row", + justifyContent: "space-between", + color: "$slate1", + fontSize: "1rem", + lineHeight: "1.5rem", + alignItems: "center", + zIndex: "1", + boxShadow: `1px 1px 3px ${slateA.slateA6}`, + boxSizing: "border-box", + + "@xl": { + padding: "$gr1 $gr4", + }, + + "@lg": { + padding: "$gr1 $gr4", + }, + + "@md": { + padding: "$gr1 $gr4", + }, + + "@sm": { + padding: "$gr1 $gr4", + }, + + "@xs": { + padding: "$gr1 $gr3", + }, + + "@xxs": { + padding: "$gr1 $gr3", + }, + + [`& ${Title} a`]: { + textDecoration: "none", + color: "$slate12", + + "&:hover, &:focus": { + color: "$indigo10", + }, + }, +}); + +const Wrapper = styled("header", { + position: "fixed", + width: "100%", + zIndex: "10", + top: "0", + display: "flex", + flexDirection: "column", + transition: "$canopyOpacity", + opacity: "1", + + variants: { + isVisible: { + false: { + opacity: "0", + }, + }, + }, +}); + +export { Actions, Content, ResponsiveActions, Title, Wrapper }; diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx new file mode 100644 index 0000000..346c279 --- /dev/null +++ b/src/components/Header/Header.tsx @@ -0,0 +1,54 @@ +import { Actions, ResponsiveActions } from "./Header.styled"; +import { Content, Title, Wrapper } from "@components/Header/Header.styled"; +import React, { useEffect, useState } from "react"; + +import { HamburgerMenuIcon } from "@radix-ui/react-icons"; +import { Label } from "@samvera/clover-iiif/primitives"; +import Link from "next/link"; +import Locale from "@components/Shared/Locale/Locale"; +import Nav from "@components/Nav/Nav"; +import Search from "@components/Search/Search"; +import collections from "@.canopy/collections.json"; +import { useCanopyState } from "@context/canopy"; +import useNavigation from "@src/hooks/useNavigation"; +import { useRouter } from "next/router"; + +const Header = () => { + const [showNav, setShowNav] = useState(false); + const router = useRouter(); + const { pathname, query } = router; + const { canopyState } = useCanopyState(); + const { headerVisible } = canopyState; + + const { navigation } = useNavigation({ relativePath: "" }); + + useEffect(() => { + setShowNav(false); + }, [pathname, query]); + + const handleShowNav = () => setShowNav(!showNav); + + return ( + + + + + + + + + + + + + + + {navigation && } + + + + + ); +}; + +export default Header; diff --git a/src/components/Hero/Hero.styled.ts b/src/components/Hero/Hero.styled.ts new file mode 100644 index 0000000..187bed6 --- /dev/null +++ b/src/components/Hero/Hero.styled.ts @@ -0,0 +1,122 @@ +import { indigo, slate, slateA, slateDarkA } from "@radix-ui/colors"; + +import { ContainerStyled } from "../Shared/Container"; +import { styled } from "@styles/stitches"; + +/* eslint sort-keys: 0 */ + +const HeroStyled = styled("div", { + position: "absolute", + width: "100%", + height: "100%", + zIndex: "0", + backgroundColor: slate.slate12, + + ".swiper": { + backgroundColor: "transparent", + width: "100%", + height: "100%", + position: "relative", + overflow: "unset", + + ".swiper-wrapper": {}, + + ".swiper-button-prev, .swiper-button-next": { + color: slate.slate1, + }, + + ".swiper-pagination-bullet": { + backgroundColor: slateDarkA.slateA7, + opacity: "1", + }, + + ".swiper-pagination-bullet-active": { + backgroundColor: slate.slate1, + }, + + ".swiper-slide": { + display: "flex", + backgroundColor: slate.slate12, + + a: { + display: "flex", + color: `${slate.slate12}`, + textDecoration: "none", + + "&:hover, &:focus": { + color: `${indigo.indigo11}`, + }, + }, + + figure: { + width: "100%", + position: "relative", + margin: "0", + padding: "0", + + "img, video": { + position: "absolute", + width: "100%", + height: "100%", + objectFit: "cover", + }, + + "&::before": { + backgroundColor: `$slate1`, + opacity: "0.92", + color: "transparent", + width: "100%", + padding: "$gr3 0", + fontSize: "$gr5", + lineHeight: "1.15em", + position: "absolute", + zIndex: "3", + bottom: "0", + left: "0", + content: "-", + boxShadow: `-1px -1px 2px ${slateA.slateA3}`, + }, + + figcaption: { + position: "absolute", + zIndex: "4", + bottom: "0", + left: "0", + display: "flex", + flexDirection: "column", + alignItems: "flex-start", + textAlign: "left", + backgroundColor: `transparent`, + width: "100%", + color: "$slate12", + + [`> ${ContainerStyled}`]: { + justifyContent: "flex-end", + }, + + ".slide-label": { + padding: "$gr3 0", + fontFamily: "$display", + fontSize: "$gr5", + fontWeight: "400", + display: "flex", + marginRight: "$gr2", + transition: "$canopyAll", + letterSpacing: "-0.01em", + }, + }, + }, + }, + }, +}); + +const HeroWrapper = styled("div", { + height: "calc(100vh - 61.25px)", + minHeight: "300px", + maxHeight: "500px", + backgroundColor: slate.slate12, + position: "relative", + zIndex: "1", +}); + +export { HeroStyled, HeroWrapper }; diff --git a/src/components/Hero/Hero.tsx b/src/components/Hero/Hero.tsx new file mode 100644 index 0000000..1e8a2bd --- /dev/null +++ b/src/components/Hero/Hero.tsx @@ -0,0 +1,61 @@ +import "swiper/css"; +import "swiper/css/effect-fade"; +import "swiper/css/navigation"; +import "swiper/css/pagination"; + +import { Autoplay, EffectFade, Keyboard, Navigation } from "swiper"; +import { Label, Thumbnail } from "@samvera/clover-iiif/primitives"; +import { Swiper, SwiperSlide } from "swiper/react"; + +import Container from "../Shared/Container"; +import { HeroStyled } from "@components/Hero/Hero.styled"; +import Link from "next/link"; +import React from "react"; + +interface HeroProps { + collection?: any; +} + +const Hero: React.FC = ({ collection }) => { + if (!collection) return <>>; + + return ( + + 1} + slidesPerView={1} + speed={200} + > + {collection.items.map((item: any) => ( + + + + + + + + + + + + + ))} + + + ); +}; + +export default Hero; diff --git a/src/components/Layouts/Basic.tsx b/src/components/Layouts/Basic.tsx new file mode 100644 index 0000000..05dbb08 --- /dev/null +++ b/src/components/Layouts/Basic.tsx @@ -0,0 +1,69 @@ +import { + AsideFixedContent, + AsideStyled, + ContentStyled, + ContentWrapper, +} from "@components/Shared/Content.styled"; +import { useEffect, useState } from "react"; + +import Container from "@components/Shared/Container"; +import FrontMatterContext from "@src/context/front-matter"; +import Layout from "@components/layout"; +import { LayoutFrontMatter } from "@src/customTypes/content"; +import Nav from "@components/Nav/Nav"; +import { NavigationItem } from "@customTypes/navigation"; +import { getSlug } from "@lib/build/slug"; +import { renderToStaticMarkup } from "react-dom/server"; +import useNavigation from "@src/hooks/useNavigation"; + +const LayoutsBasic = ({ content, frontMatter }: LayoutFrontMatter) => { + // path relative to the `content/` directory + const navigationPath = frontMatter.navigation + ? `${frontMatter.navigation}/` + : undefined; + + const { navigation } = useNavigation({ + relativePath: navigationPath, + }); + const [subNavigation, setSubNavigation] = useState(); + + useEffect(() => { + const html = document.createElement("html"); + html.innerHTML = renderToStaticMarkup(content); + const h2 = Object.values(html.getElementsByTagName("h2")).map((element) => { + const { textContent } = element; + return { + path: `#${getSlug(textContent)}`, + text: textContent ? textContent : "", + }; + }); + setSubNavigation(h2); + }, [content]); + + return ( + + + + + {frontMatter.navigation && ( + + + {navigation && ( + + )} + + + )} + {content} + + + + + ); +}; + +export default LayoutsBasic; diff --git a/src/components/MDX/Card.tsx b/src/components/MDX/Card.tsx new file mode 100644 index 0000000..da4a0f7 --- /dev/null +++ b/src/components/MDX/Card.tsx @@ -0,0 +1,34 @@ +import { useEffect, useState } from "react"; + +import Card from "@components/Card/Card"; +import { canopyManifests } from "@lib/constants/canopy"; + +const MDXCard = ({ iiifContent }: { iiifContent: string }) => { + const [resource, setResource] = useState(); + const manifests = canopyManifests(); + + useEffect(() => { + const item = manifests.find((manifest) => manifest.id === iiifContent); + + if (item) + setResource({ + id: iiifContent, + type: "Manifest", + label: item.label, + thumbnail: item.thumbnail, + homepage: [ + { + id: `/works/${item.slug}`, + label: item.label, + type: "Text", + }, + ], + }); + }, [iiifContent]); + + if (!resource) return null; + + return ; +}; + +export default MDXCard; diff --git a/src/components/MDX/ReferencedItems.tsx b/src/components/MDX/ReferencedItems.tsx new file mode 100644 index 0000000..aab9ee9 --- /dev/null +++ b/src/components/MDX/ReferencedItems.tsx @@ -0,0 +1,24 @@ +import React, { useContext } from "react"; + +import FrontMatterContext from "@src/context/front-matter"; +import Grid from "@components/Grid/Grid"; +import MDXCard from "@components/MDX/Card"; + +const ReferencedItems: React.FC = () => { + const frontMatter = useContext(FrontMatterContext); + + return ( + + {frontMatter.referencedManifests?.map((manifestId, index) => { + return ( + + ); + })} + + ); +}; + +export default ReferencedItems; diff --git a/src/components/MDX/Slider.tsx b/src/components/MDX/Slider.tsx new file mode 100644 index 0000000..b880e88 --- /dev/null +++ b/src/components/MDX/Slider.tsx @@ -0,0 +1,7 @@ +import Slider from "@components/Viewer/Slider"; + +const MDXSlider = ({ iiifContent }: { iiifContent: string }) => { + return ; +}; + +export default MDXSlider; diff --git a/src/components/MDX/Viewer.tsx b/src/components/MDX/Viewer.tsx new file mode 100644 index 0000000..e167a5b --- /dev/null +++ b/src/components/MDX/Viewer.tsx @@ -0,0 +1,22 @@ +import Viewer from "@components/Viewer/Viewer"; + +const defaultOptions = { + showTitle: true, + showIIIFBadge: false, + informationPanel: { + open: false, + renderToggle: false, + }, +}; + +const MDXViewer = ({ + iiifContent, + options = defaultOptions, +}: { + iiifContent: string; + options: any; +}) => { + return ; +}; + +export default MDXViewer; diff --git a/src/components/MDX/index.tsx b/src/components/MDX/index.tsx new file mode 100644 index 0000000..fdb3ca2 --- /dev/null +++ b/src/components/MDX/index.tsx @@ -0,0 +1,55 @@ +//@ts-nocheck + +import { MDXRemote, MDXRemoteProps } from "next-mdx-remote"; + +import Blockquote from "@components/Shared/Markdown/Blockquote"; +import Button from "@components/Shared/Button/Button"; +import { ButtonWrapper } from "@components/Shared/Button/Button.styled"; +import Card from "@components/MDX/Card"; +import Code from "@components/Shared/Code/Code"; +import { CodeInline } from "@components/Shared/Code/Code.styled"; +import Heading from "@components/Shared/Heading/Heading"; +import ReferencedItems from "@src/components/MDX/ReferencedItems"; +import Slider from "@components/MDX/Slider"; +import Viewer from "@components/MDX/Viewer"; +import { getSlug } from "@src/lib/build/slug"; + +/** + * Declare custom React components available in MDX content + */ +const customComponents = { + Button, + ButtonWrapper, + Card, + ReferencedItems, + Slider, + Viewer, +}; + +/** + * Define custom React components to render Markdown elements + */ +const components = { + h1: (props) => , + h2: (props) => , + h3: (props) => , + h4: (props) => , + h5: (props) => , + code: (props) => , + blockquote: (props) => , + pre: (props) => { + const string = props?.children?.props?.children; + const language = props?.children?.props?.className?.replace( + "language-", + "" + ); + return {string?.trim()}; + }, + ...customComponents, +}; + +const CanopyMDXRemote = (source: MDXRemoteProps) => { + return ; +}; + +export default CanopyMDXRemote; diff --git a/src/components/Map/Map.styled.tsx b/src/components/Map/Map.styled.tsx new file mode 100644 index 0000000..04911ec --- /dev/null +++ b/src/components/Map/Map.styled.tsx @@ -0,0 +1,29 @@ +import { styled } from "@styles/stitches"; + +const MapStyled = styled("div", { + height: "100vh", + position: "relative", + zIndex: "0", + + ".map-container": { + height: "100%", + width: "100%", + figure: { + width: "100%", + margin: "0", + padding: "0", + }, + }, + + figure: { + img: { + width: "100%", + maxHeight: "200px", + }, + video: { + display: "none", + }, + }, +}); + +export { MapStyled }; diff --git a/src/components/Map/Map.tsx b/src/components/Map/Map.tsx new file mode 100644 index 0000000..f8afbc2 --- /dev/null +++ b/src/components/Map/Map.tsx @@ -0,0 +1,121 @@ +import "leaflet/dist/leaflet.css"; +import "leaflet.markercluster/dist/MarkerCluster.css"; +import "leaflet.markercluster/dist/MarkerCluster.Default.css"; +import { + FeatureGroup, + LayersControl, + MapContainer, + Marker, + Popup, + TileLayer, +} from "react-leaflet"; +import { Label, Thumbnail } from "@samvera/clover-iiif/primitives"; +import { useEffect, useRef, useState } from "react"; +import Container from "@components/Shared/Container"; +import { InternationalString } from "@iiif/presentation-3"; +import Leaflet from "leaflet"; +import Link from "next/link"; +import { MapStyled } from "@components/Map/Map.styled"; +import MarkerClusterGroup from "@components/Map/MarkerClusterGroup"; +import { getBounds } from "@lib/iiif/navPlace"; +import { getLabel } from "@hooks/getLabel"; + +interface MapProps { + manifests: any; +} + +interface MapVars { + defaultBounds: Leaflet.LatLngBoundsExpression; + enabled: boolean; + icon: Leaflet.IconOptions; + tileLayers: Leaflet.TileLayer[]; +} + +const Map: React.FC = ({ manifests }) => { + // @ts-ignore + const mapVars: MapVars = process.env.CANOPY_CONFIG.map; + const tileLayers = mapVars.tileLayers; + const defaultBounds = mapVars.defaultBounds; + const mapRef = useRef(null); + const icon = Leaflet.icon(mapVars.icon); + const [bounds, setBounds] = + useState(defaultBounds); + + useEffect(() => { + const manifestBounds = getBounds(manifests); + manifestBounds.length > 0 && setBounds(manifestBounds); + }, [manifests]); + + useEffect(() => { + if (mapRef.current && bounds) { + mapRef.current.fitBounds(bounds); + } + }, [mapRef, bounds]); + + return ( + + + + {tileLayers.map((tile: any, index: number) => { + if (index === 0) { + return ( + + + + ); + } + return ( + + + + ); + })} + + + + {manifests.map((item: any) => + item.features.map((feature: any, index: any) => ( + + + + + {" "} + + + + + + + + + + )) + )} + + + + + ); +}; + +export default Map; diff --git a/src/components/Map/MarkerClusterGroup.tsx b/src/components/Map/MarkerClusterGroup.tsx new file mode 100644 index 0000000..64f48c0 --- /dev/null +++ b/src/components/Map/MarkerClusterGroup.tsx @@ -0,0 +1,26 @@ +import 'leaflet.markercluster'; +import { createPathComponent } from '@react-leaflet/core'; +import L from 'leaflet'; + +const MarkerClusterGroup = createPathComponent(({ ...props}, ctx) => { + const clusterProps: Record = {}; + const clusterEvents: Record < string, any >= {}; + + Object.entries(props).forEach(([propName, prop]) => propName.startsWith('on') ? (clusterEvents[propName] = prop) + : (clusterProps[propName] = prop)); + + // @ts-ignore + const markerClusterGroup = L.markerClusterGroup(clusterProps); + + Object.entries(clusterEvents).forEach(([eventAsProp, callback]) => { + const clusterEvent = `cluster${eventAsProp.substring(2).toLowerCase()}`; + markerClusterGroup.on(clusterEvent, callback); + }); + + return { + instance: markerClusterGroup, + context: {...ctx, layerContainer: markerClusterGroup}, + }; +}); + +export default MarkerClusterGroup; \ No newline at end of file diff --git a/src/components/Nav/Items.tsx b/src/components/Nav/Items.tsx new file mode 100644 index 0000000..0bd3682 --- /dev/null +++ b/src/components/Nav/Items.tsx @@ -0,0 +1,25 @@ +import { Items } from "@components/Nav/Nav.styled"; +import NavItemsLink from "@components/Nav/ItemsLink"; +import { NavigationItem } from "@customTypes/navigation"; +import React from "react"; + +interface NavItemsProps { + items: NavigationItem[]; + orientation: "horizontal" | "vertical"; + subNavigation?: NavigationItem[]; +} +const NavItems: React.FC = ({ + items, + orientation, + subNavigation, +}) => { + return ( + + {items?.map((item) => ( + + ))} + + ); +}; + +export default NavItems; diff --git a/src/components/Nav/ItemsLink.tsx b/src/components/Nav/ItemsLink.tsx new file mode 100644 index 0000000..e9183d7 --- /dev/null +++ b/src/components/Nav/ItemsLink.tsx @@ -0,0 +1,61 @@ +import Link from "next/link"; +import Nav from "@components/Nav/Nav"; +import { NavigationItem } from "@customTypes/navigation"; +import { useRef } from "react"; +import { useRouter } from "next/router"; + +interface NavItemsLinkProps { + path: string; + text: string; + subNavigation?: NavigationItem[]; +} + +const NavItemsLink: React.FC = ({ + path, + subNavigation, + text, +}) => { + const router = useRouter(); + const linkRef = useRef(null); + + const handleOnClick = ( + e: React.MouseEvent + ) => { + const href = e?.currentTarget.href; + const targetId = href.replace(/.*\#/, ""); + if (targetId !== href) { + e.preventDefault(); + window.history.pushState({}, "", href); + const target = document.getElementById(targetId); + if (target) + window.scrollTo({ + behavior: "smooth", + top: + target?.getBoundingClientRect().top - + document.body.getBoundingClientRect().top - + 50, + }); + } + }; + + const { query, pathname } = router; + const constructedPath = pathname.replace(/\[.*\]/, query?.slug as string); + + return ( + <> + + {text} + + {subNavigation && path === constructedPath && ( + + )} + > + ); +}; + +export default NavItemsLink; diff --git a/src/components/Nav/Nav.styled.ts b/src/components/Nav/Nav.styled.ts new file mode 100644 index 0000000..6fa2e5c --- /dev/null +++ b/src/components/Nav/Nav.styled.ts @@ -0,0 +1,101 @@ +import { styled } from "@styles/stitches"; + +const Items = styled("div", { + display: "flex", + fontFamily: "$sans", + fontWeight: "500", + flexGrow: "0", + + variants: { + orientation: { + horizontal: { + justifyContent: "flex-end", + + a: { + whiteSpace: "nowrap", + }, + }, + vertical: { + flexDirection: "column", + alignItems: "flex-start", + padding: "0 0 $gr4", + + a: { + color: "$slate10", + padding: "$gr1 0 $gr2", + marginBottom: "0", + + [`&.active`]: { + color: "$slate12 !important", + }, + + [`&:hover`]: { + color: "$indigo12", + }, + }, + }, + }, + }, + + "@sm": { + flexDirection: "column", + alignItems: "flex-start", + padding: "$gr1 $gr4 $gr3", + fontWeight: "500", + }, + + a: { + padding: "$gr2 $gr3", + display: "inline-flex", + color: "$slate12", + textDecoration: "none", + borderRadius: "2rem", + position: "relative", + transition: "$canopyAll", + + "@sm": { + padding: "0", + marginBottom: "$gr2", + transition: "none", + }, + + [`&:hover`]: { + color: "$indigo11 !important", + }, + + [`&.active`]: { + color: "$indigo11", + }, + }, +}); + +const Wrapper = styled("nav", { + position: "relative", + display: "flex", + flexDirection: "row", + alignItems: "center", + zIndex: "1", + flexGrow: "0", + fontSize: "$gr4", + + nav: { + fontSize: "$gr3", + margin: "$gr2 0", + padding: "0 $gr3", + borderLeft: "2px solid $slate4", + + [`& ${Items}`]: { + paddingBottom: "0", + }, + + "a:first-child": { + paddingTop: 0, + }, + + "a:last-child": { + paddingBottom: 0, + }, + }, +}); + +export { Items, Wrapper }; diff --git a/src/components/Nav/Nav.tsx b/src/components/Nav/Nav.tsx new file mode 100644 index 0000000..80419f4 --- /dev/null +++ b/src/components/Nav/Nav.tsx @@ -0,0 +1,28 @@ +import NavItems from "@components/Nav/Items"; +import { NavigationItem } from "@customTypes/navigation"; +import React from "react"; +import { Wrapper } from "@components/Nav/Nav.styled"; + +interface NavProps { + items: NavigationItem[]; + orientation?: "horizontal" | "vertical"; + subNavigation?: NavigationItem[]; +} + +const Nav: React.FC = ({ + items, + orientation = "horizontal", + subNavigation, +}) => { + return ( + + + + ); +}; + +export default Nav; diff --git a/src/components/Related/Related.styled.ts b/src/components/Related/Related.styled.ts new file mode 100644 index 0000000..1540592 --- /dev/null +++ b/src/components/Related/Related.styled.ts @@ -0,0 +1,7 @@ +import { styled } from "@styles/stitches"; + +const RelatedStyled = styled("section", { + padding: "$gr4 0", +}); + +export { RelatedStyled }; diff --git a/src/components/Related/Related.tsx b/src/components/Related/Related.tsx new file mode 100644 index 0000000..7493bc6 --- /dev/null +++ b/src/components/Related/Related.tsx @@ -0,0 +1,24 @@ +import Heading from "../Shared/Heading/Heading"; +import React from "react"; +import { RelatedStyled } from "./Related.styled"; +import Slider from "@components/Viewer/Slider"; + +interface RelatedProps { + collections: string[]; + title?: string; +} + +const Related: React.FC = ({ + collections, + title = "Related Works", +}) => { + return ( + + {title && {title}} + {collections.map((id) => ( + + ))} + + ); +}; +export default Related; diff --git a/src/components/SVG/IIIF.tsx b/src/components/SVG/IIIF.tsx new file mode 100644 index 0000000..c881785 --- /dev/null +++ b/src/components/SVG/IIIF.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import { styled } from "@styles/stitches"; + +const IIIF = () => { + return ( + + IIIF Manifest Options + + + + + + + + + + + + + ); +}; + +const StyledIIIF = styled("svg", { + fill: "$indigo1", +}); + +export default IIIF; diff --git a/src/components/Search/Header.styled.ts b/src/components/Search/Header.styled.ts new file mode 100644 index 0000000..d82cdd0 --- /dev/null +++ b/src/components/Search/Header.styled.ts @@ -0,0 +1,61 @@ +import { ContainerStyled } from "../Shared/Container"; +import { FacetsActivateStyled } from "../Facets/Activate.styled"; +import { styled } from "@styles/stitches"; + +const SearchHeaderFloat = styled("div", { + display: "flex", + position: "fixed", + left: "0", + zIndex: "5", + width: "100%", + + [`> ${ContainerStyled}`]: { + display: "flex", + justifyContent: "space-between", + alignItems: "center", + }, +}); + +const SearchHeaderStyled = styled("div", { + height: "$gr5", + padding: "$gr4 0 $gr3", + + "@sm": { + height: "$gr5", + padding: "$gr3 0 $gr2", + }, + + "#canopy-search-summary": { + opacity: "1", + transition: "$canopyOpacity", + fontSize: "$gr4", + color: "$slate11", + fontWeight: "300", + + "@sm": { + fontSize: "$gr3", + }, + }, + + variants: { + isFixed: { + true: { + [`> ${SearchHeaderFloat}`]: { + "#canopy-search-summary": { + opacity: "0", + }, + + [`${FacetsActivateStyled}`]: { + right: "50%", + transform: "translate(50%)", + backfaceVisibility: "hidden", + webkitFontSmoothing: "subpixel-antialiased", + boxShadow: "2px 2px 5px #0003", + }, + }, + }, + }, + }, +}); + +export { SearchHeaderFloat, SearchHeaderStyled }; diff --git a/src/components/Search/Results.tsx b/src/components/Search/Results.tsx new file mode 100644 index 0000000..26754ef --- /dev/null +++ b/src/components/Search/Results.tsx @@ -0,0 +1,51 @@ +import React, { useCallback, useEffect, useRef, useState } from "react"; + +import Grid from "@components/Grid/Grid"; +import usePageResults from "@hooks/usePageResults"; + +interface SearchResultsProps { + pages: Array; + query: any; +} + +const SearchResults: React.FC = ({ pages, query }) => { + const [page, setPage] = useState(0); + const { data, loading, more } = usePageResults(pages, page, query); + + useEffect(() => setPage(0), [query]); + + const observer = useRef(); + const loadMore = useCallback( + (node: HTMLElement) => { + if (loading) return; + if (observer.current) observer.current.disconnect(); + observer.current = new IntersectionObserver((entries) => { + if (entries[0].isIntersecting && more) + setPage((prevPage) => prevPage + 1); + }); + if (node) observer.current.observe(node); + }, + [loading, more] + ); + + return ( + + {data.map((item: any, index) => + data.length === index + 1 ? ( + + + + ) : ( + + + + ) + )} + + ); +}; + +export default SearchResults; diff --git a/src/components/Search/Search.styled.ts b/src/components/Search/Search.styled.ts new file mode 100644 index 0000000..cb70061 --- /dev/null +++ b/src/components/Search/Search.styled.ts @@ -0,0 +1,101 @@ +import { indigoA } from "@radix-ui/colors"; +import { styled } from "@styles/stitches"; + +const SearchInput = styled("input", { + transition: "$canopyAll", + cursor: "select", + fontSize: "$gr3", + fontFamily: "$sans", + fontWeight: "500", + color: "$slate12", + backgroundColor: "$slate2", + padding: "0 $gr3 0 calc($gr4 + $gr2)", + border: "1px solid $slate6", + borderRadius: "2rem", + height: "calc($gr4 + $gr1 * 2)", + flexGrow: "1", + position: "absolute", + right: "0", + width: "calc(100% - ($gr3 + $gr4 + $gr2))", + zIndex: "0", + + "&:active, &:focus": { + color: "$indigo12", + backgroundColor: "$indigo4", + outline: "none", + flexShrink: "1", + border: "1px solid $indigo7", + boxShadow: `inset 1px 1px 1px ${indigoA.indigoA4}`, + }, +}); + +const SearchSubmit = styled("button", { + padding: "0 $gr3", + height: "calc($gr4 + $gr1 * 2)", + fontSize: "$gr3", + fontWeight: "500", + fontFamily: "$sans", + borderRadius: "2rem ", + backgroundColor: "transparent", + color: "$slate9", + cursor: "pointer", + transition: "$canopyAll", + zIndex: "1", + border: "none", + + "&:hover, &:focus": { + color: "$indigo11", + opacity: "1", + }, +}); + +const SearchForm = styled("form", { + position: "relative", + display: "flex", + alignItems: "center", + cursor: "select", + margin: "0 $gr4", + flexGrow: "1", + flexShrink: "1", + width: "100%", + justifyContent: "space-between", + opacity: "1", + + "@sm": { + maxWidth: "calc(100% - ($gr4 * 2))", + }, + + variants: { + isFocused: { + true: { + svg: { + color: "$indigo9", + }, + }, + }, + }, + + "&:hover input": { + outlineColor: "$indigo7", + }, + + svg: { + color: "$slate9", + marginLeft: "$gr2", + position: "relative", + zIndex: "1", + transition: "$canopyAll", + }, + + "&:focus-within": { + svg: { + color: "$indigo9", + }, + + [`> ${SearchSubmit}`]: { + color: "$indigo11", + }, + }, +}); + +export { SearchForm, SearchInput, SearchSubmit }; diff --git a/src/components/Search/Search.test.tsx b/src/components/Search/Search.test.tsx new file mode 100644 index 0000000..ecc04e5 --- /dev/null +++ b/src/components/Search/Search.test.tsx @@ -0,0 +1,47 @@ +import { CanopyProvider, defaultState } from "@context/canopy"; +import { render, screen } from "@testing-library/react"; + +import Search from "./Search"; + +const initialState = { + ...defaultState, + locale: { + config: { + footerSourceCollection: "Source Collection", + footerToggleTheme: "Toggle Theme", + homepageHighlightedWorks: "Highlighted Works", + searchButton: "Search", + searchResults: "Results", + searchFilter: "Filter", + searchFilterAny: "Any", + searchFilterClear: "Clear All", + searchFilterClose: "Close", + searchFilterSubmit: "View Results", + default: { + footerSourceCollection: "Source Collection", + footerToggleTheme: "Toggle Theme", + homepageHighlightedWorks: "Highlighted Works", + searchButton: "Search", + searchResults: "Results", + searchFilter: "Filter", + searchFilterAny: "Any", + searchFilterClear: "Clear All", + searchFilterClose: "Close", + searchFilterSubmit: "View Results", + }, + }, + }, +}; + +describe("Search component", () => { + it("renders Search elements", () => { + render( + + + + ); + expect(screen.getByRole("textbox")).toBeInTheDocument(); + expect(screen.getByTestId("search-form")).toBeInTheDocument(); + expect(screen.getByRole("button")).toHaveTextContent(/search/i); + }); +}); diff --git a/src/components/Search/Search.tsx b/src/components/Search/Search.tsx new file mode 100644 index 0000000..6c30467 --- /dev/null +++ b/src/components/Search/Search.tsx @@ -0,0 +1,56 @@ +import React, { + ChangeEvent, + SyntheticEvent, + useEffect, + useRef, + useState, +} from "react"; +import { + SearchForm, + SearchInput, + SearchSubmit, +} from "@components/Search/Search.styled"; + +import { LocaleString } from "@hooks/useLocale"; +import { MagnifyingGlassIcon } from "@radix-ui/react-icons"; +import { useRouter } from "next/router"; + +const Search = () => { + const [value, setValue] = useState(); + const router = useRouter(); + const search = useRef(null); + + const handleSubmit = (e: SyntheticEvent) => { + e.preventDefault(); + + router.push({ + pathname: "/search", + query: { + ...router.query, + q: value, + }, + }); + }; + + const handleSearchChange = (e: ChangeEvent) => { + setValue(e.target.value); + }; + + useEffect(() => { + if (router) { + const { q } = router.query; + if (q && search.current) search.current.value = q as string; + setValue(q as string); + } + }, [router]); + + return ( + + + + {LocaleString("searchButton")} + + ); +}; + +export default Search; diff --git a/src/components/Shared/Button/Button.styled.ts b/src/components/Shared/Button/Button.styled.ts new file mode 100644 index 0000000..4adca34 --- /dev/null +++ b/src/components/Shared/Button/Button.styled.ts @@ -0,0 +1,78 @@ +import { slateA } from "@radix-ui/colors"; +import { styled } from "@styles/stitches"; + +const ButtonStyled = styled("button", { + padding: "$gr2 $gr3", + borderRadius: "2rem", + textDecoration: "none", + border: "none", + backgroundColor: "$slate3", + color: "$slate11 !important", + boxShadow: `1px 1px 2px ${slateA.slateA6}`, + fontWeight: "500", + fontSize: "$gr4", + cursor: "pointer", + transition: "$canopyAll", + + "@sm": { + padding: "$gr2 $gr3", + fontSize: "$gr3", + }, + + variants: { + buttonType: { + primary: { + backgroundColor: "$indigo11", + color: "$indigo2 !important", + + "&:hover, &:focus": { + backgroundColor: "$indigo9", + }, + }, + secondary: { + backgroundColor: "$slate3", + color: "$slate11 !important", + + "&:hover, &:focus": { + backgroundColor: "$slate6", + }, + }, + transparent: { + backgroundColor: "transparent", + boxShadow: "none", + color: "$slate11 !important", + textDecoration: "underline", + paddingLeft: "0", + paddingRight: "0", + + "&:hover, &:focus": { + backgroundColor: "transparent", + }, + }, + }, + buttonSize: { + small: { + fontSize: "$gr3", + }, + tiny: { + padding: "$gr1 $gr2", + fontSize: "$gr2", + }, + }, + }, +}); + +const ButtonWrapper = styled("div", { + margin: "$gr4 0 0", + display: "flex", + + [`> ${ButtonStyled}`]: { + marginRight: "$gr3", + + "&:last-child": { + margin: "0", + }, + }, +}); + +export { ButtonStyled, ButtonWrapper }; diff --git a/src/components/Shared/Button/Button.tsx b/src/components/Shared/Button/Button.tsx new file mode 100644 index 0000000..90d2236 --- /dev/null +++ b/src/components/Shared/Button/Button.tsx @@ -0,0 +1,33 @@ +import React, { ReactNode } from "react"; + +import { ButtonStyled } from "./Button.styled"; +import Link from "next/link"; + +Link; + +interface ButtonProps { + buttonType?: "primary" | "secondary" | "transparent"; + children: ReactNode | ReactNode[]; + href?: string; + target?: string; +} + +const Button: React.FC = ({ + buttonType, + children, + href, + target, +}) => { + return ( + + {children} + + ); +}; + +export default Button; diff --git a/src/components/Shared/Code/Code.styled.ts b/src/components/Shared/Code/Code.styled.ts new file mode 100644 index 0000000..1df5586 --- /dev/null +++ b/src/components/Shared/Code/Code.styled.ts @@ -0,0 +1,34 @@ +import { indigoA } from "@radix-ui/colors"; +import { styled } from "@styles/stitches"; + +const CodeStyled = styled("div", { + position: "relative", + + button: { + position: "absolute", + marginTop: "-$gr2", + right: "$gr3", + }, +}); + +const CodePre = styled("pre", { + backgroundColor: "$indigo3", + padding: "$gr3", + borderRadius: "5px", + lineHeight: "1.382em", + overflowX: "scroll", + overflowY: "visible", + boxShadow: `inset 1px 1px 2px ${indigoA.indigoA3}`, + zIndex: "0", +}); + +const CodeInline = styled("code", { + backgroundColor: "$indigo3", + padding: "3px $gr1", + borderRadius: "5px", + fontSize: "$gr3", + color: "$indigo11", + boxShadow: `1px 1px 1px ${indigoA.indigoA6}`, +}); + +export { CodeStyled, CodeInline, CodePre }; diff --git a/src/components/Shared/Code/Code.tsx b/src/components/Shared/Code/Code.tsx new file mode 100644 index 0000000..7f59318 --- /dev/null +++ b/src/components/Shared/Code/Code.tsx @@ -0,0 +1,53 @@ +import { CodePre, CodeStyled } from "./Code.styled"; +import Highlight, { Language, defaultProps } from "prism-react-renderer"; + +import { ButtonStyled } from "@components/Shared/Button/Button.styled"; +import { CopyIcon } from "@radix-ui/react-icons"; +import React from "react"; +import copy from "copy-to-clipboard"; +import { theme } from "./prism-helpers"; + +const Code = ({ + children, + language, +}: { + children: string; + language: Language; +}) => { + return ( + + {({ style, tokens, getLineProps, getTokenProps }) => ( + + { + copy(children); + }} + css={{ display: "flex", alignItems: "center" }} + > + Copy + + + + {tokens.map((line, i) => ( + + {line.map((token, key) => ( + + ))} + + ))} + + + )} + + ); +}; + +export default Code; diff --git a/src/components/Shared/Code/prism-helpers.ts b/src/components/Shared/Code/prism-helpers.ts new file mode 100644 index 0000000..3098027 --- /dev/null +++ b/src/components/Shared/Code/prism-helpers.ts @@ -0,0 +1,26 @@ +import { PrismTheme } from "prism-react-renderer"; +import { rem } from "@styles/global"; + +export const theme: PrismTheme = { + plain: { + color: "var(--colors-indigo12)", + fontSize: rem * 0.9, + fontFamily: "Menlo, monospace", + }, + styles: [ + { + types: ["boolean", "string"], + style: { + color: "var(--colors-indigo10)", + }, + }, + { + types: ["operator"], + style: { color: "var(--colors-indigo11)" }, + }, + { + types: ["punctuation"], + style: { color: "var(--colors-indigo8)" }, + }, + ], +}; diff --git a/src/components/Shared/Container.tsx b/src/components/Shared/Container.tsx new file mode 100644 index 0000000..cbd3dcc --- /dev/null +++ b/src/components/Shared/Container.tsx @@ -0,0 +1,89 @@ +import { maxWidths } from "@styles/theme/containers"; +import { styled } from "@styles/stitches"; + +interface ContainerProps { + isFlex?: boolean; + isRelative?: boolean; + children: React.ReactNode | React.ReactNode[]; + className?: string; + containerType?: "default" | "wide"; + maxWidth?: number; +} + +const Container: React.FC = ({ + children, + className, + containerType = "default", + isFlex = false, + isRelative = false, + maxWidth, +}) => { + const manualWidth = maxWidth ? { maxWidth: maxWidth } : {}; + + return ( + + {children} + + ); +}; + +export const ContainerStyled = styled("div", { + margin: "0 auto", + variants: { + containerType: { + default: { + maxWidth: maxWidths.default, + }, + wide: { + maxWidth: maxWidths.wide, + }, + }, + isFlex: { + false: {}, + true: { + display: "flex", + }, + }, + isRelative: { + false: {}, + true: { + position: "relative", + }, + }, + }, + width: "100%", + boxSizing: "border-box", + padding: "0 $gr5", + + "@xxl": { + padding: "0", + }, + + "@lg": { + padding: "0 $gr4", + }, + + "@md": { + padding: "0 $gr4", + }, + + "@sm": { + padding: "0 $gr4", + }, + + "@xs": { + padding: "0 $gr3", + }, + + "@xxs": { + padding: "0 $gr3", + }, +}); + +export default Container; diff --git a/src/components/Shared/Content.styled.ts b/src/components/Shared/Content.styled.ts new file mode 100644 index 0000000..95ef571 --- /dev/null +++ b/src/components/Shared/Content.styled.ts @@ -0,0 +1,65 @@ +import { headerHeight } from "@styles/global"; +import { styled } from "@styles/stitches"; + +/* eslint sort-keys: 0 */ + +const AsideFixedContent = styled("div", { + position: "fixed", + width: "275px", + paddingTop: "calc($gr4 + $gr3)", + marginTop: "-$gr4", + maxHeight: `calc(100% - $gr5 - ${headerHeight}px)`, + overflow: "scroll", + + "@xs": { + position: "relative", + width: "100%", + maxHeight: "auto", + paddingTop: "0", + marginTop: "0", + }, +}); + +const AsideStyled = styled("aside", { + width: "275px", + + "@xs": { + position: "relative", + width: "100%", + marginTop: "0", + paddingBottom: "$gr2", + borderBottom: "1px solid $slate6", + }, +}); + +const ContentStyled = styled("div", { + flexShrink: 1, + width: "calc(100% - 275px)", + + "@xs": { + width: "100%", + }, +}); + +const ContentWrapper = styled("div", { + position: "relative", + width: "100%", + padding: "$gr4 0", + display: "flex", + + variants: { + aside: { + true: { + "@xs": { + flexDirection: "column", + }, + }, + }, + }, + + "@md": { + padding: "$gr2 0", + }, +}); + +export { AsideFixedContent, AsideStyled, ContentStyled, ContentWrapper }; diff --git a/src/components/Shared/DefinitionList.styled.ts b/src/components/Shared/DefinitionList.styled.ts new file mode 100644 index 0000000..59b39fa --- /dev/null +++ b/src/components/Shared/DefinitionList.styled.ts @@ -0,0 +1,19 @@ +import { styled } from "@styles/stitches"; + +/* eslint sort-keys: 0 */ + +const DefinitionListWrapper = styled("div", { + dl: { + dt: { + padding: "$gr3 0 $gr2", + fontFamily: "$display", + }, + + dd: { + padding: "0 0 $gr1", + margin: "0", + }, + }, +}); + +export { DefinitionListWrapper }; diff --git a/src/components/Shared/Heading/Heading.styled.ts b/src/components/Shared/Heading/Heading.styled.ts new file mode 100644 index 0000000..e0679e2 --- /dev/null +++ b/src/components/Shared/Heading/Heading.styled.ts @@ -0,0 +1,60 @@ +import { styled } from "@styles/stitches"; + +/* eslint sort-keys: 0 */ + +const StyledHeading = styled("h2", { + variants: { + isHidden: { + true: { + position: "absolute", + visibility: "hidden", + }, + }, + }, + + "&[data-level=h1]": { + margin: "$gr4 0", + fontSize: "$gr8", + fontWeight: "400", + fontFamily: "$display", + letterSpacing: "-0.02em", + lineHeight: "1.1", + + "@sm": { + fontSize: "$gr7", + }, + }, + + "&[data-level=h2]": { + margin: "$gr5 0 $gr4", + fontSize: "$gr7", + fontWeight: "400", + fontFamily: "$display", + letterSpacing: "-0.01em", + + "@sm": { + fontSize: "$gr5", + }, + }, + + "&[data-level=h3]": { + margin: "$gr5 0 $gr3", + color: "$slate11", + fontSize: "$gr6", + fontWeight: "300", + fontFamily: "$sans", + letterSpacing: "-0.01em", + + "@sm": { + fontSize: "$gr4", + }, + }, + + "&[data-level=h4]": {}, + + "&[data-level=h5]": {}, + + "&[data-level=h6]": {}, +}); + +export { StyledHeading }; diff --git a/src/components/Shared/Heading/Heading.tsx b/src/components/Shared/Heading/Heading.tsx new file mode 100644 index 0000000..afe54a2 --- /dev/null +++ b/src/components/Shared/Heading/Heading.tsx @@ -0,0 +1,26 @@ +import React, { ReactNode } from "react"; +import { CSS } from "@stitches/react/types/css-util"; +import { StyledHeading } from "./Heading.styled"; + +type HeadingElements = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "span"; +interface HeadingProps { + as?: HeadingElements; + css?: CSS; + id?: string; + isHidden?: boolean; + children: ReactNode | ReactNode[]; +} + +const Heading: React.FC = ({ + as = "h2", + css = {}, + id, + isHidden = false, + children, +}) => ( + + <>{children}> + +); + +export default Heading; diff --git a/src/components/Shared/Locale/Locale.styled.ts b/src/components/Shared/Locale/Locale.styled.ts new file mode 100644 index 0000000..c6e8b42 --- /dev/null +++ b/src/components/Shared/Locale/Locale.styled.ts @@ -0,0 +1,23 @@ +import { styled } from "@stitches/react"; + +const LocaleStyled = styled("div", { + display: "flex", + flexDirection: "row", + justifyContent: "center", + paddingLeft: "$gr2", + + select: { + color: "$slate9", + background: "none", + border: "none", + fontFamily: "$display", + fontSize: "$gr3", + cursor: "pointer", + + "&:hover, &:focus": { + color: "$indigo11", + }, + }, +}); + +export { LocaleStyled }; diff --git a/src/components/Shared/Locale/Locale.tsx b/src/components/Shared/Locale/Locale.tsx new file mode 100644 index 0000000..5c0a960 --- /dev/null +++ b/src/components/Shared/Locale/Locale.tsx @@ -0,0 +1,39 @@ +import React, { ChangeEvent } from "react"; + +import { LocaleStyled } from "./Locale.styled"; +import { getLocale } from "@hooks/useLocale"; +import { useCanopyState } from "@context/canopy"; + +const Locale: React.FC = () => { + const { canopyState, canopyDispatch } = useCanopyState(); + const { locale, config } = canopyState; + + const handleChange = async (e: ChangeEvent) => { + canopyDispatch({ + locale: await getLocale(config?.locales, e?.target?.value), + type: "updateLocale", + }); + }; + + if (config?.locales.length <= 1) return null; + + return ( + + + {config?.locales.map((option: any) => { + return ( + + {option.label} + + ); + })} + + + ); +}; + +export default Locale; diff --git a/src/components/Shared/Main.tsx b/src/components/Shared/Main.tsx new file mode 100644 index 0000000..b97a5d6 --- /dev/null +++ b/src/components/Shared/Main.tsx @@ -0,0 +1,12 @@ +import React, { ReactNode } from "react"; +import { styled } from "@stitches/react"; + +const Main = ({ children }: { children: ReactNode | ReactNode[] }) => { + return {children}; +}; + +const MainStyled = styled("main", { + margin: "0", +}); + +export default Main; diff --git a/src/components/Shared/Markdown/Blockquote.tsx b/src/components/Shared/Markdown/Blockquote.tsx new file mode 100644 index 0000000..481df3b --- /dev/null +++ b/src/components/Shared/Markdown/Blockquote.tsx @@ -0,0 +1,19 @@ +import React, { ReactNode } from "react"; + +import { styled } from "@styles/stitches"; + +interface BlockquoteProps { + children: ReactNode | ReactNode[]; +} + +const Blockquote: React.FC = ({ children }) => ( + {children} +); + +const StyledBlockquote = styled("blockquote", { + fontWeight: "300", + color: "$slate11", + padding: "$gr1 0", +}); + +export default Blockquote; diff --git a/src/components/Viewer/Slider.styled.ts b/src/components/Viewer/Slider.styled.ts new file mode 100644 index 0000000..e9160ef --- /dev/null +++ b/src/components/Viewer/Slider.styled.ts @@ -0,0 +1,79 @@ +import { styled } from "@styles/stitches"; + +const SliderStyled = styled("div", { + marginBottom: "$gr5", + + "@xs": { + "& > div > div": { + alignItems: "center", + textAlign: "center", + + "& > div": { + "&:last-child": { + paddingTop: "$gr2", + }, + }, + }, + }, + + [`& .clover-slider-header-label`]: { + fontSize: "$gr6", + fontFamily: "$sans", + fontWeight: "300 !important", + letterSpacing: "-0.01em", + }, + + [`& .clover-slider-header-summary`]: { + display: "block", + fontSize: "$gr3 !important", + color: "$slate11 ", + }, + + [`& .clover-slider-header-view-all`]: { + color: "$slate1", + }, + + ".swiper-slide": { + a: { + "> div": { + borderRadius: "3px", + overflow: "hidden", + }, + }, + }, + + figure: { + "> div": { + borderRadius: "3px", + overflow: "hidden", + boxShadow: "2px 2px 5px #0001", + }, + }, + + figcaption: { + margin: "$gr1 0", + + "> span": { + textOverflow: "ellipsis", + display: "-webkit-box", + WebkitBoxOrient: "vertical", + WebkitLineClamp: "3", + overflow: "hidden", + whiteSpace: "normal", + fontWeight: "400", + fontSize: "$gr4", + fontFamily: "$sans", + textDecoration: "none !important", + }, + }, + + [`& a figcaption, & a:visited figcaption`]: { + color: "$slate12", + }, + + [`& a:hover figcaption, & a:focus figcaption`]: { + color: "$indigo11", + }, +}); + +export { SliderStyled }; diff --git a/src/components/Viewer/Slider.tsx b/src/components/Viewer/Slider.tsx new file mode 100644 index 0000000..38f5448 --- /dev/null +++ b/src/components/Viewer/Slider.tsx @@ -0,0 +1,59 @@ +import "swiper/css"; + +import CloverSlider from "@samvera/clover-iiif/slider"; +import React from "react"; +import { SliderStyled } from "./Slider.styled"; +import { SwiperProps } from "swiper/react"; +import { gr } from "@styles/helpers/goldenRatio"; +import { rem } from "@styles/global"; +import { width } from "@styles/theme/media"; + +type SwiperBreakpoints = SwiperProps["breakpoints"]; + +const spaceBetween = (multiplier: number) => rem * gr(multiplier); + +const breakpoints: SwiperBreakpoints = { + [width.xxs]: { + slidesPerView: 2, + slidesPerGroup: 2, + spaceBetween: spaceBetween(1), + }, + [width.xs]: { + slidesPerView: 2, + slidesPerGroup: 2, + spaceBetween: spaceBetween(1), + }, + [width.sm]: { + slidesPerView: 3, + slidesPerGroup: 3, + spaceBetween: spaceBetween(1), + }, + [width.md]: { + slidesPerView: 3, + slidesPerGroup: 3, + spaceBetween: spaceBetween(2), + }, + [width.lg]: { + slidesPerView: 5, + slidesPerGroup: 5, + spaceBetween: spaceBetween(2), + }, + [width.xl]: { + slidesPerView: 5, + slidesPerGroup: 5, + spaceBetween: spaceBetween(2), + }, +}; + +const Slider = ({ iiifContent }: { iiifContent: string }) => ( + + + +); + +export default Slider; diff --git a/src/components/Viewer/Viewer.tsx b/src/components/Viewer/Viewer.tsx new file mode 100644 index 0000000..a0e0510 --- /dev/null +++ b/src/components/Viewer/Viewer.tsx @@ -0,0 +1,64 @@ +import React from "react"; +import dynamic from "next/dynamic"; + +const CloverViewer: React.ComponentType<{ + customTheme: any; + iiifContent: string; + options: any; +}> = dynamic( + () => import("@samvera/clover-iiif").then((Clover) => Clover.Viewer), + { + ssr: false, + } +); + +const customTheme = { + colors: { + accent: "var(--colors-indigo10)", + accentAlt: "var(--colors-indigo11)", + accentMuted: "var(--colors-indigo8)", + primary: "var(--colors-slate12)", + primaryAlt: "var(--colors-slate12)", + primaryMuted: "var(--colors-slate10)", + secondary: "var(--colors-slate1)", + secondaryAlt: "var(--colors-slate3)", + secondaryMuted: "var(--colors-slate2)", + }, + fonts: { + sans: `var(--canopy-sans-font)`, + display: `var(--canopy-display-font)`, + }, +}; + +const defaultOptions = { + canvasBackgroundColor: "var(--colors-slate4)", + canvasHeight: `600px`, + openSeadragon: { + gestureSettingsMouse: { + scrollToZoom: false, + }, + }, + informationPanel: { + open: false, + renderAbout: false, + renderToggle: false, + }, + showTitle: false, + showIIIFBadge: false, +}; + +const Viewer = ({ + iiifContent, + options, +}: { + iiifContent: string; + options?: any; +}) => ( + +); + +export default Viewer; diff --git a/src/components/Work/Inner.styled.ts b/src/components/Work/Inner.styled.ts new file mode 100644 index 0000000..58b6257 --- /dev/null +++ b/src/components/Work/Inner.styled.ts @@ -0,0 +1,42 @@ +import { styled } from "@styles/stitches"; + +const WorkData = styled("div", {}); + +const StyledWorkInner = styled("section", { + maxWidth: "1280px", + margin: "auto", + position: "relative", + paddingTop: "$gr3", + + ".work-summary": { + fontSize: "$gr5", + fontFamily: "$sans", + fontWeight: "300", + color: "$slate11", + marginBottom: "$gr4", + + "@sm": { + fontSize: "$gr4", + marginBottom: "$gr4", + }, + }, + + "dl, .work-summary": { + img: { + maxHeight: "$gr5 !important", + margin: "$gr1 0", + + "@sm": { + maxHeight: "$gr4 !important", + }, + }, + }, + + aside: { + width: "38.2%", + flexShrink: 0, + padding: "$gr3 0 $gr2 $gr6", + }, +}); + +export { StyledWorkInner, WorkData }; diff --git a/src/components/Work/Inner.tsx b/src/components/Work/Inner.tsx new file mode 100644 index 0000000..7b7654b --- /dev/null +++ b/src/components/Work/Inner.tsx @@ -0,0 +1,99 @@ +import { + Label, + Metadata, + RequiredStatement, + Summary, +} from "@samvera/clover-iiif/primitives"; +import { StyledWorkInner, WorkData } from "@components/Work/Inner.styled"; + +import { DefinitionListWrapper } from "../Shared/DefinitionList.styled"; +import FACETS from "@.canopy/facets.json"; +import Heading from "@components/Shared/Heading/Heading"; +import Link from "next/link"; +import { Manifest } from "@iiif/presentation-3"; +import ManifestId from "./ManifestId"; +import React from "react"; +import ReferencingContent from "@components/Work/ReferencingContent"; +import { type NavigationItem } from "@src/customTypes/navigation"; + +interface ValueAsListItemProps { + searchParam: string; + searchValues: [ + { + value: string; + slug: string; + doc_count: number; + } + ]; + value?: string; +} + +export const ValueAsListItem: React.FC = ({ + searchParam, + searchValues, + value, +}) => { + if (!value) return <>>; + const entry = searchValues?.find((entry) => entry.value === value); + const search = `/search?${searchParam}=`; + return ( + + + + ); +}; + +interface WorkInnerProps { + manifest: Manifest; + referencingContent?: NavigationItem[]; +} + +const WorkInner: React.FC = ({ + manifest, + referencingContent, +}) => { + const { id, label, metadata, requiredStatement, summary } = manifest; + + const formattedValues = FACETS.map((value: any) => { + return { + Content: ( + + ), + matchingLabel: { none: [value.label] }, + }; + }); + + return ( + + + + + + {summary && ( + + )} + + + {metadata && ( + + )} + {requiredStatement && ( + + )} + + + + + + + ); +}; + +export default WorkInner; diff --git a/src/components/Work/ManifestId.tsx b/src/components/Work/ManifestId.tsx new file mode 100644 index 0000000..6a4ea36 --- /dev/null +++ b/src/components/Work/ManifestId.tsx @@ -0,0 +1,14 @@ +import Link from "next/link"; + +const ManifestId = ({ manifestId }: { manifestId: string }) => { + return ( + + IIIF Manifest + + {manifestId} + + + ); +}; + +export default ManifestId; diff --git a/src/components/Work/ReferencingContent.tsx b/src/components/Work/ReferencingContent.tsx new file mode 100644 index 0000000..2eb9eba --- /dev/null +++ b/src/components/Work/ReferencingContent.tsx @@ -0,0 +1,50 @@ +import { type NavigationItem } from "@src/customTypes/navigation"; +import Nav from "@components/Nav/Nav"; +import Heading from "@components/Shared/Heading/Heading"; +import { styled } from "@styles/stitches"; + +const ReferencingContent = ({ + referencingContent, +}: { + referencingContent: NavigationItem[]; +}) => { + return ( + + + Content Referencing This Work + + + + ); +}; + +export default ReferencingContent; + +const StyledReferencingContent = styled("div", { + border: "1px solid var(--colors-slate4)", + borderRadius: "0.382rem", + padding: "$gr3 $gr4 $gr2", + margin: "-$gr1 0 $gr4", + boxShadow: "5px 5px 11px #0001", + + a: { + color: "$indigo10 !important", + padding: "$gr1 0 $gr2", + marginBottom: "0", + textDecoration: "underline", + marginLeft: "1.618rem", + + "&::before": { + content: "↳", + position: "absolute", + width: "1.618rem", + fontSize: "0.9rem", + left: "-1.382rem", + marginTop: "2px", + opacity: "0.382", + }, + }, +}); diff --git a/src/components/layout.tsx b/src/components/layout.tsx new file mode 100644 index 0000000..78ce6a6 --- /dev/null +++ b/src/components/layout.tsx @@ -0,0 +1,17 @@ +import React, { ReactNode } from "react"; + +import Footer from "./Footer/Footer"; +import Header from "@components/Header/Header"; +import Main from "./Shared/Main"; + +const Layout = ({ children }: { children: ReactNode }) => { + return ( + + + {children} + + + ); +}; + +export default Layout; diff --git a/src/context/canopy.tsx b/src/context/canopy.tsx new file mode 100644 index 0000000..d59942f --- /dev/null +++ b/src/context/canopy.tsx @@ -0,0 +1,92 @@ +import { CanopyContextStore } from "@customTypes/context/canopy"; +import { InternationalString } from "@iiif/presentation-3"; +import React from "react"; + +type Action = + | { type: "updateHeaderVisible"; headerVisible: boolean } + | { type: "updateLocale"; locale: any } + | { type: "updateSearchHeaderFixed"; searchHeaderFixed: boolean } + | { type: "updateSearchParams"; searchParams: URLSearchParams } + | { type: "updateSearchSummary"; searchSummary: InternationalString }; + +type Dispatch = (action: Action) => void; +type State = CanopyContextStore; +type CanopyProviderProps = { + children: React.ReactNode; + initialState?: CanopyContextStore; +}; + +const defaultState: CanopyContextStore = { + config: {}, + headerVisible: true, + locale: {}, + searchHeaderFixed: false, + searchParams: new URLSearchParams(), + searchSummary: { none: [""] }, +}; + +const CanopyStateContext = React.createContext< + { canopyState: State; canopyDispatch: Dispatch } | undefined +>(undefined); + +function canopyReducer(state: State, action: Action) { + switch (action.type) { + case "updateHeaderVisible": { + return { + ...state, + headerVisible: action.headerVisible, + }; + } + case "updateLocale": { + return { + ...state, + locale: action.locale, + }; + } + case "updateSearchHeaderFixed": { + return { + ...state, + searchHeaderFixed: action.searchHeaderFixed, + }; + } + case "updateSearchParams": { + return { + ...state, + searchParams: action.searchParams, + }; + } + case "updateSearchSummary": { + return { + ...state, + searchSummary: action.searchSummary, + }; + } + default: { + console.log(action); + throw new Error(`Unhandled action type`); + } + } +} + +function CanopyProvider({ + initialState = defaultState, + children, +}: CanopyProviderProps) { + const [state, dispatch] = React.useReducer(canopyReducer, initialState); + const value = { canopyDispatch: dispatch, canopyState: state }; + return ( + + {children} + + ); +} + +function useCanopyState() { + const context = React.useContext(CanopyStateContext); + if (context === undefined) { + throw new Error("useCanopyState must be used within a CanopyProvider"); + } + return context; +} + +export { CanopyProvider, defaultState, useCanopyState }; diff --git a/src/context/facets.tsx b/src/context/facets.tsx new file mode 100644 index 0000000..e077a3a --- /dev/null +++ b/src/context/facets.tsx @@ -0,0 +1,56 @@ +import React, { createContext, useContext, useReducer } from "react"; + +import { FacetsContextStore } from "@customTypes/context/facets"; + +type Action = { + type: "updateFacetsActive"; + facetsActive: any; +}; +type Dispatch = (action: Action) => void; +type State = FacetsContextStore; +type FacetsProviderProps = { + children: React.ReactNode; + initialState?: FacetsContextStore; +}; + +const defaultState: FacetsContextStore = { + facetsActive: [], +}; + +const FacetsStateContext = createContext< + { facetsState: State; facetsDispatch: Dispatch } | undefined +>(undefined); + +function facetsReducer(state: State, action: Action) { + switch (action.type) { + case "updateFacetsActive": { + return { + ...state, + facetsActive: action.facetsActive, + }; + } + } +} + +function FacetsProvider({ + initialState = defaultState, + children, +}: FacetsProviderProps) { + const [state, dispatch] = useReducer(facetsReducer, initialState); + const value = { facetsDispatch: dispatch, facetsState: state }; + return ( + + {children} + + ); +} + +function useFacetsState() { + const context = useContext(FacetsStateContext); + if (context === undefined) { + throw new Error("useFacetsState must be used within a FacetsProvider"); + } + return context; +} + +export { FacetsProvider, useFacetsState }; diff --git a/src/context/front-matter.tsx b/src/context/front-matter.tsx new file mode 100644 index 0000000..500fa42 --- /dev/null +++ b/src/context/front-matter.tsx @@ -0,0 +1,14 @@ +import React from "react"; + +interface FrontMatterContextProps { + referencedManifests?: string[]; +} + +const defaultValue: FrontMatterContextProps = { + referencedManifests: [], +}; + +const FrontMatterContext = + React.createContext(defaultValue); + +export default FrontMatterContext; diff --git a/src/customTypes/build/index.ts b/src/customTypes/build/index.ts new file mode 100644 index 0000000..b41ed6c --- /dev/null +++ b/src/customTypes/build/index.ts @@ -0,0 +1,19 @@ +type CanopyBuildConfigValues = { + collection: string; + featured?: Array; + label?: { none: Array }; + locales: any; // fully define + map: any; // fully define + metadata: Array; + search: any; // fully define + summary?: { none: Array }; + theme: any; // fully define +}; + +interface CanopyConfig extends CanopyBuildConfigValues { + url: string; + basePath: string; + baseUrl: string; +} + +export { type CanopyBuildConfigValues, type CanopyConfig }; diff --git a/src/customTypes/canopy.ts b/src/customTypes/canopy.ts new file mode 100644 index 0000000..e9affdc --- /dev/null +++ b/src/customTypes/canopy.ts @@ -0,0 +1,89 @@ +import { InternationalString } from "@iiif/presentation-3"; + +export interface CanopyCollectionShape { + "@context": string; + id: string; + type: string; + label: InternationalString; + slug: string; + depth: number; + parent: null; + manifests: number; + collections: number; + items: Array<{ + id: string; + type: string; + homepage: Array<{ + id: string; + type: string; + format: string; + label: InternationalString; + }>; + }>; +} + +export interface CanopyEnvironment { + collection: string; + featured: string[]; + label: InternationalString; + locales: CanopyLocale[]; + metadata: string[]; + map: { enabled: boolean }; + search: { + enabled: boolean; + index: { + metadata: { enabled: boolean; all: boolean }; + summary: { enabled: boolean }; + }; + flexSearch: any; + }; + static: boolean; + summary: InternationalString; + theme: { defaultTheme: string; toggleEnabled: boolean }; + url: string; + basePath?: string; +} + +export interface CanopyFacetValueShape { + value: string; + slug: string; + doc_count: number; + docs: number[]; +} + +export interface CanopyFacetShape { + label: string; + slug: string; + values: CanopyFacetValueShape[]; +} + +export interface CanopyLocale { + config: string; + label: string; + lang: string; +} + +export interface CanopyManifestShape { + id: string; + index: number; + label: InternationalString; + slug: string; + thumbnail: Array<{ + id: string; + type: string; + format: string; + height: number; + width: number; + }>; +} + +export interface CanopySearchShape { + id: number; + label: string; + metadata: string; +} + +export type CanopyCollections = CanopyCollectionShape[]; +export type CanopyFacets = CanopyFacetShape[]; +export type CanopyManifests = CanopyManifestShape[]; +export type CanopySearch = CanopySearchShape[]; diff --git a/src/customTypes/content.ts b/src/customTypes/content.ts new file mode 100644 index 0000000..d64535b --- /dev/null +++ b/src/customTypes/content.ts @@ -0,0 +1,34 @@ +import { MDXRemoteSerializeResult } from "next-mdx-remote"; +import { ReactElement } from "react"; + +/** + * Types for markdown content, front matter, and its parsing + */ + +export type ConnectedPage = { + title: string; + route: string; +}; + +export type FrontMatterContentItem = { + date?: string; + referencedManifests?: string[]; + navigation?: string; + title?: string; + description?: string; +}; + +export type FrontMatterPageProps = { + source: MDXRemoteSource; + frontMatter: FrontMatterContentItem; +}; + +export type LayoutFrontMatter = { + content: ReactElement; + frontMatter: FrontMatterContentItem; +}; + +export type MDXRemoteSource = MDXRemoteSerializeResult< + Record, + Record +>; diff --git a/src/customTypes/context/canopy.ts b/src/customTypes/context/canopy.ts new file mode 100644 index 0000000..525aaa8 --- /dev/null +++ b/src/customTypes/context/canopy.ts @@ -0,0 +1,10 @@ +import { InternationalString } from "@iiif/presentation-3"; + +export interface CanopyContextStore { + config: any; + headerVisible: boolean; + locale: any; + searchHeaderFixed: boolean; + searchParams: URLSearchParams; + searchSummary?: InternationalString; +} diff --git a/src/customTypes/context/facets.ts b/src/customTypes/context/facets.ts new file mode 100644 index 0000000..15f1255 --- /dev/null +++ b/src/customTypes/context/facets.ts @@ -0,0 +1,3 @@ +export interface FacetsContextStore { + facetsActive: any; +} diff --git a/src/customTypes/index.ts b/src/customTypes/index.ts new file mode 100644 index 0000000..41fb9c8 --- /dev/null +++ b/src/customTypes/index.ts @@ -0,0 +1,10 @@ +export type ObjectLiteral = + | { + [key: string]: never; + } + | { + [key: string]: string; + } + | { + [key: string]: string[]; + }; diff --git a/src/customTypes/navigation.ts b/src/customTypes/navigation.ts new file mode 100644 index 0000000..605abf0 --- /dev/null +++ b/src/customTypes/navigation.ts @@ -0,0 +1,4 @@ +export interface NavigationItem { + path: string; + text: string; +} diff --git a/src/customTypes/search/search.ts b/src/customTypes/search/search.ts new file mode 100644 index 0000000..50caf3a --- /dev/null +++ b/src/customTypes/search/search.ts @@ -0,0 +1,20 @@ +import { + IIIFExternalWebResource, + InternationalString, +} from "@iiif/presentation-3"; + +export type SearchResponseItem = { + id: string; + type: "Manifest"; + label: InternationalString; + thumbnail: IIIFExternalWebResource[]; + homepage: [ + { + id: string; + type: "Text"; + label: InternationalString; + } + ]; +}; + +//export { SearchResponseItem }; diff --git a/src/hooks/getLabel.ts b/src/hooks/getLabel.ts new file mode 100644 index 0000000..3f22072 --- /dev/null +++ b/src/hooks/getLabel.ts @@ -0,0 +1,28 @@ +import { InternationalString } from "@iiif/presentation-3"; + +// Get string from a IIIF pres 3 label by language code +export const getLabel = ( + label: InternationalString, + language: string | "none" = "none" +) => { + /* + * If no label exists, return a hardcoded string. + */ + if (!label) return ["Untitled"]; + + if (typeof label === "string") return [label]; + + /* + * If InternationalString code does not exist on label, then + * return what may be there, ex: label.none[0] OR label.fr[0] + */ + if (!label[language]) { + const codes: Array = Object.getOwnPropertyNames(label); + if (codes.length > 0) return label[codes[0]]; + } + + /* + * Return label value for InternationalString code `en` + */ + return label[language]; +}; diff --git a/src/hooks/getResourceImage.ts b/src/hooks/getResourceImage.ts new file mode 100644 index 0000000..4a2ce21 --- /dev/null +++ b/src/hooks/getResourceImage.ts @@ -0,0 +1,22 @@ +export const getResourceImage = ( + resource: any, + size = "600,", + region = "full" +) => { + if (Array.isArray(resource)) resource = resource[0]; + + if (!resource.service) return resource.id; + + if (!Array.isArray(resource.service)) { + if (resource.service["@id"]) + return `${resource.service["@id"]}/${region}/${size}/0/default.jpg`; + + if (resource.service.id) + return `${resource.service.id}/${region}/${size}/0/default.jpg`; + } + + if (resource.service[0]["@id"]) + return `${resource.service[0]["@id"]}/${region}/${size}/0/default.jpg`; + + return `${resource.service[0].id}/${region}/${size}/0/default.jpg`; +}; diff --git a/src/hooks/getValues.ts b/src/hooks/getValues.ts new file mode 100644 index 0000000..fd88bca --- /dev/null +++ b/src/hooks/getValues.ts @@ -0,0 +1,21 @@ +import { InternationalString } from "@iiif/presentation-3"; + +// Get string from a IIIF pres 3 label by language code +export const getValues = ( + values: InternationalString, + language: string | "none" = "none" +) => { + /* + * If InternationalString code does not exist on label, then + * return what may be there, ex: label.none[0] OR label.fr[0] + */ + if (!values[language]) { + const codes: Array = Object.getOwnPropertyNames(values); + if (codes.length > 0) return values[codes[0]]; + } + + /* + * Return label value for InternationalString code `en` + */ + return values[language]; +}; diff --git a/src/hooks/sortItems.ts b/src/hooks/sortItems.ts new file mode 100644 index 0000000..8a223d9 --- /dev/null +++ b/src/hooks/sortItems.ts @@ -0,0 +1,45 @@ +import { Manifest, Collection } from "@iiif/presentation-3"; + +enum SortType { + lexical = "lexical", + random = "random", + reverse = "reverse", + "reverse-lexical" = "reverse-lexical", +} + +export const sortItems = ( + items: Collection[] | Manifest[], + sortType: SortType +) => { + switch (sortType) { + case "random": + return items + .map((value) => ({ value, sort: Math.random() })) + .sort((a, b) => a.sort - b.sort) + .map(({ value }) => value); + case "lexical": + return items.sort((a: any, b: any) => + a.label[Object.keys(a.label)[0]][0] > + b.label[Object.keys(b.label)[0]][0] + ? 1 + : b.label[Object.keys(b.label)[0]][0] > + a.label[Object.keys(a.label)[0]][0] + ? -1 + : 0 + ); + case "reverse-lexical": + return items.sort((a: any, b: any) => + b.label[Object.keys(b.label)[0]][0] > + a.label[Object.keys(a.label)[0]][0] + ? 1 + : a.label[Object.keys(a.label)[0]][0] > + b.label[Object.keys(b.label)[0]][0] + ? -1 + : 0 + ); + case "reverse": + return items.reverse(); + default: + return items; + } +}; diff --git a/src/hooks/useElementPosition.ts b/src/hooks/useElementPosition.ts new file mode 100644 index 0000000..4ca4ed1 --- /dev/null +++ b/src/hooks/useElementPosition.ts @@ -0,0 +1,23 @@ +import { RefObject, useEffect, useState } from "react"; + +const useElementPosition = (element: RefObject) => { + const [position, setPosition] = useState(0); + + useEffect(() => { + const updatePosition = () => { + setPosition(window.pageYOffset); + + if (element.current) + setPosition(window.pageYOffset - element.current.offsetTop); + }; + + window.addEventListener("scroll", updatePosition); + updatePosition(); + + return () => window.removeEventListener("scroll", updatePosition); + }, [element]); + + return position; +}; + +export default useElementPosition; diff --git a/src/hooks/useLocale.ts b/src/hooks/useLocale.ts new file mode 100644 index 0000000..db681c1 --- /dev/null +++ b/src/hooks/useLocale.ts @@ -0,0 +1,34 @@ +import { CanopyLocale } from "@customTypes/canopy"; +import { useCanopyState } from "@context/canopy"; + +function getDefaultLang(locales: CanopyLocale[]) { + const { language } = new Intl.Locale(window?.navigator?.language); + const canopyLanguage = locales.find((entry) => entry.lang === language); + return canopyLanguage ? canopyLanguage?.lang : locales[0].lang; +} + +async function getLocale(locales: CanopyLocale[], lang: string) { + const current = lang + ? locales.find((locale) => locale.lang === lang) + : locales[0]; + + const config = await import(`config/${current?.config}`); + + return { + config: config, + label: current?.label, + lang: current?.lang, + }; +} + +const LocaleString = (property: string) => { + const { + canopyState: { locale }, + } = useCanopyState(); + + const { config } = locale; + + return config[property] as string; +}; + +export { getDefaultLang, getLocale, LocaleString }; diff --git a/src/hooks/useNavigation.ts b/src/hooks/useNavigation.ts new file mode 100644 index 0000000..63dc6d6 --- /dev/null +++ b/src/hooks/useNavigation.ts @@ -0,0 +1,56 @@ +import { useEffect, useState } from "react"; + +import { NavigationItem } from "@src/customTypes/navigation"; + +const useNavigation = ({ relativePath }: { relativePath?: string }) => { + const [navigation, setNavigation] = useState(); + + useEffect(() => { + (async () => { + try { + if (typeof relativePath === "undefined") return; + + const contentDirectory = "content/"; + const directory = relativePath + ? `${contentDirectory}${relativePath}` + : contentDirectory; + + const data = await import(`../../${directory}_meta.json`); + const json: NavigationItem[] = transformObjectWithGetters( + data?.default + ); + + setNavigation(json); + } catch (error) { + console.warn(error); + console.warn("The relative _meta.json file could not be found."); + } + })(); + }, []); + + return { navigation }; +}; + +function transformObjectWithGetters(obj: any) { + const result = Array.isArray(obj) ? [] : {}; + + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + const desc = Object.getOwnPropertyDescriptor(obj, key); + if (desc?.get) { + // @ts-ignore + result[key] = desc.get.call(obj); + } else { + // @ts-ignore + result[key] = + typeof obj[key] === "object" && obj[key] !== null + ? transformObjectWithGetters(obj[key]) + : obj[key]; + } + } + } + + return result as NavigationItem[]; +} + +export default useNavigation; diff --git a/src/hooks/usePageResults.ts b/src/hooks/usePageResults.ts new file mode 100644 index 0000000..37fa657 --- /dev/null +++ b/src/hooks/usePageResults.ts @@ -0,0 +1,56 @@ +// @ts-nocheck + +import { useEffect, useState } from "react"; + +import { searchRequest } from "@lib/search/request"; +import { useCanopyState } from "@context/canopy"; + +const usePageResults = (pages: any, page: any, query: any) => { + const [data, setData] = useState([]); + const [error, setError] = useState(false); + const [loading, setLoading] = useState(true); + const [more, setMore] = useState(false); + + const { + canopyState: { config }, + } = useCanopyState(); + + const reset = () => { + setData([]); + setError(false); + setLoading(true); + setMore(false); + }; + + useEffect(() => reset(), [query]); + + useEffect(() => { + setLoading(true); + setError(false); + + if (pages?.length > 0 && pages[page]) { + const params = new URL(pages[page]).searchParams; + const baseUrl = config?.baseUrl; + const flexSearch = config?.search?.flexSearch; + + const { items } = searchRequest({ + params, + baseUrl, + flexSearch, + }); + + setData((prevResults) => [...prevResults, ...items]); + setMore(pages.length > page); + setLoading(false); + } + }, [config, pages, page]); + + return { + data, + error, + loading, + more, + }; +}; + +export default usePageResults; diff --git a/src/lib/build/aggregate.js b/src/lib/build/aggregate.js new file mode 100644 index 0000000..224a46b --- /dev/null +++ b/src/lib/build/aggregate.js @@ -0,0 +1,164 @@ +const { getCanopyCollection } = require("./shape"); +const { getEntries, getLabel } = require("../iiif/label"); +const { getUniqueSlug } = require("./slug"); +const { log } = require("./log"); +const { getRootCollection, getBulkManifests } = require("./request"); +const { buildIndexData } = require("./search"); +const { buildFacets } = require("./facets"); + +const fs = require("fs").promises; +const fsSync = require("fs"); + +module.exports.build = async (env) => { + const { baseUrl } = env; + const canopyDirectory = ".canopy"; + + log(`Building Canopy from IIIF Collection...\n`); + log(`${env.collection}\n\n`, "yellow"); + + /** + * Create Canopy directory if it doesn't exist. + */ + if (!fsSync.existsSync(canopyDirectory)) { + await fs.mkdir(canopyDirectory); + } + + /** + * Retrieve IIIF Collection for Canopy and write to file. + */ + const json = await getRootCollection(env.collection); + const canopyCollection = getCanopyCollection({ + ...json, + label: env.label || json.label, + summary: env.summary || json.summary, + }); + + await fs.writeFile( + `${canopyDirectory}/collections.json`, + JSON.stringify([canopyCollection]) + ); + + /** + * Filter items to only include Manifests, add index, and + * then retrieve all in bulk in chunks of set amount (10). + */ + const manifestListing = canopyCollection.items + .filter((item) => item.type === "Manifest") + .map((item, index) => { + return { + collectionId: item.parent, + id: item.id, + index, + label: item.label, + }; + }); + + log(`Creating Manifest listing...\n`); + + const manifests = await getBulkManifests(manifestListing, 10); + + /** + * Prepare Manifests for Canopy and write to file. + */ + let rootSlugs = {}; + const canopyManifests = manifests + .map((manifest) => { + // Get the earlier defined index of the Manifest in the collection. + const manifestListed = manifestListing.find( + (item) => item.id === manifest?.id + ); + + if (!manifestListed) return; + + const { index } = manifestListed; + + // Create a unique slug for the Manifest. + const string = getLabel(manifest.label)[0]; + const { slug, allSlugs } = getUniqueSlug(string, rootSlugs); + rootSlugs = allSlugs; + + // Return the Manifest with an index, slug, and prescribed thumbnail. + return { + ...manifest, + index, + slug, + thumbnail: manifest.thumbnail, + }; + }) + .filter((manifest) => manifest); + + await fs.writeFile( + `${canopyDirectory}/manifests.json`, + JSON.stringify(canopyManifests) + ); + + /** + * Log the success ratio of Manifests retrieved. + */ + const successRatio = `${canopyManifests.length}/${manifests.length}`; + log(`\n${successRatio} Manifests(s) retrieved successfully.\n`); + + /** + * Prepare facet metadata and search index for Canopy and write to file. + */ + let canopyMetadata = []; + let canopySearch = []; + + manifests + .filter((manifest) => manifest?.type === "Manifest") + .forEach((manifest) => { + const settings = env?.search?.index; + canopySearch.push({ + index: manifest.index, + label: manifest?.label, + ...(settings?.summary?.enabled && { summary: manifest.summary }), + ...(settings?.metadata?.enabled && { + metadata: manifest.metadata.filter((entry) => + settings.metadata.all + ? entry + : env.metadata.includes(getEntries(entry.label)[0]) + ), + }), + }); + + manifest.metadata.forEach((metadata) => { + const metadataLabel = getEntries(metadata.label)[0]; + const metadataValues = getEntries(metadata.value); + if (env?.metadata?.includes(metadataLabel)) { + metadataValues.forEach((value) => { + canopyMetadata.push({ + index: manifest.index, + label: metadataLabel, + value, + }); + }); + } + }); + }); + + log(`\nCreating facets as IIIF Collections...\n`); + const canopyFacets = await buildFacets( + env.metadata, + canopyMetadata, + canopyManifests, + baseUrl + ); + await fs.writeFile( + `${canopyDirectory}/facets.json`, + JSON.stringify(canopyFacets ? canopyFacets : []) + ); + + log(`\nBuilding search entries...\n`); + const canopyIndex = buildIndexData(canopySearch); + await fs.writeFile( + `${canopyDirectory}/index.json`, + JSON.stringify(canopyIndex) + ); + + /** + * Good to go. 🚀 + */ + log(`\n...Ready 🚀\n\n`, "blue", { bright: true }); + + return; +}; diff --git a/src/lib/build/chunks.js b/src/lib/build/chunks.js new file mode 100644 index 0000000..cb56e28 --- /dev/null +++ b/src/lib/build/chunks.js @@ -0,0 +1,44 @@ +const { log } = require("./log"); + +function all(items, fn) { + const promises = items.filter((item) => item).map((item) => fn(item)); + return Promise.all(promises); +} + +function chunks(items, fn, chunkSize = 25) { + let result = []; + const chunks = splitToChunks(items, chunkSize); + const info = { total: items.length, chunkSize }; + + return series(chunks, info, (chunk) => { + return all(chunk, fn).then((res) => (result = result.concat(res))); + }).then(() => { + return result; + }); +} + +function series(items, info, fn) { + let result = []; + log(`Aggregating ${info.total} Manifest(s) in ${items.length} chunk(s)...\n`); + return items + .reduce((acc, item, index) => { + acc = acc.then(() => { + log(`\nChunk (${index + 1}/${items.length})\n`, "yellow", { + dim: true, + }); + return fn(item).then((res) => result.push(res)); + }); + return acc; + }, Promise.resolve()) + .then(() => result); +} + +function splitToChunks(items, size) { + const result = []; + for (let i = 0; i < items.length; i += size) { + result.push(items.slice(i, i + size)); + } + return result; +} + +module.exports = { chunks }; diff --git a/src/lib/build/config.test.ts b/src/lib/build/config.test.ts new file mode 100644 index 0000000..fcb67f9 --- /dev/null +++ b/src/lib/build/config.test.ts @@ -0,0 +1,44 @@ +const { getConfig } = require("./config"); + +import * as defaultData from "@config/.default/canopy.default.json"; + +import { CanopyBuildConfigValues } from "@customTypes/build"; + +describe("getConfig() function", () => { + it("should return default settings if path is not set", () => { + const result: CanopyBuildConfigValues = getConfig(); + expect(result.collection).toEqual(defaultData.collection); + expect(result.locales).toEqual(defaultData.locales); + expect(result.map).toEqual(defaultData.map); + expect(result.metadata).toEqual(defaultData.metadata); + expect(result.search).toEqual(defaultData.search); + expect(result.theme).toEqual(defaultData.theme); + }); + + it("should load a custom path for the configuration", () => { + const result: CanopyBuildConfigValues = getConfig( + "./config/.fixtures/canopy.presentation-3.json" + ); + expect(result.collection).toEqual( + "https://api.dc.library.northwestern.edu/api/v2/collections/c373ecd2-2c45-45f2-9f9e-52dc244870bd?as=iiif" + ); + }); + + it("should load a minimal configuration and wipe metadata and featured properties", () => { + const result: CanopyBuildConfigValues = getConfig( + "./config/.fixtures/canopy.minimal.json" + ); + expect(result.metadata).toEqual([]); + expect(result.featured).toEqual(undefined); + }); + + it("should return the devCollection as collection if isDev === true", () => { + const result: CanopyBuildConfigValues = getConfig( + "./config/.fixtures/canopy.dev-collection.json", + true + ); + expect(result.collection).toEqual( + "https://api.dc.library.northwestern.edu/api/v2/collections/c373ecd2-2c45-45f2-9f9e-52dc244870bd?as=iiif&size=5" + ); + }); +}); diff --git a/src/lib/build/config.ts b/src/lib/build/config.ts new file mode 100644 index 0000000..35e94d1 --- /dev/null +++ b/src/lib/build/config.ts @@ -0,0 +1,68 @@ +const fs = require("fs"); + +const getConfig = (path = "./config/canopy.json", isDev = false) => { + const defaultData = fs.readFileSync( + `./config/.default/canopy.default.json`, + {} + ); + + let data; + try { + data = fs.readFileSync(path, {}); + } catch (err) { + console.log( + "Using sample data for demonstration, please follow documentation for creating a custom Canopy configuration." + ); + } + + const defaultConfig = JSON.parse(defaultData); + const config = data && JSON.parse(data); + + /** + * If the user has not specified a collection in `./config/canopy.json`, + * we need to set the label and summary to default demonstration values. + */ + if (!config?.collection) { + defaultConfig.label = { + none: ["Canopy IIIF"], + }; + defaultConfig.summary = { + none: [ + "a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions", + ], + }; + } + + /** + * If the user has not specified metadata, but has specified a collection, + * we need to create an empty array for the metadata. + */ + if (config?.collection && config?.metadata === undefined) { + config.metadata = []; + } + + /** + * If the user has not specified featured, but has specified a collection, + * we need to set featured to undefined. + */ + if (config?.collection && config?.featured === undefined) { + config.featured = undefined; + } + + /** + * Check if we are in dev mode and if the user has specified a dev collection. + * If so, we need to override the collection with the dev collection. + */ + if (isDev && config?.devCollection) { + config.collection = config.devCollection; + } + + return { + ...defaultConfig, + ...config, + }; +}; + +module.exports = { + getConfig, +}; diff --git a/src/lib/build/facets.js b/src/lib/build/facets.js new file mode 100644 index 0000000..416ae6f --- /dev/null +++ b/src/lib/build/facets.js @@ -0,0 +1,185 @@ +const _ = require("lodash"); +const fs = require("fs"); +const { getUniqueSlug } = require("./slug"); +const { log } = require("./log"); + +const getFacetValues = (label, unique, counts, metadata) => { + let rootSlugs = {}; + + return unique + .filter((entry) => entry.label === label) + .map((entry) => { + const { value } = entry; + const { slug, allSlugs } = getUniqueSlug(value, rootSlugs); + rootSlugs = allSlugs; + + return { + value: value, + slug: slug, + doc_count: counts[value], + docs: metadata + .filter((item) => item.value === value) + .map((item) => item.index), + }; + }); +}; + +exports.buildFacets = async (labels, metadata, manifestData, baseUrl) => { + const unique = _.uniqBy(metadata, "value"); + const counts = _.countBy(metadata, "value"); + + let rootSlugs = {}; + + const canopyFacets = labels?.map((label) => { + const values = getFacetValues(label, unique, counts, metadata); + + const { slug, allSlugs } = getUniqueSlug(label, rootSlugs); + rootSlugs = allSlugs; + + return { + label: label, + slug: slug, + values: _.orderBy(values, ["doc_count", "value"], ["desc", "asc"]), + }; + }); + + // static api directory + const api = `public/api`; + + try { + // create api directory if it doesn't exist + if (!fs.existsSync(api)) fs.mkdirSync(api); + + // create facet directory if it doesn't exist + if (!fs.existsSync(`${api}/facet`)) fs.mkdirSync(`${api}/facet`); + + canopyFacets?.forEach((label) => { + const labelDirectory = `${api}/facet/${label.slug}`; + const labelCollection = this.buildFacetLabelCollection(label, baseUrl); + + if (!fs.existsSync(labelDirectory)) fs.mkdirSync(labelDirectory); + fs.writeFile( + `${labelDirectory}.json`, + JSON.stringify(labelCollection), + (err) => { + if (err) { + console.error(err); + } + } + ); + + label.values.forEach((value) => { + const valueDirectory = `${labelDirectory}/${value.slug}`; + const valueCollection = this.buildFacetValueCollection( + value, + { label: label.label, slug: label.slug }, + baseUrl, + manifestData + ); + + fs.writeFile( + `${valueDirectory}.json`, + JSON.stringify(valueCollection), + (err) => { + if (err) { + console.error(err); + } + } + ); + }); + }); + } catch (err) { + console.error(err); + } + + return canopyFacets; +}; + +exports.buildFacetLabelCollection = (label, baseUrl) => { + const items = label.values.map((value) => { + return { + id: `${baseUrl}/api/facet/${label.slug}/${value.slug}.json`, + type: "Collection", + label: { none: [value.value] }, + summary: { none: [`${value.doc_count} Items`] }, + homepage: [ + { + id: `${baseUrl}/search?${label.slug}=${value.slug}`, + type: "Text", + label: { none: [value.value] }, + }, + ], + }; + }); + + const collection = { + "@context": "https://iiif.io/api/presentation/3/context.json", + id: `${baseUrl}/api/facet/${label.slug}.json`, + type: "Collection", + label: { none: [label.label] }, + summary: { none: [`${label.values.length}`] }, + items: items, + }; + + return collection; +}; + +exports.buildFacetValueCollection = (value, label, baseUrl, manifests) => { + const items = value.docs + .map((doc) => { + try { + const item = manifests.find((manifest) => manifest.index === doc); + + if (!item.id) { + throw new Error( + `No manifest found for document ${doc} while creating: /api/facet/${label.slug}/${value.slug}.json\nThe Collection for this facet will be created but the document entry for the Manifest will be omitted. This might occur when the dereferenceable Manifest 'id' value does match with the source Collection 'items' Manifest 'id' entry.\n` + ); + } + + return { + id: item.id, + type: "Manifest", + label: item.label, + thumbnail: item.thumbnail, + homepage: [ + { + id: `${baseUrl}/works/${item.slug}`, + type: "Text", + label: item.label, + }, + ], + }; + } catch (error) { + log(error.toString(), "red"); + return; + } + }) + .filter((item) => item?.id); + + const collection = { + "@context": "https://iiif.io/api/presentation/3/context.json", + id: `${baseUrl}/api/facet/${label.slug}/${value.slug}.json`, + type: "Collection", + label: { + none: [value.value], + }, + items, + partOf: [ + { id: `${baseUrl}/api/facet/${label.slug}.json`, type: "Collection" }, + ], + summary: { + none: [label.label], + }, + homepage: [ + { + id: `${baseUrl}/search?${label.slug}=${value.slug}`, + type: "Text", + label: { none: [value.value] }, + }, + ], + }; + + log(`↓ /api/facet/${label.slug}/${value.slug}.json \n`, "green"); + + return collection; +}; diff --git a/src/lib/build/log.js b/src/lib/build/log.js new file mode 100644 index 0000000..1e4d304 --- /dev/null +++ b/src/lib/build/log.js @@ -0,0 +1,30 @@ +const charm = require("charm")(); + +function log( + string, + color = "blue", + options = { bright: false, dim: false, underscore: false } +) { + charm.pipe(process.stdout); + + if (options?.bright) charm.display("bright"); + if (options?.dim) charm.display("dim"); + if (options?.underscore) charm.display("underscore"); + + charm.foreground(color).write(string).display("reset"); + charm.end(); +} + +function logResponse(string, response, success = true) { + if (success) { + log(`✓ `, "yellow", { dim: true }); + log(`${string}`, "yellow"); + log(` ➜ ${response.status}\n`, "yellow", { dim: true }); + } else { + log(`✗ `, "red", { dim: true }); + log(`${string}`, "red"); + log(` ➜ ${response.status}\n`, "red", { dim: true }); + } +} + +module.exports = { log, logResponse }; diff --git a/src/lib/build/request.js b/src/lib/build/request.js new file mode 100644 index 0000000..3aa909a --- /dev/null +++ b/src/lib/build/request.js @@ -0,0 +1,28 @@ +const axios = require("axios"); +const { chunks } = require("./chunks"); +const { getPresentation3 } = require("../iiif/context"); +const { getManifestThumbnail } = require("./thumbnail"); +const { logResponse } = require("./log"); + +exports.getRootCollection = (id) => + axios.get(id).then((response) => response.data); + +exports.getBulkManifests = async (items, chunkSize) => + await chunks( + items, + async (item) => + axios + .get(item.id) + .then(async (response) => { + const manifest = getPresentation3(response.data); + const thumbnail = await getManifestThumbnail(manifest); + + logResponse(item.id, response); + return { ...manifest, index: item.index, thumbnail }; + }) + .catch((error) => { + if (error.response) logResponse(item.id, error.response, false); + return; + }), + chunkSize + ); diff --git a/src/lib/build/search.js b/src/lib/build/search.js new file mode 100644 index 0000000..08ed393 --- /dev/null +++ b/src/lib/build/search.js @@ -0,0 +1,17 @@ +const { getLabel, getEntries } = require("../iiif/label"); + +exports.buildIndexData = (manifests) => { + return manifests.map((manifest) => { + const { index, label, summary, metadata } = manifest; + return { + id: index, + ...(label && { label: getLabel(label).join(" ") }), + ...(summary && { summary: getLabel(summary).join(" ") }), + ...(metadata && { + metadata: metadata + .map((entry) => getEntries(entry.value).join(" ")) + .join(" "), + }), + }; + }); +}; diff --git a/src/lib/build/shape.js b/src/lib/build/shape.js new file mode 100644 index 0000000..52a5904 --- /dev/null +++ b/src/lib/build/shape.js @@ -0,0 +1,38 @@ +const { getPresentation3 } = require("../iiif/context"); +const { getLabel } = require("../iiif/label"); +const { getSlug } = require("./slug"); + +exports.getCanopyCollection = (json, depth = 0, parent = null) => { + if (!json) return null; + + const resource = getPresentation3(json); + const children = getCollectionItems(resource); + + return { + "@context": "https://iiif.io/api/presentation/3/context.json", + id: json.id, + type: "Collection", + label: resource.label, + slug: getSlug(getLabel(resource.label)[0]), + depth: depth, + parent: parent, + manifests: children.manifests, + collections: children.collections, + items: children.items, + }; +}; + +const getCollectionItems = (json) => { + let manifests = 0; + let collections = 0; + + return { + items: json.items.map((item) => { + if (item.type === "Manifest") manifests++; + if (item.type === "Collection") collections++; + return item; + }), + manifests, + collections, + }; +}; diff --git a/src/lib/build/slug.js b/src/lib/build/slug.js new file mode 100644 index 0000000..26f5c13 --- /dev/null +++ b/src/lib/build/slug.js @@ -0,0 +1,37 @@ +const slugify = require("slugify"); + +const config = { + lower: true, + strict: true, + trim: true, +}; + +function appendNumber(slug, number) { + return number > 1 ? `${slug}-${number}` : slug; +} + +function getNumber(number) { + return number ? number + 1 : 1; +} + +function getSlug(text) { + return limit(slugify(text, config), 100); +} + +function getUniqueSlug(text, allSlugs) { + const slug = getSlug(text); + const number = getNumber(allSlugs[slug]); + return { + slug: appendNumber(slug, number), + allSlugs: { + ...allSlugs, + [slug]: number, + }, + }; +} + +function limit(string = "", limit = 0) { + return string.substring(0, limit); +} + +module.exports = { getSlug, getUniqueSlug }; diff --git a/src/lib/build/thumbnail.js b/src/lib/build/thumbnail.js new file mode 100644 index 0000000..2ac812a --- /dev/null +++ b/src/lib/build/thumbnail.js @@ -0,0 +1,43 @@ +const { getRepresentativeImage } = require("../iiif/image"); + +module.exports.getManifestThumbnail = async (manifest) => { + try { + /** + * First, attempt to use the thumbnail property of the manifest. + */ + if (manifest.thumbnail && manifest.thumbnail.length > 0) + return manifest.thumbnail; + + if (manifest.items.length > 0) { + const canvas = manifest.items[0]; + const canvasAnnotation = canvas.items[0].items[0]; + /** + * Next, attempt to use the thumbnail property of the first item in the manifest. + */ + if (canvas.thumbnail && canvas.thumbnail.length > 0) + return canvas.thumbnail; + + /** + * Finally, attempt generate a thumbnail from the first canvas in the first item in the manifest. + */ + if (canvasAnnotation.body.type === "Image") { + const { best } = await getRepresentativeImage(canvas, 400); + return [ + { + id: best.id, + type: "Image", + format: "image/jpeg", + width: best.width, + height: best.height, + }, + ]; + } + } + } catch { + /** + * If all else fails, return an empty array as a thumbnail. + */ + console.log(`Thumbnail could not be generated for: ${manifest}`); + return []; + } +}; diff --git a/src/lib/constants/canopy.ts b/src/lib/constants/canopy.ts new file mode 100644 index 0000000..06dcb59 --- /dev/null +++ b/src/lib/constants/canopy.ts @@ -0,0 +1,18 @@ +import { + CanopyCollections, + CanopyFacets, + CanopyManifests, + CanopySearch, +} from "@customTypes/canopy"; + +import COLLECTIONS from "@.canopy/collections.json"; +import FACETS from "@.canopy/facets.json"; +import INDEX from "@.canopy/index.json"; +import MANIFESTS from "@.canopy/manifests.json"; + +const canopyCollections = () => COLLECTIONS as unknown as CanopyCollections; +const canopyFacets = () => FACETS as unknown as CanopyFacets; +const canopyIndex = () => INDEX as unknown as CanopySearch; +const canopyManifests = () => MANIFESTS as unknown as CanopyManifests; + +export { canopyCollections, canopyFacets, canopyIndex, canopyManifests }; diff --git a/src/lib/content/reference/server/index.ts b/src/lib/content/reference/server/index.ts new file mode 100644 index 0000000..fe4727f --- /dev/null +++ b/src/lib/content/reference/server/index.ts @@ -0,0 +1,58 @@ +const { resolve } = require("path"); +const { readdir } = require("fs").promises; + +import { NavigationItem } from "@src/customTypes/navigation"; +import fs from "fs"; +import matter from "gray-matter"; + +export async function getReferencingContent({ + manifestId, + srcDir, +}: { + manifestId: string; + srcDir: string[]; +}) { + // Read all files in a directory recursively + // https://stackoverflow.com/a/5827895/120275 + + const referencingContent: NavigationItem[] = []; + + async function getFiles(dir: string, srcDirIndex: number) { + const dirents = await readdir(dir, { withFileTypes: true }); + + // This will crawl a nested directory structure + const files = await Promise.all( + dirents.map((dirent: any) => { + const res = resolve(dir, dirent.name); + const fileName = res.split(dir)[1]; + const slug = fileName.replace(/\.mdx$/, ""); + + // Return a new recursive call, keep digging into nested directories in /pages + if (dirent.isDirectory()) return getFiles(res, srcDirIndex); + + // Read the file contents + const source = fs.readFileSync(res, "utf8"); + + // Read the frontmatter for an individual file + const { data } = matter(source); + + // If the page's frontmatter includes the manifestId, add to the array + if (data.referencedManifests?.includes(manifestId)) { + const path = `/${data.navigation}${slug}`; + referencingContent.push({ + text: data.title ? data.title : path, + path, + }); + } + return res; + }) + ); + return files.flat(); + } + + for (let i = 0; i < srcDir.length; i++) { + await getFiles(`${srcDir[i]}`, i); + } + + return referencingContent; +} diff --git a/src/lib/contentHelpers.ts b/src/lib/contentHelpers.ts new file mode 100644 index 0000000..21d35a4 --- /dev/null +++ b/src/lib/contentHelpers.ts @@ -0,0 +1,54 @@ +const path = require("path"); +const fs = require("fs"); +const matter = require("gray-matter"); + +import { GrayMatterFile } from "gray-matter"; +import { serialize } from "next-mdx-remote/serialize"; + +async function getMarkdownContent({ + slug, + directory = "", +}: { + slug: string; + directory?: string; +}) { + const filePath = path.join( + `content/${directory ? `${directory}/` : ""}`, + `${slug}.mdx` + ); + const fileContents = fs.readFileSync(filePath, "utf8"); + const { content, data }: GrayMatterFile = matter(fileContents); + + // Prepare the source for MDXRemote + const mdxSource = await serialize(content, { + scope: data, + parseFrontmatter: true, + }); + + return { + source: mdxSource, + frontMatter: data, + }; +} + +function getSlugFromFileName(fileName: string) { + return fileName.replace(/\.mdx$/, ""); +} + +function getMarkdownPaths(directory: string) { + const contentDirectoryPath = path.join(process.cwd(), `content/${directory}`); + const fileNames = fs.readdirSync(contentDirectoryPath); + return fileNames + .filter((filename: string) => { + return path.extname(filename).toLowerCase() === ".mdx"; + }) + .map((fileName: string) => { + return { + params: { + slug: getSlugFromFileName(fileName), + }, + }; + }); +} + +export { getMarkdownContent, getMarkdownPaths, getSlugFromFileName }; diff --git a/src/lib/facet/facets.ts b/src/lib/facet/facets.ts new file mode 100644 index 0000000..0fe8610 --- /dev/null +++ b/src/lib/facet/facets.ts @@ -0,0 +1,13 @@ +import FACETS from "@.canopy/facets.json"; + +export const getActiveFacets = (searchParams: URLSearchParams) => { + return FACETS.map((facet: any) => facet.slug) + .filter((key: string) => searchParams.has(key)) + .map((key: string) => { + const value = searchParams.get(key); + return { + label: key, + value: value, + }; + }); +}; diff --git a/src/lib/iiif/constructors/collection.js b/src/lib/iiif/constructors/collection.js new file mode 100644 index 0000000..0bc70b6 --- /dev/null +++ b/src/lib/iiif/constructors/collection.js @@ -0,0 +1,61 @@ +const MANIFESTS = require("@.canopy/manifests.json"); +const axios = require("axios"); +const { getPresentation3 } = require("../context"); +const { getHomepageBySlug } = require("../homepage"); +const { getRepresentativeImage } = require("../image"); + +async function createCollection(iiifResources, baseUrl, label = "") { + const items = await getCollectionItems(iiifResources); + const complete_items = await Promise.all( + items.map(async (resource) => await createItem(resource, baseUrl)) + ); + return { + "@context": "https://iiif.io/api/presentation/3/context.json", + id: `http://localhost/featured`, + type: "Collection", + label: { none: [label] }, + items: complete_items, + }; +} + +async function createItem(resource, baseUrl) { + const item = MANIFESTS.find((item) => item.id === resource.id); + if (item?.slug) { + const { best } = await getRepresentativeImage(resource, 2000); + return { + id: resource.id, + label: resource.label, + thumbnail: best + ? [ + { + id: best.id, + type: "Image", + format: "image/jpeg", + width: best.width, + height: best.height, + }, + ] + : [], + homepage: getHomepageBySlug(item.slug, resource.label, baseUrl), + }; + } else { + return { + id: resource.id, + label: resource.label, + thumbnail: [], + homepage: [], + }; + } +} + +function getCollectionItems(iiifResources) { + return iiifResources + ? Promise.all( + iiifResources.map((id) => + axios.get(id).then((json) => getPresentation3(json.data)) + ) + ) + : []; +} + +module.exports = { createCollection }; diff --git a/src/lib/iiif/constructors/related.ts b/src/lib/iiif/constructors/related.ts new file mode 100644 index 0000000..5feaa74 --- /dev/null +++ b/src/lib/iiif/constructors/related.ts @@ -0,0 +1,18 @@ +import FACETS from "@.canopy/facets.json"; +import { shuffle } from "lodash"; + +export const getRelatedFacetValue = ( + label: string, + minimumDocCount = 5, + random = true +) => { + const { values } = FACETS.find((item) => item.label === label) as any; + const filtered: any = values.filter( + (value: any) => value.doc_count >= minimumDocCount + ); + let output = filtered.length !== 0 ? filtered : values; + + if (random) output = shuffle(output); + + return output.shift(); +}; diff --git a/src/lib/iiif/context.js b/src/lib/iiif/context.js new file mode 100644 index 0000000..79b0d7a --- /dev/null +++ b/src/lib/iiif/context.js @@ -0,0 +1,40 @@ +const { convertPresentation2 } = require("@iiif/parser/presentation-2"); + +/** + * defensively determine @context + */ +const contextAsArray = (json) => { + const context = Array.isArray(json["@context"]) + ? json["@context"] + : [json["@context"]]; + + return context.map((uri) => uri.replace("http://", "https://")); +}; + +/** + * return IIIF resource as Presentation API 3.0 + */ +exports.getPresentation3 = (json) => { + const context = contextAsArray(json); + const validContexts = [ + "https://iiif.io/api/presentation/2/context.json", + "https://iiif.io/api/presentation/3/context.json", + ]; + + /** + * return IIIF resource for valid contexts + */ + try { + if (context.includes(validContexts[0])) { + return convertPresentation2(json); + } else if (context.includes(validContexts[1])) { + return json; + } else { + throw new TypeError( + `Collection is not of @context: ${validContexts.join(", ")}.` + ); + } + } catch (e) { + console.error(e); + } +}; diff --git a/src/lib/iiif/homepage.js b/src/lib/iiif/homepage.js new file mode 100644 index 0000000..fe3cbdd --- /dev/null +++ b/src/lib/iiif/homepage.js @@ -0,0 +1,13 @@ +/** + * + */ + +exports.getHomepageBySlug = (slug = "", label = "", baseUrl) => { + return [ + { + id: `${baseUrl}/works/${slug}`, + type: "Text", + label: label, + }, + ]; +}; diff --git a/src/lib/iiif/image.js b/src/lib/iiif/image.js new file mode 100644 index 0000000..a4e4d3a --- /dev/null +++ b/src/lib/iiif/image.js @@ -0,0 +1,14 @@ +const { createThumbnailHelper } = require("@iiif/vault-helpers"); + +exports.getRepresentativeImage = async (canvas, preferredSize = 1200) => { + const helper = createThumbnailHelper(); + try { + return await helper.getBestThumbnailAtSize(canvas, { + width: preferredSize, + height: preferredSize, + }); + } catch (error) { + console.log(error); + return {}; + } +}; diff --git a/src/lib/iiif/label.js b/src/lib/iiif/label.js new file mode 100644 index 0000000..8f1a195 --- /dev/null +++ b/src/lib/iiif/label.js @@ -0,0 +1,38 @@ +exports.getLabel = (label, language = "none") => { + /* + * If no label exists, return a hardcoded string. + */ + if (!label) return ["Untitled"]; + + if (typeof label === "string") return [label]; + + /* + * If InternationalString code does not exist on label, then + * return what may be there, ex: label.none[0] OR label.fr[0] + */ + if (!label[language]) { + const codes = Object.getOwnPropertyNames(label); + if (codes.length > 0) return label[codes[0]]; + } + + /* + * Return label value for InternationalString code `en` + */ + return label[language]; +}; + +exports.getEntries = (values, language = "none") => { + /* + * If InternationalString code does not exist on label, then + * return what may be there, ex: label.none[0] OR label.fr[0] + */ + if (!values[language]) { + const codes = Object.getOwnPropertyNames(values); + if (codes.length > 0) return values[codes[0]]; + } + + /* + * Return label value for InternationalString code `en` + */ + return values[language]; +}; diff --git a/src/lib/iiif/navPlace.ts b/src/lib/iiif/navPlace.ts new file mode 100644 index 0000000..d195798 --- /dev/null +++ b/src/lib/iiif/navPlace.ts @@ -0,0 +1,29 @@ +import { Manifest } from "@iiif/presentation-3"; + +export const getBounds = (items: any) => { + const boundsPerItem = items.map((item: any) => { + const pointFeatures = item.features.filter( + (feature: any) => feature.geometry.type === "Point" + ); + const manifestCoordinates = pointFeatures.map( + (feature: any) => [feature.geometry.coordinates[1], feature.geometry.coordinates[0]] + ); + return [...manifestCoordinates]; + }); + return [].concat(...boundsPerItem); +}; + +export const getFeatures = (manifests: [Manifest]) => { + return manifests.map((manifest: any) => { + // Spread this ... + return { + id: manifest.id, + thumbnail: manifest.thumbnail, + label: manifest.label, + slug: `works/${manifest.slug}`, + features: manifest.navPlace.features.filter( + (feature: any) => feature.geometry.type === "Point" + ), + }; + }); +}; diff --git a/src/lib/option.ts b/src/lib/option.ts new file mode 100644 index 0000000..3116d59 --- /dev/null +++ b/src/lib/option.ts @@ -0,0 +1,5 @@ +function getOption(property: string) { + return property; +} + +export { getOption }; diff --git a/src/lib/search/documents.ts b/src/lib/search/documents.ts new file mode 100644 index 0000000..1964894 --- /dev/null +++ b/src/lib/search/documents.ts @@ -0,0 +1,17 @@ +// @ts-nocheck + +import { Document } from "flexsearch"; +import INDEX from "@.canopy/index.json"; + +const getDocuments = (q: string, flexSearch: any) => { + const index = new Document(flexSearch); + INDEX.forEach((doc) => index.add(doc)); + + const results = index.search(q).reduce((acc, curr) => { + return [...new Set([...acc, ...curr.result])]; + }, []); + + return results.length > 0 ? results : []; +}; + +export { getDocuments }; diff --git a/src/lib/search/request.ts b/src/lib/search/request.ts new file mode 100644 index 0000000..0bbeb0e --- /dev/null +++ b/src/lib/search/request.ts @@ -0,0 +1,52 @@ +import { + getPageCollection, + getPages, + getPartOf, + getTopCollection, +} from "@lib/search/response"; + +import { URLSearchParams } from "url"; +import { getActiveFacets } from "@lib/facet/facets"; +import { getResults } from "@lib/search/results"; + +const searchRequest = ({ + params, + baseUrl, + flexSearch, +}: { + params: URLSearchParams; + baseUrl: string; + flexSearch: any; +}) => { + const activeFacets = getActiveFacets(params); + const q = params?.get("q"); + const page = params?.get("page"); + const searchUrl = new URL(`${baseUrl}/search`); + searchUrl.search = params?.toString(); + + const results = getResults(baseUrl, q, activeFacets, flexSearch); + const pages = getPages(results, 10); + const items = page + ? getPageCollection(results, pages, parseInt(page as string)) + : getTopCollection(pages, searchUrl); + + return { + "@context": "https://iiif.io/api/presentation/3/context.json", + id: searchUrl.toString(), + type: "Collection", + + // @ts-ignore + label: { none: [q ? q : `All Results`] }, + items: items, + ...(page + ? { + summary: { + none: [`${results.length}}`], + }, + } + : { summary: { none: [`${results.length}`] } }), + ...(page && { partOf: getPartOf(searchUrl) }), + }; +}; + +export { searchRequest }; diff --git a/src/lib/search/response.ts b/src/lib/search/response.ts new file mode 100644 index 0000000..9badb72 --- /dev/null +++ b/src/lib/search/response.ts @@ -0,0 +1,59 @@ +const getPageCollection = (manifests: any, pages: any, page: any) => { + const target = pages.find((item: any) => item.page === page); + return target.items.map((id: any) => + manifests.find((item: any) => item.id === id) + ); +}; + +const getPages = (manifests: any, size: any) => { + const count = Math.ceil(manifests.length / size); + const pages = Array.from(Array(count).keys()); + + return pages.map((index) => { + const start = size * index; + const end = size * (index + 1); + const items = manifests.slice(start, end).map((item: any) => item.id); + return { page: index + 1, items: items }; + }); +}; + +const getPartOf = (baseUrl: any) => { + const url = new URL(baseUrl); + url.searchParams.delete("page"); + return [ + { + id: url, + type: "Collection", + }, + ]; +}; + +const getTopCollection = (pages: any, baseUrl: any) => { + return pages.map((item: any) => { + const url = new URL(baseUrl); + url.searchParams.append("page", item.page); + return { + id: url.toString(), + type: "Collection", + label: { none: [`Page ${item.page} (${item.items.length} Total)`] }, + }; + }); +}; + +const getItem = (item: any, baseUrl: any) => { + return { + id: item.id, + type: "Manifest", + label: item.label, + thumbnail: item.thumbnail, + homepage: [ + { + id: `${baseUrl}/works/${item.slug}`, + type: "Text", + label: item.label, + }, + ], + }; +}; + +export { getPageCollection, getPages, getPartOf, getItem, getTopCollection }; diff --git a/src/lib/search/results.ts b/src/lib/search/results.ts new file mode 100644 index 0000000..d1e9ef2 --- /dev/null +++ b/src/lib/search/results.ts @@ -0,0 +1,46 @@ +import FACETS from "@.canopy/facets.json"; +import INDEX from "@.canopy/index.json"; +import MANIFESTS from "@.canopy/manifests.json"; +import _ from "lodash"; +import { getDocuments } from "@lib/search/documents"; +import { getItem } from "@lib/search/response"; + +// @ts-nocheck + +const getResults = ( + baseUrl: any, + q: any, + activeFacets: any, + flexSearch: any +) => { + const documents = !q + ? INDEX.map((doc) => doc.id) + : getDocuments(q, flexSearch); + + const applyFacets = (activeFacets: any) => { + const docs = activeFacets.map((facet: any) => { + // @ts-ignore + const value = FACETS.find( + (entry) => entry.slug === facet.label + ).values.find((entry) => entry.slug === facet.value); + return value?.docs; + }); + + return MANIFESTS.filter((item) => + _.intersection(...docs).includes(item.index) + ); + }; + + const items = + activeFacets.length === 0 ? MANIFESTS : applyFacets(activeFacets); + + // @ts-ignore + return documents + .filter((doc: number) => items.some((item) => item.index === doc)) + .map((doc: number) => { + const item = items.find((item) => item.index === doc); + return getItem(item, baseUrl); + }); +}; + +export { getResults }; diff --git a/src/lib/seo.ts b/src/lib/seo.ts new file mode 100644 index 0000000..2b6654e --- /dev/null +++ b/src/lib/seo.ts @@ -0,0 +1,90 @@ +import { IIIFExternalWebResource, Manifest } from "@iiif/presentation-3"; + +import COLLECTIONS from "@.canopy/collections.json"; +import { CanopyEnvironment } from "@customTypes/canopy"; +import { FrontMatterContentItem } from "@src/customTypes/content"; +import MANIFESTS from "@.canopy/manifests.json"; +import { getLabel } from "./iiif/label"; +import { getRandomItem } from "./utils"; + +const root = COLLECTIONS.find((collection) => collection.depth === 0); +const label = root?.label; + +const buildManifestSEO = async (manifest: Manifest, path: string) => { + const { url, basePath } = process.env + ?.CANOPY_CONFIG as unknown as CanopyEnvironment; + const baseUrl = basePath ? `${url}${basePath}` : url; + + const title = getLabel(manifest.label).join(" - "); + const images = MANIFESTS.find((item) => item.id === manifest.id) + ?.thumbnail as any[]; + + return { + title: `${title} - ${getLabel(label).join(" - ")}`, + ...(manifest.summary && { + description: getLabel(manifest.summary).join(" - "), + }), + canonical: `${baseUrl}${path}`, + openGraph: { + images: images?.map((item: any) => { + return { + url: item.id || "", + type: item.format || "", + width: item.width || 200, + height: item.height || 200, + alt: title || "", + }; + }), + }, + }; +}; + +const buildContentSEO = (frontMatter: FrontMatterContentItem, path: string) => { + const { url, basePath } = process.env + ?.CANOPY_CONFIG as unknown as CanopyEnvironment; + const baseUrl = basePath ? `${url}${basePath}` : url; + const title = frontMatter?.title || ""; + const description = frontMatter?.description; + + return { + title: `${title} - ${getLabel(label).join(" - ")}`, + ...(description && { description }), + canonical: `${baseUrl}${path}`, + }; +}; + +const buildDefaultSEO = (config: any) => { + const summary = config.summary ? config.summary : ""; + const siteTitle = getLabel(label).join(" - "); + const title = config.pageTitle + ? `${config.pageTitle} - ${siteTitle}` + : siteTitle; + const description = getLabel(summary).join(" - "); + const featured = config.featured; + + const candidates = featured?.map((item: any) => { + const manifest = MANIFESTS.find((manifest: any) => manifest?.id === item); + const thumbnail = manifest?.thumbnail as any[]; + if (thumbnail?.length > 0) return thumbnail[0]; + }); + + const defaultImage = getRandomItem(candidates as IIIFExternalWebResource[]); + + return { + title, + description, + openGraph: { + images: [ + { + url: defaultImage?.id || "", + type: defaultImage?.format || "", + width: defaultImage?.width || 200, + height: defaultImage?.height || 200, + alt: title || "", + }, + ], + }, + }; +}; + +export { buildContentSEO, buildDefaultSEO, buildManifestSEO }; diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..12510ce --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,10 @@ +export const getJsonByURI = (uri: string) => + fetch(uri).then((response) => response.json()); + +export function getRandomItem(array: Array = []): T | null { + if (Array.isArray(array) && array.length > 0) { + const randomIndex = Math.floor(Math.random() * array.length); + return array[randomIndex]; + } + return null; +} diff --git a/src/mocks/next-font.ts b/src/mocks/next-font.ts new file mode 100644 index 0000000..15f492c --- /dev/null +++ b/src/mocks/next-font.ts @@ -0,0 +1,12 @@ +module.exports = new Proxy( + {}, + { + get: function getter() { + return () => ({ + className: "className", + variable: "variable", + style: { fontFamily: "fontFamily" }, + }); + }, + } +); diff --git a/src/pages/404.tsx b/src/pages/404.tsx new file mode 100644 index 0000000..8c30f7f --- /dev/null +++ b/src/pages/404.tsx @@ -0,0 +1,40 @@ +import CanopyMDXRemote from "@src/components/MDX"; +import LayoutsBasic from "@src/components/Layouts/Basic"; +import { MDXRemoteSource } from "@customTypes/content"; +import React from "react"; +import { getMarkdownContent } from "@src/lib/contentHelpers"; + +interface PageNotFoundProps { + frontMatter: { + [key: string]: any; + }; + source: MDXRemoteSource; +} + +const PageNotFound: React.FC = ({ frontMatter, source }) => { + return ( + } + frontMatter={frontMatter} + /> + ); +}; + +export async function getStaticProps() { + const { frontMatter, source } = await getMarkdownContent({ + slug: "404", + directory: "", + }); + + const pageTitle = frontMatter?.title ? frontMatter?.title : "404"; + + return { + props: { + frontMatter, + source, + pageTitle, + }, + }; +} + +export default PageNotFound; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx new file mode 100644 index 0000000..914fc52 --- /dev/null +++ b/src/pages/_app.tsx @@ -0,0 +1,89 @@ +import { CanopyEnvironment, CanopyLocale } from "@customTypes/canopy"; +import { CanopyProvider, defaultState } from "../context/canopy"; +import React, { useEffect, useState } from "react"; +import { dm_sans, dm_serif_display } from "../styles/theme/fonts"; +import { getDefaultLang, getLocale } from "@hooks/useLocale"; + +import { AppProps } from "next/app"; +import COLLECTIONS from "@.canopy/collections.json"; +import { NextSeo } from "next-seo"; +import { ThemeProvider } from "next-themes"; +import { buildDefaultSEO } from "@lib/seo"; +import { darkTheme } from "../styles/stitches"; +import globalStyles from "../styles/global"; + +interface CanopyAppProps extends AppProps { + pageProps: { + [key: string]: any; + }; +} + +export default function CanopyAppProps({ + Component, + pageProps, +}: CanopyAppProps) { + globalStyles(); + + const config = process.env.CANOPY_CONFIG as unknown as CanopyEnvironment; + const root = COLLECTIONS.find((collection) => collection.depth === 0); + const label = root?.label; + + const { locales, theme } = config; + + const seo = pageProps.seo + ? pageProps.seo + : buildDefaultSEO({ + ...config, + label, + pageTitle: pageProps?.pageTitle, + }); + + const [locale, setLocale] = useState(); + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); + + useEffect(() => { + if (mounted && !locale) { + (async () => { + const defaultLang = getDefaultLang(locales); + const defaultLocale = await getLocale(locales, defaultLang); + setLocale(defaultLocale as CanopyLocale); + })(); + } + }, [locale, locales, mounted]); + + return ( + <> + + + + {locale && ( + + {mounted && } + + )} + + > + ); +} diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx new file mode 100644 index 0000000..f0c71ef --- /dev/null +++ b/src/pages/_document.tsx @@ -0,0 +1,34 @@ +import Document, { + DocumentContext, + Head, + Html, + Main, + NextScript, +} from "next/document"; + +import { GoogleFontImport } from "@styles/theme/fonts"; +import React from "react"; + +class CanopyDocument extends Document { + static async getInitialProps(ctx: DocumentContext) { + const initialProps = await Document.getInitialProps(ctx); + + return initialProps; + } + + render() { + return ( + + + + + + + + + + ); + } +} + +export default CanopyDocument; diff --git a/src/pages/about/[slug].tsx b/src/pages/about/[slug].tsx new file mode 100644 index 0000000..657cab4 --- /dev/null +++ b/src/pages/about/[slug].tsx @@ -0,0 +1,60 @@ +import { getMarkdownContent, getMarkdownPaths } from "@lib/contentHelpers"; + +import CanopyMDXRemote from "@src/components/MDX"; +import { FrontMatterPageProps } from "@customTypes/content"; +import { GetStaticPropsContext } from "next"; +import LayoutsBasic from "@src/components/Layouts/Basic"; +import { buildContentSEO } from "@src/lib/seo"; + +/** + * Specifies the relative path of the directory containing the Markdown. + * This path is relative to the [root]/content/ directory. Modify this value + * to change the directory that is used to generate pages. + */ +const CONTENT_DIRECTORY = "about"; + +/** + * This is a page that is generated from a Markdown file. + */ +const ContentPageSlug = ({ source, frontMatter }: FrontMatterPageProps) => { + return ( + } + frontMatter={frontMatter} + /> + ); +}; + +/** + * This function is called at build time by Next.js. It specifies the paths + * that should be generated into HTML at build time. It is used to generate + * the static pages that are generated from Markdown files. + */ +export async function getStaticPaths() { + return { + paths: getMarkdownPaths(CONTENT_DIRECTORY), + fallback: false, + }; +} + +/** + * This function is called at build time by Next.js. It specifies the props + * that should be passed to the page component. It is used to pass the props + * that are used to render the static pages that are generated from Markdown + * files. + */ +export async function getStaticProps({ params }: GetStaticPropsContext) { + const slug = params?.slug as string; + const path = `/${CONTENT_DIRECTORY}/${slug}`; + const { frontMatter, source } = await getMarkdownContent({ + slug, + directory: CONTENT_DIRECTORY, + }); + const seo = buildContentSEO(frontMatter, path); + + return { + props: { frontMatter, seo, source }, + }; +} + +export default ContentPageSlug; diff --git a/src/pages/about/index.tsx b/src/pages/about/index.tsx new file mode 100644 index 0000000..6bc30ff --- /dev/null +++ b/src/pages/about/index.tsx @@ -0,0 +1,45 @@ +import CanopyMDXRemote from "@src/components/MDX"; +import { FrontMatterPageProps } from "@customTypes/content"; +import LayoutsBasic from "@src/components/Layouts/Basic"; +import { buildContentSEO } from "@src/lib/seo"; +import { getMarkdownContent } from "@lib/contentHelpers"; + +/** + * Specifies the relative path of the directory containing the Markdown. + * This path is relative to the [root]/content/ directory. Modify this value + * to change the directory that is used to generate the page. + */ +const CONTENT_DIRECTORY = "about"; + +/** + * This is a page that is generated from a Markdown file. + */ +const ContentPage = ({ source, frontMatter }: FrontMatterPageProps) => { + return ( + } + frontMatter={frontMatter} + /> + ); +}; + +/** + * This function is called at build time by Next.js. It specifies the props + * that should be passed to the page component. It is used to pass the props + * that are used to render the static pages that are generated from Markdown + * files. + */ +export async function getStaticProps() { + const path = `/${CONTENT_DIRECTORY}`; + const { frontMatter, source } = await getMarkdownContent({ + slug: "index", + directory: CONTENT_DIRECTORY, + }); + const seo = buildContentSEO(frontMatter, path); + + return { + props: { frontMatter, seo, source }, + }; +} + +export default ContentPage; diff --git a/src/pages/api/facet/[label]/[value].ts b/src/pages/api/facet/[label]/[value].ts new file mode 100644 index 0000000..cd2cef3 --- /dev/null +++ b/src/pages/api/facet/[label]/[value].ts @@ -0,0 +1,39 @@ +// @ts-nocheck + +import type { NextApiRequest, NextApiResponse } from "next"; + +import { Collection } from "@iiif/presentation-3"; +import fs from "fs"; +import path from "path"; +import { sortItems } from "@hooks/sortItems"; + +export default function handler( + request: NextApiRequest, + response: NextApiResponse +) { + const { query } = request; + const { label, value, sort } = query; + + const filePath = path.join( + process.cwd(), + `public/api/facet/${label}`, + `${value}.json` + ); + const jsonString = fs.readFileSync(filePath, "utf8"); + const data = JSON.parse(jsonString); + + const collection = { + ...data, + id: data.id.replace(".json", ""), + items: sortItems(data.items, sort || "random"), + partOf: data.partOf.map((entry: any) => { + return { + ...entry, + id: entry.id.replace(".json", ""), + }; + }), + }; + + response.setHeader("Access-Control-Allow-Origin", "*"); + response.status(200).json(collection); +} diff --git a/src/pages/api/facet/[label]/index.ts b/src/pages/api/facet/[label]/index.ts new file mode 100644 index 0000000..c7eaad7 --- /dev/null +++ b/src/pages/api/facet/[label]/index.ts @@ -0,0 +1,34 @@ +import fs from "fs"; +import path from "path"; +import type { NextApiRequest, NextApiResponse } from "next"; +import { Collection } from "@iiif/presentation-3"; + +export default function handler( + request: NextApiRequest, + response: NextApiResponse +) { + const { query } = request; + const { label } = query; + + const filePath = path.join( + process.cwd(), + `public/api/facet`, + `${label}.json` + ); + const jsonString = fs.readFileSync(filePath, "utf8"); + const data = JSON.parse(jsonString); + + const collection = { + ...data, + id: data.id.replace(".json", ""), + items: data.items.map((entry: any) => { + return { + ...entry, + id: entry.id.replace(".json", ""), + }; + }), + }; + + response.setHeader("Access-Control-Allow-Origin", "*"); + response.status(200).json(collection); +} diff --git a/src/pages/api/info.ts b/src/pages/api/info.ts new file mode 100644 index 0000000..21f79f4 --- /dev/null +++ b/src/pages/api/info.ts @@ -0,0 +1,38 @@ +import type { NextApiRequest, NextApiResponse } from "next"; + +import COLLECTIONS from "@.canopy/collections.json"; +import { Collection } from "@iiif/presentation-3"; +import MANIFESTS from "@.canopy/manifests.json"; +import absoluteUrl from "next-absolute-url"; + +export default function handler( + request: NextApiRequest, + response: NextApiResponse +) { + const { origin } = absoluteUrl(request); + const source: any = COLLECTIONS.find((collection) => !collection.parent); + + const items = MANIFESTS.map((item: any) => { + delete item.slug; + delete item?.index; + return item; + }); + + response.setHeader("Access-Control-Allow-Origin", "*"); + response.status(200).json({ + "@context": "https://iiif.io/api/presentation/3/context.json", + id: `${origin}/api/canopy`, + type: "Collection", + label: source.label, + items: items, + seeAlso: [ + { + id: source.id, + // @ts-ignore + type: "Collection", + format: "application/ld+json", + label: source.label, + }, + ], + }); +} diff --git a/src/pages/api/search.ts b/src/pages/api/search.ts new file mode 100644 index 0000000..d923d61 --- /dev/null +++ b/src/pages/api/search.ts @@ -0,0 +1,26 @@ +// @ts-nocheck + +import type { NextApiRequest, NextApiResponse } from "next"; + +import { Collection } from "@iiif/presentation-3"; +import absoluteUrl from "next-absolute-url"; +import { searchRequest } from "@lib/search/request"; + +export default function handler( + request: NextApiRequest, + response: NextApiResponse +) { + const { origin } = absoluteUrl(request); + + const baseUrl = origin + request?.url; + const { searchParams } = new URL(baseUrl); + + const collection = searchRequest({ + params: searchParams, + baseUrl, + flexSearch: process?.env?.CANOPY_CONFIG?.search?.flexSearch, + }) as unknown as Collection; + + response.setHeader("Access-Control-Allow-Origin", "*"); + response.status(200).json(collection); +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx new file mode 100644 index 0000000..3a2db3b --- /dev/null +++ b/src/pages/index.tsx @@ -0,0 +1,96 @@ +import { CanopyEnvironment } from "@customTypes/canopy"; +import CanopyMDXRemote from "@src/components/MDX"; +import Container from "@components/Shared/Container"; +import FACETS from "@.canopy/facets.json"; +import Hero from "@components/Hero/Hero"; +import { HeroWrapper } from "../components/Hero/Hero.styled"; +import Layout from "@components/layout"; +import { LocaleString } from "@hooks/useLocale"; +import { MDXRemoteSource } from "@customTypes/content"; +import React from "react"; +import Related from "../components/Related/Related"; +import { canopyManifests } from "@lib/constants/canopy"; +import { createCollection } from "../lib/iiif/constructors/collection"; +import { getMarkdownContent } from "@src/lib/contentHelpers"; +import { getRelatedFacetValue } from "../lib/iiif/constructors/related"; + +interface IndexProps { + featuredItems: any; + frontMatter: { + [key: string]: any; + }; + metadataCollections: string[]; + source: MDXRemoteSource; +} + +const Index: React.FC = ({ + featuredItems, + frontMatter, + metadataCollections, + source, +}) => { + return ( + + {frontMatter.showHero && ( + + + + )} + + + + + {frontMatter.showHighlighted && ( + + )} + + + ); +}; + +export async function getStaticProps() { + // Get Front Matter and Markdown content from default content folder: /content/index.mdx + const { frontMatter, source } = await getMarkdownContent({ + slug: "index", + directory: "", + }); + + const pageTitle = frontMatter?.title ? frontMatter?.title : "Home"; + + /** + * Handle presentation logic below + */ + + const manifests = canopyManifests(); + + // @ts-ignore + const { featured, baseUrl } = process.env + ?.CANOPY_CONFIG as unknown as CanopyEnvironment; + + const randomFeaturedItem = + manifests[Math.floor(Math.random() * manifests.length)]; + const featuredItems = await createCollection( + featured ? featured : [randomFeaturedItem.id], + baseUrl + ); + + const metadataCollections = FACETS.map((facet) => { + const value = getRelatedFacetValue(facet?.label); + return `${baseUrl}/api/facet/${facet?.slug}/${value?.slug}.json?sort=random`; + }); + + return { + props: { + metadataCollections, + featuredItems, + frontMatter, + pageTitle, + source, + }, + }; +} + +export default Index; diff --git a/src/pages/map.tsx b/src/pages/map.tsx new file mode 100644 index 0000000..469dcd3 --- /dev/null +++ b/src/pages/map.tsx @@ -0,0 +1,56 @@ +// @ts-nocheck + +import "leaflet/dist/leaflet.css"; + +import Layout from "@components/layout"; +import { Manifest } from "@iiif/presentation-3"; +import React from "react"; +import { canopyManifests } from "@lib/constants/canopy"; +import dynamic from "next/dynamic"; +import { getFeatures } from "@lib/iiif/navPlace"; + +const Map = dynamic(() => import("../components/Map/Map"), { ssr: false }); + +interface MapPageProps { + manifests: Manifest[]; +} + +export default function MapPage({ manifests }: MapPageProps) { + const navPlaceManifests = manifests.filter((manifest) => manifest.navPlace); + const features = getFeatures(navPlaceManifests); + + return ( + + + + + + ); +} + +export async function getStaticProps() { + const enabled = process.env.CANOPY_CONFIG.map.enabled; + + if (!enabled) { + return { + notFound: true, + }; + } + + try { + const pageTitle = "Map"; + + return { + props: { + manifests: canopyManifests(), + pageTitle, + }, + }; + } catch (error) { + console.error("Error fetching data:", error); + + return { + notFound: true, + }; + } +} diff --git a/src/pages/metadata.tsx b/src/pages/metadata.tsx new file mode 100644 index 0000000..e0a41f5 --- /dev/null +++ b/src/pages/metadata.tsx @@ -0,0 +1,79 @@ +import { + ContentStyled, + ContentWrapper, +} from "@components/Shared/Content.styled"; + +import Container from "../components/Shared/Container"; +import FACETS from "@.canopy/facets.json"; +import Heading from "@components/Shared/Heading/Heading"; +import Layout from "@components/layout"; +import Link from "next/link"; +import React from "react"; +import { styled } from "@styles/stitches"; + +const ListItem = styled("li", { + listStyle: "none", + padding: "0", + lineHeight: "unset", + + em: { + fontSize: "$gr2", + fontStyle: "normal", + }, +}); + +interface MetadataItemProps { + value: string; + slug: string; + doc_count: number; + path: string; +} + +export default function Metadata() { + const MetadataItem: React.FC = ({ + value, + slug, + doc_count, + path, + }) => { + return ( + + {value} ({doc_count}) + + ); + }; + + return ( + + + + + Metadata + {FACETS.map(({ label, slug, values }) => { + const path = `/search?${slug}=`; + + return ( + + {label} + + {values.map((value) => ( + + ))} + + + ); + })} + + + + + ); +} + +export async function getStaticProps() { + const pageTitle = "Metadata"; + + return { + props: { pageTitle }, + }; +} diff --git a/src/pages/search.tsx b/src/pages/search.tsx new file mode 100644 index 0000000..ee5ba30 --- /dev/null +++ b/src/pages/search.tsx @@ -0,0 +1,102 @@ +import React, { useEffect, useRef, useState } from "react"; +import { + SearchHeaderFloat, + SearchHeaderStyled, +} from "@components/Search/Header.styled"; + +import Container from "@components/Shared/Container"; +import Facets from "@components/Facets/Facets"; +import Layout from "@components/layout"; +import { LocaleString } from "@hooks/useLocale"; +import SearchResults from "@components/Search/Results"; +import { Summary } from "@samvera/clover-iiif/primitives"; +import { headerHeight } from "@styles/global"; +import { searchRequest } from "@lib/search/request"; +import { useCanopyState } from "@context/canopy"; +import useElementPosition from "@hooks/useElementPosition"; +import { useSearchParams } from "next/navigation"; + +const Search = () => { + const searchParams: URLSearchParams = useSearchParams(); + + const [pages, setPages] = useState([]); + const [params, setParams] = useState(); + + const searchHeaderRef = useRef(null); + const scrollPosition = useElementPosition(searchHeaderRef); + + const { + canopyDispatch, + canopyState: { config, searchHeaderFixed, searchSummary }, + } = useCanopyState(); + + useEffect(() => { + setPages([]); + setParams(new URLSearchParams(searchParams.toString())); + }, [searchParams]); + + useEffect( + () => + canopyDispatch({ + searchHeaderFixed: scrollPosition > -headerHeight, + type: "updateSearchHeaderFixed", + }), + [canopyDispatch, scrollPosition] + ); + + useEffect(() => { + if (typeof params !== "undefined") { + canopyDispatch({ + searchParams: params, + type: "updateSearchParams", + }); + + const flexSearch = config?.search?.flexSearch; + const baseUrl = config?.baseUrl; + + const { items, summary } = searchRequest({ + params, + baseUrl, + flexSearch, + }); + + setPages(items.map((item: any) => item.id)); + summary && + canopyDispatch({ + type: "updateSearchSummary", + searchSummary: summary, + }); + } + }, [config, params, canopyDispatch]); + + return ( + + + + + {searchSummary && ( + + {" "} + {LocaleString("searchResults")} + + )} + + + + + + + + + ); +}; + +export async function getStaticProps() { + const pageTitle = "Search"; + + return { + props: { pageTitle }, + }; +} + +export default Search; diff --git a/src/pages/works/[slug].tsx b/src/pages/works/[slug].tsx new file mode 100644 index 0000000..a2a10dc --- /dev/null +++ b/src/pages/works/[slug].tsx @@ -0,0 +1,92 @@ +import { CanopyEnvironment } from "@customTypes/canopy"; +import Container from "@components/Shared/Container"; +import FACETS from "@.canopy/facets.json"; +import Layout from "@components/layout"; +import MANIFESTS from "@.canopy/manifests.json"; +import { Manifest } from "@iiif/presentation-3"; +import { type NavigationItem } from "@src/customTypes/navigation"; +import Related from "@components/Related/Related"; +import Viewer from "@components/Viewer/Viewer"; +import WorkInner from "@components/Work/Inner"; +import { buildManifestSEO } from "@lib/seo"; +import { fetch } from "@iiif/vault-helpers/fetch"; +import { getReferencingContent } from "@src/lib/content/reference/server"; +import { shuffle } from "lodash"; + +interface WorkProps { + manifest: Manifest; + related: any; + referencingContent: NavigationItem[]; +} + +export default function Work({ + manifest, + referencingContent, + related, +}: WorkProps) { + const { id } = manifest; + + return ( + + + + + + + + ); +} + +export async function getStaticProps({ params }: { params: any }) { + const { url, basePath } = process.env + ?.CANOPY_CONFIG as unknown as CanopyEnvironment; + const baseUrl = basePath ? `${url}${basePath}` : url; + + const { id, index } = MANIFESTS.find( + (item) => item.slug === params.slug + ) as any; + const manifest = (await fetch(id)) as Manifest; + + /** + * build the seo object + */ + const seo = await buildManifestSEO(manifest, `/works/${params.slug}`); + const related = FACETS.map((facet) => { + const value = shuffle( + facet.values.filter((entry) => entry.docs.includes(index)) + ); + return `${baseUrl}/api/facet/${facet.slug}/${value[0]?.slug}.json?sort=random`; + }); + + /** + * Find connected NextJS pages which reference this manifest + */ + const referencingContent = await getReferencingContent({ + manifestId: manifest.id, + // Directories in which to look for markdown files with frontmatter content + srcDir: ["content"], + }); + + /** + * scrub the manifest of any provider property + */ + delete manifest.provider; + + return { + props: { manifest, related, seo, referencingContent }, + }; +} + +export async function getStaticPaths() { + const paths = MANIFESTS.map((item) => ({ + params: { ...item }, + })); + + return { + paths: paths, + fallback: false, + }; +} diff --git a/src/pages/works/index.tsx b/src/pages/works/index.tsx new file mode 100644 index 0000000..d4cbea9 --- /dev/null +++ b/src/pages/works/index.tsx @@ -0,0 +1,8 @@ +import { useRouter } from "next/router"; +import React from "react"; + +export default function Works() { + const router = useRouter(); + router.push("/search"); + return <>>; +} diff --git a/src/styles/global.ts b/src/styles/global.ts new file mode 100644 index 0000000..ab8bd41 --- /dev/null +++ b/src/styles/global.ts @@ -0,0 +1,58 @@ +import { globalCss } from "@stitches/react"; + +export const rem = 17; +export const headerHeight = 59.5; + +const defaults = { + body: { + margin: 0, + padding: 0, + fontWeight: "400", + backgroundColor: "$slate1", + }, + + html: { + fontFamily: "$sans", + fontSize: `${17}px`, + fontWeight: "500", + fontSmooth: "always", + webKitFontSmothing: "antialiased", + mozOsxFontSmoth: "grayscale", + paddingTop: `${headerHeight}px`, + }, + + "a, a:visited": { + color: "$indigo11", + }, + + p: { + fontFamily: "$sans", + lineHeight: "1.55em", + }, + + "ul, ol": { + fontFamily: "$sans", + lineHeight: "1.55em", + + li: { + paddingBottom: "$gr1", + }, + }, + + dl: { + dt: { + fontWeight: "400", + }, + dd: { + marginInlineStart: "0", + paddingBottom: "$gr4", + lineHeight: "1.47em", + }, + }, +}; + +const globalStyles = globalCss({ + ...defaults, +}); + +export default globalStyles; diff --git a/src/styles/helpers/goldenRatio.ts b/src/styles/helpers/goldenRatio.ts new file mode 100644 index 0000000..8c38f53 --- /dev/null +++ b/src/styles/helpers/goldenRatio.ts @@ -0,0 +1 @@ +export const gr = (multiplier: number) => 1.618 ** multiplier; diff --git a/src/styles/stitches.ts b/src/styles/stitches.ts new file mode 100644 index 0000000..0cf2c42 --- /dev/null +++ b/src/styles/stitches.ts @@ -0,0 +1,30 @@ +import { + colors, + fontSizes, + fonts, + media, + sizes, + transitions, +} from "@styles/theme"; + +import { createStitches } from "@stitches/react"; + +export const theme = { + colors: { ...colors.light }, + fontSizes: { ...fontSizes }, + fonts: { ...fonts }, + sizes: { ...sizes }, + space: { ...sizes }, + transitions: { ...transitions }, +}; + +export const { styled, css, keyframes, createTheme } = createStitches({ + theme, + media, +}); + +export const darkTheme = createTheme({ + colors: { + ...colors.dark, + }, +}); diff --git a/src/styles/theme/colors.ts b/src/styles/theme/colors.ts new file mode 100644 index 0000000..aea6f7d --- /dev/null +++ b/src/styles/theme/colors.ts @@ -0,0 +1,43 @@ +import { + indigo, + indigoA, + indigoDark, + indigoDarkA, + slate, + slateA, + slateDark, + slateDarkA, +} from "@radix-ui/colors"; + +/** + * influence bloom-iiif color tokens + */ +const bloomDark = { + accent: `${indigoDark.indigo11} !important`, + accentAlt: `${indigoDark.indigo9} !important`, + secondary: `${indigoDark.indigo1} !important`, +}; + +const bloomLight = { + accent: `${indigo.indigo11} !important`, + accentAlt: `${indigo.indigo9} !important`, + secondary: `${indigo.indigo1} !important`, +}; + +const dark = { + ...indigoDark, + ...indigoDarkA, + ...slateDark, + ...slateDarkA, + ...bloomDark, +}; + +const light = { + ...indigo, + ...indigoA, + ...slate, + ...slateA, + ...bloomLight, +}; + +export { dark, light }; diff --git a/src/styles/theme/containers.ts b/src/styles/theme/containers.ts new file mode 100644 index 0000000..18aa427 --- /dev/null +++ b/src/styles/theme/containers.ts @@ -0,0 +1,4 @@ +export const maxWidths = { + default: "1200px", + wide: "1440px", +}; diff --git a/src/styles/theme/fontSizes.ts b/src/styles/theme/fontSizes.ts new file mode 100644 index 0000000..9ba557b --- /dev/null +++ b/src/styles/theme/fontSizes.ts @@ -0,0 +1,15 @@ +import { gr } from "../helpers/goldenRatio"; + +const sizes = { + gr1: "0.611rem", + gr2: "0.722rem", + gr3: "0.833rem", + gr4: "1rem", + gr5: `1.177rem`, + gr6: `1.318rem`, + gr7: `calc(1rem * ${gr(1)})`, + gr8: `calc(1rem * ${gr(2)})`, + gr9: `calc(1rem * ${gr(3)})`, +}; + +export default sizes; diff --git a/src/styles/theme/fonts.tsx b/src/styles/theme/fonts.tsx new file mode 100644 index 0000000..deb1a81 --- /dev/null +++ b/src/styles/theme/fonts.tsx @@ -0,0 +1,27 @@ +export const dm_sans = "DM Sans, sans-serif"; +export const dm_serif_display = "DM Serif Display, serif"; + +export const GoogleFontImport = () => ( + <> + + + + > +); + +const sans = `var(--canopy-sans-font)`; +const display = `var(--canopy-display-font)`; + +const fonts = { + sans, + display, +}; + +export default fonts; diff --git a/src/styles/theme/index.ts b/src/styles/theme/index.ts new file mode 100644 index 0000000..de81e87 --- /dev/null +++ b/src/styles/theme/index.ts @@ -0,0 +1,14 @@ +import { dark, light } from "./colors"; + +import fontSizes from "./fontSizes"; +import fonts from "./fonts.tsx"; +import media from "./media"; +import sizes from "./sizes"; +import transitions from "./transitions"; + +const colors = { + dark: { ...dark }, + light: { ...light }, +}; + +export { colors, fonts, fontSizes, media, sizes, transitions }; diff --git a/src/styles/theme/media.ts b/src/styles/theme/media.ts new file mode 100644 index 0000000..a256814 --- /dev/null +++ b/src/styles/theme/media.ts @@ -0,0 +1,20 @@ +export const width = { + xxs: 334, + xs: 575, + sm: 767, + md: 991, + lg: 1199, + xl: 1439, +}; + +const media = { + xxs: `(max-width: ${width.xxs}px)`, + xs: `(max-width: ${width.xs}px)`, + sm: `(max-width: ${width.sm}px)`, + md: `(max-width: ${width.md}px)`, + lg: `(max-width: ${width.lg}px)`, + xl: `(max-width: ${width.xl}px)`, + xxl: `(min-width: ${width.xl + 1}px)`, +}; + +export default media; diff --git a/src/styles/theme/sizes.ts b/src/styles/theme/sizes.ts new file mode 100644 index 0000000..f2004b7 --- /dev/null +++ b/src/styles/theme/sizes.ts @@ -0,0 +1,18 @@ +import { gr } from "../helpers/goldenRatio"; + +const sizes = { + gr1: `calc(1rem / ${gr(2)})`, // 7.25765912227px + gr2: `calc(1rem / ${gr(1)})`, // 11.7428924598px + gr3: `1rem`, // 19px (base rem) + gr4: `calc(1rem * ${gr(1)})`, // 30.742px + gr5: `calc(1rem * ${gr(2)})`, // 49.740556px + gr6: `calc(1rem * ${gr(3)})`, // 80.480219608px + gr7: `calc(1rem * ${gr(4)})`, + gr8: `calc(1rem * ${gr(5)})`, + gr9: `calc(1rem * ${gr(6)})`, + gr10: `calc(1rem * ${gr(7)})`, + gr11: `calc(1rem * ${gr(8)})`, + gr12: `calc(1rem * ${gr(9)})`, +}; + +export default sizes; diff --git a/src/styles/theme/transitions.ts b/src/styles/theme/transitions.ts new file mode 100644 index 0000000..51287c3 --- /dev/null +++ b/src/styles/theme/transitions.ts @@ -0,0 +1,12 @@ +import { gr } from "../helpers/goldenRatio"; + +const timingFunction = `cubic-bezier(0.1, 0.618, 0.382, 1.1)`; +const time = 250; + +const transitions = { + canopyAll: `all ${time}ms ${timingFunction}`, + canopyOpacity: `opacity ${time}ms ${timingFunction}`, + canopySlideIn: `right ${time * gr(2)}ms ${timingFunction}`, +}; + +export default transitions; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0327430 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "allowJs": true, + "allowImportingTsExtensions": true, + "baseUrl": ".", + "esModuleInterop": true, + "incremental": true, + "isolatedModules": true, + "jsx": "preserve", + "lib": ["dom", "dom.iterable", "esnext"], + "module": "esnext", + "moduleResolution": "node", + // "forceConsistentCasingInFileNames": true, + "noEmit": true, + "paths": { + "@*": ["*"], + "@components/*": ["src/components/*"], + "@config/*": ["config/*"], + "@content/*": ["content/*"], + "@context/*": ["src/context/*"], + "@customTypes/*": ["src/customTypes/*"], + "@hooks/*": ["src/hooks/*"], + "@lib/*": ["src/lib/*"], + "@pages/*": ["src/pages/*"], + "@styles/*": ["src/styles/*"] + }, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ESNext" + }, + "include": [ + "next-env.d.ts", + ".next/types/**/*.ts", + "**/*.ts", + "**/*.tsx", + "**/*.js", + "**/*.jsx", + "types.d.ts" + ], + "exclude": ["node_modules"] +} diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo new file mode 100644 index 0000000..58af8d3 --- /dev/null +++ b/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/future/route-kind.d.ts","./node_modules/next/dist/server/future/route-definitions/route-definition.d.ts","./node_modules/next/dist/server/future/route-matches/route-match.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/node-polyfill-fetch.d.ts","./node_modules/next/dist/server/node-polyfill-form.d.ts","./node_modules/next/dist/server/node-polyfill-web-streams.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/static-generation-async-storage.external.d.ts","./node_modules/next/dist/server/pipe-readable.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/future/helpers/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/server/send-payload/revalidate-headers.d.ts","./node_modules/next/dist/server/send-payload/index.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/font-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/server/future/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/server/future/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/future/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/future/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/future/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/future/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/future/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/future/normalizers/normalizer.d.ts","./node_modules/next/dist/server/future/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/types/index.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate-path.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/shared/lib/runtime-config.external.d.ts","./node_modules/next/config.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/compiled/@vercel/og/index.node.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./next-env.d.ts","./canopy.ts","./global.d.ts","./node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts","./node_modules/@types/istanbul-lib-coverage/index.d.ts","./node_modules/@jest/types/node_modules/chalk/index.d.ts","./node_modules/@types/istanbul-lib-report/index.d.ts","./node_modules/@types/istanbul-reports/index.d.ts","./node_modules/@sinclair/typebox/typebox.d.ts","./node_modules/@jest/schemas/build/index.d.ts","./node_modules/@jest/types/build/index.d.ts","./node_modules/next/dist/build/jest/jest.d.ts","./node_modules/next/jest.d.ts","./jest.config.next.ts","./jest.config.ts","./node_modules/@jest/expect-utils/build/index.d.ts","./node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","./node_modules/jest-diff/node_modules/pretty-format/build/index.d.ts","./node_modules/jest-diff/build/index.d.ts","./node_modules/jest-matcher-utils/build/index.d.ts","./node_modules/expect/build/index.d.ts","./node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","./node_modules/@types/jest/index.d.ts","./node_modules/@testing-library/jest-dom/types/matchers.d.ts","./node_modules/@testing-library/jest-dom/types/jest.d.ts","./node_modules/@testing-library/jest-dom/types/index.d.ts","./jest.setup.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@vitest/utils/dist/types.d.ts","./node_modules/@vitest/utils/dist/helpers.d.ts","./node_modules/@vitest/utils/node_modules/pretty-format/build/index.d.ts","./node_modules/@vitest/utils/dist/index.d.ts","./node_modules/@vitest/runner/dist/tasks-e594cd24.d.ts","./node_modules/@vitest/runner/dist/types.d.ts","./node_modules/@vitest/runner/dist/index.d.ts","./node_modules/vite-node/dist/trace-mapping.d-e677e8f4.d.ts","./node_modules/vite-node/dist/index-6fb787b2.d.ts","./node_modules/vite-node/dist/index.d.ts","./node_modules/@vitest/snapshot/node_modules/pretty-format/build/index.d.ts","./node_modules/@vitest/snapshot/dist/environment-b0891b0a.d.ts","./node_modules/@vitest/snapshot/dist/index-69d272f6.d.ts","./node_modules/@vitest/snapshot/dist/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@vitest/utils/dist/types-f5c02aaf.d.ts","./node_modules/@vitest/utils/dist/diff.d.ts","./node_modules/@vitest/utils/diff.d.ts","./node_modules/@vitest/expect/dist/index.d.ts","./node_modules/@vitest/runner/dist/utils.d.ts","./node_modules/@vitest/runner/utils.d.ts","./node_modules/tinybench/dist/index.d.ts","./node_modules/vite-node/dist/client.d.ts","./node_modules/@vitest/snapshot/dist/manager.d.ts","./node_modules/@vitest/snapshot/manager.d.ts","./node_modules/vite-node/dist/server.d.ts","./node_modules/vitest/dist/reporters-5f784f42.d.ts","./node_modules/vitest/dist/config.d.ts","./node_modules/vitest/config.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@vitejs/plugin-react/dist/index.d.ts","./vitest.config.ts","./node_modules/tinyspy/dist/index.d.ts","./node_modules/@vitest/spy/dist/index.d.ts","./node_modules/@vitest/snapshot/dist/environment.d.ts","./node_modules/@vitest/snapshot/environment.d.ts","./node_modules/vitest/dist/index.d.ts","./vitest.setup.ts","./node_modules/@radix-ui/colors/types/dark/amber.d.ts","./node_modules/@radix-ui/colors/types/dark/blue.d.ts","./node_modules/@radix-ui/colors/types/dark/bronze.d.ts","./node_modules/@radix-ui/colors/types/dark/brown.d.ts","./node_modules/@radix-ui/colors/types/dark/crimson.d.ts","./node_modules/@radix-ui/colors/types/dark/cyan.d.ts","./node_modules/@radix-ui/colors/types/dark/gold.d.ts","./node_modules/@radix-ui/colors/types/dark/grass.d.ts","./node_modules/@radix-ui/colors/types/dark/gray.d.ts","./node_modules/@radix-ui/colors/types/dark/green.d.ts","./node_modules/@radix-ui/colors/types/dark/indigo.d.ts","./node_modules/@radix-ui/colors/types/dark/lime.d.ts","./node_modules/@radix-ui/colors/types/dark/mint.d.ts","./node_modules/@radix-ui/colors/types/dark/olive.d.ts","./node_modules/@radix-ui/colors/types/dark/orange.d.ts","./node_modules/@radix-ui/colors/types/dark/pink.d.ts","./node_modules/@radix-ui/colors/types/dark/plum.d.ts","./node_modules/@radix-ui/colors/types/dark/purple.d.ts","./node_modules/@radix-ui/colors/types/dark/mauve.d.ts","./node_modules/@radix-ui/colors/types/dark/red.d.ts","./node_modules/@radix-ui/colors/types/dark/sage.d.ts","./node_modules/@radix-ui/colors/types/dark/sand.d.ts","./node_modules/@radix-ui/colors/types/dark/sky.d.ts","./node_modules/@radix-ui/colors/types/dark/slate.d.ts","./node_modules/@radix-ui/colors/types/dark/teal.d.ts","./node_modules/@radix-ui/colors/types/dark/tomato.d.ts","./node_modules/@radix-ui/colors/types/dark/violet.d.ts","./node_modules/@radix-ui/colors/types/dark/yellow.d.ts","./node_modules/@radix-ui/colors/types/dark/ambera.d.ts","./node_modules/@radix-ui/colors/types/dark/bluea.d.ts","./node_modules/@radix-ui/colors/types/dark/bronzea.d.ts","./node_modules/@radix-ui/colors/types/dark/browna.d.ts","./node_modules/@radix-ui/colors/types/dark/crimsona.d.ts","./node_modules/@radix-ui/colors/types/dark/cyana.d.ts","./node_modules/@radix-ui/colors/types/dark/golda.d.ts","./node_modules/@radix-ui/colors/types/dark/grassa.d.ts","./node_modules/@radix-ui/colors/types/dark/graya.d.ts","./node_modules/@radix-ui/colors/types/dark/greena.d.ts","./node_modules/@radix-ui/colors/types/dark/indigoa.d.ts","./node_modules/@radix-ui/colors/types/dark/limea.d.ts","./node_modules/@radix-ui/colors/types/dark/minta.d.ts","./node_modules/@radix-ui/colors/types/dark/olivea.d.ts","./node_modules/@radix-ui/colors/types/dark/orangea.d.ts","./node_modules/@radix-ui/colors/types/dark/pinka.d.ts","./node_modules/@radix-ui/colors/types/dark/pluma.d.ts","./node_modules/@radix-ui/colors/types/dark/purplea.d.ts","./node_modules/@radix-ui/colors/types/dark/mauvea.d.ts","./node_modules/@radix-ui/colors/types/dark/reda.d.ts","./node_modules/@radix-ui/colors/types/dark/sagea.d.ts","./node_modules/@radix-ui/colors/types/dark/sanda.d.ts","./node_modules/@radix-ui/colors/types/dark/skya.d.ts","./node_modules/@radix-ui/colors/types/dark/slatea.d.ts","./node_modules/@radix-ui/colors/types/dark/teala.d.ts","./node_modules/@radix-ui/colors/types/dark/tomatoa.d.ts","./node_modules/@radix-ui/colors/types/dark/violeta.d.ts","./node_modules/@radix-ui/colors/types/dark/yellowa.d.ts","./node_modules/@radix-ui/colors/types/dark/index.d.ts","./node_modules/@radix-ui/colors/types/light/amber.d.ts","./node_modules/@radix-ui/colors/types/light/blue.d.ts","./node_modules/@radix-ui/colors/types/light/bronze.d.ts","./node_modules/@radix-ui/colors/types/light/brown.d.ts","./node_modules/@radix-ui/colors/types/light/crimson.d.ts","./node_modules/@radix-ui/colors/types/light/cyan.d.ts","./node_modules/@radix-ui/colors/types/light/gold.d.ts","./node_modules/@radix-ui/colors/types/light/grass.d.ts","./node_modules/@radix-ui/colors/types/light/gray.d.ts","./node_modules/@radix-ui/colors/types/light/green.d.ts","./node_modules/@radix-ui/colors/types/light/indigo.d.ts","./node_modules/@radix-ui/colors/types/light/lime.d.ts","./node_modules/@radix-ui/colors/types/light/mint.d.ts","./node_modules/@radix-ui/colors/types/light/olive.d.ts","./node_modules/@radix-ui/colors/types/light/orange.d.ts","./node_modules/@radix-ui/colors/types/light/pink.d.ts","./node_modules/@radix-ui/colors/types/light/plum.d.ts","./node_modules/@radix-ui/colors/types/light/purple.d.ts","./node_modules/@radix-ui/colors/types/light/mauve.d.ts","./node_modules/@radix-ui/colors/types/light/red.d.ts","./node_modules/@radix-ui/colors/types/light/sage.d.ts","./node_modules/@radix-ui/colors/types/light/sand.d.ts","./node_modules/@radix-ui/colors/types/light/sky.d.ts","./node_modules/@radix-ui/colors/types/light/slate.d.ts","./node_modules/@radix-ui/colors/types/light/teal.d.ts","./node_modules/@radix-ui/colors/types/light/tomato.d.ts","./node_modules/@radix-ui/colors/types/light/violet.d.ts","./node_modules/@radix-ui/colors/types/light/yellow.d.ts","./node_modules/@radix-ui/colors/types/light/ambera.d.ts","./node_modules/@radix-ui/colors/types/light/bluea.d.ts","./node_modules/@radix-ui/colors/types/light/bronzea.d.ts","./node_modules/@radix-ui/colors/types/light/browna.d.ts","./node_modules/@radix-ui/colors/types/light/crimsona.d.ts","./node_modules/@radix-ui/colors/types/light/cyana.d.ts","./node_modules/@radix-ui/colors/types/light/golda.d.ts","./node_modules/@radix-ui/colors/types/light/grassa.d.ts","./node_modules/@radix-ui/colors/types/light/graya.d.ts","./node_modules/@radix-ui/colors/types/light/greena.d.ts","./node_modules/@radix-ui/colors/types/light/indigoa.d.ts","./node_modules/@radix-ui/colors/types/light/limea.d.ts","./node_modules/@radix-ui/colors/types/light/minta.d.ts","./node_modules/@radix-ui/colors/types/light/olivea.d.ts","./node_modules/@radix-ui/colors/types/light/orangea.d.ts","./node_modules/@radix-ui/colors/types/light/pinka.d.ts","./node_modules/@radix-ui/colors/types/light/pluma.d.ts","./node_modules/@radix-ui/colors/types/light/purplea.d.ts","./node_modules/@radix-ui/colors/types/light/mauvea.d.ts","./node_modules/@radix-ui/colors/types/light/reda.d.ts","./node_modules/@radix-ui/colors/types/light/sagea.d.ts","./node_modules/@radix-ui/colors/types/light/sanda.d.ts","./node_modules/@radix-ui/colors/types/light/skya.d.ts","./node_modules/@radix-ui/colors/types/light/slatea.d.ts","./node_modules/@radix-ui/colors/types/light/teala.d.ts","./node_modules/@radix-ui/colors/types/light/tomatoa.d.ts","./node_modules/@radix-ui/colors/types/light/violeta.d.ts","./node_modules/@radix-ui/colors/types/light/yellowa.d.ts","./node_modules/@radix-ui/colors/types/light/index.d.ts","./node_modules/@radix-ui/colors/types/blacka.d.ts","./node_modules/@radix-ui/colors/types/whitea.d.ts","./node_modules/@radix-ui/colors/types/index.d.ts","./src/styles/theme/colors.ts","./src/styles/helpers/goldenratio.ts","./src/styles/theme/fontsizes.ts","./src/styles/theme/fonts.tsx","./src/styles/theme/media.ts","./src/styles/theme/sizes.ts","./src/styles/theme/transitions.ts","./src/styles/theme/index.ts","./node_modules/@stitches/react/types/css.d.ts","./node_modules/@stitches/react/types/config.d.ts","./node_modules/@stitches/react/types/theme.d.ts","./node_modules/@stitches/react/types/util.d.ts","./node_modules/@stitches/react/types/css-util.d.ts","./node_modules/@stitches/react/types/styled-component.d.ts","./node_modules/@stitches/react/types/stitches.d.ts","./node_modules/@stitches/react/types/index.d.ts","./src/styles/stitches.ts","./src/components/card/card.styled.ts","./node_modules/@radix-ui/react-primitive/dist/index.d.ts","./node_modules/@radix-ui/react-dismissable-layer/dist/index.d.ts","./node_modules/@radix-ui/react-focus-scope/dist/index.d.ts","./node_modules/@radix-ui/react-portal/dist/index.d.ts","./node_modules/@radix-ui/react-context/dist/index.d.ts","./node_modules/@radix-ui/react-dialog/dist/index.d.ts","./src/components/facets/activate.styled.ts","./node_modules/@radix-ui/react-collapsible/dist/index.d.ts","./node_modules/@radix-ui/react-accordion/dist/index.d.ts","./src/components/facets/facet.styled.ts","./src/components/facets/facets.styled.ts","./src/styles/theme/containers.ts","./src/components/facets/modal.styled.ts","./node_modules/@radix-ui/react-checkbox/dist/index.d.ts","./src/components/facets/option.styled.ts","./src/components/figure/figure.styled.ts","./src/components/footer/footer.styled.ts","./node_modules/react-masonry-css/index.d.ts","./src/components/grid/grid.styled.ts","./src/components/shared/container.tsx","./src/components/hero/hero.styled.ts","./src/components/layouts/referencedworks.styled.ts","./src/components/nav/nav.styled.ts","./src/components/related/related.styled.ts","./src/components/search/header.styled.ts","./src/components/search/search.styled.ts","./src/styles/global.ts","./src/components/shared/content.styled.ts","./src/components/shared/definitionlist.styled.ts","./src/components/shared/button/button.styled.ts","./src/components/shared/code/code.styled.ts","./node_modules/prism-react-renderer/index.d.ts","./src/components/shared/code/prism-helpers.ts","./src/components/shared/heading/heading.styled.ts","./src/components/shared/locale/locale.styled.ts","./src/components/viewer/slider.styled.ts","./src/components/work/inner.styled.ts","./node_modules/@types/geojson/index.d.ts","./node_modules/@iiif/presentation-3/dist/presentation-3.d.ts","./src/customtypes/canopy.ts","./src/customtypes/index.ts","./src/customtypes/navigation.ts","./src/customtypes/referencedworks.ts","./src/customtypes/build/index.ts","./src/customtypes/context/canopy.ts","./src/customtypes/context/facets.ts","./src/customtypes/search/search.ts","./src/hooks/getlabel.ts","./src/hooks/getresourceimage.ts","./src/hooks/getvalues.ts","./src/hooks/sortitems.ts","./src/hooks/useelementposition.ts","./src/context/canopy.tsx","./src/hooks/uselocale.ts","./src/lib/search/response.ts","./.canopy/facets.json","./src/lib/facet/facets.ts","./.canopy/index.json","./.canopy/manifests.json","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/flexsearch/index.d.ts","./src/lib/search/documents.ts","./src/lib/search/results.ts","./src/lib/search/request.ts","./src/hooks/usepageresults.ts","./src/lib/option.ts","./src/lib/iiif/label.js","./src/lib/utils.ts","./src/lib/seo.ts","./config/.default/canopy.default.json","./src/lib/build/config.test.ts","./src/lib/build/config.ts","./.canopy/collections.json","./src/lib/constants/canopy.ts","./src/lib/iiif/navplace.ts","./src/lib/iiif/constructors/related.ts","./src/lib/referenceditems/client/index.ts","./node_modules/gray-matter/gray-matter.d.ts","./src/lib/referenceditems/server/index.ts","./src/mocks/next-font.ts","./node_modules/next-absolute-url/index.ts","./src/pages/api/info.ts","./src/pages/api/search.ts","./src/pages/api/facet/[label]/[value].ts","./src/pages/api/facet/[label]/index.ts","./src/components/shared/markdown/blockquote.tsx","./node_modules/@radix-ui/react-icons/dist/types.d.ts","./node_modules/@radix-ui/react-icons/dist/accessibilityicon.d.ts","./node_modules/@radix-ui/react-icons/dist/activitylogicon.d.ts","./node_modules/@radix-ui/react-icons/dist/alignbaselineicon.d.ts","./node_modules/@radix-ui/react-icons/dist/alignbottomicon.d.ts","./node_modules/@radix-ui/react-icons/dist/aligncenterhorizontallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/aligncenterverticallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/alignlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/alignrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/aligntopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/allsidesicon.d.ts","./node_modules/@radix-ui/react-icons/dist/angleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/archiveicon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowbottomlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowbottomrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowdownicon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowtoplefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowtoprighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/arrowupicon.d.ts","./node_modules/@radix-ui/react-icons/dist/aspectratioicon.d.ts","./node_modules/@radix-ui/react-icons/dist/avataricon.d.ts","./node_modules/@radix-ui/react-icons/dist/backpackicon.d.ts","./node_modules/@radix-ui/react-icons/dist/badgeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/barcharticon.d.ts","./node_modules/@radix-ui/react-icons/dist/bellicon.d.ts","./node_modules/@radix-ui/react-icons/dist/blendingmodeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/bookmarkicon.d.ts","./node_modules/@radix-ui/react-icons/dist/bookmarkfilledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderallicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderbottomicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderdashedicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderdottedicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/bordernoneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/bordersolidicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderspliticon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderstyleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/bordertopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/borderwidthicon.d.ts","./node_modules/@radix-ui/react-icons/dist/boxicon.d.ts","./node_modules/@radix-ui/react-icons/dist/boxmodelicon.d.ts","./node_modules/@radix-ui/react-icons/dist/buttonicon.d.ts","./node_modules/@radix-ui/react-icons/dist/calendaricon.d.ts","./node_modules/@radix-ui/react-icons/dist/cameraicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cardstackicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cardstackminusicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cardstackplusicon.d.ts","./node_modules/@radix-ui/react-icons/dist/caretdownicon.d.ts","./node_modules/@radix-ui/react-icons/dist/caretlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/caretrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/caretsorticon.d.ts","./node_modules/@radix-ui/react-icons/dist/caretupicon.d.ts","./node_modules/@radix-ui/react-icons/dist/chatbubbleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/checkicon.d.ts","./node_modules/@radix-ui/react-icons/dist/checkcircledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/checkboxicon.d.ts","./node_modules/@radix-ui/react-icons/dist/chevrondownicon.d.ts","./node_modules/@radix-ui/react-icons/dist/chevronlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/chevronrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/chevronupicon.d.ts","./node_modules/@radix-ui/react-icons/dist/circleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/circlebackslashicon.d.ts","./node_modules/@radix-ui/react-icons/dist/clipboardicon.d.ts","./node_modules/@radix-ui/react-icons/dist/clipboardcopyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/clockicon.d.ts","./node_modules/@radix-ui/react-icons/dist/codeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/codesandboxlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/colorwheelicon.d.ts","./node_modules/@radix-ui/react-icons/dist/columnspacingicon.d.ts","./node_modules/@radix-ui/react-icons/dist/columnsicon.d.ts","./node_modules/@radix-ui/react-icons/dist/commiticon.d.ts","./node_modules/@radix-ui/react-icons/dist/component1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/component2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/componentbooleanicon.d.ts","./node_modules/@radix-ui/react-icons/dist/componentinstanceicon.d.ts","./node_modules/@radix-ui/react-icons/dist/componentnoneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/componentplaceholdericon.d.ts","./node_modules/@radix-ui/react-icons/dist/containericon.d.ts","./node_modules/@radix-ui/react-icons/dist/cookieicon.d.ts","./node_modules/@radix-ui/react-icons/dist/copyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cornerbottomlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/cornerbottomrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/cornertoplefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/cornertoprighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/cornersicon.d.ts","./node_modules/@radix-ui/react-icons/dist/countdowntimericon.d.ts","./node_modules/@radix-ui/react-icons/dist/counterclockwiseclockicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cropicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cross1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/cross2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/crosscircledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/crosshair1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/crosshair2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/crumpledpapericon.d.ts","./node_modules/@radix-ui/react-icons/dist/cubeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cursorarrowicon.d.ts","./node_modules/@radix-ui/react-icons/dist/cursortexticon.d.ts","./node_modules/@radix-ui/react-icons/dist/dashicon.d.ts","./node_modules/@radix-ui/react-icons/dist/dashboardicon.d.ts","./node_modules/@radix-ui/react-icons/dist/desktopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/dimensionsicon.d.ts","./node_modules/@radix-ui/react-icons/dist/discicon.d.ts","./node_modules/@radix-ui/react-icons/dist/discordlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/dividerhorizontalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/dividerverticalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/doticon.d.ts","./node_modules/@radix-ui/react-icons/dist/dotfilledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/dotshorizontalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/dotsverticalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/doublearrowdownicon.d.ts","./node_modules/@radix-ui/react-icons/dist/doublearrowlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/doublearrowrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/doublearrowupicon.d.ts","./node_modules/@radix-ui/react-icons/dist/downloadicon.d.ts","./node_modules/@radix-ui/react-icons/dist/draghandledots1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/draghandledots2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/draghandlehorizontalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/draghandleverticalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/drawingpinicon.d.ts","./node_modules/@radix-ui/react-icons/dist/drawingpinfilledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/dropdownmenuicon.d.ts","./node_modules/@radix-ui/react-icons/dist/entericon.d.ts","./node_modules/@radix-ui/react-icons/dist/enterfullscreenicon.d.ts","./node_modules/@radix-ui/react-icons/dist/envelopeclosedicon.d.ts","./node_modules/@radix-ui/react-icons/dist/envelopeopenicon.d.ts","./node_modules/@radix-ui/react-icons/dist/erasericon.d.ts","./node_modules/@radix-ui/react-icons/dist/exclamationtriangleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/exiticon.d.ts","./node_modules/@radix-ui/react-icons/dist/exitfullscreenicon.d.ts","./node_modules/@radix-ui/react-icons/dist/externallinkicon.d.ts","./node_modules/@radix-ui/react-icons/dist/eyeclosedicon.d.ts","./node_modules/@radix-ui/react-icons/dist/eyenoneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/eyeopenicon.d.ts","./node_modules/@radix-ui/react-icons/dist/faceicon.d.ts","./node_modules/@radix-ui/react-icons/dist/figmalogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fileicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fileminusicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fileplusicon.d.ts","./node_modules/@radix-ui/react-icons/dist/filetexticon.d.ts","./node_modules/@radix-ui/react-icons/dist/fontboldicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fontfamilyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fontitalicicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fontromanicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fontsizeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/fontstyleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/frameicon.d.ts","./node_modules/@radix-ui/react-icons/dist/framerlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/gearicon.d.ts","./node_modules/@radix-ui/react-icons/dist/githublogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/globeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/gridicon.d.ts","./node_modules/@radix-ui/react-icons/dist/groupicon.d.ts","./node_modules/@radix-ui/react-icons/dist/half1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/half2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/hamburgermenuicon.d.ts","./node_modules/@radix-ui/react-icons/dist/handicon.d.ts","./node_modules/@radix-ui/react-icons/dist/headingicon.d.ts","./node_modules/@radix-ui/react-icons/dist/hearticon.d.ts","./node_modules/@radix-ui/react-icons/dist/heartfilledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/heighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/hobbyknifeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/homeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/iconjarlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/idcardicon.d.ts","./node_modules/@radix-ui/react-icons/dist/imageicon.d.ts","./node_modules/@radix-ui/react-icons/dist/infocircledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/inputicon.d.ts","./node_modules/@radix-ui/react-icons/dist/instagramlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/keyboardicon.d.ts","./node_modules/@radix-ui/react-icons/dist/laptimericon.d.ts","./node_modules/@radix-ui/react-icons/dist/laptopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/layersicon.d.ts","./node_modules/@radix-ui/react-icons/dist/layouticon.d.ts","./node_modules/@radix-ui/react-icons/dist/lettercasecapitalizeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/lettercaselowercaseicon.d.ts","./node_modules/@radix-ui/react-icons/dist/lettercasetoggleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/lettercaseuppercaseicon.d.ts","./node_modules/@radix-ui/react-icons/dist/letterspacingicon.d.ts","./node_modules/@radix-ui/react-icons/dist/lightningbolticon.d.ts","./node_modules/@radix-ui/react-icons/dist/lineheighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/link1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/link2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/linkbreak1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/linkbreak2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/linknone1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/linknone2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/linkedinlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/listbulleticon.d.ts","./node_modules/@radix-ui/react-icons/dist/lockclosedicon.d.ts","./node_modules/@radix-ui/react-icons/dist/lockopen1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/lockopen2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/loopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/magicwandicon.d.ts","./node_modules/@radix-ui/react-icons/dist/magnifyingglassicon.d.ts","./node_modules/@radix-ui/react-icons/dist/marginicon.d.ts","./node_modules/@radix-ui/react-icons/dist/maskofficon.d.ts","./node_modules/@radix-ui/react-icons/dist/maskonicon.d.ts","./node_modules/@radix-ui/react-icons/dist/minusicon.d.ts","./node_modules/@radix-ui/react-icons/dist/minuscircledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/mixicon.d.ts","./node_modules/@radix-ui/react-icons/dist/mixerhorizontalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/mixerverticalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/mobileicon.d.ts","./node_modules/@radix-ui/react-icons/dist/modulzlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/moonicon.d.ts","./node_modules/@radix-ui/react-icons/dist/moveicon.d.ts","./node_modules/@radix-ui/react-icons/dist/notionlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/opacityicon.d.ts","./node_modules/@radix-ui/react-icons/dist/openinnewwindowicon.d.ts","./node_modules/@radix-ui/react-icons/dist/overlineicon.d.ts","./node_modules/@radix-ui/react-icons/dist/paddingicon.d.ts","./node_modules/@radix-ui/react-icons/dist/paperplaneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/pauseicon.d.ts","./node_modules/@radix-ui/react-icons/dist/pencil1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/pencil2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/personicon.d.ts","./node_modules/@radix-ui/react-icons/dist/piecharticon.d.ts","./node_modules/@radix-ui/react-icons/dist/pilcrowicon.d.ts","./node_modules/@radix-ui/react-icons/dist/pinbottomicon.d.ts","./node_modules/@radix-ui/react-icons/dist/pinlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/pinrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/pintopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/playicon.d.ts","./node_modules/@radix-ui/react-icons/dist/plusicon.d.ts","./node_modules/@radix-ui/react-icons/dist/pluscircledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/questionmarkicon.d.ts","./node_modules/@radix-ui/react-icons/dist/questionmarkcircledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/quoteicon.d.ts","./node_modules/@radix-ui/react-icons/dist/radiobuttonicon.d.ts","./node_modules/@radix-ui/react-icons/dist/readericon.d.ts","./node_modules/@radix-ui/react-icons/dist/reloadicon.d.ts","./node_modules/@radix-ui/react-icons/dist/reseticon.d.ts","./node_modules/@radix-ui/react-icons/dist/resumeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/rocketicon.d.ts","./node_modules/@radix-ui/react-icons/dist/rotatecounterclockwiseicon.d.ts","./node_modules/@radix-ui/react-icons/dist/rowspacingicon.d.ts","./node_modules/@radix-ui/react-icons/dist/rowsicon.d.ts","./node_modules/@radix-ui/react-icons/dist/rulerhorizontalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/rulersquareicon.d.ts","./node_modules/@radix-ui/react-icons/dist/scissorsicon.d.ts","./node_modules/@radix-ui/react-icons/dist/sectionicon.d.ts","./node_modules/@radix-ui/react-icons/dist/sewingpinicon.d.ts","./node_modules/@radix-ui/react-icons/dist/sewingpinfilledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/shadowicon.d.ts","./node_modules/@radix-ui/react-icons/dist/shadowinnericon.d.ts","./node_modules/@radix-ui/react-icons/dist/shadownoneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/shadowoutericon.d.ts","./node_modules/@radix-ui/react-icons/dist/share1icon.d.ts","./node_modules/@radix-ui/react-icons/dist/share2icon.d.ts","./node_modules/@radix-ui/react-icons/dist/shuffleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/sizeicon.d.ts","./node_modules/@radix-ui/react-icons/dist/sketchlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/slashicon.d.ts","./node_modules/@radix-ui/react-icons/dist/slidericon.d.ts","./node_modules/@radix-ui/react-icons/dist/spacebetweenhorizontallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/spacebetweenverticallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/spaceevenlyhorizontallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/spaceevenlyverticallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/speakerloudicon.d.ts","./node_modules/@radix-ui/react-icons/dist/speakermoderateicon.d.ts","./node_modules/@radix-ui/react-icons/dist/speakerofficon.d.ts","./node_modules/@radix-ui/react-icons/dist/speakerquieticon.d.ts","./node_modules/@radix-ui/react-icons/dist/squareicon.d.ts","./node_modules/@radix-ui/react-icons/dist/stackicon.d.ts","./node_modules/@radix-ui/react-icons/dist/staricon.d.ts","./node_modules/@radix-ui/react-icons/dist/starfilledicon.d.ts","./node_modules/@radix-ui/react-icons/dist/stitcheslogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/stopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/stopwatchicon.d.ts","./node_modules/@radix-ui/react-icons/dist/stretchhorizontallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/stretchverticallyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/strikethroughicon.d.ts","./node_modules/@radix-ui/react-icons/dist/sunicon.d.ts","./node_modules/@radix-ui/react-icons/dist/switchicon.d.ts","./node_modules/@radix-ui/react-icons/dist/symbolicon.d.ts","./node_modules/@radix-ui/react-icons/dist/tableicon.d.ts","./node_modules/@radix-ui/react-icons/dist/targeticon.d.ts","./node_modules/@radix-ui/react-icons/dist/texticon.d.ts","./node_modules/@radix-ui/react-icons/dist/textalignbottomicon.d.ts","./node_modules/@radix-ui/react-icons/dist/textaligncentericon.d.ts","./node_modules/@radix-ui/react-icons/dist/textalignjustifyicon.d.ts","./node_modules/@radix-ui/react-icons/dist/textalignlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/textalignmiddleicon.d.ts","./node_modules/@radix-ui/react-icons/dist/textalignrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/textaligntopicon.d.ts","./node_modules/@radix-ui/react-icons/dist/textnoneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/thickarrowdownicon.d.ts","./node_modules/@radix-ui/react-icons/dist/thickarrowlefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/thickarrowrighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/thickarrowupicon.d.ts","./node_modules/@radix-ui/react-icons/dist/timericon.d.ts","./node_modules/@radix-ui/react-icons/dist/tokensicon.d.ts","./node_modules/@radix-ui/react-icons/dist/tracknexticon.d.ts","./node_modules/@radix-ui/react-icons/dist/trackpreviousicon.d.ts","./node_modules/@radix-ui/react-icons/dist/transformicon.d.ts","./node_modules/@radix-ui/react-icons/dist/transparencygridicon.d.ts","./node_modules/@radix-ui/react-icons/dist/trashicon.d.ts","./node_modules/@radix-ui/react-icons/dist/triangledownicon.d.ts","./node_modules/@radix-ui/react-icons/dist/trianglelefticon.d.ts","./node_modules/@radix-ui/react-icons/dist/trianglerighticon.d.ts","./node_modules/@radix-ui/react-icons/dist/triangleupicon.d.ts","./node_modules/@radix-ui/react-icons/dist/twitterlogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/underlineicon.d.ts","./node_modules/@radix-ui/react-icons/dist/updateicon.d.ts","./node_modules/@radix-ui/react-icons/dist/uploadicon.d.ts","./node_modules/@radix-ui/react-icons/dist/valueicon.d.ts","./node_modules/@radix-ui/react-icons/dist/valuenoneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/vercellogoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/videoicon.d.ts","./node_modules/@radix-ui/react-icons/dist/viewgridicon.d.ts","./node_modules/@radix-ui/react-icons/dist/viewhorizontalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/viewnoneicon.d.ts","./node_modules/@radix-ui/react-icons/dist/viewverticalicon.d.ts","./node_modules/@radix-ui/react-icons/dist/widthicon.d.ts","./node_modules/@radix-ui/react-icons/dist/zoominicon.d.ts","./node_modules/@radix-ui/react-icons/dist/zoomouticon.d.ts","./node_modules/@radix-ui/react-icons/dist/index.d.ts","./node_modules/copy-to-clipboard/index.d.ts","./src/components/shared/code/code.tsx","./src/components/shared/heading/heading.tsx","./node_modules/@types/mdx/types.d.ts","./node_modules/slugify/slugify.d.ts","./src/lib/build/slug.js","./mdx-components.tsx","./src/components/svg/iiif.tsx","./node_modules/next-themes/dist/types.d.ts","./node_modules/next-themes/dist/index.d.ts","./src/components/footer/thememode.tsx","./src/components/footer/footer.tsx","./src/components/header/header.styled.tsx","./src/components/shared/locale/locale.tsx","./src/components/nav/itemslink.tsx","./src/components/nav/items.tsx","./src/components/nav/nav.tsx","./src/components/search/search.tsx","./src/components/header/header.tsx","./src/components/shared/main.tsx","./src/components/layout.tsx","./node_modules/@types/aria-query/index.d.ts","./node_modules/@testing-library/dom/types/matches.d.ts","./node_modules/@testing-library/dom/types/wait-for.d.ts","./node_modules/@testing-library/dom/types/query-helpers.d.ts","./node_modules/@testing-library/dom/types/queries.d.ts","./node_modules/@testing-library/dom/types/get-queries-for-element.d.ts","./node_modules/pretty-format/build/types.d.ts","./node_modules/pretty-format/build/index.d.ts","./node_modules/@testing-library/dom/types/screen.d.ts","./node_modules/@testing-library/dom/types/wait-for-element-to-be-removed.d.ts","./node_modules/@testing-library/dom/types/get-node-text.d.ts","./node_modules/@testing-library/dom/types/events.d.ts","./node_modules/@testing-library/dom/types/pretty-dom.d.ts","./node_modules/@testing-library/dom/types/role-helpers.d.ts","./node_modules/@testing-library/dom/types/config.d.ts","./node_modules/@testing-library/dom/types/suggestions.d.ts","./node_modules/@testing-library/dom/types/index.d.ts","./node_modules/@types/react-dom/test-utils/index.d.ts","./node_modules/@testing-library/react/types/index.d.ts","./node_modules/@radix-ui/react-aspect-ratio/dist/index.d.ts","./node_modules/framer-motion/dist/index.d.ts","./node_modules/clsx/clsx.d.ts","./src/components/figure/figure.tsx","./node_modules/react-intersection-observer/index.d.ts","./src/components/card/card.tsx","./src/components/card/card.test.tsx","./src/components/embed/card.tsx","./node_modules/swiper/types/shared.d.ts","./node_modules/swiper/types/modules/a11y.d.ts","./node_modules/swiper/types/modules/autoplay.d.ts","./node_modules/swiper/types/modules/controller.d.ts","./node_modules/swiper/types/modules/effect-coverflow.d.ts","./node_modules/swiper/types/modules/effect-cube.d.ts","./node_modules/swiper/types/modules/effect-fade.d.ts","./node_modules/swiper/types/modules/effect-flip.d.ts","./node_modules/swiper/types/modules/effect-creative.d.ts","./node_modules/swiper/types/modules/effect-cards.d.ts","./node_modules/swiper/types/modules/hash-navigation.d.ts","./node_modules/swiper/types/modules/history.d.ts","./node_modules/swiper/types/modules/keyboard.d.ts","./node_modules/swiper/types/modules/mousewheel.d.ts","./node_modules/swiper/types/modules/navigation.d.ts","./node_modules/swiper/types/modules/pagination.d.ts","./node_modules/swiper/types/modules/parallax.d.ts","./node_modules/swiper/types/modules/scrollbar.d.ts","./node_modules/swiper/types/modules/thumbs.d.ts","./node_modules/swiper/types/modules/virtual.d.ts","./node_modules/swiper/types/modules/zoom.d.ts","./node_modules/swiper/types/modules/free-mode.d.ts","./node_modules/swiper/types/modules/grid.d.ts","./node_modules/swiper/types/swiper-events.d.ts","./node_modules/swiper/types/swiper-options.d.ts","./node_modules/swiper/types/modules/manipulation.d.ts","./node_modules/swiper/types/swiper-class.d.ts","./node_modules/swiper/types/modules/public-api.d.ts","./node_modules/swiper/types/index.d.ts","./node_modules/swiper/react/swiper-react.d.ts","./src/components/viewer/slider.tsx","./src/components/embed/slider.tsx","./node_modules/@samvera/clover-iiif/dist/index.d.ts","./src/components/viewer/viewer.tsx","./src/components/embed/viewer.tsx","./src/context/facets.tsx","./src/components/facets/activate.tsx","./src/components/facets/option.tsx","./src/components/facets/facet.tsx","./src/components/facets/modal.tsx","./src/components/facets/facets.tsx","./src/components/grid/item.tsx","./src/components/grid/grid.tsx","./node_modules/swiper/swiper.d.ts","./src/components/hero/hero.tsx","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/server.d.ts","./src/components/layouts/basic.tsx","./src/components/layouts/referencedworks.tsx","./src/components/map/map.styled.tsx","./node_modules/@types/leaflet/index.d.ts","./node_modules/react-leaflet/lib/hooks.d.ts","./node_modules/react-leaflet/lib/attributioncontrol.d.ts","./node_modules/@react-leaflet/core/lib/attribution.d.ts","./node_modules/@react-leaflet/core/lib/context.d.ts","./node_modules/@react-leaflet/core/lib/element.d.ts","./node_modules/@react-leaflet/core/lib/events.d.ts","./node_modules/@react-leaflet/core/lib/layer.d.ts","./node_modules/@react-leaflet/core/lib/path.d.ts","./node_modules/@react-leaflet/core/lib/circle.d.ts","./node_modules/@react-leaflet/core/lib/div-overlay.d.ts","./node_modules/@react-leaflet/core/lib/component.d.ts","./node_modules/@react-leaflet/core/lib/control.d.ts","./node_modules/@react-leaflet/core/lib/dom.d.ts","./node_modules/@react-leaflet/core/lib/generic.d.ts","./node_modules/@react-leaflet/core/lib/grid-layer.d.ts","./node_modules/@react-leaflet/core/lib/media-overlay.d.ts","./node_modules/@react-leaflet/core/lib/pane.d.ts","./node_modules/@react-leaflet/core/lib/index.d.ts","./node_modules/react-leaflet/lib/circle.d.ts","./node_modules/react-leaflet/lib/circlemarker.d.ts","./node_modules/react-leaflet/lib/layergroup.d.ts","./node_modules/react-leaflet/lib/featuregroup.d.ts","./node_modules/react-leaflet/lib/geojson.d.ts","./node_modules/react-leaflet/lib/imageoverlay.d.ts","./node_modules/react-leaflet/lib/layerscontrol.d.ts","./node_modules/react-leaflet/lib/mapcontainer.d.ts","./node_modules/react-leaflet/lib/marker.d.ts","./node_modules/react-leaflet/lib/pane.d.ts","./node_modules/react-leaflet/lib/polygon.d.ts","./node_modules/react-leaflet/lib/polyline.d.ts","./node_modules/react-leaflet/lib/popup.d.ts","./node_modules/react-leaflet/lib/rectangle.d.ts","./node_modules/react-leaflet/lib/scalecontrol.d.ts","./node_modules/react-leaflet/lib/svgoverlay.d.ts","./node_modules/react-leaflet/lib/tilelayer.d.ts","./node_modules/react-leaflet/lib/tooltip.d.ts","./node_modules/react-leaflet/lib/videooverlay.d.ts","./node_modules/react-leaflet/lib/wmstilelayer.d.ts","./node_modules/react-leaflet/lib/zoomcontrol.d.ts","./node_modules/react-leaflet/lib/index.d.ts","./src/components/map/markerclustergroup.tsx","./src/components/map/map.tsx","./src/components/related/related.tsx","./src/components/search/results.tsx","./src/components/search/search.test.tsx","./src/components/shared/button/button.tsx","./src/components/work/connectedpages.tsx","./src/components/work/manifestid.tsx","./src/components/work/inner.tsx","./node_modules/next-seo/lib/types.d.ts","./node_modules/next-seo/lib/meta/defaultseo.d.ts","./node_modules/next-seo/lib/meta/nextseo.d.ts","./node_modules/next-seo/lib/jsonld/jsonld.d.ts","./node_modules/next-seo/lib/jsonld/carousel.d.ts","./node_modules/next-seo/lib/jsonld/newsarticle.d.ts","./node_modules/next-seo/lib/jsonld/jobposting.d.ts","./node_modules/next-seo/lib/jsonld/localbusiness.d.ts","./node_modules/next-seo/lib/jsonld/qapage.d.ts","./node_modules/next-seo/lib/jsonld/profilepage.d.ts","./node_modules/next-seo/lib/jsonld/sitelinkssearchbox.d.ts","./node_modules/next-seo/lib/jsonld/recipe.d.ts","./node_modules/next-seo/lib/jsonld/event.d.ts","./node_modules/next-seo/lib/jsonld/corporatecontact.d.ts","./node_modules/next-seo/lib/jsonld/collectionpage.d.ts","./node_modules/next-seo/lib/jsonld/product.d.ts","./node_modules/next-seo/lib/jsonld/softwareapp.d.ts","./node_modules/next-seo/lib/jsonld/video.d.ts","./node_modules/next-seo/lib/jsonld/videogame.d.ts","./node_modules/next-seo/lib/jsonld/organization.d.ts","./node_modules/next-seo/lib/jsonld/faqpage.d.ts","./node_modules/next-seo/lib/jsonld/logo.d.ts","./node_modules/next-seo/lib/jsonld/dataset.d.ts","./node_modules/next-seo/lib/jsonld/course.d.ts","./node_modules/next-seo/lib/jsonld/breadcrumb.d.ts","./node_modules/next-seo/lib/jsonld/brand.d.ts","./node_modules/next-seo/lib/jsonld/article.d.ts","./node_modules/next-seo/lib/jsonld/webpage.d.ts","./node_modules/next-seo/lib/jsonld/socialprofile.d.ts","./node_modules/next-seo/lib/jsonld/howto.d.ts","./node_modules/next-seo/lib/jsonld/image.d.ts","./node_modules/next-seo/lib/index.d.ts","./src/pages/_app.tsx","./src/pages/_document.tsx","./node_modules/axios/index.d.ts","./node_modules/@iiif/presentation-2/resources/content-resource.d.ts","./node_modules/@iiif/presentation-2/utility.d.ts","./node_modules/@iiif/presentation-2/iiif/technical.d.ts","./node_modules/@iiif/presentation-2/iiif/descriptive.d.ts","./node_modules/@iiif/presentation-2/iiif/rights.d.ts","./node_modules/@iiif/presentation-2/resources/annotation.d.ts","./node_modules/@iiif/presentation-2/iiif/paging.d.ts","./node_modules/@iiif/presentation-2/resources/annotation-list.d.ts","./node_modules/@iiif/presentation-2/resources/canvas.d.ts","./node_modules/@iiif/presentation-2/resources/layer.d.ts","./node_modules/@iiif/presentation-2/iiif/linking.d.ts","./node_modules/@iiif/presentation-2/resources/sequence.d.ts","./node_modules/@iiif/presentation-2/resources/range.d.ts","./node_modules/@iiif/presentation-2/resources/manifest.d.ts","./node_modules/@iiif/presentation-2/resources/collection.d.ts","./node_modules/@iiif/presentation-2/resources/abstract.d.ts","./node_modules/@iiif/presentation-2/traversal.d.ts","./node_modules/@iiif/presentation-2/index.d.ts","./node_modules/@iiif/parser/dist/presentation-2/index.d.ts","./src/lib/iiif/context.js","./src/lib/iiif/homepage.js","./node_modules/typesafe-actions/dist/type-helpers.d.ts","./node_modules/typesafe-actions/dist/action.d.ts","./node_modules/typesafe-actions/dist/create-action.d.ts","./node_modules/typesafe-actions/dist/create-custom-action.d.ts","./node_modules/typesafe-actions/dist/create-async-action.d.ts","./node_modules/typesafe-actions/dist/create-reducer.d.ts","./node_modules/typesafe-actions/dist/get-type.d.ts","./node_modules/typesafe-actions/dist/is-of-type.d.ts","./node_modules/typesafe-actions/dist/is-action-of.d.ts","./node_modules/typesafe-actions/dist/deprecated/create-action.d.ts","./node_modules/typesafe-actions/dist/deprecated/create-custom-action.d.ts","./node_modules/typesafe-actions/dist/deprecated/create-standard-action.d.ts","./node_modules/typesafe-actions/dist/deprecated/index.d.ts","./node_modules/typesafe-actions/dist/index.d.ts","./node_modules/redux/index.d.ts","./node_modules/@iiif/parser/dist/index.d.ts","./node_modules/@iiif/vault/dist/index.d.ts","./node_modules/@iiif/vault-helpers/.build/types/compat.d.ts","./node_modules/@iiif/vault-helpers/.build/types/events.d.ts","./node_modules/@iiif/vault-helpers/.build/types/styles.d.ts","./node_modules/@atlas-viewer/iiif-image-api/dist/index.d.ts","./node_modules/@iiif/vault-helpers/.build/types/thumbnail.d.ts","./node_modules/@iiif/vault-helpers/.build/types/i18n.d.ts","./node_modules/@iiif/vault-helpers/.build/types/annotation-targets/selector-types.d.ts","./node_modules/@iiif/vault-helpers/.build/types/annotation-targets/target-types.d.ts","./node_modules/@iiif/vault-helpers/.build/types/content-state.d.ts","./node_modules/@iiif/vault-helpers/.build/types/annotation-targets/expand-target.d.ts","./node_modules/@iiif/vault-helpers/.build/types/annotation-targets/parse-selector.d.ts","./node_modules/@iiif/vault-helpers/.build/types/annotation-targets.d.ts","./node_modules/@iiif/vault-helpers/.build/types/painting-annotations/types.d.ts","./node_modules/@iiif/vault-helpers/.build/types/painting-annotations/helper.d.ts","./node_modules/@iiif/vault-helpers/.build/types/painting-annotations/parse-specific-resource.d.ts","./node_modules/@iiif/vault-helpers/.build/types/painting-annotations.d.ts","./node_modules/@iiif/vault-helpers/.build/types/objects.d.ts","./node_modules/@iiif/vault-helpers/.build/types/ranges.d.ts","./node_modules/@iiif/vault-helpers/.build/types/sequences.d.ts","./node_modules/@iiif/vault-helpers/.build/types/index.d.ts","./src/lib/iiif/image.js","./src/lib/iiif/constructors/collection.js","./src/pages/index.tsx","./src/pages/map.tsx","./src/pages/metadata.tsx","./src/pages/search.tsx","./node_modules/next-mdx-remote/node_modules/@mdx-js/react/lib/index.d.ts","./node_modules/next-mdx-remote/node_modules/@mdx-js/react/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/minurl.shared.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@mdx-js/mdx/lib/plugin/rehype-recma.d.ts","./node_modules/@mdx-js/mdx/lib/plugin/recma-document.d.ts","./node_modules/source-map/source-map.d.ts","./node_modules/@mdx-js/mdx/lib/plugin/recma-stringify.d.ts","./node_modules/periscopic/types/index.d.ts","./node_modules/@mdx-js/mdx/lib/plugin/recma-jsx-rewrite.d.ts","./node_modules/@mdx-js/mdx/lib/core.d.ts","./node_modules/@mdx-js/mdx/lib/node-types.d.ts","./node_modules/@mdx-js/mdx/lib/compile.d.ts","./node_modules/@mdx-js/mdx/lib/util/resolve-evaluate-options.d.ts","./node_modules/@mdx-js/mdx/lib/evaluate.d.ts","./node_modules/@mdx-js/mdx/lib/run.d.ts","./node_modules/@mdx-js/mdx/index.d.ts","./node_modules/next-mdx-remote/dist/types.d.ts","./node_modules/next-mdx-remote/dist/index.d.ts","./node_modules/next-mdx-remote/index.d.ts","./node_modules/next-mdx-remote/dist/serialize.d.ts","./node_modules/next-mdx-remote/serialize.d.ts","./src/pages/essays/[slug].tsx","./node_modules/@iiif/vault-helpers/.build/types/fetch.d.ts","./src/pages/works/[slug].tsx","./src/pages/works/index.tsx","./next-sitemap.config.js","./node_modules/next/constants.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/schema-utils/declarations/validationerror.d.ts","./node_modules/ajv/lib/ajv.d.ts","./node_modules/schema-utils/declarations/validate.d.ts","./node_modules/schema-utils/declarations/index.d.ts","./node_modules/tapable/tapable.d.ts","./node_modules/webpack/types.d.ts","./node_modules/@next/mdx/index.d.ts","./next.config.js","./out/_next/static/chunks/0b7b90cd.b3b26a53b6f92b09.js","./out/_next/static/chunks/118-be8a88d274e21e82.js","./out/_next/static/chunks/119.146a82e362ea7435.js","./out/_next/static/chunks/120.3b5c649b2cf22f3f.js","./out/_next/static/chunks/144.95052c0e326c12c9.js","./out/_next/static/chunks/148.d965e319ec49e66c.js","./out/_next/static/chunks/232.1999cc3389af0177.js","./out/_next/static/chunks/29107295-817b23cfb45fa068.js","./out/_next/static/chunks/371.e8f6e363db29601b.js","./out/_next/static/chunks/37a763b4-6d61eda09e669d07.js","./out/_next/static/chunks/447-ef55b5272dfd3bb6.js","./out/_next/static/chunks/490.53bbee9a10b945ad.js","./out/_next/static/chunks/512-66e8cd58bf845490.js","./node_modules/@emotion/is-prop-valid/types/index.d.ts","./out/_next/static/chunks/588-f90bf8ea80c3874a.js","./out/_next/static/chunks/602-adabfcc8dc18d954.js","./out/_next/static/chunks/856.2b9267eaa2bf08ad.js","./out/_next/static/chunks/88.aa0ad4d4f8173abc.js","./out/_next/static/chunks/897-f76c9d1fe2228ef3.js","./out/_next/static/chunks/8eb10ab0.681b94db0cbdd5b2.js","./out/_next/static/chunks/940.5f99e3563a9e46e8.js","./out/_next/static/chunks/971-24e6c947b3ae7f95.js","./out/_next/static/chunks/ee9ce975-3dc338aba1bac6b2.js","./out/_next/static/chunks/framework-59d511c80d047fdb.js","./out/_next/static/chunks/main-c59a42b9e9a6f445.js","./out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js","./out/_next/static/chunks/webpack-348490d3f9d3bb93.js","./out/_next/static/chunks/pages/404-a2684063861d21a7.js","./out/_next/static/chunks/pages/_app-0284aa3a1208014f.js","./out/_next/static/chunks/pages/_error-54de1933a164a1ff.js","./out/_next/static/chunks/pages/about-019e28f1a51e3af1.js","./out/_next/static/chunks/pages/index-b7212ce9e2d34de5.js","./out/_next/static/chunks/pages/map-a7ec06c37e27f86e.js","./out/_next/static/chunks/pages/metadata-78e41d0db54e2674.js","./out/_next/static/chunks/pages/search-62ca5096c0f5a58e.js","./out/_next/static/chunks/pages/works-aa0ea4aa6765168f.js","./out/_next/static/chunks/pages/about/documentation-68baaaae35a56c23.js","./out/_next/static/chunks/pages/about/example-96875b879b9cc7c0.js","./out/_next/static/chunks/pages/about/history-6c5edccf332e134e.js","./out/_next/static/chunks/pages/works/[slug]-1be21f41be839a70.js","./out/_next/static/ygpcymy8zeyx-7dpkazu2/_buildmanifest.js","./out/_next/static/ygpcymy8zeyx-7dpkazu2/_ssgmanifest.js","./src/lib/build/shape.js","./src/lib/build/log.js","./src/lib/build/chunks.js","./src/lib/build/thumbnail.js","./src/lib/build/request.js","./src/lib/build/search.js","./src/lib/build/facets.js","./src/lib/build/aggregate.js","./node_modules/@types/acorn/index.d.ts","./node_modules/@types/chai-subset/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/eslint/helpers.d.ts","./node_modules/@types/eslint/index.d.ts","./node_modules/@types/eslint-scope/index.d.ts","./node_modules/@types/graceful-fs/index.d.ts","./node_modules/@types/js-yaml/index.d.ts","./node_modules/parse5/dist/common/html.d.ts","./node_modules/parse5/dist/common/token.d.ts","./node_modules/parse5/dist/common/error-codes.d.ts","./node_modules/parse5/dist/tokenizer/preprocessor.d.ts","./node_modules/parse5/dist/tokenizer/index.d.ts","./node_modules/parse5/dist/tree-adapters/interface.d.ts","./node_modules/parse5/dist/parser/open-element-stack.d.ts","./node_modules/parse5/dist/parser/formatting-element-list.d.ts","./node_modules/parse5/dist/parser/index.d.ts","./node_modules/parse5/dist/tree-adapters/default.d.ts","./node_modules/parse5/dist/serializer/index.d.ts","./node_modules/parse5/dist/common/foreign-content.d.ts","./node_modules/parse5/dist/index.d.ts","./node_modules/@types/tough-cookie/index.d.ts","./node_modules/@types/jsdom/base.d.ts","./node_modules/@types/jsdom/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/mdx/index.d.ts","./node_modules/@types/scheduler/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts","./node_modules/@types/stack-utils/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"bc496ef4377553e461efcf7cc5a5a57cf59f9962aea06b5e722d54a36bf66ea1","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"65be38e881453e16f128a12a8d36f8b012aa279381bf3d4dc4332a4905ceec83","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"e1913f656c156a9e4245aa111fbb436d357d9e1fe0379b9a802da7fe3f03d736","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"0990a7576222f248f0a3b888adcb7389f957928ce2afb1cd5128169086ff4d29",{"version":"0bd5e7096c7bc02bf70b2cc017fc45ef489cb19bd2f32a71af39ff5787f1b56a","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","60ecad5852d4d83edae430e597405132d278a79c10499e9363aecbe1ddc0eade","5f8f00356f6a82e21493b2d57b2178f11b00cf8960df00bd37bdcae24c9333ca",{"version":"b781d7fafad75c82703e2d53ee96c8add4715bc9996ca0e3cf0809bc15e7011f","affectsGlobalScope":true},"cc69795d9954ee4ad57545b10c7bf1a7260d990231b1685c147ea71a6faa265c","8bc6c94ff4f2af1f4023b7bb2379b08d3d7dd80c698c9f0b07431ea16101f05f","1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","57194e1f007f3f2cbef26fa299d4c6b21f4623a2eddc63dfeef79e38e187a36e","0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","9004b6757fde33f153c3a7694c15b017531a0261fafb99e0542a8a6f61be1708","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419",{"version":"32465ea19404cb188e84cf08c6b1f6b12d739140436402cdbc184a3fd20a7d81","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"5fd58752ae77b0ef6a7cbde3294a5d99238ff2e7c3e113c7125eab953e28d41d","affectsGlobalScope":true},"1f2d8573577ad731813e4358b913b667923a94e6456f645918fba11134040d13","fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49",{"version":"815c751d4afee4651d61edf6204187372a55ca8e0126a906986b4859ec51f192","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","8a67dc9edddace374b1a96852ab5bbb87b631d439a928e6df326587d1f4fe9f0","fbcf2c3cde728761b05dbf8e7a9b8be1f5514dc324c6f83b87ba5c0668119b98","7eb0662b995994db248290a0f0a1d8ed685991a162ff9eb4dee36f099cccd0d9","16bbaee4dd96ec8b67026329a4f5fdef6313e42a5c305ddeb498c3d65fb557b8","37a36483218b24a50be2548a71557603e01ce38154c9f3f635c6c8275abd9fb1","c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"6c7b9d2139abd8f2e83ed8fa018c3799ab3187755a6665621feb6e93d3429ac3","affectsGlobalScope":true},"d617229425b25df2046a9c1e321dd1b50825abc8e3b38048453345483f8601e1","badd4f5fe0cca51915ef597852d07598ca490f6d1d9d68d505a159f18cde792d","d46e19fef3e961431a9b85adff6a8de04a1e8fc37366f6541c40237fb8247626","e6d2e297c73016fc98095238b25428591d129481c50eb1b6e575d35f3f8c621e","e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","7e5307e29dfd5d5b827203b85cb665d8d5bf932a6c6f393457da8e9ed1906761",{"version":"e492737de7f023b47ff14ca54b9635ba3dcd64816ed3316c9f3a784cf5897173","affectsGlobalScope":true},"40798238bc2e17ee787a815dbce4f2c89c161e5ad2fde062fb50454c093fa433","30b15efd2b52c7e5f0f7c1e360afc43f487a2cffad5c01756f06eb323eee3efd","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"e7391fb34deecd321ae15af659cbfb0b9abc995c5ed4b3d703ba768e44b89670","affectsGlobalScope":true},{"version":"0900d10c17bae29648b266c0ae7cef0c95ebb2a1d81541b833833ed0996ac85a","affectsGlobalScope":true},"58520d6ae3a339cd22ffc528b50b21e4e8f5247a87913eb1c697c1af62eb0395","186614c0f9ca0ec3cfa988f1dc01c6f392a798710072ff4bdf20ce56e09a6dfd","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","6e4b2642721462bf62d19593770659f268a6ca1e9fd15543747efb3ac471cee3","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","cdaaf046791d7d588f28f32197c5d6acc43343e62540a67eed194c9c20535fdc","4b1ff655bd8edd879dd4f04f15338ce0109f58ccb424165d44fa07e7ea39c4bf",{"version":"6fa3d3f427475a5d21fed826d6457e7f9ee3a0abeb3124fc41f385f112368d2e","affectsGlobalScope":true},{"version":"b85e57e102a1df14980b46d745c9fe8e16a9b0a69a98fb1a2c558c9137ab30d6","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","e5ce801ce5e85d7281807d8a65a21ee9767c122c87da262891582b4afead5ec0","76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02",{"version":"057d7f56aacd575a6240838d2684d34a340acde815f84190ea5e9afd611aeee6","affectsGlobalScope":true},{"version":"40ed27386f21a739bd0d2e2cfed563760588f2aeaa7ad149c1bf1454a7ec743a","affectsGlobalScope":true},"d1ef1d8516286380fd0a6f498f1650d374a8cb5f03d91633b6124e4fb8fb131d","6244a29671c12a54fc5b1393dde60bac655bd778d84758a4db847f684d4da3a5","8bc733ffd630d49d495663bfecf590281c8f5412b33657430ab471b558206705",{"version":"171c1840775746917e7b813c9df0fc0b84876f96623a6cfef3b3de7ea816b8c5","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"872201e32a629152e8bc7118e8977ac37a1a62ab6756c2ac3e6b53859f0a8fa1","8caa5c86be1b793cd5f599e27ecb34252c41e011980f7d61ae4989a149ff6ccc","481231c1fc9d8efbceb62a6265af69d5cd5a49676df9c4214ecb5b81f0077a75","3303f49a2c7c25d8b5dbe0f93be5dccbb62dbea43bca9565c35c4737934dc2a4","0d82c0061c31162aec49555279f670b5ad44ee04aa45e94eb06e98f2b7cbc2b4","893288d87a9dd809619f7daf641ba9114d01275364856483b40186ba411dac40","bb7a61dd55dc4b9422d13da3a6bb9cc5e89be888ef23bbcf6558aa9726b89a1c","db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","eb4b9a746cc7326485e091731e98708acf669c314348c72a88f8ed7a684c719e","cbea99888785d49bb630dcbb1613c73727f2b5a2cf02e1abcaab7bcf8d6bf3c5","a3f1220f5331589384d77ed650001719baac21fcbed91e36b9abc5485b06335a","a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","6ceac05c32f579adbed2f1a9c98cd297de3c00a3caaffc423385d00e82bce4ce","fa5bbc7ab4130dd8cdc55ea294ec39f76f2bc507a0f75f4f873e38631a836ca7","abb8aec2e3346d3ad3ad7d050306e86b09e6baeff73e420058ac9f72b9a6f9a1","cf86de1054b843e484a3c9300d62fbc8c97e77f168bbffb131d560ca0474d4a8","37f7b8e560025858aae5195ca74a3e95ecd55591e2babc0acd57bc1dab4ea8ea","24687523374b3ee67cd2499475dde9f08dd9a254a020dd06b4251761ab30834c","737c6894652288d1f9c7a215679a20f5695ba66e48524c758ff681441285b5eb","0105d7eb0f10cd23c976651fdc9ed0ea3af1a7fc159db24a7a6bc97b1a0b081f","b7b3258e8d47333721f9d4c287361d773f8fa88e52d1148812485d9fc06d2577","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","49e567e0aa388ab416eeb7a7de9bce5045a7b628bad18d1f6fa9d3eacee7bc3f","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","8a8bf772f83e9546b61720cf3b9add9aa4c2058479ad0d8db0d7c9fd948c4eaf","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","eed041005bb5e595e276684cb5ed194ab19205504f4cd0e41de754a622f22964","aeb888c84e570f3aea036de32da9b6f2c0ab204af27cb550753e897598ac63e0","4c91cc1ab59b55d880877ccf1999ded0bb2ebc8e3a597c622962d65bf0e76be8","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","e1c9c204454567f39c3fdcb102871ccb750f44899dfbe29df3404f4da94d647f","2d0fe1768fcbed8a61709d1deebcd1bd21b1b4fc42cd233e1c335e1432d58aa9","3cd0346fc79e262233785d9fe2cbad08fc3fe6339af3419791687152ddfe5596","ccc2b7e6bc181b89049fd416f286d09545c685a817e2230ca938fcec023f8c4f","d23518a5f155f1a3e07214baf0295687507122ae2e6e9bd5e772551ebd4b3157","a10a30ba2af182e5aa8853f8ce8be340ae39b2ceb838870cbaec823e370130b6","3ed9d1af009869ce794e56dca77ac5241594f94c84b22075568e61e605310651","b91a6adb984ad2e58316bdee7c4a81aac2f6aabac525b377a03e02bdc5d31baa","e8da637cbd6ed1cf6c36e9424f6bcee4515ca2c677534d4006cbd9a05f930f0c","ca1b882a105a1972f82cc58e3be491e7d750a1eb074ffd13b198269f57ed9e1b","9214131d35f51d70cb3bddc3fd4f7c172d9dc4f7b7d512a1d371ed72e120a3c4","3867ca0e9757cc41e04248574f4f07b8f9e3c0c2a796a5eb091c65bfd2fc8bdb","6c66f6f7d9ff019a644ff50dd013e6bf59be4bf389092948437efa6b77dc8f9a","58902668adae2e5eb67efbccb4048afa02308fa684f1a4e4c7d47668ecf58c1b","ef2d1bd01d144d426b72db3744e7a6b6bb518a639d5c9c8d86438fb75a3b1934","b9750fe7235da7d8bf75cb171bf067b7350380c74271d3f80f49aea7466b55b5","476c48dfa7aef1b279542a1d90018f67912b3c970e147b77c2d8063c40c06b24","17937316a2f7f362dd6375251a9ce9e4960cfdc0aa7ba6cbd00656f7ab92334b","be2d91ce0cef98ac6a467d0b48813d78ae0a54d5f1a994afb16018a6b45f711d","973b59a17aaa817eb205baf6c132b83475a5c0a44e8294a472af7793b1817e89","ada39cbb2748ab2873b7835c90c8d4620723aedf323550e8489f08220e477c7f","a7a92f071d6891b2fa6542e343bdebc819492e6e14db37563bb71b8bd7e9b83f","6e5f5cee603d67ee1ba6120815497909b73399842254fc1e77a0d5cdc51d8c9c","99ace27cc2c78ef0fe3f92f11164eca7494b9f98a49ee0a19ede0a4c82a6a800","c89845d0f0fe40e7f8c423645f1577b91b6d67790eb6f394eb66779035f3a52e","ef61792acbfa8c27c9bd113f02731e66229f7d3a169e3c1993b508134f1a58e0","609e9dc4bb74cdfd2b9c89ade164e2c4032d92e903f2cbf2ca96dd3b76158b6e","f6404e7837b96da3ea4d38c4f1a3812c96c9dcdf264e93d5bdb199f983a3ef4b","c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","64ce948fc8fdf88bceeec40fa162a155e6261b2fcf8fc832abc18942f9baf7e1","c1ac179620434b59c1569f2964a5c7354037ac91a212a1fb281673589965c893","9f891dc96f3e9343c4e823ba28195fd77e59c84199696a8bdfe7b67925732409","bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","1364f64d2fb03bbb514edc42224abd576c064f89be6a990136774ecdd881a1da","741c438ec079a077b08d37d9c0466924b68e98ed47224e83fcb125c5863eb355","fa34a00e044e9a3a6044abdb52d38bc7877ff1d6348aa79be99774e413c2568a","e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","1822b69406252b606dc1aec3231a7104ac1d456cfa2c0a9041e61061895ae348","22d8a396304521bf80e096c300194dde7d5b7fd8b39b06b31cafe7a4fb325b5c","2a36120d258dfa9e6f4a7ba709984b767741025502fb75960226675bf9968ae3","5edf8dc783e74d975aa99109193269279f8c66d363e24aa754c0e3b52a17c5c1","0ca7b4d6520e97f9394853874bc4a1574b88f815747a0f5956005ddf9742e38d","dacc544b815d4e54ae4e039de4ce03c0a3bcbfbcaa01cd6512c4eb6aa22a0c1d","78aede3751e6d5755ea9bbb6850a4dda573e41a4ca2c367e9bdf133ecb68dc54","a1c8542ed1189091dd39e732e4390882a9bcd15c0ca093f6e9483eba4e37573f","a805c88b28da817123a9e4c45ceb642ef0154c8ea41ea3dde0e64a70dde7ac5f","3a17f09634c50cce884721f54fd9e7b98e03ac505889c560876291fcf8a09e90","32531dfbb0cdc4525296648f53b2b5c39b64282791e2a8c765712e49e6461046","0ce1b2237c1c3df49748d61568160d780d7b26693bd9feb3acb0744a152cd86d","e489985388e2c71d3542612685b4a7db326922b57ac880f299da7026a4e8a117","ce6530262460220d8f2ac48df1e2e605dad9303af59e2a9ba5c43f4f5c0adc7f",{"version":"70bcf469570c3b7fe46c4e0043a203364d8bc8a66f73d2a4080ae37aa86e2067","affectsGlobalScope":true},"fd1b9d883b9446f1e1da1e1033a6a98995c25fbf3c10818a78960e2f2917d10c","19252079538942a69be1645e153f7dbbc1ef56b4f983c633bf31fe26aeac32cd","de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","1dc574e42493e8bf9bb37be44d9e38c5bd7bbc04f884e5e58b4d69636cb192b3",{"version":"f14c2bb33b3272bbdfeb0371eb1e337c9677cb726274cf3c4c6ea19b9447a666","affectsGlobalScope":true},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true},"6b8e8c0331a0c2e9fb53b8b0d346e44a8db8c788dae727a2c52f4cf3bd857f0d",{"version":"0aa0f0184c0f9635dd1b95c178223aa262bb01ec8ac7b39c911ef2bd32b8f65b","affectsGlobalScope":true},"ec29be0737d39268696edcec4f5e97ce26f449fa9b7afc2f0f99a86def34a418","8945919709e0c6069c32ca26a675a0de90fd2ad70d5bc3ba281c628729a0c39d","1703cf66ae204a085d50991e0edeef1c98bb1004d6d68331eeefbcc57bd92fd3","edaa27d57d30467edc63e9da7e7196acd315b02071f2c7ecd8475085a5cab9a2","65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","ec9fd890d681789cb0aa9efbc50b1e0afe76fbf3c49c3ac50ff80e90e29c6bcb","5fbd292aa08208ae99bf06d5da63321fdc768ee43a7a104980963100a3841752","9eac5a6beea91cfb119688bf44a5688b129b804ede186e5e2413572a534c21bb","6c292de17d4e8763406421cb91f545d1634c81486d8e14fceae65955c119584e","b7fff2d004c5879cae335db8f954eb1d61242d9f2d28515e67902032723caeab","5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","145d0d6d3e07786d18ac835cc2129c073b2a8737d05a57a7287b0de64ab08ca2","4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","15959543f93f27e8e2b1a012fe28e14b682034757e2d7a6c1f02f87107fc731e","a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","4e828bf688597c32905215785730cbdb603b54e284d472a23fc0195c6d4aeee8","a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","4da80db9ed5a1a20fd5bfce863dd178b8928bcaf4a3d75e8657bcae32e572ede","47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","7c8ee03d9ac384b0669c5438e5f3bf6216e8f71afe9a78a5ed4639a62961cb62","898b714aad9cfd0e546d1ad2c031571de7622bd0f9606a499bee193cf5e7cf0c","09cb73020ab795df196977eee9f4531614109f07c943bdbe55a9cf858c83dc34","fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","004e2ddb267cf59659a8a7f5422dbc1af78a3ce711d6fab490a857ce34730575","cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","e0aa1079d58134e55ad2f73508ad1be565a975f2247245d76c64c1ca9e5e5b26","cd0c5af42811a4a56a0f77856cfa6c170278e9522888db715b11f176df3ff1f2","3dbf19422de170c2050d39dd7fc4bc7c2dd18fcc849a4cf24058596d8b0ceba8","9693affd94a0d128dba810427dddff5bd4f326998176f52cc1211db7780529fc","703733dde084b7e856f5940f9c3c12007ca62858accb9482c2b65e030877702d","413cb597cc5933562ec064bfb1c3a9164ef5d2f09e5f6b7bd19f483d5352449e","68f81dad9e8d7b7aa15f35607a70c8b68798cf579ac44bd85325b8e2f1fb3600","1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","922bea60daff1f927afcf650f440bc1939f87f8f6710627d3143a0f721479f12","5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","c0eeaaa67c85c3bb6c52b629ebbfd3b2292dc67e8c0ffda2fc6cd2f78dc471e6","4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","2470a2412a59c6177cd4408dd7edb099ca7ace68c0187f54187dfee56dc9c5aa","c2008605e78208cfa9cd70bd29856b72dda7ad89df5dc895920f8e10bcb9cd0a","ec61ebac4d71c4698318673efbb5c481a6c4d374da8d285f6557541a5bd318d0","33ee52978ab913f5ebbc5ccd922ed9a11e76d5c6cee96ac39ce1336aad27e7c5","40d8b22be2580a18ad37c175080af0724ecbdf364e4cb433d7110f5b71d5f771",{"version":"16fd66ae997b2f01c972531239da90fbf8ab4022bb145b9587ef746f6cecde5a","affectsGlobalScope":true},{"version":"fc8fbee8f73bf5ffd6ba08ba1c554d6f714c49cae5b5e984afd545ab1b7abe06","affectsGlobalScope":true},"ce56c5016dbfedf8b7f985316890837998f684935b10b7212c7a32ce82b02a27","521fc35a732f1a19f5d52024c2c22e257aa63258554968f7806a823be2f82b03","b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","9269d492817e359123ac64c8205e5d05dab63d71a3a7a229e68b5d9a0e8150bf",{"version":"41def2680b5c33e043b45cd53bd4d9ecc4c3714a456cdead98d552cf8d19789e","affectsGlobalScope":true},"492d27fb862585dd8c1b8c00baff239d97ad04b166da3721ae65f213f3e6fe27","75fa6a9be075402ea969c1fcec4bb1421f72efbc3e2f340032684cdd3115197c","2ec6204e9750249048f390f520197cc67d52c1c769c1ed866285cd9070aa2bab","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c79bd2f3e5c05e7ad80dc82ce8d339cac23ac1f5e6cfab96c860bb70d5162873","e3328cedfe4d7fac23ba75d00bf5169269800ab949d0837cd88c4211a52c3762","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","e00243d23c495ca2170c9b9e20b5c92331239100b51efdc2b4401cdad859bbef","553ecf79e921cf534c680d5e91104efd73c7df647ff03a3f704f4a82d9649c76","ed5ed60911dbd48fc4c3987f0516a22d08ad3c236cd7fcfb18b3dd82bed51616",{"version":"1a466c79151171a524b16d47bb95e1310f2452318c61e50ea3ceead49e434ae2","signature":"7f1dd91358727e8b7b37bc7271ebc9c3c3fc48da916362f347037ab65f537725"},"7806f951d08d3857fcd6ec1c5692d62feb3a259130cef235e305f4028fe7420e","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e",{"version":"c8950367d1812758e9e354c695c60c3e6311bf2cd98b9f9eb469a19df8a9a486","affectsGlobalScope":true},"37e6797b395ea67744f691bd3ceef7977a57266ea7ccd86e554b08700bf48ddc",{"version":"841784cfa9046a2b3e453d638ea5c3e53680eb8225a45db1c13813f6ea4095e5","affectsGlobalScope":true},"646ef1cff0ec3cf8e96adb1848357788f244b217345944c2be2942a62764b771","d1d5bd46c9153963813bad79c0d98582d55ca8c3c59e5d9c4ec5605fd175f6bd","850040826cfa77593d44f44487133af21917f4f21507258bd4269501b80d32f0","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","bcb6ea18f23dae2c48459d7b86d3adccd6898f824fcbf9da08b935f559896580","1363ba7d52f2353d0c4306d0ecdaf171bf4509c0148842f9fd8d3986c098a2eb","3a24f4a428f24cad90b83fab329a620c4adbace083a8eda62c63365065b79e73","739c2c46edc112421fc023c24b4898b1f413f792bb6a02b40ba182c648e56c2f","858d0d831826c6eb563df02f7db71c90e26deadd0938652096bea3cc14899700","8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","18c04c22baee54d13b505fa6e8bcd4223f8ba32beee80ec70e6cac972d1cc9a6","5e92a2e8ba5cbcdfd9e51428f94f7bd0ab6e45c9805b1c9552b64abaffad3ce3","53ca39fe70232633759dd3006fc5f467ecda540252c0c819ab53e9f6ad97b226","e7174a839d4732630d904a8b488f22380e5bcf1d6405d1f59614e10795eca17d","7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","b9261ac3e9944d3d72c5ee4cf888ad35d9743a5563405c6963c4e43ee3708ca4","c84fd54e8400def0d1ef1569cafd02e9f39a622df9fa69b57ccc82128856b916","c7a38c1ef8d6ae4bf252be67bd9a8b012b2cdea65bd6225a3d1a726c4f0d52b6","e773630f8772a06e82d97046fc92da59ada8414c61689894fff0155dd08f102c","74f2815d9e1b8530120dcad409ed5f706df8513c4d93e99fc6213997aa4dd60e","9d1f36ccd354f2e286b909bf01d626a3a28dd6590770303a18afa7796fe50db9","c4bc6a572f9d763ac7fa0d839be3de80273a67660e2002e3225e00ef716b4f37","106e607866d6c3e9a497a696ac949c3e2ec46b6e7dda35aabe76100bf740833b","8a6c755dc994d16c4e072bba010830fa2500d98ff322c442c7c91488d160a10d","d4514d11e7d11c53da7d43b948654d6e608a3d93d666a36f8d01e18ece04c9bd","3d65182eff7bbb16de1a69e17651c51083f740af11a1a92359be6dab939e8bcf","bb53fe9074a25dfa9410e2ee1c4db8c71d02275f916d2019de7fd9cadd50c30b","5af924defa85825aa63f023b562727d5bc7f91e71363e3f7ae24392bede17066","19ce9ec982b542ef6d04d29ce678aad2fa52a67d8087e9c6cd95a4d6d98784c8","e1a35d120ee5e01503d8d77352d122f0e8f860e9a08584f8183a69816008fa5d","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","93da197145dee1148ae0d2a4a493208deab95a064437919d768a5afbbaa765f5","fdeb3d41dd7f0eb1a3a04834d08c12af5a1d1b0102f155d1f33de85b36f7bc97","ab8f16cf346d43385bc8caceebf9f06bd84d2986755ef0f4b913e3372f6e0607","661a38cc723958af347949e90af9b463504d88dcccac2217287b94192c60cd38","05d8e53f6bc3988bc6fa6eb796f32852237752a70567e93df9647de714b4e7ba","f09a9b22643cbacec0dfcfce9f8fba8f3ff225aa7a51fc1ebe2da8f0769d727e","46bd2ebdf42fb171d7cbe21203a0f6d12854534f13a6831f23c003e5d08f0729","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","9e95cbc1478096467c73a45b2449a12e10c0e9e269ece267d96d6f65b8aab944","b4c700cc74490ceb0da7486267589c4a2648884f3ead4a98ba4f77aad4b318c4","d3a8062f03b63c9611d27ebd015757149f7fdbc0a2986a2f3748d92fbf369a83",{"version":"648c383d6cea51b7dce41935a906920d1256df3fc600c2094120080e03281e2a","affectsGlobalScope":true},"f2b95b4047d5ee9a18a77bbc945e0b3984e58ac418b41d31f3cd620de93f7679","6e8fe2b81bcabb2bb7cec054b54e51505d5cc17877467dec84b1ded7a670a4ea","05c7aef6a4e496b93c2e682cced8903c0dfe6340d04f3fe616176e2782193435",{"version":"47c8c25482eb4844ac9c11758f9a6c0112ecb1c7216f91e3463772e73f989a63","affectsGlobalScope":true},"b0195c3cad35486867dc72b15920b4d2209c54033e776f637096b50e8d640d2a","e666e31d323fef5642f87db0da48a83e58f0aaf9e3823e87eabd8ec7e0441a36","80dc9583286c23698e405e9bc9c7e01970bf3f589ed3409cd2260d5d83eefa4a","017f8ec681caedd0b963b7efad5b51c33ea4919cadd14ca6cb90aede4e773a0d","de317183334fe081395d6c54ddfd068ded9d8f1b86756dddbf9c4a7b1c5493c4","b7e28e06011460436d5c2ec2996846ac0c451e135357fc5a7269e5665a32fbd7","ea09c26609414c706f54f522b0e06f86429d6ba6747082adb5feaf3ba41b5deb","69fbf077eb9ae7466d64acf2a17969be0cf9b077580a6fe563935df6e35f5aa2","27ab465d874023a9375fa33c1522f863c829745aef5353bc8e4909140eeb485c","aa348c4fb2f8ac77df855f07fb66281c9f6e71746fdff3b13c7932aa7642b788","f713064ca751dc588bc13832137c418cb70cf0446de92ade60ad631071558fca","dfefd34e8ab60f41d0c130527d5092d6ce662dc9fa85bc8c97682baf65830b51","96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","b0f4dd1a825912da8f12fd3388d839ef4aa51165ea0e60e4869b50b7ccb4f6fc","9cb7c5f710dc84d2e9500831a3e9a27afd3c3710f5a1b8744a50473e565b41fc","cf6b2edde490f303918809bfab1da8b6d059b50c160bec72005ff4c248bdd079","5703b31fda745d9fa29e5152918914a0fe4e75b14d1f6ae54ec965d63a86cfe0","d8a5f454eb61837c69647bdace777d165b56ada287efb6cc986769544df3c7b3","3fa571018b674c0cdc74584b04f32c421829c409236e1332af4a87ad904b504d","13446337b269b3a8fdac668f9cf831b313529aea23f26621ecf5097c3e53bb25","600238f708fdbd3ac9db0a2d574b8c72e28fba3f14beb3551e6c7d9e410bd7b7","f2d1a59a658165341b0e2b7879aa2e19ea6a709146b2d3f70ee8a07159d3d08e","f68c8a300bf8518320c2b4270210b7aafeaac1a110c49cc1e6f502ab3c26e8ce","3295ea97e1c36a1e3a815cd274f4658ee9f8b27a980caedb8f9cfdd0219f76ee","bf1df8b3ed5c41d02daa8fda0b8e0c1f071e355320173dca1f96e5f20c208947","81ddb952522c6bdc51f628d70022946152e74165144cc265cf28b196c86f785e","3bd8c3d3c252ddbc6f20a552efea4175cb853e676b836fce3083dd39c919c982","8cf315ed1136952620998ad9cb1efa440d94d7692509b8d401d8f5aeacc8a37b","e7c0cb6c758bea16f455cbdacde21d93355f83cb70273384d543f30afb79676a","0d22e618a5156df57e5bee9a61e35e014f121ce7da33273727fa4b33b718f901","c3648818b4eb36f4bfe5e76911864df60c023e0e06f407d59152aa337babbff8","72d4c9213d74fbc5e07064415e250f4997fec92acee18815284177f3cd4fade1","5bdeebe50fc0cd50bff1b72af6e1deaa44e40070ae516b9425a56e6cbd64e97e","bf3677a22329cc58179278e594986a92fb9e0cdc21b4a856621cf0cdc45fe496","0c27b873caeb410109f4bbcd8a8421f2c35ca407e513014c67d5ea726ecc0b7f","8aee11e5f5f318080cb64a61b8e2e380ee0d3bdc2f0b4b07e30780fc6dcf5bcb","0042e88bda1a0469e77b84cd48f48bfcdca956fb772c23555795cf7a050713e7","6cc64d063a39432dc832bfde07dd55e3a17e5ed3ea436fb3c291bf0a299a2ffb","7f68fb353f781e973e1300be53d09ed77649cd0b48e6c999d07b6f8289a48f4d","f04359c32d1332cd61f2a79759e1d7d54f31c9d6ebb0083fa94332349fd03821","0fe1f873a92b8bacb547228a92f865df9d0e6f17aed8b30514ce54e6415470bb","2769ee0298cfbe7aaa57cb8fcfd464209835a9f9e46ded415606ce33d570c4fe","f9a43ad89349e036f698e18a93199bcd442facb86033a9ef4f8308c8012c6b07","f4d395a360996bf4a994545143142586638571243c8d18a57ae16b7380fb45f6","b66c9f66790d454b61deaf2b6b3ae950e9bf889a87739d730b5d3fceabed5cb8","be6992fbaadbe800ba339719bd8d634758e9cfc0150aa97eb4e72a856d9bff07","7fd07f55483c211e44af7ff5322e3412b11b80f727bd0a8910ceb2934332b2bd","983e9045689e506c9b721b336da49bc6c31afedc940d2184689425c408e45347","6e2d087a7257f7e0e77dd34dcad98569cc3398925e22dbedeaf50f01fde9c21f","4d242b0d6274e652d942345924d01985095c2bc23bffd81be740df3ac388d0bc","ae1acaa3fddbd5cb89380e991059548f509e4f193262829fa17c2c386c19d478","23d2926337f566ba1ac2d1e475179c46c2d8447614fed982cfa68370b55a8785","6683b7371b386ed00609febc6778634349d645354e8ec8943ed70f567cefbc19","844be4b74981ababfb5deb73c0854b0773cf82ccf59da28ffd87feedcf6cfc88","beeaea8946ec9ccb36c1d3f4ea4c633c3c3cae24b6d42bf8f34c629fb7096b69","681b52949cced9e7eff81633213686c25707ccd6aade33ac2121fe23cc7cd561","0b55d99eec3eb3ba5eea9fb996f4de88861707f5a31c40e20c7cc0b995458cd3","c1574455d10119c09f5040fd712656214e8fd58509d708a4d69c73ac5d82b576","1f3d67384bdfc73b9947d33eefa67d34d9f7bd74fe31cb7cf5bc382bbc8b9d42","5a9313d5576c73a96d3edbf6f6f256ab46ceffff91521a1d3740685be4486ad3","0cdd9e64590ccc1fb957ae72f57b76187b42d13a00804c6dae162cc5320c6eba","e295ca20684530ece3ac079d8619e17ce6ff18c75fe8cacc2ac16d60b3b5d8c0","e9013ca8df1df3cd08c5ce8d50a31b06a7cc6d2756202ca39aeb363b1e98d4c7","53804ee74cf2693b57d3a05500d5ef8bf1ec68287cfa8936bfa1b6a421250c14","de30f677e40eb10a774a561006d0add6f244b2eb6af9c91b2fe7c064aec0e47e","75424f2fae21df0c7a823575aa5b0538bfdf4a0fb27f5133364fab2a58f0957f","ce5ea0e8b3e562535153709df68915aec3adfb151c2c84866973c86ebc8c16a9","3bb424d9ccdc7588a7e9b66529af3c9b595dd64aed00dc9be263e5efd4ac090d","4dd35cad11e430f916adc66c4139eab01bc544929f15720e2f8e4f11a3d324b0","830052824b17da9ae8ebf1d382c9db054991d30448965d420b780029ed24f606","d0821e390c381e88f0eebac46202ef00cd01837f4d6369138371b58eef5e25c1","22734de20b88dbb189354ad8aa8433f5857ba02aa588b7f0e9ca4e09472ea940","fa2a51c835a7e07adf78e8e2246d53f75a31cf9f198d7fb54aa7ac20fca60c90","c960ad5d5330893cdd323b50ab99241a7d1d518b7fa3d88f54f840ce9e1de2eb","064c3ed80170f55b4ed3a6c74b83716feb141d325eebbc23e3afd9fcde00c10d","5fed33891c28c2dc0ace90679a8a192d222628549df31957edf7d48042e7f9ef","badcf1da555e0a227d8f0e674bed11062991ea029abf62c0b38c228fb2580a94","6a7e69dc22e81b4fbad5f3cf904942d183aa2d41b2d503e20eb6bf368412eb90","158c7d8c6aca1bcdd0cd222e61977c1ec3d005176dd83103c6cf65c5d3367cb4","1a0d2006731c9852bfd88273c97919e163c9869fc1499f6644e4a6ec5fe30beb","5bb2c31ddf2b12e070c11fa9a1208b9530ff614f94ce6e224abd588e10f34594","bf1df8b3ed5c41d02daa8fda0b8e0c1f071e355320173dca1f96e5f20c208947","81ddb952522c6bdc51f628d70022946152e74165144cc265cf28b196c86f785e","3bd8c3d3c252ddbc6f20a552efea4175cb853e676b836fce3083dd39c919c982","8cf315ed1136952620998ad9cb1efa440d94d7692509b8d401d8f5aeacc8a37b","e7c0cb6c758bea16f455cbdacde21d93355f83cb70273384d543f30afb79676a","0d22e618a5156df57e5bee9a61e35e014f121ce7da33273727fa4b33b718f901","c3648818b4eb36f4bfe5e76911864df60c023e0e06f407d59152aa337babbff8","72d4c9213d74fbc5e07064415e250f4997fec92acee18815284177f3cd4fade1","5bdeebe50fc0cd50bff1b72af6e1deaa44e40070ae516b9425a56e6cbd64e97e","bf3677a22329cc58179278e594986a92fb9e0cdc21b4a856621cf0cdc45fe496","0c27b873caeb410109f4bbcd8a8421f2c35ca407e513014c67d5ea726ecc0b7f","8aee11e5f5f318080cb64a61b8e2e380ee0d3bdc2f0b4b07e30780fc6dcf5bcb","0042e88bda1a0469e77b84cd48f48bfcdca956fb772c23555795cf7a050713e7","6cc64d063a39432dc832bfde07dd55e3a17e5ed3ea436fb3c291bf0a299a2ffb","7f68fb353f781e973e1300be53d09ed77649cd0b48e6c999d07b6f8289a48f4d","f04359c32d1332cd61f2a79759e1d7d54f31c9d6ebb0083fa94332349fd03821","0fe1f873a92b8bacb547228a92f865df9d0e6f17aed8b30514ce54e6415470bb","2769ee0298cfbe7aaa57cb8fcfd464209835a9f9e46ded415606ce33d570c4fe","f9a43ad89349e036f698e18a93199bcd442facb86033a9ef4f8308c8012c6b07","f4d395a360996bf4a994545143142586638571243c8d18a57ae16b7380fb45f6","b66c9f66790d454b61deaf2b6b3ae950e9bf889a87739d730b5d3fceabed5cb8","be6992fbaadbe800ba339719bd8d634758e9cfc0150aa97eb4e72a856d9bff07","7fd07f55483c211e44af7ff5322e3412b11b80f727bd0a8910ceb2934332b2bd","983e9045689e506c9b721b336da49bc6c31afedc940d2184689425c408e45347","6e2d087a7257f7e0e77dd34dcad98569cc3398925e22dbedeaf50f01fde9c21f","4d242b0d6274e652d942345924d01985095c2bc23bffd81be740df3ac388d0bc","ae1acaa3fddbd5cb89380e991059548f509e4f193262829fa17c2c386c19d478","23d2926337f566ba1ac2d1e475179c46c2d8447614fed982cfa68370b55a8785","6683b7371b386ed00609febc6778634349d645354e8ec8943ed70f567cefbc19","844be4b74981ababfb5deb73c0854b0773cf82ccf59da28ffd87feedcf6cfc88","beeaea8946ec9ccb36c1d3f4ea4c633c3c3cae24b6d42bf8f34c629fb7096b69","681b52949cced9e7eff81633213686c25707ccd6aade33ac2121fe23cc7cd561","0b55d99eec3eb3ba5eea9fb996f4de88861707f5a31c40e20c7cc0b995458cd3","c1574455d10119c09f5040fd712656214e8fd58509d708a4d69c73ac5d82b576","1f3d67384bdfc73b9947d33eefa67d34d9f7bd74fe31cb7cf5bc382bbc8b9d42","5a9313d5576c73a96d3edbf6f6f256ab46ceffff91521a1d3740685be4486ad3","0cdd9e64590ccc1fb957ae72f57b76187b42d13a00804c6dae162cc5320c6eba","e295ca20684530ece3ac079d8619e17ce6ff18c75fe8cacc2ac16d60b3b5d8c0","e9013ca8df1df3cd08c5ce8d50a31b06a7cc6d2756202ca39aeb363b1e98d4c7","53804ee74cf2693b57d3a05500d5ef8bf1ec68287cfa8936bfa1b6a421250c14","de30f677e40eb10a774a561006d0add6f244b2eb6af9c91b2fe7c064aec0e47e","75424f2fae21df0c7a823575aa5b0538bfdf4a0fb27f5133364fab2a58f0957f","ce5ea0e8b3e562535153709df68915aec3adfb151c2c84866973c86ebc8c16a9","3bb424d9ccdc7588a7e9b66529af3c9b595dd64aed00dc9be263e5efd4ac090d","4dd35cad11e430f916adc66c4139eab01bc544929f15720e2f8e4f11a3d324b0","830052824b17da9ae8ebf1d382c9db054991d30448965d420b780029ed24f606","d0821e390c381e88f0eebac46202ef00cd01837f4d6369138371b58eef5e25c1","22734de20b88dbb189354ad8aa8433f5857ba02aa588b7f0e9ca4e09472ea940","fa2a51c835a7e07adf78e8e2246d53f75a31cf9f198d7fb54aa7ac20fca60c90","c960ad5d5330893cdd323b50ab99241a7d1d518b7fa3d88f54f840ce9e1de2eb","064c3ed80170f55b4ed3a6c74b83716feb141d325eebbc23e3afd9fcde00c10d","5fed33891c28c2dc0ace90679a8a192d222628549df31957edf7d48042e7f9ef","badcf1da555e0a227d8f0e674bed11062991ea029abf62c0b38c228fb2580a94","6a7e69dc22e81b4fbad5f3cf904942d183aa2d41b2d503e20eb6bf368412eb90","158c7d8c6aca1bcdd0cd222e61977c1ec3d005176dd83103c6cf65c5d3367cb4","1a0d2006731c9852bfd88273c97919e163c9869fc1499f6644e4a6ec5fe30beb","c58acaa830858cba58092f64ff08c67c2bcf42d694b603760f9d9f6fa7ed2e56","91d8172a03deec2aa0740d72a47d21b3c1874f548bab5ec8a671ea4d9e4262c1","b42da7d027be7ea11b831d771e07b665eb483af74ee978832d538ba951460475","607461b3562bba0cb228962212fd8ac601ab98a82f17ef6aed46db0120b48ecb","817dfc2aa1624aba366f4838e13bb195805ced9b94995a6a53bff5f8460bf268","dac283174cf4780ebf8504af276a16d00d4d90e5554942b35bad53980f3ae0dc","d1102aca4d39d05aa707d61ac6142fb0659aea1276f0dee67fe8311056d9d032","caea9c0118e0785a6206154278f921d2e8c92766a49c4e1fe639f29fed9afbb1","f889c3b977508eae5ab22c464f46cf8688d69b45e05afbf63ecc0f331813447a","3e1b4c98038a35e7e59dd92092bb333a5aa97fdeec14fc4ca89772a384a904bc","3c115394d85c37ab95ab386d0da214d624a48e7fa88551ceba998ecc61725978","4538e124932acf0703231adcd2087ae2acadab3bbc82fcd757606c227072533d","8f9a319f93ce06388b940e762d802377718d3f007ed83edd9cd6c37af41ae75b","6b4ad9a61383ca142968cf3f284c17205b8bd3a859cbc95f5399028928c73cb1","d2b2a6bc21251a9b6f6847b2d6a36e520d692fbb9b245c1de1341d5e7508caae","6f8db2658af013f2e31d701afeaa8226f0babff18baffa71548e1c1a601818ac","a82e2f7ab72526a0242befe95a9bda4884b43af94679a0d3032765e6daeef32b","f31a397f03ff40214871a6c9c523529a42f3f88c4bfa79432a116d3ddf456c15","eb8cee157665cdfc20749ca9d70ca378330fbf7ab670987af44ee942951d5912","378d9a842e714b041c298375b3c9559152608b6eb88432f55fa4d1bef7b53561","5bbc341616d8a073c6f43536e643383356f3c6c46667b2481e99522e13a47667","fa3f55e16fa99c18d57d057d5844da3fa45ec581949e645cd1827c01612d3fa4","6b98bd8d87f15c2ec66a98f66bb2f3f676e2811873612100aca6c66d4ee0651e","5dc4b28d92018055827cdacc57c002cba55ad2dd55dc95098f7684e9fbd016ec","6552460efe3df85dc656654231b75161e5072fc8ae0d5d3fd72d184f1d1f9487","fcbed278dcc536e0762684323d7fd4fb19b58aae6bc370a825d0872b4cfbd810","e68cefe327be0e10ee06cf6b7a8c0f11271640333d1582c2176741896aade369","dd251a6e4b7330067b6564cee997bd93f225c34b9dd264d78a2f7d173e49c929","173f9b3bbfcb3b003e4e47cfa1beb919a86d98b876b3b716fceab6ab4c798178","0ad75079616eef71e14b6e86ce8437e7cd400198bf9b6c3ceee0ba57ae282159","f6518e0e7bbfeea52e5f4c30362d3daae20f0bd2514c5e42329ab908b3c5b758","f9cdb1fc4dec6cff402aff00df76486dda8769054241fe6b0f4b56199303b387","d91736ab6708dd0d7f83c2f318ee47c6daa36462847db773a3efe5e7d509a687","e616b243616a585d2214e141f6a395fad9206f9ba387cd3b33ced0329b9dad75","34f3b10887a6d64b5f76b11d52909782401035cc712b9e689e2ec42738a1e908","18f3e55c328113a51b2777ff1ef0b723c3a335e1eaa078ca58396dddd9b1bcd9","96f7695a5572ce38a34fe3989507c3daea633fdaac998d145579a79ea5a2ba13","50833af1952c7463dcbc29738b90f40a697eb9dd40ef1ea6194bfb68dcadae2d","0de76d4a200fdfc1e7461b9d2b9e6c2c0a9411eca9ad0328103f9dbbe0058968","d855052f6293077997da8feb02b4c70ef4b53250718909cc4ed1caa44239c729","75fadcc3c7ebab0094df691d9c97a3777fadbab96f7578215af470af984ad808","68c2ebbf998e59160df0e3509a0f91783a90910e252439494d0bc1c9b57484e6","ac5972c6afba09dca054dccece90ff2d37c4c55553e2407f49352ec9bd4633f5",{"version":"7648c1b7b9b82a0d69e872cc57af969f8b7d41dceea907b272cff7c892f7d743","signature":"bf54d7552e2fb15b0faf5b4487014d829b8f26704b10a20553518d8980cf3015"},"25be59b775e67cc65beb1255f3fb2beb9825364d562af0eb5d79bb639a826122","4691fa1492dbe996ccafd36a83207ae17b98b0f9f4880edb9001ffcf134d3d0d","b097127f11917a242ff0a61d38e42c0e2603805ab2aff89ad06f498387105598","a8a3b01da359e219a1149f5513875bfd6daadc35c83ae6bb43549c988079399f","5fcf0384c2dd78ca298b80247b2525af10fc781594a1167b5f0ac71b6b7d495e","1efdffef4b967b874292864e036e5458eb4ca3060592d417634455bff713c323","b084f6675e07d1299e29f9346004749c3d1e4a351232904e938e3a86735be17b","9babec8c98f8d4f8ab688c342ef0170ddedc273d8b827682c67a0fe35ba0ff21","e8a6dec36d50cdea1f27f15dd3eaef4f048ecda6174f2bf2982fe974a6328000","c049825db31784c6ac8c54a28a5eefbed58217ba48e0593cecd1d3e4a2643667","92cc5af972e55508330114de7421021c6368693b1c7e73cf681c3ea1b8c63102","6209f08242c9a06a34c09b804683eeccbaadaf8132ae1c16ddd63dcb56e6c728","209683acf2b86ea48c97df30f4d28e238ad722beebde14fde2dea5e0222fb566","6f093a1c0335effa7a21f4bfb11e5aa82e5a5962e214d4f547283e6890d95be4","db9946f1a7a9b9c745ceb306721d31affdc86f81d66c460cf67fd526431527af","bacf8dd5ecfd223718592569575b46d28d32c584ad3a1d6305f1fe85149ae5a5","73f23766460511d0af72b219c42c11dad65ca70264a8102cdc1d627328873b0f","dbee593872da8399370923be1764510557000de87a024733b9008e1c79db6f3c","ce49b4279a606066b40263d661352839a00d70133e9991f91c596b3cdebd8c13","d848fc05a76723a26bf1136f2c4915de40b1341a113d4d1def1b82e777753c27",{"version":"b06733e30b1d76da9afddd10c3a4c9289cb703e48e9bebfc4f3038938103ebfc","signature":"b26584a9347f495ecbfa3b96e5c7b4f2f8bdf18c9826a3bf6216e1b5aafb2997"},"ebfab65a98994469f9a4b278c687a526772b6591fd03455a2bad884d98d739ca","3bc9f7a616218ef55e7e4edaadb2bb564222e8c7bd0a3892c62b365129c63a6b","18bce981db129372ead78b31e7d906dd61fdd8248ed950155bce464ada553ab4","ef149de7aad9ca5400900673e349e64616f208e8829cceff26f0c23493a55da8","2d65be511e437df0b42880ef6fe69beea0f2ad7c841f58b539ebf033a12f5100","3fff0143abe5fc659b7dbef7df0f551e80c62915da61e93e9de565123a42aa81","52ca16c4e765d30b6604c69edd64a28b9c1cc533e37439a5e6f8781c3a15c742","20f71e2321a2fb2dd71b0abfa88a3eed99e6e8c40e704ff68833bbc94a03d2fe","e9ec6773f023b0ce81e1fe1105b08c6e45882eb9d026309c7b1ba7952356409a","143943f1a74be04d7ae4bbeee75f6207f5894240c13e7a44486941a95d600861","7e5f99a8000657097771e0c7f60482ab66d8bde421cbcec73cb6db159c5f9f49","3d4bf05a2ffbb5ad0bad338525e14ec33fbf32d9457c983e33e9c0cb50bf2092",{"version":"7afbb22ecbb2a59a19f0bc8c7a84d41ed0904ae2b9e317b7ee51c1d2ec9488b4","signature":"6631eeba73117d8bd1764488cbfdb03291697e814e066cf9a5c5b2ea687b9792"},"8b4a5d4615717e2a4895f78556e0d5d876b7e1c5223dbaf4e5d2a4fad8458d08",{"version":"0763e1f516f35928be0e24c9d8c70aaba5c9b82f07924896aca81580987ba299","signature":"b7d405ef7d92fb01774525d8f2f75940eb6640b0fa4b6e8ff0eb62016e4ded79"},{"version":"73e518a53769ade02ebca718f291047f0e94ff21561fdbb6af5df8d1adf1a709","signature":"3b8c306fcda5995f8d009f13de977adb6fbadf8d8f1756c5e4e47f8dfe5bc787"},"32ab25b7b28b24a138d879ca371b18c8fdfdd564ad5107e1333c5aa5d5fea494","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","30abc554c7ad13063a02ddd06757929b34357aea1f6fcf4ca39114cb0fc19384","fcb9cb4a8570b9099ce507408d7eeac7298f68373b26fcf01f01e15e88df1ef6","7ff9bffa9d22a77b967fb3f573bb61c70c3c3aca1be31bda5cbeb6b55a0661a1","1f516b304a706f252cd992d18c7acdeba7f109c92346a2af779cc305b9c920c3","44d7b18799c51760582a44a58ff3d5d2bcf59600539dd69b3b210b0ba8ddd755","2ed44ab9161013810a620f7d02437ce4356b6823c5a040e10122a8f803d5f67e","9b5a92b3b2b99dec8b50690e1fa8a455010e07b61e00739295cc8c07e044c4ed","080dcf169dc47f857dfe618038abac88718a0a604029a3af2aaf53419894e0ff","1e9b90eb635ac0698bc3ae0bacfe932b4828d198ab2e09fd73115eeba2f21299","606d7a2f83bf8ad25cdc170a5d45ebb7c8f23ab578c1cfd641f88272b563b4d5","4883525ae3ae0bee3471572a53e76f35cb85f743cfdab0b6754763f4a9682632","97e332d1e7076a9e2c1d5e74c6ca4a483d207baa3ea51237241389c3d8241e58",{"version":"3cba8316b5358d7465abd36d01cfab9ac913564a762b2dbfb5f6e10735ac35e8","affectsGlobalScope":true},{"version":"378f6c7a205b37cb00595323460a50c786e145ef00c48699357f50b479c920d2","signature":"0de2aac2c000d6b116e3f4dce633b06b14f02806415181db691bce2612cf7a77"},"2d0fc971637210b08c26d1d0c3772a164015a42955fc7287c37eb13bcf0f4828","524d3c99f6a986ef49414df8af19296a8b8378a7679992b5c287310050468c9f","d5c8b5e5c2eb1ca5e0b9dc1d4e9fec6158a62dc907622da0b50907af8ac1605d",{"version":"c038553bda9919999959bb123d2e2ffee6013a9d04488acfa7e27a51d417023d","signature":"91250d4cce1a264113126cbd038bcc779b3aab2800929a7c620d6ed47f7c2326"},"a52c5f687d788d283ea1fa38bdc2fabe0eac863135a7dfe175ec52b309f61892",{"version":"110f89ed49c7fbf8a82332f7e6b6612215df514b7c822dbfc52d45b3c3a896a4","signature":"04979f5131a723cdcd228d02736656f553536894fbea5c1bcdb84f5deb724d1a"},{"version":"a337ce3971146c073494e0ce6fda454329b056ea574431e2e72aa2072173f9e5","affectsGlobalScope":true},"9b5f343373d8bee33052fb510501b36d104888a66a7d70ec2aaf7e83fa8267d4","287d5c8bc3da906c8d04143eeede095d9135830af3cf17d0008a999afeb2141e","9a604088b13ccd9b982e91f73c800d4ec6934b97afbfbcc3ba618f36454ca895","26b7ca3903aeb68e13dc91171fcf5a08baf125c9b843153eb6311d566b3971b0","e07078d99fbb12ffbb47de63cdcbe24817b3e02886f53d46cbe9460b631501b7","f2e9584fe11014bf0d3aa8daa70c3ee6fd341e308fd06cec2a015e4be408260b","a58825dfef3de2927244c5337ff2845674d1d1a794fb76d37e1378e156302b90","1a458765deab35824b11b67f22b1a56e9a882da9f907bfbf9ce0dfaedc11d8fc","a48553595da584120091fb7615ed8d3b48aaea4b2a7f5bc5451c1247110be41a","ebba1c614e81bf35da8d88a130e7a2924058a9ad140abe79ef4c275d4aa47b0d","3f3cfb6d0795d076c62fca9fa90e61e1a1dd9ba1601cd28b30b21af0b989b85a","2647c7b6ad90f146f26f3cdf0477eed1cefb1826e8de3f61c584cc727e2e4496","891faf74d5399bee0d216314ecf7a0000ba56194ffd16b2b225e4e61706192fb","c1227e0b571469c249e7b152e98268b3ccdfd67b5324f55448fad877ba6dbbff","230a4cc1df158d6e6e29567bfa2bc88511822a068da08f8761cc4df5d2328dcc","c6ee2448a0c52942198242ec9d05251ff5abfb18b26a27970710cf85e3b62e50","39525087f91a6f9a246c2d5c947a90d4b80d67efb96e60f0398226827ae9161e","1bf429877d50f454b60c081c00b17be4b0e55132517ac322beffe6288b6e7cf6","b139b4ed2c853858184aed5798880633c290b680d22aee459b1a7cf9626a540d","037a9dab60c22cda0cd6c502a27b2ecfb1ac5199efe5e8c8d939591f32bd73c9","a21eaf3dc3388fae4bdd0556eb14c9e737e77b6f1b387d68c3ed01ca05439619","60931d8fb8f91afacbb005180092f4f745d2af8b8a9c0957c44c42409ec758e7","70e88656db130df927e0c98edcdb4e8beeb2779ac0e650b889ab3a1a3aa71d3d","a6473d7b874c3cffc1cb18f5d08dd18ac880b97ec0a651348739ade3b3730272","89720b54046b31371a2c18f7c7a35956f1bf497370f4e1b890622078718875b1","281637d0a9a4b617138c505610540583676347c856e414121a5552b9e4aeb818","87612b346018721fa0ee2c0cb06de4182d86c5c8b55476131612636aac448444","c0b2ae1fea13046b9c66df05dd8d36f9b1c9fcea88d822899339183e6ef1b952","8c7b41fd103b70c3a65b7ace9f16cd00570b405916d0e3bd63e9986ce91e6156","0e51075b769786db5e581e43a64529dca371040256e23d779603a2c8283af7d6","54fd7300c6ba1c98cda49b50c215cde3aa5dbae6786eaf05655abf818000954c","01a265adad025aa93f619b5521a9cb08b88f3c328b1d3e59c0394a41e5977d43","af6082823144bd943323a50c844b3dc0e37099a3a19e7d15c687cd85b3985790","241f5b92543efc1557ddb6c27b4941a5e0bb2f4af8dc5dd250d8ee6ca67ad67c","55e8db543ceaedfdd244182b3363613143ca19fc9dbc466e6307f687d100e1c8","27de37ad829c1672e5d1adf0c6a5be6587cbe405584e9a9a319a4214b795f83a","2d39120fb1d7e13f8141fa089543a817a94102bba05b2b9d14b6f33a97de4e0c","51c1a42c27ae22f5a2f7a26afcf9aa8e3fd155ba8ecc081c6199a5ce6239b5f4","72fb41649e77c743e03740d1fd8e18c824bd859a313a7caeba6ba313a84a79a9","6ee51191c0df1ec11db3fbc71c39a7dee2b3e77dcaab974348eaf04b2f22307d","b8a996130883aaffdee89e0a3e241d4674a380bde95f8270a8517e118350def7","a3dce310d0bd772f93e0303bb364c09fc595cc996b840566e8ef8df7ab0e5360","eb9fa21119013a1c7566d2154f6686c468e9675083ef39f211cd537c9560eb53","c6b5695ccff3ceab8c7a1fe5c5e1c37667c8e46b6fc9c3c953d53aa17f6e2e59","d08d0d4b4a47cc80dbea459bb1830c15ec8d5d7056742ae5ccc16dd4729047d0","975c1ef08d7f7d9a2f7bc279508cc47ddfdfe6186c37ac98acbf302cf20e7bb1","bd53b46bab84955dc0f83afc10237036facbc7e086125f81f13fd8e02b43a0d5","3c68d3e9cd1b250f52d16d5fbbd40a0ccbbe8b2d9dbd117bfd25acc2e1a60ebc","88f4763dddd0f685397f1f6e6e486b0297c049196b3d3531c48743e6334ddfcb","8f0ab3468882aba7a39acbc1f3b76589a1ef517bfb2ef62e2dd896f25db7fba6","407b6b015a9cf880756296a91142e72b3e6810f27f117130992a1138d3256740","0bee9708164899b64512c066ba4de189e6decd4527010cc325f550451a32e5ab","2472ae6554b4e997ec35ae5ad5f91ab605f4e30b97af860ced3a18ab8651fb89","df0e9f64d5facaa59fca31367be5e020e785335679aa088af6df0d63b7c7b3df","07ce90ffcac490edb66dfcb3f09f1ffa7415ecf4845f525272b53971c07ad284","801a0aa3e78ef62277f712aefb7455a023063f87577df019dde7412d2bc01df9","ab457e1e513214ba8d7d13040e404aea11a3e6e547d10a2cbbd926cccd756213","d62fbef71a36476326671f182368aed0d77b6577c607e6597d080e05ce49cf9e","2a72354cb43930dc8482bd6f623f948d932250c5358ec502a47e7b060ed3bbb6","cff4d73049d4fbcd270f6d2b3a6212bf17512722f8a9dfcc7a3ff1b8a8eef1f0","f9a7c0d530affbd3a38853818a8c739fbf042a376b7deca9230e65de7b65ee34","c024252e3e524fcebaeed916ccb8ede5d487eb8d705c6080dc009df3c87dd066","641448b49461f3e6936e82b901a48f2d956a70e75e20c6a688f8303e9604b2ff","0d923bfc7b397b8142db7c351ba6f59f118c4fe820c1e4a0b6641ac4b7ab533d","13737fae5d9116556c56b3fc01ffae01f31d77748bc419185514568d43aae9be","4224758de259543c154b95f11c683da9ac6735e1d53c05ae9a38835425782979","2704fd2c7b0e4df05a072202bfcc87b5e60a228853df055f35c5ea71455def95","cb52c3b46277570f9eb2ef6d24a9732c94daf83761d9940e10147ebb28fbbb8e","1bc305881078821daa054e3cb80272dc7528e0a51c91bf3b5f548d7f1cf13c2b","ba53329809c073b86270ebd0423f6e7659418c5bd48160de23f120c32b5ceccc","f0a86f692166c5d2b153db200e84bb3d65e0c43deb8f560e33f9f70045821ec9","b163773a303feb2cbfc9de37a66ce0a01110f2fb059bc86ea3475399f2c4d888","cf781f174469444530756c85b6c9d297af460bf228380ed65a9e5d38b2e8c669","cbe1b33356dbcf9f0e706d170f3edf9896a2abc9bc1be12a28440bdbb48f16b1","d8498ad8a1aa7416b1ebfec256149f369c4642b48eca37cd1ea85229b0ca00d6","d054294baaab34083b56c038027919d470b5c5b26c639720a50b1814d18c5ee4","4532f2906ba87ae0c4a63f572e8180a78fd612da56f54d6d20c2506324158c08","878bf2fc1bbed99db0c0aa2f1200af4f2a77913a9ba9aafe80b3d75fd2de6ccc","039d6e764bb46e433c29c86be0542755035fc7a93aa2e1d230767dd54d7307c2","f80195273b09618979ad43009ca9ad7d01461cce7f000dc5b7516080e1bca959","16a7f250b6db202acc93d9f1402f1049f0b3b1b94135b4f65c7a7b770a030083","d15e9aaeef9ff4e4f8887060c0f0430b7d4767deafb422b7e474d3a61be541b9","777ddacdcb4fb6c3e423d3f020419ae3460b283fc5fa65c894a62dff367f9ad2","9a02117e0da8889421c322a2650711788622c28b69ed6d70893824a1183a45a8","9e30d7ef1a67ddb4b3f304b5ee2873f8e39ed22e409e1b6374819348c1e06dfa","ddeb300b9cf256fb7f11e54ce409f6b862681c96cc240360ab180f2f094c038b","0dbdd4be29dfc4f317711269757792ccde60140386721bee714d3710f3fbbd66","1f92e3e35de7c7ddb5420320a5f4be7c71f5ce481c393b9a6316c0f3aaa8b5e4","b721dc785a4d747a8dabc82962b07e25080e9b194ba945f6ff401782e81d1cef","f88b42ae60eb60621eec477610a8f457930af3cb83f0bebc5b6ece0a8cc17126","97c89e7e4e301d6db3e35e33d541b8ab9751523a0def016d5d7375a632465346","29ab360e8b7560cf55b6fb67d0ed81aae9f787427cf2887378fdecf386887e07","009bfb8cd24c1a1d5170ba1c1ccfa946c5082d929d1994dcf80b9ebebe6be026","654ee5d98b93d5d1a5d9ad4f0571de66c37367e2d86bae3513ea8befb9ed3cac","83c14b1b0b4e3d42e440c6da39065ab0050f1556788dfd241643430d9d870cf3","d96dfcef148bd4b06fa3c765c24cb07ff20a264e7f208ec4c5a9cbb3f028a346","f65550bf87be517c3178ae5372f91f9165aa2f7fc8d05a833e56edc588331bb0","9f4031322535a054dcdd801bc39e2ed1cdeef567f83631af473a4994717358e1","e6ef5df7f413a8ede8b53f351aac7138908253d8497a6f3150df49270b1e7831","b5b3104513449d4937a542fb56ba0c1eb470713ec351922e7c42ac695618e6a4","2b117d7401af4b064388acbb26a745c707cbe3420a599dc55f5f8e0fd8dd5baa","7d768eb1b419748eec264eff74b384d3c71063c967ac04c55303c9acc0a6c5dd","2f1bf6397cecf50211d082f338f3885d290fb838576f71ed4f265e8c698317f9","54f0d5e59a56e6ba1f345896b2b79acf897dfbd5736cbd327d88aafbef26ac28","760f3a50c7a9a1bc41e514a3282fe88c667fbca83ce5255d89da7a7ffb573b18","e966c134cdad68fb5126af8065a5d6608255ed0e9a008b63cf2509940c13660c","64a39a5d4bcbe5c8d9e5d32d7eb22dd35ae12cd89542ecb76567334306070f73","c1cc0ffa5bca057cc50256964882f462f714e5a76b86d9e23eb9ff1dfa14768d","08ab3ecce59aceee88b0c88eb8f4f8f6931f0cfd32b8ad0e163ef30f46e35283","0736d054796bb2215f457464811691bf994c0244498f1bb3119c7f4a73c2f99a","23bc9533664545d3ba2681eb0816b3f57e6ed2f8dce2e43e8f36745eafd984d4","689cbcf3764917b0a1392c94e26dd7ac7b467d84dc6206e3d71a66a4094bf080","a9f4de411d2edff59e85dd16cde3d382c3c490cbde0a984bf15533cfed6a8539","e30c1cf178412030c123b16dbbee1d59c312678593a0b3622c9f6d487c7e08ba","837033f34e1d4b56eab73998c5a0b64ee97db7f6ee9203c649e4cd17572614d8","cc8d033897f386df54c65c97c8bb23cfb6912954aa8128bff472d6f99352bb80","ca5820f82654abe3a72170fb04bbbb65bb492c397ecce8df3be87155b4a35852","9badb725e63229b86fa35d822846af78321a84de4a363da4fe6b5a3262fa31f2","f8e96a237b01a2b696b5b31172339d50c77bef996b225e8be043478a3f4a9be5","7d048c0fbdb740ae3fa64225653304fdb8d8bb7d905facf14f62e72f3e0ba21a","c59b8fb44e6ad7dc3e80359b43821026730a82d98856b690506ba39b5b03789b","bd86b749fb17c6596803ace4cae1b6474d820fd680c157e66d884e7c43ef1b24","879ba0ae1e59ec935b82af4f3f5ca62cbddecb3eb750c7f5ab28180d3180ec86","14fb829e7830df3e326af086bb665fd8dc383b1da2cde92e8ef67b6c49b13980","ec14ef5e67a6522f967a17eeedb0b8214c17b5ae3214f1434fcfa0ea66e25756","b38474dee55446b3b65ea107bc05ea15b5b5ca3a5fa534371daed44610181303","511db7e798d39b067ea149b0025ad2198cfe13ce284a789ef87f0a629942d52f","0e50ecb8433db4570ed22f3f56fd7372ebddb01f4e94346f043eeb42b4ada566","2beccefff361c478d57f45279478baeb7b7bcdac48c6108bec3a2d662344e1ea","b5c984f3e386c7c7c736ed7667b94d00a66f115920e82e9fa450dc27ccc0301e","acdd01e74c36396d3743b0caf0b4c7801297ca7301fa5db8ce7dbced64ec5732","82da8b99d0030a3babb7adfe3bb77bc8f89cc7d0737b622f4f9554abdc53cd89","80e11385ab5c1b042e02d64c65972fff234806525bf4916a32221d1baebfe2f9","a894178e9f79a38124f70afb869468bace08d789925fd22f5f671d9fb2f68307","b44237286e4f346a7151d33ff98f11a3582e669e2c08ec8b7def892ad7803f84","910c0d9ce9a39acafc16f6ca56bdbdb46c558ef44a9aa1ee385257f236498ee1","fed512983a39b9f0c6f1f0f04cc926aca2096e81570ae8cd84cad8c348e5e619","2ebf8f17b91314ec8167507ee29ebeb8be62a385348a0b8a1e7f433a7fb2cf89","cb48d9c290927137bfbd9cd93f98fca80a3704d0a1a26a4609542a3ab416c638","9ab3d74792d40971106685fb08a1c0e4b9b80d41e3408aa831e8a19fedc61ab8","394f9d6dc566055724626b455a9b5c86c27eeb1fdbd499c3788ab763585f5c41","9bc0ab4b8cb98cd3cb314b341e5aaab3475e5385beafb79706a497ebddc71b5d","35433c5ee1603dcac929defe439eec773772fab8e51b10eeb71e6296a44d9acb","aeee9ba5f764cea87c2b9905beb82cfdf36f9726f8dea4352fc233b308ba2169","35ea8672448e71ffa3538648f47603b4f872683e6b9db63168d7e5e032e095ef","8e63b8db999c7ad92c668969d0e26d486744175426157964771c65580638740d","f9da6129c006c79d6029dc34c49da453b1fe274e3022275bcdecaa02895034a0","2e9694d05015feb762a5dc7052dd51f66f692c07394b15f6aff612a9fb186f60","f570c4e30ea43aecf6fc7dc038cf0a964cf589111498b7dd735a97bf17837e3a","cdad25d233b377dd852eaa9cf396f48d916c1f8fd2193969fcafa8fe7c3387cb","243b9e4bcd123a332cb99e4e7913114181b484c0bb6a3b1458dcb5eb08cffdc4","ada76d272991b9fa901b2fbd538f748a9294f7b9b4bc2764c03c0c9723739fd1","6409389a0fa9db5334e8fbcb1046f0a1f9775abce0da901a5bc4fec1e458917c","af8d9efb2a64e68ac4c224724ac213dbc559bcfc165ce545d498b1c2d5b2d161","094faf910367cc178228cafe86f5c2bd94a99446f51e38d9c2a4eb4c0dec534d","dc4cf53cebe96ef6b569db81e9572f55490bd8a0e4f860aac02b7a0e45292c71","2c23e2a6219fbce2801b2689a9920548673d7ca0e53859200d55a0d5d05ea599","62491ce05a8e3508c8f7366208287c5fded66aad2ba81854aa65067d328281cc","8be1b9d5a186383e435c71d371e85016f92aa25e7a6a91f29aa7fd47651abf55","95a1b43dfa67963bd60eb50a556e3b08a9aea65a9ffa45504e5d92d34f58087a","b872dcd2b627694001616ab82e6aaec5a970de72512173201aae23f7e3f6503d","13517c2e04de0bbf4b33ff0dde160b0281ee47d1bf8690f7836ba99adc56294b","a9babac4cb35b319253dfc0f48097bcb9e7897f4f5762a5b1e883c425332d010","3d97a5744e12e54d735e7755eabc719f88f9d651e936ff532d56bdd038889fc4","7fffc8f7842b7c4df1ae19df7cc18cd4b1447780117fca5f014e6eb9b1a7215e","aaea91db3f0d14aca3d8b57c5ffb40e8d6d7232e65947ca6c00ae0c82f0a45dc","c62eefdcc2e2266350340ffaa43c249d447890617b037205ac6bb45bb7f5a170","9924ad46287d634cf4454fdbbccd03e0b7cd2e0112b95397c70d859ae00a5062","b940719c852fd3d759e123b29ace8bbd2ec9c5e4933c10749b13426b096a96a1","2745055e3218662533fbaddfb8e2e3186f50babe9fb09e697e73de5340c2ad40","5d6b6e6a7626621372d2d3bbe9e66b8168dcd5a40f93ae36ee339a68272a0d8b","64868d7db2d9a4fde65524147730a0cccdbd1911ada98d04d69f865ea93723d8","368b06a0dd2a29a35794eaa02c2823269a418761d38fdb5e1ac0ad2d7fdd0166","20164fb31ecfad1a980bd183405c389149a32e1106993d8224aaa93aae5bfbb9","bb4b51c75ee079268a127b19bf386eb979ab370ce9853c7d94c0aca9b75aff26","f0ef6f1a7e7de521846c163161b0ec7e52ce6c2665a4e0924e1be73e5e103ed3","84ab3c956ae925b57e098e33bd6648c30cdab7eca38f5e5b3512d46f6462b348","70d6692d0723d6a8b2c6853ed9ab6baaa277362bb861cf049cb12529bd04f68e","b35dc79960a69cd311a7c1da15ee30a8ab966e6db26ec99c2cc339b93b028ff6","29d571c13d8daae4a1a41d269ec09b9d17b2e06e95efd6d6dc2eeb4ff3a8c2ef","5f8a5619e6ae3fb52aaaa727b305c9b8cbe5ff91fa1509ffa61e32f804b55bd8","15becc25682fa4c93d45d92eab97bc5d1bb0563b8c075d98f4156e91652eec86","702f5c10b38e8c223e1d055d3e6a3f8c572aa421969c5d8699220fbc4f664901","4db15f744ba0cd3ae6b8ac9f6d043bf73d8300c10bbe4d489b86496e3eb1870b","80841050a3081b1803dbee94ff18c8b1770d1d629b0b6ebaf3b0351a8f42790b","9b7987f332830a7e99a4a067e34d082d992073a4dcf26acd3ecf41ca7b538ed5","e95b8e0dc325174c9cb961a5e38eccfe2ac15f979b202b0e40fa7e699751b4e9","21360a9fd6895e97cbbd36b7ce74202548710c8e833a36a2f48133b3341c2e8f","d74ac436397aa26367b37aa24bdae7c1933d2fed4108ff93c9620383a7f65855","65825f8fda7104efe682278afec0a63aeb3c95584781845c58d040d537d3cfed","1f467a5e086701edf716e93064f672536fc084bba6fc44c3de7c6ae41b91ac77","7e12b5758df0e645592f8252284bfb18d04f0c93e6a2bf7a8663974c88ef01de","47dbc4b0afb6bc4c131b086f2a75e35cbae88fb68991df2075ca0feb67bbe45b","146d8745ed5d4c6028d9a9be2ecf857da6c241bbbf031976a3dc9b0e17efc8a1","c4be9442e9de9ee24a506128453cba1bdf2217dbc88d86ed33baf2c4cbfc3e84","c9b42fef8c9d035e9ee3be41b99aae7b1bc1a853a04ec206bf0b3134f4491ec8","e6a958ab1e50a3bda4857734954cd122872e6deea7930d720afeebd9058dbaa5","088adb4a27dab77e99484a4a5d381f09420b9d7466fce775d9fbd3c931e3e773","ddf3d7751343800454d755371aa580f4c5065b21c38a716502a91fbb6f0ef92b","9b93adcccd155b01b56b55049028baac649d9917379c9c50c0291d316c6b9cdd","b48c56cc948cdf5bc711c3250a7ccbdd41f24f5bbbca8784de4c46f15b3a1e27","9eeee88a8f1eed92c11aea07551456a0b450da36711c742668cf0495ffb9149c","aeb081443dadcb4a66573dba7c772511e6c3f11c8fa8d734d6b0739e5048eb37","acf16021a0b863117ff497c2be4135f3c2d6528e4166582d306c4acb306cb639","13fbdad6e115524e50af76b560999459b3afd2810c1cbaa52c08cdc1286d2564","d3972149b50cdea8e6631a9b4429a5a9983c6f2453070fb8298a5d685911dc46","e2dcfcb61b582c2e1fa1a83e3639e2cc295c79be4c8fcbcbeef9233a50b71f7b","4e49b8864a54c0dcde72d637ca1c5718f5c017f378f8c9024eff5738cd84738f","8db9eaf81db0fc93f4329f79dd05ea6de5654cabf6526adb0b473d6d1cd1f331","f76d2001e2c456b814761f2057874dd775e2f661646a5b4bacdcc4cdaf00c3e6","d95afdd2f35228db20ec312cb7a014454c80e53a8726906bd222a9ad56f58297","8302bf7d5a3cb0dc5c943f77c43748a683f174fa5fae95ad87c004bf128950ce","ced33b4c97c0c078254a2a2c1b223a68a79157d1707957d18b0b04f7450d1ad5","0e31e4ec65a4d12b088ecf5213c4660cb7d37181b4e7f1f2b99fe58b1ba93956","3028552149f473c2dcf073c9e463d18722a9b179a70403edf8b588fcea88f615","0ccbcaa5cb885ad2981e4d56ed6845d65e8d59aba9036796c476ca152bc2ee37","cb86555aef01e7aa1602fce619da6de970bb63f84f8cffc4d21a12e60cd33a8c","a23c3bb0aecfbb593df6b8cb4ba3f0d5fc1bf93c48cc068944f4c1bdb940cb11","544c1aa6fcc2166e7b627581fdd9795fc844fa66a568bfa3a1bc600207d74472","745c7e4f6e3666df51143ed05a1200032f57d71a180652b3528c5859a062e083","0308b7494aa630c6ecc0e4f848f85fcad5b5d6ef811d5c04673b78cf3f87041c","c540aea897a749517aea1c08aeb2562b8b6fc9e70f938f55b50624602cc8b2e4","a1ab0c6b4400a900efd4cd97d834a72b7aeaa4b146a165043e718335f23f9a5f","89ebe83d44d78b6585dfd547b898a2a36759bc815c87afdf7256204ab453bd08","e6a29b3b1ac19c5cdf422685ac0892908eb19993c65057ec4fd3405ebf62f03d","c43912d69f1d4e949b0b1ce3156ad7bc169589c11f23db7e9b010248fdd384fa","d585b623240793e85c71b537b8326b5506ec4e0dcbb88c95b39c2a308f0e81ba","aac094f538d04801ebf7ea02d4e1d6a6b91932dbce4894acb3b8d023fdaa1304","da0d796387b08a117070c20ec46cc1c6f93584b47f43f69503581d4d95da2a1e","f2307295b088c3da1afb0e5a390b313d0d9b7ff94c7ba3107b2cdaf6fca9f9e6","d00bd133e0907b71464cbb0adae6353ebbec6977671d34d3266d75f11b9591a8","c3616c3b6a33defc62d98f1339468f6066842a811c6f7419e1ee9cae9db39184","7d068fc64450fc5080da3772705441a48016e1022d15d1d738defa50cac446b8","4c3c31fba20394c26a8cfc2a0554ae3d7c9ba9a1bc5365ee6a268669851cfe19","584e168e0939271bcec62393e2faa74cff7a2f58341c356b3792157be90ea0f7","50b6829d9ef8cf6954e0adf0456720dd3fd16f01620105072bae6be3963054d1","a72a2dd0145eaf64aa537c22af8a25972c0acf9db1a7187fa00e46df240e4bb0","0008a9f24fcd300259f8a8cd31af280663554b67bf0a60e1f481294615e4c6aa","21738ef7b3baf3065f0f186623f8af2d695009856a51e1d2edf9873cee60fe3a","19c9f153e001fb7ab760e0e3a5df96fa8b7890fc13fc848c3b759453e3965bf0","5d3a82cef667a1cff179a0a72465a34a6f1e31d3cdba3adce27b70b85d69b071","38763534c4b9928cd33e7d1c2141bc16a8d6719e856bf88fda57ef2308939d82","292ec7e47dfc1f6539308adc8a406badff6aa98c246f57616b5fa412d58067f8","a11ee86b5bc726da1a2de014b71873b613699cfab8247d26a09e027dee35e438","95a595935eecbce6cc8615c20fafc9a2d94cf5407a5b7ff9fa69850bbef57169","c42fc2b9cf0b6923a473d9c85170f1e22aa098a2c95761f552ec0b9e0a620d69","8c9a55357196961a07563ac00bb6434c380b0b1be85d70921cd110b5e6db832d","73149a58ebc75929db972ab9940d4d0069d25714e369b1bc6e33bc63f1f8f094","c98f5a640ffecf1848baf321429964c9db6c2e943c0a07e32e8215921b6c36c3","43738308660af5cb4a34985a2bd18e5e2ded1b2c8f8b9c148fca208c5d2768a6","bb4fa3df2764387395f30de00e17d484a51b679b315d4c22316d2d0cd76095d6","0498a3d27ec7107ba49ecc951e38c7726af555f438bab1267385677c6918d8ec","fe24f95741e98d4903772dc308156562ae7e4da4f3845e27a10fab9017edae75","b63482acb91346b325c20087e1f2533dc620350bf7d0aa0c52967d3d79549523","2aef798b8572df98418a7ac4259b315df06839b968e2042f2b53434ee1dc2da4","249c41965bd0c7c5b987f242ac9948a2564ef92d39dde6af1c4d032b368738b0","7141b7ffd1dcd8575c4b8e30e465dd28e5ae4130ff9abd1a8f27c68245388039","d1dd80825d527d2729f4581b7da45478cdaaa0c71e377fd2684fb477761ea480","e78b1ba3e800a558899aba1a50704553cf9dc148036952f0b5c66d30b599776d","be4ccea4deb9339ca73a5e6a8331f644a6b8a77d857d21728e911eb3271a963c","3ee5a61ffc7b633157279afd7b3bd70daa989c8172b469d358aed96f81a078ef","23c63869293ca315c9e8eb9359752704068cc5fff98419e49058838125d59b1e","af0a68781958ab1c73d87e610953bd70c062ddb2ab761491f3e125eadef2a256","c20c624f1b803a54c5c12fdd065ae0f1677f04ffd1a21b94dddee50f2e23f8ec","49ef6d2d93b793cc3365a79f31729c0dc7fc2e789425b416b1a4a5654edb41ac","c2151736e5df2bdc8b38656b2e59a4bb0d7717f7da08b0ae9f5ddd1e429d90a1","3f1baacc3fc5e125f260c89c1d2a940cdccb65d6adef97c9936a3ac34701d414","3603cbabe151a2bea84325ce1ea57ca8e89f9eb96546818834d18fb7be5d4232","989762adfa2de753042a15514f5ccc4ed799b88bdc6ac562648972b26bc5bc60","a23f251635f89a1cc7363cae91e578073132dc5b65f6956967069b2b425a646a","995ed46b1839b3fc9b9a0bd5e7572120eac3ba959fa8f5a633be9bcded1f87ae","ddabaf119da03258aa0a33128401bbb91c54ef483e9de0f87be1243dd3565144","4e79855295a233d75415685fa4e8f686a380763e78a472e3c6c52551c6b74fd3","3b036f77ed5cbb981e433f886a07ec719cf51dd6c513ef31e32fd095c9720028","ee58f8fca40561d30c9b5e195f39dbc9305a6f2c8e1ff2bf53204cacb2cb15c0","83ac7ceab438470b6ddeffce2c13d3cf7d22f4b293d1e6cdf8f322edcd87a393","ef0e7387c15b5864b04dd9358513832d1c93b15f4f07c5226321f5f17993a0e2","86b6a71515872d5286fbcc408695c57176f0f7e941c8638bcd608b3718a1e28c","be59c70c4576ea08eee55cf1083e9d1f9891912ef0b555835b411bc4488464d4","57c97195e8efcfc808c41c1b73787b85588974181349b6074375eb19cc3bba91","d7cafcc0d3147486b39ac4ad02d879559dd3aa8ac4d0600a0c5db66ab621bdf3","b5c8e50e4b06f504513ca8c379f2decb459d9b8185bdcd1ee88d3f7e69725d3b","122621159b4443b4e14a955cf5f1a23411e6a59d2124d9f0d59f3465eddc97ec","c4889859626d56785246179388e5f2332c89fa4972de680b9b810ab89a9502cd","e9395973e2a57933fcf27b0e95b72cb45df8ecc720929ce039fc1c9013c5c0dc","a81723e440f533b0678ce5a3e7f5046a6bb514e086e712f9be98ebef74bd39b8","298d10f0561c6d3eb40f30001d7a2c8a5aa1e1e7e5d1babafb0af51cc27d2c81","e256d96239faffddf27f67ff61ab186ad3adaa7d925eeaf20ba084d90af1df19","8357843758edd0a0bd1ef4283fcabb50916663cf64a6a0675bd0996ae5204f3d","1525d7dd58aad8573ae1305cc30607d35c9164a8e2b0b14c7d2eaea44143f44b","fd19dff6b77e377451a1beacb74f0becfee4e7f4c2906d723570f6e7382bd46f","3f3ef670792214404589b74e790e7347e4e4478249ca09db51dc8a7fca6c1990","0da423d17493690db0f1adc8bf69065511c22dd99c478d9a2b59df704f77301b","ba627cd6215902dbe012e96f33bd4bf9ad0eefc6b14611789c52568cf679dc07","5fce817227cd56cb5642263709b441f118e19a64af6b0ed520f19fa032bdb49e","754107d580b33acc15edffaa6ac63d3cdf40fb11b1b728a2023105ca31fcb1a8","03cbeabd581d540021829397436423086e09081d41e3387c7f50df8c92d93b35","91322bf698c0c547383d3d1a368e5f1f001d50b9c3c177de84ab488ead82a1b8","79337611e64395512cad3eb04c8b9f50a2b803fa0ae17f8614f19c1e4a7eef8d","6835fc8e288c1a4c7168a72a33cb8a162f5f52d8e1c64e7683fc94f427335934","a90a83f007a1dece225eb2fd59b41a16e65587270bd405a2eb5f45aa3d2b2044","320333b36a5e801c0e6cee69fb6edc2bcc9d192cd71ee1d28c4b46467c69d0b4","e4e2457e74c4dc9e0bb7483113a6ba18b91defc39d6a84e64b532ad8a4c9951c","c39fb1745e021b123b512b86c41a96497bf60e3c8152b167da11836a6e418fd7","95ab9fb3b863c4f05999f131c0d2bd44a9de8e7a36bb18be890362aafa9f0a26","c95da8d445b765b3f704c264370ac3c92450cefd9ec5033a12f2b4e0fca3f0f4","ac534eb4f4c86e7bef6ed3412e7f072ec83fe36a73e79cbf8f3acb623a2447bb","a2a295f55159b84ca69eb642b99e06deb33263b4253c32b4119ea01e4e06a681","271584dd56ae5c033542a2788411e62a53075708f51ee4229c7f4f7804b46f98","f8fe7bba5c4b19c5e84c614ffcd3a76243049898678208f7af0d0a9752f17429","bad7d161bfe5943cb98c90ec486a46bf2ebc539bd3b9dbc3976968246d8c801d","be1f9104fa3890f1379e88fdbb9e104e5447ac85887ce5c124df4e3b3bc3fece","2d38259c049a6e5f2ea960ff4ad0b2fb1f8d303535afb9d0e590bb4482b26861","ae07140e803da03cc30c595a32bb098e790423629ab94fdb211a22c37171af5a","b0b6206f9b779be692beab655c1e99ec016d62c9ea6982c7c0108716d3ebb2ec","cc39605bf23068cbec34169b69ef3eb1c0585311247ceedf7a2029cf9d9711bd","132d600b779fb52dba5873aadc1e7cf491996c9e5abe50bcbc34f5e82c7bfe8a","429a4b07e9b7ff8090cc67db4c5d7d7e0a9ee5b9e5cd4c293fd80fca84238f14","4ffb10b4813cdca45715d9a8fc8f54c4610def1820fae0e4e80a469056e3c3d5","673a5aa23532b1d47a324a6945e73a3e20a6ec32c7599e0a55b2374afd1b098d","a70d616684949fdff06a57c7006950592a897413b2d76ec930606c284f89e0b9","ddfff10877e34d7c341cb85e4e9752679f9d1dd03e4c20bf2a8d175eda58d05b","d4afbe82fbc4e92c18f6c6e4007c68e4971aca82b887249fdcb292b6ae376153","9a6a791ca7ed8eaa9a3953cbf58ec5a4211e55c90dcd48301c010590a68b945e","10098d13345d8014bbfd83a3f610989946b3c22cdec1e6b1af60693ab6c9f575","0b5880de43560e2c042c5337f376b1a0bdae07b764a4e7f252f5f9767ebad590","2c8381a3a5a1663aa1723b31f3718dda9a359ad8eef9342b79f553de106b7ead","7f1daa1596fbd1338da3f7799795a3ac7a23bb9ee2087c1b23cfc23646560d64","650386987caf799d80915bff5a4bf5ca2bafc20f416f94ede6e6fd8bfdcb7ab7","45b6a651b5e502cdfa93dc2f23779752def4ada323ebcfc34e4a4d22e9589971","2d526d2a2d6dfd1980fb6eaf7aa668c24d339e27b41cac2a72efc75abe301b35","3497a480eea08cac320bb6ce67d1b964629a0e93a052994f1ac1e6840c2fa799","9438baebd02e0d31ef9aa148d9b55b03bb10651c2a5a495201b51655fbfccbd9","a0e2db99b41c8a4a2b65dc3a962b1115127d8c491116a9fb501f4d5a2babbebd","ae0d70b4f8a3a43cb0a5a89859aca3611f2789a3bca6a387f9deab912b7605b0","966b0f7789547bb149ad553f5a8c0d7b4406eceac50991aaad8a12643f3aec71","1438f870cb60173c3be51d20fe079188b94784375480f0a0f6e429fa2f15df4f","86885ffa93ba1499a3dc269e603a64c53c88627614e06b6cc15f9ae84f13e058","69af69b8c3d4e6df92557dbf0a9c726089d22b9487f680046d0a324b2a818cf3","b7df18e92ef6717271258b32a5b2e1b80633f0aa5085e540fa90a5fabbd79912","ddfc164758259e50dc56fa38ad125ac90b7340e07d78ed79dcfc3815d19ccaf7","1ae276ec95810690cb1b4481a1fa4287a3bd0fe0fe85aba96f4e4ffa3b8d6312","28821699b18451a283a8af6d801fa9e4e97fc9c982262475e6b9099d8473d6bc","0bdd4d799425f5e7fb4492519f703809b9a541a16132d8d596d45b7cab93079e","1434790b45d80442351fd24cc842773397e2d38dbced35d0a09ddc0f8863ee78","75dbc3ea3cb1bfdc264455e565ad5505c61795f51851597f6909884311d8f3f5","9a14f56dcdc4db8193a9163fdabf47e011ab92a87759202fdb65690b671a778a","a4a548b5c2db93a5e084760fe9f01e733bde167592de69ac4a257e24b10c8b75","3cfb7c0c642b19fb75132154040bb7cd840f0002f9955b14154e69611b9b3f81","8387ec1601cf6b8948672537cf8d430431ba0d87b1f9537b4597c1ab8d3ade5b","d16f1c460b1ca9158e030fdf3641e1de11135e0c7169d3e8cf17cc4cc35d5e64","a934063af84f8117b8ce51851c1af2b76efe960aa4c7b48d0343a1b15c01aedf","e3c5ad476eb2fca8505aee5bdfdf9bf11760df5d0f9545db23f12a5c4d72a718","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","d0570ce419fb38287e7b39c910b468becb5b2278cf33b1000a3d3e82a46ecae2","3aca7f4260dad9dcc0a0333654cb3cde6664d34a553ec06c953bce11151764d7","a0a6f0095f25f08a7129bc4d7cb8438039ec422dc341218d274e1e5131115988","1d2699a343a347a830be26eb17ab340d7875c6f549c8d7477efb1773060cc7e5","45785e608b3d380c79e21957a6d1467e1206ac0281644e43e8ed6498808ace72","bece27602416508ba946868ad34d09997911016dbd6893fb884633017f74e2c5","2a90177ebaef25de89351de964c2c601ab54d6e3a157cba60d9cd3eaf5a5ee1a","82200e963d3c767976a5a9f41ecf8c65eca14a6b33dcbe00214fcbe959698c46","b4966c503c08bbd9e834037a8ab60e5f53c5fd1092e8873c4a1c344806acdab2","c10aa77c85a2d30567a6c23d3c765ccda99983fe8c224eb5708570e1e3444bd6","79410b2e5ccc5aef9710303a24d4101159e7b89a6b77dcb694b376b07a6b3b06","4fb9fedd7d6135fd54180a1921b1bec438b797a564af8620ed19559b4fcac829",{"version":"8664623bfe116b3282660b1c33b79e9841506de8dfed040b2ad1606e21032c8f","affectsGlobalScope":true},"7a129438cedf12b5f1b5f773a3e96242b7569c95243432dcf12618f80fca5cdc","287ab4853a7bee3a73d11b19c033d8f7d370e21ffcd0e35ab9490b0fe9e36405","cc262829d4a225430f21bec9a73eb841e32dd47a7c0b12635ab3907d057a75fc","798675ae9dcb83b34d35974271692507b1446baf09a5f2b255ebe5809e5a35be","9235ea108c4c08798dfc868fd7ded6553d663e15bdf904b08abd206d85046647","086f27011443634c563bcb79f06d7c8afc9ec7c8dbbba03f2e435604cee67f0f","78346aa3ec30bb50b2e25d1abe29773131b76eb3281c5aeed6617c4d134a0c7b","bec650f614b3cfea5bf390745354a3c24bb0574ba3a92c7143fd10ccb79c91ab","24efee6e42784df2ea9be5254ebdb98450a75973e2a9b27957af96668e8adf1b","5355ba7a8096bc182b130821aa823d78665a966bf6481961c347f62959610150","efb7cf0e193d7c68b91a4b41d389aa46b451e3e3f59c3202043ef982535f1967","d2a32b1c9e3cfbceb0107710704602ea3003d2b27cd337fd22009dc838e02413","390590994257976cfd6fcd5f27ad26737f69eaed9fbe14938451750b010dd6e3","94260f1a12e90824fe269509d562fd8fe22614393cedbba65f48d2b350517ec1","93916079fbc2f7e6efe31ba13ec149f6f46a4e077512d618915b5401e64e7a16","378079734e54c32127057dbc2edb2703244d1f233cba4ea835c36b32e160fb5b","9d11c19b60672c01ce9a2badddf1727872582eb1f85072a8f094f3ce5eec17a1","2b0fac9ec2bef8cb832a82b6c827e827099913779f94b5124ebac051ce63c75e","a47f07b2fe6688c8d33e91d744cfa113d32385700febb24402ecdc2d83202b2c","76878dce7894221177f4f7ccd15c22d6e786fbabb122dffbc148e8012382ea70","342d437a8e6f06a2539185b9a1a3e970e3f7e77b66e7fbd7ad4a23d96b6319bf","17574461fcd2295875d328885cfd876045562835fa2834fd1f8a87958f6315b3","af51cdc4aac8d3d3ef578d092edb86ff7a240a50ae4dd0b843667fb7a23363e6","0f133dbd5118692c81ad335f0e5bdf2011c4ef17c69cb9f01d9cc53a9341db4a","48c4222f8192885d0cc8de9ff6ccac4e97eab50f239dfceb4a0bb3f3afdc1861","e3c8648f6f18c00a83329b335d6c44084244b9b78b63260f719f100abbf1f26d","fadd634ec579c274f1363d3f37fbdd95345666631abae501e2b3dad7f711ae74","21c9dd0dd9301bdd86c3b56889971803ace4c4b263b4de7361db0abe5e3bfcc2","2784ae11e899f4d74b423d97796d75ec96719a3fc75575ddd90ae9ee48734865","8a6f0b7760b5b02e9e25f0534aeb880a3595a7e7c3abef9dfd86d1f7243e6493","2825f6e33fb8381aba9fff07468727e957bc759d4e56ea6303412216661f96d8","c9d433d2bd63f22107d3d5f70d255a9240cde0d25c7df5096685126930d560f6","697dc5b437732cb03f6bf404e0c744f614664c14ec4549972a31bd312b8f7009","0cc4ea0976de00d85f70736cab27c3877a9b0f838314de36606d87071ceaa054","f38de91c0f358ef33080bccbdd537df6343b44df245d76fe1519ad2f6216f231","f6ebaa4cef2317b43e60ae72ced176aa5f214e2875fc2113b5f46002aea568f2","565f56faa819096858ff12706d55603c412c08a1acdf471f393469fc1017b971","e474c7cbd268bf1a09024d8dd15a1dd4b7bbf88e6d9134c675231309bc994a00","6a4f603dd5fff4e95e854e58b5b5574c2f257e4965048d1a105fe0809613c744","6b3d3adfc8872b077b0128d2b869a03909e66307776849fb087976b3b28ef2e4","4fd57d350371bfdd4bef9dd59a707555c55dbf51bac989b4578406da7571053e","884bbe4b80f43e3c9f4d2ac8b07c26bd71197ec57fbd81cf249fe0fde8a1b6b8","67620acf8a29a8c8878a21564f31f8b0a71c61f1a86f1b79ff554a1508fd9052","7189d34a71873d1596583393f69e8e452bb431c66277fbf92a3556aaecb14faf","8c1bcc29c5641bebdb3e14e501c5a053dc9aad5808e33539174e99f4a4ad242d","b39d88b0137564222dd0089020ea4346a835a6b38acd00a0a9d7c1d99387b913","f54345e64a4a2e64aeabc0176d6a0b253695b06b7d1077aca9cad981f6a9ac83","94762fd777d13eb7a5a44d5511e9b2ec877afb2418dd3ddd7b480654d8ec69a3","5f17a6703fb19488d4efa4284a2c38bf63a0153f7c48bb9eb049b56606c504e9","4d49b5ea22c4cbd30d6b5e117cd355db55ce791a7d05f120bc024af92e9911ed","43cd4a7bec6ba3775c0b01579f3a8b613047aa0b3cafde44b34871f2097443ab","c83e65334a9dc08a338f994a34bd70328c626976881d71d6aaa8dc7d66b08d96",{"version":"a09f1491ce2b06913aa9f94c3f6947b8c6157ce6b973a99b7c703add839c00d0","affectsGlobalScope":true},"4b6e6b00488502436faac756b5998ed157741fee4de86698da012993c0ca927a",{"version":"e46fee4a142a7320280aeb3e178ea8403db09b711b5863d3c9c884dd18d3ceba","signature":"7ca70063da51d5500f40ad862c199f58b300ca8cdd61ff9d8f5aedb229dcb3b7"},"3bf5ee41e058eeed2bf50cb7dd25c7eec86c68d584eb540917216e7389391cf1","2cb1db6e56969ea09fe63f083e8aeff348da7852c96c1e2a9ec2ddfc5841dfbc","f77db1be13db8dcf8c7a268c1f235c1ba1e4707e829175cdc237421b3c346f9d","05cb95655ecadfd1230547b84367d1c4d40a4bb6309545b8dc4d1638a3de1a50","e980a9cf8404a649ff3a2f0628d76e4469613c02b98bd3b922756d7d962476c9","f8adbcb59256526bc69d94fb5c826e812ebd1321b30ab35baa9997d74d45dd73","050a4570de5ad6e47cc9ac9fd9db7a26e57dbe1daadadbc19b20567941f8bf1a","5ed040255a4d5181f8ecb4ba90b8b38e0a6f1becf0ed860ca75b6e52c46db0bc","e22a49cd604cab3b62b1968a363d7b182edcb23d46793ed12cf5cfc6b1597f39","ff1b4730f5d49d37b73ee2db3443145daa0bfc7ff9c865134d871b08955e389b","8e64b72fa289b7f133b8cdb7d837f73e30ca7eb76ad88e1020d97c405c94fd7e","1f907507e41cc3df66b4521b80134bb8f7afada8d31c10f7100c93c90ab0f84e","6bb14070b70b4c9a897a4f5088af984e6e316b420d00d82fb962bad577896723","46e17953f7ffbf43d4328fcb5983e0ade2932fb56e84181e6929fcdcfa7c7aa6","113aef5576cd65f310927b17ae5f6ac8745c542a660bace5f019034d536fbd04","ddf0fdbb010c94978c1151441171f0aac236a23b6786e9f6332f745527d905e9","a2c1678ec68c42795e2ac068a7d026b61680357d2a881c9df211dd0f83d077fd","2fe207d2e8662abb709772fff1f3ec3116a4787b5caa4e862daa5dab2753edd7","a7af5f01007f450dc8cf2cdbbb11f4d4bf8bf3faa869d21267db5de74ebf665a","709cb4986cbe2b58ac3bbbad45dbfa24cda1b62c794c73b96e9ff1236dd0d5d1","afdc9b1fd1937d9b649bca2b377d1144cc9c48158403c17cfd21b6e1e8b25099","1d47324801b498d62f31ea179f58e1f3eaa1e607914504a7c92fb5465affb851","95fdf978302838125ac79d9d5e9485d8fa1ddd909664bf5cc3b45ec31f794fda","d92bf7d6d30c85e53b961236ceeb099e73a1a874849d038a348b51383087872f","e56e4a57ca5aa762d67fd3d16471c47592469944315fa5e92b3b09c83eabae91","f3d31927b7a3d0f2f119a05a102af2bdd1fc4f759fe43d508a64a80b3b341f6b","678700fba88589e28648a923e4b98ab60f3f7df4742412419e29f95966da4475","5a71b307074ef3d2794c4104248b7a3cad5f486df204da65862a7d24f698fc95","9a4496ad6d48bc801a122c11e94ee1e3f0710bda38b125573f67f5cb0add1733","afa5e16f2ad07d847701e3bde9e7ab36f87e0e3a5c0cb7998644791a1fa3c5b1","98cd9124b5d8438db4b4dbd247b2c68ac22b6366a43e6dc4945ae32972f157fc","dc21879e45f3a023b5fe459c3da5f2f3cf995f21a1ac533049d8950ce394c045","622d6ce66ac838d5d7e968daf4ae760cf49797e3fbfaa2b21d01e0fb5d625bc9","ecfa30418b2200ba6496b5f59b4c09a95cce9ea37c1daaf5a5db9bb306ee038f","3b56e30b1cbe1bfa7710e88e5e0b8fa6eddc7c2e67615f73bdf8637af68403e6","92a8de4f8f6595bf1eb24a19aebff7371c66ae8751f2e045edd9e25ca435e4a2","01810afb0ed31afdea0846cee91e85a474727d0966e5bb57c2a4a732854deab1","c874e98cd875727ea62fdcd978ac9e067ce07cf7493aa4b8b193fdc3b7318eea","455e843c1f8e0df452f101c9ec0b63ab8e749f296c947249f8bbc29bff58c83c","eadc4c556b494cc52676e084eadf0b60fb2cc6e2408d1411eeae5cb74068ca86","3b8689266e8fb628ca2068ff610ed0b842ff4e407c3a914358ef1895dabfcfcd","fc741907f6d8158b2c4722932d745b11dd41f9355a5b325c8cd3cdfbd966d76d","cdd2fc31d7ed9c05c641fd31a2057664edd4d3448423b3caf62dcef2a2976e5d","6a53a6c72b66919ceda383778700ce7051a443d109913353ccf3966b24548698","654d730c1a9f0675e98344ab8b5992b9d70c02d6c5fc096a334855e9267f577a","488624256f6f843dfd3158df9ac3d9163fd142e3e742f20da03deb06d7b02225","132ca80d931bfa553c52082ab40200253db6b0b9792edfa8953d8f9ae0ae3d77","a64c93911f62c442b0833e3abe071f5872dc7aba676c90586effdefe46047d19",{"version":"134b644d61ef2b77759d3b6e2ed17c763b80948ddac47d51380c54ced535ffbc","signature":"acbbbd273a33c224ba42c71d3cb08c9c1acd846993995cbaf126e7b03803b5fb"},"8241ca037f4eff39ab26ca90bc262e7883beb387c284fa9b96523d9355d90df9",{"version":"1a7b02f20a9b189f6d3647529c6e175bb71b806de1ef5e690ac6e364e6b8a817","signature":"937d901ab51ef75f8d129096c2a805f253aa3c1c276adfd24417992ed6b1c4fa"},"643fe4455fd8d6139abb6c834bce3c5e3658528c8a1f1d5e8276bd6cd4e1a634","2dac8afec3696817635896fc106cca59b6bd7d62c84bf120422b39c34eda06db","7e868caff82f6d6b9e0cc74bed715a77f78bb0bf214e79eb196cf890f6b4a802","7ad97a7562ba9d4d3d9ebbe963acb22dffc5b0bdc7109451bb77d81677a05744","b2cf5f88c9adbe85cfe682e857dbdbe3d45e3c02fc469e61b51f8826b996a51f","99d5590a5e4b3599acb386e24359b6784ab616403edbfd4a9f22c1d9b3df6645","d339ad3d617ff59c9b4cf373bc07cd5b6f5c99a5be47cef461ebf4f378e1045f","e7fb0e2c90cbd033b80e7dd9b7c6c0ea5c860ca60d9017c14d9524939211bdc1","d6a01a97e6368ae8566918f9a2d8bf2b52c06cb4030e17ed95eac73b8ff9a0cd","11a0cf327397566054bd1015fe7f9e7268fcf5c226356ceb4a3a8429f90d5617","91d42a5ced7589d7fd35d0dcde04c982730f0c2e85be92142f6d5715f8fa72fe","81d0b3fec81380eb74d4c0ff85b0bae0a313cd206c51e14d9c01e5694d7fef2f","c2b8e2a02cc0a210fe67b5605c11701d10351711057fcee1e16982e13338dc5c","1be9e241793fe915a80afcc1eaf81d89ea8e71eda89161998986ede23736c795","536ce4a574aff8a8b2621b49def57888d9851e11dfa4d8a92524dad1ff3e2990","cc35a0520809e94a7722f7dccf1ceccec94a60665cb42057e732c16eee644346","d9583ba45c59c5fe2d000e027ec262d0c20fb62d3318e0fef3d972ebb2eccd78","360fe754f49bf0ea03ed2c895e704d10478b4876daebe72bf3f38322181c4800","2df0fcae9bb10b3ef2bc8cdaa1ed49cb81d72be5a1acf31d6194297ad60457ea","dc235da2a5bc918f3c7d2fa5fe29e7ccaa71de91b7c0e2499df40b41410825e3","6e5a3939d02c0409f1e7bfd9eb5c90edbb735cbfc7fe15ef560e758124301dec","4328fb2f9cb67e42cba9464a5d16a64bbc82c10a2acf107acec747257d91170b","84cfb46de132d4b28e6f7cf2c7bc1dd8ecd347316bdaef14126f6c34905af35a","affb63797e7267a23a81ff26e37d6a29ded1f88c57eb9e69fca5fb1df8123137","19a8591d3dbca2091809a8c473d7eb9cc06f65d75586df4f9c1238f99dab7a55","a7aec9f6d2b6db61e2463f968f50615e928fd4822064b3c3fd515a9dfa62f41d","16261ea5090420f53e877962eeabd85d3aaacf2e0d7248e30f99843c696500fc","a5c7e3e551ed2d30320163cd439852cedbe5872b7291d761e40410bd8ed632ff","9a9adfd5f81804c50f0c0c6f2139f418a40756c90155515ce936b547409ae8f6","e4e025edefb5b7adbf0a544d0e07e3cd02f0b50e911a4d5080cf443057d67a79","62d3ea9b75c34a54eead5765e73c73a018f8d29757469e7015a3e602c039da82","587d2296876245dbc51183ca83ddb8646d304fabfada4b4a6785cb825ecb26eb","a45ebf95dd46530bafe2f42391e3ffb714c37e7b23dbcdb942ad00a3fd5af09e","c56279b9fc7dea75fd71092bfdb594e97949cc2fdb12a41707ccac027389a397","644c59289eb29590d65062c5b64dda9ef2797ce120071265a9099436f0d41a16","4858fc6d7e4329a24e4b4395491a71964be3a11d8b8adbff53943b9b4d240634","e72e6fd0fc13bdcb2bc143cacd5e676ff4bcc4b87073659ac01c9674a9551f14","590ea57fcf833107c211419a6c9f2c1b63ce6c1baee57ef2bd23ff11a23e2f42","30291b36eecedd2b1092358edefde5a65021086018b0924fe46e8df9aae743c9","900a6f1c2d7d20b6baef49be5d7c23b89660a7f36f0dcc5192dc6d5a09d9db31","eede7e87395fcfd7ed7eb2fc5d200df4a77dbedf53574798f127f7c7b04fcbe6","294d119c904d8c3571b1992a2093334330d9c801bca315560ddeaa8f97ce708c","ca5ae87afa30f99e921c33535154da317212f1c78e098ad8d02fa2db10698ac9","3972c3732391f1e3dba7c3cdbe43c5ddc61fad71806cd18d5e8862849a326363","d31a1f3d6ec772eff614fc98848f5c62b4dbc6df676f4aa4103a100e1172b397","66905bf9b8faad5e2f7449c6b62a7aee792ec539bb0cbbb580590b60ebe96bf8","a71c5b6858e7ee226fa0008e1785b90adc6d77668f6b10725c1cafef80b8493e","a53124e416c07cfeb3d4b182acc3c9b253f4e4dc5253042a9e90420498545142","1094f44d046d17f7547633eb0e11363d27235857c8d572c50fb76831ef60a8a4","b85de2a0f48e618e9a78cfcbdde2891c00c83c46141699a207b3def5621695c7","0a9eaa810b334150f8338af16cc4e4ab0e4086eb7440649451d8233b9626f5a1","4937a3266b021b1f5d97d42d9bce0e56fc58833f866162aa122dac325f438275","646ab7bf6fdc702ecc3e7d48115062081d4a2fcd18bed37635ff69dc5cfcec58","8c2074ab2aaafbd552ab59dcaf9f30f3084436fc80f6159fd96c395fd8533bd7","83730779fbfd9678abad67d31cb2ff6d69e6d907a451faedfeab0ca43f4de44f","fbe62eae62000c2189b5ec93902f4c4ea21f36e510aecea3c430b9b4edfa153f","db84a364a38adf1ebcf46217d17caa22e1049e50bd9034d26612d8326b3944c7","16af96d0556586b886495f8a6e117c5604ec692d476819f53f02e2413999dfa8","9547380dc9386415197150a33fa344eddb683d529b5fcd7a99342fdaab8cbb0c","4c992e675d8ec0fe12dfe5a1396fb260249fc0cfd2dc9b57804c508a85e90fb4","f8169acbee2afa4f410d5361c42d0ea639d7ed76a1e60c189cd6bc1b8c4a5ec0","aecc1b9e7872d52c0e0e07827ea5e0550c639a3d09aa5758912eabaa0fc26b80","9244a908d0365040da50d391cd9e72453b753dc36b1c634459e631bfd841d9fd","c5a6e13138168249b2c55d345976a7924640f3293d7c99f9b445eed443bedf4f","ab3325caca7aebdf87a2ac33a20f1915ca9e74ec774f0a0c52030d0340a96dd4","22f44030787ee583eabfc0bf76f6306576292065dce17d204e03496a82945b0c","cd2010a14f58c56a65b7efd3d44901e4af7baa881f77aabf2b27f7fc83607e4b","4220aadd887336e2fa5e3d65e66a99236b1396f64f67fa3eeacd96cef648ed55","720134ce9dadc4a81ad5a8223777281e7e68ea1fc9c5683d3384a1cc9ab2b433","c70e9ede62af1b7cea62fe0b63ecd6dbfa574a100e8b7ea358715e726a5162e5",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true},"d890f0c60fd6909bc3403850eca1761d4d23d885fee2deb91a6249c2c5dc5ad0",{"version":"23085be38e62b66af9dca8e4204756a8deb77ce5ccd12dbfad3aa0b3c2c97814","affectsGlobalScope":true},"f9a1a5128b8f9ae884dc9ca08a5a6e1c3c558bfb42edc200db03d09a95af3467","f0afe81fde5f8c2cf9753e1d20ed93d6a0d5b90e773b0fc28641a9815a4a3ba3","53316f26e1ea27792133fc6de0d1f1dd9a58a1c8ccaa72d3cef087d434b6b539","1506980244b206de1ebb79d57f315a34e1c781b07fe161dfdd4e1ffc5c2a129d","2ee2bd4c14f3885a445132b962061958069b835af9ef63c48309999528dc2b25","012cb6148cf3f04feb46b6ac8d2b78153f589e882f88778b5c4ee9203bb4ad1e","0289d7ce8afb4224a5b3c8624ac4ef98f97fe627fe610bcb5470a3f26c4cf876","e12b58f7ef11b675ea6e9a2c0962bc237676bd7b16d04e7b68a1568d0bfd13b1","2b81304a84d4e5c569c8c067fb04264e4257db58506368575e1e340ba48cd77b","b83f261d88f59aaa522eb24e8e84f97bc24dfde1201b044e9a70d0fb76cba6d4","8a41dfcca949ec33d9a6217b6de00b36cf51851e742d571ba50f9e495b59bdff","254fb756edc67e0855cf3b3fca56d882dfe177cea981883978ee9e8f0440762d","3111a3adc65c3147dd8d2772275aa057ced14735def3d0b81b9dd60126877cba","263080ceba592a28d1a334225f1b1b86fceca6148ec948d150827fc6087ed4ec","0242b3c0615d11066fcf683b64d43f988c5601c50d85818947f81015312d5790","392c2dea58fbde0121cd71f0c428b5a411faff7357a66bfcf2957fbfa133b938","6b0244acde11bcf577d6ec63912b792a0d9b5486cedb59861ddbd742f60ff601","d138a0579536753ca25bf8d7403389182d37e7e3f8c6f98d1f5f0ac0fb960fe4","f93834e5fd5528591d1e457789483347251e93843e1cfbdb0f715c88b4368f29","5bb5a82707af623bc487edee2c956fc1c4d692bacd81c20c16b2fb8f291bd45f","9bca3f63de7169eb3257619432d07f34ac2fa5f3e56675d2c6a835444567b29e","f593c40c54b9400007851248d4281e9b88eb2051c595fa57b267bd5156771221","9f662bbe50db051564d2085495871083c14061e2f0eeabc0b4a2dc711cdc9699","ebf0c737ed4128f2ab48b8c9e9f67032f3e3c1e47c91ec6cbc10c6921f0bac7f","4898639268356aea0e8d011fd8ff3fd3f5b86fc5a921ce4dfa97b839ff89bd58","a4e5a31afe2611d10ff2069a842d21874726da561f7d7eb9d7cb1ca46f9a138c","a6e59cf99535a6853e64662f20c7701f2c95c0eecb7e4be7307ef207253f73e9","482ff635ea42cc671ba1e5729f57dd784759acd60fc26d31d676ae522cf3e2f5","0670eede14b39fd186fe7e224db70510158af5279528d12292df9b980867c1d0","4274d4169679f93587cb887aa43570c2b5a840db17022093aa232ac2a9ca9beb","2f768f764e91667b3018488352dfcb4b6ef2d14b3e472bbeca7c0b3eae8d7d15","8b0a2400ba7522569871331988f820ba4cfc386f845b01058c63a62ad9db8d03","d3e29566a694a4068d450a58f59e3a3662fc12f74345343d441ef4d954984503","f7b3e68f7972250809e5b0cbd8f0e1f9da8c1dbf70244f289b204f1b49c2d398","4c7c99f7787c5c2ea6cbd911a7b5c7c2a4ee1cb9d7f538805ee2550cf1f1fb99","1557bf37fc8d5f129436caa0212f25d6cbeaf9d20e2e3a60b13306ff62a1d7a0","9a1e77270d63875c9a38630f9a7a9126f9a8df0245d5eb220832a65d408079eb","e48d0036e626bb40f236e236670722445ffff854908c2d9515b2b5b7f677794f","30f9018873d6d80256298011161a664a14b927f719f8a7605ceb8b49bc8808da","f543ea0fe820064a2cdbb39d2b2846c507467c4771eafcda2091da43b05c077b","9066d02264a67aae05410c340c8fa41a79bb076c33d1c6ae3ec29a05828f4c05","00435c177c3da6998c2f95b9e71239f00cfabd3461401cc4d8606ee3afb732b1","d432a2956d1efa172e1c60a8186a81657f2f9f4ba449c6abdfa9d057d484c45d","bc6679207eccaa45e49b930ad45ec8e7903bd8b0868e086d8bad91f79c914ca0","4dd35e71d52007465787dd2f374cc756a29e6c9b96dc237d0465d0294170c529","7ebf1f440efe6efebeb58a44000820cbe959da9d9496621fa6dcbc02666e3002","08a9e70641597e23d00be62e3a94b69ad93c5cf5541ec7bfdeb5e9f69c845507","ded59c554118589a8729fb70429318e41e7e8155b2aff5f3d7a77933e49dbc10","3af507089e65c1472a87e5f7345ec18838d7e923c2c06fdad3d31543278af762","c867e6d7de78f96eb55b534b3aca1da4e029a6ab0e4ea9d0610acf11d737f8a0","2df075b38e2135201202640fe92bce8d03fb319fece410b088a22ab4e1be7702","b9f07153f8e881c4cca036abccaa134df30cf09a3381772d089d1eeabe45770d","88213e972b5989f217627bdcb79a697f66821e8ff135265712346d532243084f","bf6122555f34582e6d5424a88676d90f2333e0e920764895c15d39b6c856053c","bf04a1c9ccfeabf521b7b97f388d05bc5f628422253399eb157fec0d9cd213ce","3c6ecfcc6ac82b5866368d1efbddeeb3bfae03962747bf6928d8faa092e5b369","06d19317f4c8474255b3ceab7102763faf7ff0aa4cc305384b13ccb6d27b2e50","ebe1694b3a7a0265b9cf8fb3bfed6575907247b61add671ea9771fd6715d1b29","bdf4a7242e5cce621b5ba689351af780b0b665d97ea88c71f50801aa80560236","e0c7d85789b8811c90a8d21e25021349e8a756a256ae42d9e816ecd392f00f71","bb8aba28c9589792407d6ae0c1a6568f3ddc40be20da25bc1939e2c9d76436bb","8fa1868ab5af3818ff4746f383ea84206596e284f7dc5ffd40a0fac08ed093f9","8d4537ea6fcdde620af5bfb4e19f88db40d44073f76f567283aa043b81ef8a3e","0bb848976eff244e33741d63372cbfb4d15153a92c171d0a374a3c0ef327a175","af79b166f5d41ec2ebae57e9b67df564452b90ae3f0af4cb3c2d8ad5adbfd2db","6bd6ae32288500128ae355de57d6bc3b5884f37e1e5d5ac597b142f63b3c8121","a6634dbc56e3d75efac697e59fef032aa15cc537acf7f6ad3a045001f48483f8","42fe73978ddb3a82329bf41a116e921deb266551e4f0ad9e9c7bdc581c24f085","6f3a9c82889d056c8ae5e1937863d6f52c312e82f688d2318aea5f934fb129c3","16504c568924627fcf340804a3a1d3845490194df479983147007d83ba347a18","7253cdf6610e2d0b08b7f368bee406b28572f0764de87c1c68309ac713a4d6f5","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","32e1fb333973369500d670e1a6adfbb3314d6b582b58062a46dc108789c183eb","e040fa1afb9b8d5bc1fde03bbf3cf82a42f35f7b03a088819011a87d5dab6e74","5156efecb13dffb9aefc31569a4e5a5c51c81a2063099a13e6f6780a283f94fd","585a7fca7507dd0d5fa46a5ec10b7b70c0cea245b72fc3d796286f04dacf96e4","7bc925c163a15f97148704174744d032f28ad153ff9d7485e109a22b5de643dc","c3dc433c0306a75261a665a4d8fd6d73d7274625e9665befd1c8d7641faeddd7","9fc9575d1a0e89596012c6f5876b5c9654e1392fbd5d6d3d436bc9198ead87a0","f158579f034415f0bad9f6f41ed3ac0768dfe57dc36776d52e09c96a901c5e45","8e6a2d23d02da219dc17ca819efce29e1099883425f56e6c803c19d913b11173","bb2f509fedbf353c2dbb5626f25751308dda2cd304be0c1dfb7cf77f47fc56b3","f059bbc54f789b3da972dcc0f8b8fad77afc465be94ee766ad2a947cbed91c46",{"version":"5a7dccb227c05332ba3fa8d747442a646251846f0004f0180f6e050fd39ecefb","affectsGlobalScope":true},"13c76042dd1f4d8eb88cd21abd2e6ca73639ecc36130e15a97fc20b25fbd07ce","98d4546adbeca7ae6efe2938738d50388f952e52926df1e41f69d5bd943da90b","4e7fabbb3afb902d2095cd4796c37933c30674e3145433b07aace16ff6ba166a","ecd3b8132d879c770ab693cb94f9e33e90299bf44ef70cb539ae7c27c7afa24f","78656fcb3f7f89b2766e64b1acb98153ec172c5bede713ae97ec765e7b0fa045",{"version":"aac79e0b1f5ef7f2b93eb51d598c1a16081a69b793ad1122ea052daa2affb9e9","signature":"82bc8e669daa0d94b81e02d6d165c93d80b5f8bd15bb7f887799f980dab3f65b"},"001f8c7b6cc584abd5eaa28798e208f55063588051907ed17c35f2c2aa40d19b","da0435b58755dc92c74a3027854d6bfa57ac948e6eee897fef7eb352f70bd784","e78ace7cce60cfd35ccdc706f7bf1703a067d7d82ba74fdb15d1d9ce9ccf432e","dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","dee5d387e2e6f3015cbf91fc0c13ed6f016f9c5c1f2ad9c62602f4fd398fa83a","67f129ed8b372622ff36b8b10e39d03e09e363a5ff7821105f92f085b8d1ccba","1b831600aabe1c065830d303d087189e1ccfc93a0ef1882eb58a336ec1ce9f2f","75f191b59fe7ce72d1d7d11d0f329a193843f54af93182fc5a65c37d0a82c85a","cd74c8275483d3fe0d07a9b4bba28845a8a611f0aa399e961dbd40e5d46dd9ad","fde29321f9f2f718bc590007bdfc760fef5cef2246131ec7f974bee5c7ec19b1","49615c86d8182e320fadbad01d59a8e821ec9dca04b7d6922c9f4ba8b76f9178","34d54cd3d70ee7a0a635219f753cd496713ad9ac8cfe937081746a4cc8cde75a",{"version":"70877b21f7c4f09c3962185c79c8491ddc602238924a7c156de452553d1dcb66","affectsGlobalScope":true},{"version":"5412c38c97f35b51586f2dc5cd907bed81542f7944c8eb9a5e9cd6718dfa117d","affectsGlobalScope":true},{"version":"011f7e9aa5a279e4f3a94e550f7935524485ded715a79ae104a8e2273711b585","affectsGlobalScope":true},{"version":"ad8082ff86c805f6bf7315be1cbef7b799d69fe1d5b45cabf3173e0770388bf1","affectsGlobalScope":true},{"version":"3942a8c81887b3a7738de1df745727e05bb11b357e00ae5011175b66029c07a6","affectsGlobalScope":true},{"version":"19349a68399ad8c679f8a10817d48ad78ff7def615e3539305c31e93eaaa90c8","affectsGlobalScope":true},{"version":"30accbb95af2e378a9f4bd3bdae9329c46f95a889fa2b982740b68a6f4238516","affectsGlobalScope":true},{"version":"86f5c6414c1b36997aa5db84ed03a000f2152b1f588f627d4070333d37b49a0d","affectsGlobalScope":true},{"version":"76e228879a89a3c345d293bb19a9988907483009ec972fed2dff24e12efd1072","affectsGlobalScope":true},{"version":"2ed58573ccce914903b7635b99bea21035008081ede28ddc0559c3b3e01b302b","affectsGlobalScope":true},{"version":"e93577d36ca35799cc7721e08c7717ceec50db44df779f8a1e93177bea5fa2f9","affectsGlobalScope":true},{"version":"a15225c31857cc91eb02aeb214db2f95c26a0b1f3e93a1f183d6af57942990ff","affectsGlobalScope":true},{"version":"f7a04b30da2a5def33d2fa7b41748b118d1fd974009f81af2f258fb32c219cd9","affectsGlobalScope":true},"f21c586eefdaaedbae4e5f01367a883cce2b14eaeb7ce42238a1678cb2ff4a15","dd42c57f6bfae8ab6501c29b8380d83db477e33fd88c01069e9073724917c696",{"version":"16000ffa5ae513c4ca75c9efa3606b9aa51d074804d9e8b65716807e0dc4c4f9","affectsGlobalScope":true},{"version":"f4d89a4921a9b65d4372c7c4cccf0734a1e3283bd6ff62c9d2258e074679ec2c","affectsGlobalScope":true},{"version":"66bbba370ddceae7bae10bedb51fad95299923d59daceb0308793d921dcf354d","affectsGlobalScope":true},{"version":"49c192cbd69f134352f1f47cafa8f07b7848de216ff9ce418925692ed105a9bb","affectsGlobalScope":true},"13ff202aeaa530005d50771a8e3a96ab3de14dac62e677de0bb2dfea419ab01d",{"version":"507306cc0edb0026a069680742884cb6630c8bc5fbcc99be92f47f9ed2b1ff84","affectsGlobalScope":true},{"version":"5047a77c31b200333c9056da8da8433a30a46f1440a5de44a8d0751a0010d554","affectsGlobalScope":true},{"version":"88bc8444f5490defd4f6a0363d4399d7889b1f9a8361ffacfd6491d48d803995","affectsGlobalScope":true},{"version":"835b1be021c7457ed48b84d3acc2133099527e5f13311d0505a30b3ed2d93e9b","affectsGlobalScope":true},{"version":"67b0bc2b8564d112319295a314caaeb42e54b7560ae36f85c63cb48cb3201749","affectsGlobalScope":true},{"version":"e903cec1d59e0157bcc7e4ac883ae6f866babb60e4aa01b9485aa096b9722200","affectsGlobalScope":true},{"version":"75c75fb30395341300c6950e06cec37379cb2fcb326bcb111e02cbb4eb772810","affectsGlobalScope":true},{"version":"b68e6199de78d34ea91c1435cf46b086f412e12b6a49978ff0be9c4cdb1196dd","affectsGlobalScope":true},{"version":"bbde9b391811c85d5c4d3a16ef04d22bc39b8a5f2ab11758cd8d3a7abe83ca0b","affectsGlobalScope":true},{"version":"1e68a037b9603575a99e1ccab31364dbd6da66f53b631a24c014db817ec53787","affectsGlobalScope":true},{"version":"ae772fac32c04fbb204f6b1a7cf30f6bbe7f5773734175079759e0dfe2cb80c7","affectsGlobalScope":true},{"version":"149256b30d2ce195d179cf803d7def5502c5e33d68546fd1de621d01885e5027","affectsGlobalScope":true},{"version":"fd932400dd14e5b81172a0934479b60a6ebea91953d23582ba92e9f515e0125e","affectsGlobalScope":true},{"version":"877b6bb06605dee37067ffe527e50eb89c5e27639f50486415faa9676a3e0026","affectsGlobalScope":true},{"version":"4076a83a4b197f9fdb7977132daf600897e0a0cac42f45eb5c22cd518abfdaf4","affectsGlobalScope":true},{"version":"b8f2aea722f055fea3f561d533c68771a77a115f09116df50eb013ff893ac014","affectsGlobalScope":true},{"version":"48811184ee1d457965cdae72709fd4fd00d41ac3832dddd2de33b421610bc6ea","affectsGlobalScope":true},{"version":"b648112b6994565bf0af6f64eddaa2f40c4802ae0cf3195c367a7cca6a074503","affectsGlobalScope":true},{"version":"56d06af8033eb691df47ad324504b114318b2e28f39a13bd3d5bcca228618f97","affectsGlobalScope":true},{"version":"4342ad6c4f3eb99c0e04660c2b5b9ded1cd2936bad3867511f6e768e21cbdfa4","affectsGlobalScope":true},{"version":"88a08384e2589e52ed1c79ec629cf7367a1374e3913c115d3a070b527565a316","affectsGlobalScope":true},{"version":"b260bf2c3f1fe8a2a8285f8c4dc541d646154f7a6541e4a24f2a9581f58219e5","affectsGlobalScope":true},"c8dc3518d58ec3ab0ad84703a075971d919c22976b5b765bad86ac2d37cc2121","d1ba2f8b2a3eb6a757a19911b671efb907b17974239f151639b1fcf2e9ba4f7f","5104db98c7f1bfbe0fbceff2b6552e5f415e74373c49f8c0ee47b6c760688ee8","66da397ca9dc6b80201b6abb8e26c0369a4a803d26814b645e0a5bbaaec0bbcc","5f2b00ad4b65303c6c75aca10e8c13366cf4e5819838d91a3dc1c14dd73ac99c","64427913f67d0bb25104cd0a6db9e412d0f403688e5deb009d9bb97bee3a4cc1","04d31ef6949c535bd8c670a0f669925d9fe14080888154627bc552c31c574caf","74f5e83eda8c41e708cd6e1369f075121f71d52b8c286399cb9610f5a9ab0b6c","3777eb752cef9aa8dd35bb997145413310008aa54ec44766de81a7ad891526cd",{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"c4c868a268d20e2c678cfafd1524b6548776d80885089870960737623ec00b50","98bcc0f82514eaa8fbf340e9977787e62336e59a51f267eddd17602d5ba87f8f",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"fdd574c45ab01286d64b1e2e78e9ea647c4527e954e27ae281d372f5fba41567","f9ae3d889d1330f015ee918b4c59f21211d90211b42efb0fe87c333d4a8d43d8","6adaa01cba6e7bae17d8291089e9e38bfc3fffcd522e2161214cbaccab4c1b2b","7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","fd0589ca571ad090b531d8c095e26caa53d4825c64d3ff2b2b1ab95d72294175",{"version":"669843ecafb89ae1e944df06360e8966219e4c1c34c0d28aa2503272cdd444a7","affectsGlobalScope":true},"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","54f1d17f9f484650cd49b53d9a6ba75593955a9ead093628888a37407b6ecd51","4964ba28dd6c9d086735062e8f4c63f23dd14e20b9b6d2acdc5774760d47b132","cc0700b1b97e18a3d5d9184470502d8762ec85158819d662730c3a8c5d702584","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","f77ff4cd234d3fd18ddd5aeadb6f94374511931976d41f4b9f594cb71f7ce6f3","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","4f18b4e6081e5e980ef53ddf57b9c959d36cffe1eb153865f512a01aeffb5e1e","7f17d4846a88eca5fe71c4474ef687ee89c4acf9b5372ab9b2ee68644b7e0fe0","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","58e0cee50add50d4b6d47a935e26aeb0080d98c9cf729f8af389511cdfa10526","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298"],"root":[[272,274],286,287,299,362,368,[486,493],502,503,510,[513,516],[518,520],[522,534],[536,540],[543,558],560,[577,584],586,587,[589,592],594,595,[597,601],923,924,[927,929],[932,942],965,[967,969],1000,1001,[1003,1012],1014,[1017,1019],[1061,1069],1102,1103,1124,1125,[1163,1168],1230,[1232,1234],[1244,1257],[1259,1294]],"options":{"allowImportingTsExtensions":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[124],[124,285],[71,124,534,601,923,924,925,927],[124,270,271],[124,1235,1243],[124,542],[124,355],[124,541,542,1122],[124,542,1122],[124,1105,1106],[124,542,1105,1106,1113,1114],[124,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121],[124,1107,1108,1109,1110,1111,1112,1113,1115,1116,1117,1118,1119],[124,1106,1107,1108,1109,1110,1111,1115],[124,1105,1106,1107,1108,1109,1115],[124,1106,1107,1108,1109,1110,1112,1115],[124,1106,1107,1108,1109,1115,1118],[124,1106,1112,1115],[124,1106,1107,1108,1109,1115,1116,1117],[124,1106,1107,1108,1109,1115],[124,1106,1107,1108,1109,1113,1115],[124,542,1105,1110,1112,1113,1114,1116,1117,1118,1119],[124,131,541],[124,1149,1150,1152,1153],[124,542,1150],[124,542,1149],[124,1142],[124,542,1143],[124,1144,1145,1147,1148,1151,1154,1158,1159,1160,1161],[124,542,1142],[124,1155,1156,1157],[124,542,1143,1155],[124,1143],[124,542,1143,1146],[124,542,1139,1140,1141],[124,281],[124,131,276,277,278,280,282],[124,1218,1219,1220,1222,1223],[124,1206,1218],[124,1207,1209,1212,1213,1215,1217],[124,925,1206,1221],[124,1207,1210,1211],[124,1207,1210,1211,1216],[124,1207,1210,1211,1214],[124,1172,1201,1207,1210,1211],[124,1218],[124,270,1224,1242],[124,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424],[124,425,482,483,484],[124,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481],[71,124,504,508,511],[71,124,504],[71,124,504,508],[71,124],[71,124,504,505,506,507,508],[71,124,602],[124,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920],[124,1020],[71,124,1020,1028],[71,124,1025,1030],[71,124,1020],[124,1020,1025],[124,1020,1024,1025,1027],[71,124,1024],[71,124,1020,1024,1025,1027,1028,1030,1031],[124,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037],[124,1020,1024,1025,1026],[124,1020,1027],[124,1020,1024],[124,1020,1025,1027],[71,97,124,542,999],[124,498,500],[124,494,495,496,497],[124,495,498,499,500],[124,496,497,498,499],[71,124,497],[124,947],[124,944,945,946,947,948,951,952,953,954,955,956,957,958],[124,943],[124,950],[124,944,945,946],[124,944,945],[124,947,948,950],[124,945],[124,297],[124,295,296],[124,135,136,137,959,960],[124,1210,1211],[124,355,356,357,358,359],[124,355,357],[124,340],[124,1297],[124,1210,1211,1300],[124,1210,1211,1236,1299],[95,124,131],[124,1171],[124,277],[124,279],[124,290,293],[124,282],[94,124,126,131,1316,1317,1319],[124,1318],[124,541],[124,563,565,566,567,568,569,570,571,572,573,574,575],[124,563,564,566,567,568,569,570,571,572,573,574,575],[124,564,565,566,567,568,569,570,571,572,573,574,575],[124,563,564,565,567,568,569,570,571,572,573,574,575],[124,563,564,565,566,568,569,570,571,572,573,574,575],[124,563,564,565,566,567,569,570,571,572,573,574,575],[124,563,564,565,566,567,568,570,571,572,573,574,575],[124,563,564,565,566,567,568,569,571,572,573,574,575],[124,563,564,565,566,567,568,569,570,572,573,574,575],[124,563,564,565,566,567,568,569,570,571,573,574,575],[124,563,564,565,566,567,568,569,570,571,572,574,575],[124,563,564,565,566,567,568,569,570,571,572,573,575],[124,563,564,565,566,567,568,569,570,571,572,573,574],[124,925,1321],[78,124],[81,124],[82,87,115,124],[83,94,95,102,112,123,124],[83,84,94,102,124],[85,124],[86,87,95,103,124],[87,112,120,124],[88,90,94,102,124],[89,124],[90,91,124],[94,124],[92,94,124],[81,94,124],[94,95,96,112,123,124],[94,95,96,109,112,115,124],[124,128],[90,94,97,102,112,123,124],[94,95,97,98,102,112,120,123,124],[97,99,112,120,123,124],[78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130],[94,100,124],[101,123,124,128],[90,94,102,112,124],[103,124],[104,124],[81,105,124],[106,122,124,128],[107,124],[108,124],[94,109,110,124],[109,111,124,126],[82,94,112,113,114,115,124],[82,112,114,124],[112,113,124],[115,124],[116,124],[81,112,124],[94,118,119,124],[118,119,124],[87,102,112,120,124],[121,124],[102,122,124],[82,97,108,123,124],[87,124],[112,124,125],[101,124,126],[124,127],[82,87,94,96,105,112,123,124,126,128],[112,124,129],[71,124,135,136,137,1015],[71,124,135,136],[71,124,136,1015],[71,124,960],[71,75,124,134,213,264],[71,75,124,133,213,264],[67,68,69,70,124],[124,1323,1362],[124,1323,1347,1362],[124,1362],[124,1323],[124,1323,1348,1362],[124,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361],[124,1348,1362],[124,275],[124,325,352,360,361],[124,329,340,343],[124,329,330,331],[124,329],[124,329,330],[124,345],[124,337],[124,290,337],[124,290,337,338],[124,365],[124,349],[124,363],[124,342],[124,290,341],[124,326],[124,290,326,327],[124,290],[124,288,292],[124,278,291],[124,1172,1174,1199,1200,1201],[124,1172,1173,1174,1201],[124,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198],[124,1172,1173,1201],[97,124],[71,124,1170,1225],[124,1206,1225],[124,1224],[124,1226],[124,1169],[71,124,925],[124,1228],[124,1070,1071,1072,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100],[71,124,1073],[71,124,1070,1073],[71,124,1070],[71,124,930],[76,124],[124,226],[124,228,229,230],[124,232],[124,224],[124,140,149,159,213],[124,140,147,151],[124,283],[124,158,269],[124,269],[124,158,159,269],[124,248,249,250,254],[124,173],[124,251,253],[71,124,251,252,254],[81,124,131,150,165,166],[71,124,141,242],[71,123,124,131],[71,124,158,219],[71,124,158],[124,217,222],[71,124,218,225],[71,112,124,131,264],[71,75,97,124,131,133,134,213,262,263],[124,139],[124,206,207,208,209,210,211],[124,208],[71,124,214,225],[71,124,225],[97,124,131,150,225],[71,108,124,131,149,165,186,188,190,213,269],[97,124,131,149,151],[97,112,124,131,148,150,151,213],[97,108,123,124,131,139,141,148,149,150,151,158,162,164,165,169,170,178,180,182,185,186,188,189,190,191,194,197,199,213],[97,112,124,131],[124,140,141,142,148,213,225,269],[124,149],[108,123,124,131,146,148,150,165,177,178,182,183,184,188,197,200,202,203],[124,149,153,165],[124,148,149],[124,170,198],[124,144,145],[124,144,192],[124,144],[124,146,170,196],[124,195],[124,145,146],[124,146,193],[124,145],[97,123,124,131,141,148,149,164],[124,162,164,225],[124,132,186,187,213,225],[97,108,123,124,131,146,148,150,153,160,162,164,165,169,177,178,180,182,183,184,185,188,191,194,200,201,225],[97,124,131,148,149,153,202,204],[124,167,168],[71,97,108,124,131,139,141,148,151,169,185,186,188,190,213,225],[97,108,123,124,131,143,146,147,150],[124,163],[97,124,131,169],[97,124,131,169,179],[97,124,131,150,180],[97,124,131,149,170],[124,172],[124,174],[124,265],[124,149,171,173,177],[124,149,171,173],[97,124,131,143,149,150,174,175,176],[71,124,251,252,253],[124,223],[71,124,141],[71,124,132,185,190,213,225],[124,141,242,243],[71,108,123,124,131,139,216,218,220,221,225],[124,150,158,182],[108,124,131],[124,181],[71,97,108,124,131,139,213,214,215,222,224],[66,71,72,73,74,124,133,134,213,264],[124,234],[124,236],[124,238],[124,240],[124,244],[75,77,124,213,227,231,233,235,237,239,241,245,247,256,257,259,267,268,269],[124,284],[124,246],[124,255],[124,218],[124,258],[81,124,174,175,176,177,260,261,264,266],[124,131],[71,75,97,99,108,124,131,133,134,135,137,139,151,205,212,225,264],[124,1305],[124,1304,1305],[124,1304],[124,1304,1305,1306,1308,1309,1312,1313,1314,1315],[124,1305,1309],[124,1304,1305,1306,1308,1309,1310,1311],[124,1304,1309],[124,1309,1313],[124,1305,1306,1307],[124,1306],[124,1304,1305,1309],[124,321],[124,319,321],[124,310,318,319,320,322],[124,308],[124,311,316,321,324],[124,307,324],[124,311,312,315,316,317,324],[124,311,312,313,315,316,324],[124,308,309,310,311,312,316,317,318,320,321,322,324],[124,306,308,309,310,311,312,313,315,316,317,318,319,320,321,322,323],[124,306,324],[124,311,313,314,316,317,324],[124,315,324],[124,316,317,321,324],[124,309,319],[124,949],[71,124,535],[71,124,1020,1038],[71,124,1020,1038,1041],[71,124,541,1020,1038,1041],[124,1021,1022,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059],[71,124,1020,1024],[71,124,541,1020,1038],[71,124,1020,1024,1038],[124,1201,1208],[124,1172,1173,1200,1201,1207],[124,1239],[124,1236,1237,1238],[124,1236,1239],[124,306],[71,124,998],[124,970,994,996],[124,970,993,994,996,997],[124,996],[124,970],[124,970,996],[124,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,995],[124,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,993,994,995],[124,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,994,996],[124,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993],[124,1126],[124,1135,1136,1137],[124,1126,1127,1128,1129,1130,1131,1132,1133,1134,1138],[124,1171,1206],[124,1202],[124,1205],[124,1171,1203,1204,1206],[124,333,334],[124,333],[124,325,333,334,352,361],[94,95,97,99,102,112,120,123,124,129,131,300,301,302,303,304,305,324],[124,302],[124,304],[124,353],[95,124,128,301,304,325,329,332,335,339,340,344,346,347,348,350,351,352,361],[95,124,128,301,304,325,329,332,335,339,340,343,344,346,347,348,350,351,352,353,361,364,366],[82,95,97,102,120,124,1210,1211,1237,1239,1240,1241],[124,1258],[124,502],[71,124,550,961,967],[124,247,274,503,550,582,583,962,963,965,966],[71,124,589,967],[124,1000],[124,1003],[124,502,509],[71,124,510,533,557,921,1005],[124,502,512],[71,124,513,557,921,1005,1007],[71,124,257,514,556,1005,1006,1009],[124,485,502,509,515],[71,124,257,512,516,533,557,559,921,1005,1008],[124,485,502,517],[71,124,518,921,1005],[71,124,519,552,964],[124,485,502],[71,124,520,523,557,929,932],[71,124,533,557,931],[124,502,521],[71,124,490,522,1011],[71,124,522,967],[71,124,247,257,274,556,588,921,934,935,938,939],[124,485,502,523],[71,124,247,274,523,524,999,1013],[71,124,933,940,941],[71,124,523,531,545,927,938,942,1016],[71,124,247,523,525,531,545,546,592,938,942,965],[71,124,247,274,523,542,551,590,1019,1020,1060,1061],[124,1020,1038],[71,124,526,545,936],[71,124,247,257,545,938],[71,124,526,545,937],[71,124,527,924,1000],[124,502,510,523],[71,124,580,1012],[124,556,939,961],[71,124,257,529,557,921],[71,124,247,533],[71,124,533,534,535,536,921,922],[124,530,535],[124,502,515],[124,502,530],[71,124,498,537],[124,501],[71,124,538,556,557],[71,124,501],[71,124,502],[71,124,274,487,490,530,539,999],[71,124,237,1002],[124,247,546],[71,124,247,274,532,540,542,546,559,924,1067,1068],[124,247],[71,124,542,548],[71,124,549],[124,545],[124,543,556],[71,124,556,579],[95,124,582,927,1287,1288,1291,1292,1293],[124,1288],[124,547,585],[95,124,575,927],[124,1104,1124,1288,1289,1290],[124,582],[124,582,927,1124],[124,926],[124,1163],[124,543,559,561,562,588],[124,559],[124,562,1104,1124,1125,1163],[124,559,575],[124,1123],[124,1162],[124,546,562],[95,124,546,593],[124,561,576],[123,124,558,560,578],[124,558,559,561,562,575,577],[124,542,543,562,582,583],[71,124,227,489,502,530,543,556,557,584,588,931,1101],[71,124,235,489],[95,104,124,270,542,554],[95,104,124,270,542],[124,270,542,562,588,596],[124,270,542,579,596],[95,104,124,270,546,593,1018,1227,1229],[71,124,523,524,533,543,556,557,559,589,591,921,924,942,1014,1063,1066,1164],[71,124,237,589,590,942,1062],[71,124,247,502,523,531,559,924,942],[71,124,256,274,523,528,530,555,556,557,579,942,1010,1064],[124,523,542,543,559,562,575,584,594,942,1003,1063,1069,1231],[71,124,257],[124,493,501],[124,485],[124,487],[124,486,488,489,490,491,492],[104,124,354,361],[124,367],[495,498,499],[71,546],[71,542,546],[542],[546],[71,542,546,594]],"referencedMap":[[588,1],[559,1],[561,1],[562,1],[273,1],[585,1],[274,1],[286,2],[287,1],[299,1],[928,3],[272,4],[1234,1],[1244,5],[1146,6],[357,7],[355,1],[1258,1],[1141,8],[1123,9],[1108,10],[1115,11],[1111,1],[1109,10],[1107,1],[1122,12],[1120,13],[1112,14],[1110,15],[1113,16],[1119,17],[1105,6],[1114,18],[1118,19],[1117,20],[1116,21],[1121,22],[1106,1],[542,23],[1154,24],[1152,25],[1153,26],[1149,6],[1150,26],[1143,27],[1151,25],[1144,28],[1231,6],[1148,6],[1162,29],[1159,30],[1158,31],[1156,32],[1157,6],[1155,6],[1160,28],[1161,28],[1145,33],[1147,34],[1142,35],[288,1],[282,36],[283,37],[278,1],[1224,38],[1220,39],[1218,40],[1222,41],[1219,1],[1213,42],[1217,43],[1215,44],[1212,45],[1223,1],[1221,46],[215,1],[1243,47],[483,1],[369,1],[397,1],[370,1],[398,1],[371,1],[399,1],[372,1],[400,1],[373,1],[401,1],[374,1],[402,1],[375,1],[403,1],[376,1],[404,1],[377,1],[405,1],[378,1],[406,1],[425,48],[379,1],[407,1],[380,1],[408,1],[387,1],[415,1],[381,1],[409,1],[382,1],[410,1],[383,1],[411,1],[384,1],[412,1],[385,1],[413,1],[386,1],[414,1],[388,1],[416,1],[389,1],[417,1],[390,1],[418,1],[391,1],[419,1],[392,1],[420,1],[393,1],[421,1],[394,1],[422,1],[395,1],[423,1],[396,1],[424,1],[485,49],[426,1],[454,1],[427,1],[455,1],[428,1],[456,1],[429,1],[457,1],[430,1],[458,1],[431,1],[459,1],[432,1],[460,1],[433,1],[461,1],[434,1],[462,1],[435,1],[463,1],[482,50],[436,1],[464,1],[437,1],[465,1],[444,1],[472,1],[438,1],[466,1],[439,1],[467,1],[440,1],[468,1],[441,1],[469,1],[442,1],[470,1],[443,1],[471,1],[445,1],[473,1],[446,1],[474,1],[447,1],[475,1],[448,1],[476,1],[449,1],[477,1],[450,1],[478,1],[451,1],[479,1],[452,1],[480,1],[453,1],[481,1],[484,1],[512,51],[962,52],[517,53],[511,53],[508,54],[509,55],[505,52],[506,52],[603,56],[604,56],[605,56],[606,56],[607,56],[608,56],[609,56],[610,56],[611,56],[612,56],[613,56],[614,56],[615,56],[616,56],[617,56],[618,56],[619,56],[620,56],[621,56],[622,56],[623,56],[624,56],[625,56],[626,56],[627,56],[628,56],[629,56],[631,56],[630,56],[632,56],[633,56],[634,56],[635,56],[636,56],[637,56],[638,56],[639,56],[640,56],[641,56],[642,56],[643,56],[644,56],[645,56],[646,56],[647,56],[648,56],[649,56],[650,56],[651,56],[652,56],[653,56],[654,56],[655,56],[656,56],[657,56],[660,56],[659,56],[658,56],[661,56],[662,56],[663,56],[664,56],[666,56],[665,56],[668,56],[667,56],[669,56],[670,56],[671,56],[672,56],[674,56],[673,56],[675,56],[676,56],[677,56],[678,56],[679,56],[680,56],[681,56],[682,56],[683,56],[684,56],[685,56],[686,56],[689,56],[687,56],[688,56],[690,56],[691,56],[692,56],[693,56],[694,56],[695,56],[696,56],[697,56],[698,56],[699,56],[700,56],[701,56],[703,56],[702,56],[704,56],[705,56],[706,56],[707,56],[708,56],[709,56],[711,56],[710,56],[712,56],[713,56],[714,56],[715,56],[716,56],[717,56],[718,56],[719,56],[720,56],[721,56],[722,56],[724,56],[723,56],[725,56],[727,56],[726,56],[728,56],[729,56],[730,56],[731,56],[733,56],[732,56],[734,56],[735,56],[736,56],[737,56],[738,56],[739,56],[740,56],[741,56],[742,56],[743,56],[744,56],[745,56],[746,56],[747,56],[748,56],[749,56],[750,56],[751,56],[752,56],[753,56],[754,56],[755,56],[756,56],[757,56],[758,56],[759,56],[760,56],[761,56],[763,56],[762,56],[764,56],[765,56],[766,56],[767,56],[768,56],[769,56],[921,57],[770,56],[771,56],[772,56],[773,56],[774,56],[775,56],[776,56],[777,56],[778,56],[779,56],[780,56],[781,56],[782,56],[783,56],[784,56],[785,56],[786,56],[787,56],[788,56],[791,56],[789,56],[790,56],[792,56],[793,56],[794,56],[795,56],[796,56],[797,56],[798,56],[799,56],[800,56],[801,56],[803,56],[802,56],[805,56],[806,56],[804,56],[807,56],[808,56],[809,56],[810,56],[811,56],[812,56],[813,56],[814,56],[815,56],[816,56],[817,56],[818,56],[819,56],[820,56],[821,56],[822,56],[823,56],[824,56],[825,56],[826,56],[827,56],[829,56],[828,56],[831,56],[830,56],[832,56],[833,56],[834,56],[835,56],[836,56],[837,56],[838,56],[839,56],[841,56],[840,56],[842,56],[843,56],[844,56],[845,56],[847,56],[846,56],[848,56],[849,56],[850,56],[851,56],[852,56],[853,56],[854,56],[855,56],[856,56],[857,56],[858,56],[859,56],[860,56],[861,56],[862,56],[863,56],[864,56],[865,56],[866,56],[867,56],[868,56],[870,56],[869,56],[871,56],[872,56],[873,56],[874,56],[875,56],[876,56],[877,56],[878,56],[879,56],[880,56],[881,56],[883,56],[884,56],[885,56],[886,56],[887,56],[888,56],[889,56],[882,56],[890,56],[891,56],[892,56],[893,56],[894,56],[895,56],[896,56],[897,56],[898,56],[899,56],[900,56],[901,56],[902,56],[903,56],[904,56],[905,56],[906,56],[602,54],[907,56],[908,56],[909,56],[910,56],[911,56],[912,56],[913,56],[914,56],[915,56],[916,56],[917,56],[918,56],[919,56],[920,56],[507,52],[504,54],[1023,58],[1029,59],[1031,60],[1024,61],[1032,62],[1030,63],[1033,1],[1025,64],[1026,62],[1034,65],[1035,58],[1038,66],[1027,67],[1036,68],[1037,69],[1028,70],[1002,71],[281,1],[495,72],[498,73],[494,1],[501,74],[500,75],[499,76],[496,1],[497,1],[957,1],[954,1],[953,1],[948,77],[959,78],[944,79],[955,80],[947,81],[946,82],[956,1],[951,83],[958,1],[952,84],[945,1],[298,85],[297,86],[296,1],[961,87],[1295,88],[943,1],[360,89],[356,7],[358,90],[359,7],[1296,91],[340,1],[1298,92],[1301,93],[1299,1],[1300,94],[1211,88],[1210,1],[541,1],[1302,95],[1172,96],[277,1],[279,97],[280,98],[295,99],[294,100],[1303,1],[1318,101],[1319,102],[1236,1],[1320,1],[1020,103],[564,104],[565,105],[563,106],[566,107],[567,108],[568,109],[569,110],[570,111],[571,112],[572,113],[573,114],[574,115],[575,116],[1173,96],[1321,117],[925,1],[1297,1],[78,118],[79,118],[81,119],[82,120],[83,121],[84,122],[85,123],[86,124],[87,125],[88,126],[89,127],[90,128],[91,128],[93,129],[92,130],[94,131],[95,132],[96,133],[80,134],[130,1],[97,135],[98,136],[99,137],[131,138],[100,139],[101,140],[102,141],[103,142],[104,143],[105,144],[106,145],[107,146],[108,147],[109,148],[110,148],[111,149],[112,150],[114,151],[113,152],[115,153],[116,154],[117,155],[118,156],[119,157],[120,158],[121,159],[122,160],[123,161],[124,162],[125,163],[126,164],[127,165],[128,166],[129,167],[69,1],[136,168],[1015,54],[137,169],[135,54],[1016,170],[960,171],[133,172],[134,173],[67,1],[71,174],[1322,1],[70,1],[1347,175],[1348,176],[1323,177],[1326,177],[1345,175],[1346,175],[1336,175],[1335,178],[1333,175],[1328,175],[1341,175],[1339,175],[1343,175],[1327,175],[1340,175],[1344,175],[1329,175],[1330,175],[1342,175],[1324,175],[1331,175],[1332,175],[1334,175],[1338,175],[1349,179],[1337,175],[1325,175],[1362,180],[1361,1],[1356,179],[1358,181],[1357,179],[1350,179],[1351,179],[1353,179],[1355,179],[1359,181],[1360,181],[1352,181],[1354,181],[1363,1],[1317,1],[1171,1],[275,1],[276,182],[361,183],[344,184],[332,185],[330,186],[331,187],[345,187],[346,188],[337,1],[365,189],[338,190],[339,191],[349,191],[366,192],[350,193],[336,100],[364,194],[343,195],[342,196],[327,197],[329,198],[341,199],[326,1],[328,100],[1238,1],[1104,1],[964,1],[922,1],[68,1],[300,1],[293,200],[576,1],[963,54],[593,1],[291,199],[290,100],[292,201],[289,1],[1201,202],[1175,203],[1176,203],[1177,203],[1178,203],[1179,203],[1180,203],[1181,203],[1182,203],[1183,203],[1184,203],[1185,203],[1199,204],[1186,203],[1187,203],[1188,203],[1189,203],[1190,203],[1191,203],[1192,203],[1193,203],[1195,203],[1196,203],[1194,203],[1197,203],[1198,203],[1200,203],[1174,205],[596,206],[1226,207],[1228,208],[1225,209],[1227,210],[1170,211],[1169,212],[1229,213],[1101,214],[1096,215],[1095,215],[1094,215],[1074,215],[1084,215],[1083,215],[1093,215],[1092,215],[1082,215],[1090,215],[1099,215],[1100,215],[1076,215],[1073,54],[1077,215],[1091,215],[1075,216],[1089,215],[1085,215],[1079,215],[1078,215],[1081,215],[1080,215],[1098,215],[1086,215],[1087,215],[1088,215],[1097,215],[1071,217],[1072,217],[1070,1],[931,218],[930,54],[77,219],[227,220],[231,221],[233,222],[1235,223],[158,224],[162,225],[284,226],[159,227],[186,228],[160,229],[190,228],[178,228],[142,228],[147,1],[166,1],[255,230],[250,1],[249,231],[252,232],[253,233],[167,234],[243,235],[246,236],[220,237],[219,238],[218,239],[258,54],[217,240],[172,1],[261,1],[263,1],[265,241],[262,54],[264,242],[138,1],[140,243],[206,1],[207,1],[209,1],[212,244],[208,1],[210,245],[211,245],[161,1],[226,240],[234,246],[238,247],[151,248],[251,249],[150,250],[183,251],[200,252],[143,253],[149,254],[139,255],[204,256],[203,257],[185,1],[170,258],[199,259],[198,1],[192,260],[193,261],[145,262],[144,1],[197,263],[196,264],[195,265],[194,266],[146,267],[187,267],[132,1],[201,268],[165,269],[188,270],[202,271],[205,272],[152,1],[157,1],[154,1],[155,1],[156,1],[168,1],[169,273],[191,274],[148,275],[153,1],[164,276],[163,277],[180,278],[179,279],[171,280],[173,281],[175,282],[266,283],[174,284],[176,285],[229,1],[230,1],[228,1],[260,1],[177,286],[76,1],[254,287],[221,1],[224,288],[236,54],[242,289],[240,54],[214,290],[141,1],[244,291],[216,1],[223,1],[222,292],[189,293],[184,294],[182,295],[181,1],[232,1],[248,54],[225,296],[66,1],[75,297],[72,54],[73,1],[74,1],[235,298],[237,299],[239,300],[241,301],[271,302],[245,302],[270,303],[285,304],[247,305],[256,306],[257,307],[259,308],[267,309],[269,1],[268,310],[213,311],[1306,312],[1315,313],[1304,1],[1305,314],[1316,315],[1311,316],[1312,317],[1310,318],[1314,319],[1308,320],[1307,321],[1313,322],[1309,313],[1216,88],[322,323],[320,324],[321,325],[309,326],[310,324],[317,327],[308,328],[313,329],[323,1],[314,330],[319,331],[324,332],[307,333],[315,334],[316,335],[311,336],[318,323],[312,337],[950,338],[949,1],[535,339],[966,54],[1022,61],[1039,340],[1040,340],[1042,341],[1043,342],[1021,58],[1044,340],[1060,343],[1041,340],[1045,344],[1046,61],[1047,340],[1048,54],[1049,340],[1050,345],[1051,340],[1052,340],[1053,61],[1054,346],[1055,340],[1056,340],[1057,340],[1058,340],[1059,61],[521,54],[1140,1],[1209,347],[1208,348],[304,1],[1240,349],[1239,350],[1237,351],[926,1],[306,352],[1214,1],[999,353],[1013,354],[998,355],[971,1],[972,356],[973,356],[979,357],[974,357],[978,357],[975,1],[976,357],[977,357],[991,1],[992,1],[980,356],[981,1],[982,356],[995,1],[983,358],[984,358],[985,358],[986,1],[997,359],[987,358],[988,356],[989,1],[990,356],[970,1],[996,360],[993,361],[994,362],[1241,1],[347,1],[363,1],[1127,363],[1128,363],[1130,363],[1129,363],[1131,363],[1135,363],[1136,363],[1137,363],[1138,364],[1132,363],[1139,365],[1134,363],[1133,1],[1126,1],[64,1],[65,1],[12,1],[13,1],[15,1],[14,1],[2,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[3,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[58,1],[56,1],[57,1],[59,1],[60,1],[10,1],[1,1],[11,1],[63,1],[62,1],[61,1],[1207,366],[1203,367],[1202,96],[1206,368],[1205,369],[1204,1],[348,370],[334,371],[335,370],[351,372],[333,1],[325,373],[303,374],[302,1],[305,1],[301,375],[354,376],[353,377],[367,378],[352,377],[1242,379],[1245,1],[1246,1],[1247,1],[1248,1],[1249,1],[1250,1],[1251,1],[1252,1],[1253,1],[1254,1],[1255,1],[1256,1],[1257,1],[1259,380],[1260,1],[1261,1],[1262,1],[1263,1],[1264,1],[1265,1],[1266,1],[1267,1],[1268,1],[1269,1],[1272,1],[1273,1],[1274,1],[1275,1],[1281,1],[1282,1],[1283,1],[1276,1],[1277,1],[1278,1],[1279,1],[1280,1],[1284,1],[1270,1],[1271,1],[1285,1],[1286,1],[503,381],[968,382],[967,383],[969,384],[1001,385],[1004,386],[510,387],[1006,388],[513,389],[1008,390],[514,387],[1010,391],[516,392],[1009,393],[518,394],[1007,395],[519,381],[965,396],[520,397],[933,398],[932,399],[522,400],[1012,401],[1011,402],[934,397],[940,403],[524,404],[1014,405],[942,406],[1017,407],[525,381],[1018,408],[1019,381],[1062,409],[1061,410],[937,411],[936,412],[526,381],[938,413],[527,381],[1063,414],[528,415],[1064,416],[529,397],[1065,417],[939,418],[533,397],[1066,419],[534,397],[923,420],[536,421],[523,422],[531,423],[532,381],[537,381],[924,424],[538,425],[935,426],[941,427],[601,428],[929,428],[539,381],[1000,429],[1003,430],[1067,431],[540,381],[1069,432],[1068,433],[556,434],[1005,435],[547,436],[543,6],[548,6],[549,1],[544,1],[545,1],[546,6],[550,6],[551,6],[552,1],[553,6],[554,6],[555,54],[557,437],[580,438],[1294,439],[1289,440],[586,441],[587,1],[1293,442],[1288,1],[1291,443],[1292,444],[1287,445],[927,446],[1290,447],[589,448],[560,449],[1164,450],[591,451],[1124,452],[1125,1],[1163,453],[582,1],[590,6],[581,1],[592,454],[594,455],[577,456],[579,457],[558,1],[578,458],[584,459],[583,1],[595,1],[1102,460],[1103,461],[599,462],[600,463],[597,464],[598,465],[1230,466],[1165,467],[1166,468],[1167,469],[1168,470],[1232,471],[1233,472],[530,425],[487,1],[502,473],[486,474],[515,1],[489,1],[488,475],[493,476],[490,1],[491,475],[492,475],[362,477],[368,478]],"exportedModulesMap":[[273,1],[585,1],[274,1],[287,1],[299,1],[928,3],[272,4],[1234,1],[1244,5],[1146,6],[357,7],[355,1],[1258,1],[1141,8],[1123,9],[1108,10],[1115,11],[1111,1],[1109,10],[1107,1],[1122,12],[1120,13],[1112,14],[1110,15],[1113,16],[1119,17],[1105,6],[1114,18],[1118,19],[1117,20],[1116,21],[1121,22],[1106,1],[542,23],[1154,24],[1152,25],[1153,26],[1149,6],[1150,26],[1143,27],[1151,25],[1144,28],[1231,6],[1148,6],[1162,29],[1159,30],[1158,31],[1156,32],[1157,6],[1155,6],[1160,28],[1161,28],[1145,33],[1147,34],[1142,35],[288,1],[282,36],[283,37],[278,1],[1224,38],[1220,39],[1218,40],[1222,41],[1219,1],[1213,42],[1217,43],[1215,44],[1212,45],[1223,1],[1221,46],[215,1],[1243,47],[483,1],[369,1],[397,1],[370,1],[398,1],[371,1],[399,1],[372,1],[400,1],[373,1],[401,1],[374,1],[402,1],[375,1],[403,1],[376,1],[404,1],[377,1],[405,1],[378,1],[406,1],[425,48],[379,1],[407,1],[380,1],[408,1],[387,1],[415,1],[381,1],[409,1],[382,1],[410,1],[383,1],[411,1],[384,1],[412,1],[385,1],[413,1],[386,1],[414,1],[388,1],[416,1],[389,1],[417,1],[390,1],[418,1],[391,1],[419,1],[392,1],[420,1],[393,1],[421,1],[394,1],[422,1],[395,1],[423,1],[396,1],[424,1],[485,49],[426,1],[454,1],[427,1],[455,1],[428,1],[456,1],[429,1],[457,1],[430,1],[458,1],[431,1],[459,1],[432,1],[460,1],[433,1],[461,1],[434,1],[462,1],[435,1],[463,1],[482,50],[436,1],[464,1],[437,1],[465,1],[444,1],[472,1],[438,1],[466,1],[439,1],[467,1],[440,1],[468,1],[441,1],[469,1],[442,1],[470,1],[443,1],[471,1],[445,1],[473,1],[446,1],[474,1],[447,1],[475,1],[448,1],[476,1],[449,1],[477,1],[450,1],[478,1],[451,1],[479,1],[452,1],[480,1],[453,1],[481,1],[484,1],[512,51],[962,52],[517,53],[511,53],[508,54],[509,55],[505,52],[506,52],[603,56],[604,56],[605,56],[606,56],[607,56],[608,56],[609,56],[610,56],[611,56],[612,56],[613,56],[614,56],[615,56],[616,56],[617,56],[618,56],[619,56],[620,56],[621,56],[622,56],[623,56],[624,56],[625,56],[626,56],[627,56],[628,56],[629,56],[631,56],[630,56],[632,56],[633,56],[634,56],[635,56],[636,56],[637,56],[638,56],[639,56],[640,56],[641,56],[642,56],[643,56],[644,56],[645,56],[646,56],[647,56],[648,56],[649,56],[650,56],[651,56],[652,56],[653,56],[654,56],[655,56],[656,56],[657,56],[660,56],[659,56],[658,56],[661,56],[662,56],[663,56],[664,56],[666,56],[665,56],[668,56],[667,56],[669,56],[670,56],[671,56],[672,56],[674,56],[673,56],[675,56],[676,56],[677,56],[678,56],[679,56],[680,56],[681,56],[682,56],[683,56],[684,56],[685,56],[686,56],[689,56],[687,56],[688,56],[690,56],[691,56],[692,56],[693,56],[694,56],[695,56],[696,56],[697,56],[698,56],[699,56],[700,56],[701,56],[703,56],[702,56],[704,56],[705,56],[706,56],[707,56],[708,56],[709,56],[711,56],[710,56],[712,56],[713,56],[714,56],[715,56],[716,56],[717,56],[718,56],[719,56],[720,56],[721,56],[722,56],[724,56],[723,56],[725,56],[727,56],[726,56],[728,56],[729,56],[730,56],[731,56],[733,56],[732,56],[734,56],[735,56],[736,56],[737,56],[738,56],[739,56],[740,56],[741,56],[742,56],[743,56],[744,56],[745,56],[746,56],[747,56],[748,56],[749,56],[750,56],[751,56],[752,56],[753,56],[754,56],[755,56],[756,56],[757,56],[758,56],[759,56],[760,56],[761,56],[763,56],[762,56],[764,56],[765,56],[766,56],[767,56],[768,56],[769,56],[921,57],[770,56],[771,56],[772,56],[773,56],[774,56],[775,56],[776,56],[777,56],[778,56],[779,56],[780,56],[781,56],[782,56],[783,56],[784,56],[785,56],[786,56],[787,56],[788,56],[791,56],[789,56],[790,56],[792,56],[793,56],[794,56],[795,56],[796,56],[797,56],[798,56],[799,56],[800,56],[801,56],[803,56],[802,56],[805,56],[806,56],[804,56],[807,56],[808,56],[809,56],[810,56],[811,56],[812,56],[813,56],[814,56],[815,56],[816,56],[817,56],[818,56],[819,56],[820,56],[821,56],[822,56],[823,56],[824,56],[825,56],[826,56],[827,56],[829,56],[828,56],[831,56],[830,56],[832,56],[833,56],[834,56],[835,56],[836,56],[837,56],[838,56],[839,56],[841,56],[840,56],[842,56],[843,56],[844,56],[845,56],[847,56],[846,56],[848,56],[849,56],[850,56],[851,56],[852,56],[853,56],[854,56],[855,56],[856,56],[857,56],[858,56],[859,56],[860,56],[861,56],[862,56],[863,56],[864,56],[865,56],[866,56],[867,56],[868,56],[870,56],[869,56],[871,56],[872,56],[873,56],[874,56],[875,56],[876,56],[877,56],[878,56],[879,56],[880,56],[881,56],[883,56],[884,56],[885,56],[886,56],[887,56],[888,56],[889,56],[882,56],[890,56],[891,56],[892,56],[893,56],[894,56],[895,56],[896,56],[897,56],[898,56],[899,56],[900,56],[901,56],[902,56],[903,56],[904,56],[905,56],[906,56],[602,54],[907,56],[908,56],[909,56],[910,56],[911,56],[912,56],[913,56],[914,56],[915,56],[916,56],[917,56],[918,56],[919,56],[920,56],[507,52],[504,54],[1023,58],[1029,59],[1031,60],[1024,61],[1032,62],[1030,63],[1033,1],[1025,64],[1026,62],[1034,65],[1035,58],[1038,66],[1027,67],[1036,68],[1037,69],[1028,70],[1002,71],[281,1],[495,72],[498,73],[494,1],[501,74],[500,75],[499,76],[496,1],[497,1],[957,1],[954,1],[953,1],[948,77],[959,78],[944,79],[955,80],[947,81],[946,82],[956,1],[951,83],[958,1],[952,84],[945,1],[298,85],[297,86],[296,1],[961,87],[1295,88],[943,1],[360,89],[356,7],[358,90],[359,7],[1296,91],[340,1],[1298,92],[1301,93],[1299,1],[1300,94],[1211,88],[1210,1],[541,1],[1302,95],[1172,96],[277,1],[279,97],[280,98],[295,99],[294,100],[1303,1],[1318,101],[1319,102],[1236,1],[1320,1],[1020,103],[564,104],[565,105],[563,106],[566,107],[567,108],[568,109],[569,110],[570,111],[571,112],[572,113],[573,114],[574,115],[575,116],[1173,96],[1321,117],[925,1],[1297,1],[78,118],[79,118],[81,119],[82,120],[83,121],[84,122],[85,123],[86,124],[87,125],[88,126],[89,127],[90,128],[91,128],[93,129],[92,130],[94,131],[95,132],[96,133],[80,134],[130,1],[97,135],[98,136],[99,137],[131,138],[100,139],[101,140],[102,141],[103,142],[104,143],[105,144],[106,145],[107,146],[108,147],[109,148],[110,148],[111,149],[112,150],[114,151],[113,152],[115,153],[116,154],[117,155],[118,156],[119,157],[120,158],[121,159],[122,160],[123,161],[124,162],[125,163],[126,164],[127,165],[128,166],[129,167],[69,1],[136,168],[1015,54],[137,169],[135,54],[1016,170],[960,171],[133,172],[134,173],[67,1],[71,174],[1322,1],[70,1],[1347,175],[1348,176],[1323,177],[1326,177],[1345,175],[1346,175],[1336,175],[1335,178],[1333,175],[1328,175],[1341,175],[1339,175],[1343,175],[1327,175],[1340,175],[1344,175],[1329,175],[1330,175],[1342,175],[1324,175],[1331,175],[1332,175],[1334,175],[1338,175],[1349,179],[1337,175],[1325,175],[1362,180],[1361,1],[1356,179],[1358,181],[1357,179],[1350,179],[1351,179],[1353,179],[1355,179],[1359,181],[1360,181],[1352,181],[1354,181],[1363,1],[1317,1],[1171,1],[275,1],[276,182],[361,183],[344,184],[332,185],[330,186],[331,187],[345,187],[346,188],[337,1],[365,189],[338,190],[339,191],[349,191],[366,192],[350,193],[336,100],[364,194],[343,195],[342,196],[327,197],[329,198],[341,199],[326,1],[328,100],[1238,1],[1104,1],[964,1],[922,1],[68,1],[300,1],[293,200],[576,1],[963,54],[593,1],[291,199],[290,100],[292,201],[289,1],[1201,202],[1175,203],[1176,203],[1177,203],[1178,203],[1179,203],[1180,203],[1181,203],[1182,203],[1183,203],[1184,203],[1185,203],[1199,204],[1186,203],[1187,203],[1188,203],[1189,203],[1190,203],[1191,203],[1192,203],[1193,203],[1195,203],[1196,203],[1194,203],[1197,203],[1198,203],[1200,203],[1174,205],[596,206],[1226,207],[1228,208],[1225,209],[1227,210],[1170,211],[1169,212],[1229,213],[1101,214],[1096,215],[1095,215],[1094,215],[1074,215],[1084,215],[1083,215],[1093,215],[1092,215],[1082,215],[1090,215],[1099,215],[1100,215],[1076,215],[1073,54],[1077,215],[1091,215],[1075,216],[1089,215],[1085,215],[1079,215],[1078,215],[1081,215],[1080,215],[1098,215],[1086,215],[1087,215],[1088,215],[1097,215],[1071,217],[1072,217],[1070,1],[931,218],[930,54],[77,219],[227,220],[231,221],[233,222],[1235,223],[158,224],[162,225],[284,226],[159,227],[186,228],[160,229],[190,228],[178,228],[142,228],[147,1],[166,1],[255,230],[250,1],[249,231],[252,232],[253,233],[167,234],[243,235],[246,236],[220,237],[219,238],[218,239],[258,54],[217,240],[172,1],[261,1],[263,1],[265,241],[262,54],[264,242],[138,1],[140,243],[206,1],[207,1],[209,1],[212,244],[208,1],[210,245],[211,245],[161,1],[226,240],[234,246],[238,247],[151,248],[251,249],[150,250],[183,251],[200,252],[143,253],[149,254],[139,255],[204,256],[203,257],[185,1],[170,258],[199,259],[198,1],[192,260],[193,261],[145,262],[144,1],[197,263],[196,264],[195,265],[194,266],[146,267],[187,267],[132,1],[201,268],[165,269],[188,270],[202,271],[205,272],[152,1],[157,1],[154,1],[155,1],[156,1],[168,1],[169,273],[191,274],[148,275],[153,1],[164,276],[163,277],[180,278],[179,279],[171,280],[173,281],[175,282],[266,283],[174,284],[176,285],[229,1],[230,1],[228,1],[260,1],[177,286],[76,1],[254,287],[221,1],[224,288],[236,54],[242,289],[240,54],[214,290],[141,1],[244,291],[216,1],[223,1],[222,292],[189,293],[184,294],[182,295],[181,1],[232,1],[248,54],[225,296],[66,1],[75,297],[72,54],[73,1],[74,1],[235,298],[237,299],[239,300],[241,301],[271,302],[245,302],[270,303],[285,304],[247,305],[256,306],[257,307],[259,308],[267,309],[269,1],[268,310],[213,311],[1306,312],[1315,313],[1304,1],[1305,314],[1316,315],[1311,316],[1312,317],[1310,318],[1314,319],[1308,320],[1307,321],[1313,322],[1309,313],[1216,88],[322,323],[320,324],[321,325],[309,326],[310,324],[317,327],[308,328],[313,329],[323,1],[314,330],[319,331],[324,332],[307,333],[315,334],[316,335],[311,336],[318,323],[312,337],[950,338],[949,1],[535,339],[966,54],[1022,61],[1039,340],[1040,340],[1042,341],[1043,342],[1021,58],[1044,340],[1060,343],[1041,340],[1045,344],[1046,61],[1047,340],[1048,54],[1049,340],[1050,345],[1051,340],[1052,340],[1053,61],[1054,346],[1055,340],[1056,340],[1057,340],[1058,340],[1059,61],[521,54],[1140,1],[1209,347],[1208,348],[304,1],[1240,349],[1239,350],[1237,351],[926,1],[306,352],[1214,1],[999,353],[1013,354],[998,355],[971,1],[972,356],[973,356],[979,357],[974,357],[978,357],[975,1],[976,357],[977,357],[991,1],[992,1],[980,356],[981,1],[982,356],[995,1],[983,358],[984,358],[985,358],[986,1],[997,359],[987,358],[988,356],[989,1],[990,356],[970,1],[996,360],[993,361],[994,362],[1241,1],[347,1],[363,1],[1127,363],[1128,363],[1130,363],[1129,363],[1131,363],[1135,363],[1136,363],[1137,363],[1138,364],[1132,363],[1139,365],[1134,363],[1133,1],[1126,1],[64,1],[65,1],[12,1],[13,1],[15,1],[14,1],[2,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[3,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[58,1],[56,1],[57,1],[59,1],[60,1],[10,1],[1,1],[11,1],[63,1],[62,1],[61,1],[1207,366],[1203,367],[1202,96],[1206,368],[1205,369],[1204,1],[348,370],[334,371],[335,370],[351,372],[333,1],[325,373],[303,374],[302,1],[305,1],[301,375],[354,376],[353,377],[367,378],[352,377],[1242,379],[1245,1],[1246,1],[1247,1],[1248,1],[1249,1],[1250,1],[1251,1],[1252,1],[1253,1],[1254,1],[1255,1],[1256,1],[1257,1],[1259,380],[1260,1],[1261,1],[1262,1],[1263,1],[1264,1],[1265,1],[1266,1],[1267,1],[1268,1],[1269,1],[1272,1],[1273,1],[1274,1],[1275,1],[1281,1],[1282,1],[1283,1],[1276,1],[1277,1],[1278,1],[1279,1],[1280,1],[1284,1],[1270,1],[1271,1],[1285,1],[1286,1],[503,381],[968,382],[967,383],[969,384],[1001,385],[1004,386],[510,387],[1006,388],[513,389],[1008,390],[514,387],[1010,391],[516,392],[1009,393],[518,394],[1007,395],[519,381],[965,396],[520,397],[933,398],[932,399],[522,400],[1012,401],[1011,402],[934,397],[940,403],[524,404],[1014,405],[942,406],[1017,407],[525,479],[1018,480],[1019,381],[1062,409],[1061,410],[937,411],[936,412],[526,381],[938,413],[527,381],[1063,414],[528,415],[1064,416],[529,397],[1065,417],[939,418],[533,397],[1066,419],[534,397],[923,420],[536,421],[523,422],[531,423],[532,381],[537,381],[924,424],[538,425],[935,426],[941,427],[601,428],[929,428],[539,381],[1000,429],[1003,430],[1067,480],[540,381],[1069,481],[1068,433],[556,434],[1005,435],[547,436],[543,6],[548,6],[549,1],[544,1],[545,1],[546,482],[550,6],[551,6],[552,1],[553,6],[554,6],[555,54],[557,437],[580,438],[1294,439],[1289,440],[586,441],[587,1],[1293,442],[1288,1],[1291,443],[1292,444],[1287,445],[927,446],[1290,447],[589,448],[560,449],[1164,450],[591,451],[1124,452],[1125,1],[1163,453],[582,1],[590,6],[581,1],[592,483],[594,483],[577,456],[579,457],[558,1],[578,458],[584,459],[583,1],[595,1],[1102,460],[1103,461],[599,462],[600,463],[597,464],[598,465],[1230,466],[1165,467],[1166,468],[1167,469],[1168,470],[1232,484],[1233,472],[530,425],[487,1],[502,473],[486,474],[515,1],[489,1],[488,475],[493,476],[490,1],[491,475],[492,475],[362,477],[368,478]],"semanticDiagnosticsPerFile":[588,559,561,562,273,585,274,286,287,299,928,272,1234,1244,1146,357,355,1258,1141,1123,1108,1115,1111,1109,1107,1122,1120,1112,1110,1113,1119,1105,1114,1118,1117,1116,1121,1106,542,1154,1152,1153,1149,1150,1143,1151,1144,1231,1148,1162,1159,1158,1156,1157,1155,1160,1161,1145,1147,1142,288,282,283,278,1224,1220,1218,1222,1219,1213,1217,1215,1212,1223,1221,215,1243,483,369,397,370,398,371,399,372,400,373,401,374,402,375,403,376,404,377,405,378,406,425,379,407,380,408,387,415,381,409,382,410,383,411,384,412,385,413,386,414,388,416,389,417,390,418,391,419,392,420,393,421,394,422,395,423,396,424,485,426,454,427,455,428,456,429,457,430,458,431,459,432,460,433,461,434,462,435,463,482,436,464,437,465,444,472,438,466,439,467,440,468,441,469,442,470,443,471,445,473,446,474,447,475,448,476,449,477,450,478,451,479,452,480,453,481,484,512,962,517,511,508,509,505,506,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,631,630,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,660,659,658,661,662,663,664,666,665,668,667,669,670,671,672,674,673,675,676,677,678,679,680,681,682,683,684,685,686,689,687,688,690,691,692,693,694,695,696,697,698,699,700,701,703,702,704,705,706,707,708,709,711,710,712,713,714,715,716,717,718,719,720,721,722,724,723,725,727,726,728,729,730,731,733,732,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,763,762,764,765,766,767,768,769,921,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,791,789,790,792,793,794,795,796,797,798,799,800,801,803,802,805,806,804,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,829,828,831,830,832,833,834,835,836,837,838,839,841,840,842,843,844,845,847,846,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,870,869,871,872,873,874,875,876,877,878,879,880,881,883,884,885,886,887,888,889,882,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,602,907,908,909,910,911,912,913,914,915,916,917,918,919,920,507,504,1023,1029,1031,1024,1032,1030,1033,1025,1026,1034,1035,1038,1027,1036,1037,1028,1002,281,495,498,494,501,500,499,496,497,957,954,953,948,959,944,955,947,946,956,951,958,952,945,298,297,296,961,1295,943,360,356,358,359,1296,340,1298,1301,1299,1300,1211,1210,541,1302,1172,277,279,280,295,294,1303,1318,1319,1236,1320,1020,564,565,563,566,567,568,569,570,571,572,573,574,575,1173,1321,925,1297,78,79,81,82,83,84,85,86,87,88,89,90,91,93,92,94,95,96,80,130,97,98,99,131,100,101,102,103,104,105,106,107,108,109,110,111,112,114,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,69,136,1015,137,135,1016,960,133,134,67,71,1322,70,1347,1348,1323,1326,1345,1346,1336,1335,1333,1328,1341,1339,1343,1327,1340,1344,1329,1330,1342,1324,1331,1332,1334,1338,1349,1337,1325,1362,1361,1356,1358,1357,1350,1351,1353,1355,1359,1360,1352,1354,1363,1317,1171,275,276,361,344,332,330,331,345,346,337,365,338,339,349,366,350,336,364,343,342,327,329,341,326,328,1238,1104,964,922,68,300,293,576,963,593,291,290,292,289,1201,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1199,1186,1187,1188,1189,1190,1191,1192,1193,1195,1196,1194,1197,1198,1200,1174,596,1226,1228,1225,1227,1170,1169,1229,1101,1096,1095,1094,1074,1084,1083,1093,1092,1082,1090,1099,1100,1076,1073,1077,1091,1075,1089,1085,1079,1078,1081,1080,1098,1086,1087,1088,1097,1071,1072,1070,931,930,77,227,231,233,1235,158,162,284,159,186,160,190,178,142,147,166,255,250,249,252,253,167,243,246,220,219,218,258,217,172,261,263,265,262,264,138,140,206,207,209,212,208,210,211,161,226,234,238,151,251,150,183,200,143,149,139,204,203,185,170,199,198,192,193,145,144,197,196,195,194,146,187,132,201,165,188,202,205,152,157,154,155,156,168,169,191,148,153,164,163,180,179,171,173,175,266,174,176,229,230,228,260,177,76,254,221,224,236,242,240,214,141,244,216,223,222,189,184,182,181,232,248,225,66,75,72,73,74,235,237,239,241,271,245,270,285,247,256,257,259,267,269,268,213,1306,1315,1304,1305,1316,1311,1312,1310,1314,1308,1307,1313,1309,1216,322,320,321,309,310,317,308,313,323,314,319,324,307,315,316,311,318,312,950,949,535,966,1022,1039,1040,1042,1043,1021,1044,1060,1041,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,521,1140,1209,1208,304,1240,1239,1237,926,306,1214,999,1013,998,971,972,973,979,974,978,975,976,977,991,992,980,981,982,995,983,984,985,986,997,987,988,989,990,970,996,993,994,1241,347,363,1127,1128,1130,1129,1131,1135,1136,1137,1138,1132,1139,1134,1133,1126,64,65,12,13,15,14,2,16,17,18,19,20,21,22,23,3,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,58,56,57,59,60,10,1,11,63,62,61,1207,1203,1202,1206,1205,1204,348,334,335,351,333,325,303,302,305,301,354,353,367,352,1242,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1272,1273,1274,1275,1281,1282,1283,1276,1277,1278,1279,1280,1284,1270,1271,1285,1286,503,968,967,969,1001,1004,510,1006,513,1008,514,1010,516,1009,518,1007,519,965,520,933,932,522,1012,1011,934,940,524,1014,942,1017,525,1018,1019,1062,1061,937,936,526,938,527,1063,528,1064,529,1065,939,533,1066,534,923,536,523,531,532,537,924,538,935,941,601,929,539,1000,1003,1067,540,1069,1068,556,1005,547,543,548,549,544,545,546,550,551,552,553,554,555,557,580,1294,1289,586,587,1293,1288,1291,1292,1287,927,1290,589,560,1164,591,1124,1125,1163,582,590,581,592,594,577,579,558,578,584,583,595,1102,1103,599,600,597,598,1230,1165,1166,1167,1168,1232,1233,530,487,502,486,515,489,488,493,490,491,492,362,368],"affectedFilesPendingEmit":[588,559,561,562,273,585,286,287,299,928,1234,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1272,1273,1274,1275,1281,1282,1283,1276,1277,1278,1279,1280,1284,1270,1271,1285,1286,503,968,967,969,1001,1004,510,1006,513,1008,514,1010,516,1009,518,1007,519,965,520,933,932,522,1012,1011,934,940,524,1014,942,1017,525,1018,1019,1062,1061,937,936,526,938,527,1063,528,1064,529,1065,939,533,1066,534,923,536,523,531,532,537,924,538,935,941,601,929,539,1000,1003,1067,540,1069,1068,556,1005,547,543,548,549,544,545,546,550,551,552,553,554,555,557,580,1294,1289,586,587,1293,1288,1291,1292,1287,927,1290,589,560,1164,591,1124,1125,1163,582,590,581,592,594,577,579,558,578,584,583,595,1102,1103,599,600,597,598,1230,1165,1166,1167,1168,1232,1233,530,487,502,486,515,489,488,493,490,491,492,362,368]},"version":"5.2.2"} \ No newline at end of file diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..3171630 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from "vitest/config"; +import path from "path"; +import react from "@vitejs/plugin-react"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + "@": path.resolve(__dirname, "/"), + "@components": path.resolve(__dirname, "./src/components"), + "@context": path.resolve(__dirname, "./src/context"), + "@customTypes": path.resolve(__dirname, "./src/customTypes"), + "@hooks": path.resolve(__dirname, "./src/hooks"), + "@lib": path.resolve(__dirname, "./src/lib"), + "@pages": path.resolve(__dirname, "./src/pages"), + "@styles": path.resolve(__dirname, "./src/styles"), + }, + }, + test: { + environment: "jsdom", + globals: true, + setupFiles: "./vitest.setup.ts", + }, +}); diff --git a/vitest.setup.ts b/vitest.setup.ts new file mode 100644 index 0000000..cc78ca3 --- /dev/null +++ b/vitest.setup.ts @@ -0,0 +1,10 @@ +import { vi } from "vitest"; + +// Mock IntersectionObserver +const IntersectionObserverMock = vi.fn(() => ({ + disconnect: vi.fn(), + observe: vi.fn(), + takeRecords: vi.fn(), + unobserve: vi.fn(), +})); +vi.stubGlobal("IntersectionObserver", IntersectionObserverMock);
{string?.trim()}