From 7da7ac6ae210e19aa73aeb2a08b77f03ec8e7b42 Mon Sep 17 00:00:00 2001 From: gohoski Date: Mon, 6 Jan 2025 05:25:08 +0300 Subject: [PATCH 1/7] Implement hCaptcha solving via 2Captcha & other stuff - implement hCaptcha solving via paid service 2Captcha and browser automation library Playwright with rebrowser-patches - implement sunoApi instances caching so sessions won't be constantly updated - add support for entering cookies not only in SUNO_COOKIE, but also the Cookie HTTP header - update docs and add Russian docs --- .env.example | 9 +- Dockerfile | 6 +- README.md | 75 +- README_CN.md | 7 +- README_RU.md | 355 + next.config.mjs | 13 +- package-lock.json | 10008 ++++++++++++++++++++++ package.json | 18 +- src/app/api/clip/route.ts | 2 +- src/app/api/concat/route.ts | 3 +- src/app/api/custom_generate/route.ts | 18 +- src/app/api/extend_audio/route.ts | 7 +- src/app/api/generate/route.ts | 3 +- src/app/api/generate_lyrics/route.ts | 3 +- src/app/api/generate_stems/route.ts | 3 +- src/app/api/get/route.ts | 6 +- src/app/api/get_aligned_lyrics/route.ts | 3 +- src/app/api/get_limit/route.ts | 3 +- src/app/components/Swagger.tsx | 7 +- src/app/docs/swagger-suno-api.json | 5 + src/app/v1/chat/completions/route.ts | 2 +- src/lib/SunoApi.ts | 403 +- src/lib/utils.ts | 9 + tsconfig.json | 7 +- 24 files changed, 10837 insertions(+), 138 deletions(-) create mode 100644 README_RU.md create mode 100644 package-lock.json diff --git a/.env.example b/.env.example index 2ec4785..4496d1f 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,7 @@ -SUNO_COOKIE= - +# For more information, please see the README.md +SUNO_COOKIE= +TWOCAPTCHA_KEY= # Obtain from 2captcha.com +BROWSER=chromium # chromium or firefox +BROWSER_GHOST_CURSOR=false +BROWSER_LOCALE=en +BROWSER_HEADLESS=true \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 305782c..5d9fd2e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,10 +12,14 @@ WORKDIR /app COPY package*.json ./ ARG SUNO_COOKIE -RUN if [ -z "$SUNO_COOKIE" ]; then echo "SUNO_COOKIE is not set" && exit 1; fi +ARG BROWSER +RUN if [ -z "$SUNO_COOKIE" ]; then echo "Warning: SUNO_COOKIE is not set"; fi ENV SUNO_COOKIE=${SUNO_COOKIE} +RUN if [ -z "$BROWSER" ]; then echo "Warning: BROWSER is not set; will use chromium by default"; fi +ENV BROWSER=${BROWSER:-chromium} RUN npm install --only=production +RUN npx playwright install $BROWSER COPY --from=builder /src/.next ./.next EXPOSE 3000 CMD ["npm", "run", "start"] diff --git a/README.md b/README.md index 87b0bd3..1f1066e 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,10 @@

English | 简体中文 + | русский | Demo | Docs - | Deploy with Vercel + | Deploy with Vercel

gcui-art/suno-api:Open-source SunoAI API - Use API to call the music generation AI of suno.ai. | Product Hunt @@ -22,10 +23,12 @@ ## Introduction -Suno.ai v3 is an amazing AI music service. Although the official API is not yet available, we couldn't wait to integrate its capabilities somewhere. +Suno is an amazing AI music service. Although the official API is not yet available, we couldn't wait to integrate its capabilities somewhere. We discovered that some users have similar needs, so we decided to open-source this project, hoping you'll like it. +This implementation uses the paid [2Captcha](https://2captcha.com/about) service (a.k.a. ruCaptcha) to solve the hCaptcha challenges automatically and does not use any already made closed-source paid Suno API implementations. + ## Demo We have deployed an example bound to a free Suno account, so it has daily usage limits, but you can see how it runs: @@ -33,35 +36,43 @@ We have deployed an example bound to a free Suno account, so it has daily usage ## Features -- Perfectly implements the creation API from app.suno.ai +- Perfectly implements the creation API from suno.ai. - Automatically keep the account active. +- Solve CAPTCHAs automatically using [2Captcha](https://2captcha.com) and [Playwright](https://playwright.dev) with [rebrowser-patches](https://github.com/rebrowser/rebrowser-patches). - Compatible with the format of OpenAI’s `/v1/chat/completions` API. -- Supports Custom Mode -- One-click deployment to Vercel +- Supports Custom Mode. +- One-click deployment to [Vercel](#deploy-to-vercel) & [Docker](#docker). - In addition to the standard API, it also adapts to the API Schema of Agent platforms like GPTs and Coze, so you can use it as a tool/plugin/Action for LLMs and integrate it into any AI Agent. - Permissive open-source license, allowing you to freely integrate and modify. ## Getting Started -### 1. Obtain the cookie of your app.suno.ai account +### 1. Obtain the cookie of your Suno account -1. Head over to [app.suno.ai](https://app.suno.ai) using your browser. +1. Head over to [suno.com/create](https://suno.com/create) using your browser. 2. Open up the browser console: hit `F12` or access the `Developer Tools`. -3. Navigate to the `Network tab`. +3. Navigate to the `Network` tab. 4. Give the page a quick refresh. -5. Identify the request that includes the keyword `client?_clerk_js_version`. +5. Identify the latest request that includes the keyword `?__clerk_api_version`. 6. Click on it and switch over to the `Header` tab. 7. Locate the `Cookie` section, hover your mouse over it, and copy the value of the Cookie. ![get cookie](https://github.com/gcui-art/suno-api/blob/main/public/get-cookie-demo.gif) -### 2. Clone and deploy this project +### 2. Register on 2Captcha and top up your balance +[2Captcha](https://2captcha.com/about) is a paid CAPTCHA solving service that uses real workers to solve the CAPTCHA and has high accuracy. It is needed because of Suno constantly requesting hCaptcha solving that currently isn't possible for free by any means. + +[Create](https://2captcha.com/auth/register?userType=customer) a new 2Captcha account, [top up](https://2captcha.com/pay) your balance and [get your API key](https://2captcha.com/enterpage#recognition). + +If you are located in Russia or Belarus, use the [ruCaptcha](https://rucaptcha.com) interface instead of 2Captcha. It's the same service, but it supports payments from those countries. + +### 3. Clone and deploy this project You can choose your preferred deployment method: #### Deploy to Vercel -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fgcui-art%2Fsuno-api&env=SUNO_COOKIE&project-name=suno-api&repository-name=suno-api) +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fgcui-art%2Fsuno-api&env=SUNO_COOKIE,TWOCAPTCHA_KEY,BROWSER,BROWSER_GHOST_CURSOR,BROWSER_LOCALE,BROWSER_HEADLESS&project-name=suno-api&repository-name=suno-api) #### Run locally @@ -69,25 +80,37 @@ You can choose your preferred deployment method: git clone https://github.com/gcui-art/suno-api.git cd suno-api npm install +npx playwright install chromium ``` - -Alternatively, you can use [Docker Compose](https://docs.docker.com/compose/) +#### Docker +Alternatively, you can use [Docker Compose](https://docs.docker.com/compose/). However, follow the step below before running. ```bash docker compose build && docker compose up ``` -### 3. Configure suno-api +### 4. Configure suno-api -- If deployed to Vercel, please add an environment variable `SUNO_COOKIE` in the Vercel dashboard, with the value of the cookie obtained in the first step. +- If deployed to Vercel, please add the environment variables in the Vercel dashboard. - If you’re running this locally, be sure to add the following to your `.env` file: - +#### Environment variables +- `SUNO_COOKIE` — the `Cookie` header you obtained in the first step. +- `TWOCAPTCHA_KEY` — your 2Captcha API key from the second step. +- `BROWSER` — the name of the browser that is going to be used to solve the CAPTCHA. Only `chromium` and `firefox` supported. +- `BROWSER_GHOST_CURSOR` — use ghost-cursor-playwright to simulate smooth mouse movements. Please note that it doesn't seem to make any difference in the rate of CAPTCHAs, so you can set it to `false`. Retained for future testing. +- `BROWSER_LOCALE` — the language of the browser. Using either `en` or `ru` is recommended, since those have the most workers on 2Captcha. [List of supported languages](https://2captcha.com/2captcha-api#language) +- `BROWSER_HEADLESS` — run the browser without the window. You probably want to set this to `true`. ```bash -SUNO_COOKIE= +SUNO_COOKIE=<…> +TWOCAPTCHA_KEY=<…> +BROWSER=chromium +BROWSER_GHOST_CURSOR=false +BROWSER_LOCALE=en +BROWSER_HEADLESS=true ``` -### 4. Run suno api +### 5. Run suno-api - If you’ve deployed to Vercel: - Please click on Deploy in the Vercel dashboard and wait for the deployment to be successful. @@ -108,7 +131,7 @@ SUNO_COOKIE= it means the program is running normally. -### 5. Use Suno API +### 6. Use Suno API You can check out the detailed API documentation at : [suno.gcui.ai/docs](https://suno.gcui.ai/docs) @@ -132,10 +155,12 @@ Suno API currently mainly implements the following APIs: - `/api/concat`: Generate the whole song from extensions ``` +You can also specify the cookies in the `Cookie` header of your request, overriding the default cookies in the `SUNO_COOKIE` environment variable. This comes in handy when, for example, you want to use multiple free accounts at the same time. + For more detailed documentation, please check out the demo site: [suno.gcui.ai/docs](https://suno.gcui.ai/docs) -## API Integration Code Example +## API Integration Code Examples ### Python @@ -143,7 +168,7 @@ For more detailed documentation, please check out the demo site: import time import requests -# replace your vercel domain +# replace with your suno-api URL base_url = 'http://localhost:3000' @@ -208,7 +233,7 @@ if __name__ == '__main__': ``` -### Js +### JavaScript ```js const axios = require("axios"); @@ -304,18 +329,18 @@ You can integrate Suno AI as a tool/plugin/action into your AI agent. There are four ways you can support this project: -1. Fork and Submit Pull Requests: We welcome any PRs that enhance the component or editor. +1. Fork and Submit Pull Requests: We welcome any PRs that enhances the functionality, APIs, response time and availability. You can also help us just by translating this README into your language—any help for this project is welcome! 2. Open Issues: We appreciate reasonable suggestions and bug reports. 3. Donate: If this project has helped you, consider buying us a coffee using the Sponsor button at the top of the project. Cheers! ☕ 4. Spread the Word: Recommend this project to others, star the repo, or add a backlink after using the project. ## Questions, Suggestions, Issues, or Bugs? -We use GitHub Issues to manage feedback. Feel free to open an issue, and we'll address it promptly. +We use [GitHub Issues](https://github.com/gcui-art/suno-api/issues) to manage feedback. Feel free to open an issue, and we'll address it promptly. ## License -LGPL-3.0 or later +The license of this project is LGPL-3.0 or later. See [LICENSE](LICENSE) for more information. ## Related Links diff --git a/README_CN.md b/README_CN.md index eee70fe..bb05586 100644 --- a/README_CN.md +++ b/README_CN.md @@ -7,10 +7,11 @@

English - | 简体中文 + | 简体中文 + | русский | Demo | 文档 - | 一键部署到 Vercel + | 一键部署到 Vercel

@@ -61,7 +62,7 @@ Suno.ai v3 是一个令人惊叹的 AI 音乐服务,虽然官方还没有开 #### 部署到 Vercel -[![部署到 Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fgcui-art%2Fsuno-api&env=SUNO_COOKIE&project-name=suno-api&repository-name=suno-api) +[![部署到 Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fgcui-art%2Fsuno-api&env=SUNO_COOKIE,TWOCAPTCHA_KEY,BROWSER,BROWSER_GHOST_CURSOR,BROWSER_LOCALE,BROWSER_HEADLESS&project-name=suno-api&repository-name=suno-api) #### 本地运行 diff --git a/README_RU.md b/README_RU.md new file mode 100644 index 0000000..859db8e --- /dev/null +++ b/README_RU.md @@ -0,0 +1,355 @@ +

+

+ Suno AI API +

+

Используйте API для генерации музыки через Suno.ai и с лёгкостью интегрируйте его в агенты, такие как GPT.

+

👉 Мы обновляемся быстро, пожалуйста, поставьте звёздочку.

+
+

+ English + | 简体中文 + | русский + | Демо + | Документация + | Развёртывание на Vercel +

+

+ gcui-art/suno-api:Open-source SunoAI API - Use API to call the music generation AI of suno.ai. | Product Hunt +

+ +> 🔥 Посмотрите мой новый проект: [ReadPo — 10-кратное ускорение чтения и печатания](https://readpo.com?utm_source=github&utm_medium=suno-ai) + +![Баннер suno-api](https://github.com/gcui-art/suno-api/blob/main/public/suno-banner.png) + +## Вступление + +Suno — потрясающий сервис для ИИ-музыки. Несмотря на отстутствие официального API, мы не могли дождаться, чтобы интегрировать его возможности где-нибудь. + +Мы узнали, что у других пользователей есть схожие потребности, поэтому решили выложить этот проект в открытый доступ, надеясь, что он вам понравится. + +Данная реализация использует платный сервис [2Captcha](https://2captcha.com/about) (a.k.a. ruCaptcha) для автоматического решения капч hCaptcha и не использует какие-либо готовые реализации API Suno с закрытым исходным кодом. + +## Демо + +Мы опубликовали пример, привязанный к бесплатному аккаунту, так что имеются дневные лимиты, но вы всё равно можете посмотреть, как оно работает: +[suno.gcui.ai](https://suno.gcui.ai) + +## Функции + +- Идеально реализует API suno.ai. +- Автоматическое поддержание сессии аккаунта. +- Автоматическое решение капч через [ruCaptcha](https://rucaptcha.com/about) и [Playwright](https://playwright.dev) с патчами [rebrowser-patches](https://github.com/rebrowser/rebrowser-patches). +- Совместим с форматом API OpenAI `/v1/chat/completions`. +- Поддержка пользовательского текста песни. +- Развёртывание в один клик через [Vercel](#развёртывание-на-vercel) и [Docker](#docker). +- В дополнение к стандартному API, он также адаптируется к схеме API агентских платформ, таких как GPT и Coze, поэтому вы можете использовать его как инструмент/плагин/действие для LLM и интегрировать его в любой AI-агент. +- Разрешительная лицензия с открытым исходным кодом, позволяющая свободно интегрировать и модифицировать. + +## Начало работы + +### 1. Получите куки вашего аккаунта Suno + +1. Зайдите на [suno.com/create](https://suno.com/create). +2. Откройте консоль браузера: нажмите `F12` или откройте инструменты разработчика. +3. Перейдите на вкладку `Сеть` (`Network`). +4. Перезагрузите страницу. +5. Найдите запрос, адрес которого содержит `client?__clerk_api_version`. +6. Нажмите на него и перейдите на вкладку `Заголовки` (`Header`). +7. Найдите заголовок `Cookie`, нажмите ПКМ по нему и скопируйте его значение. + +![Видеоинструкция о том, как получить куки](https://github.com/gcui-art/suno-api/blob/main/public/get-cookie-demo.gif) + +### 2. Зарегистрируйтесь на 2Captcha и пополните баланс +[2Captcha](https://2captcha.com/ru/about) — это платный сервис для решения капч, использующий реальных работников для этого и обладающий высокой точностью. Он необходим из-за того, что Suno постоянно запрашивает решение hCaptcha, что невозможно за бесплатно каким-либо автоматическим способом. + +[Создайте](https://2captcha.com/ru/auth/register?userType=customer) новый аккаунт, [пополните](https://2captcha.com/ru/pay) баланс и [получите свой API-ключ](https://2captcha.com/ru/enterpage#recognition). + +ℹ Если вы находитесь в России или Беларуси, используйте интерфейс [ruCaptcha](https://rucaptcha.com) вместо 2Captcha. Это абсолютно тот же сервис, но данный интерфейс поддерживает платежи из этих стран. + +### 3. Скачайте и запустите проект + +Вы можете выбрать свой предпочитаемый способ запуска: + +#### Развёртывание на Vercel + +[![Развёртывание на Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fgcui-art%2Fsuno-api&env=SUNO_COOKIE,TWOCAPTCHA_KEY,BROWSER,BROWSER_GHOST_CURSOR,BROWSER_LOCALE,BROWSER_HEADLESS&project-name=suno-api&repository-name=suno-api) + +#### Локально + +```bash +git clone https://github.com/gcui-art/suno-api.git +cd suno-api +npm install +npx playwright install chromium +``` +#### Docker +Также можно использовать [Docker Compose](https://docs.docker.com/compose/), однако перед запуском выполните шаг ниже. + +```bash +docker compose build && docker compose up +``` + +### 4. Настройте suno-api + +- Если вы используете Vercel, настройте переменные среды в панели управления Vercel. + +- Если вы установили suno-api локально, добавьте следующее в ваш `.env`-файл: +#### Environment variables +- `SUNO_COOKIE` — заголовок `Cookie`, который вы скопировали ещё в первом шаге. +- `TWOCAPTCHA_KEY` — ваш API-ключ 2Captcha из второго шага. +- `BROWSER` — название браузера, который будет использоваться для решения капч. Поддерживаются только `chromium` и `firefox`. +- `BROWSER_GHOST_CURSOR` — использовать ли ghost-cursor-playwright для симуляции плавных движений мышкой. Обратите внимание, что это, похоже, никак не влияет на появление капч, так что вы можете спокойно установить значение `false`. +- `BROWSER_LOCALE` — язык браузера. Рекомендуется использовать либо `en`, либо `ru`, т. к. данные языки имеют больше всего работников на 2Captcha. [Список поддерживаемых языков](https://2captcha.com/ru/2captcha-api#language) +- `BROWSER_HEADLESS` — запускать ли браузер без отдельного окна. Скорее всего, вам надо установить значение `true`. +```bash +SUNO_COOKIE=<…> +TWOCAPTCHA_KEY=<…> +BROWSER=chromium +BROWSER_GHOST_CURSOR=false +BROWSER_LOCALE=en +BROWSER_HEADLESS=true +``` + +### 5. Запустите suno-api + +- Если вы используете Vercel: + - Нажмите на кнопку `Deploy` в панели Vercel и дождитесь успеха. + - Посетите API `https://<присовенный-домен-vercel>/api/get_limit` для тестирования. +- Если вы установили проект локально: + - Выполните `npm run dev`. + - Посетите API `http://localhost:3000/api/get_limit` для тестирования. +- Если вернулся следующий результат: + +```json +{ + "credits_left": 50, + "period": "day", + "monthly_limit": 50, + "monthly_usage": 50 +} +``` + +то программа работает корректно. + +### 6. Используйте Suno API + +Вы можете посмотреть документацию suno-api здесь: +[suno.gcui.ai/docs](https://suno.gcui.ai/docs) + +## Справочник по API + +На данный момент suno-api реализует следующие API: + +```bash +- `/api/generate`: Сгенерировать музыку +- `/v1/chat/completions`: Сгенерировать музыку - Вызов API в формате OpenAI. +- `/api/custom_generate`: Сгенерировать музыку (Custom Mode, поддержка ручного текста песни, стиля музыки, названия и т. д.) +- `/api/generate_lyrics`: Сгенерировать текст песни на основе промпта +- `/api/get`: Получить информацию песни по ID. Перечисляйте несколько ID через запятую. + Если ID не предоставлен, то отобразятся все песни. +- `/api/get_limit`: Получить лимиты на сегодня +- `/api/extend_audio`: Расширить длину песни +- `/api/generate_stems`: Создать стем-треки (отдельную звуковую и музыкальную дорожку) +- `/api/get_aligned_lyrics`: Получить список временных меток для каждого слова в тексте песни +- `/api/clip`: Получить информацию о клипе на основе идентификатора, переданного в качестве параметра запроса `id`. +- `/api/concat`: Сгенерировать всю песню из расширений +``` + +Вы также можете указать куки в заголовок `Cookie` вашего запроса, переопределяя дефолтные куки в переменной среды `SUNO_COOKIE`. Это удобно, например, когда вы хотите использовать несколько бесплатных аккаунтов одновременно. + +Для более подробной документации посетите демо-сайт: +[suno.gcui.ai/docs](https://suno.gcui.ai/docs) + +## Пример кода интеграции API + +### Python + +```python +import time +import requests + +# замените на URL-адрес вашего suno-api +base_url = 'http://localhost:3000' + + +def custom_generate_audio(payload): + url = f"{base_url}/api/custom_generate" + response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'}) + return response.json() + + +def extend_audio(payload): + url = f"{base_url}/api/extend_audio" + response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'}) + return response.json() + +def generate_audio_by_prompt(payload): + url = f"{base_url}/api/generate" + response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'}) + return response.json() + + +def get_audio_information(audio_ids): + url = f"{base_url}/api/get?ids={audio_ids}" + response = requests.get(url) + return response.json() + + +def get_quota_information(): + url = f"{base_url}/api/get_limit" + response = requests.get(url) + return response.json() + +def get_clip(clip_id): + url = f"{base_url}/api/clip?id={clip_id}" + response = requests.get(url) + return response.json() + +def generate_whole_song(clip_id): + payload = {"clip_id": clip_id} + url = f"{base_url}/api/concat" + response = requests.post(url, json=payload) + return response.json() + + +if __name__ == '__main__': + data = generate_audio_by_prompt({ + "prompt": "Популярная хэви-метал песня о войне, исполненная глубоким мужским голосом, медленно и мелодично. В тексте изображена печаль людей после войны.", + "make_instrumental": False, + "wait_audio": False + }) + + ids = f"{data[0]['id']},{data[1]['id']}" + print(f"ids: {ids}") + + for _ in range(60): + data = get_audio_information(ids) + if data[0]["status"] == 'streaming': + print(f"{data[0]['id']} ==> {data[0]['audio_url']}") + print(f"{data[1]['id']} ==> {data[1]['audio_url']}") + break + # sleep 5s + time.sleep(5) + +``` + +### JavaScript + +```js +const axios = require("axios"); + +// замените на URL-адрес вашего suno-api +const baseUrl = "http://localhost:3000"; + +async function customGenerateAudio(payload) { + const url = `${baseUrl}/api/custom_generate`; + const response = await axios.post(url, payload, { + headers: { "Content-Type": "application/json" }, + }); + return response.data; +} + +async function generateAudioByPrompt(payload) { + const url = `${baseUrl}/api/generate`; + const response = await axios.post(url, payload, { + headers: { "Content-Type": "application/json" }, + }); + return response.data; +} + +async function extendAudio(payload) { + const url = `${baseUrl}/api/extend_audio`; + const response = await axios.post(url, payload, { + headers: { "Content-Type": "application/json" }, + }); + return response.data; +} + +async function getAudioInformation(audioIds) { + const url = `${baseUrl}/api/get?ids=${audioIds}`; + const response = await axios.get(url); + return response.data; +} + +async function getQuotaInformation() { + const url = `${baseUrl}/api/get_limit`; + const response = await axios.get(url); + return response.data; +} + +async function getClipInformation(clipId) { + const url = `${baseUrl}/api/clip?id=${clipId}`; + const response = await axios.get(url); + return response.data; +} + +async function main() { + const data = await generateAudioByPrompt({ + prompt: + "Популярная хэви-метал песня о войне, исполненная глубоким мужским голосом, медленно и мелодично. В тексте изображена печаль людей после войны.", + make_instrumental: false, + wait_audio: false, + }); + + const ids = `${data[0].id},${data[1].id}`; + console.log(`ids: ${ids}`); + + for (let i = 0; i < 60; i++) { + const data = await getAudioInformation(ids); + if (data[0].status === "streaming") { + console.log(`${data[0].id} ==> ${data[0].audio_url}`); + console.log(`${data[1].id} ==> ${data[1].audio_url}`); + break; + } + // sleep 5s + await new Promise((resolve) => setTimeout(resolve, 5000)); + } +} + +main(); +``` + +## Интеграция с пользовательскими агентами + +Вы можете интегрировать Suno AI как инструмент/плагин/действие в ваш ИИ-агент. + +### Интеграция с GPT + +[скоро...] + +### Интеграция с Coze + +[скоро...] + +### Интеграция с LangChain + +[скоро...] + +## Вклад в развитие + +Вы можете поддержать этот проект четырьмя способами: + +1. Fork и публикация pull request'ов: мы приветствуем любые PR, которые улучшают данный проект. Вы также можете помочь простым переводом этого README на ваш язык. +2. Создавайте [issue](https://github.com/gcui-art/suno-api/issues): мы ценим разумные предложения и сообщения об ошибках. +3. Пожертвование: если этот проект помог вам, угостите нас кофе, воспользовавшись кнопкой «Sponsor» в верхней части проекта. Спасибо! ☕ +4. Распространяйте информацию: порекомендуйте этот проект другим, поставьте звезду в репо или добавьте обратную ссылку после использования проекта. + +## Вопросы, предложения, проблемы или ошибки? + +Мы используем [Issues на GitHub](https://github.com/gcui-art/suno-api/issues) для обратной связи. Не стестняйтесь создавать issue, мы оперативно решим вашу проблему. + +## Лицензия + +Лицензия данного проекта — LGPL-3.0 или более поздняя версия. Для большей информации см. [LICENSE](LICENSE). + +## Полезные ссылки + +- Репозиторий проекта: [github.com/gcui-art/suno-api](https://github.com/gcui-art/suno-api) +- Официальный сайт Suno.ai: [suno.ai](https://suno.ai) +- Демо: [suno.gcui.ai](https://suno.gcui.ai) +- [Readpo](https://readpo.com?utm_source=github&utm_medium=suno-api): ReadPo — это помощник для чтения и письма, работающий на основе искусственного интеллекта. Собирайте, курируйте и создавайте контент с молниеносной скоростью. +- Album AI: [Автоматическое создание метаданных изображения и общение с альбомом. RAG + Альбом.](https://github.com/gcui-art/album-ai) + +## Заявление + +suno-api — это неофициальный проект с открытым исходным кодом, предназначенный только для учебных и исследовательских целей. \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs index 4678774..193509e 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,15 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + webpack: (config) => { + config.module.rules.push({ + test: /\.(ttf|html)$/i, + type: 'asset/resource' + }); + return config; + }, + experimental: { + serverMinification: false, // the server minification unfortunately breaks the selector class names + }, +}; export default nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c15f1c8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10008 @@ +{ + "name": "suno-api", + "version": "1.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "suno-api", + "version": "1.1.0", + "license": "LGPL-3.0-or-later", + "dependencies": { + "@2captcha/captcha-solver": "^1.3.0", + "@vercel/analytics": "^1.2.2", + "axios": "^1.7.8", + "bufferutil": "^4.0.8", + "chromium-bidi": "^0.10.1", + "cookie": "^1.0.2", + "electron": "^33.2.1", + "ghost-cursor-playwright": "^2.1.0", + "js-cookie": "^3.0.5", + "next": "14.1.4", + "next-swagger-doc": "^0.4.0", + "pino": "^8.19.0", + "pino-pretty": "^11.0.0", + "playwright-core": "^1.49.1", + "react": "^18", + "react-dom": "^18", + "react-markdown": "^9.0.1", + "rebrowser-playwright-core": "^1.49.1", + "swagger-ui-react": "^5.18.2", + "tough-cookie": "^4.1.4", + "user-agents": "^1.1.156", + "utf-8-validate": "^6.0.5", + "yn": "^5.0.0" + }, + "devDependencies": { + "@tailwindcss/typography": "^0.5.12", + "@types/js-cookie": "^3.0.6", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "@types/swagger-ui-react": "^4.18.3", + "@types/tough-cookie": "^4.0.5", + "@types/user-agents": "^1.0.4", + "autoprefixer": "^10.0.1", + "eslint": "^8.57.0", + "eslint-config-next": "14.1.4", + "postcss": "^8", + "tailwindcss": "^3.3.0", + "typescript": "^5" + } + }, + "node_modules/@2captcha/captcha-solver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@2captcha/captcha-solver/-/captcha-solver-1.3.0.tgz", + "integrity": "sha512-Rgyr0kv3EAvBtogQOoe2ns1aXo4ZEoi/QW/96Bkvjk5RdEVPzi+C/X8X2HphQo6FanKQ1UqO7Q7T874IYUJ8eg==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", + "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "license": "MIT" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz", + "integrity": "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.0.4.tgz", + "integrity": "sha512-hPYRrKFoI+nuckPgDJfyYAkybFvheo4usS0Vw0HNAe+fmGBQA5Az37b/yStO284atBoqqdOUhKJ3d9Zw3PQkcQ==", + "license": "MIT" + }, + "node_modules/@electron/get": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" + }, + "node_modules/@next/env": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.4.tgz", + "integrity": "sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.4.tgz", + "integrity": "sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz", + "integrity": "sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz", + "integrity": "sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz", + "integrity": "sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz", + "integrity": "sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz", + "integrity": "sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz", + "integrity": "sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz", + "integrity": "sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz", + "integrity": "sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz", + "integrity": "sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@scarf/scarf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", + "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", + "hasInstallScript": true, + "license": "Apache-2.0" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@swagger-api/apidom-ast": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-alpha.10.tgz", + "integrity": "sha512-f4Y9t1oBlnsvMoLPCykzn5LRrmARiaPzorocQkMFTkYUPb7RKA4zCuWi67hH4iDVsVvkPutgew19XyJiI3OF9Q==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "unraw": "^3.0.0" + } + }, + "node_modules/@swagger-api/apidom-core": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-alpha.10.tgz", + "integrity": "sha512-4uXIN8cLigD1SZUDhmrEwW+1zbrB6bbD9Hlpo/BF74t/Nh4ZoEOUXv1oR/8QXB9AsIkdO65FdDHyaPzyGbjMiQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-ast": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "minim": "~0.23.8", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "short-unique-id": "^5.0.2", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-error": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-alpha.10.tgz", + "integrity": "sha512-ydHNOKTdp9jaeW2yBvdZazXNCVFPbzC2Dy3dtDWU3MwUtSryoefT9OUQFWL7NxzChFRneNhBEcVl4NRocitXeA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7" + } + }, + "node_modules/@swagger-api/apidom-json-pointer": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-alpha.10.tgz", + "integrity": "sha512-Xo0v4Jxp0ZiAm+OOL2PSLyjiw5OAkCMxI0nN9+vOw1/mfXcC+tdb30QQ9WNtF7O9LExjznfFID/NnDEYqBRDwA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-ns-api-design-systems": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-alpha.10.tgz", + "integrity": "sha512-0i4KKNboHi7F8Nra2WNHDl9aOndyTcfKiBfdzSw3j+H5wYAHldeKg7zppqj5rVfwZL9pB5r7eFYZlowwGtmlLg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-asyncapi-2": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-alpha.10.tgz", + "integrity": "sha512-d1LLJ/9LQaT/4jJudFhy3xhpjdTA3pVwBBUqXGPgW2Fp21auTYJMBM9J91wvVUXMUQiVg95DohkCb6TNUYzqLw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-alpha.10.tgz", + "integrity": "sha512-sNj4pAmxEfFYIqRcP9A7/gjNMaa7nu1pWT6gTMXtYROyo4XrChc3wit8F76WJEFIiEPLrPs2SrnnA5GIHM7EnA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-ast": "^1.0.0-alpha.10", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.4" + } + }, + "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-alpha.10.tgz", + "integrity": "sha512-Okwi0ikBSIBhQwMvsoe1+8Ff55cwwp9hu88N/sTDBxI7lyX0xCGAlSrJ9tx4Z/uOn5X+IL9HCRuNlbFt4Bvi2w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.4" + } + }, + "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-alpha.10.tgz", + "integrity": "sha512-Y5p+iA1k8HR5d5cS1jtoADPKJLVg5czaHrs39UcMoMPhINqgqKGd2sYKtX7DnglcLARXe06pv0Qs9ERwCd5ayQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-json-schema-draft-6": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.4" + } + }, + "node_modules/@swagger-api/apidom-ns-openapi-2": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-alpha.10.tgz", + "integrity": "sha512-hVhpXIG5CXSqeLo7+d5VwN8b9X0BM8yMZCEIxVAu5050GlcHC3CeJVpy+2DEBkbvR9tzc2HfPGMpWyQpgnimhQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-openapi-3-0": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-alpha.10.tgz", + "integrity": "sha512-zF2tPojJBGmQ/GuX+QJ0BhBWmnC+ET8Zah9utKpYWFFjqG/Wl6YzWpyrEflXpfGFzDFgoo+R+/3QvzScbPssqg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-openapi-3-1": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-alpha.10.tgz", + "integrity": "sha512-/7o+/Z2LelLcOdDSeY8O467Tjmr4yp0c8T4l13+zoQlaJFCzoeJqUUzP/dyqLPxqSeSMOez7uXnYpii6F8uYcA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-ast": "^1.0.0-alpha.10", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-json-pointer": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-workflows-1": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-1.0.0-alpha.10.tgz", + "integrity": "sha512-tem8H3DHvQNxUqbiLmepccjAyFffS41Z90ibugsw17xzCNIIr6kDwlhiSSGkl52C+IBqoUlE6kdV0afPr2WuUA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-alpha.10.tgz", + "integrity": "sha512-8yuL2w3G4zdBxyITLHKSFRwpgl8Rp4/bCR2GTznYKr5wYuN9RVSKAp2sGtuWHnynnpspodswu3AI1BVCLKBj1A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-alpha.10.tgz", + "integrity": "sha512-I+/tRdC6CK0GfjZgOaTfpjtehkFW7i1A1ixFOPtrwKA8v3oZ2eUW7dIjDMMC0yTt67j7enHlGTw6o2rZZGnjpA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-alpha.10.tgz", + "integrity": "sha512-FX4buMibcnz0rsQKMBUrZM8cS1/s0pi3TV9HAsKPQY1mKssyeUEE/nlp6DBbYM6kNCEdq2ALvnPtZVwEJpxS3A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-alpha.10.tgz", + "integrity": "sha512-JsPYRsaKCecY8UN2AHuHm6X0WgWfys6ypH8UPYic1n3XUfNPkTSOaUY87Vi04wJmy8pQ1F0wHeESY//Zb37aIA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-json": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-alpha.10.tgz", + "integrity": "sha512-CTSgLG33GgC3POxLBCzlXyBBUz+EFGe62VICH012RIYDXHDmcr4dPmfHyj85LVJxLh7regQ+SGL4NwqQSxTY3A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-ast": "^1.0.0-alpha.10", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "tree-sitter": "=0.20.4", + "tree-sitter-json": "=0.20.2", + "web-tree-sitter": "=0.20.3" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-alpha.10.tgz", + "integrity": "sha512-YtPu2BansaTpW6MrIRJgZpa9V+MLl/DFqC2tHbGSO+u73PdWndONRgqzAAc5pBWR+u1RNgULrCK6sX7uPiFLVg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-alpha.10.tgz", + "integrity": "sha512-zzZdK+xhj+sVh4z3vZrxdBrDitraD1szJPc3sUC0pukuCz3P7R/u+//6+GLE9UVjUakdbQI2cyKyUOIZX51+/g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-alpha.10.tgz", + "integrity": "sha512-i7HaRnU2kDtvDqM5Yv1sbYZghCeRhiVQEyaIIp59Zhc5SwLS3dSoD/kh0TeuKpaY5Lg0ISIM3SLRDcdaYUsGww==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-alpha.10.tgz", + "integrity": "sha512-QbqCTAvthqhZmFZKf9HBYnVt4kV7konYnauylVFIaE5KAzmZkcb30FtkAwmZfnyW3AURMzZcLfOgJRGHOjYSqA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-alpha.10.tgz", + "integrity": "sha512-ajVOqs8lNta7uXkFtU5k1zDJTjwV6Ki3uS+JwBvjuMHsF/i/WIZOmgI4g1Z3yQ1c0QI4dHJskq4WDyp2qW64aw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-alpha.10.tgz", + "integrity": "sha512-ljYmbBFWjIcfN+MJr7JFh6NA/fgyu5gXDI6KUrg/sbWTKdUYP4iNLJPw8VLPBXHnExevjZCt1Ni74mmL4ZfyBg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-1.0.0-alpha.10.tgz", + "integrity": "sha512-vd0H5IYX96AIhOLcU9SJnXDD6OV61i00JDDfJcFnf1K2NCB0D0Otk2V2z9LXqe51s3pZ7d/Dz0biDjYMsMKVww==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-1.0.0-alpha.10.tgz", + "integrity": "sha512-lH0AiPetMLRDy38gcB6TmQnaKv6p1ePimnT4xqcVSHEnc/FsjMbyOE3x6DUENau2eeWFduAhofE9zvliW6iJaQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.10", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-alpha.10.tgz", + "integrity": "sha512-mW/W/Q8w4RCw41Y9vggPbsFg+gj0FxKdecVYzZ8TmgyM9oVN6/KZFegUYKlg1HDRAfjceKehE06aLLS5GXEJCA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-ast": "^1.0.0-alpha.10", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@swagger-api/apidom-error": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "tree-sitter": "=0.20.4", + "tree-sitter-yaml": "=0.5.0", + "web-tree-sitter": "=0.20.3" + } + }, + "node_modules/@swagger-api/apidom-reference": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-alpha.10.tgz", + "integrity": "sha512-aFG6EHC1NOa0IhawTiE8A8TffzmW0PSO5d+lpzvcJ0w7KbrYG6SFQF2L6lZppqGaIGWbmV0Mq3LDU9mgSVEqqQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.10", + "@types/ramda": "~0.30.0", + "axios": "^1.7.4", + "minimatch": "^7.4.3", + "process": "^0.11.10", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + }, + "optionalDependencies": { + "@swagger-api/apidom-error": "^1.0.0-alpha.1", + "@swagger-api/apidom-json-pointer": "^1.0.0-alpha.1", + "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-alpha.1", + "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.1", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.1", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.1", + "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-openapi-json-2": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-workflows-json-1": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-workflows-yaml-1": "^1.0.0-alpha.1", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.1" + } + }, + "node_modules/@swagger-api/apidom-reference/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@swagger-api/apidom-reference/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", + "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.17.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz", + "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "license": "MIT" + }, + "node_modules/@types/ramda": { + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", + "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", + "license": "MIT", + "dependencies": { + "types-ramda": "^0.30.1" + } + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/swagger-jsdoc": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/swagger-jsdoc/-/swagger-jsdoc-6.0.4.tgz", + "integrity": "sha512-W+Xw5epcOZrF/AooUM/PccNMSAFOKWZA5dasNyMujTwsBkU74njSJBpvCCJhHAJ95XRMzQrrW844Btu0uoetwQ==", + "license": "MIT" + }, + "node_modules/@types/swagger-ui-react": { + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.18.3.tgz", + "integrity": "sha512-Mo/R7IjDVwtiFPs84pWvh5pI9iyNGBjmfielxqbOh2Jv+8WVSDVe8Nu25kb5BOuV2xmGS3o33jr6nwDJMBcX+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" + }, + "node_modules/@types/user-agents": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/user-agents/-/user-agents-1.0.4.tgz", + "integrity": "sha512-AjeFc4oX5WPPflgKfRWWJfkEk7Wu82fnj1rROPsiqFt6yElpdGFg8Srtm/4PU4rA9UiDUZlruGPgcwTMQlwq4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "license": "ISC" + }, + "node_modules/@vercel/analytics": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.4.0.tgz", + "integrity": "sha512-eUwWW7l8nPJb0nJmjZuYp9o7YZ9XPj67lU9mEogaPXiFxq/SFB5DMnvQVk4aKcL8kFgotiYdDZWxdiNcWo7cgg==", + "license": "MPL-2.0", + "peerDependencies": { + "@remix-run/react": "^2", + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@remix-run/react": { + "optional": true + }, + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apg-lite": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/apg-lite/-/apg-lite-1.0.4.tgz", + "integrity": "sha512-B32zCN3IdHIc99Vy7V9BaYTUzLeRA8YXYY1aQD1/5I2aqIrO0coi4t6hJPqMisidlBxhyME8UexkHt31SlR6Og==", + "license": "BSD-2-Clause" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.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, + "license": "MIT", + "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, + "license": "MIT", + "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.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/autolinker": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", + "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", + "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bezier-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-4.1.1.tgz", + "integrity": "sha512-oVOS6SSFFFlfnZdzC+lsfvhs/RRcbxJ47U04M4s5QIBaJmr3YWmTIL3qmrOK9uW+nUUcl9Jccmo/xpTrG+bBoQ==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/Pomax/bezierjs/blob/master/FUNDING.md" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "optional": 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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "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/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC", + "optional": true + }, + "node_modules/chromium-bidi": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.10.1.tgz", + "integrity": "sha512-dpzXI07h3EsiSm7P6JCCRJPnu2m42hWCuz72ToU9Qg3lk/h6chNNt7IEhiLTdwcpmQwXr6jG6ZIMWJdisb5IzA==", + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/cleye": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/cleye/-/cleye-1.3.2.tgz", + "integrity": "sha512-MngIC2izcCz07iRKr3Pe8Z6ZBv4zbKFl/YnQEN/aMHis6PpH+MxI2e6n0bMUAmSVlMoAyQkdBCSTbfDmtcSovQ==", + "license": "MIT", + "dependencies": { + "terminal-columns": "^1.4.1", + "type-flag": "^3.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/cleye?sponsor=1" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-response/node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/core-js-pure": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz", + "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css.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==", + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": 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==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT", + "optional": true + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1393284", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1393284.tgz", + "integrity": "sha512-LSoYipzCbc6QYAsfmSVauUXKmeNnj3pOitEok4dvHEqD7Eob81KBI9spSId+hP6xuKT4vQmR1PlBQolOyYuOIA==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dompurify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", + "license": "(MPL-2.0 OR Apache-2.0)" + }, + "node_modules/drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron": { + "version": "33.2.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-33.2.1.tgz", + "integrity": "sha512-SG/nmSsK9Qg1p6wAW+ZfqU+AV8cmXMTIklUL18NnOKfZLlum4ZsDoVdmmmlL39ZmeCaq27dr7CgslRPahfoVJg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^20.9.0", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.62", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.62.tgz", + "integrity": "sha512-t8c+zLmJHa9dJy96yBZRXGQYoiCEnHYgFwn1asvSPZSUdVxnB62A4RASd7k41ytG3ErFBA0TpHlKg9D9SQBmLg==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/es-abstract": { + "version": "1.23.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", + "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.3", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "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/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "license": "MIT", + "optional": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.1.4.tgz", + "integrity": "sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "14.1.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-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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "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": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "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, + "license": "Apache-2.0", + "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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", + "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.1.0", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0-canary-7118f5dd7-20230705", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", + "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.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, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "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/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "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/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.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==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-patch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT", + "optional": true + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/ghost-cursor-playwright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ghost-cursor-playwright/-/ghost-cursor-playwright-2.1.0.tgz", + "integrity": "sha512-+MeiVSwrOYJY/jpDqxdEd6dXmLvngnI1maAkEhiERvtUrI2ErfnDyPdjxrkFlLPB2/BV7q74WdvBD2mTU5UNcA==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.7", + "bezier-js": "^4.1.1", + "playwright-core": "^1.19.2", + "trusted-types": "^2.0.0" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT", + "optional": true + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-agent/node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "license": "MIT", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-agent/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "license": "(MIT OR CC0-1.0)", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "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.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz", + "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/hastscript/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/hastscript/node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hastscript/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hastscript/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/highlightjs-vue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", + "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", + "license": "CC0-1.0" + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "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==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC", + "optional": true + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.6.3" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "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.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-file-download": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz", + "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC", + "optional": true + }, + "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, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lowlight": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "license": "MIT", + "dependencies": { + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "license": "MIT", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.2.tgz", + "integrity": "sha512-xKxhkB62vwHUuuxHe9Xqty3UaAsizV2YKq5OV344u3hFBbf8zIYrhYOWhAQb94MtMPkjTOzzjJ/hid9/dR5vFA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minim": { + "version": "0.23.8", + "resolved": "https://registry.npmjs.org/minim/-/minim-0.23.8.tgz", + "integrity": "sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==", + "license": "MIT", + "dependencies": { + "lodash": "^4.15.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT", + "optional": true + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "license": "MIT", + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "license": "MIT", + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/next": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/next/-/next-14.1.4.tgz", + "integrity": "sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==", + "license": "MIT", + "dependencies": { + "@next/env": "14.1.4", + "@swc/helpers": "0.5.2", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.1.4", + "@next/swc-darwin-x64": "14.1.4", + "@next/swc-linux-arm64-gnu": "14.1.4", + "@next/swc-linux-arm64-musl": "14.1.4", + "@next/swc-linux-x64-gnu": "14.1.4", + "@next/swc-linux-x64-musl": "14.1.4", + "@next/swc-win32-arm64-msvc": "14.1.4", + "@next/swc-win32-ia32-msvc": "14.1.4", + "@next/swc-win32-x64-msvc": "14.1.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-swagger-doc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/next-swagger-doc/-/next-swagger-doc-0.4.1.tgz", + "integrity": "sha512-pFmFUOwNlJh7mr9P6b2obAHa9JAwgPK3oNTIzE9g/Gs+h2OG1T3C5SanzrqGA3dDncagyf/DbO5U+ZzNxKadWg==", + "license": "MIT", + "dependencies": { + "@types/swagger-jsdoc": "6.0.4", + "cleye": "1.3.2", + "isarray": "2.0.5", + "swagger-jsdoc": "6.2.8" + }, + "bin": { + "next-swagger-doc-cli": "dist/cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "next": ">=9" + } + }, + "node_modules/next/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" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-abi": { + "version": "3.71.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", + "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "license": "MIT", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "license": "MIT" + }, + "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" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-commonjs": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz", + "integrity": "sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A==", + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "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.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/openapi-path-templating": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/openapi-path-templating/-/openapi-path-templating-1.6.0.tgz", + "integrity": "sha512-1atBNwOUrZXthTvlvvX8k8ovFEF3iA8mDidYMkdOtvVdndBhTrspbwGXNOzEUaJhm9iUl4Tf5uQaeTLAJvwPig==", + "license": "Apache-2.0", + "dependencies": { + "apg-lite": "^1.0.3" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/openapi-server-url-templating": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/openapi-server-url-templating/-/openapi-server-url-templating-1.1.0.tgz", + "integrity": "sha512-dtyTFKx2xVcO0W8JKaluXIHC9l/MLjHeflBaWjiWNMCHp/TBs9dEjQDbj/VFlHR4omFOKjjmqm1pW1aCAhmPBg==", + "license": "Apache-2.0", + "dependencies": { + "apg-lite": "^1.0.3" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT", + "peer": true + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "license": "MIT", + "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-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pino": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", + "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.6.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "license": "MIT", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.3.0.tgz", + "integrity": "sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-pretty/node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/playwright-core": { + "version": "1.49.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.49.1.tgz", + "integrity": "sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz", + "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ramda": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", + "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/ramda-adjunct": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", + "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda-adjunct" + }, + "peerDependencies": { + "ramda": ">= 0.30.0" + } + }, + "node_modules/randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "license": "MIT", + "dependencies": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-copy-to-clipboard": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", + "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", + "license": "MIT", + "dependencies": { + "copy-to-clipboard": "^3.3.1", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^15.3.0 || 16 || 17 || 18" + } + }, + "node_modules/react-debounce-input": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/react-debounce-input/-/react-debounce-input-3.3.0.tgz", + "integrity": "sha512-VEqkvs8JvY/IIZvh71Z0TC+mdbxERvYF33RcebnodlsUZ8RSgyKe2VWaHXv4+/8aoOgXLxWrdsYs2hDhcwbUgA==", + "license": "MIT", + "dependencies": { + "lodash.debounce": "^4", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^15.3.0 || 16 || 17 || 18" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-immutable-proptypes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz", + "integrity": "sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.2" + }, + "peerDependencies": { + "immutable": ">=3.6.2" + } + }, + "node_modules/react-immutable-pure-component": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz", + "integrity": "sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A==", + "license": "MIT", + "peerDependencies": { + "immutable": ">= 2 || >= 4.0.0-rc", + "react": ">= 16.6", + "react-dom": ">= 16.6" + } + }, + "node_modules/react-inspector": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz", + "integrity": "sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0 || ^18.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/react-markdown": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", + "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-syntax-highlighter": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz", + "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.4.1", + "highlightjs-vue": "^1.0.0", + "lowlight": "^1.17.0", + "prismjs": "^1.27.0", + "refractor": "^3.6.0" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/rebrowser-playwright-core": { + "version": "1.49.1", + "resolved": "https://registry.npmjs.org/rebrowser-playwright-core/-/rebrowser-playwright-core-1.49.1.tgz", + "integrity": "sha512-7M+TNWBRnJ9b84bAVIopn2a/R/V0D8cPt+6qNTJFiBDjwD12hzp7e5GmLSM+LxEL/GdqnTlySjes/itzmEcBQA==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz", + "integrity": "sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==", + "license": "BSD-3-Clause", + "peerDependencies": { + "immutable": "^3.8.1 || ^4.0.0-rc.1" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/refractor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", + "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", + "license": "MIT", + "dependencies": { + "hastscript": "^6.0.0", + "parse-entities": "^2.0.0", + "prismjs": "~1.27.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "license": "MIT", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remarkable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", + "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.10", + "autolinker": "^3.11.0" + }, + "bin": { + "remarkable": "bin/remarkable.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/remarkable/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "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==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/roarr/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause", + "optional": true + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "license": "MIT", + "optional": true + }, + "node_modules/serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/short-unique-id": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/short-unique-id/-/short-unique-id-5.2.0.tgz", + "integrity": "sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==", + "license": "Apache-2.0", + "bin": { + "short-unique-id": "bin/short-unique-id", + "suid": "bin/short-unique-id" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sonic-boom": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", + "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "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_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "license": "MIT", + "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/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swagger-client": { + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.31.0.tgz", + "integrity": "sha512-hVYift5XB8nOgNJVl6cbNtVTVPT2Fdx2wCOcIvuAFcyq0Mwe6+70ezoZ5WfiaIAzzwWfq72jyaLeg8TViGNSmw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.22.15", + "@scarf/scarf": "=1.4.0", + "@swagger-api/apidom-core": ">=1.0.0-alpha.9 <1.0.0-beta.0", + "@swagger-api/apidom-error": ">=1.0.0-alpha.9 <1.0.0-beta.0", + "@swagger-api/apidom-json-pointer": ">=1.0.0-alpha.9 <1.0.0-beta.0", + "@swagger-api/apidom-ns-openapi-3-1": ">=1.0.0-alpha.9 <1.0.0-beta.0", + "@swagger-api/apidom-reference": ">=1.0.0-alpha.9 <1.0.0-beta.0", + "cookie": "~0.7.2", + "deepmerge": "~4.3.0", + "fast-json-patch": "^3.0.0-1", + "js-yaml": "^4.1.0", + "neotraverse": "=0.6.18", + "node-abort-controller": "^3.1.1", + "node-fetch-commonjs": "^3.3.2", + "openapi-path-templating": "^1.5.1", + "openapi-server-url-templating": "^1.0.0", + "ramda": "^0.30.1", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/swagger-client/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/swagger-jsdoc": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", + "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==", + "license": "MIT", + "dependencies": { + "commander": "6.2.0", + "doctrine": "3.0.0", + "glob": "7.1.6", + "lodash.mergewith": "^4.6.2", + "swagger-parser": "^10.0.3", + "yaml": "2.0.0-1" + }, + "bin": { + "swagger-jsdoc": "bin/swagger-jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/swagger-jsdoc/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "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/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "license": "MIT", + "dependencies": { + "@apidevtools/swagger-parser": "10.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/swagger-ui-react": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.18.2.tgz", + "integrity": "sha512-vpW7AmkRYdz578iq7C5WrPsg6reBgRzj5xL/fIYR6KTfvY3lvBchpzegFaqg09LWDoL3U2MZvIgOS/1Q9kSJ9g==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.24.7", + "@braintree/sanitize-url": "=7.0.4", + "@scarf/scarf": "=1.4.0", + "base64-js": "^1.5.1", + "classnames": "^2.5.1", + "css.escape": "1.5.1", + "deep-extend": "0.6.0", + "dompurify": "=3.1.6", + "ieee754": "^1.2.1", + "immutable": "^3.x.x", + "js-file-download": "^0.4.12", + "js-yaml": "=4.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.8.1", + "randexp": "^0.5.3", + "randombytes": "^2.1.0", + "react-copy-to-clipboard": "5.1.0", + "react-debounce-input": "=3.3.0", + "react-immutable-proptypes": "2.2.0", + "react-immutable-pure-component": "^2.2.0", + "react-inspector": "^6.0.1", + "react-redux": "^9.1.2", + "react-syntax-highlighter": "^15.5.0", + "redux": "^5.0.1", + "redux-immutable": "^4.0.0", + "remarkable": "^2.0.1", + "reselect": "^5.1.1", + "serialize-error": "^8.1.0", + "sha.js": "^2.4.11", + "swagger-client": "^3.31.0", + "url-parse": "^1.5.10", + "xml": "=1.0.1", + "xml-but-prettier": "^1.0.1", + "zenscroll": "^4.0.2" + }, + "peerDependencies": { + "react": ">=16.8.0 <19", + "react-dom": ">=16.8.0 <19" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", + "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "license": "MIT", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/terminal-columns": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/terminal-columns/-/terminal-columns-1.4.1.tgz", + "integrity": "sha512-IKVL/itiMy947XWVv4IHV7a0KQXvKjj4ptbi7Ew9MPMcOLzkiQeyx3Gyvh62hKrfJ0RZc4M1nbhzjNM39Kyujw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/terminal-columns?sponsor=1" + } + }, + "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, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", + "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "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": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tree-sitter": { + "version": "0.20.4", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.4.tgz", + "integrity": "sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "nan": "^2.17.0", + "prebuild-install": "^7.1.1" + } + }, + "node_modules/tree-sitter-json": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.20.2.tgz", + "integrity": "sha512-eUxrowp4F1QEGk/i7Sa+Xl8Crlfp7J0AXxX1QdJEQKQYMWhgMbCIgyQvpO3Q0P9oyTrNQxRLlRipDS44a8EtRw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "nan": "^2.18.0" + } + }, + "node_modules/tree-sitter-yaml": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/tree-sitter-yaml/-/tree-sitter-yaml-0.5.0.tgz", + "integrity": "sha512-POJ4ZNXXSWIG/W4Rjuyg36MkUD4d769YRUGKRqN+sVaj/VCo6Dh6Pkssn1Rtewd5kybx+jT1BWMyWN0CijXnMA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "nan": "^2.14.0" + } + }, + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trusted-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trusted-types/-/trusted-types-2.0.0.tgz", + "integrity": "sha512-Eam+AUp6lg04YjmYkuLNhEJX+6ByocrKTpY/TtfRK/gV6OmxeN0OwkIasor28SUJ606snArpPLGtPMGbqdaaUA==", + "license": "W3C-20150513" + }, + "node_modules/ts-api-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/ts-mixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", + "license": "MIT" + }, + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/type-flag/-/type-flag-3.0.0.tgz", + "integrity": "sha512-3YaYwMseXCAhBB14RXW5cRQfJQlEknS6i4C8fCfeUdS3ihG9EdccdR9kt3vP73ZdeTGmPb4bZtkDn5XMIn1DLA==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/type-flag?sponsor=1" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/types-ramda": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", + "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "license": "MIT", + "dependencies": { + "ts-toolbelt": "^9.6.0" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "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, + "license": "MIT", + "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/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.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==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unraw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unraw/-/unraw-3.0.0.tgz", + "integrity": "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==", + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.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, + "license": "BSD-2-Clause", + "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==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "license": "MIT" + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/user-agents": { + "version": "1.1.362", + "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.1.362.tgz", + "integrity": "sha512-mwDzPkR3IZswVYotnQJU4t/H56K0QBWGlkr3eDPHPzMYiUkxZCFICU1n4H3OHUN2QHVHsdlRpDMbsi39hhvvMg==", + "license": "BSD-2-Clause", + "dependencies": { + "lodash.clonedeep": "^4.5.0" + } + }, + "node_modules/utf-8-validate": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.5.tgz", + "integrity": "sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web-tree-sitter": { + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz", + "integrity": "sha512-zKGJW9r23y3BcJusbgvnOH2OYAW40MXAOi9bi3Gcc7T4Gms9WWgXF8m6adsJWpGJEhgOzCrfiz1IzKowJWrtYw==", + "license": "MIT", + "optional": true + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "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.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "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.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-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==", + "license": "ISC" + }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "license": "MIT" + }, + "node_modules/xml-but-prettier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz", + "integrity": "sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==", + "license": "MIT", + "dependencies": { + "repeat-string": "^1.5.2" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaml": { + "version": "2.0.0-1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", + "integrity": "sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-5.0.0.tgz", + "integrity": "sha512-+l37+9TyGEsyxGLaTg6QgYy5KnOp74ZZl4dPFLQpBWSkO99uBC5jnS0pOGwXFViPbiaEtWbParH2KrgWWF2duQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "license": "MIT", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/z-schema/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/zenscroll": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zenscroll/-/zenscroll-4.0.2.tgz", + "integrity": "sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==", + "license": "Unlicense" + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json index a246917..deeb8ec 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,15 @@ "lint": "next lint" }, "dependencies": { + "@2captcha/captcha-solver": "^1.3.0", "@vercel/analytics": "^1.2.2", - "axios": "^1.6.8", - "axios-cookiejar-support": "^5.0.0", + "axios": "^1.7.8", + "bufferutil": "^4.0.8", + "chromium-bidi": "^0.10.1", + "cookie": "^1.0.2", + "electron": "^33.2.1", + "ghost-cursor-playwright": "^2.1.0", + "js-cookie": "^3.0.5", "next": "14.1.4", "next-swagger-doc": "^0.4.0", "pino": "^8.19.0", @@ -25,12 +31,16 @@ "react": "^18", "react-dom": "^18", "react-markdown": "^9.0.1", - "swagger-ui-react": "^5.12.3", + "rebrowser-playwright-core": "^1.49.1", + "swagger-ui-react": "^5.18.2", "tough-cookie": "^4.1.4", - "user-agents": "^1.1.156" + "user-agents": "^1.1.156", + "utf-8-validate": "^6.0.5", + "yn": "^5.0.0" }, "devDependencies": { "@tailwindcss/typography": "^0.5.12", + "@types/js-cookie": "^3.0.6", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", diff --git a/src/app/api/clip/route.ts b/src/app/api/clip/route.ts index 6d129f5..e84562e 100644 --- a/src/app/api/clip/route.ts +++ b/src/app/api/clip/route.ts @@ -19,7 +19,7 @@ export async function GET(req: NextRequest) { }); } - const audioInfo = await (await sunoApi).getClip(clipId); + const audioInfo = await (await sunoApi()).getClip(clipId); return new NextResponse(JSON.stringify(audioInfo), { status: 200, diff --git a/src/app/api/concat/route.ts b/src/app/api/concat/route.ts index 6bf6e4b..e1dfd77 100644 --- a/src/app/api/concat/route.ts +++ b/src/app/api/concat/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers' import { sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -18,7 +19,7 @@ export async function POST(req: NextRequest) { } }); } - const audioInfo = await (await sunoApi).concatenate(clip_id); + const audioInfo = await (await sunoApi((await cookies()).toString())).concatenate(clip_id); return new NextResponse(JSON.stringify(audioInfo), { status: 200, headers: { diff --git a/src/app/api/custom_generate/route.ts b/src/app/api/custom_generate/route.ts index 02d964a..777fead 100644 --- a/src/app/api/custom_generate/route.ts +++ b/src/app/api/custom_generate/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers'; import { DEFAULT_MODEL, sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -10,7 +11,7 @@ export async function POST(req: NextRequest) { try { const body = await req.json(); const { prompt, tags, title, make_instrumental, model, wait_audio, negative_tags } = body; - const audioInfo = await (await sunoApi).custom_generate( + const audioInfo = await (await sunoApi((await cookies()).toString())).custom_generate( prompt, tags, title, Boolean(make_instrumental), model || DEFAULT_MODEL, @@ -25,18 +26,9 @@ export async function POST(req: NextRequest) { } }); } catch (error: any) { - console.error('Error generating custom audio:', error.response.data); - if (error.response.status === 402) { - return new NextResponse(JSON.stringify({ error: error.response.data.detail }), { - status: 402, - headers: { - 'Content-Type': 'application/json', - ...corsHeaders - } - }); - } - return new NextResponse(JSON.stringify({ error: 'Internal server error' }), { - status: 500, + console.error('Error generating custom audio:', error); + return new NextResponse(JSON.stringify({ error: error.response?.data?.detail || error.toString() }), { + status: error.response?.status || 500, headers: { 'Content-Type': 'application/json', ...corsHeaders diff --git a/src/app/api/extend_audio/route.ts b/src/app/api/extend_audio/route.ts index ece5fa1..22f07e5 100644 --- a/src/app/api/extend_audio/route.ts +++ b/src/app/api/extend_audio/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers' import { DEFAULT_MODEL, sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -8,7 +9,7 @@ export async function POST(req: NextRequest) { if (req.method === 'POST') { try { const body = await req.json(); - const { audio_id, prompt, continue_at, tags, title, model } = body; + const { audio_id, prompt, continue_at, tags, negative_tags, title, model, wait_audio } = body; if (!audio_id) { return new NextResponse(JSON.stringify({ error: 'Audio ID is required' }), { @@ -20,8 +21,8 @@ export async function POST(req: NextRequest) { }); } - const audioInfo = await (await sunoApi) - .extendAudio(audio_id, prompt, continue_at, tags, title, model || DEFAULT_MODEL); + const audioInfo = await (await sunoApi((await cookies()).toString())) + .extendAudio(audio_id, prompt, continue_at, tags || '', negative_tags || '', title, model || DEFAULT_MODEL, wait_audio || false); return new NextResponse(JSON.stringify(audioInfo), { status: 200, diff --git a/src/app/api/generate/route.ts b/src/app/api/generate/route.ts index b93527b..39f18b9 100644 --- a/src/app/api/generate/route.ts +++ b/src/app/api/generate/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers' import { DEFAULT_MODEL, sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -10,7 +11,7 @@ export async function POST(req: NextRequest) { const body = await req.json(); const { prompt, make_instrumental, model, wait_audio } = body; - const audioInfo = await (await sunoApi).generate( + const audioInfo = await (await sunoApi((await cookies()).toString())).generate( prompt, Boolean(make_instrumental), model || DEFAULT_MODEL, diff --git a/src/app/api/generate_lyrics/route.ts b/src/app/api/generate_lyrics/route.ts index 562c9db..2e783d1 100644 --- a/src/app/api/generate_lyrics/route.ts +++ b/src/app/api/generate_lyrics/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers' import { sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -10,7 +11,7 @@ export async function POST(req: NextRequest) { const body = await req.json(); const { prompt } = body; - const lyrics = await (await sunoApi).generateLyrics(prompt); + const lyrics = await (await sunoApi((await cookies()).toString())).generateLyrics(prompt); return new NextResponse(JSON.stringify(lyrics), { status: 200, diff --git a/src/app/api/generate_stems/route.ts b/src/app/api/generate_stems/route.ts index 7070d90..064093c 100644 --- a/src/app/api/generate_stems/route.ts +++ b/src/app/api/generate_stems/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers'; import { DEFAULT_MODEL, sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -20,7 +21,7 @@ export async function POST(req: NextRequest) { }); } - const audioInfo = await (await sunoApi) + const audioInfo = await (await sunoApi((await cookies()).toString())) .generateStems(audio_id); return new NextResponse(JSON.stringify(audioInfo), { diff --git a/src/app/api/get/route.ts b/src/app/api/get/route.ts index d8e568b..d0bf805 100644 --- a/src/app/api/get/route.ts +++ b/src/app/api/get/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from 'next/server'; +import { cookies } from 'next/headers'; import { sunoApi } from '@/lib/SunoApi'; import { corsHeaders } from '@/lib/utils'; @@ -10,13 +11,14 @@ export async function GET(req: NextRequest) { const url = new URL(req.url); const songIds = url.searchParams.get('ids'); const page = url.searchParams.get('page'); + const cookie = (await cookies()).toString(); let audioInfo = []; if (songIds && songIds.length > 0) { const idsArray = songIds.split(','); - audioInfo = await (await sunoApi).get(idsArray, page); + audioInfo = await (await sunoApi(cookie)).get(idsArray, page); } else { - audioInfo = await (await sunoApi).get(undefined, page); + audioInfo = await (await sunoApi(cookie)).get(undefined, page); } return new NextResponse(JSON.stringify(audioInfo), { diff --git a/src/app/api/get_aligned_lyrics/route.ts b/src/app/api/get_aligned_lyrics/route.ts index 11681e4..701508a 100644 --- a/src/app/api/get_aligned_lyrics/route.ts +++ b/src/app/api/get_aligned_lyrics/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers' import { sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -20,7 +21,7 @@ export async function GET(req: NextRequest) { }); } - const lyricAlignment = await (await sunoApi).getLyricAlignment(song_id); + const lyricAlignment = await (await sunoApi((await cookies()).toString())).getLyricAlignment(song_id); return new NextResponse(JSON.stringify(lyricAlignment), { diff --git a/src/app/api/get_limit/route.ts b/src/app/api/get_limit/route.ts index 514c920..5705236 100644 --- a/src/app/api/get_limit/route.ts +++ b/src/app/api/get_limit/route.ts @@ -1,4 +1,5 @@ import { NextResponse, NextRequest } from "next/server"; +import { cookies } from 'next/headers' import { sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; @@ -8,7 +9,7 @@ export async function GET(req: NextRequest) { if (req.method === 'GET') { try { - const limit = await (await sunoApi).get_credits(); + const limit = await (await sunoApi((await cookies()).toString())).get_credits(); return new NextResponse(JSON.stringify(limit), { diff --git a/src/app/components/Swagger.tsx b/src/app/components/Swagger.tsx index 3a782c3..b44e5f5 100644 --- a/src/app/components/Swagger.tsx +++ b/src/app/components/Swagger.tsx @@ -9,7 +9,12 @@ type Props = { const SwaggerUI = dynamic(() => import('swagger-ui-react'), { ssr: false }); function Swagger({ spec }: Props) { - return ; + return { + // Remove cookies before sending requests + req.credentials = 'omit'; + console.log(req); + return req; + }} />; } export default Swagger; \ No newline at end of file diff --git a/src/app/docs/swagger-suno-api.json b/src/app/docs/swagger-suno-api.json index 5aa47e8..3c5ff33 100644 --- a/src/app/docs/swagger-suno-api.json +++ b/src/app/docs/swagger-suno-api.json @@ -231,6 +231,11 @@ "description": "Music genre", "example": "" }, + "negative_tags": { + "type": "string", + "description": "Negative Music genre", + "example":"" + }, "model": { "type": "string", "description": "Model name ,default is chirp-v3-5", diff --git a/src/app/v1/chat/completions/route.ts b/src/app/v1/chat/completions/route.ts index 6d8871b..c35829a 100644 --- a/src/app/v1/chat/completions/route.ts +++ b/src/app/v1/chat/completions/route.ts @@ -32,7 +32,7 @@ export async function POST(req: NextRequest) { } - const audioInfo = await (await sunoApi).generate(userMessage.content, true, DEFAULT_MODEL, true); + const audioInfo = await (await sunoApi()).generate(userMessage.content, true, DEFAULT_MODEL, true); const audio = audioInfo[0] const data = `## Song Title: ${audio.title}\n![Song Cover](${audio.image_url})\n### Lyrics:\n${audio.lyric}\n### Listen to the song: ${audio.audio_url}` diff --git a/src/lib/SunoApi.ts b/src/lib/SunoApi.ts index 7917ef0..a174008 100644 --- a/src/lib/SunoApi.ts +++ b/src/lib/SunoApi.ts @@ -1,9 +1,18 @@ import axios, { AxiosInstance } from 'axios'; import UserAgent from 'user-agents'; import pino from 'pino'; -import { wrapper } from 'axios-cookiejar-support'; -import { CookieJar } from 'tough-cookie'; -import { sleep } from '@/lib/utils'; +import yn from 'yn'; +import { sleep, isPage } from '@/lib/utils'; +import * as cookie from 'cookie'; +import { randomUUID } from 'node:crypto'; +import { Solver } from '@2captcha/captcha-solver'; +import { BrowserContext, Page, Locator, chromium, firefox } from 'rebrowser-playwright-core'; +import { createCursor, Cursor } from 'ghost-cursor-playwright'; + +// sunoApi instance caching +const globalForSunoApi = global as unknown as { sunoApiCache?: Map }; +const cache = globalForSunoApi.sunoApiCache || new Map(); +globalForSunoApi.sunoApiCache = cache; const logger = pino(); export const DEFAULT_MODEL = 'chirp-v3-5'; @@ -30,37 +39,58 @@ export interface AudioInfo { class SunoApi { private static BASE_URL: string = 'https://studio-api.prod.suno.com'; private static CLERK_BASE_URL: string = 'https://clerk.suno.com'; - private static JSDELIVR_BASE_URL: string = 'https://data.jsdelivr.com'; + private static CLERK_VERSION = '5.15.0'; private readonly client: AxiosInstance; - private clerkVersion?: string; private sid?: string; private currentToken?: string; + private deviceId?: string; + private userAgent?: string; + private cookies: Record; + private solver = new Solver(process.env.TWOCAPTCHA_KEY + ''); + private ghostCursorEnabled = yn(process.env.BROWSER_GHOST_CURSOR, { default: false }); + private cursor?: Cursor; - constructor(cookie: string) { - const cookieJar = new CookieJar(); - const randomUserAgent = new UserAgent(/Chrome/).random().toString(); - this.client = wrapper( - axios.create({ - jar: cookieJar, - withCredentials: true, - headers: { - 'User-Agent': randomUserAgent, - Cookie: cookie - } - }) - ); - this.client.interceptors.request.use((config) => { - if (this.currentToken) { - // Use the current token status - config.headers['Authorization'] = `Bearer ${this.currentToken}`; + constructor(cookies: string) { + this.userAgent = new UserAgent(/Macintosh/).random().toString(); // Usually Mac systems get less amount of CAPTCHAs + this.cookies = cookie.parse(cookies); + this.deviceId = this.cookies.ajs_anonymous_id || randomUUID(); + this.client = axios.create({ + withCredentials: true, + headers: { + 'Affiliate-Id': 'undefined', + 'Device-Id': `"${this.deviceId}"`, + 'x-suno-client': 'Android prerelease-4nt180t 1.0.42', + 'X-Requested-With': 'com.suno.android', + 'sec-ch-ua': '"Chromium";v="130", "Android WebView";v="130", "Not?A_Brand";v="99"', + 'sec-ch-ua-mobile': '?1', + 'sec-ch-ua-platform': '"Android"', + 'User-Agent': this.userAgent } + }); + this.client.interceptors.request.use(config => { + if (this.currentToken && !config.headers.Authorization) + config.headers.Authorization = `Bearer ${this.currentToken}`; + const cookiesArray = Object.entries(this.cookies).map(([key, value]) => + cookie.serialize(key, value as string) + ); + config.headers.Cookie = cookiesArray.join('; '); return config; }); + this.client.interceptors.response.use(resp => { + const setCookieHeader = resp.headers['set-cookie']; + if (Array.isArray(setCookieHeader)) { + const newCookies = cookie.parse(setCookieHeader.join('; ')); + for (const [key, value] of Object.entries(newCookies)) { + this.cookies[key] = value; + } + } + return resp; + }) } public async init(): Promise { - await this.getClerkLatestVersion(); + //await this.getClerkLatestVersion(); await this.getAuthToken(); await this.keepAlive(); return this; @@ -68,7 +98,8 @@ class SunoApi { /** * Get the clerk package latest version id. - */ + * This method is commented because we are now using a hard-coded Clerk version, hence this method is not needed. + private async getClerkLatestVersion() { // URL to get clerk version ID const getClerkVersionUrl = `${SunoApi.JSDELIVR_BASE_URL}/v1/package/npm/@clerk/clerk-js`; @@ -80,26 +111,28 @@ class SunoApi { ); } // Save clerk version ID for auth - // this.clerkVersion = versionListResponse?.data?.['tags']['latest']; - // Use a Clerk version released before fraud detection was implemented - this.clerkVersion = "5.34.0"; + SunoApi.clerkVersion = versionListResponse?.data?.['tags']['latest']; } + */ /** * Get the session ID and save it for later use. */ private async getAuthToken() { + logger.info('Getting the session ID'); // URL to get session ID - const getSessionUrl = `${SunoApi.CLERK_BASE_URL}/v1/client?_clerk_js_version=${this.clerkVersion}`; + const getSessionUrl = `${SunoApi.CLERK_BASE_URL}/v1/client?_is_native=true&_clerk_js_version=${SunoApi.CLERK_VERSION}`; // Get session ID - const sessionResponse = await this.client.get(getSessionUrl); - if (!sessionResponse?.data?.response?.['last_active_session_id']) { + const sessionResponse = await this.client.get(getSessionUrl, { + headers: { Authorization: this.cookies.__client } + }); + if (!sessionResponse?.data?.response?.last_active_session_id) { throw new Error( 'Failed to get session id, you may need to update the SUNO_COOKIE' ); } // Save session ID for later use - this.sid = sessionResponse.data.response['last_active_session_id']; + this.sid = sessionResponse.data.response.last_active_session_id; } /** @@ -111,16 +144,238 @@ class SunoApi { throw new Error('Session ID is not set. Cannot renew token.'); } // URL to renew session token - const renewUrl = `${SunoApi.CLERK_BASE_URL}/v1/client/sessions/${this.sid}/tokens?_clerk_js_version==${this.clerkVersion}`; + const renewUrl = `${SunoApi.CLERK_BASE_URL}/v1/client/sessions/${this.sid}/tokens?_is_native=true&_clerk_js_version=${SunoApi.CLERK_VERSION}`; // Renew session token - const renewResponse = await this.client.post(renewUrl); logger.info('KeepAlive...\n'); + const renewResponse = await this.client.post(renewUrl, {}, { + headers: { Authorization: this.cookies.__client } + }); if (isWait) { await sleep(1, 2); } - const newToken = renewResponse.data['jwt']; + const newToken = renewResponse.data.jwt; // Update Authorization field in request header with the new JWT token this.currentToken = newToken; + logger.info(this.currentToken); + } + + /** + * Get the session token (not to be confused with session ID) and save it for later use. + */ + private async getSessionToken() { + const tokenResponse = await this.client.post( + `${SunoApi.BASE_URL}/api/user/create_session_id/`, + { + session_properties: JSON.stringify({ deviceId: this.deviceId }), + session_type: 1 + } + ); + return tokenResponse.data.session_id; + } + + private async captchaRequired(): Promise { + const resp = await this.client.post(`${SunoApi.BASE_URL}/api/c/check`, { + ctype: 'generation' + }); + logger.info(resp.data); + // await sleep(10); + return resp.data.required; + } + + /** + * Clicks on a locator or XY vector. This method is made because of the difference between ghost-cursor-playwright and Playwright methods + */ + private async click(target: Locator|Page, position?: { x: number, y: number }): Promise { + if (this.ghostCursorEnabled) { + let pos: any = isPage(target) ? { x: 0, y: 0 } : await target.boundingBox(); + if (position) + pos = { + ...pos, + x: pos.x + position.x, + y: pos.y + position.y, + width: null, + height: null, + }; + return this.cursor?.actions.click({ + target: pos + }); + } else { + if (isPage(target)) + return target.mouse.click(position?.x ?? 0, position?.y ?? 0); + else + return target.click({ force: true, position }); + } + } + + /** + * Get the BrowserType from the `BROWSER` environment variable. + * @returns {BrowserType} chromium, firefox or webkit. Default is chromium + */ + private getBrowserType() { + const browser = process.env.BROWSER?.toLowerCase(); + switch (browser) { + case 'firefox': + return firefox; + /*case 'webkit': ** doesn't work with rebrowser-patches + case 'safari': + return webkit;*/ + default: + return chromium; + } + } + + /** + * Launches a browser with the necessary cookies + * @returns {BrowserContext} + */ + private async launchBrowser(): Promise { + const browser = await this.getBrowserType().launch({ + args: [ + '--disable-blink-features=AutomationControlled', + '--disable-web-security', + '--no-sandbox', + '--disable-dev-shm-usage', + '--disable-features=site-per-process', + '--disable-features=IsolateOrigins', + '--disable-extensions', + '--disable-infobars' + ], + headless: yn(process.env.BROWSER_HEADLESS, { default: true }) + }); + const context = await browser.newContext({ userAgent: this.userAgent, locale: process.env.BROWSER_LOCALE, viewport: null }); + const cookies = []; + const lax: 'Lax' | 'Strict' | 'None' = 'Lax'; + cookies.push({ + name: '__session', + value: this.currentToken+'', + domain: '.suno.com', + path: '/', + sameSite: lax + }); + for (const key in this.cookies) { + cookies.push({ + name: key, + value: this.cookies[key]+'', + domain: '.suno.com', + path: '/', + sameSite: lax + }) + } + await context.addCookies(cookies); + return context; + } + + /** + * Checks for CAPTCHA verification and solves the CAPTCHA if needed + * @returns {string|null} hCaptcha token. If no verification is required, returns null + */ + public async getCaptcha(): Promise { + if (!await this.captchaRequired()) + return null; + + logger.info('CAPTCHA required. Launching browser...') + const browser = await this.launchBrowser(); + const page = await browser.newPage(); + await page.goto('https://suno.com/create', { referer: 'https://www.google.com/', waitUntil: 'domcontentloaded', timeout: 0 }); + + page.on('request', request => console.log('>>', request.method(), request.url())); + page.on('response', response => console.log('<<', response.status(), response.url())); + + logger.info('Waiting for Suno interface to load'); + await page.locator('.react-aria-GridList').waitFor({ timeout: 60000 }); + + if (this.ghostCursorEnabled) + this.cursor = await createCursor(page); + + logger.info('Triggering the CAPTCHA'); + await this.click(page, { x: 318, y: 13 }); // close all popups + + const textarea = page.locator('.custom-textarea'); + await this.click(textarea); + await textarea.pressSequentially('Lorem ipsum', { delay: 80 }); + + const button = page.locator('button[aria-label="Create"]').locator('div.flex'); + await this.click(button); + + new Promise(async (resolve, reject) => { + const frame = page.frameLocator('iframe[title*="hCaptcha"]'); + const challenge = frame.locator('.challenge-container'); + while (true) { + try { + await page.waitForResponse('https://img**.hcaptcha.com/**', { timeout: 60000 }); // wait for hCaptcha image to load + while (true) { // wait for all requests to finish + try { + await page.waitForResponse('https://img**.hcaptcha.com/**', { timeout: 1000 }); + } catch(e) { + break + } + } + //await sleep(0.1); // sometimes it takes a couple of seconds to display the image itself. unfortunately, the only option is to wait and hope that it loads + const drag = (await challenge.locator('.prompt-text').first().innerText()).toLowerCase().includes('drag'); + if (drag) { + logger.info('Got a dragging hCaptcha. This type of hCaptcha is currently not supported. Skipping...'); + this.click(frame.locator('.button-submit')); + continue; + } + let captcha: any; + for (let j = 0; j < 3; j++) { // try several times because sometimes 2Captcha could send an error + try { + logger.info('Sending the CAPTCHA to 2Captcha'); + captcha = await this.solver.coordinates({ + body: (await challenge.screenshot()).toString('base64'), + lang: process.env.BROWSER_LOCALE + }); + break; + } catch(err: any) { + logger.info(err.message); + if (j != 2) + logger.info('Retrying...'); + else + throw err; + } + } + for (const data of captcha.data) { + logger.info(data); + await this.click(challenge, { x: +data.x, y: +data.y }); + } + /*await*/ this.click(frame.locator('.button-submit')); // await is commented because we need to call waitForResponse at the same time + } catch(e: any) { + if (e.message.includes('viewport') || e.message.includes('timeout')) // when hCaptcha window has been closed due to inactivity, + this.click(button); // click the Create button again to trigger the CAPTCHA + else if (e.message.includes('been closed')) // catch error when closing the browser + resolve(); + else + reject(e); + } + } + }).catch(e => { + //if (!e.message.includes('been closed')) + throw e; + }); + return (new Promise((resolve, reject) => { + page.route('**/api/generate/v2/**', async (route: any) => { + try { + logger.info('hCaptcha token received. Closing browser'); + route.abort(); + browser.browser()?.close(); + const request = route.request(); + this.currentToken = request.headers().authorization.split('Bearer ').pop(); + resolve(request.postDataJSON().token); + } catch(err) { + reject(err); + } + }); + })); + } + + /** + * Imitates Cloudflare Turnstile loading error. Unused right now, left for future + */ + private async getTurnstile() { + return this.client.post( + `https://clerk.suno.com/v1/client?__clerk_api_version=2021-02-05&_clerk_js_version=${SunoApi.CLERK_VERSION}&_method=PATCH`, + { captcha_error: '300030,300030,300030' }, + { headers: { 'content-type': 'application/x-www-form-urlencoded' } }); } /** @@ -225,6 +480,8 @@ class SunoApi { * @param make_instrumental Indicates if the generated song should be instrumental. * @param wait_audio Indicates if the method should wait for the audio file to be fully generated before returning. * @param negative_tags Negative tags that should not be included in the generated audio. + * @param task Optional indication of what to do. Enter 'extend' if extending an audio, otherwise specify null. + * @param continue_clip_id * @returns A promise that resolves to an array of AudioInfo objects representing the generated songs. */ private async generateSongs( @@ -235,14 +492,21 @@ class SunoApi { make_instrumental?: boolean, model?: string, wait_audio: boolean = false, - negative_tags?: string + negative_tags?: string, + task?: string, + continue_clip_id?: string, + continue_at?: number ): Promise { - await this.keepAlive(false); + await this.keepAlive(); const payload: any = { make_instrumental: make_instrumental, mv: model || DEFAULT_MODEL, prompt: '', - generation_type: 'TEXT' + generation_type: 'TEXT', + continue_at: continue_at, + continue_clip_id: continue_clip_id, + task: task, + token: await this.getCaptcha() }; if (isCustom) { payload.tags = tags; @@ -276,13 +540,10 @@ class SunoApi { timeout: 10000 // 10 seconds timeout } ); - logger.info( - 'generateSongs Response:\n' + JSON.stringify(response.data, null, 2) - ); if (response.status !== 200) { throw new Error('Error response:' + response.statusText); } - const songIds = response.data['clips'].map((audio: any) => audio.id); + const songIds = response.data.clips.map((audio: any) => audio.id); //Want to wait for music file generation if (wait_audio) { const startTime = Date.now(); @@ -303,8 +564,7 @@ class SunoApi { } return lastResponse; } else { - await this.keepAlive(true); - return response.data['clips'].map((audio: any) => ({ + return response.data.clips.map((audio: any) => ({ id: audio.id, title: audio.title, image_url: audio.image_url, @@ -366,26 +626,14 @@ class SunoApi { public async extendAudio( audioId: string, prompt: string = '', - continueAt: string = '0', + continueAt: number, tags: string = '', + negative_tags: string = '', title: string = '', - model?: string - ): Promise { - await this.keepAlive(false); - const response = await this.client.post( - `${SunoApi.BASE_URL}/api/generate/v2/`, - { - continue_clip_id: audioId, - continue_at: continueAt, - mv: model || DEFAULT_MODEL, - prompt: prompt, - tags: tags, - task: 'extend', - title: title - } - ); - console.log('response:\n', response); - return response.data; + model?: string, + wait_audio?: boolean + ): Promise { + return this.generateSongs(prompt, true, tags, title, false, model, wait_audio, negative_tags, 'extend', audioId, continueAt); } /** @@ -460,7 +708,7 @@ class SunoApi { page?: string | null ): Promise { await this.keepAlive(false); - let url = new URL(`${SunoApi.BASE_URL}/api/feed/`); + let url = new URL(`${SunoApi.BASE_URL}/api/feed/v2`); if (songIds) { url.searchParams.append('ids', songIds.join(',')); } @@ -469,11 +717,11 @@ class SunoApi { } logger.info('Get audio status: ' + url.href); const response = await this.client.get(url.href, { - // 3 seconds timeout - timeout: 3000 + // 10 seconds timeout + timeout: 10000 }); - const audios = response.data; + const audios = response.data.clips; return audios.map((audio: any) => ({ id: audio.id, @@ -523,13 +771,22 @@ class SunoApi { } } -const newSunoApi = async (cookie: string) => { - const sunoApi = new SunoApi(cookie); - return await sunoApi.init(); -}; +export const sunoApi = async (cookie?: string) => { + const resolvedCookie = cookie || process.env.SUNO_COOKIE; + if (!resolvedCookie) { + logger.info('No cookie provided! Aborting...\nPlease provide a cookie either in the .env file or in the Cookie header of your request.') + throw new Error('Please provide a cookie either in the .env file or in the Cookie header of your request.'); + } -if (!process.env.SUNO_COOKIE) { - console.log('Environment does not contain SUNO_COOKIE.', process.env); -} + // Check if the instance for this cookie already exists in the cache + const cachedInstance = cache.get(resolvedCookie); + if (cachedInstance) + return cachedInstance; -export const sunoApi = newSunoApi(process.env.SUNO_COOKIE || ''); + // If not, create a new instance and initialize it + const instance = await new SunoApi(resolvedCookie).init(); + // Cache the initialized instance + cache.set(resolvedCookie, instance); + + return instance; +}; \ No newline at end of file diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 4822741..10c1626 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,4 +1,5 @@ import pino from "pino"; +import { Page } from "rebrowser-playwright-core"; const logger = pino(); @@ -20,6 +21,14 @@ export const sleep = (x: number, y?: number): Promise => { return new Promise(resolve => setTimeout(resolve, timeout)); } +/** + * @param target A Locator or a page + * @returns {boolean} + */ +export const isPage = (target: any): target is Page => { + return target.constructor.name === 'Page'; +} + export const corsHeaders = { 'Access-Control-Allow-Origin': '*', diff --git a/tsconfig.json b/tsconfig.json index 7b28589..596d3f3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,8 +5,10 @@ "skipLibCheck": true, "strict": true, "noEmit": true, + "allowSyntheticDefaultImports": true, "esModuleInterop": true, - "module": "esnext", + "target": "ESNext", + "module": "ESNext", "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, @@ -18,7 +20,8 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": ["./src/*"], + "playwright-core": ["./node_modules/rebrowser-playwright-core"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], From 64b41508d4590e3271a956b9f7d7f3fff601ca6a Mon Sep 17 00:00:00 2001 From: gohoski Date: Mon, 6 Jan 2025 06:08:04 +0300 Subject: [PATCH 2/7] Remove unnecessary logging --- README.md | 2 +- src/lib/SunoApi.ts | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 1f1066e..37bebc1 100644 --- a/README.md +++ b/README.md @@ -329,7 +329,7 @@ You can integrate Suno AI as a tool/plugin/action into your AI agent. There are four ways you can support this project: -1. Fork and Submit Pull Requests: We welcome any PRs that enhances the functionality, APIs, response time and availability. You can also help us just by translating this README into your language—any help for this project is welcome! +1. Fork and Submit Pull Requests: We welcome any PRs that enhance the functionality, APIs, response time and availability. You can also help us just by translating this README into your language—any help for this project is welcome! 2. Open Issues: We appreciate reasonable suggestions and bug reports. 3. Donate: If this project has helped you, consider buying us a coffee using the Sponsor button at the top of the project. Cheers! ☕ 4. Spread the Word: Recommend this project to others, star the repo, or add a backlink after using the project. diff --git a/src/lib/SunoApi.ts b/src/lib/SunoApi.ts index a174008..a199ae4 100644 --- a/src/lib/SunoApi.ts +++ b/src/lib/SunoApi.ts @@ -156,7 +156,6 @@ class SunoApi { const newToken = renewResponse.data.jwt; // Update Authorization field in request header with the new JWT token this.currentToken = newToken; - logger.info(this.currentToken); } /** @@ -278,9 +277,6 @@ class SunoApi { const page = await browser.newPage(); await page.goto('https://suno.com/create', { referer: 'https://www.google.com/', waitUntil: 'domcontentloaded', timeout: 0 }); - page.on('request', request => console.log('>>', request.method(), request.url())); - page.on('response', response => console.log('<<', response.status(), response.url())); - logger.info('Waiting for Suno interface to load'); await page.locator('.react-aria-GridList').waitFor({ timeout: 60000 }); From 9141a226b5f4fb53691ef4bca5756e893c7cab4c Mon Sep 17 00:00:00 2001 From: gohoski Date: Mon, 6 Jan 2025 20:39:58 +0300 Subject: [PATCH 3/7] implement dragging type of hCaptcha also change the Suno interface load trigger from a locator to waitForResponse since the previous locator could not exist on a Suno account without any songs --- public/drag-instructions.jpg | Bin 0 -> 81414 bytes src/lib/SunoApi.ts | 48 +++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 14 deletions(-) create mode 100644 public/drag-instructions.jpg diff --git a/public/drag-instructions.jpg b/public/drag-instructions.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7746fd50be81c5aa8d559bb78d3440998ddb3be9 GIT binary patch literal 81414 zcmbrlcT^K!`2Pti2x3J#2r8k4CcT5=hms&52?-FINKHcMy;?w&Dj@--DJ6s?6sZA1 zk*ahl0qN4EH)#U8e)qTMx999%dv@=f`D148Jomir+_~j>KlktVzdsnRgY`lB42+D7 z42J&>hQAXG5C7-t|5y4SBmch){LjmOKQr85VMt}PJesk3+I`bE?oGRJN(~sh6^{C*zd?aV7_VQ zaPh7;hy3&892Q~SvSv=mz&1ePsm}}6OI+MMynG^}V&W1&MI~hwRWfd-py)H!q)1KrAGY%PT6Y zs;M=#buF!J?Hymfc6JR84bw+PzmJX2&do0@E-n9DS>4&)`?Y^?cy#>xf4CSK&j0T! z`(I%H53YZez#SZ z$TsIwpMgtU0L596o&Q1mKgs^zfxY)*Wqju2MrWO4)hnJd{_3atc>$`;Rvm zWt0kc*<|-YAzallZa+RFYFkxC;ET&~y+FmKBZ+=lg2g29CEl`T7G=U-k%hpbiWh@` zVVQ4JmXeQUT-((WecO(tV(yaMnT7cItg^s@f5dLAr)LFqm@ORyS?YzVsEVkVnWpDI z#hK18?XH>cNDq%E){;?(>?*}le{E9X)TI5))Fh27b+3QKu$XS z$neRk8ky&VPd@ZONeyx^JX4 z`neMsL3(R0sjsq=nAd)8dOX-ouJ1F?!Oz3T6bA&7h2EVToA6Km)SFHD64wlAb>3f9 zo@c_ioc$j8(8}>^F%AO;ok~atgpDn+<265AUq~;Q=c(!HBUp761>eoAEcdhmEC#xU z`ZSJ9y3*d4xc11kwdY;sc%5!K|K0>{tn1wJ<@)iHM_IKDLM?lzEvlKe;C-y0oBg$@ z){eFD-Og#FQpu3IxOtFAZrFiUbTNcu1ws^qdq)jFC5R8cv;brDI({*p+9tCZel5%oB(;ZO4Q1W5u=dIQ3b7#xtC{YQo2Niyr>Q7SC#Swyi%>ZT zKXUi)Mc8wovcu{EqWDb)EBMirCtqZjn zl%L$y8>MgBn)OYu#KfXFa0oAt$~5J=aS6$(aoixa7*6M#9XE&kU; z{mkJ)hk4-J!o2l0U~=FxB#v6OUhAH2Oms?n{*c$68{VX)YkJqs+CeNQ^a&xy{E8|Q+~smrgzCayI!5Oq`o6RQJ=rBRU$x?xz(4^wXke@@2pR|voHIK ziLp9Pa3rY}0x`l~>D+K#jI2mYtP2+nhJB{F(?1C6=b#IA~=6HMhtU?1nf z1$WufWv<9Rok*gIOABv6sSTWHU$MiI7+;yB!tW^fkC(22o?)Eap;F0Ti$(*!Mx0eX zlea}|oOM1K6R;?D=G-XM4%4y^FhfjisC)G7c!%g4%~eeIiOnAe$XCPOJ#JH#Md~(a z`)$_F@&cAB5tWH3)Ea?dV%t@J-tjKRJs#K>=a3!0Tm53T&4NAuD{;dR z;u2~Yhq17F$llq13vsCmY}TYGA`=8wIm&awZ4l-vQzEB+M(Vq$`6dBprF^bPdXX<)4C{_`I_eTp8$I8yXy zBG)m2uL?&I|J{|-^g1p3=o$AZ}?Re-(9RJ{GP!Fz%K$n zr}FkT|J@q*=){%#y_r84C4faHffl7;pTZF_mSOZDe$^oho9VQn#6zR9QfmEQ1j4~f z=F9fyV~JuS5(Qbn)jQM{AtAr4h=4DL}ve4_n+-X?!W?&aww1{#kF) zPi^bQ;3$vBML~x+@!@ze6PZDBO8!j4B`l~*4!qG^U2B&VdK`|CG8u{mvy(2Y{G3FI zgcdf~0A^^%<2{4fqR$bE6C#tV#Zu2WUnwT>1K!^k)lf}4$I-F&odM>4|t|4#P--8WSW^En!hLGae z)iMXlXZW*CI{QWbe$K!L-Zv1jIoD(KLw0Dfrpt(lk4JrYm5%Z%eM1!QA45zIKN&(+ zFB~t7;|Fd1|0Mo+HxVQM`}_C4OIg~MkW3p_c%Tn>5Okt#QIs`~@eB{T1>SWVj`MyN z{ozS`)xzb7QO-1kC8`Hxr?_!}q{Akt|jV>y*SUEfO#RZ}h=lU5i0Np>t# zBuGK?8%rU>tB_b@-Iqg_O(FM;3_I7HCPJ$^`aPuz2PK$r+#v45ob%Y?yO*8UMJ`C~ z+-RIxO15N-9+6#Bi1RtHTm|`Sh1WoF?0L|l?w;KbB~IQ&0*`3HhO=9GCv-SWRG`xf><-nDWqXwvg39VTWAq z`M6BKC9{bAVVT8SgER}o4RLa;FVPd}wpUsqUaZwdt(&n8E?G}77P3w=uBX;#(m)t_ zt)#TxVHtqM?&r@pr@z7wbG~htyckbfJ35?(kMAIG!Khka-4}Jy1{h#3)i2|Ss|cDGoQ{OyG%)<^uWTk1r<~2kb(|#uZ7TU2lHjSHM^!v-ejT{i^AUft7 z6t>;P%$5{!sib#Yw5fbdX$AzQUEuPuyv{N{t%WeXVge~DjZa@9uxUV%e;K&Y{umLC zL%3)EF>^f1>kIb@qI7JiYfo*cjUE_FdIhWHcsic23{R6TeXD?DWd*w?>C@Tr@P= zD2nF0N24pc5)#UIQVGIu;g4t|f9Yneq;!}8|7bB^i7}J{QK%S! z#7_+dRu?0StAF~>{supkWWL6e{P5jWnqXLW$H|yNT&P*pGlvP)DZ7k}H08VX!Cqyt z(R>m3vP?l8({lO$UmDn$H)lC7+BJ8ePW2rBl!4Q>KuFR zIfK`eEMtFM6S%$hHf`c34NY#xg(SU;7QmNX#lVWYS^L2#iAFG5kEhvcw-P@w;FemK zp$hE$;pMTK0i{@VKIk*@K(6KmBUy@_bCIabmzWlw?*K?gG&m{C46v9X%xtR;c_7{P zmdcoRk&34~$3YW$}+%nf3p9^GOvMzP?#|JNq%C9F@6i!6`H0EFe4mt+~0dSy#zbYJ+|~ zEK6*}Y)lJr@F}&-YzQiD9*<48tDa04gDM}W4jsB%@M@)Zucu(E-os55hf&5Q~u_aQ`(lv176G&5;uon^|>Zidg#8B!2jnrFkBW z8JXdza#2MaRjXQuIWk1k!9JKF)=u#(&jt7+6 z#+qIW;m`?=FT%NsY=!bPRS2QGhvTl7O$O;Z-~iqJ%&EgrB9c`c%5r_ zFTM>__w`FJesE%_1%!B7Nrb190RE_4@`&J2n)i3x^J;jlXT7&%YL77Z;jMjV!X-%-p!#hE#pO@--N}G9q zh7WD3oNM1~`NB%P4oPVYW-17=JFl@9KF%kzp zU6pk_f2#Co#FzLqiTk6odZXrv`Af54Tytu zN#I;o37V7pbrhtSYg+VW>Gjyf5h6Vv?&KDbnShY zAzr>oSj?ccauJc?2P#|%m+#HZ^CHam<18vrJK@mX(DwZ}TRm|i@}XsS-v8XOXiE3= z+aFop)i`lkJw$F#v~Eut?oO@!0i6Ipa{ zePK1~a_t6ZxgbqVXg!^uqE?wzOfk|g+8jsCeCt+eHM*f~2+q=WB6Jbf7iFnH&j{-+ zq*dVef$Y_}7PszP#SG3nt|xCIn$LrLRE>N2?^WQN1_ojq2Q4Ib!jKt{KRVMF5IGIZ zKB=q7cg%A@U&Ul~1A|_rdVolsdWY$kx1Q($kr1RP;mF=AYQ@ zev5{R?d2Fub*kYy!tf~;el>nj@z6|(UidX#@kaHJWcJ7cRY}>r76BnB@4F5~QoWXq zt%u({bnTK75JJ@7pmsCohz`}~=Qu6AT{Phdi5M`*xSqRcXBGhcV+SJ-Dnk|GOjzAgFl`bTWGmp(fKA&*^vU;nm%(u&LM2p$Y-UgL=sq=JWP)kBwOUAF?@% z4i^#aFlQuvW6_18YFo1@EJ-BJZ=U5THceJ5e{~SNo4}?zZR&)pO+zRDWpF*qmB@X2 zUb17rnDaBF+_t7IK{Nsm%9E=0h#WBJ%9p#$zYc|#n)n{B5V?hd^T}fMDRmf0Evb?^ zn}Zc&16GKtVa*)33N^8DW=z{c+mN=x9jJJm-zei!?Ah}nZkoB_$YFjkl~tr5D_9*J z!I`d-6y8|OnCO5+%QHU+#%N*z<+pEyr}~s9;gWxA8@&rh$t9?gU^!v};D)*Rq8u}S z6xx*th5MCA)1vmDXJX4CgWDe-+Uf1s(~Cu|e(;I{%EZ zHcgR9Vs4a<(bUO0B3i@lFGF9Z*|Rn$t7!KMxj4($<|!@10iLTqJ_p(Z9jgcfYpZr* zPsyN;f22#V_o@B1(W5E@tC0?*6z28$1?-@Ud?lOc1%23UtKcs#5Z5@hDLXC0r(SF9 z_>~Tso%pK49Fbs|)R@+u;}F8YhoMZ)RA^s~DX@n$=e!?#gnUpeAoMAd)FlIl#QDVf zgmo&8jA;9vHTv^7YhU?>(QM{Zq@FOtA98>+Z{}?-pWILNmGE-%=f95mTJi`=(q#7o zOxon`m~S@ZB78$T#l-cHo5hg2QRuEIFVaY&>yxD>I*t_EBMgbk$`(q$PM(Fp5jDLX ztiE6HVMa|$-=2vsiL0YHgZ;4Lfk!5H-1V9MYhkgqpvO(32U2gU2$Jj^01mJq=xg_jQ2c^tdeI}erI(` zeLb=7Ok2Y#wapu4;Od!Qv^Bg~ai~mG-eGN&xWcqIw z{1%%@*;8CJ*yv!Lcwad$O|Mk_zFC@cJhtF|k^2%$(8Al(>TYkogk4j9cNNIP7k3!I zSFePOb$H?y@%ebvWAaMp5b0*m%$`p8$79k zz$)^WK?g7#jE&e#!>kO%?%DOl1F(jhbe#wl=ZNptT)RE`kH>?Zq$zi<>xni?NCjFf z)pj_%bE!cbg;C|&7Y9GcV+$rq;VDNrR{*ise@kEHAaqRl;BwNd^2w@izt32nF0vy0 zfqJ_S1Gl%FHpE0H0?LOTzM~g;l*n&L#eY55Q8LN@@qR5g)0>Artr-TlA5y(ubA7fA zlP`Yf%!?0e;!O%F5_Eud$+yw5q?q=?PU}>Ez+Z;2TvDfoj0Z?GJL%Uu$64JBUBZO5=ue2LNmPp8uxl{P$khvvkT4es(B-IR*`Sn~NxuQfirW6lZ` zUn<5n`dj(&$L$@|O{m?vgNKzqh7d@Ygq4PKTW=0`q>A#?m6yU)i6Q$UuDX7F9&$<2 zdE#Bli;t1ho#V!0|5+I|>Oc1?VR_g>9B=OJ*`Zv??S680{N%}7O0d(tuX9CgW^AGOqT;~~>%2XZa`sbP4v_bQT%C*)pXWIkRjApQ z#=K&va#8K^xn~7}vG|bgn}9VLXI*)F+Cf?vc7W0WuN00jR{q|7!_K%nTOOkm0o?3F z4clYfi~ap*A3pwND32(pJA6@Z_CsUY`kho{SaN20byi_qspQvqIhXQSr@su~Sa}zl zKgYi}j}q@dKM!Z24&x_LCiR3;h3I0o=`PLUQ*GP8Q?a%Z{^IvL+Ip9(qrziubR}NJ zNyr%1cX5gjpl_;GbwhF~y!t*UK4t96wtZ5)R^gF-J7W2j6YSM3VOULP!2R;?{c>3P zLHJ6s;EbPglQWRZ>BlC7+vLWp^Ssa6=Cvwah>(0|UV=n(6*tQRNra?+ib;Q}QN_miM6=2~f#ah@;^E`dI16U4Bg|)*AXXCP&8Jto#ku|uU8g9aRNe=A| zNDCHH&>#3z7X68NZ80EW-fw(6x9o$k5B24oP-UxE2{0YoC||58ElD%?_U9L=lrp$(PZ^GVv8-+;3n74B4wd;3B_Ex>K=(g4fvx`MGo*@SsWRJ zdIy-8fG9sVr`9LJrb{FB{o_m8+k&CBT$*or1+II{`y87U8b-JIs*e94|3~gguvL8r zvrIZjn$~-marsw*tkcBe0tlfz*1k$bsyLFh|1jsaRPpNBUr+JKYe-3_(GaURyEt2} zaydNS@ze38GPhJ^!?BNSuM81C4Lpgn+G_~0$o_55D8Hoz_4olUh|?4qEx zBj>6EATPR2^C6mf`~Yk^?Ju=XqS(qLj8OstTvUk?=4Kd8bH8@;D98)aX-O|pG-X5@ zuwR|yd+>VpfqKu5!dCKC#82dypp660N7%z-o?-GhcrqZX^?geo!MI@FC`)Z9j^?pC zIZ6u&EgLcjS3e)UVt_xP%*8InHT;nXY$*Cgb)s^qDc}7tC65ygz9`B{ZgL~QR$tE_=6#^ssx~LcN(nFKn}HB6P>JH8rUG0E42*zz_KJJ_(f1ac*JIX zS4tX<)n}@D2%`i4=i=h!lh+=Bx+kbYx`Q+Glj3FHLgNfBu6JEpmQ5`Q>bOqg1=T{Z z@HF!&>LJD%Q|woX;2l`D4EZHd`?!NBX4~MZsXhh4Rr#bQnvH;FFxS5oVamcx)~mPU zOMUttoX893&Tg5-rT~D-&ol=r8GuE|u5$DAB;ety>~rdNjUFdGx2GXP92398KogOg>^H%uhc(`ayHGUU)V*GDBYE-F!TesWWx;IP(HnzXZa-F-J`wGgw%fs}w z-a`K6Uxu4^7b}{izA9Ww=%V}5n%ie5G7xjvLzL?3936|w7|_#0hgR<^M;D+4? z|MfJ+&BmuPW<#zt&&6-t$V|Wt@a9Q5W9!)EE2%#tyr3_`d8IWLDg-WDq(N*}fs%*b zNL9N&NpfOp$c(?}j9rWim$5|~FgaP#ac~c`W=O0U5AP{_aoW6IjeL1cs$d+xv~l@`#I`Dr~2KKZBiny%vrUoW1=SO zIxh}9DPPyVn*|&qc75F7WS(2Xj{6uZ|Le7UR_g#myK+3M!*uYqxeO0-VTM}OwO(bIX5!9*=Ifv`?Miu;cD>VxtZ^TMjp`uo~#XILGy zmg|?l4A(a6O=nLsX09A1Z`~OTLl&&4<5Is#Z>Cpt7MPTSzaDZOa-|LSy4%!$x`>^& z5((-lom)~xK5nbht9zU&tehqZNx^`@J02=%%j&^Ut6Mc8iS=q&{JdLtTKeeL<`}wh zCZUgVuv>2=%{JSS%wC>aLl-feKkoEqs>FDn$FlYPaX?eB0TZt#Ql3ffM{=#1vOVjv zwR0OKB^5)jm|A}sgFKE#WJpN%8-hnyvGfSgk48cKqi#(CORd9f+H4*qZ#4*<>Ywwf}KTD^lBX&&l-8NMG346nVNC3t)tqk ze-8Dxm!_A)gxyur6tGssVv$FOwU;;8F!1l%%S)$L>1ToW4wPm^bmhEa8}bQ3O7JU) zPRgG2xV47uSL|TR;XREr5ad6LPe5NoQZL%TitJ%q8V#jrE55_bq#SQa&$7o zP1yTfAmAzSJH;iYo$@b=zNnVQQM$qMd9f+koHAiru+6TQDS;$z|6UW2PZxfR|0fl_ zp1J(8kldV)^VmEa$4&PcuSD3l{pN1gzG}=RR6Q-FU_be`&x3dF75g*U+pb;pQ9{37 zw`|lt=vW%J|DjOi52g$9nH-@c)7hJLh8mU#;~I#~)eS<~UhONbc|42x zVrTb7W%d&oj*{o^nqzqN3x*+hefjh|GF# zQ`v3)yE^gRxB9*hEq3qpFT?X@iw=t{q>i&L8Pw%HSTF0(Ba_-BpPJxTM-RihlN%lx zwRLz$tLf7}4yI#04co(G!f&EfwsIbi^Q%}r{XUXmRMOj*x+d&m1^d*igliCs_do|+ z_;_Kl$@Xjbt82`k{Dic*bU4*yBX&L0Ek~Y^H1FjgV6z=egV{nYOmFuaU#Fy}G`z=S`P28kA8PU=%x<3!NH7hwb`+K+b>8yCkBaK5j z&Qdqsln_Fwm`nf`wFOV}|GCIZu&IzEB()i9>gkit?2Vwr(9mGw=D6&1yj{0(QnHS# zafB9kJ7%_5-#N)($B!Rk^x}5n71Y-y)o}xJtfZK!@)(u<5c-Ad!PKiWcyNPzBgc+q zxX-v*{Mw+=G|2?M=#9~K|BryQqKWv2bDq@fMT;-j@CCOYm)!&V%Uy5C5_o8G1B;Q+ z4i+8unCA?1O3}$R{qD2-2Ian2TMap4Vvf>k`f*m<-fyGV^@8tN<=?6z%`Zt zda$Q&8S*U;ah1K?CrOd)3!0L!wHp{(o|$;My&B0OwUHL~s=IY$MGElld%wup8i)I3 zy-1I{AYt4&>LpGPV}dg{o~%ip!Vu zoEhX-vD{z}KGvs&dc!$lA(g=yK>?dpn5m9{hLJZK!9qReE4ro9mxdOLO}g3Mq=Z$8 zQ2c-s)??%B`1RB3!tMMgRXx=|KP4&hjAdV0!*N5zq&xt96QTFycx9t`mU~L=8DIPp zETfquC5;=MIZCPz)4?m^Q!1Vhzc(*hp8ks{+oq#*x$@SrMiXE@iMrUGXpRpJkki3K zh^cjOL|(YaS+@vT(XGU?Mq}Y+j)X!q68hD^asG}FGr;`2{j-`Ho&)9|r zpuqPgzrD^Ej_j@EEh4I31*cZNef~V2IwT=wE-Y>|=6E+H!JtZyqn5(~Ez!|gm78wt z(bpe%oxtskkUN}PZ^(xqT5Bm=6H8%X6ST*UZ_9y&ZN5cC=UNo-)b~fyH{T)#cUT#p z!5xyLa1=xp)4JSnDezljd8w-6A|ky>%4s152P-NXM5pf=-7rc2-6&0rNvU@}_zAM> z)hW+Az#_F|vJ#nhmvrPUm0u;q-H~ed$bX~oPV5Q83vqm8s9%kI3yjL#H#1z`bhG>? zv=!3pHs=tBllYb`kK;rs0c8WAc-2mm^wfmimMy>R_@AZkb!B+MY!PoiLl3j>%EhmM zB}DW0>j@enJOx83qq&R@&!=}q7>qNDtdPU)fdXb3wty)Xkn)J$>WL*|zP}8pCwo`Hs_K>Vy3*>Z5w076 z!9yZ6dnCYPbwk?yH*UK5h81Vnn6o5cx9dOm=%h}mg-_bPq%l{I+HtU9SB+=`3V$c2 zV4lqc8W*462uvt;VBVZ}T0aOdZm=5A3Amc2{6W)++#6n~Q^B>LkX5poQPGfn>}z%W zqxGIhtLH1dF3s}WEqI2Pf;rcDf^2ea&gG{zOX7iLr6%_Zk8KrmOfy0xB*j6+0NUmt z9Zkv#hyWAa9Mn~>xR=k$)(bMx6KVhBw2_-4HdcHt~h@m|WmHslg+cQ@u>;hP{Fl8TZWE1{1m2hbp3i3Ghs^{ZtIVIu326=i@Q9m-_Ol@Sg46 zC%jSOj@;7`$rU!M;D#VPu<{A*zK zkcK?hP?}^x#I+99MOn&X5F*wr%Gu&3LJ~m-44K7F0qRH7tkF~Vg~fST#T*vC@Cg9C zJ({TxGhg3rKG9oY$~>jioKlVzo!5^k=5~YiY4X&-J6< z#xviGSYw1M-SdNiz+gX8T^V{hNfVl2sho0H+BaBUoq#Uz2?t(HqP8Nl~eK)=@tcKRn$mxf}XMtiBSsWa-<7y; z`9izjpG8RhMQ%{*4;93G8wAe}ExziKfmh!Nh?<+*HwrkmZIC(bMZ!q@bLA%;`B&2Vj@ov+mcj47t|?VOk^21NVZ)#r;jy#t7^wSr^h4V{%*q4os95&i*xvV zuTt3JaDPUcMOx7tk8BUETp90`3@#p;5q z7J#+2)swkSpBXbpZnS~m_}O08Mi>B_U}!%b{Q>6MDO0CWfZ;2TUsRjGi|}@=oTM51 z0xC!Co3$Q)O*Uh@b58bsb3FI;O%bPBDntQrb&NY;L9(s=wJu{vc>`-G!rR}=|ATax z0tP$+20}e{(mi&tA!7y~S08lHNg85BeADuSD-)KK@$oTRE5(68@c)p%GjXJF5Vy|sX?z$HD|^#lSpa&9LzufF`vJm&7$qi6<+ zn|~RI3~6##3N)T4$r<$0yr(LGyS?z-4bftydY2FFfMTcYv{-~rOaOaqVaB4(LD<=1 z!y;$-FT`n)R+ICsyFty`io@LtH1(ec6tT<(QN#94;hNXam)h=O_b)x*?6r#mEFy3= z4jOfpxY{h0Z~>>ON!#=#bU{Nmn3L3!V1ayqh_;CI#(dqN#3Ag>v(hUJPtT2LU)5<% zI+Bw8+|L{aiv0rLE`8I4vVYFE01bLEJ+5`lc3b6jglJF%&-8EpYUL{hMgl6;d{H-P z<9W@2Xs>`Tz$8LTpR80wr&6cBch%-_-j#>|TO`l&k?hADE9+ zI`$%Z<&i=>in13ikGieOxcLlTx+Jba>jz3O{uxF_OsShah$&QNxn)p$or&NeFfMl< zUPSioGJ|CfzMIt69Hgz&eze7Jq$k6MxcG#?k zgm3($BBqmxW1X7C7ofH)BjfSZVh`^(x_X6{`SJ4S8EU^iQRyi&%K^&aa(Gp{Of&G* zB6vSq@igl+;U0UNuF@^Qq|;n>x}C(ac7jmh2dX((HbRh9PWsE3zw;a6zYNgbs`qZi zV=DPAgRs?7Qt96KoojS6#W_l_kC)6^*mSloCT(2US4nu4pvZ(XQ_57>M5pI#@d zqrI8*kTAT|g(p~>PY`@ShJ}Sk-w554F2rR0`KJ6QD=VDg`YfF5jRH+9MexH7p}Oec zI)61D_t77UNF#0)wOVK^X-jNt?pA3~!(d8faDKyZX}DC=$2=itesQorSxgPo=-Nw0 zY9~`$wy3n+L>ipy;^WMg?}=`CQ)S#eaZU?N+X7E!XIB>S=c z+7C7iuihq!CmT7a7|UC&2p83x5?~K2u94qV4t(Mwz|zlD{m1J4yzra&PgHDci|Kd` zwZC7;zfZa{OM?O^4s<0{b>HiEwGD@`H(V5*x3JLoQdf6Ir^dib{n4_P>gICS*E<)h z&5ivozc6@ElfOg8%04lBC&CMwJLX4T)RtEF6BeR4l0x0u$(7^>grI`-#~7UekWZhw z)$|BLP`DTo4I=yEY-=-K+9b*wQw!2;-G3dg9aB#p9u)65v)!pHK2gV9S>K*x~40QV-myXC_{G&iEgx?0wiIkFJ15Os* zk(sGQu*gMLV_gTFh6N;y_-$*!M1_K-s-ck$NeZ#N;jrxR!{)Z}52u#wHa50vt%w*4V{65K zdNNM3rVCXE0}f1yNMlE*y#fYjGzh^X6TpdkW-rwe7+7wY*ey-5oDgr@jlE^NQR`#E zZ*x_q`uz1g)mnoM`&qp5sC?t(!B~T=YeQcN%0%i*DZb=-!<`PataEF*%E(Mc(c zFV)D(ZPd@pB7dby-4|^ifCecIvKyHf9Ug^Pds#d9+0;Blai)p$VwTPSGFV-FLvH1mM+}bhL+dE5t}1}|8`xV zo++?4i+F)f)<4Kuy|Nd$8<&Of_7gS%n_MUGOmh}2)Y^iq+HHUSTlp(S5Z*ebqH+D_ z<8Ze$l|(=y{C$rXZLnE0O^WoC>Ap@>#7ShcTD@Vm#(`LPQl8_P1DBlb&tsUlVY`5i7-$}dEtS{Xc#qQ<$DW#W0UYH6o)ql|16an zG*^q-{T)@~{QcgibL;$h?s)E#DwoS^zd*6EKY?kj)PHczGK zPGey639R$BKH@EZP;Vp)iU)z#f>{RHmG* zC1TT!LaS?2*U|z?u=EMjM^%;|Ws=*hy5%{JMJ*kcOh3K2H_$d8EL&--J=+mzF|hDm zEV^KaGfn$$5naq!r1O$|Y*?b~2CeFh?sB%40>9LtCO(}7^!AOKLEl(>%Cu1+A5AUUc&VNFk@V-_3fUyAWTuS(*qpSBUCSHL z2z2ktvQp{R38-f`%c?BqFGxYINOM>Zt|%mq%3c^~NSAN*i*59+M#v|?XoXX8J zb#vLDc1rLv&!C9OhQxZe>5)!~Wid=U##U3t8{*T0mRU?htUN#h!t_V+{68TB#`l^Z2)bW}w#zYP|o$2Z~nKAU?y{+Bv zY>muMR3fN*qO(KBD@|&pou=A>Kuwoe`%p&?NfN0Xk~9rNCJ)ftW2}JKyU%}q?>g+} zoK(N|VUbM#eK{juHBJ(T9`2!x5RG*lV>)12h{s0LG?>6724k1mpV}*Z#WBlK!f5q7 zVjoC~V~0>lsso>fT4qw#;e6RhK-ay(_>d*|HK2$)aqKe+Y-a+ z8OzDKP;53`zeGU>Oa{Y<(Uh)#TJbWUf=xNbZdD<%8l>d-y~W!+PkgrG607JiawICN z7KV)JhefahLp7-CMQJOp^fWLw^9 zvDJ#A)Z8DM=$G$i6VP2O5azKsZN1Y2xBBp-j3?H_^IBZADji~jUl~p-Llrl@3F_2# znRIq4iPV4kv!DO%Q#W$<`X{e;13a}@wS~M89^CMAGot~&qR-Jdh4JmwIZEtm3=qBX26SZ2{8`55xay%4K($x?cF^Q#_Ce6NSewI?N?ZL(A7A@hG-|K`jG`W;XRf?Q ze#dJ0<(*NH$MOO-`4bzWtkr7j86Pi8*SQ+?0Sd>mJ{jppRN8`Ihtgv)`57zW0jtos zf_YvElV}6t-ouKJ^$$k&aC-IKZbaFO**rPJ|By;QWU%t5a~j`jCA@hqOxWDM>ozQL z@|pN3OZCh5IUIS=ZXbx-2unRgX@hG;Eyq9ZXmZ_G;)zmkLX2yu4cjJYm26(CECjGCAeB$k`XBnW$C;?)6_}Ci3ipujxx7!;5re2#FpP>4)1FOWvoH+~XOHHgN(8%KP z*oPO$RvhGLSGm@OuVK}GI_i|S$}Y_H)Ay$aJS6eNbsHh-FjH(%F>{+V=tz98e zyGBGrC=zOf)@tnvq4uWsrsnf_`+IeNelN~_?sHw&_uQG%d+QkQmK5}u_!O>D*2MQv zzvUADavmT!XQaU2;n$T(4+B$g1rO7&v;k>J{8v(FfI)D|Pirt`x<+8)%OvcYHMA#* zGu7izzDHduna-%U+p%DgIJ$R9NPJUw(ok00aOACS&;mby>rV!MSji>g71_Fa7o=6E z^r?0&=~EV%&jve{r85%gV^M0#-u0|f{XBWf4uS(JJfcj0xq zgHan;H~keAEP=YMIX5u0I8MNSB*NtCYLjwG90Du(m5Bkqi_0Z}vNj}8@0pCOxgeP{ z25oT~Ra#RyGfgZZa!oLkh2|dwDYsZUfH@4k4MUC{EOD(=0KKx-?q+CN-A`_<80zt| zp^are^BB4Om&exgr+Q`ZpS-)?e_wnPdK<2>(~dU*q}Gz?8Dp6?^Sx<~{X;D|1-PeD z7R`gbWz}V4V}ZyNJrKGuNjbWJzqYuhm zOI;3#3;oB}ggI3XpGqM87yMUf*t*t*xnr%z$K+7E8)2cey2O0szXtV^>;HZ>cHZ(w zPw9ncQ!6&0VbKc7m+kksZ^~Q$p^xOxEEoWcn*E~50hGD+%yca&bHDb8cOGf;1w_Bw z@Wt-Y7#}dX(!P4B6%o}$ofYlCC1oT7t%QAi@f6G~I(NhAXXv_N)=huqDXy9cy4P;z zKjO6XRn(@%BR_{(7d4%(>;=?r}{i+>KZI zQ-CDHuL*KgpC5tOpU?j2^*kH?n`Gc=gf$#{Uz?#SF`P2GNoVd0%WC#G4l?-eEYKl+oz{-S{H&66SSCQ4bRyP={ zx5#-9tBO9n^_X9)uY_W$1Mt1s%qEaNlQ0(gMdo_Hq1OE__Y`Y(seHb$ zX&X*cqH`}SUc)kZ{g_ZC-mqCqt7h^6y$hMd2x6#X9)02OuxE5yY^4!`T={pj`@?B| z;fjsGkq%>`5A1xT>{%zZp|Hk*ZB`<>k72S=p9(c;$9=zR!v{LUpF|b0J+a$eRqM1% zT0dxC?|jUQNcTKY7zWp>K{&DS>X24QDxT6x%-;UDm|o>=cd^~(pGx4Ms&N#ib0siu zTi+yOEctiqqy$x^#BPw#J; z+%(Zs-v@lARL3##A+WwbQ|-8JfykaJ5~uoL@h^O$7eNuDFN4Y zRm^IOuIfKnE~tiVzf2MnJKRh{?xoLEpzT)(JEMGJ4M_oZyn%=ch`0jn5I%r$UEUr* za^bl?+#FV3`;N5`#hul=`E6gg3a87mrPq#jytoE%@a=k7f|hRndBgO@Jz=11)hhHBl%xrdsa5$i=#>a51N@T5>G$?&x0DKC?8O34-b-;BNXdelozyJLBC8e}7_&Rkn z0vl6AsvO*WeGROXGK!aXUt1oZPMqIC{Ot}e?uKkgmBpC))N`Y`jZ&Cn63%c&19MF7 zhZdt!?y+dXb$7<)$BC7q+pVzJ*VIB-(Be=ZjOy|V-`3h}p;QvANGmz)Vy|RwwrU%h zEKYfNHJKow#vV|ds;Ga#mNuW_9bd-3>eq%Vy^{{f(BD3JS3lm1*Aq5rn-T}$omc$4 z1NZr*=J`RN$YQ^mgA4_2bJkUy_`fllhS`)+r&B$VT-L$St%A*llkIePwAuRDUE5qF zpmB~Pp3@fZpoYfE=2^sL;lNLSZLLgb39 zpkrg3jG!zSk%bi&BveeGyP2_GZXtRC_+8${*S zCrs1#clNk~n)pb+`9vfIFsXhIsWeo#;iBn+#^Sx@mDfSj_ zb9a`@_lFX8=u@}n^K;H7xU=p*7ou=#RNLkK72XEVC|CKgTy*n-sFdUWiycgz*=Q%P z{xwyRTvat#nDmh{uSoIK*n-uXlZ5lK-J&#S7zkL+eM7j(b2EXu%!^o=7Ttq;ylcM- zd2Cr7+hm_e2{QRgoi|X_(7i9%Wi$$V=U2<1=S>yQQA4j|orHDH(dmxU5H6E#R2O8x z$aQ3NZBWp`k5%E_oIy`n{&gms4lUKp1YeCOKcFGuD)WE2qTQukeMfVsACF}mQ-qLk{(d+bG~R^)X%;cm&@F)?lp1Jkjk`wa^XCi zLzxb|I!^4NEH2$cvG4AF;zN_1>`Qbxzv$wDfdCLR50@C57BdVnc$IWuP!e#Q`A4mS zEbg2)GaS_~PPeqopwV}&K!Kl?WiB~vy>$QmYsr6@CE1<`tZdEN!B5yag?+MZRQn3N zwB@mVKX>IW1(H`hy4GrB{TqKsuUT;YnV2$ZcljqbRGDBZ*5_9V*z>?1g2wgg$iE1F z*E!>O`L6wZ<>Kgk!jPH1`XKPyAHXBIqm8H9@-h?aE$%HXmb<2Q+?N}jj4VdAH61P; zb}BpO%w#=o4s&`(hPXq$h1Gj|#|X-SErb&9(V;|U9=3lDX3^~8BOCRDNc+o4}k zRo`@}ZaJNI-uB~}d!~L^&R5pl64{WNXjm9X_ZB+UH!ji7Ejfj(6WCf;!~aO5q4uws zxH!122wQ8%oeKd6mM!@ZN4$5d?VslrHD7tULGLL1uID3MaPP@2ci2#$mxuTD{g1!C zPaJ`Q3@n2YIG1)jTTu+R&$SzxgRZQEpODpbVmeccw~=Fx`jn(UAe)`#>|2zS(6 zvd$XF$G0LY$L2=v|5(D)4%J-L#PI;7e!k`?Jq>N$>Qr?$0nZD(O89a>r9HSla^fFW!JguM}boj64*{}a&u|b_slH`GL!1eMZ2Yps6 zVV))J!aY0T^5{S>M&Ameznt3mgRf!L3Dm`l`n52{cvD__x@z%!gO%7>tp^vhvhtooCuJIR$4(IqT z1X}R+H=B}yCM2uwKP?%Ie=ok|WayTxA&G-7UAxMbs-Yq`f3LhjmRIj*J~6wtC3LoN zY(((>hp@MhPs*O^99pGD%p_Rao-sNZE87DNu5x9RmA@WEH1`sf=-4b}DH;;}WW_t# z;4q&doL=~nGa+Yq7FkO;-~0AX7k)kaj8g_AQZ(s*EaWo@Cf?U&DUoxHwn-*pqN-g) z_;}OsKRc0qc$uFc*t(UO{v!9>KzVcz9qBqS)EThYpZxXj47<9nh26IZLmIhY?41RR zk*~7nuJM0o-#x>xHp7jme6YDDJ#3EmQV;aHT)d~A!5`mrFEVy*iA)uZOvgm8oQu4VH>`V6^JFXxD^tNo z2A4D(5qb61J8`S*ds9?{FV{9WuX*{(w6g#&c%uC$^T<%tCaD<$bG7b-fe-f>ZQwfO zQsBa9SNZ9q!H#3!vdaE=F)EKq5f?6!Or+r}F?0+NAEG;eBHStz|5M4XtrU4iRR-~$ zd;Zh4Jt^5wJa$)TnLv{Tn8EX$5nBnV*Kw=6q3xYy=CE6|Hm9(TXFFnx0Y``il0ooM ztIQLp&~+SkU`p>jE11JWXNna)9O+~q!2<*9cL&OsvNfZrckchEyL|yHu;NH5?8@Y0 z&+XJu6i6Ry|}yMQ1pxBU7q9mbg_GL!YdN_KYib%6M-C z8K-DOz7*n1D(ld^^s@X?bMv=aD+|-utGD&MkE0@h9%ivNc5u1;s!sK3=0V2=@|Pil zvlzc%wJCF_Gd$-r6{>Fi6w>_?35sr@w6g1ZqC0b2cK-I&37v%+g{&Cb!JgwXN&xx! zd1I~Czy&m?*MgT}t{@T?Hkq`cr4|PiZ^L%1e-6?WBs`)2>GF4qAVJviI~=FPv6@{| z!4I{61w|Pe`u5V>`ZU~SkOqvU>`(h$_0EnbDQA)-Bq2??-|TL+-!!&ydfPnV1$1w+ z1y+|1Ho7D^xV@tyYxyeTy5z059eb;edYeW-O&Z*>6r9I}3+9Nft=!1i#TTW0FB!Xk z1R$2UFC~Kh#RzJ8k_3YQ+d#&C{4HVsQug{7r8Lq_`ZnL3HrVvARFp@hxEgmWhV*y> zHb+vI2!!^a2k4`<-RTgGLMrtXT~I@>M0+#G2IyJ(aekWvl7#$E05rR@jYN2qvPQYc z#Vq;%p1-fuELP4-%KB-a%aLZiS>}nbJ{GD^<*ViQgeTz>tTbkG&<2V1#f|J1XA=Pl z)#a{^CV%dubUPB5lb>w4f@YEFZ)2)-O>%Hgx3q2enBSH{@E+J|7f{^+Hm_)E4TX|Q zrtSJNMh}Mds`fJuwbh4@Y&T3^753OYj!=34yqny}r>;rqcz-qa9%gso%6C;@e3c$g zSJ*VrheVy_$WUFJnCwwGl1p3ir34PrD4qZc$QDE_th8TUrs+Fj5E?!hE>8!ul!Xt!Y# zP{66S7$7#VW-%q?a>fFxxElHE@Bdg_HAPTCLKB*=2Q50(aLwuAT?n02=55=g0zs>> zm;YmVT;0`b#)@SD9n423%}2I=4tIK9m&ZcXd;vFacUNe zyI?m=#RK^eHiLpUBAP|8ntn}jEZ;IELeobOKb4cue0u^< zicMf=usjHu=qO9RF-s$xdgOj2osVo1S2;9iM9sz1k|cAI%&6dcAM%3$iDRhQyNK&i zO?Kj~QxXKl%X!BU>{2^G{pA+d%Y%AIgu$!e_I3WrnNu3a*>kC7h5m_Fz5}$XB+2gE zog?TO1oEo^1J&Q(z$3L{{%if2l#Tlp-xH%20UaqoXCX7@IDI|R_ABBWtVB1_E!Ch# zmu?d!zh}I6_jm_z)WHZfZ>rV30?WK0e=4GkEIdM3Zk@n~>C{?PB(m~vnZEG$rb0No zc}q7S<2Ue^*3%is?i44bM-is#lsPe;9peqf;g;sZr<()OE+(VBsnKIl2;AsvjP_eF}$AT>VqbNRs9S|#VmM6;h{Q#IjX6)HZ1^j10K{3>W)oVW7gdRH4KnnAh3W1$GojUod*T{3vQEEwB zczBL}l;wLGO}*LpY9ev5pK?0GabGniDbXqREA3@CvDV;ZblY&nPU+tUHj~Wz)$VyK zd=EEUtCBnE7EuyKZ9?BZ{XAa3$>WyYg85u{+3r^(_nEqS zp-$42_+zOK$D%&`EjExPuwpnIT(QrQMjK)d?id7ouBDq0G#uH~dofe%Shz=B6hVwy zHMN%v8c}d<)iS4P-tR{A7AuTu%L2H+>a+6noz;-L7pM2I?T7S#N0q*v9dF!BRd^0K z2vGN23mPnOE*Cx!J&VyzpLOcI=;~a#H#VQ4n^Q2AUL|rmU?`%e4UQ+{f-3N4sikpWW zBld84r+lWxPMe`*Lz`PiH)#XQI4P}P3TeL(7q35&YMs+NyU7QCH#tME?Z%hlXYSBv zJgjdsCW~5fpgv!>@lrU|2hJIgTVZ_!o+vJeaC7AO*UA&v~ z(xAGA;!|c_;ZTFTA$rAUVDp{17L4bjRE^aq&d7dgI)}xNsAd_1j`)agpMcpv0HL6P zW>X(RWD~gkwrSv3EarFI$nNWgAA@`bU0CFsE3f>s!OP`#FlO&PocR0{E_tIv#Wr%+m~^F*1TCK{%q%me zXFT04Nc20U@?!E=4D@bwUNMRVeswjO6v^i6t5zA;GbMx|iRens0Y3MNsNI3P;InTp z;$*w=mMotvpX#lFMiO@Q6HbUccAHc5nCpVnQibCrg5(1l5r!8JZ4bYYo{#T2<>Q6Z zmukcXOiNAdARd&CYzZBU2X0V(-D$3>Z1Nz*&M_n9*9aSCH=fEHgp2$P={P6(^=QmG zXT%|A@Xex^7q5w-OvR0*?JebS_w;>J9S)p%O%K+ki?-$fQyUs0y4LKMHEVP9d0bX$ zfp{|0f|sFzbTzr#%NfW#Y% z*D^cqJ4vPNg{i*2bJmRV>ay}f&=Dd?*_R#%{7j1>tyE15XuK-u#gLRJd3J8$HI;zk zUM6+$%|@qCTI5-gmivm9+%X+DI+nVQb#+cSe^tcX{)5S>o)`O}TL+S`Qsc2NCQ6s3 z+tiW(d%k8%gr87FS+8C1;Ib=z9>9g--&MQ$*AdC7h z`~M!51m)clmwG};Qjd7lrIK#qqR*y~moW{G@yT1Ds|qN&$5`Q4kgfdU6E5wG2^rar zq?edZagzmAk;Iww{tbdfs zD@98r$-rR~s>sx>`nnU~nkz;@xQry4Q7ion1WczTHCz}?%{uB<58efH;EVUhr1N8W zwG}=;!7q2kY5&~S<p;1Zy~xN>?nZ8m75$<~8vKQ$cYdc4DZ zq^grw%;^7{W~3TGWD~u~)&eVs8<=CVLJp%kx-2pFz{MMmkZKlV;eW5AKzj4j zO&X25_jC0ka=2pO@@;A9n;=P7xqQ2i85XUc6~kVMr^vt+@+&%JEQw)B)~P}F|9CM8 z!4i1`)t-a9D94Mj$DeBgdp*qbZIo~y-9SytU!Rb6U(~Y5y2&-hr&Nuk1|h-EpQ7{6 zCwjg!ynSbk#4OCX3epr34tX87TT{JP*h(f#QuBYm;S?b_OD|Kf_L>4Sf&(Jzlbz{K6eMn{Fhm!bw+x?vIx zVJ5cd@xgD(Fvx~kumAYg;Z#VhbohzLziH^#$S;Zd1J5>eq}v!jNXQ=rm!zKl$==gw zY4P}aGaEXkZ)WYLV*4$X4slDcLorCO^km?iNuPsQOM9xokYS*g4qY{2W5h4wfXMbz z)CgiCf5jWvQY?SG%4XP) z7B~&aA%qdStaz!|cWu4SWO#XPeXWs)q^cbQ0%Bc}BDsNst<ou}|7)U6j)!T0a zPpxaqBvFas%%BP!7}IJ%Tmw}oQlpL&Ta$_vSQU-X0LAnAJGJ=~Saenu|o|^~K zOeX$54_)3sLEQAL5l03Rn+=G^J{8?Y)vTk{x&6EGSc_DidtoRxs@(L zjd`6{G+NP8XcXhYk+Ht%!Uf$VSS%g>qM!(;V3#|RuLcxpJmITC-`NOFEE3|FeuD6% zX&RuDXlW<5fBanoch(1(;FA{f1ur5FHV$ zENBJVsq-qiGk!=|wM$`~ibXvVS5=GJ@H8s#S@7$TSg>_WZ@OwEXW%7wAz_3w-sR@m z?!9MRrEfppyQ|Ro?hL%$x8+I($=Ie2hc%*+C~nKWi;STDGX0R4Ti&=?C)517z1fpB zdqCI?(-yx4Y3f~Im@JtQVbVje==eqM<+q1w{${%|8y}*mi_r!A(k zisGj8nOw1|(2W_YlTWToXU&OMkW4=f#M)f#@>AeluW8i>{kk`50aBHoA1SNw`xBQb zs{k3+Wte@WnCQa9!fXz9A{o zcfxrxffKcD8$bFw+j>lSVBK1W`K5`kdim3($-{VdFn0sJ0l;-nELz zg0{!40!lONtHBre-^$JOn#fD~7;t2uv~f!P zow_o{%R2zt6oU>DreKTTA2}r1tICS9-K4W{)*BC`1d92 z-AA8ITPD#1C5qPROKt4%LEW2JcQe=Dm{#?D>yG_8)%H44bh`}shW>dtZ_uo67<;%X z%ycdZxnw$6(*-r0G$`N7+Ie!ck-_kg;3rt62LzWVVa< z8}Gq+PKa8?`VK`5s@8U+76FI(?lCG-cQ8jBqK*rFaLfLrQ;1opJ#(2FNN0p7x_#DY zvaiW_WU3c-vadbAXQtvX(sSWIUhTI4VcCrQvL;4t&dj2&C3!5j2&lIVrulR*_bG(2 z2rL1nCKhO}Gy<3+u2%N6I}Cy(shTy@nID6K*CoKIJ-D38Z3BC`Ei(hhp*sunq_g;KrU3xOH$4gH{6?uht2u=#UPCm%N}GL z$+a+A|0M&7k!j?xj+}Lw*%M*aDai!`w2!DFC(sOz@-DNv?#w5gA5&*(R1~jZgGv}F zqxH$8vq^>}oNumZoPk~`TD*UC9#FF1n8|GN&~%>rw^)W#ff$)zLg3k>PMP;Fiy2wEgwfFICcWfv>MdJ}Va3b`QRkVR1!-2XH z8fll@{{Drd45B!-xJ^YJ;X_@|NuUbuF_%U&X{nF*m?Hz{X85j~{1 zNGz!?&b^Q&wW&u>bbu->IGPV>Y!;07xpzKrI&VLAzkIL_Oyp@*ypZaa+i;u}#Op?K zf#11#^vF&lgzLBKGr`LYHpIo6y7I)%U>7$PZCG2+Tm7fPBLkk1x9xx*JC{7JLF&!O zIES5mv`O^A$$dE()q$&y!sD`o>B?gkr$+he5waZD+wBBy3qFGbsj3@_IlZ~iBrG&m zwOvPCv~9%uJ@PMQ&!Kap>a*4Riko(y8lqTYx;LA>ZmJmF6XjMKew5%RCw?A$kfp45OaBIh=Of_jw`4J9V?R18r3NZHu$K_s zpB5KO9@UZSsJL6!%4TjKVf)|8MSECh*Y6t#OXxRxDHm9W%ekNbrzJ;Fj)cX|3OMkn zbzu;k_gJMY5F^;A@|YFW1K*WD)up>~VI&BYQ*+U>9~Kq3Rg8ZfKnSLRkm70WL)rFt zFsS0`;gsA^0qW9cuKPnQ;0Vq}=*q8sIVr^{+*DS-sB;zKsB)<|IqhFYVr-(Xp;d5M znC0}HaRZe$D^L!`dyh5;7DOn!GR0Lw|KwUF+t42Pc7;O~n>(A2yON`*la4E&YEq~92nE~wh2Xzr$a5w$RJG;9n z_b)~a`T4R>I>?^vgW{|&JB}DV3##R|o8^%${|}O3Ee&j6RD<9kJ?SRd5;O^dkM~&I zittUnPsH*(BFBe)QXlvIlo;|bAk2nASJ1zvXk}8 z^}^E mN!zN{!a`(qYeiF?1_N+khDX}@8S|u}^8wjY+y{p1L!s3tGdY+Sb4!dNd z>g6$ikA`++RCO#(pNWFZq2^KB>pQl~BkYM-H!MQ*6m@*c(HRY`D2W8safh^yiBXmR z>zbQxtpD@8mH(WD@POo4&(+I!?c5X_R^@*!@w{oKoAX|OkSnBa>;rscLW+Q-b08sZ zSgkHkl$-t-Je1un#YXQ~G@QiGY|_We{+OIeqIq~mp_2`96yN@q`G%z*8|u62zgHb4 z0)o9JkRYIaOrfM-sq;Fi92Tyvod~4v>CL5-^Re@iubK#%U5pGj-!g0ZO)(HhL!<~I z>3J*my(qE4(fzL!s7hP0oF5^!LD@LjOw{^1`#ZGBz9kht?ohf<+3!c znMl|pxqG}(teC2(@&CZTU~QgC|2xep=BoJ=GLq|~a2Aa8#lTvMK7Mr%GUPUBeQ>Aq zbNuP<1CbAs>;ELH2}G#$c%o~o$mq->UDRk)S890iIoe+oo~oE&&CQb(9>7LixSykb zL+XW6r{k>ky>~(*@|HX9?Ki}>T1{d~xI6u6W@d_986$$VC5FH6Md1|#c@!VBK{ft( zQ+OaaO(EXa6*X{0CZn$M+4Rw){2GkI^NXK%QT!pBJPrWv_wLQc|@y-}>~!(l*rI1hdie%>x#7?e=fe92UxZ@&FvOz}A2PB{T`TZH+gP-W#D&2#WC z#j87Msh`ZF-Ia%(eT~R?pjeKD?COuXw3hM5&dWZ=#fdTW9ELx?{B{@MjEoe`dau}i zJE3@j-{X0w6VI5FHI-f@RB&XfG`F+oSGkxa zX^HD@7-)mkjmI_->I+$t{n=Rt&cojNrP&v`R%Xu#>F~RwFq1Z%dCA;rY9w7i|u zYuqDQF=us+tlAnAPS8)MqIqiI&p9*YeDyq9e65$@Y>^yk%wy5+s4!|IMh)T-ePRH6bd5jtR2K5Xi z>krD06XIiEKhI@-)KeDaTT9hXSqN-JEV<4`P6ORpXl9GMif{kG=yr<40ASZbV9HI(3FPkKaHWz;2O zF_1tVq?Px9;jRudS^ppLLi&n=omDUK%Ancx8(_jfRX;WBJ=%EWxoW~!vKw8 zaIx2cTKB7TD=cDirJbUP-B5%T_=mAaShengQW}EhcsxyPdZi%4lp|OKS}KX)o*Ls) z$%c3%oX8g%^t#QpH3{oZg`hNbL*h87Gy4(X<7R;;rzLjLz@h*QLkH>i*~E%7=Ztd+-aD> zM=q?1Py=(f>whFud?v5)`R^p6RqQ1%sbsENe!5bwgHBB5N8TxT zVNCka&_i$nZljc8`gjl|HKePnRa?9c{2;1r{;kEKDibocJu^IHptQyrtg7Z^y$}?a zJ=_NSd{_H^Org>xZov5nrB_$gRg}4lSXe&AjEGm4Ml zRs_=q%snSb!H#*s1e7@NW|U{x1H6IgnnM4mcQ8+Jt4r0V@~Te_Cyy_gd}b2ZS{QPY zH=Dj>bhYit6|l(In(HQ4*4i5NWa~}2oM!NCuI1KP4z&kbcO(D9JySk3^(MbWOSvMd z8`1@1N1YcT8*ti}BI%UfmyFrk{L7w;g*Q+B9VL5^?Osi*J5;EEb>}Rx@*GncU|5>< zPjlnlIYb)}O*(Z$rXDZ|2EtLTs$2pJ_P&09|jZPV2% zI*{g19@;SES3uk4;v#^G87C%$7EG9Q|VRVYX zMTXO+a)kqptAoatsLREpEBU8(63d+>onz~)W{wrL^3BR0=Oxr@yd)@A38#|qiR?PO z;0ON3irBks;kJOXqJ(G5Rq(3nrjCH&|IWial}hGnZNpRXS8@y_Oo+;4qxl&UwDa$* zLg6cXDQ&c#_m7MX9^Gq56bYe?`S$%U96@m zBr@pSF+M2p5We&}{zK3i^1{KBx?5`8k+ev+o#B<6`VOdK#J)_^E+QmXFsIe)3goNR zle@yE(W_U?np@q?k92|h7u6spFNsFX#Hd|Y7Z4y@Vd!<288G|f z)Kx9HoDSeina|D>1={6t!nX6$&a=R6%_K|y7{X<64V9U4aJsGUJmeGu`0;-%D2%e{ zzrb~&sf%wExRh&MQTwy(Sj3sznKhbsIv`k z>}l>vpS9+$6`}Absj0DT3SY{a z5F#3SAg?<*iQY2#6Ars+qeyl#@- z=;uKdfL~|7yeQ-?gPfG>zuN%bB*k{Pt!VLii!Y$*i(oP)2V7G_AjEG~ltl4*JBT?{ z0g`gk>BT@QtgL@ALs4niZE}uj^Sh_)IE~_S|NYMst&OZWku4?tOMNzteBNd8J8hUC ztzEzSEWU5bM%x%HzA>_+OFfe@S=ZW6x;8kGV3Q^j5+HSPvb(*mKN{gXK36Izv>_sA zD*X7C{+aOn(aFa*^oFQo(L<2**^b@nO5q)+a(~h9V>i~XM zO^McB3B$CRUMoWnjZT1voWCMiXUp3_tFWM2pk!-vM7YGJ#BkA zC_-Mo#mSUjCq;++OGS^6;AVSwN0Ow=_6XtR(w)O<2 z0m_kmo+}aRlt^^rEdW0xjifSe;CbBw%L%K%mn=JrFO2~>MhOT39g(> zt>bj-21jJgc8?F{cB8<1Kca9a`C<5G529s*JTme^VR>9^!fe}GD^^f$61elC?`ze- zb(63W(`??C>vHeH1Ss7`Q0M|(m@t}hlz=z9)mXI@A+q^%mbY2evu!hu4}XWdYjLe; zRv&K^;~m9VT^-NLRQi`P5gO4ld1ON#9=3eKkbM2>#fY^vzppI*Q1W3bXP#6z=tc62 zZ!fGeOg?4JEvwk6w9Kib*W7rIlT>oa^KFVwKqxy@1Dj+A zq%AxG5ZjUhVBq@K5B%Q#x(AgliAe&!6cTh;QTURRHaBmetXeRPU+SSc2Lb`2yy5`u?wr60xr5^T zKtYF(#X0n}7#m4?;+{>vuoEy&nJKd46rJi(Vew|S3eJ~9=EJ&|M7yIG8TlgtV!>qV zg*wyK<;;p>{+?b)R0}`ao)*zC3TL&Q$>}}{o#i0YoGhkH4|awc8h(kv)CHk|$#aR-v*lGpz7hTVi2T0{r9sios)WyO zo1nZdzBvcbZdxJ@GcEPTsaUaWgi9nnJA%lgtJc@tpi!2Js1!xFag6TY%Skk=2^2Fc zf#nsNge(^g)yxvxu(MGoCdmc^aGJu=lE;m~iZYTq=;-aNE~6pDCkhS-F1&>;zZvOW z^Hbf+Mlq^AQ_vOkgJICZiO1P0Qx+vGyvU=XQpg%QLJjqjWR@%{5##3Ejk0kHU9Cav zRWBBGgw=e*+TL#cdEsgQT{t(?w0LFOwkemz8X?m`H`(ceCRbQDR30|L!uj_0(lDDn zX*E#LFxISM&zDvKF?Wd_grxVHinSwr?hS(2@o|hYk5O-Gj_j-1q!MhKppNNSq`;ea zEx?RoQr6~%Tl{Ex^*dd37j=P&6ZJPGie9!}M74C1eXRTjax3z8cRBVMxL4N#LN?P} zj0qr3W-x)XyQa9EgyK_ z+gyLkTS70=p`ug{&3(cA{r8I9Z|1I2Y)J*N#ek0%7BSo}tUj_}j=39;vWDlkamt+< zlENRGP510cimMGVZfN~X169}MQL5j878~K1nBGt#Ey5~IP)i{4i~ZRA2Ae~wVNYQ` z`bs03H%?`ZcUaW>DekwfT6`87(LN}`>1|OwHzJMs;*l?s-@e%{m@S>gQTit2S82nz z5+weQf4mmq(@zlLMo6Y8&zMx(rul1MQ^Iw}^rA)Gfu6mxnnS3>6km|)yEcZa%@A*x zR_P_p5E4XUiIW3qx#yXWbqldSP|o-t%Q@;s!N!N>{lb6n0~@vZ#-aY)Tpp=3_ospl z4d$<;&dN{d2|bl8e%SD|kjOJ`V+JK?J?$+#&S$5ZESQ3=`9!ZFJ!k!(?&zr`-1fkt zsqWXo5FqZ!^!fA9JRxV(_ozp$t^{G>P9OWx3dGUU2HZ;dN9fI3qsjJM4-Pyc(wX^X z&fN9B{+~XMhUVaN#%K5^B>(2i??pVo20_Tlr|k~=98ZuTl>p5n4G>@)_M~rS;o>cp ztvW4RK_v#Fxn+J21g3&&Zs~p8x;%kuc%Bvk^tQtN?GION+XX{Y(~@2>JOVWbf9OqR z{P!35C@A6HD}6O&tyGz^jw}cN&gDz@!IxQGvp-6ja~>Ugh#10A`Z8fe&h{H9-k*4J z!fpGk+Tn7S|FL*hZFNgGGkxy8ZB%nDsgFu0a%DS?lKP@u74RET)`zs^L>GJ&X`vDk zghvEz7-+QhZ-B}jvQxgF2c;ML$h{EmDhTG4q0R=ttM%yl^$%I2pGWzld);tus_FNERe;LDLsK2yzb+T^xw?MNv z)#8s%m@11fBm9V@A+WS*P!7aHSL+>*BJdP#O&^N*N?N)cOOm?d}6%>oMk8;7&ah; zYu}Ax2*5kQ9u5zRE;GmmfzK39alwch+)mP~Z3DpJ3)RC;*T#O&uiRjo{-qmts^c2DD3%)<7{hD_6Y$RyhS*Y9-D%b|3C@sBMY}=Uo zS8&=uwx>KAB^siKhKJ_5Snss|I*!m{J068#9!&|D?xdFOmLobb61v@neo9+yCSH8H zQtrw+_h(wNy-pH6FRs1HIj3Ph;s|G3;kmod+Z#G){;R7fgGXDV6hj@x%}_BG-e7NZ z>z3)M!fr&=G5%@l!s((ijvHf;pc3YNueX$N1jljX47@y#pA?wo*%~l{-|(_V)R|V5 z=8T-LXDVt|&WcWu8l?Wj=v8UU%@80G;}p&5bGYMnlsK9&TH^ukJ!O}Zw1RY=%zi8y zm;V6PmhWjZ9!P}_)PT`mycB+s)rkuZn2O!KbHCsgDlt{Rw$?;{HQIxU?Bge!{h-K! z!d&h)dN}AFs~%4H7yXa+^-i&hSyAsyik&m;1Jy4*FD*Z<9P=Q`j48IptVDx`ULsGu zH~~aJtj6_wnU}A3D<+HnO0}Gnvior;{Ch+|_Iz^8fraB8egvBB4Z#Q=PK3+WqT1wq z6D>y)JksC=)xt%HatNoL6YQFHUT7r82+~kb%sXgU*#U#8qpPFw%9rj{Z>`L$vXm|3 z^*-7T-oAdfzEZW7mz(FDE%@w`tm*|h6KlC}75xNV|3Z%0P`eIXDnj&P01{WDdBT$caj@qt3~pB@;)l zHfs+gZbu}Q%Kn%Zhb8J`^DF~wFIODz&Q#Ta0W|B)g;Te1r`X>U)%Cejk1OHzRHpa8 zT^Tk=kB+V9-SBR4w~A9;H2DYi36Q+SqBRhM?&<93%HX0$urob4t@lpXal7^V?Y-RT zQMa*M^q=QmS+@uQg1dQvz0ZjN0^fDW$Vz3%X>us44R`|1O6N;28&mJTciisq7Le1* zZjbxXot*zOVYWH8w}PMNRb?w|CY{41LqM2URM1TNwLS_tQaeZK7D@Kn>d@qY?6^=@ z)}XJq4CwY5Yr$?lzBI;?@y@Nuj*lmo*Hdr*hSc5enT<`+?TakB+xU~qbC(g?K1vp7 z8XS(fT~BvVZki470&lgme%STHsBSW1v&G3Yu{>;InH!wp)Hy}ZKrs8bC2@#2wjS#& zb(FgG*rI+Q2tMpnQ=vZ#iN3?nqufQR{d7@~N-YTl(pV9)A0-n3ZhE|0y~T zf3~}a4g2-!qLWg)+S+2(UZu1~f*=TDwKap-dv>6$Eriyr5fKqHu}AHSRl7p$Q6pw+ z)aaY{e@M>fd(M5|*QEyS?wah7rF#AmKGT;Wdu29OH<~^=glxVxwH{a-+V9SU$s~FF zEL96oDUohj|8N#!Ne5+ldBdIO$p?($fKf+RH^PTh0PjP|2MAa~9oDC=a3q^< zVz@+E1s+5~VoOp&Yhy;I0P+G`8*)4L(_Zfnzr>u89);nFZ_@-L7UK6`q>mz0eS2cV zOFGXwex!KXnzpy-Oy@GjASb+F>#i*zmkmI`S&^_QUeOfCH%+k!5xIMzqjm0EU3LHY zEgGgmsHw<~S?oVIEu>1CiMLd3Ws(j3#WD@lz_+H@?&~D4VSti|_6{A5Bd(-G^cq8v zts<25@)z9lr?tWgPkDtk0s7O>KUJgp+zmJv?YoZTxUKzA>b-8crZ&~H3gL&({qAzQ zzZ7JplNRp1Y5D@~CMRMuh(K#IrMO6q7lUl?#UTkW@W9lRMI^s5y~V7EQLqU{8I70QE%c|CvJHF$ws&i?UeE;$l3&{f*>U^f2 zq~rlQ@H$plf}4G_d%R?%8A2if0SdIR)@s-vxzf-QFGE&+AAQi@6Dgg=%49FgUGXO( zL<7-qFLH6o^47#QNkfF#-zL~Y_<^*{#|M)iEG298} zs>Z$RURqb-b{-sLOqb(fnrwtd@(TF`^0XVgQ{z-~HAt|n6~Nx<=82tUKBmrR-#ZLY zrQ6%aE!|<&#-Sm=a=&S_-Lm4d*0?8UcaVE-2cj`t!WwB; zgTeuH`=#QhuvEapFGD;BLHH$hP`uE!BYQB*1Z5kNA$^o+eV*yzH0o!|9C&9jhju)i z=c};9^6&&cIK5qSU+Qyw?#EDxK>nP$P8*iVVd^&Gk0oa;s)p$~Tw1H6zu`}nTjH%$ zkRQK9=^{Xo-Xuf!=VJXD zx1A9wC|Xv-(7c4yYmC-n%IJ7yQX&K@+%UyK+%pRPw9UEy6co}i><6~l)xS)A=flXh z@5Cnj&Eea_Fg~~Z^`W@}ft3e)h%>KX@AZ)GN#w}U_{FouNzr-o#I6fz(;>XU(rMzb z0jQWux1&F$au;ak{WUb9XM6Ddxm5{xuXk|%4!4ey_X=vpz8*_D0!x@I9)`R0;v3{# z>NEU`%Ph*5Ag5Bnvqte$xS#cd+6_rb@BS!HMMs^(D93B>n%o`;V! zS>5g*o#kq6w2ao>=^Cwdo=0V6=J6k=%>=JD6o6%TxioFVag%p6aV4$`hw(1uVs4Fp zbWKb;%XAisZ6v{eTr7m4*pjB%@-#WZtE%dd94RUTSHBp&n#iXQ+ezAO2@@(zm0F$A zN%I2&Yv0&R!@DCb(;h?oTwvZn9}8LZPNDtZE^7d6i_H8>gYj@bUD<3U#%ArvuQshG ziq@F|Tqs)wuB&*>58d5Jwxv8T?kS-+V!G~LT0Z{zi)I5K{6Vgh*Nt>j#U`Zn@v?0A z!9ush4YT*ZRtUT*Pj4biE5?dRg(YC$qBR?ou8A20D?AqYdS`cf;m1YjUI=f3c8_c& zA!6A!_tmRdj4WDV5k7qj7C(w0Z7_lK<=H9iq@6X}Y2HKFUd1^&)Ho~;?m2yI+$H9^ z7$}=L8IO3Bw#P8T{_ubdb#~8(i^+_~8)|#e847s+rBJ0Jxq6qCU zi8Ts<#5?F_jMz4~Y)lxPsh#J9N-x|)EK1z9ifA_~v!HiJh;P3%-*R)hbzo}_U$wAH zPKt_NWJeW3V44g+SbPQ$9^i)y^%iZFX8BJ2TpKvv zlp8>+@DKvcTTlG7z~Th%<{rVSgfgp|7F_-2;WU48_wqaEBdKb-SC&Brf-e=q32#yI}{=~O=N%2}F-Cq-FxPl53*f*txmz|ZgA=KF7%lGAp*SvMzDMtiKUNyc_v=km zfV^rXO^DQ09X_dm@4qJyk+|y%6+R#^=)sVwNJ`^T(QkdRr7MnqEjGe#aZO%}IUg4( zVbncJDb6w}EBDXF`~N=ibDnIvA)@t0G?}~PQuqebHAzj*2X@Z;`q|$VKHs296EahINPEyM5M= z&u1;3mirZbz_ZOAnL3t@corYR$bb=;1YmaikS|*Cx+(lxRzWb3>FsK{cH<|XchdWm zpKr8)FaIZ~G!{dfT>YbK=+vGmfLWTrLkJjw2HgHYGi~(?*FanGVb}rf0jBU~>2UXN*AdgP>0}>*mr?AuE-mEY=Z%?O zZ|VnYX3nOdqSED25YLVApQ~9Ecsoi#=m$n{%lWwuMsQEJbS2DsyKEFz@LTOrX}1vO zj#^Y>?XOES({(OG$Ah$zN^*$`d?&~uzC1Cv-Aitiw-r~;dpfLY6u5AV3B|2J37u$Y zumok~eQ24-m;HJYqE{v(*m{bmY&Y7bBIrdW<54Ah^kYEAlkh(r@aZ(*bb4m)tjmZy ziJW^S{Kr4K`+p>u&b0SbVEWTAi)lUIVLwj#wS7EqSBEn7QeZ|9`qbWQInSPN_xc&8 zOXY|)Zc*f?2pbCcQgZCqtFO6&vRc`&%Gxe{k|{4+y?p=IvdrPoh>x-O2^%amfd6$eYXUZU`BHm%xC2Arz}iTIhR_aK#XV=))<_Djk|eQyRfEO6s}v}Ez7jwLDy-}vF4fb9(c&+ z`kdq5tyKT*?L3%eCL7{~+@$!8D|L6PIF+kAV`9Fz?VZ%dPgygJ_B}COTzk&WP$xXG zf@sG-fTda=x#(u}{-fg`Ph?G42Q&5_G>I*kiqyHi$p4LH>s9i_;4|R09>II@vq zTnsvjqR|R^@h8NQqy37{-|Zwny;>|5?E907)E^t^a}c~dQ*Rdn`1>dgC!Q^39bZM! zVSf}QmE6mA8F*QLD8-HD6$RD-P8Y%S|E-#bn(DO>yu5QyHBSmNp`f9~*d|M(@Qo?w zk(Psm_R(_9AK9`Z)v+e!%olip(jqF(8!nTblj-ifA(!?ys@k@Df8{2oi?}fUIy|VDcGZLw!DR zw?b>e2Tjh49-p1h{HhsW9If&R@DHeJ)O~^Ovckrld=_u(k1U}|5rUWuE=TN>wpl2L zvEes=@wwT%myiBZ9M0t>6ac!Z7ADXsnd}UI7od+oiox?fG*se%bPRb@`3f?WQ03Gc<|UpIk8; zME;>sTE@76ll^jf7(MPP9-5UwD8I(dms`>pJ6Y7AtSrs5RW*C>W~iIt0K4_!4~f|X z|IgXgZR6CheODbBv);I-OOjBbVmgpiSHmpChawCc31@Rqv=hMNL?{md)C`+v4I!g| z`}>O}{Pa-W*%g<8qKmNM zC{En0yTdbbgT&UD(y4XX)a#DSR43kxDbGP0E$$KYjf zjJvBK4tBtg(fv+-imIC()?9t$tChtW`6l_xqmSNI10rkG0EX6v=a0GU*M7F!2Qr{I zqq&ugT*(u7mzvs!dOLX%ifrTsI@+4*Gh;M5FwNRtrh)-fOa1cv7+O6gV|MRmr5oQ@ z^C=Sz($D=boC35pZjXgcP$TMBfbpp>lnGk63{Wj8j3gvJTk9AhdwC zb2YehZQry^%I~cRr#=8)VhPjnDL+lCwr-DE2!GQ-v#*bNPnQe%s-;Kyk@Jqy9buT> z(wi*d*SyqUAQ^a9x9mEQU*z7ZejT3c>&`Yw?S2e77wfrpcfm*LXRsf(YYFR9a=U<# zzFkZTA+e=N=3F_Wb_;I=30@hg1J`>&eHQpVKv(uFBHg5$~p?AH_+D zqYZCMUGcG7q2@udc(*DDuWmHj7-wOw&!uP&0BSudkn6SMYs?hA#+=ggg6ZmRl_`Q3G=r8D5x?Sy&_yZ5|x!< z6bWs@5k_bw0*l@=kt6F1aX)N316pfAE5pSTx|;ohlGZpo87v!OVRf##EA!gm^06r@ zM)$#cw31Tjc0!FOyE`H&g2_|DZMR6z{l7f5`W3T0)JuMPMPqYOK9?}sHb|&T*xFWG zEJIg!_Q>h`AQ&H91#G8%!>UjHs?Ut`vt~)xl|Az73Eg{}8nehp$_o0pn|z?aeq~Es z@%9^@Y6VeG=KpQB81P#6*1~xz|#Eqrk=E?;Zxr9*Rrxg z3mE>OWU!-gg_*|>Q&2!#r zWXP)Dd)R3x=_q!qOl>9e8e$?KYumeo>$lAApyaB%n)!QLJm5d(P+q+`AVhsSW8Lt} zhg51O&n^!0K7tSF;@oG`h_!Hm+G)oRwvx|*IdBT(-V(J|$P~kv5~;(wqNzSR+`M1dGasR@5lt`38!%1#XYQ}0xSLjtU|>H(bq@n$RR7TT z*39^=yeIFaPazuD8(9>`I|lQ?zc)173;i1!5&P%pae4n5n}|~X19h*PW_NX2#^j&y zRSet%OwUYLKw~_=TWEgP;J6!ENK&_Y->s4m>q$eW&~WIZQ`X8tE%BH=-`cO>f|8}{ z;xMlf#&N#vaxv5CkQ#E$WKE&%t^v&y*8#hj>rCS(%uVrs`Ft?+PL)6DSfR~bPV-EW z&O`ZkS?yxWChCeTwH$%{woPu-E4~j31FHXFfJC zi(P1?UYlnL$&H%3j~9!p4ff$tENhZj%nU>&epF#B6Fqod0+)Ycb)LM+dgvt+>xBqm z5Zfkun3qj@;Q#)k`v$GgRf=7wIaelz`u5Ld)KpdPhnkKPsdk+a4B;Yyo@Y;wH+N57 z5%-4PmRSwJz1$Wcb6vA{S|#{`ci#G~-4f3XVy-fH-8oIUlXfFECK7p0c|i^)4im?n zvq#rg$~6`j2?zycxU0-xnX?+=)=nNZCR)nyyn|@+gdL)~%=A5o?H^rwP{Qr&+zLvd zAK+}q6)iKbV${jKSuYroyB>L58)8+2)&hB<@a`57O8y2f$eWHeF6ZKRgc9V$Bq(C( zFDp|YI;0@~_qq6d>!i~w^rU@XBTFcJKa|MV`r&dJCX9JbSB&b~yIwFBgIsl&OstOF zS}pKj6C7@|)^<#b{e9MaJYEL>Ti)5qya98ooYVI4adooa1#u{v>5pvrP8U-J49&J? z!%9bHY=i*<<^cQn28@tA6lXJ;J`;y@iHUIW3hv9;NfWbhp4j-q)|~-?D?ZIT76v|b zC+_=O8^{pM7`AtAsARJBiK;q%esedLA>s<*x$upGCrV{q27KRP4(924?ax+UDEYE@FOQxL#NUUW}iaEmOO5(PjEc@ zK~(mid^9Thm5{Ken-duIJ75p?5u&rT6a#2h66@xnkOunR+Wt51!M#*pY2x~EIt$wDNP^|IowZ8s!GYmWb z^~Ul4GXR_of22EYVe=fI%kIIihgf?eL^~mOzlg6^z=6GQ4vt-d;J^oGv7{>GY8M4#0s|CK0xfFQ(+Mi8lv6c$IGVDzV~yP|QLUx;`!J!d^BplEr6^p#%} z_ueG;`wo{y{XK8H6jzGw&><>HUcZ~DNU|aSRre-QEuKP# z@i2X!S8uSE*WTxehqPm)vX#mpkq?oFkQk^@imlUjEx4+qTh9B6zUBk&!J9~g<3RZh z?$I|llWlmtTs&qMf=pCOK8+xEYFXwQ+`OYd&w`qg?zmBZW$X65=fQm%T# z%u~nD`SCSBDrGXQ8z4idv9KBH*V1~$5PiUHa$GMi&D}LMcu$}=Psxa8HSC%+^K*U) z0XGNftAf1ZJm4-TGj^`Ih4xvj8mfae;w89`7;%^1FBgm3Gmjng>(pEw+?{8sN0q16 zd%Rr_xXx2sopcd0wm^Prbi5O03Mli=TH9oNxkks`sSdCr)6jopxsp{StfN=NFXH-l z=iaA21+@>9P*a_b|59J(ff9+6(_oas$U7`^3RbBqpok_BoykTvoc4c<@MSfVWA_?wU`Z z$_Tw?zxxy)-NG|SM4Z>>Gum6;pTCuUB6cFsax-$haCc!*hCZdPOB1axx1E*_61RQp zNJF!mpH1X@`veZU&^UR*f{OLE=_@A(evEwPP4tLs{-&VGhS#_>>?9m@|;ZTOWqHaDHw z4p{t07p0E1Q6&uxNjL~H$j@>L%_j0=2t@toa3(8ayDgM9m$xs85jYE4N zxrFPW&!vMapXgRU2%Yl}+?$HE3BBz4=7(fx`zZtME&g(QYkz*DI|25>8>p zo>^J=)o|6$7=~!%Lb6G|?DxkWmG3|1T>6?;i>j+j5>CpC^^RO^O>$ijw!@AY#r&np zT$C<1_X+x=2bw3aUDKJ?Mkf!v+KlrODVjt*P@x~q|7nN9a37`k^(+N4rw6KX{ zGk0s2#(oVw%2oy;6luZHj>$>c^t3f%(rzrA{n&fbLLcsTeL1cFThjLdf{YpD?r5)c zQfN(#iY)e{%(J^C=5m0)_u5rC+Sif>ZKN_i6UWyVHXvScaO23aB}gh6HDlJ}3M4ue zKu`4cjI!YEjmzL{ph+>F$_tTSiSc*uMLW34;{Vil2i7iJVDhX+KqABvNDKJB2`^OjJQXT7Ws)4(uiXbXbs+wODRh40!$-eZrdy2rvZ>}L%C^E#s*8V zt)ix-l*5J)Wh$;d09+G&)sCYgGki1fjH*#A+`A-Q%#H@DP?=2D#Ws-3-EdHy87pDs!mfE9y9mPzeUQQHG<}E zbZd+(XD{6IVjGJ!$*(9=9h}|56rznS5BQsjMh#UH1M3kSk*SptRI4B5{#pF_CMUMd zz^7b62r;>%;G$RcW=?m@mY+dHlT7*}mKG_%ZwR?Zas5Aas`quK-*61aq2zDsCRTej zYh@6)2`kJ+7L0`-c=bx6ZSmKUJD88p&-l1*C`+M47{==IdcTcyU))3)l(fTG})y>obD#AW>hM15`YtN$o==-XsM>B=0r`P={%{l@}r`luK1j6Rq)_Da&8quiR`n^x*u@}4yDRD< z?!da<5EvMOi0JF`O}CUQO(aWaMmSO^5rj6rzq1=u<-cP1nzfbjpQ!?f?nQINTz~XZ z>Eg2|v0d!MR6f#{^ZT(tE|tji4v7 zhrm$z=J7NNcMC!$JS*@Le_~t9ohQ*RR38kJH`x#J)G-~0@WflyhDp12hTVQ@P0wyy z9)%|OmAsTR@?E;v(T7byz!?MwJd!xxAXqS!D<6mbPyjWG$s*|Y>7GJ~hSgTX#t46C z@Orr=Uo@A4*Tb8J>V&!$Z~t%a`7QXYWPd;WY}ZG(vHZU|ktgvMeYcF17;B}|(sK3< zVU(gt5wqFJn%Dn^F&9Z-VUr*X7H|O(O^2e$UxxSGcU#LJ^b{?%E~WOunavycoE@GvBCCzwp0#vQ=icM#f` z8G*;MHs;@7_j)-;O!ToUi1}La5VP1P#j2$D$Mw4v0!3xB`O1Zr1*x*3iKjK|2<6|f zvD&JbqTK4>@d%f{IAzOi*P`-<(64W1VcpEpB0g@FPX@4Y%RH4&ddO3%-cw8;Cm&a| zdAGVux5&zkQ@&Dil?sWqV&@cCZ8K|$Wbq7qbj7yO<0uhdUQOI;{5A3SF2VTjo14}N z*HeXJ%zFh^?Av;N^6C+!SDq;w-B6r1r3z9p==`y#sYrJa^jM-5;6hbB@@T{}Naukd zDSoh22cU$Xu>nx#ckC||WukFIRcGl7yZN@>yOBPWn9Ju&mT7JT@9rr}VLA&w>jGC^ zM;s$m5)0IZ?c25#5#M=~)FLfwX)xO#?eU6Q!laGtIo=4CQ+~fd40?QWUY3TY25@v==RJ2)+kR%EnsI^*w7qt>nkH1BF#2^|=_er1U=< z)=-nv9~u|tuh(81Fv5ZV(J{lHu3bG!(Z__)1f5nUqb~0E{lxNvgVqt2`_S6&f1NJq zt?`?z5d>E1luSc+r5C{BqL0C$v9&Q{g%T>Zrw3e9L8hN-(3u({S+0(Kr-OQ+#*Ru+ z_#0t3eiAyo%GIX%kD_J9d#}cnV@lbW`;Ldc#KDhqz;W-XfwL_`_=8Zpy}>VD*igN( zmaFhIrSim3`guff_gYuRQ{wOY4Ow0@uo;^Yi@Er#K`PHC0;pHIx=|i{6WCQIukj@>^XH_ zFcDk#mLC9iJw8%V2-#bz2i6Trep}yhhmGfQi`<|UtxrNTyJG#bVOi5(&Awcg2DWh5 zvbX2Eq$NOtNn+OBgVdtgjah5)ngXMJ@O|UL^zL!00GVKmDnkNi2T!xx_Q3U6nPKa| z51r}BDsH&jXsinpU)ujX@m!GpO&M_Kd69u=-}2hBQ5sqsWz(xPyn1Mu-VriwR+AiH zX))WEcee^c+kmx3=9JiYulo|MCGfL-43atUgUYom{CDrm597|`@4mC=a4l1{pMklZ ztlXuRffB%8rqd=SbG0i7DEOR{EZu!%d>uuCv+|3{V?i=B+k^e@@B_-$>AKzZ_KX(n zK<~i;f4IX1AEiO!`RYWZh=D^08?t*_{+)fq?DhFv?)jS6G>}v8%pifpZ{Yy z>(TOV8;pWMybIVza~|O3J)B@n#u&iwEWT6>JzsX(rg1v+MdfqG=XbMG7mUDCp;hlw zx$M&>gMX!W9tIFwvd>e(#rx*7oi1orqS*2m4c4P6^NpEEEcbTeC$_-wZHTJ10j>FI z1`iwzpLCfRVGp?4b2Jyt<*J>a;DX}P1VwCKHPcei^HU_`ywYMm@jNCy0SdB1z$`(2 zQ7+!AEy#%elWj{?j)81N33$q?EWfDii>&*%ef&`m;DEU=r=SQ*N=)@Tts|=NE;#Hz zll1Njw#uBPj@nW8rWzte86E)Xj(upM(mm@w*B=s_99cEnn+mxVp?JKvkfwYi2HzDb z8=bm8CqR@{}5?T~0Ru)t|C@XAKNJ)jn2H?a@${k9o!2@7;dy{5rxoht7R1FYRn5|@5 zZPm*1F8VQgu2I8p-8kM>&2bs2?<=3r+5P)g{pat!Y;9jAqwC+Aze#`cHWtU5C|1oX6_jnL4k18H(2ZL@LC8dN8 z-U5i|Z{$ih=QKDU2K)`ZYRmxboQT0{0Tm44MdeK{lb}`w(B;Ni- zs7kcXVOeP7d!gR@F$RCd>P}Wu-)N0_E9@~Qs4=W7d7H;nuHc20L$2Zn_)9=O{$}Jp zOPiiN6;UTa&GJL%GUpCU<>|Ehur6aL=ycA1P>-yO;2rYkzR$a=e$SpXB6mrzW4n2| z>AKik;mb~<%x`o1_bj|gI1z;e$1!9PW^d6!*c#|(1k)Vcbf@wT;lPqeRA4cByFI0G zb=BIA8@A(z2+mbL(_vL=jiG+MAzJR?%0i&QMzWEMtH5mhD^sh1Vm)q%#k0r!FH6*~ zx&Me;V1bnK!-znk1xeaVvo}IZOcUTer*n?=aLj1kQDuK6sFH(zfkcH`t%;QDK+qs& zY%x|Xz#yy`(?8ow;UUcJ8VpTM@I>0&9t)QWTmvH{I+a#pyAV#;bX~k4D0aN-$*pu`|(2={%PCc$xH#Bj`V>M?ct1L9)x3R@`TLTAKj2I4|9Gsxpp3wyyH|nVs3cOd$4MM;jm=D{#>z>Mm%Su zCl%cTl>Vb5G-t&6^b3Ou!+Kl?*=T-wpA~mY`77?FCe86m3Rbc&vad^c80dlvtXj5+ zYjL7uX;omWiQ($RUAf*SiGsfS>+D}0=6FbsKD?hGY<>Sjc$+?J2w*G)#gIu#n3Y@kj&<+T`>jJNn$eI!uabMq9V8q|r+GnH;M`99 zliR3)5615#33rJXkfvdGJ6ZlSZ&Ve-&u=7{W&HQis;cFi$Eg}A%dQWQ;VOg z9&1qjx*iZ9kQiVW#`Uehqb3L+Md>t(be>n|f>>AE_Xz14*v-M2=N~s<1cVEdG6T9dhGY~NBh1RO)>mvzKtgP;H$d#eaX~d zHi!83?Znj!{Y9&sBGa6u{Zf6QAK9Xs+UaKTOAJ3H;A*e88x*v}RY`duAgM3QCPsG@`zKJ;=g@R zTEu=}mR2*kb(`+^=8mZOXHwHEw#oQ$XPFe5!h+>;uBZ#&)`{(o44fihWBplJ!hXeN zxV9QKvQ`DNb)M6;o%kzrezah&^IHt0&QQ8|mM2Ae;#Q&QP8!j=Ek1uGcB(2`OyK7n zrn1W(Bvycc5SQO$qT4HE=)t1v9eqV&ge%`9etFs-2EV_ZU6#|65SaUI z&$_AVm(htUyO(T}n|kuJm{@aZS&#ISJ_^`eo8w){d~)kSxX|u4TQRiL^Y>B|GF??5 zk{EAo=^nQ_W5>TEWZV#!qVIyL!t%24@7b89rTVZ(1>*N<0NJka3Y_Y#v1tgy+ub>Eya@_u=Ub)yLlr9oFsVsA717N24A z+T@AC6PLShbRQ`Ts=uvk89nqdg1_7YJwf=q!cofoer4IGH|rDkTd)=xi;_Rx!g)4+ z7RzN*gg2ULrZ4$n3K1i3>1>#Nxuo~;ryCzU|I75vV!5On>%{fQaM}a$or^X3e-AlM z$f>Rl$2q`SrF(E7Y-7M$eoto9Eb-WFPJAxQ@x;`P#R5`VAPc71eG+BK#1&B3YqI;c zJK0+L>MxYR^i zM4BcdCfw%Y2s(B+H}ziAGB>V;iPLeQaFQICK%ZpU%R=LCwKiMNwFJ?2;dD9`8vUjL zbovcr*s+8McjKLFFNTdU{zSyc90e?*3$H16#@{KQcjMc1`V884&lOX7vHQCOFo^Rl z9DO%_Ce`3Rc?>P7P5XNE=|Npy&qb8*-n8?ZnC6P?g#n}pGc=? zGqBEt#0w4VL30EHmmZEcXEb`nO%s>IBpPXv#{Uw#jSD{DjM-t#yCO_DQ9W`@QGP7~ zC$U>Zbp`wy8nwNQGN2E1`|1!c6DHqhegPlP76VxD*EI~^U;6L&mIyAg zZ`Yh1f)e>%K@eVCnn0OD;#@`o$VM4Rs5=#4b+Tb_=ab1^Wl5z>NteMLp}91Z}=-Fwe=jXfNf@ zCPkTr-Sg0P^38Q}F_@|uS<92(A@5A}QUK%~-CDoq2J!fl;#f zA(7ZjZK32?KTaIX&XBn*RT!IoJA9>UB*8x8`9Hb`H6`qZlA^3vP{RdmHqFrbOfX~| zR6sQ#iJk7)X9hQ4qZf&X=A@3-zeY9Zo9Rv!ri-*t(L@xr)T{CBYL$vd%8K@WWB1TI zL%%x_p4Z`QtIGDuKqw~wNXYVH!}yLQaNb0dmM1%uK3SBgG+Hh;_&3%U+8N)280cu+ z$T0Rd#26U(HM1c7VPYP?6qwpjAJQKeC%Tndn6e>jjv)Vid6>>#(`el-@KABtooKpv z53gy-dgEX;rmA>x8v_!vkYyhGn%+bNHjfpLbu{=r;#)Uqt;Q8Z$4jW10X7QDcEU_| zXiE__I8O}El@`(P$?!|ZfIOMpdo53Xo?WRL4fVm1)#anZIh@1q?|z8Sn^bvTT+sCH zpv$mtF&=PncR`^a`Eiro)RFz>e{>6F;BmeU z<3wKFx!AcE^@WGW_>c>sKOR4~FNO|1&ao1uT!L>u-Dr}*rR84z$JAQOr$%yGLmYM8*+7{kh}fX~p?_;jdGn$F zCVt|SYc!4rP*iVnA?7|m5x=!vh#ZEmVOMi*4I@-JLUoQuPvtB(4$1iRZ#&!@!4lEs z_&Ec-jI z4|ONNA%%^17==?9cDQZS%rL+dK&UZzG40>jXrw;}P0pfOKp|*-3_wc;*_73q-DLxW zZBGkrY?bvE#l?ZJN>Wcyx-3Du#XZxH*dJao`r-!u@rvDanUQ(pIY)E6CI^f4EJvZG z3H45p5f&g3KKt8#^eCG+GU$uB4cBnNE2x6@-h)j_1jF2>jjDk%z8z#X~lk6KkM|=~m_4BjapjIg5us(0Lg-Vz4+| zF2>6beG-4-BJTh(Yx#7F=PTXH2$*~wqNh_ZPmfJp!pSHZ$&Nf6!-nuxRkWNSb4ZRa%>s*0S&Vn=ZD1WoK~%z`jh<| zs)C6dp#zuker)kS0o~U{FupET_j>tO5lU9KzAb-idl&T|%h{BcZ$)a+8jIP@X`jex z7qN&wlK+Ib$Uw*htY_iJpOTmB<0+Br-8rhMmfqMxFO$3`5dl0kg@}X|&6x(uazFZ` z8wi;_L`ay8ti^=gGmDBDK+nBsxAe<+Svuq({g%u7~e@7S6sro?y3yq1{mhB;kdxsvf(WGrjG1w|TH9kc*KSOwugQW+cSI?PHWTr{QH{Bes3j zb9WSSqb2uy7KMzu7T|puEz%O@N~G8nkTjkn_1Ei1SAY9GO{{(o2f=%7$9q+D=RFuj z`aY})LjoHhXaj-4T^TzrH@6wAy2$6I`;YyPDD0+(BSzjB`eIds0?Z%8vpfc+d+()1m{WplC5#r9|0U7yuGIatQP{sT(l%D9OnsXj)Op6s^ z0hnwv>%xUmo_mr~b@A#}v@t$0@u8%lPD{O zbs2@a1F?fo+Kf|6OMo=EN|UkIyA<$Yb?~NR0`TSLYT!qseA+!Fi^dl_g11YjOGxK5 z;eFr$xoo8NFV=5rKb_igZwW@wma=@Kf2{qlAvZeorA{*Z)33kfi)PDfie|$!M}E>@ zMT;-csr_2(*Yx^3^xy6STjY4hlGm8<8rO5EQMSwy)l)%e%m@L&2$6mA>$7k`n1s26 zpY&ht=wfa9^p^?|LWQ)iL=ca4H%Katb6S%hO57gT4Dt5iTiz~Ai`(^>zIM1WDljUW zNLza`_@6-9$<`N@j(e(K&}1vEPoj*JE-zji_VFBrHS*l+&s<9L41Zgm?g9SS{#jJZ z?0xATm$8WS*BtJVY!w#Z=xV&x^R?mj)Ey8qHdh(~hpmyj(^v&!O)Kwko3UJTN%9JB zFNg)}tLmtCfi4DBNczI%ArU?84}$oTe>U~E*-KZNeqOGO*?0y#)!NCJIN15_U3!-F zkM6P3Xpb2-F|H)c-Bi$$JLF&-uLv?N>2jq$oLQa@#!#FCQA@^mAQ11hxN-$(`0udH z0Qggsu4SelZrx`?;=^uX4(sUh!+aei->CsgrAQHd-uacq5>l_`mh3N+6zhLeeIV>U z14>kj^A_ZmriPUF`+z7##gLJrTJOwQLO2^y?CH{8iy(&G$-MVDB{r4YmEzqu)mDh4 z^aA-qU;~17C07+=6*MJFkhq5?3D56ePp;6S$UVN6&em3!5)ENnDl&uc}+NB+^3r&ReP16)rKPQ=`qxr%>uo%csn zyn^O8H^1D@cd*puLyf`nTF!7)N6HVK9>>j>4Q|xbbsps$?9erJbPn+WxO`yVa zdQH3iEfok*OFGrHn=zPVH5w0eo|DPSN!Q-wVvSARZyJ4+XJo+hq2LeMR580?C;X54 z#v*oB8igVvhY5iaXUuBttUUi+C_3BT-J%NGUJBKDw=vY&eQzz(;O-P@)ZArZ&PCmi zAKlRvaXqQ@N0Hu(_Ck-v+ol)QFC|Y<45~x2Z3n{!>B-=GG1x2OCMWe+EKpb=byOFq zywdggO5(Sd2QybHSt?Q|EHZwqxUh(5iIj?f>D4H;R2IcDOTyv^kpBR2pjCnY)2L-? zJQ(9Fxm%p__GwjOtIK?1&2%#1lKIUy1`8&OmAH-Z0=Cx=M=*l<_&$O?WjYnHJylZ^ zlAE^R*)q{AAC(daB0|zGChrIlmb1#{L=eCJRDm`zKWuN7S_NuM_?a&@X23CayeWKM zgQQ044|}Wj>4+b+mjvnJ6OA{m6FICa7aftizS#<+I4E9E1FTYUl=^x_9>E#MLTRCC z8HZfL?0Cd=wS3nhn0^#mNd2jGIb6%&OH0k{-xkt5W2^#8GGmNRU-W0fXQ!BJ>=ZwN zMRx(akB^-UpKboN;^j#8t=I=;7?3B^20Z%0PJGivZK|s*#rQ+Dkey{cxS4w}J+$klijfQ_GNc2Oos7~{X(C>=kk z!f#jF?)ZgnOil_v=5AMu_$CyiW5(&0aLE#6BALW`lkL5&+Gl%3e>emc3cWA0sR3f% zOU=)NGNk}rBZU^j2nzgVNE{;Ov#O;B*5yy&0Ll=;H%2v!#beuc{)eA zAh4HE04Xqwvu?RcbtE?;a^hW~ag{QVcwOPwLWES?^QV{xg8{TN*+5@rk#@iYv5FwS z>jE!VrQGx;Jez;t7PBg;VXbjhoOdp%UtQG!=2B?GL9kP7)M8<3#D!QW0_50Z4Q}QgqiphFf%h^=6oop zGKXSDjycQuR1P_OfBXHl|Ms{a_v3!t_w~N6>-BuP4PiUfw5rw$kC_PQ=$>b5K@%;; zBES16o?mHtAhvScxGeIndz~xp$G_1Xm5s`b#Du@LS4~8SW$*sf*F1BbmAz5du(f6R zXf(iAVK=kV{+qa@z}=c$ZF4X#WyT-`1PV1lWCYl3AvLJf7uB{!fj%im7_r!HFFeuY z((eNY+3-v!zXEoOirn4>BuFv7suN zW?^h_2ybt?F};__Z}s14d0o@G$H6O(S`syn zJh%REdN!e?*?%giMd+%9X;T1K{WHlI22=`0`rmQx*pCFhN?Y$S$QR_^mQ0p9>|84 zcf`F|G*A1gpwxA$q&Bl(*8=4FzE3Dy#hMp~y%AJ6TrlD(@qui{{YeMec5b5W(dSnj zbM6IBE32!rjIAvEI(=n!6iZF58f$V3qzCCaq``Ipig0PISQBqOE@Dpr!lJ^u)9+z< zt!DW1&W0(8=lS0lw~HU$Fe++)O@Djpn~D*ThljnH6hpnR?X9NeVIVWXjF@5hpwQ0$ z_8ky8G}Bi5j3*6Fk?miqwR~{9cNYpi^;&mL%m*Ome#D;(hZS4}@nnr&a<{)N9OCL# z34S&GZ`9RNAW!sD>5zy%utB=nFl5b;60>P-11GfN5SWPRhHx^A7IOh!)cF&8IG0tB|xV7|`$_w9-k^ zX=9LVW&_8wRM@QO3ykA=;9KUBEsiw4Vmw$Jp~0D z>eH;!1;iR)>OC(M?;G4q9lIQ-5{H!*Gz7*ygyX_mxsI>?)09}tFUBYDW>%5Ug9Bq2 z86dR(B#vZwwXbe&8Uhz%kZ+%(uq_nEYULW7DQfssCJGWnb&JOKl zkzqa*1WUF@rejq9!qgLE1HMXxm1;c!N~(O*I#rOXpVMs9u)3~V>)b!wqJq`esLZga zr#;$?ea0y^Ry1-!Ia}tzq*K9*`2~~oM6P+mSK;?gN>#dB#O2KyT{eQdIA%60-9dQ6 z`v2WDBd;i(nTh^vZ!0gsHr`hPrd40d47S&BXfdVccPl+uXJ#Br+W3M`QXm7L)PZ^@P@ma8m&XuuMJJrscTrIYFq)? z`AOwa?*|Z3UqW1Wm~F%rMf}v(nv&hH+%Qd6tM($E)3ZzoeRVP~rxJ$Q#SZHlR6zb; zUepqY0rh5@zWrNzd`)%EpPoT8&I@5r?QTx$oeSi7B&_kKL678$^nK?`b`i3q1Kyw3 z5Ex3nGl4=%Th!KNfJ$u@YVpU;i%d%Q+}f1qmi2ez9yZ}T>o4ztMn&*a65hrQXYSe# zvgt!M+C+bc&M}WynFP|{dz@QTh?vZPL+IIRR zA8&GZ#m$s1`8WZuY!zc!8)-{yN{PoM4khtgJg97(k^HU_Y>ujgXkf5tg>`>w-jJCq z^DXCJPbPfvi|o^y;a=W)T1vIMh)w=(Eq=&2kN@T)Nv}HBf@s58ht{qWo3%o3E_68y zLQ3xackkN3(vee3yp@r_>4S`lT?bPGx2!s-tU9#kZXD%FIGZuss{NxVImM=es9PO; zKs{7EvUuVcpD>IVQ`tIIv0|;)Q#S%>?WVtMh?i$a#%`u+{Lve@mgGjxlpmQ+5$OszD<6Ejf5}UJ*JS zUwet_oX=7gQ{I1>QcfqGV}3D%62WzhAv$So`5M)~EF`pUXPRQf4;&(p?LHMN#|NyN zQ(Un_Bhm5H=1&rMjp=)^zON|_Am`|bn1*6ZqAYa>gQ zO(L>2T{>BkXEn*N;*uF4q#al-(6zSp$7QFik3DHfo!2>;(c&vJxRYfR_w?I9oD1wu zf-SyS@qZk`iL`o>Tv;$2iLDi5o?Wqaj#xEI~=wu(0ZMZ z8K$wQo-MyI)Mg^;8g?RqTXwC5XxV@zGqAOg|=T*s0PZga663AAmK=S=9I9^(V#|zP@2`TD;dq6X@@_|O%Yf6k7 zrPnosK8)M@WmmoY6$9g7-=sEvW;H8P5};I}!Iaxjx>gDq!fLfkF4F?KgXvE1VsnwG zp;gTTU-mTUD2m=3{;RwxeKTZ-uu&bSdo}RggF#&#)SkxI;N91uY8&e)+JMWZN%UVm zA-AS$Of##7#E10*SBz?ySn45QD&#)*SRK7m>y(zl_w=ua20GOe?T*9#s1MF?uMb=h z9jJmGh1D{78)o)ayi}@!LN>`&1y`P}Fp&K)0k^#oe$7C?%&O)I)2mec^sG6yr?KPnhda!C2A@@4K>}J9;zd(OXt7T z9(~EuO-gZ{uDPYqYS{I2Q;KJJ2%oo)IC&@VUGFOJiFw|Bz5p6xhSk2sV$TVS3-^fx z=Xn0tM%jva(vt>!_ng;ebF$uuX-8k*q8Q1Ov_3F4hzPm{$kb=|rioDx?0nVOO05HS ze30#2zk-04%s^v&A`}E66I<~mgo!FF+W$|*%J^s?@?77fI4CcDjfZjbbzu!mSQ5b@ z`~K;O$v0;NoTHq3JFr)>)zlrRw-fUx!{_5VCsgGnpGaauzH`C2)@deQI_UX#hnuZT z%7{y=wfxm420kr$piR(Ec|xNL7ma+`Q9qA6wIzaID=GFx8{AYqnAL=K9aY zZ>h;T$b?$-1;(lE0ww;sMXt|3NnN3@HfP`o-6`O z!9iZpR)CwAJ|V7BpVG+c&ilS3e~mLxly58Mde>Qm_10U3`Vho)t$1do1CJkFRiQm=S-Yv-eGCb{*DH&OS+wq-~ zGr|ERsek-KtT0di#NUEzp|VDTsx2aC?tcQ0uJ(^gq)TviteklujuX@fV20%cAbZx*y)7r2lyWNlbDz+ zX2u-W(qQ;6D`r`<}7FmF=c-d5RSGp=e>r=f+x{n%vNMn<*wL)yyGF_{34r=|wXBOuL-9?Yr zFE;Lm{4%T9uxQ6Bwb)2+>_$!2X7rwsOOn?ftk4UpWJ2NkIlJ_RV}iETlupqWDkEOQnvDodEVH$uLk9 zW=^qRRC`Hb#ga@7HIh?;tO<|QGd-Ih?A)0yYyE!mc=#o)AlT93_V}2aR#;Ba;++!Z zG3!yc)T(7w?OXnF>Ck}q8>o1ANZ_kf9W*aO1@pY#&8@&o4LZ(zr^Zb|$C>ZjE#EG?0@kTxW9|xgJ zd!6@CdQ2s1Rb>s0FuHU_mY4(2-*2KM3gU-yIyw>*Kqz|cFumMMY9GlVd z6E8dOMv&?Joh5<>sAowWOpGO5jC3`hU3e0ZXmD3J8L16&W8v2Yu)ea7J=c0QgE4F*jb6%^t8Zb;4zU<$1wsGxa=Z8dvhQMr?4^^iV-s( z>~gAeO{K1XSWmn)+XKFH(2d+j<~R{kl7P4B=A=4@bn2Q~Y8c&FX7KYhQ|2dC{C9FI;9~`7(^+HZYr# zl`B^d2HA{@r>6&boSue=ZoJ_e+#K%Ydj)P$d)__|;JAB8O;otYt7@xi_{ODGgSp z;A`Re`fCL?ctm_>pF5<}fGl}IBD+&NA8!`gpAnh_>4lk0qHxV^qZNq0KTAP2dDnXl zRR9U1E2qY1bZt})e4_=+xC2CxngJwS=obBI)vAYR zMY+`A)K&G=x!&t`M~`&KQ1Y{Ttt-p zn3FW);8dOu;t}MPxv8-5JTtoWlKLGktKloSueY*h{_Hb73qJ8>WEHb_hF7v&dv%x1 z?JN7n!S2S!KM%G1q~qIa4RuN(ArfgSv$2?8{xP75HJHWtvXckXE{2=OZ+|Hf|A0dJhdce5Y#j^-ep2=*GyF^2%u3mxSi;UQgJ- zHxA#un!57R%JYvz1y^BTVtwl5^lFLwr$2*7@WC?Ub!;#7)%zO%Cytjuc+M|*k?-(c z!g202XTj{Bjs|a~-#^+~HjR^&hifu?G1~0Q>?I(^rz`@5j41x#&b1fUgdPYzSgHu? ztqeP7J6_V?EE`~)-sFxrma6qwS7zqcy2SWzr8`-QYQ6Y)Z>0%&{??T9Tln+QuEcR= zxR{2`Q&y@7p$TnPyjFZ4HKBo)Djjp$XbhNG*RQpUYwaMYlczm9%N*odR4f9D%AACV z>mbVm1OMz!P39`skJ6*!^80c*6S}`2U2Y=@Viq{A+Vxbd!HiG1-7;klEwqdAN(V&} zwTf%_ez#SLzo5dyq?9x|(L^y{W-wmS?XQ=bZ@f%%0+NkcuBi=4g7~nd@5cW)60J(?oPoLt zi>@n!eZ_qsTRgFND>y=a9vDi0e=g!jiA2=wFZIxYXI``8Wm1|V$GUuWVfN;|Qp)X` z(*Onwi23vR?b8s=HU`AfScD#euUmW0tW9cIXdx%{Djw4mMyp$HK zIbP~)wNVt`wgXT4HH-LaWo0pRH4q&XI`!syuup_=n<1dx0B~Po#1y2-Mnhn+>c$U6 zapCN=VrcaDksl@Wcr@|{$&%y(X>YPb5nV}P#jlWUNoTL9O9hS?oWI)H$*o!*+9CoU z)2TUkJ>-=DP8lvmq1!x(1ANgmm|zxXN7IQJZcB>0G}Osd^IWsj`l5R={fX6dqNp~k z!QpfX3X$1JWmH>5Ia&ptnVysvb2@Xs{Lo z>Xdfh+j4>%uCWSD6dC?KWcUFQ;cE62>9bQ6%91WgachpjHU34a&*V3yl?z)5J)EBm z^079!*8D!^`m`YR*hxuI*+=&rCaP(x<%!{NhX0 zU&|U`hb+VlZ@ks<&p6Ej&?sN9mh4Y2D-M8y8ipM$KU?16iZtpai$1;dE$gyW&TZ}V z`*Q9p0b3slSz+ad_;Y1;Ry+acNUj4F^>ux+rT-?@M%aQqS-Zk{rYCN;s1^%Ur>7t% z*wMJgiGrV7(i2NU+~2cC_qUvr*Ce(?*JJLz>~lYN;kx?!|9XP1q!0{()DQ|?Ny}Yb zPF)JsAhl}D(?ybAu@8)_%ZB4#R4xA$kYy)Vtz9^Rrmx=WE)%IAg-JwWhgrgwTsVq@ zOWMs0^=)2J7j9rDdR-(kg10R}4v8m4$D!{7x6}ZTU*lDqZz?K=$F(s|g9oti&n<8# z_Vt=W`KF*2a6k{+-N(+JNYyG(OpN7X__GmCHyV;Nvu^$rHisK+S)aHS!*9A1o50-~ z&e8irjc5p8o0I0cdo`_o3g463;~=jS@iA$Jqf{bK_I7Vl`FVDX%?G7N?0`g3?_Fze3@8wGJXM z2)m-f>-lLikhMh2T58NZpC?Q1K{mI{c)u(X^-z=}O} z`@9=`^)_c*Da~_=-@c^jb+RO7eNvtcl&hJ+WeqyOxM3#j0H74zlxkWBA@Ez5tKC`~ zxwMNm>sKa1cNZ-Bcf+<>R>t|xYOXEF&tJW@DtE<#&2iSZuSL|wHGj^1RHgsA>OHc? z4NkfbRvm2^QbU%Gv7{=!5^}ga9Q&;qdaBa{S&Ph2Mra=uMNxpS3LI7;n0@7rMXdWtwFjz#*a>+r8CBmso~Ji!2}OaOuXE%buB8#pI*x%_NS#|b^?+0x_4Y91zQvH{e7#dW^9oKTqO^TUm!G{t83?>`TY&y{b~<5} zVYUfkpGd138{2JZzbe;TvMsL8tB7a_N{By6Os6 zZIU8JA8*3;+&3FQ(^GcbP5DJ`m%@Iv|9t*keQKpkvCHNpr*-b4qz%trEYC&u+ho`)jhi5a)IBOwRa0AF?EmxN!3;Q33OK~1c-oOpk3daYV zJ4wQP(cpMz96>AL$&Szb@%3v0$c==|>G2Du^g-WWyg!jkNWZdXS~oa_bJEdSI3BMm2P(<{LB(GYl_gpJDWFP)lvjz?j+SWq?i-^6fIq+ zXY&ez$&p=u(r({#t$C!t`%IVUJSq{Xne8O8*k~=_T zvRg(>I4*+f1dzj2e^e)ehMcbAXh41axoQ$&L&xe3n@NytoY3lx}pfM%nE^7RjpZwkD z)aK!~(bkRbpE;LM==f44=z3LxvMtg3&>7Nd(v@FJMC%mg(>~+1Ys7rZ{B#1 z8D|F=9)?A@j)+~X7~Iu+G-<8lYUfo`oJ6A{WO=C2r{mSWV=y0!Kh;U!@6sN<@zQlZ z`hDZpuFbv9ga1zL_qPd(L`uZs=ANuam+!?*7c3#t)E*f^`DImSfM5$+cwdoGYG2XO z`16U*7Y)TwKL-F?iDKH=B)8Nb8Bc z`C*vhop$vruR)qU-w7iF*}qf3@7yS}HltMY!m>`J@&v(H*TR&}D#aeCU|Ix=YTzJv zW4=F*EH;Oo=npO$CFc0M{B#YUo2^cY@N7Hfoj<#>9d!B8UaKVte|wB8%J!M`N$Hh} z!^gB3AF?bsL4&8exP6gJA5^b>)CAwCb}3UB@0&C^{g+L{PcZv}aJT9GA4gN`0KJi@ zppG10EjFp${k0OZ`R!10lQ+-^UYB!xnP7PsC1RSMUQ)_}VrTFL2{OK9K6^AHbnBeq zRKv-C)h8DI9_4j;)g-#;5UWT+K;TJV@ zJvY}=5UCzH2Kr+)uY7gVyK@qroX4G95J@ezuIF7E9FLd6CF7b~<&cW*OHj~=0(NKt z!85|d3vXn$Pt_g`l?^^)9c5xcosz`?U=8|ON!ZI!j-$fKrmNRa?!~J$CKPw_C%*lQ z_PLlz9X*#9GofHJ9W;hqR*9N5ekjKkbeoXW`TiHtG5y_6MA4k5XTD8}Iaykg6H1Ud zsI(si^%@%qu3x)aa#*j$2rE6VHUQc!4R}VX?-QXEZ+E3KIcU#HU1egWWJ9I>f2k0h zdK>zTq>A{g#Jf`lF9cD86$Fas8&}2d+~a;AJ7EicE0tm`>=}`_zEW&l51LRY%p7(P z+=zsl*dYK^NicQ9&4M`>;6kjcszYSEW~QbHNH7Y;`RAXgr{{j#SF%5Kq04{XK(gh1 zL7~TKR9W$~9qbO#^+%gG1BM*o8wIuZWgudaRMcPPh~+6+#-IIs?E_a}HD}CD7({y< zxi!42QXs3J;xE@$01gi+`$K-1((L zwSS19jzd%GsSSUc4nF|(s6LQ>EI3<;-n~F2SNC6fiB>Hs87+swMUaw=_m5Rn9}DGg z|2OV&;Y7d$5LjC?cQZa}GEOW&3F;e0*0-(+hAouYKsx*!nEm}){%r*vr-k%U!C)`k>D`fAa%;KJ2_yzyJTI>u9t zD*rT{oGxpuU);l6@)t^@T^Y%W=>ReH^C1p|pWnMC9cnN<=_~?3|7obP_fCRNdBjNL z0>3-DcWnzdk5vnxCf>Qz?OCfUvaB{wGNc3$!_b|?buIM~w?Pk#hlQ^8B_?Fi%flwcP(W5T5Vz6WZ;{ zFLi7)TbYIPn|%2KB7?Mec4m}q`>7pq)3yxQu>T(i(#xCju7yQ9{gK=?Pqn-!lDcM+SU z6wa5NdiDh8QtIKDgF=F+uBD;iW38iI+7maOQb9M<_*y_^{~Tt5 zB3Xb8pnuKP-(S?W7JM z8{?Y~sZ04i`RR|X8ry?J5d31&l_9(7zf`@*eAHF$p4S;yPB={2|B2XZjDKq30XBuad2aOc6h>w+SaI}=6hV{SdeG>q&e!t7HAsvhRzoU?N;ItE zU*oWyT4l%7n>SS04G!V9`KSFR`@6l52XW#2Kf>+&_rv*1y!iM9eN5BTd9gK^^%jeU zT!|_-i_vkkv_L&lX@@Msa!Xa0?WbPN=lsJeng3gv&qpnGUv;Z?OqRbaZz?76yoG#G za82jK%^RD5UJu1yxL||b8&A4^4y(V+roYTIY&x0M!Ck#tEQhLE?<%c^9ArdVKyUwR zJToq+IvOxvhU`7;k=xoq@%HZso=V+h!>*PlFBM%>NV+90TTo^HDMD<5cFFzRO`)$+ zBxz{qU&&Qvv*t$WwI8t{AIj2#8U-{VT95o@3QkFZ&6m!mIPm)!>P_I5s)yiBX^y#% z;*HCl0m-Ue;S(59iOr2J(xXS0YdA)mh9o#3K8Akg`O)f0HX%qwvDjpo<2Iy?kMRz4+dPmvlZ~d}#4l7d06=XmN7xd8EX3 zg7?vEepJDjva0)%x21XpZPq_@6Ss$}NBGl%G3*?NPk5U4V1aGR%C2dM946!#ys3=1 zb^4ogOKP`wP*NySMEfx^<-UK%!UfNKx%xl_ewmH}r})O##>T2`Ck~P6_Zj z&_It2Dkg~Y=l*?e(n`s-l!Imt8`P?gU9Xd@pGU;h6l)0J$6s+kBxrG+-vJ6ETvxqG zM;H6?nl5%4?wzU#u;o#$1?HjcjF5J4|sG#AF?PGbw?Ac z`dPSotVWRB7Ck`Ws8$GnsT%RkJJg=nSdo2?(8m>dGU)rPGh%Z^C^*E`f8CW z(u~CSOJVYtifMp%a$ghN_aXWKs6`hr@fK(xN>YuMy2kS%j-`G_{axbKB;1SBA$5BM@O2==Ddde+CcobgJ_$$V6r)U z0J)1X980cam)L!jGF8Wk^2Q8gRkEV;0+e8E=;a@8Lrd+8C}R<4cWoY;e%k^>x4HgM z6cSN*PFB7V+D?-q$Os`$XZ*~`TIJ|NqdTqWb@r*H!Y1?b0^`@ z0cF0jx8%TqSP(dqwf*I8HhGweSQ_CidT8iumFnNkSuL;g<5Kvu$hXSQAI9$v?;~%2 z*3^k=g%O+wngjHCc3BepC^ZockdH*>#5j|gn`yp57m3RjueWG@aExNUZJ;|ztaj7g zH1;Y7M=o{fNQ|eu^@#?RwcmKK->NY5NsHYmi0ES4 zC}M1b?t(gDMk^kD=zxn*;8pmsrMuIkEV;GXs^I0t{7I*piB+|pA_-LtpJR_WP}?a> z7Bok}wl^4|AL-+o)f{Xu1A$+(QeztIz<21t&IwtV&2lD^F?v_^XDushwUfQNwFIcw zO>1tTuakb&Zu@0Y8JVD z+t{rd%P%hVQ73dS_)}pc8B(UEGyEGpoNW)L(V%upNxS8D!-k zC_=P!S6_{OI)_|a(Mm6k+M2xhFa&(X%!r4P8{O7kEiLfw&EB(2FmEQLYHjohdSaw9 zo!dZCUn!Muat?uED@zZDf))SK$A%)iz0XNpY_Y47*4%apyyp^?)MnwIF9q1FaP1J0 zpNx$JKmDL4o0KIfLGA^#|0o(yfu}W)B&jQz9*&g@RQ*!nYMr}7f?v}^N(pX0;E{=4 z8mo}NL_W8~7(1u+rcTIJ`W`%x`*P*mCi&;?r}Rr7O2ws}x`l>sdov<SOZlbRk7?OH+2P=tkMansCA5Sdqw`%dG>x zONK;OfL7hswt36x-stH# z#q8lToqK95<&5X`I;c)R`F?OHa6gYzc(_IR>;0v^$p(~La&A;REK(Qcs-JWnd-~Vid<9n=6uEM&%d6Ng6ulgfi2Cxkw}Jg2t@= zm?tr5G+F?f_G_94n}rDcJpd)iqw4_P#n#oyv;H)X>~W>tlzt&>hB2jRLP_FG0^nSb zg9?FsN9&M=8oPdJrmI>X1aFDiU4p8Km#Y!4Tb0=vYMG_v`(aSPg2wq#$jE4YS+Z|a zY3{0ntT*-mSUF0$8zzSesV5FS$QTgEVTPp$(0f*n51*?_Rs(5~75}B)Pphl9{~T9< z#XUMkZC<%zc4s>7F`CHvG}x2~qh{LlW_s^x;^NYD*yVyhp;2sUO!erk8Q41p?}m2) z8q_P8+qP7J2SFnpK?-v2uP?}6dUfNcqbrBv^S&lmi3-FS@tNIY%-R?q=iWP6-(oWo zr1*(vngY8+N)Cfd!ypnY6klG37g+nwqRbPDtY2}@HU!9^8?H?C^e|F9+@B7Q6JK1d z8pg>2d80Y6<*k5(|2*;BEf%!9|IN6|tW|M7>f{@1{*9*g5I0U(D`}nCyy2!%@N7IY z#(#FmWsEsiM9@k$&9bPBU>*IIbDtnL4bG#O*v!kwGt~&x`|-~Kot1AN_4_}o72O{U zcsBLkY0`!9UVwjh_}Y2nlZIYUU`%r(45K)D#wGL&g8_xLxTFPEMwzDc;X~Yl z3CPH~pibKoO{qz|Qc>W+mvqM^)I`~S^=vm>3dV&{f5R)j(DR`pyqj;Rh<#HHkXSR) z+j<<)Roc=r#FE%OZuraaBaupVgbFKYf@)>-*G$S}X>;*(n*We*)zHiS=3&at`~JU# zOM4f-?!IsLO_FCXs1~>Th1{b_??n8*rJRmUety}Ko7g)TIO>T!!rYh!y7=b4%`7bU z{g}UEX1;IFz6I79vEDSSMnUO#r548YtzB0fNfEr~J148$&!!r!uY-4fuM6EZ`?NTDqgRQ`sa`mo44DrsR?V8o^j~r9Z3^NV9QUjW)LYtna{R zy?yZbI##|cHLJGRY^Q6tytyjg$dSOTi(j1>3C_`rVdQ@B8AZ&T10dc-iq?I8+h`&I;l48S<#LuR?G4p?XFss zcxgXCrA4t$l`dI{Rc`DG>sJDd1b`3&OjLMiKNKQqa}^0dDvVt0R4=W~ng4KzE4@eu z`~$02D`^?<-el37@}vXyu7ct^SXl%w92nPB3xHG-4+^tmK)_!{wX-0G?wsR5 zT1`sc+B&Vm#`fyC;x2lwCgA;f(=$S44l?|y&rUQFY6WBF=U#)1#uBxv=Wp57R$c#62K1jtm(%v2A2<}^EX>J4G(qrIo4$OkM=SoDE}UL?_M1_<*A3WxgxkWu z%1`LZ#zJxSE;lYY25Wi0nlXowF0SxEsm@Sh-q99P8WVV9({u{fmNk5n5q%7g)XOaG zLR@IS)=REK^-ZyO=>ynj-&JvbtHJ@I9BpOm_Ww8@(<2FvsS{HocSbKq{c>h5Z-qYi zDkKFln94^0$Ht||rljuz!tWu5Y80ZZ@3>a>3Vywjsq3ORIUzNp({3*}HF5Tx9m018 zRylLNMHvSU3|1^~gI3N2bPq{bfyOli#zK*M#L2SZg{kGAi#Q{NSk%s&t{Zr{*y*QbJ!sAZA3h{!kBPGIyF*Z zWiwO#efQ0Eo)*Nsi;Jo-rr;QO<$z*>1hnYwag zW8yX6H<9oCzI!carsmk9!4aL0hqMt-1$Q5MOQLGcZ0H$v^X2Ky%Hj#O;*h$&uI0yX z8M09U0;r+CC|dMMRwHe$>pfIP2dw(DeA0b|Fp4yyuU8}iocD$AVHWlgTL;~79kig^ja@_t7S9I6qJnm9pNCw*w33CQCr3+fr>B|ZvG4>a$2r&dKI@z+g* zHn*>e4ynl+^UfhDUaf`*QzWDCcpZ@p!qk~q(H&Irzye|qqP}tB*gx1%3HAJ71s@gH z!y7%GrQfEzZ+@qPb}9DGjXA2~)~TvV=c^J$XWy_rPfO4gYosZRz*iZ8W%t*{u+F8W z^nkwfp;oXd8{2qb5$Q{ho7pr3jVw|#o8tW%M_m*?Q2pREkal^z1-L25X?PmN5Wb^tG-QE6Rd*Iw+L!ipOMOBk9D&hIP9S2*`2V!X0uOzk(QvhR&Y`U5aY zi>t}OK)Tb)_y}Zeupau?EX58jk(r1o95r!H4z~P<9P+MxB#xd}5!cu46H4Zh*SFUn z8+&Gtsf{+}TuHav|Se{H^0uj`M&8)3K@^ z=_|(v69?->-=g=^Q#uUAWh1T#WHLtbtGRu2jYbqZM}eIi&@Q+bYOGqb$QG(C! zf~q(0c{qQ}WT6=A-fq+8ND6G5C1Z*JH3r}-W18x!M^Oepoq%ycF?Yo9B2h`%O4*O7 zAnknI0MDJ?_mPCIkBp>;<+ndBw#3dwu8Mgt6%a}bs#!Jw-wKvGHN_Q9$Kh`2*ZeTF}wTW8=?{Wbd_JPYe(e)Q8QrF=Kb&HvZm=d;(y#x8OtMUN69+Tj#>Gif3#nR=LbD}YZx6m7%6df_EV&f6wkV( zW}?I@oD8Q%6&{yMvfGFgmAN8NGZWkv=zv)VQY-Lyc_%}4rlerszHzb9oxq&y8@Czk zU%cxPQvS|wAZmrr>ahQzU}&XmK%>l@T~;yXB5N-t3rlqS7Zk|lm0P}c%&_o! zi}SpY0u_fuN8UPF%o~4daf{rkzGUu&1yjQQ#l*(v3rSUBtH#*^ODZ@pT^26~jj2}9 z@}16jVx|3iG-N6CmxD^T4hg{BE!PM>?0fEgU-rBdO3Ru@^9&acPPyaPEWgZ*c=B94 zTtH}>xNc>1O%1N(A|#cC?+;u3o<}}E-U>%%1Tc~BfA2sTBa&Eu3lCJibE^s=rYp)Z z`q;IlSsY;O(p{OXNvr)5s3E&1;;Fef5Eyj8S?rzPo#m!Jn#Z)+)ee?g!5yFw@gEeC zGaoJ7*#y{FO^yAmz}R^A9_O|1D@oGtNkJ zU?fdWbGn0|1<59vH_VQpHzAzV`4P_nw7Y`T@fpY)UsxdFY$<65B&T; zj>z^+FCq^pOrCrf}vf5^=Nn( z_{FE!I>{DI=W7`C2L)h9&ChNs96UK5c=^fVb6KMC=AGm73o|)U$Eru!O^SgytDG3y zik_j*Ch-&8w&4>}12m12&sjV-I#{Eq{(>^;60 zcCxUjx-ZNk$~*L`%Xtf;?FAFjT*jOx(|nU}x`aGvQLWO)q%>Sh`}}9VZEA54q^)1# zN75bv{eiqFY9f=y-ClG}t=fV&rIHKw5)JAT)*lS|9^CZ+)je|04-bKW`D*A5Ay(g> zHN*tjC2>~~d^|*V5>V1_0jBT6EMNp3@uH;;PTl?|cwkN4Hkn)VN?b;zMA{vabR1_yUiD)D2$#%Ttz#YQ=;^ohYZ_|V!-#Y`~~=) zd5^N*@6J~VCEUJ~uB`g;n%ne8ax92>Nm5_7d`S4A2ZJ zq9h|cj;{)-6fFDiaCaUa*`?4}w^}Vi9nbT(c#*Hb#gi5EK&YWXPg5jKI#RbTQERSn z|Ms7CSv<8%NRbZ-*?plUSgRtXt<^kZpL~)(ZYLWe!^zFc*?3k(HN5s=izv zQ(xbUsOR7 zH>GJTAtM~rlnjAXAAIXn3=XZT%$F{)LTk5=zVM^XU%!0v!@@({c|BjMhH~*qd{wQ( ztKj*Lb&-vd!h1k5q1Y~fJ)b1dl%i?)$IU!)hTYOgqhTfXSB6y0UUHZHsv-o}_!6|@ z%??!9uaoS4kY$fjZ2CW&IZNN%)IjJ!O$+$E^4Q}`guZV5*Y1~|**uOAGV5&R1?h>U zdqU)06s()_3dmsVKT8ZKK@((X#^xMiI}rUU?2oSm^|#&jih-OR8y*KI7!m;e*cQ^3 zCP}iV)4wpMZmkYgLZJjbD7a~%f*)~2eM&I`rhgMc=_-D@cV;yD-o!hvv(v?MHQ%Ol z-%<35KzV&4R8}M2AjAhmWUxQ)^C5B)eSZRxDaEKhitx{9Ls;^Bec`_rId^zfv(sNh z)pT3x50$T}nI|lzJqsTl$TI>jK2eXJ1 z9yY*eQdE=C<5fQPlEP0?)UYovw@*O2;9VFw#j-7WcPF0O@-0cPyL~QR!X*_}kSt4k zNg22$-{E@yyoA%|Z;!d=3{}M{TLyNDFW?#^(Q3d-lA@KG40tCZyXi%YN(%2hRMt&_ zZ2J`CW0bKD(q@Z%6%ukj|9eqYHjPpcR?T2`XG}Xr@!kSlDX*nncz3V#q|H4ca85dh zwDfY#N%{Qv8LkX>RgOZCoo)$S3;a44ZKK=zvU2$r zNiy16*4v;?_Bei+a<}ru^Tdh4NQ|Zn8^O(vE@WG_ak91q zDLG|yFa7Zviymo^2XjlHn_}?On3ROv!z}&}DTV$;*yuHn@x%6MtBF-VoYIStEkNZ#!Ad#`^xS6){< ziz+jnD@M&0 zr8Q!N*rE0+s;cjo-|`3KK91+Uuj@L`mARW36ND1qLpRjzk~|y&Zu5~}dlMVd{p=IR z<`OqLS#QP^(Ap87_tZ^FurGJu>)2!*X>afSMDvrb8Wm1%e!y0Dt`Du=<-5_Q^~%=YM$ww>FcXpSBJI(8 zX}&kRA$G}<_}6{&T$_LY@_7>suIP@&$o8sBGU!NT2&v6RkrNNBBFbA&r4-1^-kVX| z_6%z|XhWV#j;g(VmCsQxKyR)S*z15>8E-Bs^&XA&-Wh=*MFNW0%GKhv$$>HzEM1viD zYG`HmF8e}#0$|rTQT#mv9>U@HgU;9esq=1Xfm*;R&MFP0&^#_H(P0~r@baQdqyOxA z=CrOMlvNN;LHpX^!~2L){l=1b!S34W+LqzTx)(QhSCSgXMQnpb2rql@7Gp1+hm=BU z!;2O-F>VX1rF^-py^eu5z;^9 zDKq;NbO^|tNcF0TR|plN0?YfG2LoWwzq-kQL z&j|i3(>O69Sed;WCrpCTU|0~%Q)@j`Q??F|JXoGu{&_F3ANvT*&Vj)T`**Njl1iG( zff$}rL(rP6eLE3RQ=`;u!0fBCkPxxE$|!y%fiC;snc#`m{p$HjA@D-iC0^^|QXP`H zToV=xn4zbK9d_@@eqA^=S4IJWbGyK#ktNDQA)~2?U1K- zU-4<47PZ@1#k|buqHPFvYpm&DNSC9!y#FvV)>WkL%Zx?ZUaq9#;+9Lty~P=y1+Pzl z#=`avZXC>#a4~48vV|F1o_U8hye;BnPl?Vk3dpr~Ma4ev& zup>puh%!0?i5bi7``us`4Xvyl`+fAlM5ep1{q>tP*MH{rMeeO$sZf@D7U1bsYy{|? z&_4~P$4gcznp!qHZDCeqKEvRL5bryF4{PBYD;X$Wue#A9W*D(2*Sh$0Q-8!FIPWKA z_+es&>BUCpI~nQX#<9hp+3KQBj{jxbny%YLmkY4n3zFRflp+lw%$uY#t4K=p~*njAxG z(yTJ`PE4M*mQ9kWR7w7!L!X@4RAe;lov~Qv-r4hR9OHw5edV9!{O-7=pIbS-vJSwd zVM7;hF9Ex3J9ZN*4+B(*-&#(y`y5km7nP=~xS%gkQ8d{-EL z7ga~Bc{Xs}WP;r*s#^xCGGoGff&1$Ph_Ze;gfrrU~2l%6+)lLz7N&9T*1;W(7eb^5;G~Vmi@IX8SrMFZBKIhh$eu>%%+E zq&rv4m~Xh(0@A2`P)_lyG8cOPiBuP~CdCki2MefgN)@cpV<5RrIT+AH` z&CkL zrv^XNhNS!fRa1dyqz9T9ooAoCV`fN6e|e#DwrruU6vq8lQSR3eQroB(EMj18YTw%( zISd+(XbEAKSAiTSBBIA~nn3hUZ0!hTta1}ocRJgHv&*-KY%wzX9lyT0b}Yg6R%7kv z8UOB(8T#(&#*L1)IR7lX(J9uQ>244^~mmj>P>%)sCRo@Cul7aA}2fn ztd;O=Cxw_y8Phn4bV4AntecG%vVcX#CQ484zyJH2!}0lCGv|gPc)^5mXghu7>^1#Y zajF?l2aLSc0x%1UKt7jUESY6}+Nq}&wV^zto9~7_Q-G=-q82^>!5x+>P-Hdg!P}K5 zjOjH}v3(L~{-5#^QGy)rs!)GV@g-x=i?5gKRDxtWeFM)l@hSnao>B{>0T{xsW@ELT zTDSRyg+YqIm(=B%OPyl1>VfI-$Zsz^c?(*!{ho*WFi0MhTX3aZ-Ke@R=M$^RTgCSa zq_$9tZW8~xdxgJ4vsA!cho%oQ>ElUp`~u9Btu-?@9OFkL>-}Ti9OcO3W%0^Bz~aNK zT64)}^#~Vg=znbTVv|9Cx!iXhy6^3n6-*lcC>kC2hD>{2e3(DCrzKx2o79g42$NK83MC6Jle`o?<}z4mt#rvL9R z)A?=Q=<(Sd(*nB7p(RaGUFljh?LW31V~Yf+*o_ySv)2&qimbr{IVJ*7|0eoYl>GO? z=9J6KKQr<>0&#jSJ5!K<6&9)+o2qxF1F2=H^AS6!A1jUW&r9XvbUA@G7`4YlEgcjF z)%2L~b#AJu*7?Mf)2QP5@POKIXl;6JW;whxnvO&NGTRk-_=~u6(q3>a*!~gSB}Gl{ za$rX^zjagg?L(?@&-@i4Zbo6Sz&~ed^XjDpeE-=Og56KOpQ`XxPkT~fv8F(jWD7kl zIlo+Cl`E}Y&X46yg{`_Rm7X+u(T)Ltax9}T5~=vMemdeQ{35SCw~b?#;*-aGPU9k7 zdcLEIyidQsLfY8Byy>x+!gbv$c$AmP9-Nn5OgSo^8G`@7ru*vK_NkSFigCRxVkNjZ z8(u~ZucK|@+;Mx2i#lEF0WU&s8Hl4jV>qVdqzw@!xqA=(VMK;b0W{rB#2$c>2!cb& zE%`Umhm?{LFh08(e`A5PWt4ZiJbB^)C4BGuC>X($0`ta%^XWR1jHRVn2S(cg>@|zu z%CoN|{rsW2pzWS^wpfm$H-Qm*r*Y>-Y~yk9yZ_iew?nPae<}?9d>Ul|7FXHb`Tr`~ zcxp=>?4=Hw8v2BclP}c`lDC6|`$j+R(!RI$rv*vd;3d;RW6ORI$7Npx9+haOxxRUN zX;=PMEw|BxJs{ypcwM>}dQJW+U^aj)x8SNOI#y;pr8M4jxcfdra5(c%b6hs~x~T@K zB**Jm^^fB|*TD{@(QC2rpM!8Gb*P*z7zqQ0nD*Fuo1#{^f#SD2-rE>x?AasJzQ|r@ zW6yKd=Zy0^ezNHG*^fs#mN&=S&U?678jr(|B#vjm0bj8sHxglW7?X|#erJNdV?>&k z6YDj}50Bte)*BDg1dkpXXHOaNTTzD97}!?VPWqJZ1EG~oxmy;;o;_L>>YiHnHD#=k zGwC6fi|!WzMcK`msc}2v1_FqZH8UP8DJC2njb($j`t3?*ed{Bdph+4vfkX0ze0&}a z&Dr-awD{a3L!p9b>ueO0CpR-E~!Bi}aFKCk?9QP0pst8uTpiF>W6DbNoBKOx*r zLx_mB%CT}1+4J;{)HiCJ`0jY2)1(CDx$H1sm9QAbLW8i2CInH1!J<8;w9?!U~uR4%yO8-cYSVq zov=EGhU#9vTJ&|{YN6sMt1F*gMz8H%a~OUA{J8!l@UY6~%)oRq?3G))$O zoOS3%BVD`i-62oyzN?kMuY4b4&x>2ZWT?EYVJ-=2eLLV274IJFEaxczfNEC3E01a-ra^ z<^F56!fS1ydJuN}kjI;#TXrZ`!;0 zsE`MOEH1idf>8wPE*tz!ct^|4aE)~E9fE$SjQtuVAhquKY1BP2R}A)%uW+(IR>1-m zRh8tteWx7f>y8UJu|VAPpRE`8oZ>vu9=a&_w^uT)9TfmSuQH>Mql~JzlJUxtdfY=l zNQ>dAzTR;*%14va{eU>q1rCda=3=Vsd~`rz2}Xl9vedoux=?ucemCGbxY>ngS*@(k zj{Q|G(E!r1AnFI&($Ov^hf#wbWGldqY^&DuFYRh}SR_K^X8^l#B=WCUk0lz1qe9D_ zIz>myROFRP!pDBQ9Vr)GsPjVK590BWI~jR9rR5nLrP*Efjq`OUw8yZASo#*bK2lb? zTOJfu?QO=Ieb+~deVc}Na_WSRV zcDiCx(dvLZeqv%(2bJ5erV#?&nd%^mld<7y{^b?*>E)aC^+1r4@2l3&+Mni?ePha= zmJM~Ds0$9`1dXSxS}<-SE@RTrYoihI6vrp(A@EDJDUZ{s zNi~y-s5?&2R7DK<2l_Q zSl+M#a8^uz72vpjI&U=41Dm27L8IvX=3A-4zka~f2(`QZ0T`RjfnLVywgQf9zKMA5 zFb|KW&FAqjM~y}4<~d(pnOCWvW@~25aH?K{hO8td{rlQK(4o?T@6o*zkK3c^OE{b1 zX0kL`B|X`df9tdY6CT-kPx6I<8y_ICulhIk`4=uJslQm$X%;QU_K)knv>XyCYg<)s=cWHiX z-_k|G-?Qw8Zdx}l z$oP>{TTBOoR-KnBB&f;pk0se2h=T)H&K-r+h_$32Z7S(rE(Bjj#E}Ha#0B+2IhjEV zm@2l>BcrXUW=OMN;riHT`L^g%Evuz2t58y0(wKkZSn&;3^ebB5vR(JipmLt%4rl%U z#ox^mQN(Pj=KW!Y9P&$gYm zxv@F~Sxvv=P%9gm*&<4Qzx5`9BhJV@K9D`-wP^rXtlcyd`atNMaB?TG42=ARVq3D6 zrb(`A$@GC#o0k9bDk;KENmgxLl`L6=AF8;eO%2CSGwpUp${Fy75~Ptl<|Nt{tt&MA zJ&gY9W8q$B*IeDg9Y6~)Sx729Kr>WZ9N;PR>6mK$oQMTNPWyaq*0+TK9>>{qO>@co z|JafnjWE2oW)%se>o)Z`nv>+A!$jn*1mpAGhGnaL zIjtQyy+ti}&;YCT?4m?W{T2bkI_WR;fuDbW;VN zg#&X*#^#b%!vZ;;KIbUTD#g(J;s@8KhN0^1R)B^foQVi zM2(q>2mr&O$mz3rL-eK-z{4U#mP6pI@)_>wZ@H9Wy+`PpXYS%Rrr9QeSJZtLmdmMS z?Uc<8(tzM5su*QXbf{vn^ZI})sOy2jC6yyiPFr-}v5av_{>y}0#2w0yVq?ImN`kX_P1go z_FUDUr7z3glUMzs<02LHrL=e7kt5KwJ8*ujT-8Qq02Dj|fd%#{=)0@eEW;$XNzJJZ zEzHMbc=-PeagT3-U>9gMR3}4fsWbbz3jH%{@ zqgO~q8KtnM6HF?fZz(R6Ot&0CTh3f{g0-ej!H)EKciZCsSnY%^xTNR{hP8I=jlgz1 z-y9TNMet|V9r0&E$tBLcNI1cmuPflo6})d1!$CI1s1Po%X}O?%|3&_y(uL|PimVbi zoXNV4d5sV_zgwnW8m2deL@1W9YP_gqX zSKU|%8J|digZS2@n5I_EAIjVDVRXkj-?1D*r(8wG2;X~IOvR&1b@dgW`|DG$nQ2i) zgd-nx2nih}`-=5XTedqIccd6=_wVw0Lom45o{>_hT@+HLZNZr5Ls4;hHN@A1@z=xtEis{c-rug40c6qUBDA%oMo5taYR}+{y)6}p z>CfNIMyl4bgLsD~Yuq4SDCmJ%WFK%Bd0<-idn4j}XtblR0&8rWf|J)gPMnoLdMmuC zYIa8CpO5!`teJ7|EwqxkGoJD`fz{c8e>rYza^wW^v08PKR0qo!Fza-iVIP^q{e_frQjo(y5o&#Ob6)_Rm zG_YGbQ{38^_aEEy7iHepqsD*7?CB;aOmTg<^5>CsQukPohgKG}3kvTYt&V}T0gGEE zdQ@P6a*`xpQun2`N*&(S`CX*(H*P*ijSK~x`!>!wY`Zl-o0RP zBkcO3ZP)f|<*@#F=4?k>vW{`b0IFHDEXrj^w26{Ibf04cb!oJ3%h%qx`yX4~=C*I} zXx#6}8|E7yTB=R(Xg^z-1xH`=n4Wp%DjXEETpCZbY_#g^&#){X^%ESZ{jjifEIzj_ zgd6X&#>fsG35=KTmDfJKA!6PR4Y2jcK1|2BSJ07Kb!qE2&+o9mjJ_6j-DF4UmD+nf z?YT`hhEx_SW2W_U_>s5N?;89@5KoeldZ_7E%}rFz>Thz>(}QbgD~hi;-t~zNb>Oz* z`v!v~yC1x{Z{$3zVwntw0YwRhQfLtW@;F&aC-{ds*l+S%=4_1nfMBm&anm|3)HY?~ zgk*X^*jh;VGTiRvhL-TZhw?|hocgCTHLYdU(9{<^_pd*1#ufd{GcWC6{x<1><;Sd* z2K_foaozdh6m4>=-ZM67K#o=_?0?G83|^js5bCh%ldB#-eP@g{%Vr(a5DDT4GSKi^ zA=fP|r^cAPmA<1D&y6K*O~98kM&F-TbY28G)@m!nQ5K>3WNujnckRPi1pSPy^J3WIt$R?{xFHHs#{ty(Fd-=CASYLlD zvFLv30Vw;eDBRbc`9&dGr_sfu@7{P_C#!6jCY}_DZ29wTMA@!kwDbGt5i(~3`07>X zSVPMN_&y?3ER}coufis~2q5IX$XAWc$D&duTy_ebZg-15f6n49*X-x?`{^1t9g;T- zh@KA%NbjrfeuxVY^w_~DI-`X+upq;ch!Vn_q@11Eg$Mi>_51|dne<6CI+(e{8Fq{ zIOiaDdWz2A)tpI<;q=7nc#UyeP@nBlQL3kXNA8N`RB9T!joPNVEy<{ZNn-2jEA8NQ zzwhRT)Fr#Qr~vNlO4h`4DXO1U)|^)QdMR9LSf$|t(C+kl@yB0+pD&68^%`?K*uZik zN6^qH^b7cGUcCTi@RAx~ylaLuJt|7DN`-nS)rjaj5se>SJpa{7GxQ-C^rQ{p~oB9F%m> z?R(D^c5aHyeX8deIX4SB^Tw5-%k5%^?>&KmlQg4WM zU~QaEKzfyUSURHMYC;I*CbW{-rlyIMyQ|m|G*^824r1KOv(L(%BX9Kcov8~APeVTc zby|M=EMfM%BiotB7vzq_&dChsE9rF4FAi8%T)ELr>;YMDYvdPPUT7TgUM&#lR(~<+ z|0`lR2M4lCeD6Kp%+xkg7%5>)FW?U$zM27}hjPTMkc5tRf_n9wwLn6*je_SGAE^-BUa^Yb>sCEeKpP`#G-mlK4PBn>WZm9!k& zBiw0Q!{be`-1k`bS$V?WcQ!E@za~$Zu1gcu=tqywpP>atk9L+x%KVN1TbGRyug*Se z6>5|l%wsuVSa!sjRRr!;6P&5M@}TElVcaojLs93zR$KBQrtJPdi9$%?V`wn-a1;*ks`n?tJJpSd!h{kqXeU z^D-FK=1G>yY#&gHgAj|b<{?dELs4T@!GhmB)pM;T21MVqMxq*c;vCQ2dbiOCpKi8- zss7V(>?tT2VeKD`u*5Kfaa3qCGjt2zl0Iw(Moij^sdP0PyU17-in+^!WkCfrQB2w6 z4`>h-GMxKVNP8rYBvttn_UHPp+2Mno&_rJ{>cu|{u?q-uHd($H?rE=3%>jvCh1j0# zxC<)!|FO;7ZQd1e=lYs@-St;^8@qeMk?^SPVYCXqUq=O;iw`+&$!7Y3EueYZdlqwA zp{e_h<&_dwR^9w)}0>z|6q1m%n8abb%~rJ;6q z0~?tN#vI+F@e~*W@N z{JDN&9QD7Q8|$4VVR7Lf>@)6dv;^8xDTy=@pK&(Nf#XW>+B!eOkF!Yw*sR zEnBz<)FNqNqmksnX z#CmNso$1SWL#~|?y0O})58Zeoecupt`c zYQvkje}5aZ#`To~I6Br43}yh*bh30fzh(Eur=S8Q&~ALZBzEGod|sWT#Zkmz-m>Ja z$exLk^GP-`{te2Ilo82%M7;RA>%MLGg3L&)Y`v*=yH1M6qGsq070#j`2<=X6;1c}9 zC=b}t9@rapN`B@~RBU91%@xDS6VsD%e4#InL*kb?&bTfj3xekA0s1eh1ahS4+4Iv$KrL~XY&$A0#a^*J~D}>3KHrATT>{l zStzYG^!UwA&kHL)t@&!7nE=dmZvHu599QNzw#j?9HErF!hVt!u+xb5Ad+cG5WzPAA zx`v(Q^dPpFxL1FJTrYNe3*HgGFZ}L%mr(2ImAP5X{(Y_NcjQE7E*8k=zInIUX;Co* zKS&?OA!jT$3@IVsel%yNN?*jdV^mbIIzM-U`NFKhs-@1nuA8?Z3Q~9>hS~w-7sV6G z-1%!SfB%7y`@W{;+3;+=lyQDS+KtjaaW)mkP=ks}Zj~P8daRC03(&Hrc#aGofzusV zw`$S0GpmuifpJ%Clv6;(WMP_g@oL@J8sC_LXT>F|c`Q^@J+tH?Lr*h7@joDzg8>L*1sX-+< zSPr-lh#{YsQ7bXN?FCmASDXfa7fOV-PSrLvG0x6j``eJhwKURC5 zsaGu&In3G|y#R;#R-L}fZ4Z6raPHs41OKX6$GhIBsox|y9h7@94!Y;9wteW7ku7Jx z;rgZ~Py6pyzErU`ahS#5FngF@-!7-IDP2kM(FiZTR`}k8AXy^oYrwJOp!g=ZpKg{M z9>@sfzVe85VTWt)8OiQh1}+n{T=E*~agpAXdOCQDPtngKBT;d+;k2Y4vWBH@ZF>9^ zwRRtin5ETXB{7Mj?zb;p?*B6>)E(H7`y8(YHk<6#D6R`~=yB3UdFw-wKc$k3cMhaY+bSDD z>Wu~4vR0wXq<=i6W%a36Z@WF{W*PaD&U5ND1kdo0^BFvid!BaHm#n^qd2zbx2c^A} z9gmTKs^BB-_j`1u-AE*9Rg&pr(5E`LDxfD|w&`|6c!|1;x1hx^oLS-!KT_jBdzE*CNqXq{1si!=xr zp4B>Vw^_;KLa7MEhVu30j1}vEz5DhePU!pix=fjlYM>+Fe(CA_beGg_B;I)m&y8ZUl(fSy9T@=uA=Bw|{OF#Sog->C(D#_qAbnazZVUPQ;d}dYkCEujw(N+zGkm`er_q zrv(&)xdl&F+dSh)@a(KVq;$JLv3MjY87T}2B>?`I`@xMPSI0eHNDwarthiwmn6Dk( zGWr|4B*q;Oi~~r2Eh=gx7|NM?=S@5uP6s+V^!%G>^l?K)?g5oYj>qDC#@cy8lmRv^ z+*zw>rx2v(ZJB7plY&hTN(w;%+$c1LCMi9_F4$eqMrXGR9T3yHliz|(MoemE<6{ofqy;}ACRddXVnb+Kn{;Z~+rl=*(Y zWfwI8bgCZTXNyVlijIou0QpWUf;@Icy3R=SPLy-Yg^@ZH%Q^g!_p0iiT>SP0oH3LLvZ06^n61 z%?l$Kt0VX*-T$p(ZdHWbz5S?w+=Z4&kY=d&;pWJ}83F<1GBe~o9?~doOx%;P#kwg)Z6;Zq1`n9xddg@3yN~E zN*HJet2MXYNrxo*hhU2tc)^CUK>Bn&HKJgUx0TX4kqJrhG~mt3!wfU`M$=AYhM_#)rBX44ZbHD4qjA3seT|*{_(*5R zLAuk7JKt?0J{AX3_dLyW(uQ;nI4jzLz9*Gqavl83mdJ7hK;iHF`wJzyBBF{9a^|5@ zm8!*X$XA(G&`_IN0i|?+E65xmf-iE=^k`|FUeJ7(@%8Lv);JS=Kaj)(UwIK4NDa`k zV*LV(WdAA6u<;)KG*(+~iTO)TaN*?z^vm28pLWiz9y4?Ju@RkQR9n_h?-=Ak$9hAY zH@$jYW^CcQx?Z$=LTl6E(Y-ia{q|M_dg=!Jif_>L@7k=N00|1G=^LE}v=3**OlaTVE6^FDKz z?8x3V3S1#;kI#FI48*Qm2QK*rCXQqgU%<8wz9*hIzVEB6lA5TL%AN*oIJ{L%86}L zgcm|6q#;jJ?B~ex#||@{qy4mP)r$=Xn+J+vdUJ6xy}Ow z#6S_%sXnr`Cl_v}@}UqM0EgoJ7&N3J++IO@ zt4i4hZxolmxTuWys4N-23KdMfc=ZhdoLr;66F-Wm3+~nYWGR& zd58&Ee(yZd8u>Ih(($ce1Ds42v`V5c7 z_d?5Y#ZMlnvx~hUQ8tT`3$%d22Z$U-*5~V=wNg*3OOkG2uNU-lp71L^fPHZ+NM>&lbM-y2 zpbepuzT7b()Ajz#rwWzPjGMLaeGp!_T#*~w_<>$;ej^8tC>oE<<0jZ%7sgs+RP4+& zEu9P~y2Y4b8d$bx*kLlrNqS&lO$S*=_1<;-Ou1dK@q?OFPFU- z^_kj8tn6R9ASPrKycQ&VgO}Ebtvjj>sez%U%!MXjeO2K@5VU11OD*zSfYIAyVoJ>` z2*r?sUClNyIdmRHoSa;PuHS+yq5`}mZ#|u%Yy8J%k{1xaca-kOb^+icaNbR9tQpYn zY@WWHnrAZF{Vd>J@>;LHjc_oNqii)eyP$a!bqI@S(@hL`E0)k2yLJDW5P-AMVN)UwyTT^-?tjT=nCbNet9k$# z_X! zn@X}HG^}yL7$;}z>?n%(U!hPmB^xQHyXrCayP0GZa7jVsvUoT*BZk4O!6~O|DmJPx zKACi-{i!DCduU&{0dUUKbJFTTm!0NCz*}u??ECy@8Iin-COZn_6NUyE3VMVaU16p|0`BOT`JV+S> zkd~|A4-`+d=Srz+7uhthv7Kjkm6l`Nl%Il zN_NW*M35dH=Q?G#@Kazn78P~ zOmC26NaZJBAzUEvmU%eWWON- zKw|CQa?#c>d9nH3 zor@Fr+PyKutQ^z;>1$xu_P*>%d#i(Huj+;`4<+Kg_Y3hwuE|R-nq?7z z#`^0ocG=H3fdV>~)#riAj^#)wUIvfiG$;yz4)4OZ-72H{7YZgk#)dB@y=DJ%f0V=r zV~T&={Rg8HTYH&9er!F!O97uf_##I*0D$+gaM|62Jp zBew(i8lu^hkrrJ^bwx9_KG7wERlbQHhUaV5`Nf1MOil^8Tc*$T-||KiWFeU6#3QTh zHsA{$%No!aXw|{^`L~h4*1ITRv%JihB@t{HQ*M;JVh%e@&Sj9@!xf%wEqa6pXKy5w zgQ~uc+|i~F^Z)DQ-VhLDFC}kMZ&jz2p3Bc>{kS8thN#ZYrD_=~$?TP_Jr*4?W0-3U z56z54Xq{Tupp5eL)P*gkY)xrobrHPOEI{8Db#rr#HPtuO1O0szY9M;~Z4htxG>^JS za!SLyBXs)yK+mVIRXc&9aYCag6+X9;(Qwy`0FL^;Okh1#aMg{Br=?x%Hb~JP%LS-| zR}Ho3R&f20itOqTCZsL{davZ_zqSg}?b~tUOz!USPBNGC(~GinH8UfXn$vBK>0AfL ztGVU>il=Iv2-?Y7vfx?8d5bqjVsMDEwk7O=6Dyl*%gCj9(=eI4z{Z}w>1xcu+UeNL zcuOtyF4U*}PW-d^f2h4LdB4_C*XS=7h)jW3bJB4`kEPJUg?{7IR5ary~1!Kl_-BMnE(s(dFT!> zs$L1ms6I-MA{i32devxS1^wb5V%@U;CyC)Tn!-LBprGl>%B~crPkoC=`x<7VX!ECK z@`iqHv+@!*;ej)IG?#wzbJUi!_Q>0D;620}($)y3axp%+Wyb416;xyi4TL(8o^b@} zjbthReYkJ|%HH3QE)w^v{kFn~PkT=u#7i6%AKa*ko&hJe=&5t`0t1EvS#n~yoGhqh zFE`!$FwyLRaBw+bO>`mx_1%s=$mQ9TS)<{7&De)bxPfABro^k^H4XT| z5t?!E+^U8{;?j`8zXssy1irlm34sB5p5T4t#H;V<^Y2tTmah1gp4_#GFQ1XPY&qFc zQvEu!Q%f@vq)HhHLC+kT09k1qJEyu_kP-Z(*TJ(ol%}6@w^mrBU-#1t>;mREra)Du z_rax7Y1N1Qf8PePVPv@aU;S^H$Z1Kkx+sMg2{Hh!Sw>Sg6@TB8DDqG7Mkp6!h07hW zg<`LY%w`cGEx0ku=*=k#+9dS7q8{N4Dy6HsLvTARgZrd+R?B`X_bMav_U(H?qR(7~ zK>nS>Q8neGe5Sf|bK>3WA+}Qv!89pzjuYRgj+Szxf}Nc;l@u+aLx$Xjp{{2Cw)t!p z{fk?<-DeJ09`%pZcRioO;*9s2ixtvVz+KOamQrS%A?kFE{LxHG7|@xiMTM3PqY&l} zS$&`xW;Qc!fKiv1l^EDf3o0M+%aT)yQ;sl_bHi?+DfP4A?sDEN1V>j0_h-qW3vwdz zrNFv5x32FiU+qn2C1Ya>WGhzeJ1SVEq9+(nsftGLK)Nc5kAn0@LoE;rH`Tq(O(S)U zcyp4HXx2!{=|3!gDRkD!iWH*X(-AgVr}lB%@C>L|mFc_Cep_0rYv}ECZ||os7ppU? zm_)EFq%1p+6LDc?-DYP}?%o?@mmU(3;`8?+96R6=o z;yLG(gjIT9%_$39(*~BFx`4x~f?bU&0GHvnL^^v@ls_MNRn^0vq`nC3!7wg)o627ZQbIlN=f~X zP11eoot23K$mrqXSibqV8$au}Sq| z+DMj4(OUb=r+@b!+McF2Tbx*ib%iqfgtB9^-X2`DL36q)Z= zB9q&X(gHD|iQB#tcbK%FDsq7Tj^ZElCx)BL=eht^O17z6v(SU*_F}_(PMK-{P5vJb CTTIsg literal 0 HcmV?d00001 diff --git a/src/lib/SunoApi.ts b/src/lib/SunoApi.ts index a199ae4..a6fb8de 100644 --- a/src/lib/SunoApi.ts +++ b/src/lib/SunoApi.ts @@ -8,6 +8,9 @@ import { randomUUID } from 'node:crypto'; import { Solver } from '@2captcha/captcha-solver'; import { BrowserContext, Page, Locator, chromium, firefox } from 'rebrowser-playwright-core'; import { createCursor, Cursor } from 'ghost-cursor-playwright'; +import { paramsCoordinates } from '@2captcha/captcha-solver/dist/structs/2captcha'; +import { promises as fs } from 'fs'; +import path from 'node:path'; // sunoApi instance caching const globalForSunoApi = global as unknown as { sunoApiCache?: Map }; @@ -278,7 +281,8 @@ class SunoApi { await page.goto('https://suno.com/create', { referer: 'https://www.google.com/', waitUntil: 'domcontentloaded', timeout: 0 }); logger.info('Waiting for Suno interface to load'); - await page.locator('.react-aria-GridList').waitFor({ timeout: 60000 }); + //await page.locator('.react-aria-GridList').waitFor({ timeout: 60000 }); + await page.waitForResponse('**/api/feed/v2**', { timeout: 60000 }); // wait for song list API call if (this.ghostCursorEnabled) this.cursor = await createCursor(page); @@ -306,21 +310,21 @@ class SunoApi { break } } - //await sleep(0.1); // sometimes it takes a couple of seconds to display the image itself. unfortunately, the only option is to wait and hope that it loads const drag = (await challenge.locator('.prompt-text').first().innerText()).toLowerCase().includes('drag'); - if (drag) { - logger.info('Got a dragging hCaptcha. This type of hCaptcha is currently not supported. Skipping...'); - this.click(frame.locator('.button-submit')); - continue; - } let captcha: any; for (let j = 0; j < 3; j++) { // try several times because sometimes 2Captcha could send an error try { logger.info('Sending the CAPTCHA to 2Captcha'); - captcha = await this.solver.coordinates({ + const payload: paramsCoordinates = { body: (await challenge.screenshot()).toString('base64'), lang: process.env.BROWSER_LOCALE - }); + }; + if (drag) { + // Say to the worker that he needs to click + payload.textinstructions = '! Instead of dragging, CLICK on the shapes as shown in the image above !'; + payload.imginstructions = (await fs.readFile(path.join(process.cwd(), 'public', 'drag-instructions.jpg'))).toString('base64'); + } + captcha = await this.solver.coordinates(payload); break; } catch(err: any) { logger.info(err.message); @@ -330,9 +334,25 @@ class SunoApi { throw err; } } - for (const data of captcha.data) { - logger.info(data); - await this.click(challenge, { x: +data.x, y: +data.y }); + if (drag) { + const challengeBox = await challenge.boundingBox(); + if (challengeBox == null) + throw new Error('.challenge-container boundingBox is null!'); + for (let i = 0; i < captcha.data.length; i += 2) { + const data1 = captcha.data[i]; + const data2 = captcha.data[i+1]; + logger.info(JSON.stringify(data1) + JSON.stringify(data2)); + await page.mouse.move(challengeBox.x + +data1.x, challengeBox.y + +data1.y); + await page.mouse.down(); + await sleep(1.1); // wait for the piece to be 'unlocked' + await page.mouse.move(challengeBox.x + +data2.x, challengeBox.y + +data2.y, { steps: 30 }); + await page.mouse.up(); + } + } else { + for (const data of captcha.data) { + logger.info(data); + await this.click(challenge, { x: +data.x, y: +data.y }); + }; } /*await*/ this.click(frame.locator('.button-submit')); // await is commented because we need to call waitForResponse at the same time } catch(e: any) { @@ -345,8 +365,8 @@ class SunoApi { } } }).catch(e => { - //if (!e.message.includes('been closed')) - throw e; + browser.browser()?.close(); + throw e; }); return (new Promise((resolve, reject) => { page.route('**/api/generate/v2/**', async (route: any) => { From 52ad4dea000d88caeac205fb12ab0ce8c9f23244 Mon Sep 17 00:00:00 2001 From: gohoski Date: Wed, 8 Jan 2025 03:10:49 +0300 Subject: [PATCH 4/7] properly catch hCaptcha window closing after timeout. please note that you can't increase the timeout in any way, even by clicking,so the only option we have is to just reinstate the solving process --- package-lock.json | 1 - src/lib/SunoApi.ts | 25 ++++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index c15f1c8..4cfc7d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,6 @@ "next-swagger-doc": "^0.4.0", "pino": "^8.19.0", "pino-pretty": "^11.0.0", - "playwright-core": "^1.49.1", "react": "^18", "react-dom": "^18", "react-markdown": "^9.0.1", diff --git a/src/lib/SunoApi.ts b/src/lib/SunoApi.ts index a6fb8de..959fff4 100644 --- a/src/lib/SunoApi.ts +++ b/src/lib/SunoApi.ts @@ -300,8 +300,8 @@ class SunoApi { new Promise(async (resolve, reject) => { const frame = page.frameLocator('iframe[title*="hCaptcha"]'); const challenge = frame.locator('.challenge-container'); - while (true) { - try { + try { + while (true) { await page.waitForResponse('https://img**.hcaptcha.com/**', { timeout: 60000 }); // wait for hCaptcha image to load while (true) { // wait for all requests to finish try { @@ -354,15 +354,18 @@ class SunoApi { await this.click(challenge, { x: +data.x, y: +data.y }); }; } - /*await*/ this.click(frame.locator('.button-submit')); // await is commented because we need to call waitForResponse at the same time - } catch(e: any) { - if (e.message.includes('viewport') || e.message.includes('timeout')) // when hCaptcha window has been closed due to inactivity, - this.click(button); // click the Create button again to trigger the CAPTCHA - else if (e.message.includes('been closed')) // catch error when closing the browser - resolve(); - else - reject(e); + this.click(frame.locator('.button-submit')).catch(e => { + if (e.message.includes('viewport')) // when hCaptcha window has been closed due to inactivity, + this.click(button); // click the Create button again to trigger the CAPTCHA + else + throw e; + }); } + } catch(e: any) { + if (e.message.includes('been closed')) // catch error when closing the browser + resolve(); + else + reject(e); } }).catch(e => { browser.browser()?.close(); @@ -409,7 +412,7 @@ class SunoApi { ): Promise { await this.keepAlive(false); const startTime = Date.now(); - const audios = this.generateSongs( + const audios = await this.generateSongs( prompt, false, undefined, From 881c6c773cb3246bca87594e73610e0a70b4356f Mon Sep 17 00:00:00 2001 From: gohoski Date: Sat, 11 Jan 2025 01:48:17 +0300 Subject: [PATCH 5/7] changed wait for hCaptcha image logic & other stuff - fixed bug in dragging type of hCaptcha when worker did not select an even amount of coordinates and it would crash - change waitForResponse function to a waitForRequests util function with more proper checks --- .env.example | 2 +- src/lib/SunoApi.ts | 45 +++++++++++++++----------- src/lib/utils.ts | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 20 deletions(-) diff --git a/.env.example b/.env.example index 4496d1f..be90ebb 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ # For more information, please see the README.md SUNO_COOKIE= TWOCAPTCHA_KEY= # Obtain from 2captcha.com -BROWSER=chromium # chromium or firefox +BROWSER=chromium # chromium or firefox, although chromium is highly recommended BROWSER_GHOST_CURSOR=false BROWSER_LOCALE=en BROWSER_HEADLESS=true \ No newline at end of file diff --git a/src/lib/SunoApi.ts b/src/lib/SunoApi.ts index 959fff4..2c3c77d 100644 --- a/src/lib/SunoApi.ts +++ b/src/lib/SunoApi.ts @@ -2,13 +2,13 @@ import axios, { AxiosInstance } from 'axios'; import UserAgent from 'user-agents'; import pino from 'pino'; import yn from 'yn'; -import { sleep, isPage } from '@/lib/utils'; +import { isPage, sleep, waitForRequests } from '@/lib/utils'; import * as cookie from 'cookie'; import { randomUUID } from 'node:crypto'; import { Solver } from '@2captcha/captcha-solver'; +import { paramsCoordinates } from '@2captcha/captcha-solver/dist/structs/2captcha'; import { BrowserContext, Page, Locator, chromium, firefox } from 'rebrowser-playwright-core'; import { createCursor, Cursor } from 'ghost-cursor-playwright'; -import { paramsCoordinates } from '@2captcha/captcha-solver/dist/structs/2captcha'; import { promises as fs } from 'fs'; import path from 'node:path'; @@ -180,7 +180,6 @@ class SunoApi { ctype: 'generation' }); logger.info(resp.data); - // await sleep(10); return resp.data.required; } @@ -281,47 +280,46 @@ class SunoApi { await page.goto('https://suno.com/create', { referer: 'https://www.google.com/', waitUntil: 'domcontentloaded', timeout: 0 }); logger.info('Waiting for Suno interface to load'); - //await page.locator('.react-aria-GridList').waitFor({ timeout: 60000 }); + // await page.locator('.react-aria-GridList').waitFor({ timeout: 60000 }); await page.waitForResponse('**/api/feed/v2**', { timeout: 60000 }); // wait for song list API call if (this.ghostCursorEnabled) this.cursor = await createCursor(page); logger.info('Triggering the CAPTCHA'); - await this.click(page, { x: 318, y: 13 }); // close all popups + try { + await page.getByLabel('Close').click({ timeout: 2000 }); // close all popups + // await this.click(page, { x: 318, y: 13 }); + } catch(e) {} const textarea = page.locator('.custom-textarea'); await this.click(textarea); await textarea.pressSequentially('Lorem ipsum', { delay: 80 }); const button = page.locator('button[aria-label="Create"]').locator('div.flex'); - await this.click(button); + this.click(button); + const controller = new AbortController(); new Promise(async (resolve, reject) => { const frame = page.frameLocator('iframe[title*="hCaptcha"]'); const challenge = frame.locator('.challenge-container'); try { + let wait = true; while (true) { - await page.waitForResponse('https://img**.hcaptcha.com/**', { timeout: 60000 }); // wait for hCaptcha image to load - while (true) { // wait for all requests to finish - try { - await page.waitForResponse('https://img**.hcaptcha.com/**', { timeout: 1000 }); - } catch(e) { - break - } - } + if (wait) + await waitForRequests(page, controller.signal); const drag = (await challenge.locator('.prompt-text').first().innerText()).toLowerCase().includes('drag'); let captcha: any; - for (let j = 0; j < 3; j++) { // try several times because sometimes 2Captcha could send an error + for (let j = 0; j < 3; j++) { // try several times because sometimes 2Captcha could return an error try { logger.info('Sending the CAPTCHA to 2Captcha'); const payload: paramsCoordinates = { - body: (await challenge.screenshot()).toString('base64'), + body: (await challenge.screenshot({ timeout: 5000 })).toString('base64'), lang: process.env.BROWSER_LOCALE }; if (drag) { // Say to the worker that he needs to click - payload.textinstructions = '! Instead of dragging, CLICK on the shapes as shown in the image above !'; + payload.textinstructions = 'CLICK on the shapes at their edge or center as shown above—please be precise!'; payload.imginstructions = (await fs.readFile(path.join(process.cwd(), 'public', 'drag-instructions.jpg'))).toString('base64'); } captcha = await this.solver.coordinates(payload); @@ -333,11 +331,17 @@ class SunoApi { else throw err; } - } + } if (drag) { const challengeBox = await challenge.boundingBox(); if (challengeBox == null) throw new Error('.challenge-container boundingBox is null!'); + if (captcha.data.length % 2) { + logger.info('Solution does not have even amount of points required for dragging. Requesting new solution...'); + this.solver.badReport(captcha.id); + wait = false; + continue; + } for (let i = 0; i < captcha.data.length; i += 2) { const data1 = captcha.data[i]; const data2 = captcha.data[i+1]; @@ -348,6 +352,7 @@ class SunoApi { await page.mouse.move(challengeBox.x + +data2.x, challengeBox.y + +data2.y, { steps: 30 }); await page.mouse.up(); } + wait = true; } else { for (const data of captcha.data) { logger.info(data); @@ -362,7 +367,8 @@ class SunoApi { }); } } catch(e: any) { - if (e.message.includes('been closed')) // catch error when closing the browser + if (e.message.includes('been closed') // catch error when closing the browser + || e.message == 'AbortError') // catch error when waitForRequests is aborted resolve(); else reject(e); @@ -377,6 +383,7 @@ class SunoApi { logger.info('hCaptcha token received. Closing browser'); route.abort(); browser.browser()?.close(); + controller.abort(); const request = route.request(); this.currentToken = request.headers().authorization.split('Bearer ').pop(); resolve(request.postDataJSON().token); diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 10c1626..0fb70a1 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -29,6 +29,87 @@ export const isPage = (target: any): target is Page => { return target.constructor.name === 'Page'; } +/** + * Waits for an hCaptcha image requests and then waits for all of them to end + * @param page + * @param signal `const controller = new AbortController(); controller.status` + * @returns {Promise} + */ +export const waitForRequests = (page: Page, signal: AbortSignal): Promise => { + return new Promise((resolve, reject) => { + const urlPattern = /^https:\/\/img[a-zA-Z0-9]*\.hcaptcha\.com\/.*$/; + let timeoutHandle: NodeJS.Timeout | null = null; + let activeRequestCount = 0; + let requestOccurred = false; + + const cleanupListeners = () => { + page.off('request', onRequest); + page.off('requestfinished', onRequestFinished); + page.off('requestfailed', onRequestFinished); + }; + + const resetTimeout = () => { + if (timeoutHandle) + clearTimeout(timeoutHandle); + if (activeRequestCount === 0) { + timeoutHandle = setTimeout(() => { + cleanupListeners(); + resolve(); + }, 1000); // 1 second of no requests + } + }; + + const onRequest = (request: { url: () => string }) => { + if (urlPattern.test(request.url())) { + requestOccurred = true; + activeRequestCount++; + if (timeoutHandle) + clearTimeout(timeoutHandle); + } + }; + + const onRequestFinished = (request: { url: () => string }) => { + if (urlPattern.test(request.url())) { + activeRequestCount--; + resetTimeout(); + } + }; + + // Wait for an hCaptcha request for up to 1 minute + const initialTimeout = setTimeout(() => { + if (!requestOccurred) { + page.off('request', onRequest); + cleanupListeners(); + reject(new Error('No hCaptcha request occurred within 1 minute.')); + } else { + // Start waiting for no hCaptcha requests + resetTimeout(); + } + }, 60000); // 1 minute timeout + + page.on('request', onRequest); + page.on('requestfinished', onRequestFinished); + page.on('requestfailed', onRequestFinished); + + // Cleanup the initial timeout if an hCaptcha request occurs + page.on('request', (request: { url: () => string }) => { + if (urlPattern.test(request.url())) { + clearTimeout(initialTimeout); + } + }); + + const onAbort = () => { + cleanupListeners(); + clearTimeout(initialTimeout); + if (timeoutHandle) + clearTimeout(timeoutHandle); + signal.removeEventListener('abort', onAbort); + reject(new Error('AbortError')); + }; + + signal.addEventListener('abort', onAbort, { once: true }); + }); +} export const corsHeaders = { 'Access-Control-Allow-Origin': '*', From 72bdbe083ee8955a4ded2b11edb8e8e716f401c9 Mon Sep 17 00:00:00 2001 From: gohoski Date: Wed, 15 Jan 2025 23:17:00 +0300 Subject: [PATCH 6/7] change song API url in interface wait trigger --- src/lib/SunoApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/SunoApi.ts b/src/lib/SunoApi.ts index 2c3c77d..51a4e6f 100644 --- a/src/lib/SunoApi.ts +++ b/src/lib/SunoApi.ts @@ -281,7 +281,7 @@ class SunoApi { logger.info('Waiting for Suno interface to load'); // await page.locator('.react-aria-GridList').waitFor({ timeout: 60000 }); - await page.waitForResponse('**/api/feed/v2**', { timeout: 60000 }); // wait for song list API call + await page.waitForResponse('**/api/project/**\\?**', { timeout: 60000 }); // wait for song list API call if (this.ghostCursorEnabled) this.cursor = await createCursor(page); From 48a39a77f415c26bd0f2a4c20d6f03ce923f59ac Mon Sep 17 00:00:00 2001 From: gohoski Date: Tue, 21 Jan 2025 23:15:53 +0300 Subject: [PATCH 7/7] implement cookie check, use browser NPM package for auto install instead of a manual command, fix Docker & add notice about macOS recommendation --- .env.example | 2 +- Dockerfile | 53 ++++++++++++++++++++++++++-------------------- README.md | 10 +++++++-- README_RU.md | 9 ++++++-- docker-compose.yml | 1 + package-lock.json | 14 ++++++++++++ package.json | 1 + src/lib/SunoApi.ts | 28 ++++++++++++++---------- 8 files changed, 79 insertions(+), 39 deletions(-) diff --git a/.env.example b/.env.example index be90ebb..90748ce 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ # For more information, please see the README.md SUNO_COOKIE= TWOCAPTCHA_KEY= # Obtain from 2captcha.com -BROWSER=chromium # chromium or firefox, although chromium is highly recommended +BROWSER=chromium # `chromium` or `firefox`, although `chromium` is highly recommended BROWSER_GHOST_CURSOR=false BROWSER_LOCALE=en BROWSER_HEADLESS=true \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5d9fd2e..9c418f6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,32 @@ -# syntax=docker/dockerfile:1 - -FROM node:lts-alpine AS builder -WORKDIR /src -COPY package*.json ./ -RUN npm install -COPY . . -RUN npm run build - -FROM node:lts-alpine -WORKDIR /app -COPY package*.json ./ - -ARG SUNO_COOKIE -ARG BROWSER -RUN if [ -z "$SUNO_COOKIE" ]; then echo "Warning: SUNO_COOKIE is not set"; fi +# syntax=docker/dockerfile:1 + +FROM node:lts-bookworm AS builder +WORKDIR /src +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +FROM node:lts-bookworm +WORKDIR /app +COPY package*.json ./ + +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libnss3 \ + libdbus-1-3 libatk1.0-0 libatk-bridge2.0-0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 \ + libgbm1 libxkbcommon0 libasound2 libcups2 xvfb + +ARG SUNO_COOKIE +RUN if [ -z "$SUNO_COOKIE" ]; then echo "Warning: SUNO_COOKIE is not set. You will have to set the cookies in the Cookie header of your requests."; fi ENV SUNO_COOKIE=${SUNO_COOKIE} -RUN if [ -z "$BROWSER" ]; then echo "Warning: BROWSER is not set; will use chromium by default"; fi -ENV BROWSER=${BROWSER:-chromium} +# Disable GPU acceleration, as with it suno-api won't work in a Docker environment +ENV BROWSER_DISABLE_GPU=true -RUN npm install --only=production -RUN npx playwright install $BROWSER -COPY --from=builder /src/.next ./.next -EXPOSE 3000 -CMD ["npm", "run", "start"] +RUN npm install --only=production + +# Install all supported browsers, else switching browsers requires an image rebuild +RUN npx playwright install chromium +# RUN npx playwright install firefox + +COPY --from=builder /src/.next ./.next +EXPOSE 3000 +CMD ["npm", "run", "start"] \ No newline at end of file diff --git a/README.md b/README.md index 37bebc1..d93d4d0 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,11 @@ We have deployed an example bound to a free Suno account, so it has daily usage [Create](https://2captcha.com/auth/register?userType=customer) a new 2Captcha account, [top up](https://2captcha.com/pay) your balance and [get your API key](https://2captcha.com/enterpage#recognition). -If you are located in Russia or Belarus, use the [ruCaptcha](https://rucaptcha.com) interface instead of 2Captcha. It's the same service, but it supports payments from those countries. +> [!NOTE] +> If you are located in Russia or Belarus, use the [ruCaptcha](https://rucaptcha.com) interface instead of 2Captcha. It's the same service, but it supports payments from those countries. + +> [!TIP] +> If you want as few CAPTCHAs as possible, it is recommended to use a macOS system. macOS systems usually get fewer CAPTCHAs than Linux and Windows—this is due to its unpopularity in the web scraping industry. Running suno-api on Windows and Linux will work, but in some cases, you could get a pretty large number of CAPTCHAs. ### 3. Clone and deploy this project @@ -80,9 +84,11 @@ You can choose your preferred deployment method: git clone https://github.com/gcui-art/suno-api.git cd suno-api npm install -npx playwright install chromium ``` #### Docker +>[!IMPORTANT] +> GPU acceleration will be disabled in Docker. If you have a slow CPU, it is recommended to [deploy locally](#run-locally). + Alternatively, you can use [Docker Compose](https://docs.docker.com/compose/). However, follow the step below before running. ```bash diff --git a/README_RU.md b/README_RU.md index 859db8e..4a5d6f2 100644 --- a/README_RU.md +++ b/README_RU.md @@ -64,7 +64,11 @@ Suno — потрясающий сервис для ИИ-музыки. Несм [Создайте](https://2captcha.com/ru/auth/register?userType=customer) новый аккаунт, [пополните](https://2captcha.com/ru/pay) баланс и [получите свой API-ключ](https://2captcha.com/ru/enterpage#recognition). -ℹ Если вы находитесь в России или Беларуси, используйте интерфейс [ruCaptcha](https://rucaptcha.com) вместо 2Captcha. Это абсолютно тот же сервис, но данный интерфейс поддерживает платежи из этих стран. +> [!NOTE] +> Если вы находитесь в России или Беларуси, используйте интерфейс [ruCaptcha](https://rucaptcha.com) вместо 2Captcha. Это абсолютно тот же сервис, но данный интерфейс поддерживает платежи из этих стран. + +> [!TIP] +> Если вы хотите получать как можно меньше капч, рекомендуется использовать macOS. Системы на macOS обычно получают меньше капч, чем Linux и Windows — это связано с их непопулярностью в сфере веб-скрейпинга. Запуск suno-api на Windows и Linux будет работать, но в некоторых случаях вы можете получить довольно большое количество капч. ### 3. Скачайте и запустите проект @@ -80,9 +84,10 @@ Suno — потрясающий сервис для ИИ-музыки. Несм git clone https://github.com/gcui-art/suno-api.git cd suno-api npm install -npx playwright install chromium ``` #### Docker +>[!IMPORTANT] +> Аппаратное видеоускорение браузера будет отключено в Docker. Если у вас медленный процессор, рекомендуется [развернуть локально](#локально). Также можно использовать [Docker Compose](https://docs.docker.com/compose/), однако перед запуском выполните шаг ниже. ```bash diff --git a/docker-compose.yml b/docker-compose.yml index dfeb46f..df54c95 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,3 +10,4 @@ services: - ./public:/app/public ports: - "3000:3000" + env_file: ".env" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4cfc7d2..bd0ec7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "LGPL-3.0-or-later", "dependencies": { "@2captcha/captcha-solver": "^1.3.0", + "@playwright/browser-chromium": "^1.49.1", "@vercel/analytics": "^1.2.2", "axios": "^1.7.8", "bufferutil": "^4.0.8", @@ -602,6 +603,19 @@ "node": ">=14" } }, + "node_modules/@playwright/browser-chromium": { + "version": "1.49.1", + "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.49.1.tgz", + "integrity": "sha512-LLeyllKSucbojsJBOpdJshwW27ZXZs3oypqffkVWLUvxX2azHJMOevsOcWpjCfoYbpevkaEozM2xHeSUGF00lg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.49.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", diff --git a/package.json b/package.json index deeb8ec..efd925e 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "@2captcha/captcha-solver": "^1.3.0", + "@playwright/browser-chromium": "^1.49.1", "@vercel/analytics": "^1.2.2", "axios": "^1.7.8", "bufferutil": "^4.0.8", diff --git a/src/lib/SunoApi.ts b/src/lib/SunoApi.ts index 51a4e6f..75e6bd7 100644 --- a/src/lib/SunoApi.ts +++ b/src/lib/SunoApi.ts @@ -230,17 +230,23 @@ class SunoApi { * @returns {BrowserContext} */ private async launchBrowser(): Promise { + const args = [ + '--disable-blink-features=AutomationControlled', + '--disable-web-security', + '--no-sandbox', + '--disable-dev-shm-usage', + '--disable-features=site-per-process', + '--disable-features=IsolateOrigins', + '--disable-extensions', + '--disable-infobars' + ]; + // Check for GPU acceleration, as it is recommended to turn it off for Docker + if (yn(process.env.BROWSER_DISABLE_GPU, { default: false })) + args.push('--enable-unsafe-swiftshader', + '--disable-gpu', + '--disable-setuid-sandbox'); const browser = await this.getBrowserType().launch({ - args: [ - '--disable-blink-features=AutomationControlled', - '--disable-web-security', - '--no-sandbox', - '--disable-dev-shm-usage', - '--disable-features=site-per-process', - '--disable-features=IsolateOrigins', - '--disable-extensions', - '--disable-infobars' - ], + args, headless: yn(process.env.BROWSER_HEADLESS, { default: true }) }); const context = await browser.newContext({ userAgent: this.userAgent, locale: process.env.BROWSER_LOCALE, viewport: null }); @@ -798,7 +804,7 @@ class SunoApi { } export const sunoApi = async (cookie?: string) => { - const resolvedCookie = cookie || process.env.SUNO_COOKIE; + const resolvedCookie = cookie && cookie.includes('__client') ? cookie : process.env.SUNO_COOKIE; // Check for bad `Cookie` header (It's too expensive to actually parse the cookies *here*) if (!resolvedCookie) { logger.info('No cookie provided! Aborting...\nPlease provide a cookie either in the .env file or in the Cookie header of your request.') throw new Error('Please provide a cookie either in the .env file or in the Cookie header of your request.');